{"openapi":"3.0.3","info":{"title":"Game Aggregator Gateway API","version":"1.0.0"},"components":{"securitySchemes":{"apiKey":{"type":"apiKey","in":"header","name":"x-api-key"},"bearerAuth":{"type":"http","scheme":"bearer"},"cookieAuth":{"type":"apiKey","in":"cookie","name":"__Host-aggregator_session","description":"Secure, HttpOnly, SameSite=Strict control-session cookie. Authenticated mutations also require the x-csrf-token header and signed CSRF cookie."}},"schemas":{}},"paths":{"/metrics":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/health/live":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/live":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/health":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/health/ready":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/ready":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/v1/commands":{"post":{"summary":"Execute an allowlisted provider command","tags":["Proxy"],"description":"Idempotency-Key is required for createPlayer, getGame, and free-round mutations; it is rejected for read-only and demo methods.","requestBody":{"content":{"application/json":{"schema":{"discriminator":{"propertyName":"method"},"oneOf":[{"type":"object","additionalProperties":false,"required":["method","user_username","currency"],"properties":{"method":{"type":"string","enum":["createPlayer"]},"user_username":{"type":"string","minLength":1,"maxLength":128},"currency":{"type":"string","pattern":"^[A-Z]{3}$"}},"description":"Requires an Idempotency-Key header."},{"type":"object","additionalProperties":false,"required":["method","currency"],"properties":{"method":{"type":"string","enum":["getGameList"]},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"show_additional":{"type":"boolean","description":"Defaults to true."},"show_systems":{"type":"integer","enum":[0,1],"description":"Defaults to 0."},"list_type":{"type":"integer","enum":[1,2],"description":"Defaults to 1."}},"description":"The Idempotency-Key header is rejected for this method."},{"type":"object","additionalProperties":false,"required":["method","user_username","currency","lang","gameid","homeurl","cashierurl"],"properties":{"method":{"type":"string","enum":["getGame"]},"user_username":{"type":"string","minLength":1,"maxLength":128},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"lang":{"type":"string","minLength":2,"maxLength":12},"gameid":{"type":"string","minLength":1,"maxLength":255},"homeurl":{"type":"string","format":"uri","pattern":"^https://"},"cashierurl":{"type":"string","format":"uri","pattern":"^https://"},"play_for_fun":{"type":"integer","enum":[0,1],"description":"Defaults to 0."}},"description":"Requires an Idempotency-Key header."},{"type":"object","additionalProperties":false,"required":["method","currency","lang","gameid","homeurl","cashierurl"],"properties":{"method":{"type":"string","enum":["getGameDemo"]},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"lang":{"type":"string","minLength":2,"maxLength":12},"gameid":{"type":"string","minLength":1,"maxLength":255},"homeurl":{"type":"string","format":"uri","pattern":"^https://"},"cashierurl":{"type":"string","format":"uri","pattern":"^https://"}},"description":"The Idempotency-Key header is rejected for this method."},{"type":"object","additionalProperties":false,"required":["method","user_username","currency","gameid","freespins","bet_level","valid_days"],"properties":{"method":{"type":"string","enum":["addFreeRounds"]},"user_username":{"type":"string","minLength":1,"maxLength":128},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"gameid":{"type":"string","minLength":1,"maxLength":255},"freespins":{"type":"integer","minimum":1,"maximum":10000},"bet_level":{"type":"integer","minimum":0,"maximum":6},"valid_days":{"type":"integer","minimum":1,"maximum":365}},"description":"Requires an Idempotency-Key header."},{"type":"object","additionalProperties":false,"required":["method","user_username","currency"],"properties":{"method":{"type":"string","enum":["getFreeRounds"]},"user_username":{"type":"string","minLength":1,"maxLength":128},"currency":{"type":"string","pattern":"^[A-Z]{3}$"}},"description":"The Idempotency-Key header is rejected for this method."},{"type":"object","additionalProperties":false,"required":["method","user_username","currency","gameid"],"properties":{"method":{"type":"string","enum":["deleteFreeRounds"]},"user_username":{"type":"string","minLength":1,"maxLength":128},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"gameid":{"type":"string","minLength":1,"maxLength":255}},"description":"Requires an Idempotency-Key header."},{"type":"object","additionalProperties":false,"required":["method","user_username","currency"],"properties":{"method":{"type":"string","enum":["deleteAllFreeRounds"]},"user_username":{"type":"string","minLength":1,"maxLength":128},"currency":{"type":"string","pattern":"^[A-Z]{3}$"}},"description":"Requires an Idempotency-Key header."}]}}}},"parameters":[{"schema":{"type":"string","minLength":8,"maxLength":255},"in":"header","name":"idempotency-key","required":false,"description":"Required for createPlayer, getGame, addFreeRounds, deleteFreeRounds, and deleteAllFreeRounds. Reuse the same key only for an identical request; an unknown prior outcome remains blocked for reconciliation. Rejected for getGameDemo, getGameList, and getFreeRounds."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"responses":{"200":{"description":"Validated and projected provider result. Provider application errors also use HTTP 200.","content":{"application/json":{"schema":{"description":"Validated and projected provider result. Provider application errors also use HTTP 200.","oneOf":[{"title":"createPlayer success","type":"object","additionalProperties":false,"required":["error","response"],"properties":{"error":{"type":"integer","enum":[0]},"response":{"type":"object","additionalProperties":false,"required":["balance","created"],"properties":{"balance":{"type":"string","pattern":"^-?\\d+(?:\\.\\d+)?$"},"created":{"type":"string","minLength":1,"maxLength":64},"currencycode":{"type":"string","pattern":"^[A-Z]{3}$"}}}}},{"title":"getGame or getGameDemo success","type":"object","additionalProperties":false,"required":["error","response","session_id"],"properties":{"error":{"type":"integer","enum":[0]},"response":{"type":"string","format":"uri","pattern":"^https://","maxLength":2048},"session_id":{"type":"string","minLength":1,"maxLength":256}}},{"title":"getGameList success","type":"object","additionalProperties":false,"required":["error","response"],"properties":{"error":{"type":"integer","enum":[0]},"response":{"oneOf":[{"type":"array","items":{"oneOf":[{"type":"object","additionalProperties":false,"required":["id","name","type","category","subcategory","details","new","mobile","id_hash","id_hash_parent","freerounds_supported","featurebuy_supported","has_jackpot","play_for_fun_supported","image","image_square","image_portrait","image_long","currency"],"properties":{"id":{"type":"integer","minimum":0},"name":{"type":"string","minLength":1,"maxLength":512},"type":{"type":"string","minLength":1,"maxLength":128},"category":{"type":"string","minLength":1,"maxLength":128},"subcategory":{"type":"string","maxLength":128},"details":{"anyOf":[{"type":"array","nullable":true,"maxItems":200,"items":{}},{"type":"object","nullable":true,"additionalProperties":true}]},"new":{"type":"boolean"},"mobile":{"type":"boolean"},"id_hash":{"type":"string","minLength":1,"maxLength":255},"id_hash_parent":{"type":"string","minLength":1,"maxLength":255},"freerounds_supported":{"type":"boolean"},"featurebuy_supported":{"type":"boolean"},"has_jackpot":{"type":"boolean"},"play_for_fun_supported":{"type":"boolean"},"image":{"type":"string","format":"uri","pattern":"^https?://","maxLength":2048},"image_square":{"type":"string","format":"uri","pattern":"^https?://","maxLength":2048,"nullable":true},"image_portrait":{"type":"string","format":"uri","pattern":"^https?://","maxLength":2048,"nullable":true},"image_long":{"type":"string","format":"uri","pattern":"^https?://","maxLength":2048},"currency":{"type":"string","pattern":"^[A-Z]{3}$"}}},{"type":"object","additionalProperties":false,"required":["n","p","s","fs","fb","d","id"],"properties":{"n":{"type":"string","minLength":1,"maxLength":512},"p":{"type":"string","minLength":1,"maxLength":128},"s":{"type":"string","minLength":1,"maxLength":255},"fs":{"type":"boolean"},"fb":{"type":"boolean"},"d":{"type":"boolean"},"id":{"type":"integer","minimum":0}}}]}},{"type":"object","additionalProperties":{"oneOf":[{"type":"object","additionalProperties":false,"required":["id","name","type","category","subcategory","details","new","mobile","id_hash","id_hash_parent","freerounds_supported","featurebuy_supported","has_jackpot","play_for_fun_supported","image","image_square","image_portrait","image_long","currency"],"properties":{"id":{"type":"integer","minimum":0},"name":{"type":"string","minLength":1,"maxLength":512},"type":{"type":"string","minLength":1,"maxLength":128},"category":{"type":"string","minLength":1,"maxLength":128},"subcategory":{"type":"string","maxLength":128},"details":{"anyOf":[{"type":"array","nullable":true,"maxItems":200,"items":{}},{"type":"object","nullable":true,"additionalProperties":true}]},"new":{"type":"boolean"},"mobile":{"type":"boolean"},"id_hash":{"type":"string","minLength":1,"maxLength":255},"id_hash_parent":{"type":"string","minLength":1,"maxLength":255},"freerounds_supported":{"type":"boolean"},"featurebuy_supported":{"type":"boolean"},"has_jackpot":{"type":"boolean"},"play_for_fun_supported":{"type":"boolean"},"image":{"type":"string","format":"uri","pattern":"^https?://","maxLength":2048},"image_square":{"type":"string","format":"uri","pattern":"^https?://","maxLength":2048,"nullable":true},"image_portrait":{"type":"string","format":"uri","pattern":"^https?://","maxLength":2048,"nullable":true},"image_long":{"type":"string","format":"uri","pattern":"^https?://","maxLength":2048},"currency":{"type":"string","pattern":"^[A-Z]{3}$"}}},{"type":"object","additionalProperties":false,"required":["n","p","s","fs","fb","d","id"],"properties":{"n":{"type":"string","minLength":1,"maxLength":512},"p":{"type":"string","minLength":1,"maxLength":128},"s":{"type":"string","minLength":1,"maxLength":255},"fs":{"type":"boolean"},"fb":{"type":"boolean"},"d":{"type":"boolean"},"id":{"type":"integer","minimum":0}}}]}}]}}},{"title":"addFreeRounds success","type":"object","additionalProperties":false,"required":["error","response"],"properties":{"error":{"type":"integer","enum":[0]},"response":{"type":"object","additionalProperties":false,"required":["game_id","freespins","freespins_wallet","freespins_performed","bet_level","currency","valid_until","created_at","active"],"properties":{"game_id":{"type":"string","minLength":1,"maxLength":255},"freespins":{"type":"integer","minimum":0},"freespins_wallet":{"type":"number","minimum":0},"freespins_performed":{"type":"integer","minimum":0},"freespins_bet":{"type":"number","minimum":0},"bet_level":{"type":"integer","minimum":0,"maximum":6},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"valid_until":{"type":"string","minLength":1,"maxLength":64},"created_at":{"type":"string","minLength":1,"maxLength":64},"updated_at":{"type":"string","minLength":1,"maxLength":64},"active":{"type":"boolean"}}}}},{"title":"getFreeRounds success","type":"object","additionalProperties":false,"required":["error","response"],"properties":{"error":{"type":"integer","enum":[0]},"response":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["game_id","freespins","freespins_wallet","freespins_performed","bet_level","currency","valid_until","created_at","active"],"properties":{"game_id":{"type":"string","minLength":1,"maxLength":255},"freespins":{"type":"integer","minimum":0},"freespins_wallet":{"type":"number","minimum":0},"freespins_performed":{"type":"integer","minimum":0},"freespins_bet":{"type":"number","minimum":0},"bet_level":{"type":"integer","minimum":0,"maximum":6},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"valid_until":{"type":"string","minLength":1,"maxLength":64},"created_at":{"type":"string","minLength":1,"maxLength":64},"updated_at":{"type":"string","minLength":1,"maxLength":64},"active":{"type":"boolean"}}}}}},{"title":"deleteFreeRounds or deleteAllFreeRounds success","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"integer","enum":[0]}}},{"title":"Provider application error","type":"object","additionalProperties":false,"required":["error","message"],"properties":{"error":{"type":"integer","minimum":1},"message":{"type":"string","enum":["Upstream rejected the request"]}}}]}}}},"400":{"description":"Invalid request or idempotency policy violation.","content":{"application/json":{"schema":{"description":"Invalid request or idempotency policy violation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string"},"details":{}}}}}}}},"401":{"description":"Invalid API key.","content":{"application/json":{"schema":{"description":"Invalid API key.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string"},"details":{}}}}}}}},"403":{"description":"Scope, IP, currency, game, or return-origin denied.","content":{"application/json":{"schema":{"description":"Scope, IP, currency, game, or return-origin denied.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string"},"details":{}}}}}}}},"409":{"description":"Idempotency conflict, in-progress request, unknown prior outcome, or a completed sensitive result that cannot be replayed.","content":{"application/json":{"schema":{"description":"Idempotency conflict, in-progress request, unknown prior outcome, or a completed sensitive result that cannot be replayed.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string"},"details":{}}}}}}}},"429":{"description":"Key or organization rate/quota limit exceeded.","content":{"application/json":{"schema":{"description":"Key or organization rate/quota limit exceeded.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string"},"details":{}}}}}}}},"500":{"description":"Unexpected gateway failure.","content":{"application/json":{"schema":{"description":"Unexpected gateway failure.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string"},"details":{}}}}}}}},"502":{"description":"Provider transport/response failure, or an unknown post-dispatch outcome for createPlayer, getGame, or a free-round mutation.","content":{"application/json":{"schema":{"description":"Provider transport/response failure, or an unknown post-dispatch outcome for createPlayer, getGame, or a free-round mutation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string"},"details":{}}}}}}}},"503":{"description":"Forwarding, admission control, or sandbox unavailable.","content":{"application/json":{"schema":{"description":"Forwarding, admission control, or sandbox unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string"},"details":{}}}}}}}},"504":{"description":"A read-only or demo provider request timed out. Ambiguous mutation timeouts return 502 UPSTREAM_OUTCOME_UNKNOWN.","content":{"application/json":{"schema":{"description":"A read-only or demo provider request timed out. Ambiguous mutation timeouts return 502 UPSTREAM_OUTCOME_UNKNOWN.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string"},"details":{}}}}}}}}}}},"/v1/providers":{"get":{"operationId":"listPublicProviders","summary":"List public provider catalogue highlights","tags":["Public catalogue"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/callbacks/upstream":{"get":{"operationId":"receiveProviderCallback","summary":"Receive and relay a signed provider wallet callback","tags":["Provider callbacks"],"description":"The upstream provider calls this ingress endpoint with **GET query parameters**; it is not a customer API-key endpoint and accepts no request body. Only GET is registered: HEAD and every other method are not callback aliases and never execute wallet processing.\n\nAccepted query names form a closed allowlist and each name may occur only once. A `balance` callback requires `username`, `currency`, `action=balance`, `call_id`, `timestamp`, and `key`. A `debit` or `credit` callback additionally requires `amount`, `gameplay_final`, `type`, `round_id`, `game_id`, and `rb`. When `type=bonus_fs`, `operator_id` and the JSON-encoded `freespins` object are also required. The explicitly allowlisted legacy session/remote fields are optional pending account acceptance. Unknown, duplicate, missing, action-incompatible, or malformed percent/UTF-8 encodings fail closed.\n\nAuthentication uses the legacy `key = MD5(timestamp + callback shared secret)` construction and a constant-time comparison. `timestamp` must be canonical 10-digit Unix seconds, no more than 30 seconds old and no more than 5 seconds in the future. This legacy MD5 authenticates only the timestamp and **does not bind the callback payload**; strict parsing is a compensating control, not a fix for that upstream limitation.\n\nThe immediate source address must match the configured authoritative provider callback CIDRs. Forwarded client-address metadata is honored only from the separately configured trusted reverse-proxy CIDRs. TLS and edge allowlisting remain deployment requirements.\n\nOnce this application route is reached, every success, wallet rejection, authentication failure, source-policy denial, malformed request, admission failure, mapping failure, or processing failure is returned as HTTP 200 JSON. Failures that cannot be handled safely use `{ \"error\": 2, \"balance\": 0 }`; HTTP 4xx/5xx is not used for the provider callback protocol. A deployment credential release hold rejects every GET callback with that processing-error envelope before query parsing, admission, or tenant storage.","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":128},"in":"query","name":"username","required":true,"description":"Opaque upstream player username. The gateway resolves this value to one tenant and substitutes the tenant-facing player identifier before relay."},{"schema":{"type":"string","pattern":"^[A-Z]{3}$"},"in":"query","name":"currency","required":true,"description":"Three-letter uppercase currency used together with username for player lookup."},{"schema":{"type":"string","enum":["balance","debit","credit"]},"in":"query","name":"action","required":true,"description":"Callback variant discriminator."},{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"query","name":"call_id","required":true,"description":"Non-blank unique callback reference used for durable idempotency and conflict detection."},{"schema":{"type":"string","minLength":10,"maxLength":10,"pattern":"^\\d{10}$"},"in":"query","name":"timestamp","required":true,"description":"Canonical Unix epoch seconds. Accepted from 30 seconds in the past through 5 seconds in the future."},{"schema":{"type":"string","minLength":32,"maxLength":32,"pattern":"^[A-Fa-f0-9]{32}$"},"in":"query","name":"key","required":true,"description":"Required legacy signature: hexadecimal MD5(timestamp + account callback shared secret). It authenticates no other query field."},{"schema":{"type":"string","minLength":1,"maxLength":19,"pattern":"^(?:0|[1-9]\\d{0,18})$"},"in":"query","name":"amount","required":false,"description":"Required for debit and credit. Non-negative integer minor units, bounded by PostgreSQL bigint (9223372036854775807)."},{"schema":{"type":"string","enum":["0","1"]},"in":"query","name":"gameplay_final","required":false,"description":"Required for debit and credit. Upstream gameplay-final flag."},{"schema":{"type":"string","enum":["spin","bonus_fs"]},"in":"query","name":"type","required":false,"description":"Required for debit and credit. bonus_fs additionally requires operator_id and freespins."},{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"query","name":"round_id","required":false,"description":"Required for debit and credit; opaque round ID."},{"schema":{"type":"string","minLength":1,"maxLength":255},"in":"query","name":"game_id","required":false,"description":"Required for debit and credit; opaque upstream game ID."},{"schema":{"type":"string","enum":["0","1"]},"in":"query","name":"rb","required":false,"description":"Required for debit and credit. 1 denotes a rollback."},{"schema":{"type":"string","maxLength":16,"pattern":"^(?:0|[1-9]\\d*)$"},"in":"query","name":"operator_id","required":false,"description":"Required when type=bonus_fs and rejected for type=spin. Not relayed to the tenant wallet."},{"schema":{"type":"string","minLength":1,"maxLength":1024},"in":"query","name":"freespins","required":false,"description":"Required when type=bonus_fs and rejected for type=spin. One JSON-encoded object containing the unescaped id, total, and performed names exactly once, each with a canonical non-negative integer value."},{"schema":{"type":"string","minLength":1,"maxLength":256},"in":"query","name":"gamesession_id","required":false,"description":"Optional explicitly allowlisted legacy session identifier; relayed to the tenant wallet."},{"schema":{"type":"string","minLength":1,"maxLength":256},"in":"query","name":"session_id","required":false,"description":"Optional explicitly allowlisted legacy session identifier; relayed to the tenant wallet."},{"schema":{"type":"string","minLength":1,"maxLength":256},"in":"query","name":"remote_id","required":false,"description":"Optional explicitly allowlisted legacy remote identifier; relayed to the tenant wallet."},{"schema":{"type":"string","maxLength":16,"pattern":"^(?:0|[1-9]\\d*)$"},"in":"query","name":"balance_required","required":false,"description":"Optional explicitly allowlisted legacy non-negative integer flag; relayed to the tenant wallet."}],"security":[],"x-callback-query-variants":{"balance":{"required":["username","currency","action","call_id","timestamp","key"]},"transaction":{"actions":["debit","credit"],"required":["username","currency","action","call_id","timestamp","key","amount","gameplay_final","type","round_id","game_id","rb"]},"bonusFreeSpin":{"when":{"type":"bonus_fs"},"additionallyRequired":["operator_id","freespins"]}},"x-callback-source-policy":{"cidrPolicy":"authoritative provider callback CIDRs","trustedProxyPolicy":"immediate trusted reverse-proxy CIDRs only","requirement":"Immediate resolved client address must be in an authoritative allowed CIDR.","deniedResponse":{"httpStatus":200,"error":2,"balance":0}},"x-callback-authentication":{"requiredQueryParameters":["timestamp","key"],"keyConstruction":"MD5(timestamp + callback shared secret)","timestampFormat":"10-digit Unix seconds","maximumPastAgeSeconds":30,"maximumFutureSkewSeconds":5,"constantTimeComparison":true,"payloadBound":false},"responses":{"200":{"description":"The only application-level response. Error 0 is success, error 1 is insufficient debit balance, and error 2 covers authentication, source-policy, validation, admission, mapping, or processing failure. Every outcome uses HTTP 200.","content":{"application/json":{"schema":{"description":"The only application-level response. Error 0 is success, error 1 is insufficient debit balance, and error 2 covers authentication, source-policy, validation, admission, mapping, or processing failure. Every outcome uses HTTP 200.","type":"object","additionalProperties":false,"required":["error","balance"],"properties":{"error":{"type":"integer","enum":[0,1,2],"description":"Provider callback result: 0 success, 1 insufficient debit balance, 2 processing or authentication failure."},"balance":{"type":"integer","format":"int64","minimum":0,"description":"Non-negative minor-unit balance emitted as an unquoted JSON integer token."}}}}}}}}},"/callbacks/binance-pay":{"post":{"summary":"Receive a signed Binance Pay order notification","tags":["Binance Pay"],"description":"Verifies the exact raw body with the pinned RSA key selected by certificate serial, then durably deduplicates and binds the provider outcome. Browser redirects never use this endpoint and cannot confirm payment.","security":[],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"returnCode":{"type":"string","enum":["SUCCESS","FAIL"]},"returnMessage":{"type":"string","nullable":true}},"required":["returnCode","returnMessage"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"returnCode":{"type":"string","enum":["SUCCESS","FAIL"]},"returnMessage":{"type":"string","nullable":true}},"required":["returnCode","returnMessage"]}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"returnCode":{"type":"string","enum":["SUCCESS","FAIL"]},"returnMessage":{"type":"string","nullable":true}},"required":["returnCode","returnMessage"]}}}},"503":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"returnCode":{"type":"string","enum":["SUCCESS","FAIL"]},"returnMessage":{"type":"string","nullable":true}},"required":["returnCode","returnMessage"]}}}}}}},"/control/v1/auth/register":{"post":{"operationId":"registerOperatorInterest","summary":"Create an operator account and starter workspace","tags":["Control authentication"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"organizationName":{"type":"string","minLength":2,"maxLength":160},"contactName":{"type":"string","minLength":2,"maxLength":160},"email":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"password":{"type":"string","minLength":8,"maxLength":1024},"passwordConfirmation":{"type":"string","minLength":1,"maxLength":1024},"casinoName":{"type":"string","minLength":2,"maxLength":160},"casinoUrls":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"string","minLength":1,"maxLength":2048}},"compatibility":{"type":"string","enum":["spinshield"]},"ipWhitelist":{"maxItems":6,"type":"array","items":{"type":"string","minLength":2,"maxLength":64}},"acceptedTerms":{"type":"boolean","enum":[true]}},"required":["organizationName","contactName","email","password","passwordConfirmation","casinoName","casinoUrls","compatibility","ipWhitelist","acceptedTerms"],"additionalProperties":false}}},"required":true},"parameters":[{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."}],"security":[],"responses":{"201":{"description":"Operator account created.","content":{"application/json":{"schema":{"description":"Operator account created.","type":"object","additionalProperties":false,"required":["accepted","accountCreated","referenceId","organizationId"],"properties":{"accepted":{"type":"boolean","enum":[true]},"accountCreated":{"type":"boolean","enum":[true]},"referenceId":{"type":"string","format":"uuid"},"organizationId":{"type":"string","format":"uuid"}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/auth/accept-invite":{"post":{"operationId":"acceptControlInvitation","summary":"Accept a team invitation","tags":["Control authentication"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","pattern":"^inv_[A-Za-z0-9_-]{43}$"},"password":{"type":"string","minLength":1,"maxLength":1024,"description":"Current password for an existing account; at least 8 characters when activating a new account."},"displayName":{"type":"string","minLength":2,"maxLength":160}},"required":["token","password"],"additionalProperties":false}}},"required":true},"parameters":[{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."}],"security":[],"responses":{"200":{"description":"The invitation was accepted.","content":{"application/json":{"schema":{"description":"The invitation was accepted.","type":"object","additionalProperties":false,"required":["accepted","organizationId","accountMode"],"properties":{"accepted":{"type":"boolean","enum":[true]},"organizationId":{"type":"string","format":"uuid"},"accountMode":{"type":"string","enum":["activated","existing"]}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/auth/login":{"post":{"operationId":"loginControlUser","summary":"Create a control session","tags":["Control authentication"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"password":{"type":"string","minLength":1,"maxLength":1024},"organizationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["email","password"],"additionalProperties":false}}},"required":true},"parameters":[{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."}],"security":[],"responses":{"200":{"description":"Authenticated session. Secure session and signed CSRF cookies are set.","content":{"application/json":{"schema":{"description":"Authenticated session. Secure session and signed CSRF cookies are set.","type":"object","additionalProperties":false,"required":["user","organization","role","passwordChangeRequired","csrfToken","mfa"],"properties":{"user":{"type":"object","additionalProperties":false,"required":["id","email","displayName","platformAdmin"],"properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string","format":"email"},"displayName":{"type":"string","minLength":2,"maxLength":160},"platformAdmin":{"type":"boolean"}}},"organization":{"type":"object","additionalProperties":false,"required":["id","name","slug"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":2,"maxLength":160},"slug":{"type":"string","minLength":1,"maxLength":63}}},"role":{"type":"string","enum":["owner","admin","developer","billing","viewer"]},"passwordChangeRequired":{"type":"boolean","description":"When true, only password change and logout mutations are permitted."},"csrfToken":{"type":"string","minLength":32,"maxLength":128,"readOnly":true,"description":"Send this raw token as x-csrf-token on authenticated mutations."},"mfa":{"type":"object","additionalProperties":false,"required":["required","enabled","verified","enrollmentRequired","recoveryCodesRemaining","recentAuthenticationExpiresAt"],"properties":{"required":{"type":"boolean","description":"True for platform administrators and users with any accepted active owner or admin membership."},"enabled":{"type":"boolean"},"verified":{"type":"boolean"},"enrollmentRequired":{"type":"boolean"},"recoveryCodesRemaining":{"type":"integer","minimum":0,"maximum":10},"recentAuthenticationExpiresAt":{"type":"string","format":"date-time","nullable":true}}}}}}}},"202":{"description":"Password accepted; complete the MFA challenge.","content":{"application/json":{"schema":{"description":"Password accepted; complete the MFA challenge.","type":"object","additionalProperties":false,"required":["mfaRequired","challengeToken","expiresAt"],"properties":{"mfaRequired":{"type":"boolean","enum":[true]},"challengeToken":{"type":"string","pattern":"^mfa_[A-Za-z0-9_-]{43}$","readOnly":true,"description":"Single-use, IP-bound bearer challenge that expires after five minutes."},"expiresAt":{"type":"string","format":"date-time"}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/auth/session":{"get":{"operationId":"getControlSession","summary":"Get the current control session","tags":["Control authentication"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["user","organization","role","passwordChangeRequired","csrfToken","mfa"],"properties":{"user":{"type":"object","additionalProperties":false,"required":["id","email","displayName","platformAdmin"],"properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string","format":"email"},"displayName":{"type":"string","minLength":2,"maxLength":160},"platformAdmin":{"type":"boolean"}}},"organization":{"type":"object","additionalProperties":false,"required":["id","name","slug"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":2,"maxLength":160},"slug":{"type":"string","minLength":1,"maxLength":63}}},"role":{"type":"string","enum":["owner","admin","developer","billing","viewer"]},"passwordChangeRequired":{"type":"boolean","description":"When true, only password change and logout mutations are permitted."},"csrfToken":{"type":"string","minLength":32,"maxLength":128,"readOnly":true,"description":"Send this raw token as x-csrf-token on authenticated mutations."},"mfa":{"type":"object","additionalProperties":false,"required":["required","enabled","verified","enrollmentRequired","recoveryCodesRemaining","recentAuthenticationExpiresAt"],"properties":{"required":{"type":"boolean","description":"True for platform administrators and users with any accepted active owner or admin membership."},"enabled":{"type":"boolean"},"verified":{"type":"boolean"},"enrollmentRequired":{"type":"boolean"},"recoveryCodesRemaining":{"type":"integer","minimum":0,"maximum":10},"recentAuthenticationExpiresAt":{"type":"string","format":"date-time","nullable":true}}}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/auth/organizations":{"get":{"operationId":"listControlOrganizations","summary":"List active organization memberships","tags":["Control authentication"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["items"],"properties":{"items":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["organization","role"],"properties":{"organization":{"type":"object","additionalProperties":false,"required":["id","name","slug"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":2,"maxLength":160},"slug":{"type":"string","minLength":1,"maxLength":63}}},"role":{"type":"string","enum":["owner","admin","developer","billing","viewer"]}}}}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/auth/change-password":{"post":{"operationId":"changeControlPassword","summary":"Change the current user password","tags":["Control authentication"],"description":"Rotates the current session and CSRF credential, revokes other sessions, and clears pending MFA enrollment.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"currentPassword":{"type":"string","minLength":1,"maxLength":1024},"newPassword":{"type":"string","minLength":8,"maxLength":1024}},"required":["currentPassword","newPassword"],"additionalProperties":false}}},"required":true},"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["changed","otherSessionsRevoked","csrfToken"],"properties":{"changed":{"type":"boolean","enum":[true]},"otherSessionsRevoked":{"type":"integer","minimum":0},"csrfToken":{"type":"string","minLength":32,"maxLength":128,"readOnly":true,"description":"Replacement token required for subsequent mutations after session rotation."}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/auth/logout":{"post":{"operationId":"logoutControlUser","summary":"Revoke the current control session","tags":["Control authentication"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"security":[{"cookieAuth":[]}],"responses":{"204":{"description":"The operation completed successfully."},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/auth/mfa/challenge":{"post":{"operationId":"completeMfaLogin","summary":"Complete an MFA login challenge","tags":["Control authentication"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"challengeToken":{"type":"string","pattern":"^mfa_[A-Za-z0-9_-]{43}$"},"code":{"type":"string","maxLength":24}},"required":["challengeToken","code"],"additionalProperties":false}}},"required":true},"parameters":[{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."}],"security":[],"responses":{"200":{"description":"Authenticated session. The challenge and TOTP counter or recovery code are consumed.","content":{"application/json":{"schema":{"description":"Authenticated session. The challenge and TOTP counter or recovery code are consumed.","type":"object","additionalProperties":false,"required":["user","organization","role","passwordChangeRequired","csrfToken","mfa"],"properties":{"user":{"type":"object","additionalProperties":false,"required":["id","email","displayName","platformAdmin"],"properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string","format":"email"},"displayName":{"type":"string","minLength":2,"maxLength":160},"platformAdmin":{"type":"boolean"}}},"organization":{"type":"object","additionalProperties":false,"required":["id","name","slug"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":2,"maxLength":160},"slug":{"type":"string","minLength":1,"maxLength":63}}},"role":{"type":"string","enum":["owner","admin","developer","billing","viewer"]},"passwordChangeRequired":{"type":"boolean","description":"When true, only password change and logout mutations are permitted."},"csrfToken":{"type":"string","minLength":32,"maxLength":128,"readOnly":true,"description":"Send this raw token as x-csrf-token on authenticated mutations."},"mfa":{"type":"object","additionalProperties":false,"required":["required","enabled","verified","enrollmentRequired","recoveryCodesRemaining","recentAuthenticationExpiresAt"],"properties":{"required":{"type":"boolean","description":"True for platform administrators and users with any accepted active owner or admin membership."},"enabled":{"type":"boolean"},"verified":{"type":"boolean"},"enrollmentRequired":{"type":"boolean"},"recoveryCodesRemaining":{"type":"integer","minimum":0,"maximum":10},"recentAuthenticationExpiresAt":{"type":"string","format":"date-time","nullable":true}}}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/auth/mfa":{"get":{"operationId":"getMfaStatus","summary":"Get MFA and recent-authentication status","tags":["Control authentication"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["required","enabled","verified","enrollmentRequired","recoveryCodesRemaining","recentAuthenticationExpiresAt"],"properties":{"required":{"type":"boolean"},"enabled":{"type":"boolean"},"verified":{"type":"boolean"},"enrollmentRequired":{"type":"boolean"},"recoveryCodesRemaining":{"type":"integer","minimum":0,"maximum":10},"recentAuthenticationExpiresAt":{"type":"string","format":"date-time","nullable":true}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/auth/mfa/enrollment":{"post":{"operationId":"startMfaEnrollment","summary":"Start TOTP MFA enrollment","tags":["Control authentication"],"description":"Requires the current password. Replaces any prior unconfirmed enrollment for this session.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"currentPassword":{"type":"string","minLength":1,"maxLength":1024}},"required":["currentPassword"],"additionalProperties":false}}},"required":true},"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["secret","otpauthUri","expiresAt"],"properties":{"secret":{"type":"string","pattern":"^[A-Z2-7]{32}$","readOnly":true,"description":"Shown only for this pending enrollment."},"otpauthUri":{"type":"string","pattern":"^otpauth://totp/","readOnly":true},"expiresAt":{"type":"string","format":"date-time"}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/auth/mfa/enrollment/confirm":{"post":{"operationId":"confirmMfaEnrollment","summary":"Confirm TOTP MFA enrollment","tags":["Control authentication"],"description":"Consumes a fresh TOTP counter and returns recovery codes exactly once. The pending setup is bound to the current session.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","pattern":"^\\d{6}$"}},"required":["code"],"additionalProperties":false}}},"required":true},"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["enabled","recoveryCodes"],"properties":{"enabled":{"type":"boolean","enum":[true]},"recoveryCodes":{"type":"array","minItems":10,"maxItems":10,"uniqueItems":true,"readOnly":true,"description":"Shown once. Store these one-use recovery codes offline.","items":{"type":"string","pattern":"^REC(?:-[A-Z2-7]{4}){4}$"}}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/auth/mfa/step-up":{"post":{"operationId":"stepUpAuthentication","summary":"Refresh password and MFA authentication evidence","tags":["Control authentication"],"description":"Privileged users must supply both their current password and a fresh TOTP or unused recovery code.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"currentPassword":{"type":"string","minLength":1,"maxLength":1024},"code":{"type":"string","maxLength":24}},"required":["currentPassword"],"additionalProperties":false}}},"required":true},"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["verified","method","recentAuthenticationExpiresAt"],"properties":{"verified":{"type":"boolean","enum":[true]},"method":{"type":"string","enum":["password","totp","recovery"]},"recentAuthenticationExpiresAt":{"type":"string","format":"date-time"}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/auth/mfa/recovery-codes/regenerate":{"post":{"operationId":"regenerateMfaRecoveryCodes","summary":"Replace all MFA recovery codes","tags":["Control authentication"],"description":"Requires the current password and MFA verification within the configured recent-authentication window.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"currentPassword":{"type":"string","minLength":1,"maxLength":1024}},"required":["currentPassword"],"additionalProperties":false}}},"required":true},"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["recoveryCodes"],"properties":{"recoveryCodes":{"type":"array","minItems":10,"maxItems":10,"uniqueItems":true,"readOnly":true,"description":"Shown once. Store these one-use recovery codes offline.","items":{"type":"string","pattern":"^REC(?:-[A-Z2-7]{4}){4}$"}}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/auth/mfa/disable":{"post":{"operationId":"disableMfa","summary":"Disable MFA and revoke other sessions","tags":["Control authentication"],"description":"Requires the current password and recent MFA. Privileged users become restricted until they enroll again.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"currentPassword":{"type":"string","minLength":1,"maxLength":1024}},"required":["currentPassword"],"additionalProperties":false}}},"required":true},"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["disabled","otherSessionsRevoked"],"properties":{"disabled":{"type":"boolean","enum":[true]},"otherSessionsRevoked":{"type":"integer","minimum":0}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/deposits":{"get":{"operationId":"listCustomerDeposits","summary":"List tenant top-up requests","tags":["Billing"],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","properties":{"items":{"type":"array","items":{"type":"object","additionalProperties":true}}},"required":["items"]}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}},"post":{"operationId":"requestCustomerDeposit","summary":"Request a manually reviewed top-up","tags":["Billing"],"description":"Creates only a pending manual-review record. It never calls a payment provider or changes any balance.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"amountMinor":{"type":"string","maxLength":19,"pattern":"^[1-9]\\d*$"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"customerReference":{"type":"string","minLength":1,"maxLength":160},"note":{"type":"string","minLength":1,"maxLength":1000}},"required":["amountMinor","currency"],"additionalProperties":false}}},"required":true},"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."},{"schema":{"type":"string","minLength":1,"maxLength":128},"in":"header","name":"idempotency-key","required":true}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Idempotent replay.","content":{"application/json":{"schema":{"description":"Idempotent replay.","type":"object","additionalProperties":true}}}},"201":{"description":"The resource was created.","content":{"application/json":{"schema":{"description":"The resource was created.","type":"object","additionalProperties":true}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/binance-pay/topups":{"get":{"operationId":"listBinancePayTopups","summary":"List Binance Pay top-up workflow attempts","tags":["Billing"],"description":"Shows provider workflow evidence only. A paid state is not a wallet credit or account balance.","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","properties":{"items":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["created","pending","paid","failed","expired","cancelled"]},"amount":{"type":"string","pattern":"^\\d+(?:\\.\\d+)?$"},"currency":{"type":"string","pattern":"^[A-Z0-9]{2,16}$"},"confirmedAt":{"type":"string","format":"date-time","nullable":true},"closedAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"fundsCredited":{"type":"boolean","enum":[false]},"manualFallback":{"type":"boolean"},"checkoutUrl":{"type":"string","format":"uri","nullable":true},"qrContent":{"type":"string","nullable":true},"expiresAt":{"type":"string","format":"date-time","nullable":true}},"required":["id","status","amount","currency","confirmedAt","closedAt","createdAt","updatedAt","fundsCredited","manualFallback","checkoutUrl","qrContent","expiresAt"]}},"fundsCredited":{"type":"boolean","enum":[false]}},"required":["items","fundsCredited"],"additionalProperties":false}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}},"post":{"operationId":"createBinancePayTopup","summary":"Create a Binance Pay top-up checkout","tags":["Billing"],"description":"Creates a signed Binance Pay v3 order through the configured payment proxy. If the merchant API is unavailable, returns the configured Binance receive link as local QR content for manual review.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"amount":{"type":"string","maxLength":27,"pattern":"^(?!(?:0(?:\\.0{1,8})?)$)(?:0|[1-9]\\d{0,17})(?:\\.\\d{1,8})?$"},"currency":{"type":"string","pattern":"^[A-Z0-9]{2,16}$"}},"required":["amount","currency"],"additionalProperties":false}}},"required":true},"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Binance Pay instructions are ready.","content":{"application/json":{"schema":{"description":"Binance Pay instructions are ready.","type":"object","additionalProperties":true}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"502":{"description":"The request failed.","content":{"application/json":{"schema":{"description":"The request failed.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/platform-status":{"get":{"operationId":"getPlatformStatus","summary":"Get effective upstream-forwarding status","tags":["Platform administration"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["forwardingEnabled"],"properties":{"forwardingEnabled":{"type":"boolean"},"resellerAuthorized":{"type":"boolean"},"operationalForwardingEnabled":{"type":"boolean"}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/organization":{"get":{"operationId":"getOrganization","summary":"Get the selected organization","tags":["Organization"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["organization"],"properties":{"organization":{"type":"object","additionalProperties":false,"required":["id","name","slug","status","callbackUrl","callbackSecretConfigured","allowedReturnOrigins","allowedCurrencies","allowedGamePrefixes","allowedGameIds","rateLimitPerMinute","monthlyRequestQuota","monthlyGgrLimitCents","promotionalCreditMinor","fundingBalanceMinor","confirmedTopupMinor","providerAccessTier","providerAccessLimit","firstTopupCompletedAt","createdAt","updatedAt"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":2,"maxLength":160},"slug":{"type":"string","minLength":1,"maxLength":63},"status":{"type":"string","enum":["active","suspended","disabled"]},"callbackUrl":{"type":"string","format":"uri","pattern":"^https://","nullable":true},"callbackSecretConfigured":{"type":"boolean"},"allowedReturnOrigins":{"type":"array","items":{"type":"string","format":"uri","pattern":"^https://"}},"allowedCurrencies":{"type":"array","items":{"type":"string","pattern":"^[A-Z]{3}$"}},"allowedGamePrefixes":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"allowedGameIds":{"type":"array","maxItems":1000,"uniqueItems":true,"description":"Exact game allowlist. Empty means every game under the permitted provider prefixes.","items":{"type":"string","minLength":3,"maxLength":255,"pattern":"^[A-Za-z0-9_-]+/[^\\u0000-\\u001f\\u007f]+$"}},"rateLimitPerMinute":{"type":"integer","minimum":1,"maximum":100000},"monthlyRequestQuota":{"type":"string","maxLength":19,"pattern":"^\\d+$","nullable":true},"monthlyGgrLimitCents":{"type":"string","maxLength":19,"pattern":"^\\d+$","nullable":true},"promotionalCreditMinor":{"type":"string","maxLength":19,"pattern":"^\\d+$"},"fundingBalanceMinor":{"type":"string","maxLength":19,"pattern":"^\\d+$"},"confirmedTopupMinor":{"type":"string","maxLength":19,"pattern":"^\\d+$"},"providerAccessTier":{"type":"string","enum":["trial","starter","most","all"]},"providerAccessLimit":{"type":"integer","minimum":10,"maximum":183},"firstTopupCompletedAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}},"patch":{"operationId":"updateOrganization","summary":"Update tenant-managed organization settings","tags":["Organization"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":160},"callbackUrl":{"type":"string","format":"uri","pattern":"^https://(?![^/]*@)[^?#]+$","maxLength":2048,"nullable":true,"description":"Absolute HTTPS callback URL without credentials, query parameters, or fragments."},"allowedReturnOrigins":{"type":"array","maxItems":50,"uniqueItems":true,"items":{"type":"string","format":"uri","pattern":"^https://[^@/?#]+$"}}},"additionalProperties":false,"minProperties":1}}}},"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["organization"],"properties":{"organization":{"type":"object","additionalProperties":false,"required":["id","name","slug","status","callbackUrl","callbackSecretConfigured","allowedReturnOrigins","allowedCurrencies","allowedGamePrefixes","allowedGameIds","rateLimitPerMinute","monthlyRequestQuota","monthlyGgrLimitCents","promotionalCreditMinor","fundingBalanceMinor","confirmedTopupMinor","providerAccessTier","providerAccessLimit","firstTopupCompletedAt","createdAt","updatedAt"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":2,"maxLength":160},"slug":{"type":"string","minLength":1,"maxLength":63},"status":{"type":"string","enum":["active","suspended","disabled"]},"callbackUrl":{"type":"string","format":"uri","pattern":"^https://","nullable":true},"callbackSecretConfigured":{"type":"boolean"},"allowedReturnOrigins":{"type":"array","items":{"type":"string","format":"uri","pattern":"^https://"}},"allowedCurrencies":{"type":"array","items":{"type":"string","pattern":"^[A-Z]{3}$"}},"allowedGamePrefixes":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"allowedGameIds":{"type":"array","maxItems":1000,"uniqueItems":true,"description":"Exact game allowlist. Empty means every game under the permitted provider prefixes.","items":{"type":"string","minLength":3,"maxLength":255,"pattern":"^[A-Za-z0-9_-]+/[^\\u0000-\\u001f\\u007f]+$"}},"rateLimitPerMinute":{"type":"integer","minimum":1,"maximum":100000},"monthlyRequestQuota":{"type":"string","maxLength":19,"pattern":"^\\d+$","nullable":true},"monthlyGgrLimitCents":{"type":"string","maxLength":19,"pattern":"^\\d+$","nullable":true},"promotionalCreditMinor":{"type":"string","maxLength":19,"pattern":"^\\d+$"},"fundingBalanceMinor":{"type":"string","maxLength":19,"pattern":"^\\d+$"},"confirmedTopupMinor":{"type":"string","maxLength":19,"pattern":"^\\d+$"},"providerAccessTier":{"type":"string","enum":["trial","starter","most","all"]},"providerAccessLimit":{"type":"integer","minimum":10,"maximum":183},"firstTopupCompletedAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/org/current":{"get":{"operationId":"getCurrentOrganizationLegacy","summary":"Get the selected organization (legacy alias)","tags":["Organization"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."}],"deprecated":true,"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["organization"],"properties":{"organization":{"type":"object","additionalProperties":false,"required":["id","name","slug","status","callbackUrl","callbackSecretConfigured","allowedReturnOrigins","allowedCurrencies","allowedGamePrefixes","allowedGameIds","rateLimitPerMinute","monthlyRequestQuota","monthlyGgrLimitCents","promotionalCreditMinor","fundingBalanceMinor","confirmedTopupMinor","providerAccessTier","providerAccessLimit","firstTopupCompletedAt","createdAt","updatedAt"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":2,"maxLength":160},"slug":{"type":"string","minLength":1,"maxLength":63},"status":{"type":"string","enum":["active","suspended","disabled"]},"callbackUrl":{"type":"string","format":"uri","pattern":"^https://","nullable":true},"callbackSecretConfigured":{"type":"boolean"},"allowedReturnOrigins":{"type":"array","items":{"type":"string","format":"uri","pattern":"^https://"}},"allowedCurrencies":{"type":"array","items":{"type":"string","pattern":"^[A-Z]{3}$"}},"allowedGamePrefixes":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"allowedGameIds":{"type":"array","maxItems":1000,"uniqueItems":true,"description":"Exact game allowlist. Empty means every game under the permitted provider prefixes.","items":{"type":"string","minLength":3,"maxLength":255,"pattern":"^[A-Za-z0-9_-]+/[^\\u0000-\\u001f\\u007f]+$"}},"rateLimitPerMinute":{"type":"integer","minimum":1,"maximum":100000},"monthlyRequestQuota":{"type":"string","maxLength":19,"pattern":"^\\d+$","nullable":true},"monthlyGgrLimitCents":{"type":"string","maxLength":19,"pattern":"^\\d+$","nullable":true},"promotionalCreditMinor":{"type":"string","maxLength":19,"pattern":"^\\d+$"},"fundingBalanceMinor":{"type":"string","maxLength":19,"pattern":"^\\d+$"},"confirmedTopupMinor":{"type":"string","maxLength":19,"pattern":"^\\d+$"},"providerAccessTier":{"type":"string","enum":["trial","starter","most","all"]},"providerAccessLimit":{"type":"integer","minimum":10,"maximum":183},"firstTopupCompletedAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}},"patch":{"operationId":"updateCurrentOrganizationLegacy","summary":"Update tenant-managed organization settings (legacy alias)","tags":["Organization"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":160},"callbackUrl":{"type":"string","format":"uri","pattern":"^https://(?![^/]*@)[^?#]+$","maxLength":2048,"nullable":true,"description":"Absolute HTTPS callback URL without credentials, query parameters, or fragments."},"allowedReturnOrigins":{"type":"array","maxItems":50,"uniqueItems":true,"items":{"type":"string","format":"uri","pattern":"^https://[^@/?#]+$"}}},"additionalProperties":false,"minProperties":1}}}},"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"deprecated":true,"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["organization"],"properties":{"organization":{"type":"object","additionalProperties":false,"required":["id","name","slug","status","callbackUrl","callbackSecretConfigured","allowedReturnOrigins","allowedCurrencies","allowedGamePrefixes","allowedGameIds","rateLimitPerMinute","monthlyRequestQuota","monthlyGgrLimitCents","promotionalCreditMinor","fundingBalanceMinor","confirmedTopupMinor","providerAccessTier","providerAccessLimit","firstTopupCompletedAt","createdAt","updatedAt"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":2,"maxLength":160},"slug":{"type":"string","minLength":1,"maxLength":63},"status":{"type":"string","enum":["active","suspended","disabled"]},"callbackUrl":{"type":"string","format":"uri","pattern":"^https://","nullable":true},"callbackSecretConfigured":{"type":"boolean"},"allowedReturnOrigins":{"type":"array","items":{"type":"string","format":"uri","pattern":"^https://"}},"allowedCurrencies":{"type":"array","items":{"type":"string","pattern":"^[A-Z]{3}$"}},"allowedGamePrefixes":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"allowedGameIds":{"type":"array","maxItems":1000,"uniqueItems":true,"description":"Exact game allowlist. Empty means every game under the permitted provider prefixes.","items":{"type":"string","minLength":3,"maxLength":255,"pattern":"^[A-Za-z0-9_-]+/[^\\u0000-\\u001f\\u007f]+$"}},"rateLimitPerMinute":{"type":"integer","minimum":1,"maximum":100000},"monthlyRequestQuota":{"type":"string","maxLength":19,"pattern":"^\\d+$","nullable":true},"monthlyGgrLimitCents":{"type":"string","maxLength":19,"pattern":"^\\d+$","nullable":true},"promotionalCreditMinor":{"type":"string","maxLength":19,"pattern":"^\\d+$"},"fundingBalanceMinor":{"type":"string","maxLength":19,"pattern":"^\\d+$"},"confirmedTopupMinor":{"type":"string","maxLength":19,"pattern":"^\\d+$"},"providerAccessTier":{"type":"string","enum":["trial","starter","most","all"]},"providerAccessLimit":{"type":"integer","minimum":10,"maximum":183},"firstTopupCompletedAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/organization/callback-secret/rotation":{"get":{"operationId":"getCallbackSecretRotation","summary":"Inspect callback signing-secret rotation status","tags":["Organization"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["callbackSecretConfigured","pendingRotation"],"properties":{"callbackSecretConfigured":{"type":"boolean"},"pendingRotation":{"type":"object","additionalProperties":false,"required":["id","stagedAt"],"properties":{"id":{"type":"string","format":"uuid"},"stagedAt":{"type":"string","format":"date-time"}},"nullable":true}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}},"post":{"operationId":"stageCallbackSecretRotation","summary":"Stage a new callback signing secret","tags":["Organization"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["callbackSigningSecret","callbackSecretConfigured","pendingRotation"],"properties":{"callbackSigningSecret":{"type":"string","minLength":32,"readOnly":true,"description":"Shown once. Store this value before activating the rotation."},"callbackSecretConfigured":{"type":"boolean"},"pendingRotation":{"type":"object","additionalProperties":false,"required":["id","stagedAt"],"properties":{"id":{"type":"string","format":"uuid"},"stagedAt":{"type":"string","format":"date-time"}}}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}},"delete":{"operationId":"cancelCallbackSecretRotationWithBody","summary":"Cancel the expected callback signing secret using a DELETE body","tags":["Organization"],"description":"Compatibility operation. Prefer DELETE on the rotationId path because intermediaries may discard DELETE bodies.","requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["rotationId"],"properties":{"rotationId":{"type":"string","format":"uuid"}}}}},"required":true},"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"deprecated":true,"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["callbackSecretConfigured","pendingRotation"],"properties":{"callbackSecretConfigured":{"type":"boolean"},"pendingRotation":{"type":"object","additionalProperties":false,"required":["id","stagedAt"],"properties":{"id":{"type":"string","format":"uuid"},"stagedAt":{"type":"string","format":"date-time"}},"nullable":true}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/organization/callback-secret/rotation/activate":{"post":{"operationId":"activateCallbackSecretRotation","summary":"Activate the expected callback signing secret","tags":["Organization"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["rotationId"],"properties":{"rotationId":{"type":"string","format":"uuid"}}}}},"required":true},"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["callbackSecretConfigured","pendingRotation"],"properties":{"callbackSecretConfigured":{"type":"boolean"},"pendingRotation":{"type":"object","additionalProperties":false,"required":["id","stagedAt"],"properties":{"id":{"type":"string","format":"uuid"},"stagedAt":{"type":"string","format":"date-time"}},"nullable":true}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/organization/callback-secret/rotation/{rotationId}":{"delete":{"operationId":"cancelCallbackSecretRotation","summary":"Cancel the expected callback signing secret","tags":["Organization"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"rotationId","required":true},{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["callbackSecretConfigured","pendingRotation"],"properties":{"callbackSecretConfigured":{"type":"boolean"},"pendingRotation":{"type":"object","additionalProperties":false,"required":["id","stagedAt"],"properties":{"id":{"type":"string","format":"uuid"},"stagedAt":{"type":"string","format":"date-time"}},"nullable":true}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/org/current/callback-secret/rotation":{"get":{"operationId":"getCallbackSecretRotationLegacy","summary":"Inspect callback signing-secret rotation status (legacy alias)","tags":["Organization"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."}],"deprecated":true,"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["callbackSecretConfigured","pendingRotation"],"properties":{"callbackSecretConfigured":{"type":"boolean"},"pendingRotation":{"type":"object","additionalProperties":false,"required":["id","stagedAt"],"properties":{"id":{"type":"string","format":"uuid"},"stagedAt":{"type":"string","format":"date-time"}},"nullable":true}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}},"post":{"operationId":"stageCallbackSecretRotationLegacy","summary":"Stage a new callback signing secret (legacy alias)","tags":["Organization"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"deprecated":true,"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["callbackSigningSecret","callbackSecretConfigured","pendingRotation"],"properties":{"callbackSigningSecret":{"type":"string","minLength":32,"readOnly":true,"description":"Shown once. Store this value before activating the rotation."},"callbackSecretConfigured":{"type":"boolean"},"pendingRotation":{"type":"object","additionalProperties":false,"required":["id","stagedAt"],"properties":{"id":{"type":"string","format":"uuid"},"stagedAt":{"type":"string","format":"date-time"}}}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}},"delete":{"operationId":"cancelCallbackSecretRotationWithBodyLegacy","summary":"Cancel the expected callback signing secret using a DELETE body","tags":["Organization"],"description":"Compatibility operation. Prefer DELETE on the rotationId path because intermediaries may discard DELETE bodies.","requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["rotationId"],"properties":{"rotationId":{"type":"string","format":"uuid"}}}}},"required":true},"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"deprecated":true,"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["callbackSecretConfigured","pendingRotation"],"properties":{"callbackSecretConfigured":{"type":"boolean"},"pendingRotation":{"type":"object","additionalProperties":false,"required":["id","stagedAt"],"properties":{"id":{"type":"string","format":"uuid"},"stagedAt":{"type":"string","format":"date-time"}},"nullable":true}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/org/current/callback-secret/rotation/activate":{"post":{"operationId":"activateCallbackSecretRotationLegacy","summary":"Activate the expected callback signing secret (legacy alias)","tags":["Organization"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["rotationId"],"properties":{"rotationId":{"type":"string","format":"uuid"}}}}},"required":true},"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"deprecated":true,"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["callbackSecretConfigured","pendingRotation"],"properties":{"callbackSecretConfigured":{"type":"boolean"},"pendingRotation":{"type":"object","additionalProperties":false,"required":["id","stagedAt"],"properties":{"id":{"type":"string","format":"uuid"},"stagedAt":{"type":"string","format":"date-time"}},"nullable":true}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/org/current/callback-secret/rotation/{rotationId}":{"delete":{"operationId":"cancelCallbackSecretRotationLegacy","summary":"Cancel the expected callback signing secret (legacy alias)","tags":["Organization"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"rotationId","required":true},{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"deprecated":true,"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["callbackSecretConfigured","pendingRotation"],"properties":{"callbackSecretConfigured":{"type":"boolean"},"pendingRotation":{"type":"object","additionalProperties":false,"required":["id","stagedAt"],"properties":{"id":{"type":"string","format":"uuid"},"stagedAt":{"type":"string","format":"date-time"}},"nullable":true}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/organization/callback-secret/rotate":{"post":{"operationId":"stageCallbackSecretRotationCompatibility","summary":"Stage a callback signing secret (compatibility path)","tags":["Organization"],"description":"Compatibility operation. Prefer POST /organization/callback-secret/rotation.","parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"deprecated":true,"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["callbackSigningSecret","callbackSecretConfigured","pendingRotation"],"properties":{"callbackSigningSecret":{"type":"string","minLength":32,"readOnly":true,"description":"Shown once. Store this value before activating the rotation."},"callbackSecretConfigured":{"type":"boolean"},"pendingRotation":{"type":"object","additionalProperties":false,"required":["id","stagedAt"],"properties":{"id":{"type":"string","format":"uuid"},"stagedAt":{"type":"string","format":"date-time"}}}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/org/current/callback-secret/rotate":{"post":{"operationId":"stageCallbackSecretRotationLegacyCompatibility","summary":"Stage a callback signing secret (legacy compatibility path)","tags":["Organization"],"description":"Compatibility operation. Prefer POST /organization/callback-secret/rotation.","parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"deprecated":true,"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["callbackSigningSecret","callbackSecretConfigured","pendingRotation"],"properties":{"callbackSigningSecret":{"type":"string","minLength":32,"readOnly":true,"description":"Shown once. Store this value before activating the rotation."},"callbackSecretConfigured":{"type":"boolean"},"pendingRotation":{"type":"object","additionalProperties":false,"required":["id","stagedAt"],"properties":{"id":{"type":"string","format":"uuid"},"stagedAt":{"type":"string","format":"date-time"}}}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/api-keys":{"get":{"operationId":"listApiKeys","summary":"List API keys for the selected organization","tags":["API keys"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["items"],"properties":{"items":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["id","name","prefix","mode","status","scopes","rateLimitPerMinute","monthlyQuota","allowedIpCidrs","lastUsedAt","expiresAt","revokedAt","createdAt"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":2,"maxLength":120},"prefix":{"type":"string"},"mode":{"type":"string","enum":["live","sandbox"]},"status":{"type":"string","enum":["active","revoked","expired"]},"scopes":{"type":"array","items":{"type":"string"}},"rateLimitPerMinute":{"type":"integer","minimum":1,"nullable":true},"monthlyQuota":{"type":"string","maxLength":19,"pattern":"^\\d+$","nullable":true},"allowedIpCidrs":{"type":"array","items":{"type":"string"}},"lastUsedAt":{"type":"string","format":"date-time","nullable":true},"expiresAt":{"type":"string","format":"date-time","nullable":true},"revokedAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"}}}}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}},"post":{"operationId":"createApiKey","summary":"Create an API key","tags":["API keys"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":120},"mode":{"default":"live","type":"string","enum":["live","sandbox"]},"scopes":{"minItems":1,"maxItems":9,"type":"array","items":{"type":"string","enum":["proxy:*","proxy:createPlayer","proxy:getGame","proxy:getGameDemo","proxy:getGameList","proxy:addFreeRounds","proxy:getFreeRounds","proxy:deleteFreeRounds","proxy:deleteAllFreeRounds"]},"uniqueItems":true,"description":"The proxy:* wildcard must be the only scope when used."},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","nullable":true},"rateLimitPerMinute":{"type":"integer","minimum":1,"maximum":100000,"nullable":true},"monthlyQuota":{"type":"string","maxLength":19,"pattern":"^[1-9]\\d*$","nullable":true,"description":"Canonical decimal string within PostgreSQL bigint range; represented as text to preserve precision."},"allowedIpCidrs":{"default":[],"maxItems":50,"type":"array","items":{"type":"string","minLength":3,"maxLength":64},"uniqueItems":true,"description":"IP network allowlist. Host bits are normalized before storage."}},"required":["name","scopes"],"additionalProperties":false}}},"required":true},"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"security":[{"cookieAuth":[]}],"responses":{"201":{"description":"The resource was created.","content":{"application/json":{"schema":{"description":"The resource was created.","type":"object","additionalProperties":false,"required":["apiKey","item"],"properties":{"apiKey":{"type":"string","minLength":1,"readOnly":true,"description":"Shown once. Store the complete key securely."},"item":{"type":"object","additionalProperties":false,"required":["id","name","prefix","mode","status","scopes","rateLimitPerMinute","monthlyQuota","allowedIpCidrs","lastUsedAt","expiresAt","revokedAt","createdAt"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":2,"maxLength":120},"prefix":{"type":"string"},"mode":{"type":"string","enum":["live","sandbox"]},"status":{"type":"string","enum":["active","revoked","expired"]},"scopes":{"type":"array","items":{"type":"string"}},"rateLimitPerMinute":{"type":"integer","minimum":1,"nullable":true},"monthlyQuota":{"type":"string","maxLength":19,"pattern":"^\\d+$","nullable":true},"allowedIpCidrs":{"type":"array","items":{"type":"string"}},"lastUsedAt":{"type":"string","format":"date-time","nullable":true},"expiresAt":{"type":"string","format":"date-time","nullable":true},"revokedAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"}}}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/api-keys/{id}":{"delete":{"operationId":"revokeApiKey","summary":"Revoke an API key","tags":["API keys"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true},{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"security":[{"cookieAuth":[]}],"responses":{"204":{"description":"The operation completed successfully."},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/api-keys/{id}/revoke":{"post":{"operationId":"revokeApiKeyLegacy","summary":"Revoke an API key (legacy alias)","tags":["API keys"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true},{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"deprecated":true,"security":[{"cookieAuth":[]}],"responses":{"204":{"description":"The operation completed successfully."},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/dashboard":{"get":{"operationId":"getDashboardSummary","summary":"Get current-month operational totals","tags":["Dashboard"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["period","requests","activeApiKeys","callbacks"],"properties":{"period":{"type":"string","enum":["month"]},"requests":{"type":"object","additionalProperties":false,"required":["total","succeeded","failed","averageLatencyMs"],"properties":{"total":{"type":"integer","minimum":0},"succeeded":{"type":"integer","minimum":0},"failed":{"type":"integer","minimum":0},"averageLatencyMs":{"type":"integer","minimum":0,"nullable":true}}},"activeApiKeys":{"type":"integer","minimum":0},"callbacks":{"type":"object","additionalProperties":false,"required":["total","delivered","byCurrency"],"properties":{"total":{"type":"integer","minimum":0},"delivered":{"type":"integer","minimum":0},"byCurrency":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["currency","debitCents","creditCents","ggrCents"],"properties":{"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"debitCents":{"type":"string","pattern":"^-?\\d+$"},"creditCents":{"type":"string","pattern":"^-?\\d+$"},"ggrCents":{"type":"string","pattern":"^-?\\d+$"}}}}}}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/logs":{"get":{"operationId":"listRequestLogsLegacy","summary":"List proxy request logs (legacy alias)","tags":["Request logs"],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"integer","minimum":1,"maximum":10001},"in":"query","name":"page","required":false,"description":"Offset pagination is limited to 10000 rows; use before/nextCursor."},{"schema":{"type":"integer","minimum":1,"maximum":100},"in":"query","name":"pageSize","required":false},{"schema":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[A-Za-z0-9_-]+$"},"in":"query","name":"before","required":false,"description":"Opaque, authenticated, context-bound base64url pagination cursor. Treat it as an indivisible value and restart from the first page when a cursor is invalid or its signing key has retired."},{"schema":{"type":"string","minLength":3,"maxLength":120},"in":"query","name":"search","required":false},{"schema":{"type":"string","maxLength":64},"in":"query","name":"method","required":false},{"schema":{"type":"string","enum":["received","processing","succeeded","failed","rejected","timed_out"]},"in":"query","name":"status","required":false},{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."}],"deprecated":true,"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["items","page","pageSize","total","totalPages"],"properties":{"items":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["id","requestId","method","path","status","statusCode","upstreamHttpStatus","latencyMs","requestBytes","responseBytes","errorCode","apiKeyName","keyPrefix","clientIp","createdAt","completedAt"],"properties":{"id":{"type":"string","format":"uuid"},"requestId":{"type":"string","format":"uuid"},"method":{"type":"string","maxLength":64},"path":{"type":"string","enum":["/v1/commands"]},"status":{"type":"string"},"statusCode":{"type":"integer","minimum":100,"maximum":599,"nullable":true},"upstreamHttpStatus":{"type":"integer","minimum":100,"maximum":599,"nullable":true},"latencyMs":{"type":"integer","minimum":0,"nullable":true},"requestBytes":{"type":"integer","minimum":0,"nullable":true},"responseBytes":{"type":"integer","minimum":0,"nullable":true},"errorCode":{"type":"string","nullable":true},"apiKeyName":{"type":"string","nullable":true},"keyPrefix":{"type":"string","nullable":true},"clientIp":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"completedAt":{"type":"string","format":"date-time","nullable":true}}}},"page":{"type":"integer","minimum":1},"pageSize":{"type":"integer","minimum":1,"maximum":100},"total":{"type":"integer","minimum":0},"totalIsExact":{"type":"boolean","description":"False when total is the bounded lower estimate 10001."},"totalPages":{"type":"integer","minimum":0},"nextCursor":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[A-Za-z0-9_-]+$","description":"Opaque, authenticated, context-bound base64url pagination cursor. Treat it as an indivisible value and restart from the first page when a cursor is invalid or its signing key has retired.","nullable":true}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/request-logs":{"get":{"operationId":"listRequestLogs","summary":"List proxy request logs","tags":["Request logs"],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"integer","minimum":1,"maximum":10001},"in":"query","name":"page","required":false,"description":"Offset pagination is limited to 10000 rows; use before/nextCursor."},{"schema":{"type":"integer","minimum":1,"maximum":100},"in":"query","name":"pageSize","required":false},{"schema":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[A-Za-z0-9_-]+$"},"in":"query","name":"before","required":false,"description":"Opaque, authenticated, context-bound base64url pagination cursor. Treat it as an indivisible value and restart from the first page when a cursor is invalid or its signing key has retired."},{"schema":{"type":"string","minLength":3,"maxLength":120},"in":"query","name":"search","required":false},{"schema":{"type":"string","maxLength":64},"in":"query","name":"method","required":false},{"schema":{"type":"string","enum":["received","processing","succeeded","failed","rejected","timed_out"]},"in":"query","name":"status","required":false},{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["items","page","pageSize","total","totalPages"],"properties":{"items":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["id","requestId","method","path","status","statusCode","upstreamHttpStatus","latencyMs","requestBytes","responseBytes","errorCode","apiKeyName","keyPrefix","clientIp","createdAt","completedAt"],"properties":{"id":{"type":"string","format":"uuid"},"requestId":{"type":"string","format":"uuid"},"method":{"type":"string","maxLength":64},"path":{"type":"string","enum":["/v1/commands"]},"status":{"type":"string"},"statusCode":{"type":"integer","minimum":100,"maximum":599,"nullable":true},"upstreamHttpStatus":{"type":"integer","minimum":100,"maximum":599,"nullable":true},"latencyMs":{"type":"integer","minimum":0,"nullable":true},"requestBytes":{"type":"integer","minimum":0,"nullable":true},"responseBytes":{"type":"integer","minimum":0,"nullable":true},"errorCode":{"type":"string","nullable":true},"apiKeyName":{"type":"string","nullable":true},"keyPrefix":{"type":"string","nullable":true},"clientIp":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"completedAt":{"type":"string","format":"date-time","nullable":true}}}},"page":{"type":"integer","minimum":1},"pageSize":{"type":"integer","minimum":1,"maximum":100},"total":{"type":"integer","minimum":0},"totalIsExact":{"type":"boolean","description":"False when total is the bounded lower estimate 10001."},"totalPages":{"type":"integer","minimum":0},"nextCursor":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[A-Za-z0-9_-]+$","description":"Opaque, authenticated, context-bound base64url pagination cursor. Treat it as an indivisible value and restart from the first page when a cursor is invalid or its signing key has retired.","nullable":true}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/request-logs/{id}":{"get":{"operationId":"getRequestLog","summary":"Get a proxy request log","tags":["Request logs"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true},{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["id","requestId","method","path","status","statusCode","upstreamHttpStatus","latencyMs","requestBytes","responseBytes","errorCode","apiKeyName","keyPrefix","clientIp","createdAt","completedAt"],"properties":{"id":{"type":"string","format":"uuid"},"requestId":{"type":"string","format":"uuid"},"method":{"type":"string","maxLength":64},"path":{"type":"string","enum":["/v1/commands"]},"status":{"type":"string"},"statusCode":{"type":"integer","minimum":100,"maximum":599,"nullable":true},"upstreamHttpStatus":{"type":"integer","minimum":100,"maximum":599,"nullable":true},"latencyMs":{"type":"integer","minimum":0,"nullable":true},"requestBytes":{"type":"integer","minimum":0,"nullable":true},"responseBytes":{"type":"integer","minimum":0,"nullable":true},"errorCode":{"type":"string","nullable":true},"apiKeyName":{"type":"string","nullable":true},"keyPrefix":{"type":"string","nullable":true},"clientIp":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"completedAt":{"type":"string","format":"date-time","nullable":true}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/callback-deliveries":{"get":{"operationId":"listCallbackDeliveries","summary":"List provider callback deliveries","tags":["Callbacks"],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"integer","minimum":1,"maximum":10001},"in":"query","name":"page","required":false,"description":"Offset pagination is limited to 10000 rows; use before/nextCursor."},{"schema":{"type":"integer","minimum":1,"maximum":100},"in":"query","name":"pageSize","required":false},{"schema":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[A-Za-z0-9_-]+$"},"in":"query","name":"before","required":false,"description":"Opaque, authenticated, context-bound base64url pagination cursor. Treat it as an indivisible value and restart from the first page when a cursor is invalid or its signing key has retired."},{"schema":{"type":"string","maxLength":32},"in":"query","name":"status","required":false},{"schema":{"type":"string","minLength":3,"maxLength":120},"in":"query","name":"search","required":false},{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["items","page","pageSize","total","totalPages"],"properties":{"items":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["id","eventId","callId","eventType","action","transactionType","rollback","amount","currency","status","attempt","attemptCount","maxAttempts","responseStatus","responseHttpStatus","responseErrorCode","latencyMs","errorCode","error","createdAt","receivedAt","deliveredAt","completedAt"],"properties":{"id":{"type":"string","format":"uuid"},"eventId":{"type":"string","nullable":true},"callId":{"type":"string","nullable":true},"eventType":{"type":"string"},"action":{"type":"string"},"transactionType":{"type":"string","nullable":true},"rollback":{"type":"boolean","nullable":true},"amount":{"type":"string","pattern":"^-?\\d+$","nullable":true},"currency":{"type":"string","pattern":"^[A-Z]{3}$","nullable":true},"status":{"type":"string"},"attempt":{"type":"integer","minimum":0},"attemptCount":{"type":"integer","minimum":0},"maxAttempts":{"type":"integer","minimum":1},"responseStatus":{"type":"integer","minimum":100,"maximum":599,"nullable":true},"responseHttpStatus":{"type":"integer","minimum":100,"maximum":599,"nullable":true},"responseErrorCode":{"type":"integer","nullable":true},"latencyMs":{"type":"integer","minimum":0,"nullable":true},"errorCode":{"type":"string","nullable":true},"error":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"receivedAt":{"type":"string","format":"date-time"},"deliveredAt":{"type":"string","format":"date-time","nullable":true},"completedAt":{"type":"string","format":"date-time","nullable":true}}}},"page":{"type":"integer","minimum":1},"pageSize":{"type":"integer","minimum":1,"maximum":100},"total":{"type":"integer","minimum":0},"totalIsExact":{"type":"boolean","description":"False when total is the bounded lower estimate 10001."},"totalPages":{"type":"integer","minimum":0},"nextCursor":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[A-Za-z0-9_-]+$","description":"Opaque, authenticated, context-bound base64url pagination cursor. Treat it as an indivisible value and restart from the first page when a cursor is invalid or its signing key has retired.","nullable":true}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/callback-deliveries/{id}":{"get":{"operationId":"getCallbackDelivery","summary":"Get a provider callback delivery","tags":["Callbacks"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true},{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["id","eventId","callId","eventType","action","transactionType","rollback","amount","currency","status","attempt","attemptCount","maxAttempts","responseStatus","responseHttpStatus","responseErrorCode","latencyMs","errorCode","error","createdAt","receivedAt","deliveredAt","completedAt"],"properties":{"id":{"type":"string","format":"uuid"},"eventId":{"type":"string","nullable":true},"callId":{"type":"string","nullable":true},"eventType":{"type":"string"},"action":{"type":"string"},"transactionType":{"type":"string","nullable":true},"rollback":{"type":"boolean","nullable":true},"amount":{"type":"string","pattern":"^-?\\d+$","nullable":true},"currency":{"type":"string","pattern":"^[A-Z]{3}$","nullable":true},"status":{"type":"string"},"attempt":{"type":"integer","minimum":0},"attemptCount":{"type":"integer","minimum":0},"maxAttempts":{"type":"integer","minimum":1},"responseStatus":{"type":"integer","minimum":100,"maximum":599,"nullable":true},"responseHttpStatus":{"type":"integer","minimum":100,"maximum":599,"nullable":true},"responseErrorCode":{"type":"integer","nullable":true},"latencyMs":{"type":"integer","minimum":0,"nullable":true},"errorCode":{"type":"string","nullable":true},"error":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"receivedAt":{"type":"string","format":"date-time"},"deliveredAt":{"type":"string","format":"date-time","nullable":true},"completedAt":{"type":"string","format":"date-time","nullable":true}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/audit-events":{"get":{"operationId":"listAuditEvents","summary":"List recent audit events","tags":["Audit"],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"in":"query","name":"limit","required":false},{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["items"],"properties":{"items":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["id","action","resource_type","resource_id","actor_type","actor_user_id","request_id","metadata","occurred_at"],"properties":{"id":{"type":"string","format":"uuid"},"action":{"type":"string"},"resource_type":{"type":"string"},"resource_id":{"type":"string","nullable":true},"actor_type":{"type":"string"},"actor_user_id":{"type":"string","format":"uuid","nullable":true},"request_id":{"type":"string","nullable":true},"metadata":{"type":"object","additionalProperties":true},"occurred_at":{"type":"string","format":"date-time"}}}}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/usage/monthly":{"get":{"operationId":"getMonthlyQuotaUsage","summary":"Get exact current-month quota usage","tags":["Dashboard"],"description":"Returns decimal strings to preserve precision. API keys are ordered newest first and continued with the authenticated nextCursor value.","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"in":"query","name":"pageSize","required":false},{"schema":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[A-Za-z0-9_-]+$"},"in":"query","name":"before","required":false,"description":"Opaque, authenticated, context-bound base64url pagination cursor. Treat it as an indivisible value and restart from the first page when a cursor is invalid or its signing key has retired."},{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Exact UTC-month organization and API-key usage from durable admission counters.","content":{"application/json":{"schema":{"description":"Exact UTC-month organization and API-key usage from durable admission counters.","type":"object","additionalProperties":false,"required":["month","basis","exact","organization","apiKeys"],"properties":{"month":{"type":"string","pattern":"^\\d{4}-(?:0[1-9]|1[0-2])$"},"basis":{"type":"string","enum":["admitted_requests"],"description":"Counts requests admitted into the durable monthly reservation, including later failures."},"exact":{"type":"boolean","enum":[true]},"organization":{"type":"object","additionalProperties":false,"required":["limit","consumed","remaining","exhausted"],"properties":{"limit":{"type":"string","maxLength":19,"pattern":"^[1-9]\\d*$","nullable":true},"consumed":{"type":"string","maxLength":21,"pattern":"^(?:0|[1-9]\\d*)$"},"remaining":{"type":"string","maxLength":19,"pattern":"^\\d+$","nullable":true},"exhausted":{"type":"boolean"}}},"apiKeys":{"type":"object","additionalProperties":false,"required":["items","pageSize","nextCursor"],"properties":{"items":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["id","name","status","configuredLimit","limitSource","limit","consumed","remaining","exhausted"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":2,"maxLength":120},"status":{"type":"string","enum":["active","revoked","expired"]},"configuredLimit":{"type":"string","maxLength":19,"pattern":"^[1-9]\\d*$","nullable":true},"limitSource":{"type":"string","enum":["api_key","organization","unlimited"]},"limit":{"type":"string","maxLength":19,"pattern":"^[1-9]\\d*$","nullable":true},"consumed":{"type":"string","maxLength":21,"pattern":"^(?:0|[1-9]\\d*)$"},"remaining":{"type":"string","maxLength":19,"pattern":"^\\d+$","nullable":true},"exhausted":{"type":"boolean"}}}},"pageSize":{"type":"integer","minimum":1,"maximum":100},"nextCursor":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[A-Za-z0-9_-]+$","description":"Opaque, authenticated, context-bound base64url pagination cursor. Treat it as an indivisible value and restart from the first page when a cursor is invalid or its signing key has retired.","nullable":true}}}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/team":{"get":{"operationId":"listTeamMembers","summary":"List team members and pending invitations","tags":["Team"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["items"],"properties":{"items":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["id","user_id","role","accepted_at","created_at","email","display_name","status"],"properties":{"id":{"type":"string","format":"uuid"},"user_id":{"type":"string","format":"uuid"},"role":{"type":"string","enum":["owner","admin","developer","billing","viewer"]},"accepted_at":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time"},"email":{"type":"string","format":"email"},"display_name":{"type":"string","minLength":1,"maxLength":160,"nullable":true},"status":{"type":"string","enum":["active","invited","suspended","disabled"]}}}}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}},"post":{"operationId":"inviteTeamMember","summary":"Invite a team member","tags":["Team"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"displayName":{"type":"string","minLength":2,"maxLength":160},"role":{"type":"string","enum":["owner","admin","developer","billing","viewer"]}},"required":["email","displayName","role"],"additionalProperties":false}}},"required":true},"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"security":[{"cookieAuth":[]}],"responses":{"201":{"description":"The resource was created.","content":{"application/json":{"schema":{"description":"The resource was created.","type":"object","additionalProperties":false,"required":["member","invitationToken","delivery"],"properties":{"member":{"type":"object","additionalProperties":false,"required":["id","user_id","role","organization_id","accepted_at","created_at","email","display_name","status"],"properties":{"id":{"type":"string","format":"uuid"},"user_id":{"type":"string","format":"uuid"},"role":{"type":"string","enum":["owner","admin","developer","billing","viewer"]},"organization_id":{"type":"string","format":"uuid"},"accepted_at":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time"},"email":{"type":"string","format":"email"},"display_name":{"type":"string","minLength":1,"maxLength":160,"nullable":true},"status":{"type":"string","enum":["invited"]}}},"invitationToken":{"type":"string","pattern":"^inv_[A-Za-z0-9_-]{43}$","nullable":true,"readOnly":true,"description":"Returned only by the explicitly nonproduction manual-delivery mode; production returns null."},"delivery":{"type":"string","enum":["manual","smtp"]}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/team/{id}/invitation/rotate":{"post":{"operationId":"rotateTeamInvitation","summary":"Replace a pending invitation token","tags":["Team"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true},{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["invitationToken","delivery","expiresInSeconds"],"properties":{"invitationToken":{"type":"string","pattern":"^inv_[A-Za-z0-9_-]{43}$","nullable":true,"readOnly":true,"description":"Returned only by the explicitly nonproduction manual-delivery mode; production returns null."},"delivery":{"type":"string","enum":["manual","smtp"],"description":"Channel that accepted the replacement invitation for delivery."},"expiresInSeconds":{"type":"integer","enum":[259200]}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/team/{id}":{"patch":{"operationId":"updateTeamMember","summary":"Update a team member role","tags":["Team"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"type":"string","enum":["owner","admin","developer","billing","viewer"]}},"required":["role"],"additionalProperties":false}}},"required":true},"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true},{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["member"],"properties":{"member":{"type":"object","additionalProperties":false,"required":["id","user_id","role","updated_at"],"properties":{"id":{"type":"string","format":"uuid"},"user_id":{"type":"string","format":"uuid"},"role":{"type":"string","enum":["owner","admin","developer","billing","viewer"]},"updated_at":{"type":"string","format":"date-time"}}}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}},"delete":{"operationId":"removeTeamMember","summary":"Remove a team member or pending invitation","tags":["Team"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true},{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"security":[{"cookieAuth":[]}],"responses":{"204":{"description":"The operation completed successfully."},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/invoices":{"get":{"operationId":"listCustomerInvoices","summary":"List tenant invoices","tags":["Billing"],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","properties":{"items":{"type":"array","items":{"type":"object","additionalProperties":true}}},"required":["items"]}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/invoices/{id}":{"get":{"operationId":"getCustomerInvoice","summary":"Get a tenant invoice","tags":["Billing"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true},{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","properties":{"invoice":{"type":"object","additionalProperties":true}},"required":["invoice"]}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/notification-preferences":{"get":{"operationId":"getNotificationPreferences","summary":"Get notification preferences","tags":["Notifications"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":true}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}},"patch":{"operationId":"updateNotificationPreferences","summary":"Update notification preferences","tags":["Notifications"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"emailEnabled":{"type":"boolean"},"billingEnabled":{"type":"boolean"},"securityEnabled":{"type":"boolean"},"productEnabled":{"type":"boolean"}},"additionalProperties":false,"minProperties":1}}}},"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":true}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/notifications":{"get":{"operationId":"listControlNotifications","summary":"List notifications visible to the current member","tags":["Notifications"],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","properties":{"items":{"type":"array","items":{"type":"object","additionalProperties":true}}},"required":["items"]}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/notifications/{id}/read":{"post":{"operationId":"markControlNotificationRead","summary":"Mark a notification read","tags":["Notifications"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true},{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"security":[{"cookieAuth":[]}],"responses":{"204":{"description":"The operation completed successfully."},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/organizations":{"get":{"operationId":"listPlatformOrganizations","summary":"List tenant organizations","tags":["Platform administration"],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":1000000,"default":1},"in":"query","name":"page","required":false},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"in":"query","name":"pageSize","required":false},{"schema":{"type":"string","maxLength":160},"in":"query","name":"search","required":false},{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["items","page","pageSize","total","totalPages"],"properties":{"items":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["id","name","slug","status","rateLimitPerMinute","monthlyRequestQuota","monthlyGgrLimitCents","allowedCurrencies","allowedGamePrefixes","allowedGameIds","createdAt","updatedAt"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":2,"maxLength":160},"slug":{"type":"string","minLength":1,"maxLength":63},"status":{"type":"string","enum":["active","suspended","disabled"]},"rateLimitPerMinute":{"type":"integer","minimum":1,"maximum":100000},"monthlyRequestQuota":{"type":"string","maxLength":19,"pattern":"^\\d+$","nullable":true},"monthlyGgrLimitCents":{"type":"string","maxLength":19,"pattern":"^\\d+$","nullable":true},"allowedCurrencies":{"type":"array","items":{"type":"string","pattern":"^[A-Z]{3}$"}},"allowedGamePrefixes":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"allowedGameIds":{"type":"array","maxItems":1000,"uniqueItems":true,"description":"Exact game allowlist. Empty means every game under the permitted provider prefixes.","items":{"type":"string","minLength":3,"maxLength":255,"pattern":"^[A-Za-z0-9_-]+/[^\\u0000-\\u001f\\u007f]+$"}},"memberCount":{"type":"integer","minimum":0},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}},"page":{"type":"integer","minimum":1},"pageSize":{"type":"integer","minimum":1,"maximum":100},"total":{"type":"integer","minimum":0},"totalIsExact":{"type":"boolean","description":"False when total is the bounded lower estimate 10001."},"totalPages":{"type":"integer","minimum":0},"nextCursor":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[A-Za-z0-9_-]+$","description":"Opaque, authenticated, context-bound base64url pagination cursor. Treat it as an indivisible value and restart from the first page when a cursor is invalid or its signing key has retired.","nullable":true}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}},"post":{"operationId":"createPlatformOrganization","summary":"Provision a tenant organization and owner","tags":["Platform administration"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":160},"slug":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"allowedCurrencies":{"minItems":1,"maxItems":64,"type":"array","items":{"type":"string","minLength":3,"maxLength":3,"pattern":"^[A-Z]{3}$"},"uniqueItems":true},"allowedGamePrefixes":{"minItems":1,"maxItems":200,"type":"array","items":{"type":"string","minLength":1,"maxLength":64,"pattern":"^(?:\\*|[A-Za-z0-9_-]+)$"},"uniqueItems":true,"description":"Provider prefixes. The wildcard * must be the only entry when used."},"allowedGameIds":{"maxItems":1000,"type":"array","items":{"type":"string","minLength":3,"maxLength":255,"pattern":"^[A-Za-z0-9_-]+/[^\\u0000-\\u001f\\u007f]+$"},"nullable":true,"uniqueItems":true,"description":"Optional exact-game restriction. Null or an empty array clears the restriction; nonempty values contain up to 1000 case-sensitive provider/opaque-path IDs."},"rateLimitPerMinute":{"default":60,"type":"integer","minimum":1,"maximum":100000},"monthlyRequestQuota":{"type":"string","maxLength":19,"pattern":"^[1-9]\\d*$","default":null,"nullable":true,"description":"Canonical decimal string within PostgreSQL bigint range; represented as text to preserve precision."},"monthlyGgrLimitCents":{"type":"string","maxLength":19,"pattern":"^(?:0|[1-9]\\d*)$","default":null,"nullable":true,"description":"Canonical decimal string within PostgreSQL bigint range; represented as text to preserve precision."},"owner":{"type":"object","properties":{"email":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"displayName":{"type":"string","minLength":2,"maxLength":160},"password":{"type":"string","minLength":8,"maxLength":1024}},"required":["email","displayName","password"],"additionalProperties":false}},"required":["name","slug","allowedCurrencies","allowedGamePrefixes","owner"],"additionalProperties":false}}},"required":true},"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"security":[{"cookieAuth":[]}],"responses":{"201":{"description":"The resource was created.","content":{"application/json":{"schema":{"description":"The resource was created.","type":"object","additionalProperties":false,"required":["organization","owner"],"properties":{"organization":{"type":"object","additionalProperties":false,"required":["id","name","slug","status","rateLimitPerMinute","monthlyRequestQuota","monthlyGgrLimitCents","allowedCurrencies","allowedGamePrefixes","allowedGameIds","createdAt","updatedAt"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":2,"maxLength":160},"slug":{"type":"string","minLength":1,"maxLength":63},"status":{"type":"string","enum":["active","suspended","disabled"]},"rateLimitPerMinute":{"type":"integer","minimum":1,"maximum":100000},"monthlyRequestQuota":{"type":"string","maxLength":19,"pattern":"^\\d+$","nullable":true},"monthlyGgrLimitCents":{"type":"string","maxLength":19,"pattern":"^\\d+$","nullable":true},"allowedCurrencies":{"type":"array","items":{"type":"string","pattern":"^[A-Z]{3}$"}},"allowedGamePrefixes":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"allowedGameIds":{"type":"array","maxItems":1000,"uniqueItems":true,"description":"Exact game allowlist. Empty means every game under the permitted provider prefixes.","items":{"type":"string","minLength":3,"maxLength":255,"pattern":"^[A-Za-z0-9_-]+/[^\\u0000-\\u001f\\u007f]+$"}},"memberCount":{"type":"integer","minimum":0},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"owner":{"type":"object","additionalProperties":false,"required":["id","email","created","passwordApplied","passwordChangeRequired","provisionedPasswordExpiresAt"],"properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string","format":"email"},"created":{"type":"boolean"},"passwordApplied":{"type":"boolean"},"passwordChangeRequired":{"type":"boolean"},"provisionedPasswordExpiresAt":{"type":"string","format":"date-time","nullable":true}}}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/organizations/{id}/owner-credential":{"get":{"operationId":"getProvisionedOwnerCredential","summary":"Inspect a provisioned owner temporary credential","tags":["Platform administration"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true},{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["credential"],"properties":{"credential":{"type":"object","additionalProperties":false,"required":["owner","status","passwordChangeRequired","issuedAt","expiresAt","revokedAt"],"properties":{"owner":{"type":"object","additionalProperties":false,"required":["id","email","displayName"],"properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string","format":"email"},"displayName":{"type":"string","minLength":2,"maxLength":160}}},"status":{"type":"string","enum":["active","expired","revoked","replaced"]},"passwordChangeRequired":{"type":"boolean"},"issuedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"revokedAt":{"type":"string","format":"date-time","nullable":true}},"nullable":true}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}},"delete":{"operationId":"revokeProvisionedOwnerCredential","summary":"Revoke an unused provisioned owner temporary password","tags":["Platform administration"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true},{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["credential"],"properties":{"credential":{"type":"object","additionalProperties":false,"required":["owner","status","passwordChangeRequired","issuedAt","expiresAt","revokedAt"],"properties":{"owner":{"type":"object","additionalProperties":false,"required":["id","email","displayName"],"properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string","format":"email"},"displayName":{"type":"string","minLength":2,"maxLength":160}}},"status":{"type":"string","enum":["active","expired","revoked","replaced"]},"passwordChangeRequired":{"type":"boolean"},"issuedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"revokedAt":{"type":"string","format":"date-time","nullable":true}},"nullable":true}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/organizations/{id}/owner-credential/rotate":{"post":{"operationId":"rotateProvisionedOwnerCredential","summary":"Replace an unused provisioned owner temporary password","tags":["Platform administration"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"password":{"type":"string","minLength":8,"maxLength":1024}},"required":["password"],"additionalProperties":false}}},"required":true},"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true},{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["credential"],"properties":{"credential":{"type":"object","additionalProperties":false,"required":["owner","status","passwordChangeRequired","issuedAt","expiresAt","revokedAt"],"properties":{"owner":{"type":"object","additionalProperties":false,"required":["id","email","displayName"],"properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string","format":"email"},"displayName":{"type":"string","minLength":2,"maxLength":160}}},"status":{"type":"string","enum":["active","expired","revoked","replaced"]},"passwordChangeRequired":{"type":"boolean"},"issuedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"revokedAt":{"type":"string","format":"date-time","nullable":true}},"nullable":true}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/organizations/{id}/containment":{"post":{"operationId":"containPlatformOrganization","summary":"Revoke credentials for a suspended or disabled tenant","tags":["Platform administration"],"description":"Atomically revokes the selected credential classes and records a target-organization audit event. Callback clearing removes the URL plus active and pending signing-secret ciphertext and cannot be undone. No credential material is returned.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"revokeApiKeys":{"type":"boolean"},"revokeCallbackConfiguration":{"type":"boolean"}},"required":["revokeApiKeys","revokeCallbackConfiguration"],"additionalProperties":false,"anyOf":[{"required":["revokeApiKeys"],"properties":{"revokeApiKeys":{"type":"boolean","enum":[true]}}},{"required":["revokeCallbackConfiguration"],"properties":{"revokeCallbackConfiguration":{"type":"boolean","enum":[true]}}}]}}},"required":true},"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true},{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","properties":{"organizationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"organizationStatus":{"type":"string","enum":["suspended","disabled"]},"apiKeysRevoked":{"type":"integer","minimum":0,"maximum":9007199254740991},"callbackConfigurationCleared":{"type":"boolean"},"callbackConfigurationChanged":{"type":"boolean"}},"required":["organizationId","organizationStatus","apiKeysRevoked","callbackConfigurationCleared","callbackConfigurationChanged"],"additionalProperties":false}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/organizations/{id}/disable":{"post":{"operationId":"disablePlatformOrganization","summary":"Terminally disable a reconciled tenant","tags":["Platform administration"],"description":"Requires a suspended organization, exact slug confirmation, an external reconciliation reference, explicit open-session and callback-outcome attestations, and no pending or in-flight callback deliveries. The transition is terminal.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"organizationSlug":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"reconciliationReference":{"type":"string","minLength":3,"maxLength":255,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"},"openSessionsReconciled":{"type":"boolean","enum":[true]},"callbackOutcomesReconciled":{"type":"boolean","enum":[true]}},"required":["organizationSlug","reconciliationReference","openSessionsReconciled","callbackOutcomesReconciled"],"additionalProperties":false}}},"required":true},"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true},{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["organization"],"properties":{"organization":{"type":"object","additionalProperties":false,"required":["id","name","slug","status","rateLimitPerMinute","monthlyRequestQuota","monthlyGgrLimitCents","allowedCurrencies","allowedGamePrefixes","allowedGameIds","createdAt","updatedAt"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":2,"maxLength":160},"slug":{"type":"string","minLength":1,"maxLength":63},"status":{"type":"string","enum":["active","suspended","disabled"]},"rateLimitPerMinute":{"type":"integer","minimum":1,"maximum":100000},"monthlyRequestQuota":{"type":"string","maxLength":19,"pattern":"^\\d+$","nullable":true},"monthlyGgrLimitCents":{"type":"string","maxLength":19,"pattern":"^\\d+$","nullable":true},"allowedCurrencies":{"type":"array","items":{"type":"string","pattern":"^[A-Z]{3}$"}},"allowedGamePrefixes":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"allowedGameIds":{"type":"array","maxItems":1000,"uniqueItems":true,"description":"Exact game allowlist. Empty means every game under the permitted provider prefixes.","items":{"type":"string","minLength":3,"maxLength":255,"pattern":"^[A-Za-z0-9_-]+/[^\\u0000-\\u001f\\u007f]+$"}},"memberCount":{"type":"integer","minimum":0},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/organizations/{id}":{"patch":{"operationId":"updatePlatformOrganization","summary":"Suspend/resume a tenant or update limits and entitlements","tags":["Platform administration"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["active","suspended"]},"allowedCurrencies":{"minItems":1,"maxItems":64,"type":"array","items":{"type":"string","minLength":3,"maxLength":3,"pattern":"^[A-Z]{3}$"},"uniqueItems":true},"allowedGamePrefixes":{"minItems":1,"maxItems":200,"type":"array","items":{"type":"string","minLength":1,"maxLength":64,"pattern":"^(?:\\*|[A-Za-z0-9_-]+)$"},"uniqueItems":true,"description":"Provider prefixes. The wildcard * must be the only entry when used."},"allowedGameIds":{"maxItems":1000,"type":"array","items":{"type":"string","minLength":3,"maxLength":255,"pattern":"^[A-Za-z0-9_-]+/[^\\u0000-\\u001f\\u007f]+$"},"nullable":true,"uniqueItems":true,"description":"Optional exact-game restriction. Null or an empty array clears the restriction; nonempty values contain up to 1000 case-sensitive provider/opaque-path IDs."},"rateLimitPerMinute":{"type":"integer","minimum":1,"maximum":100000},"monthlyRequestQuota":{"type":"string","maxLength":19,"pattern":"^[1-9]\\d*$","nullable":true,"description":"Canonical decimal string within PostgreSQL bigint range; represented as text to preserve precision."},"monthlyGgrLimitCents":{"type":"string","maxLength":19,"pattern":"^(?:0|[1-9]\\d*)$","nullable":true,"description":"Canonical decimal string within PostgreSQL bigint range; represented as text to preserve precision."}},"additionalProperties":false,"minProperties":1}}}},"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true},{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["organization"],"properties":{"organization":{"type":"object","additionalProperties":false,"required":["id","name","slug","status","rateLimitPerMinute","monthlyRequestQuota","monthlyGgrLimitCents","allowedCurrencies","allowedGamePrefixes","allowedGameIds","createdAt","updatedAt"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":2,"maxLength":160},"slug":{"type":"string","minLength":1,"maxLength":63},"status":{"type":"string","enum":["active","suspended","disabled"]},"rateLimitPerMinute":{"type":"integer","minimum":1,"maximum":100000},"monthlyRequestQuota":{"type":"string","maxLength":19,"pattern":"^\\d+$","nullable":true},"monthlyGgrLimitCents":{"type":"string","maxLength":19,"pattern":"^\\d+$","nullable":true},"allowedCurrencies":{"type":"array","items":{"type":"string","pattern":"^[A-Z]{3}$"}},"allowedGamePrefixes":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"allowedGameIds":{"type":"array","maxItems":1000,"uniqueItems":true,"description":"Exact game allowlist. Empty means every game under the permitted provider prefixes.","items":{"type":"string","minLength":3,"maxLength":255,"pattern":"^[A-Za-z0-9_-]+/[^\\u0000-\\u001f\\u007f]+$"}},"memberCount":{"type":"integer","minimum":0},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/players":{"get":{"operationId":"listControlPlayers","summary":"List tenant players","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":101,"default":1},"in":"query","name":"page","required":false},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"in":"query","name":"pageSize","required":false},{"schema":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[A-Za-z0-9_-]+$"},"in":"query","name":"before","required":false,"description":"Opaque, authenticated, context-bound base64url pagination cursor. Treat it as an indivisible value and restart from the first page when a cursor is invalid or its signing key has retired."},{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["items","page","pageSize","total","totalPages"],"properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"username":{"type":"string","minLength":1,"maxLength":128},"currency":{"type":"string","minLength":3,"maxLength":3,"pattern":"^[A-Z]{3}$"},"status":{"type":"string","enum":["active","blocked"]},"lastSeenAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","nullable":true},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","username","currency","status","lastSeenAt","createdAt","updatedAt"],"additionalProperties":false}},"page":{"type":"integer","minimum":1},"pageSize":{"type":"integer","minimum":1,"maximum":100},"total":{"type":"integer","minimum":0},"totalIsExact":{"type":"boolean","description":"False when total is the bounded lower estimate 10001."},"totalPages":{"type":"integer","minimum":0},"nextCursor":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[A-Za-z0-9_-]+$","description":"Opaque, authenticated, context-bound base64url pagination cursor. Treat it as an indivisible value and restart from the first page when a cursor is invalid or its signing key has retired.","nullable":true}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/transactions":{"get":{"operationId":"listControlTransactions","summary":"List tenant financial transactions","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":101,"default":1},"in":"query","name":"page","required":false},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"in":"query","name":"pageSize","required":false},{"schema":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[A-Za-z0-9_-]+$"},"in":"query","name":"before","required":false,"description":"Opaque, authenticated, context-bound base64url pagination cursor. Treat it as an indivisible value and restart from the first page when a cursor is invalid or its signing key has retired."},{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["items","page","pageSize","total","totalPages"],"properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"playerId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","nullable":true},"playerUsername":{"type":"string","minLength":1,"maxLength":128,"nullable":true},"externalTransactionId":{"type":"string","minLength":1,"maxLength":255,"nullable":true},"action":{"type":"string","enum":["debit","credit"]},"transactionType":{"type":"string","enum":["spin","bonus_fs"],"nullable":true},"rollback":{"type":["boolean","null"]},"amount":{"type":"string","pattern":"^\\d+$"},"currency":{"type":"string","minLength":3,"maxLength":3,"pattern":"^[A-Z]{3}$"},"status":{"type":"string","enum":["received","forwarding","delivered","failed","rejected"]},"responseErrorCode":{"type":"integer","minimum":0,"maximum":2,"nullable":true},"receivedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"completedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","nullable":true}},"required":["id","playerId","playerUsername","externalTransactionId","action","transactionType","rollback","amount","currency","status","responseErrorCode","receivedAt","completedAt"],"additionalProperties":false}},"page":{"type":"integer","minimum":1},"pageSize":{"type":"integer","minimum":1,"maximum":100},"total":{"type":"integer","minimum":0},"totalIsExact":{"type":"boolean","description":"False when total is the bounded lower estimate 10001."},"totalPages":{"type":"integer","minimum":0},"nextCursor":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[A-Za-z0-9_-]+$","description":"Opaque, authenticated, context-bound base64url pagination cursor. Treat it as an indivisible value and restart from the first page when a cursor is invalid or its signing key has retired.","nullable":true}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/free-spins":{"get":{"operationId":"listControlFreeSpinEvents","summary":"List tenant free-spin operations","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":101,"default":1},"in":"query","name":"page","required":false},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"in":"query","name":"pageSize","required":false},{"schema":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[A-Za-z0-9_-]+$"},"in":"query","name":"before","required":false,"description":"Opaque, authenticated, context-bound base64url pagination cursor. Treat it as an indivisible value and restart from the first page when a cursor is invalid or its signing key has retired."},{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["items","page","pageSize","total","totalPages"],"properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"requestId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"playerId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","nullable":true},"playerUsername":{"type":"string","minLength":1,"maxLength":128,"nullable":true},"operation":{"type":"string","enum":["addFreeRounds","getFreeRounds","deleteFreeRounds","deleteAllFreeRounds"]},"status":{"type":"string","enum":["received","processing","succeeded","failed","rejected","timed_out"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"completedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","nullable":true}},"required":["id","requestId","playerId","playerUsername","operation","status","createdAt","completedAt"],"additionalProperties":false}},"page":{"type":"integer","minimum":1},"pageSize":{"type":"integer","minimum":1,"maximum":100},"total":{"type":"integer","minimum":0},"totalIsExact":{"type":"boolean","description":"False when total is the bounded lower estimate 10001."},"totalPages":{"type":"integer","minimum":0},"nextCursor":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[A-Za-z0-9_-]+$","description":"Opaque, authenticated, context-bound base64url pagination cursor. Treat it as an indivisible value and restart from the first page when a cursor is invalid or its signing key has retired.","nullable":true}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/game-stats":{"get":{"operationId":"listControlGameStats","summary":"List tenant game-operation statistics","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":101,"default":1},"in":"query","name":"page","required":false},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"in":"query","name":"pageSize","required":false},{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["items","page","pageSize","total","totalPages"],"properties":{"items":{"type":"array","items":{"type":"object","properties":{"operation":{"type":"string","enum":["getGame","getGameDemo","getGameList"]},"requests":{"type":"integer","minimum":0,"maximum":9007199254740991},"succeeded":{"type":"integer","minimum":0,"maximum":9007199254740991},"failed":{"type":"integer","minimum":0,"maximum":9007199254740991},"averageLatencyMs":{"type":"integer","minimum":0,"maximum":9007199254740991,"nullable":true}},"required":["operation","requests","succeeded","failed","averageLatencyMs"],"additionalProperties":false}},"page":{"type":"integer","minimum":1},"pageSize":{"type":"integer","minimum":1,"maximum":100},"total":{"type":"integer","minimum":0},"totalIsExact":{"type":"boolean","description":"False when total is the bounded lower estimate 10001."},"totalPages":{"type":"integer","minimum":0},"nextCursor":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[A-Za-z0-9_-]+$","description":"Opaque, authenticated, context-bound base64url pagination cursor. Treat it as an indivisible value and restart from the first page when a cursor is invalid or its signing key has retired.","nullable":true}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/player-stats":{"get":{"operationId":"listControlPlayerStats","summary":"List tenant player statistics","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":101,"default":1},"in":"query","name":"page","required":false},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"in":"query","name":"pageSize","required":false},{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["items","page","pageSize","total","totalPages"],"properties":{"items":{"type":"array","items":{"type":"object","properties":{"playerId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"username":{"type":"string","minLength":1,"maxLength":128},"currency":{"type":"string","minLength":3,"maxLength":3,"pattern":"^[A-Z]{3}$"},"requests":{"type":"integer","minimum":0,"maximum":9007199254740991},"transactions":{"type":"integer","minimum":0,"maximum":9007199254740991},"debited":{"type":"string","pattern":"^\\d+$"},"credited":{"type":"string","pattern":"^\\d+$"},"lastActivityAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","nullable":true}},"required":["playerId","username","currency","requests","transactions","debited","credited","lastActivityAt"],"additionalProperties":false}},"page":{"type":"integer","minimum":1},"pageSize":{"type":"integer","minimum":1,"maximum":100},"total":{"type":"integer","minimum":0},"totalIsExact":{"type":"boolean","description":"False when total is the bounded lower estimate 10001."},"totalPages":{"type":"integer","minimum":0},"nextCursor":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[A-Za-z0-9_-]+$","description":"Opaque, authenticated, context-bound base64url pagination cursor. Treat it as an indivisible value and restart from the first page when a cursor is invalid or its signing key has retired.","nullable":true}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/games/catalogue":{"get":{"operationId":"listCachedGameCatalogue","summary":"List the locally cached game catalogue","tags":["Games"],"parameters":[{"schema":{"type":"string","pattern":"^[A-Z]{3}$"},"in":"query","name":"currency","required":false},{"schema":{"type":"string","maxLength":100},"in":"query","name":"search","required":false},{"schema":{"type":"string","maxLength":120},"in":"query","name":"provider","required":false},{"schema":{"type":"string","maxLength":80},"in":"query","name":"type","required":false},{"schema":{"type":"integer","minimum":1,"maximum":10000},"in":"query","name":"page","required":false},{"schema":{"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","properties":{"available":{"type":"boolean"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"games":{"type":"array","items":{"type":"object","additionalProperties":true}},"providers":{"type":"array","items":{"type":"object","additionalProperties":true}},"pagination":{"type":"object","additionalProperties":true}},"required":["available","currency","games","providers","pagination"]}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/games":{"get":{"operationId":"listControlGames","summary":"List games available to the organization","tags":["Games"],"description":"Returns the provider catalogue after applying the organization currency and game entitlements. During a release hold it returns an explicit unavailable state without contacting the upstream provider.","parameters":[{"schema":{"type":"string","pattern":"^[A-Z]{3}$"},"in":"query","name":"currency","required":false},{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","properties":{"available":{"type":"boolean"},"reason":{"type":"string"},"message":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"games":{"type":"array","items":{"type":"object","additionalProperties":true}}},"required":["available"]}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/support/tickets":{"get":{"operationId":"listSupportTickets","summary":"List support tickets","tags":["Support"],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["items"],"properties":{"items":{"type":"array","items":{"type":"object","additionalProperties":true}}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}},"post":{"operationId":"createSupportTicket","summary":"Open a support ticket","tags":["Support"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"subject":{"type":"string","minLength":1,"maxLength":160},"category":{"type":"string","enum":["account","billing","technical","provider","other"]},"priority":{"default":"normal","type":"string","enum":["low","normal","high","urgent"]},"description":{"type":"string","minLength":1,"maxLength":5000}},"required":["subject","category","description"],"additionalProperties":false}}},"required":true},"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"security":[{"cookieAuth":[]}],"responses":{"201":{"description":"The resource was created.","content":{"application/json":{"schema":{"description":"The resource was created.","type":"object","additionalProperties":false,"required":["ticket"],"properties":{"ticket":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}},"/control/v1/telegram-bot":{"get":{"operationId":"getTelegramBotConnection","summary":"Get the Telegram bot connection","tags":["Notifications"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["connection"],"properties":{"connection":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}},"put":{"operationId":"connectTelegramBot","summary":"Connect and verify a Telegram bot","tags":["Notifications"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"botToken":{"type":"string","pattern":"^\\d{6,12}:[A-Za-z0-9_-]{30,80}$"},"chatId":{"type":"string","pattern":"^-?\\d{1,20}$"}},"required":["botToken","chatId"],"additionalProperties":false}}},"required":true},"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"security":[{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"description":"Successful response.","type":"object","additionalProperties":false,"required":["connection"],"properties":{"connection":{"type":"object","additionalProperties":true}}}}}},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}},"delete":{"operationId":"disconnectTelegramBot","summary":"Disconnect the Telegram bot","tags":["Notifications"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"header","name":"x-organization-id","required":false,"description":"Selects one active organization membership for this session. If omitted, the default membership is used."},{"schema":{"type":"string","format":"uri"},"in":"header","name":"origin","required":true,"description":"Exact browser origin. It must be present in the configured control-origin allowlist."},{"schema":{"type":"string","minLength":32,"maxLength":128},"in":"header","name":"x-csrf-token","required":true,"description":"Raw CSRF token returned by login/session. It must match the signed CSRF cookie."}],"security":[{"cookieAuth":[]}],"responses":{"204":{"description":"The operation completed successfully."},"400":{"description":"The request is malformed or failed validation.","content":{"application/json":{"schema":{"description":"The request is malformed or failed validation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"401":{"description":"A valid control-session cookie is required.","content":{"application/json":{"schema":{"description":"A valid control-session cookie is required.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"403":{"description":"The caller is not permitted to perform this operation.","content":{"application/json":{"schema":{"description":"The caller is not permitted to perform this operation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"404":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"description":"The requested resource was not found.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"409":{"description":"The request conflicts with the current resource state.","content":{"application/json":{"schema":{"description":"The request conflicts with the current resource state.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"429":{"description":"The operation was rate limited.","content":{"application/json":{"schema":{"description":"The operation was rate limited.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"500":{"description":"An unexpected gateway error occurred.","content":{"application/json":{"schema":{"description":"An unexpected gateway error occurred.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}},"503":{"description":"A required gateway dependency is temporarily unavailable.","content":{"application/json":{"schema":{"description":"A required gateway dependency is temporarily unavailable.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","minLength":1,"maxLength":2000},"requestId":{"type":"string","minLength":1,"maxLength":200},"details":{}}}}}}}}}}}},"servers":[{"url":"https://aggregatornetwork.com"}],"tags":[{"name":"Proxy"},{"name":"Provider callbacks"},{"name":"Public catalogue"},{"name":"Control authentication"},{"name":"Organization"},{"name":"API keys"},{"name":"Dashboard"},{"name":"Request logs"},{"name":"Callbacks"},{"name":"Team"},{"name":"Platform administration"},{"name":"Audit"},{"name":"Billing"},{"name":"Notifications"},{"name":"Binance Pay"}]}