@faable/auth-sdk 2.7.90 → 2.7.92
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/FaableAuthApi.d.ts +13 -0
- package/dist/api/generated-client.d.ts +141 -32
- package/dist/api/types.d.ts +961 -18
- package/dist/version.js +2 -2
- package/package.json +1 -1
- package/spec/openapi.json +1925 -4
package/spec/openapi.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"info": {
|
|
4
4
|
"title": "@faablecloud/auth",
|
|
5
5
|
"description": "Auth Platform made by Faable. Manage Users and Roles",
|
|
6
|
-
"version": "2.
|
|
6
|
+
"version": "2.73.1",
|
|
7
7
|
"license": {
|
|
8
8
|
"name": "private",
|
|
9
9
|
"url": "https://faable.com/docs/platform/privacy-policy"
|
|
@@ -536,6 +536,10 @@
|
|
|
536
536
|
"type": "boolean",
|
|
537
537
|
"description": "When true, anyone can register a client with `POST /oidc/register` (OIDC Dynamic Client Registration / RFC 7591) and the discovery document advertises `registration_endpoint`. Off by default: an open registration lets anyone create a client with their own `redirect_uri`."
|
|
538
538
|
},
|
|
539
|
+
"client_id_metadata_documents_enabled": {
|
|
540
|
+
"type": "boolean",
|
|
541
|
+
"description": "When true, /authorize accepts a `client_id` that is an https URL serving a Client ID Metadata Document (the MCP authorization way to identify a client without registering it). Such clients always see the consent screen. Off by default."
|
|
542
|
+
},
|
|
539
543
|
"canonical_host": {
|
|
540
544
|
"type": "string",
|
|
541
545
|
"description": "The one host this tenant's OIDC issuer and discovery document are always minted with, regardless of which host actually served the request — must be the account's own platform host or one of its verified custom domains. `/authorize` and `/logout` 302 here from any other host of the tenant. Unset (the default): every URL uses whatever host served the request, as before this field existed. Changing it can invalidate every WebAuthn passkey already enrolled unless `webauthn_rp_id` already covers the new host.",
|
|
@@ -1537,6 +1541,17 @@
|
|
|
1537
1541
|
"token_endpoint_auth_method": {
|
|
1538
1542
|
"type": "string"
|
|
1539
1543
|
},
|
|
1544
|
+
"consent_required": {
|
|
1545
|
+
"type": "boolean",
|
|
1546
|
+
"description": "When true, /authorize never issues a code in silence for this client: the End-User approves it on the consent screen first. Set on clients the tenant did not create (Client ID Metadata Documents, dynamic registration)."
|
|
1547
|
+
},
|
|
1548
|
+
"metadata_document_url": {
|
|
1549
|
+
"type": "string",
|
|
1550
|
+
"description": "For a client identified by a Client ID Metadata Document: the URL (also its client_id) its metadata was fetched from."
|
|
1551
|
+
},
|
|
1552
|
+
"registered_dynamically": {
|
|
1553
|
+
"type": "boolean"
|
|
1554
|
+
},
|
|
1540
1555
|
"application_type": {
|
|
1541
1556
|
"type": "string"
|
|
1542
1557
|
},
|
|
@@ -4136,6 +4151,59 @@
|
|
|
4136
4151
|
"type": "boolean",
|
|
4137
4152
|
"description": "When true, the API is eligible to be the target of a `refresh_token` (i.e. clients can request `offline_access` against it)."
|
|
4138
4153
|
},
|
|
4154
|
+
"consent_options": {
|
|
4155
|
+
"type": "object",
|
|
4156
|
+
"required": [
|
|
4157
|
+
"claim",
|
|
4158
|
+
"label",
|
|
4159
|
+
"url",
|
|
4160
|
+
"audience"
|
|
4161
|
+
],
|
|
4162
|
+
"properties": {
|
|
4163
|
+
"claim": {
|
|
4164
|
+
"type": "string",
|
|
4165
|
+
"pattern": "^[a-z][a-z0-9_]{0,31}$",
|
|
4166
|
+
"description": "Access token claim that carries the chosen id."
|
|
4167
|
+
},
|
|
4168
|
+
"label": {
|
|
4169
|
+
"type": "string",
|
|
4170
|
+
"maxLength": 60,
|
|
4171
|
+
"description": "What the screen asks for, e.g. \"Project\"."
|
|
4172
|
+
},
|
|
4173
|
+
"url": {
|
|
4174
|
+
"type": "string",
|
|
4175
|
+
"pattern": "^https://",
|
|
4176
|
+
"description": "GET endpoint of the resource server that lists the choices."
|
|
4177
|
+
},
|
|
4178
|
+
"audience": {
|
|
4179
|
+
"type": "string",
|
|
4180
|
+
"description": "Identifier of a registered API the listing token is issued for (usually the resource server behind `url`)."
|
|
4181
|
+
},
|
|
4182
|
+
"scope": {
|
|
4183
|
+
"type": "string",
|
|
4184
|
+
"description": "Space-separated permissions of the listing token. The token is delegated (`act`): the resource server sees auth acting for the user with only these, never the user’s full powers — an admin is listed their own choices, not the whole platform’s."
|
|
4185
|
+
}
|
|
4186
|
+
},
|
|
4187
|
+
"nullable": true
|
|
4188
|
+
},
|
|
4189
|
+
"delegation": {
|
|
4190
|
+
"type": "object",
|
|
4191
|
+
"required": [
|
|
4192
|
+
"client_id",
|
|
4193
|
+
"audience"
|
|
4194
|
+
],
|
|
4195
|
+
"properties": {
|
|
4196
|
+
"client_id": {
|
|
4197
|
+
"type": "string",
|
|
4198
|
+
"description": "The confidential client of the resource server allowed to exchange."
|
|
4199
|
+
},
|
|
4200
|
+
"audience": {
|
|
4201
|
+
"type": "string",
|
|
4202
|
+
"description": "Identifier of the registered API the new token is for."
|
|
4203
|
+
}
|
|
4204
|
+
},
|
|
4205
|
+
"nullable": true
|
|
4206
|
+
},
|
|
4139
4207
|
"skip_consent": {
|
|
4140
4208
|
"type": "boolean",
|
|
4141
4209
|
"description": "When true, the consent prompt is skipped for first-party clients (clients owned by the same tenant as the API)."
|
|
@@ -4256,6 +4324,57 @@
|
|
|
4256
4324
|
"type": "boolean",
|
|
4257
4325
|
"description": "When true, clients can request `offline_access` and receive a refresh_token for this API."
|
|
4258
4326
|
},
|
|
4327
|
+
"consent_options": {
|
|
4328
|
+
"type": "object",
|
|
4329
|
+
"required": [
|
|
4330
|
+
"claim",
|
|
4331
|
+
"label",
|
|
4332
|
+
"url",
|
|
4333
|
+
"audience"
|
|
4334
|
+
],
|
|
4335
|
+
"properties": {
|
|
4336
|
+
"claim": {
|
|
4337
|
+
"type": "string",
|
|
4338
|
+
"pattern": "^[a-z][a-z0-9_]{0,31}$",
|
|
4339
|
+
"description": "Access token claim that carries the chosen id."
|
|
4340
|
+
},
|
|
4341
|
+
"label": {
|
|
4342
|
+
"type": "string",
|
|
4343
|
+
"maxLength": 60,
|
|
4344
|
+
"description": "What the screen asks for, e.g. \"Project\"."
|
|
4345
|
+
},
|
|
4346
|
+
"url": {
|
|
4347
|
+
"type": "string",
|
|
4348
|
+
"pattern": "^https://",
|
|
4349
|
+
"description": "GET endpoint of the resource server that lists the choices."
|
|
4350
|
+
},
|
|
4351
|
+
"audience": {
|
|
4352
|
+
"type": "string",
|
|
4353
|
+
"description": "Identifier of a registered API the listing token is issued for (usually the resource server behind `url`)."
|
|
4354
|
+
},
|
|
4355
|
+
"scope": {
|
|
4356
|
+
"type": "string",
|
|
4357
|
+
"description": "Space-separated permissions of the listing token. The token is delegated (`act`): the resource server sees auth acting for the user with only these, never the user’s full powers — an admin is listed their own choices, not the whole platform’s."
|
|
4358
|
+
}
|
|
4359
|
+
}
|
|
4360
|
+
},
|
|
4361
|
+
"delegation": {
|
|
4362
|
+
"type": "object",
|
|
4363
|
+
"required": [
|
|
4364
|
+
"client_id",
|
|
4365
|
+
"audience"
|
|
4366
|
+
],
|
|
4367
|
+
"properties": {
|
|
4368
|
+
"client_id": {
|
|
4369
|
+
"type": "string",
|
|
4370
|
+
"description": "The confidential client of the resource server allowed to exchange."
|
|
4371
|
+
},
|
|
4372
|
+
"audience": {
|
|
4373
|
+
"type": "string",
|
|
4374
|
+
"description": "Identifier of the registered API the new token is for."
|
|
4375
|
+
}
|
|
4376
|
+
}
|
|
4377
|
+
},
|
|
4259
4378
|
"skip_consent": {
|
|
4260
4379
|
"type": "boolean",
|
|
4261
4380
|
"description": "When true, skip the consent prompt for first-party clients."
|
|
@@ -4340,6 +4459,59 @@
|
|
|
4340
4459
|
"type": "boolean",
|
|
4341
4460
|
"description": "When true, clients can request `offline_access` and receive a refresh_token for this API."
|
|
4342
4461
|
},
|
|
4462
|
+
"consent_options": {
|
|
4463
|
+
"type": "object",
|
|
4464
|
+
"required": [
|
|
4465
|
+
"claim",
|
|
4466
|
+
"label",
|
|
4467
|
+
"url",
|
|
4468
|
+
"audience"
|
|
4469
|
+
],
|
|
4470
|
+
"properties": {
|
|
4471
|
+
"claim": {
|
|
4472
|
+
"type": "string",
|
|
4473
|
+
"pattern": "^[a-z][a-z0-9_]{0,31}$",
|
|
4474
|
+
"description": "Access token claim that carries the chosen id."
|
|
4475
|
+
},
|
|
4476
|
+
"label": {
|
|
4477
|
+
"type": "string",
|
|
4478
|
+
"maxLength": 60,
|
|
4479
|
+
"description": "What the screen asks for, e.g. \"Project\"."
|
|
4480
|
+
},
|
|
4481
|
+
"url": {
|
|
4482
|
+
"type": "string",
|
|
4483
|
+
"pattern": "^https://",
|
|
4484
|
+
"description": "GET endpoint of the resource server that lists the choices."
|
|
4485
|
+
},
|
|
4486
|
+
"audience": {
|
|
4487
|
+
"type": "string",
|
|
4488
|
+
"description": "Identifier of a registered API the listing token is issued for (usually the resource server behind `url`)."
|
|
4489
|
+
},
|
|
4490
|
+
"scope": {
|
|
4491
|
+
"type": "string",
|
|
4492
|
+
"description": "Space-separated permissions of the listing token. The token is delegated (`act`): the resource server sees auth acting for the user with only these, never the user’s full powers — an admin is listed their own choices, not the whole platform’s."
|
|
4493
|
+
}
|
|
4494
|
+
},
|
|
4495
|
+
"nullable": true
|
|
4496
|
+
},
|
|
4497
|
+
"delegation": {
|
|
4498
|
+
"type": "object",
|
|
4499
|
+
"required": [
|
|
4500
|
+
"client_id",
|
|
4501
|
+
"audience"
|
|
4502
|
+
],
|
|
4503
|
+
"properties": {
|
|
4504
|
+
"client_id": {
|
|
4505
|
+
"type": "string",
|
|
4506
|
+
"description": "The confidential client of the resource server allowed to exchange."
|
|
4507
|
+
},
|
|
4508
|
+
"audience": {
|
|
4509
|
+
"type": "string",
|
|
4510
|
+
"description": "Identifier of the registered API the new token is for."
|
|
4511
|
+
}
|
|
4512
|
+
},
|
|
4513
|
+
"nullable": true
|
|
4514
|
+
},
|
|
4343
4515
|
"skip_consent": {
|
|
4344
4516
|
"type": "boolean",
|
|
4345
4517
|
"description": "When true, skip the consent prompt for first-party clients."
|
|
@@ -6779,7 +6951,6 @@
|
|
|
6779
6951
|
"type": "object",
|
|
6780
6952
|
"required": [
|
|
6781
6953
|
"client_id",
|
|
6782
|
-
"client_secret",
|
|
6783
6954
|
"client_id_issued_at",
|
|
6784
6955
|
"client_secret_expires_at",
|
|
6785
6956
|
"redirect_uris",
|
|
@@ -7523,6 +7694,10 @@
|
|
|
7523
7694
|
"type": "boolean",
|
|
7524
7695
|
"nullable": true
|
|
7525
7696
|
},
|
|
7697
|
+
"client_id_metadata_documents_enabled": {
|
|
7698
|
+
"type": "boolean",
|
|
7699
|
+
"nullable": true
|
|
7700
|
+
},
|
|
7526
7701
|
"canonical_host": {
|
|
7527
7702
|
"type": "string",
|
|
7528
7703
|
"nullable": true
|
|
@@ -7858,7 +8033,7 @@
|
|
|
7858
8033
|
},
|
|
7859
8034
|
"ErrorCode": {
|
|
7860
8035
|
"type": "string",
|
|
7861
|
-
"description": "Machine-readable error code. One HTTP status per code.\n\n- `bad_request` (400): The request is malformed. `message` says what is wrong.\n- `validation_error` (400): The body, query or path failed schema validation. `details.issues` lists each failing field.\n- `unauthorized` (401): The request carries no valid credentials.\n- `payment_required` (402): The feature is not included in the current plan.\n- `forbidden` (403): The credentials are valid but do not allow this operation.\n- `not_found` (404): The resource does not exist in this account.\n- `method_not_allowed` (405): The HTTP method is not supported on this path.\n- `conflict` (409): The request conflicts with the current state of the resource.\n- `payload_too_large` (413): The request body exceeds the size limit.\n- `unsupported_media_type` (415): The `Content-Type` is not accepted by this endpoint.\n- `unprocessable_entity` (422): The request is well-formed but cannot be processed.\n- `too_many_requests` (429): Rate limit exceeded. Honour the `Retry-After` header.\n- `internal_error` (500): Unexpected server error. Retry later; the request id is logged.\n- `already_exists` (400): A resource with the same unique field already exists (for a user, usually `email`). `details.fields` names the field.\n- `invalid_id` (400): The id in the path is not a valid id for this resource.\n- `account_not_found` (404): No Auth Account matches the request (domain, header or token).\n- `invalid_query` (400): The `?query=` FaableQL expression could not be parsed.\n- `search_not_supported` (400): This resource does not support `?search=`.\n- `invalid_expand` (400): An `?expand=` path is not allowed on this resource.\n- `access_denied` (401): The caller may not access this row (ownership or machine-to-machine restriction).\n- `insufficient_scope` (403): The token lacks a scope this operation requires. `message` names it.\n- `team_required` (400): An Auth Account must belong to a project (team).\n- `account_limit_reached` (409): The project already has the maximum number of Auth Accounts.\n- `invalid_project_id` (400): The project id is not of the form `project_<hex>` or `team_<hex>`.\n- `account_transfer_refused` (409): The Auth Account cannot be moved to that project. `details.blockers` lists why.\n- `email_sender_domain_not_allowed` (400): The sender address is not in a domain this platform signs email for (AUTH_EMAIL_SENDER_DOMAINS).\n- `plan_required` (402): The setting requires a higher plan. `message` says which.\n- `invalid_canonical_host` (400): `canonical_host` must be this account's own platform host or one of its verified custom domains.\n- `canonical_host_breaks_passkeys` (400): `canonical_host` is outside the account's current WebAuthn RP ID — every passkey already enrolled would stop working. Set `webauthn_rp_id` in the same request to a suffix that covers both.\n- `not_logged_in` (401): There is no signed-in session for this request.\n- `session_already_revoked` (409): The session was already revoked.\n- `invalid_token` (401): The bearer token is missing, malformed, expired or has no subject.\n- `not_owner` (403): The caller may only perform this operation on their own user.\n- `user_suspended` (403): The user is suspended and cannot sign in or be modified.\n- `invalid_credentials` (400): The email/username or password is incorrect.\n- `login_denied` (401): A post-login Action denied the sign-in. `message` carries the reason it gave. On token grants it is a 403 with `error: invalid_grant`.\n- `signup_denied` (403): A pre-signup Action or an active block denied the sign-up. `message` carries the reason.\n- `client_credentials_denied` (401): An Action denied the client_credentials grant. `message` carries the reason.\n- `m2m_quota_exceeded` (402): The project used the machine-to-machine tokens its plan includes this month. Free is capped; Hobby and Pro are billed per token instead.\n- `signup_disabled` (403): Self-service sign-up is disabled on this connection.\n- `email_taken` (409): Another user in this account already uses that email.\n- `username_taken` (409): Another user of this database connection already uses that username.\n- `invalid_username` (400): The username is empty, or contains an `@` or whitespace. `message` says which.\n- `invalid_email` (400): The email address is not valid.\n- `invalid_name` (400): The name contains a link. `message` says which field.\n- `same_email` (400): The new email is the same as the current one.\n- `user_has_no_email` (400): The operation needs an email but the user has none.\n- `password_too_weak` (400): The password does not meet the connection policy. `message` lists each unmet rule.\n- `invalid_password_hash` (400): The imported password hash cannot be read, or its cost is above what a login can afford. `message` names the field.\n- `weak_password_hash` (400): The imported password hash uses a fast digest (MD5, SHA-1, SHA-2) or a cost below the minimum. `message` says which.\n- `invalid_code` (400): The verification code is wrong, expired or already used.\n- `invalid_phone` (400): The phone number is not E.164 and could not be resolved with the account default country. Include the country code.\n- `phone_changed` (400): The phone on the user changed after the code was sent. Start again.\n- `phone_already_verified` (409): The user already has a verified phone; the number cannot be swapped from the screen.\n- `sms_unavailable` (409): This account cannot send SMS right now. The suffix says why: `sms_unavailable:plan`, `:quota`, `:provider`.\n- `sms_failed` (409): The SMS provider rejected the message.\n- `invalid_state` (400): The `state` is missing, expired, or does not describe a resumable step.\n- `state_mismatch` (401): The `state` belongs to another account, session, client or ceremony.\n- `invalid_ticket` (400): The ticket does not exist or is not the kind this endpoint accepts.\n- `ticket_used` (400): The ticket was already consumed.\n- `ticket_expired` (400): The ticket is past its expiry.\n- `ticket_not_found` (404): No ticket with that id belongs to this user.\n- `credential_not_found` (404): The user has no password credential on this connection.\n- `invalid_link` (400): The magic link is malformed.\n- `expired_link` (400): The magic link token was not found or has expired.\n- `invalid_otp` (401): The one-time password is wrong or expired.\n- `invalid_client` (400): The `client_id` in the request does not name a client of this account.\n- `client_not_found` (404): No client with that `client_id`.\n- `client_mismatch` (401): The client belongs to a different account.\n- `invalid_client_metadata` (400): Dynamic client registration rejected a field (RFC 7591). `message` names it.\n- `invalid_connection` (400): The connection does not exist, is disabled, or is not of the type this flow needs.\n- `no_database_connection` (400): The tenant has no database connection, so there is nowhere to store a password. Create one and retry.\n- `connection_required` (400): No connection was given and the client has no `default_connection`.\n- `connection_misconfigured` (400): The connection is missing settings needed to talk to its provider.\n- `passwordless_unavailable` (400): No passwordless connection is configured or enabled for this client.\n- `ambiguous_connection` (400): Several connections match; pass `connection_id`.\n- `invalid_redirect_uri` (400): The redirect URI is not registered for the client.\n- `origin_not_allowed` (403): The request `Origin` is not in the client's Allowed Web Origins.\n- `audience_not_found` (403): The `audience` does not name an API registered in this account.\n- `system_resource` (403): The resource is managed by Faable and cannot be modified or deleted.\n- `invalid_request` (400): A required OAuth parameter is missing or two of them are incompatible. `message` says which.\n- `invalid_device_code` (400): The device or user code is invalid or expired.\n- `provider_error` (400): The upstream identity provider returned an error. The suffix is the provider’s own code, when it sent one: `provider_error:bad_refresh_token` (the user must re-authorize), `provider_error:incorrect_client_credentials` (our configuration, the user can do nothing). `details.provider_error_description` carries the provider’s sentence.\n- `identity_already_linked` (409): That external identity is already linked to another user.\n- `identity_link_denied` (409): That external identity cannot be linked to this user.\n- `identity_conflict` (409): The user already has a linked identity for this connection.\n- `identity_orphaned` (400): The identity pointed at a user that no longer exists; it was removed. Sign in again.\n- `no_provider_token` (400): The identity holds no provider access token.\n- `no_refresh_token` (400): The identity holds no provider refresh token, so it cannot be refreshed.\n- `action_unavailable` (401): The Action that paused this login is disabled or belongs elsewhere.\n- `login_flow_misconfigured` (500): The login flow of this account cannot run. `message` carries the node error.\n- `mfa_required` (403): The login needs a second factor that this flow cannot collect, or one is still pending on the session.\n- `step_up_required` (403): Confirm an existing factor before changing your factors.\n- `interaction_required` (403): An Action asked for a redirect on a non-interactive flow.\n- `passkey_login_disabled` (400): Sign in with a passkey is not enabled for this client.\n- `mfa_pending` (401): A second-factor challenge is pending; answer it before continuing.\n- `mfa_invalid_code` (401): The authenticator code did not verify.\n- `mfa_invalid_recovery_code` (401): The recovery code did not verify.\n- `too_many_attempts` (429): Too many wrong codes. Wait a few minutes and try again.\n- `too_many_login_attempts` (429): Too many failed sign-in attempts for this email or username from this network. Wait a few minutes and try again.\n- `totp_not_allowed` (401): This account does not accept authenticator apps.\n- `no_usable_factor` (400): The user has no confirmed second factor to challenge.\n- `factor_not_found` (400): No factor with that id belongs to this user.\n- `factor_already_confirmed` (400): The factor was already confirmed.\n- `invalid_factor` (400): The factor cannot be verified (no secret material).\n- `session_missing` (401): The session that started this login no longer exists.\n- `passkey_verification_failed` (400): The WebAuthn response could not be verified.\n- `no_passkey_enrolled` (400): The user has no passkey to sign in with.\n- `malformed_credential` (400): The WebAuthn credential is malformed.\n- `unknown_passkey` (401): The passkey is not enrolled for this user.\n- `invalid_passkey` (401): The passkey assertion did not verify.\n- `invalid_invite_url` (400): An invite's `accept_url` or `redirect_uri` is not an http(s) URL at an origin of this tenant's client callbacks or `callback_hostnames`, or it carries a fragment.\n- `invite_email_mismatch` (403): The invite is for another email address than the accepting user's. `details.invited_email` shows it masked.\n- `invite_email_unverified` (403): The accepting user's email matches the invite but is not verified yet.\n- `invite_not_found` (404): No invite with that id in this account.\n- `invite_used` (400): The invite was already accepted.\n- `already_member` (400): The user is already a member of the team.\n- `not_a_member` (404): The user is not a member of the team.\n- `registration_disabled` (403): Dynamic client registration is turned off for this tenant. Create the client from the dashboard or the Management API, or turn on `dynamic_client_registration_enabled`.\n- `invalid_email_domain` (400): Not an email domain this organization can claim: it must be a plain domain name (`acme.com`), lowercase, without scheme, path or wildcard.\n- `public_email_domain` (400): A public email provider (gmail.com, outlook.com…) cannot belong to an organization: anyone can have an address there.\n- `organization_domain_not_found` (404): The organization has no such domain.\n- `organization_domain_taken` (409): Another organization of this tenant already verified this domain. A domain belongs to one organization.\n- `organization_domain_unverified` (400): The TXT record was not found or does not hold the expected value yet. `details.record` says what was expected and what resolves now; DNS can take a few minutes to propagate.\n- `plan_unavailable` (503): The plan could not be checked right now, and this setting is only for paid plans. Try again in a minute.\n- `organization_domain_mismatch` (403): This organization's identity provider can only sign in addresses of the organization's verified email domains.\n- `team_not_in_organization` (400): Auto-join can only put people in teams of the same organization. `details.teams` lists the others.\n- `organization_has_no_idp` (400): Requiring SSO needs an identity provider: bind an `oidc` connection to the organization first.\n- `organization_not_found` (404): No organization with that id in this account.\n- `invalid_user` (400): The user does not exist in this account.\n- `not_an_organization_admin` (404): The user is not an admin of the organization.\n- `last_organization_admin` (409): An organization keeps at least one admin. Add another admin before removing this one.\n- `team_id_unavailable` (409): The team id cannot be used in this tenant. Pick another id or let the API generate one.\n- `use_team_member_route` (400): This generic route cannot create memberships. Use `POST /team/{team_id}/member` for team members or `POST /role/{role_id}/users` for role grants.\n- `role_not_found` (404): No role with that id in this account.\n- `invalid_role` (400): The role belongs to another account.\n- `flow_not_found` (400): The login flow does not exist in this account.\n- `revision_not_found` (404): The revision is not in the flow history.\n- `invalid_webhook_event` (400): An event is not in the webhook event catalog. `message` and `details.valid_events` list the valid ones.\n- `invalid_webhook_url` (400): The webhook URL must be an absolute `https` URL.\n- `not_a_webhook` (400): The operation only applies to `webhook` subscriptions.\n- `delivery_not_found` (404): No webhook delivery with that id for this subscription.\n- `delivery_in_progress` (409): The delivery is being attempted right now; retry the redeliver in a minute.",
|
|
8036
|
+
"description": "Machine-readable error code. One HTTP status per code.\n\n- `bad_request` (400): The request is malformed. `message` says what is wrong.\n- `validation_error` (400): The body, query or path failed schema validation. `details.issues` lists each failing field.\n- `unauthorized` (401): The request carries no valid credentials.\n- `payment_required` (402): The feature is not included in the current plan.\n- `forbidden` (403): The credentials are valid but do not allow this operation.\n- `not_found` (404): The resource does not exist in this account.\n- `method_not_allowed` (405): The HTTP method is not supported on this path.\n- `conflict` (409): The request conflicts with the current state of the resource.\n- `payload_too_large` (413): The request body exceeds the size limit.\n- `unsupported_media_type` (415): The `Content-Type` is not accepted by this endpoint.\n- `unprocessable_entity` (422): The request is well-formed but cannot be processed.\n- `too_many_requests` (429): Rate limit exceeded. Honour the `Retry-After` header.\n- `internal_error` (500): Unexpected server error. Retry later; the request id is logged.\n- `already_exists` (400): A resource with the same unique field already exists (for a user, usually `email`). `details.fields` names the field.\n- `invalid_id` (400): The id in the path is not a valid id for this resource.\n- `account_not_found` (404): No Auth Account matches the request (domain, header or token).\n- `invalid_query` (400): The `?query=` FaableQL expression could not be parsed.\n- `search_not_supported` (400): This resource does not support `?search=`.\n- `invalid_expand` (400): An `?expand=` path is not allowed on this resource.\n- `access_denied` (401): The caller may not access this row (ownership or machine-to-machine restriction).\n- `insufficient_scope` (403): The token lacks a scope this operation requires. `message` names it.\n- `team_required` (400): An Auth Account must belong to a project (team).\n- `account_limit_reached` (409): The project already has the maximum number of Auth Accounts.\n- `invalid_project_id` (400): The project id is not of the form `project_<hex>` or `team_<hex>`.\n- `account_transfer_refused` (409): The Auth Account cannot be moved to that project. `details.blockers` lists why.\n- `email_sender_domain_not_allowed` (400): The sender address is not in a domain this platform signs email for (AUTH_EMAIL_SENDER_DOMAINS).\n- `plan_required` (402): The setting requires a higher plan. `message` says which.\n- `invalid_canonical_host` (400): `canonical_host` must be this account's own platform host or one of its verified custom domains.\n- `canonical_host_breaks_passkeys` (400): `canonical_host` is outside the account's current WebAuthn RP ID — every passkey already enrolled would stop working. Set `webauthn_rp_id` in the same request to a suffix that covers both.\n- `not_logged_in` (401): There is no signed-in session for this request.\n- `session_already_revoked` (409): The session was already revoked.\n- `invalid_token` (401): The bearer token is missing, malformed, expired or has no subject.\n- `not_owner` (403): The caller may only perform this operation on their own user.\n- `user_suspended` (403): The user is suspended and cannot sign in or be modified.\n- `invalid_credentials` (400): The email/username or password is incorrect.\n- `login_denied` (401): A post-login Action denied the sign-in. `message` carries the reason it gave. On token grants it is a 403 with `error: invalid_grant`.\n- `signup_denied` (403): A pre-signup Action or an active block denied the sign-up. `message` carries the reason.\n- `client_credentials_denied` (401): An Action denied the client_credentials grant. `message` carries the reason.\n- `m2m_quota_exceeded` (402): The project used the machine-to-machine tokens its plan includes this month. Free is capped; Hobby and Pro are billed per token instead.\n- `signup_disabled` (403): Self-service sign-up is disabled on this connection.\n- `email_taken` (409): Another user in this account already uses that email.\n- `username_taken` (409): Another user of this database connection already uses that username.\n- `invalid_username` (400): The username is empty, or contains an `@` or whitespace. `message` says which.\n- `invalid_email` (400): The email address is not valid.\n- `invalid_name` (400): The name contains a link. `message` says which field.\n- `same_email` (400): The new email is the same as the current one.\n- `user_has_no_email` (400): The operation needs an email but the user has none.\n- `password_too_weak` (400): The password does not meet the connection policy. `message` lists each unmet rule.\n- `invalid_password_hash` (400): The imported password hash cannot be read, or its cost is above what a login can afford. `message` names the field.\n- `weak_password_hash` (400): The imported password hash uses a fast digest (MD5, SHA-1, SHA-2) or a cost below the minimum. `message` says which.\n- `invalid_code` (400): The verification code is wrong, expired or already used.\n- `invalid_phone` (400): The phone number is not E.164 and could not be resolved with the account default country. Include the country code.\n- `phone_changed` (400): The phone on the user changed after the code was sent. Start again.\n- `phone_already_verified` (409): The user already has a verified phone; the number cannot be swapped from the screen.\n- `sms_unavailable` (409): This account cannot send SMS right now. The suffix says why: `sms_unavailable:plan`, `:quota`, `:provider`.\n- `sms_failed` (409): The SMS provider rejected the message.\n- `invalid_state` (400): The `state` is missing, expired, or does not describe a resumable step.\n- `state_mismatch` (401): The `state` belongs to another account, session, client or ceremony.\n- `invalid_ticket` (400): The ticket does not exist or is not the kind this endpoint accepts.\n- `ticket_used` (400): The ticket was already consumed.\n- `ticket_expired` (400): The ticket is past its expiry.\n- `ticket_not_found` (404): No ticket with that id belongs to this user.\n- `credential_not_found` (404): The user has no password credential on this connection.\n- `invalid_link` (400): The magic link is malformed.\n- `expired_link` (400): The magic link token was not found or has expired.\n- `invalid_otp` (401): The one-time password is wrong or expired.\n- `invalid_client` (400): The `client_id` in the request does not name a client of this account.\n- `client_not_found` (404): No client with that `client_id`.\n- `client_mismatch` (401): The client belongs to a different account.\n- `invalid_client_metadata` (400): Dynamic client registration rejected a field (RFC 7591). `message` names it.\n- `invalid_connection` (400): The connection does not exist, is disabled, or is not of the type this flow needs.\n- `no_database_connection` (400): The tenant has no database connection, so there is nowhere to store a password. Create one and retry.\n- `connection_required` (400): No connection was given and the client has no `default_connection`.\n- `connection_misconfigured` (400): The connection is missing settings needed to talk to its provider.\n- `passwordless_unavailable` (400): No passwordless connection is configured or enabled for this client.\n- `ambiguous_connection` (400): Several connections match; pass `connection_id`.\n- `invalid_redirect_uri` (400): The redirect URI is not registered for the client.\n- `origin_not_allowed` (403): The request `Origin` is not in the client's Allowed Web Origins.\n- `audience_not_found` (403): The `audience` does not name an API registered in this account.\n- `system_resource` (403): The resource is managed by Faable and cannot be modified or deleted.\n- `invalid_request` (400): A required OAuth parameter is missing or two of them are incompatible. `message` says which.\n- `invalid_device_code` (400): The device or user code is invalid or expired.\n- `provider_error` (400): The upstream identity provider returned an error. The suffix is the provider’s own code, when it sent one: `provider_error:bad_refresh_token` (the user must re-authorize), `provider_error:incorrect_client_credentials` (our configuration, the user can do nothing). `details.provider_error_description` carries the provider’s sentence.\n- `identity_already_linked` (409): That external identity is already linked to another user.\n- `identity_link_denied` (409): That external identity cannot be linked to this user.\n- `identity_conflict` (409): The user already has a linked identity for this connection.\n- `identity_orphaned` (400): The identity pointed at a user that no longer exists; it was removed. Sign in again.\n- `no_provider_token` (400): The identity holds no provider access token.\n- `no_refresh_token` (400): The identity holds no provider refresh token, so it cannot be refreshed.\n- `action_unavailable` (401): The Action that paused this login is disabled or belongs elsewhere.\n- `login_flow_misconfigured` (500): The login flow of this account cannot run. `message` carries the node error.\n- `mfa_required` (403): The login needs a second factor that this flow cannot collect, or one is still pending on the session.\n- `step_up_required` (403): Confirm an existing factor before changing your factors.\n- `interaction_required` (403): An Action asked for a redirect on a non-interactive flow.\n- `passkey_login_disabled` (400): Sign in with a passkey is not enabled for this client.\n- `mfa_pending` (401): A second-factor challenge is pending; answer it before continuing.\n- `mfa_invalid_code` (401): The authenticator code did not verify.\n- `mfa_invalid_recovery_code` (401): The recovery code did not verify.\n- `too_many_attempts` (429): Too many wrong codes. Wait a few minutes and try again.\n- `too_many_login_attempts` (429): Too many failed sign-in attempts for this email or username from this network. Wait a few minutes and try again.\n- `totp_not_allowed` (401): This account does not accept authenticator apps.\n- `no_usable_factor` (400): The user has no confirmed second factor to challenge.\n- `factor_not_found` (400): No factor with that id belongs to this user.\n- `factor_already_confirmed` (400): The factor was already confirmed.\n- `invalid_factor` (400): The factor cannot be verified (no secret material).\n- `session_missing` (401): The session that started this login no longer exists.\n- `passkey_verification_failed` (400): The WebAuthn response could not be verified.\n- `no_passkey_enrolled` (400): The user has no passkey to sign in with.\n- `malformed_credential` (400): The WebAuthn credential is malformed.\n- `unknown_passkey` (401): The passkey is not enrolled for this user.\n- `invalid_passkey` (401): The passkey assertion did not verify.\n- `invalid_invite_url` (400): An invite's `accept_url` or `redirect_uri` is not an http(s) URL at an origin of this tenant's client callbacks or `callback_hostnames`, or it carries a fragment.\n- `invite_email_mismatch` (403): The invite is for another email address than the accepting user's. `details.invited_email` shows it masked.\n- `invite_email_unverified` (403): The accepting user's email matches the invite but is not verified yet.\n- `invite_not_found` (404): No invite with that id in this account.\n- `invite_used` (400): The invite was already accepted.\n- `already_member` (400): The user is already a member of the team.\n- `not_a_member` (404): The user is not a member of the team.\n- `consent_options_unavailable` (502): The consent screen could not load the choices from the API being authorized (its `consent_options.url`). Try again in a moment.\n- `consent_choice_invalid` (400): The choice sent with the consent decision is not one the API offered for this user.\n- `registration_disabled` (403): Dynamic client registration is turned off for this tenant. Create the client from the dashboard or the Management API, or turn on `dynamic_client_registration_enabled`.\n- `invalid_email_domain` (400): Not an email domain this organization can claim: it must be a plain domain name (`acme.com`), lowercase, without scheme, path or wildcard.\n- `public_email_domain` (400): A public email provider (gmail.com, outlook.com…) cannot belong to an organization: anyone can have an address there.\n- `organization_domain_not_found` (404): The organization has no such domain.\n- `organization_domain_taken` (409): Another organization of this tenant already verified this domain. A domain belongs to one organization.\n- `organization_domain_unverified` (400): The TXT record was not found or does not hold the expected value yet. `details.record` says what was expected and what resolves now; DNS can take a few minutes to propagate.\n- `plan_unavailable` (503): The plan could not be checked right now, and this setting is only for paid plans. Try again in a minute.\n- `organization_domain_mismatch` (403): This organization's identity provider can only sign in addresses of the organization's verified email domains.\n- `team_not_in_organization` (400): Auto-join can only put people in teams of the same organization. `details.teams` lists the others.\n- `organization_has_no_idp` (400): Requiring SSO needs an identity provider: bind an `oidc` connection to the organization first.\n- `organization_not_found` (404): No organization with that id in this account.\n- `invalid_user` (400): The user does not exist in this account.\n- `not_an_organization_admin` (404): The user is not an admin of the organization.\n- `last_organization_admin` (409): An organization keeps at least one admin. Add another admin before removing this one.\n- `team_id_unavailable` (409): The team id cannot be used in this tenant. Pick another id or let the API generate one.\n- `use_team_member_route` (400): This generic route cannot create memberships. Use `POST /team/{team_id}/member` for team members or `POST /role/{role_id}/users` for role grants.\n- `role_not_found` (404): No role with that id in this account.\n- `invalid_role` (400): The role belongs to another account.\n- `flow_not_found` (400): The login flow does not exist in this account.\n- `revision_not_found` (404): The revision is not in the flow history.\n- `invalid_webhook_event` (400): An event is not in the webhook event catalog. `message` and `details.valid_events` list the valid ones.\n- `invalid_webhook_url` (400): The webhook URL must be an absolute `https` URL.\n- `not_a_webhook` (400): The operation only applies to `webhook` subscriptions.\n- `delivery_not_found` (404): No webhook delivery with that id for this subscription.\n- `delivery_in_progress` (409): The delivery is being attempted right now; retry the redeliver in a minute.",
|
|
7862
8037
|
"enum": [
|
|
7863
8038
|
"bad_request",
|
|
7864
8039
|
"validation_error",
|
|
@@ -7978,6 +8153,8 @@
|
|
|
7978
8153
|
"invite_used",
|
|
7979
8154
|
"already_member",
|
|
7980
8155
|
"not_a_member",
|
|
8156
|
+
"consent_options_unavailable",
|
|
8157
|
+
"consent_choice_invalid",
|
|
7981
8158
|
"registration_disabled",
|
|
7982
8159
|
"invalid_email_domain",
|
|
7983
8160
|
"public_email_domain",
|
|
@@ -8659,6 +8836,10 @@
|
|
|
8659
8836
|
"type": "boolean",
|
|
8660
8837
|
"description": "When true, anyone can register a client with `POST /oidc/register` (OIDC Dynamic Client Registration / RFC 7591) and the discovery document advertises `registration_endpoint`. Off by default: an open registration lets anyone create a client with their own `redirect_uri`."
|
|
8661
8838
|
},
|
|
8839
|
+
"client_id_metadata_documents_enabled": {
|
|
8840
|
+
"type": "boolean",
|
|
8841
|
+
"description": "When true, /authorize accepts a `client_id` that is an https URL serving a Client ID Metadata Document (the MCP authorization way to identify a client without registering it). Such clients always see the consent screen. Off by default."
|
|
8842
|
+
},
|
|
8662
8843
|
"canonical_host": {
|
|
8663
8844
|
"type": "string",
|
|
8664
8845
|
"description": "The one host this tenant's OIDC issuer and discovery document are always minted with, regardless of which host actually served the request — must be the account's own platform host or one of its verified custom domains. `/authorize` and `/logout` 302 here from any other host of the tenant. Unset (the default): every URL uses whatever host served the request, as before this field existed. Changing it can invalidate every WebAuthn passkey already enrolled unless `webauthn_rp_id` already covers the new host.",
|
|
@@ -9407,6 +9588,10 @@
|
|
|
9407
9588
|
"type": "boolean",
|
|
9408
9589
|
"description": "When true, anyone can register a client with `POST /oidc/register` (OIDC Dynamic Client Registration / RFC 7591) and the discovery document advertises `registration_endpoint`. Off by default: an open registration lets anyone create a client with their own `redirect_uri`."
|
|
9409
9590
|
},
|
|
9591
|
+
"client_id_metadata_documents_enabled": {
|
|
9592
|
+
"type": "boolean",
|
|
9593
|
+
"description": "When true, /authorize accepts a `client_id` that is an https URL serving a Client ID Metadata Document (the MCP authorization way to identify a client without registering it). Such clients always see the consent screen. Off by default."
|
|
9594
|
+
},
|
|
9410
9595
|
"canonical_host": {
|
|
9411
9596
|
"type": "string",
|
|
9412
9597
|
"description": "The one host this tenant's OIDC issuer and discovery document are always minted with, regardless of which host actually served the request — must be the account's own platform host or one of its verified custom domains. `/authorize` and `/logout` 302 here from any other host of the tenant. Unset (the default): every URL uses whatever host served the request, as before this field existed. Changing it can invalidate every WebAuthn passkey already enrolled unless `webauthn_rp_id` already covers the new host.",
|
|
@@ -10392,6 +10577,10 @@
|
|
|
10392
10577
|
"type": "boolean",
|
|
10393
10578
|
"description": "When true, anyone can register a client with `POST /oidc/register` (OIDC Dynamic Client Registration / RFC 7591) and the discovery document advertises `registration_endpoint`. Off by default: an open registration lets anyone create a client with their own `redirect_uri`."
|
|
10394
10579
|
},
|
|
10580
|
+
"client_id_metadata_documents_enabled": {
|
|
10581
|
+
"type": "boolean",
|
|
10582
|
+
"description": "When true, /authorize accepts a `client_id` that is an https URL serving a Client ID Metadata Document (the MCP authorization way to identify a client without registering it). Such clients always see the consent screen. Off by default."
|
|
10583
|
+
},
|
|
10395
10584
|
"canonical_host": {
|
|
10396
10585
|
"type": "string",
|
|
10397
10586
|
"description": "The one host this tenant's OIDC issuer and discovery document are always minted with, regardless of which host actually served the request — must be the account's own platform host or one of its verified custom domains. `/authorize` and `/logout` 302 here from any other host of the tenant. Unset (the default): every URL uses whatever host served the request, as before this field existed. Changing it can invalidate every WebAuthn passkey already enrolled unless `webauthn_rp_id` already covers the new host.",
|
|
@@ -11021,6 +11210,10 @@
|
|
|
11021
11210
|
"type": "boolean",
|
|
11022
11211
|
"nullable": true
|
|
11023
11212
|
},
|
|
11213
|
+
"client_id_metadata_documents_enabled": {
|
|
11214
|
+
"type": "boolean",
|
|
11215
|
+
"nullable": true
|
|
11216
|
+
},
|
|
11024
11217
|
"canonical_host": {
|
|
11025
11218
|
"type": "string",
|
|
11026
11219
|
"nullable": true
|
|
@@ -11557,6 +11750,10 @@
|
|
|
11557
11750
|
"type": "boolean",
|
|
11558
11751
|
"description": "When true, anyone can register a client with `POST /oidc/register` (OIDC Dynamic Client Registration / RFC 7591) and the discovery document advertises `registration_endpoint`. Off by default: an open registration lets anyone create a client with their own `redirect_uri`."
|
|
11559
11752
|
},
|
|
11753
|
+
"client_id_metadata_documents_enabled": {
|
|
11754
|
+
"type": "boolean",
|
|
11755
|
+
"description": "When true, /authorize accepts a `client_id` that is an https URL serving a Client ID Metadata Document (the MCP authorization way to identify a client without registering it). Such clients always see the consent screen. Off by default."
|
|
11756
|
+
},
|
|
11560
11757
|
"canonical_host": {
|
|
11561
11758
|
"type": "string",
|
|
11562
11759
|
"description": "The one host this tenant's OIDC issuer and discovery document are always minted with, regardless of which host actually served the request — must be the account's own platform host or one of its verified custom domains. `/authorize` and `/logout` 302 here from any other host of the tenant. Unset (the default): every URL uses whatever host served the request, as before this field existed. Changing it can invalidate every WebAuthn passkey already enrolled unless `webauthn_rp_id` already covers the new host.",
|
|
@@ -12138,6 +12335,21 @@
|
|
|
12138
12335
|
"maximum": 900,
|
|
12139
12336
|
"default": 900,
|
|
12140
12337
|
"description": "Lifetime in seconds."
|
|
12338
|
+
},
|
|
12339
|
+
"scopes": {
|
|
12340
|
+
"type": "array",
|
|
12341
|
+
"items": {
|
|
12342
|
+
"type": "string"
|
|
12343
|
+
},
|
|
12344
|
+
"minItems": 1,
|
|
12345
|
+
"uniqueItems": true,
|
|
12346
|
+
"description": "Narrow the token to these management scopes (each must be in the catalog). Omitted: the whole catalog."
|
|
12347
|
+
},
|
|
12348
|
+
"apikey_id": {
|
|
12349
|
+
"type": "string",
|
|
12350
|
+
"minLength": 1,
|
|
12351
|
+
"maxLength": 64,
|
|
12352
|
+
"description": "Set when the user acts through one of their deploy API keys (the hosted MCP). Recorded in the audit log and as `via_apikey` in the token."
|
|
12141
12353
|
}
|
|
12142
12354
|
},
|
|
12143
12355
|
"additionalProperties": false
|
|
@@ -14503,6 +14715,10 @@
|
|
|
14503
14715
|
"type": "boolean",
|
|
14504
14716
|
"description": "When true, anyone can register a client with `POST /oidc/register` (OIDC Dynamic Client Registration / RFC 7591) and the discovery document advertises `registration_endpoint`. Off by default: an open registration lets anyone create a client with their own `redirect_uri`."
|
|
14505
14717
|
},
|
|
14718
|
+
"client_id_metadata_documents_enabled": {
|
|
14719
|
+
"type": "boolean",
|
|
14720
|
+
"description": "When true, /authorize accepts a `client_id` that is an https URL serving a Client ID Metadata Document (the MCP authorization way to identify a client without registering it). Such clients always see the consent screen. Off by default."
|
|
14721
|
+
},
|
|
14506
14722
|
"canonical_host": {
|
|
14507
14723
|
"type": "string",
|
|
14508
14724
|
"description": "The one host this tenant's OIDC issuer and discovery document are always minted with, regardless of which host actually served the request — must be the account's own platform host or one of its verified custom domains. `/authorize` and `/logout` 302 here from any other host of the tenant. Unset (the default): every URL uses whatever host served the request, as before this field existed. Changing it can invalidate every WebAuthn passkey already enrolled unless `webauthn_rp_id` already covers the new host.",
|
|
@@ -14743,6 +14959,15 @@
|
|
|
14743
14959
|
"required": false,
|
|
14744
14960
|
"description": "Exact match on `category`. Equivalent to `?query=category:<value>`."
|
|
14745
14961
|
},
|
|
14962
|
+
{
|
|
14963
|
+
"schema": {
|
|
14964
|
+
"type": "boolean"
|
|
14965
|
+
},
|
|
14966
|
+
"in": "query",
|
|
14967
|
+
"name": "count",
|
|
14968
|
+
"required": false,
|
|
14969
|
+
"description": "Also return `total`: the rows matching the whole filter, across every page."
|
|
14970
|
+
},
|
|
14746
14971
|
{
|
|
14747
14972
|
"schema": {
|
|
14748
14973
|
"type": "string"
|
|
@@ -14796,6 +15021,10 @@
|
|
|
14796
15021
|
"items": {
|
|
14797
15022
|
"$ref": "#/components/schemas/Connection"
|
|
14798
15023
|
}
|
|
15024
|
+
},
|
|
15025
|
+
"total": {
|
|
15026
|
+
"type": "integer",
|
|
15027
|
+
"description": "Rows matching the whole filter, across every page. Only with `?count=true`."
|
|
14799
15028
|
}
|
|
14800
15029
|
},
|
|
14801
15030
|
"additionalProperties": false
|
|
@@ -17866,6 +18095,15 @@
|
|
|
17866
18095
|
"required": false,
|
|
17867
18096
|
"description": "Cursor returned by the previous page"
|
|
17868
18097
|
},
|
|
18098
|
+
{
|
|
18099
|
+
"schema": {
|
|
18100
|
+
"type": "boolean"
|
|
18101
|
+
},
|
|
18102
|
+
"in": "query",
|
|
18103
|
+
"name": "count",
|
|
18104
|
+
"required": false,
|
|
18105
|
+
"description": "Also return `total`: the rows matching the whole filter, across every page."
|
|
18106
|
+
},
|
|
17869
18107
|
{
|
|
17870
18108
|
"schema": {
|
|
17871
18109
|
"type": "string"
|
|
@@ -17919,6 +18157,10 @@
|
|
|
17919
18157
|
"items": {
|
|
17920
18158
|
"$ref": "#/components/schemas/Client"
|
|
17921
18159
|
}
|
|
18160
|
+
},
|
|
18161
|
+
"total": {
|
|
18162
|
+
"type": "integer",
|
|
18163
|
+
"description": "Rows matching the whole filter, across every page. Only with `?count=true`."
|
|
17922
18164
|
}
|
|
17923
18165
|
},
|
|
17924
18166
|
"additionalProperties": false
|
|
@@ -18331,6 +18573,17 @@
|
|
|
18331
18573
|
"token_endpoint_auth_method": {
|
|
18332
18574
|
"type": "string"
|
|
18333
18575
|
},
|
|
18576
|
+
"consent_required": {
|
|
18577
|
+
"type": "boolean",
|
|
18578
|
+
"description": "When true, /authorize never issues a code in silence for this client: the End-User approves it on the consent screen first. Set on clients the tenant did not create (Client ID Metadata Documents, dynamic registration)."
|
|
18579
|
+
},
|
|
18580
|
+
"metadata_document_url": {
|
|
18581
|
+
"type": "string",
|
|
18582
|
+
"description": "For a client identified by a Client ID Metadata Document: the URL (also its client_id) its metadata was fetched from."
|
|
18583
|
+
},
|
|
18584
|
+
"registered_dynamically": {
|
|
18585
|
+
"type": "boolean"
|
|
18586
|
+
},
|
|
18334
18587
|
"application_type": {
|
|
18335
18588
|
"type": "string"
|
|
18336
18589
|
},
|
|
@@ -18973,6 +19226,17 @@
|
|
|
18973
19226
|
"token_endpoint_auth_method": {
|
|
18974
19227
|
"type": "string"
|
|
18975
19228
|
},
|
|
19229
|
+
"consent_required": {
|
|
19230
|
+
"type": "boolean",
|
|
19231
|
+
"description": "When true, /authorize never issues a code in silence for this client: the End-User approves it on the consent screen first. Set on clients the tenant did not create (Client ID Metadata Documents, dynamic registration)."
|
|
19232
|
+
},
|
|
19233
|
+
"metadata_document_url": {
|
|
19234
|
+
"type": "string",
|
|
19235
|
+
"description": "For a client identified by a Client ID Metadata Document: the URL (also its client_id) its metadata was fetched from."
|
|
19236
|
+
},
|
|
19237
|
+
"registered_dynamically": {
|
|
19238
|
+
"type": "boolean"
|
|
19239
|
+
},
|
|
18976
19240
|
"application_type": {
|
|
18977
19241
|
"type": "string"
|
|
18978
19242
|
},
|
|
@@ -20126,6 +20390,17 @@
|
|
|
20126
20390
|
"token_endpoint_auth_method": {
|
|
20127
20391
|
"type": "string"
|
|
20128
20392
|
},
|
|
20393
|
+
"consent_required": {
|
|
20394
|
+
"type": "boolean",
|
|
20395
|
+
"description": "When true, /authorize never issues a code in silence for this client: the End-User approves it on the consent screen first. Set on clients the tenant did not create (Client ID Metadata Documents, dynamic registration)."
|
|
20396
|
+
},
|
|
20397
|
+
"metadata_document_url": {
|
|
20398
|
+
"type": "string",
|
|
20399
|
+
"description": "For a client identified by a Client ID Metadata Document: the URL (also its client_id) its metadata was fetched from."
|
|
20400
|
+
},
|
|
20401
|
+
"registered_dynamically": {
|
|
20402
|
+
"type": "boolean"
|
|
20403
|
+
},
|
|
20129
20404
|
"application_type": {
|
|
20130
20405
|
"type": "string"
|
|
20131
20406
|
},
|
|
@@ -20768,6 +21043,17 @@
|
|
|
20768
21043
|
"token_endpoint_auth_method": {
|
|
20769
21044
|
"type": "string"
|
|
20770
21045
|
},
|
|
21046
|
+
"consent_required": {
|
|
21047
|
+
"type": "boolean",
|
|
21048
|
+
"description": "When true, /authorize never issues a code in silence for this client: the End-User approves it on the consent screen first. Set on clients the tenant did not create (Client ID Metadata Documents, dynamic registration)."
|
|
21049
|
+
},
|
|
21050
|
+
"metadata_document_url": {
|
|
21051
|
+
"type": "string",
|
|
21052
|
+
"description": "For a client identified by a Client ID Metadata Document: the URL (also its client_id) its metadata was fetched from."
|
|
21053
|
+
},
|
|
21054
|
+
"registered_dynamically": {
|
|
21055
|
+
"type": "boolean"
|
|
21056
|
+
},
|
|
20771
21057
|
"application_type": {
|
|
20772
21058
|
"type": "string"
|
|
20773
21059
|
},
|
|
@@ -21411,6 +21697,17 @@
|
|
|
21411
21697
|
"token_endpoint_auth_method": {
|
|
21412
21698
|
"type": "string"
|
|
21413
21699
|
},
|
|
21700
|
+
"consent_required": {
|
|
21701
|
+
"type": "boolean",
|
|
21702
|
+
"description": "When true, /authorize never issues a code in silence for this client: the End-User approves it on the consent screen first. Set on clients the tenant did not create (Client ID Metadata Documents, dynamic registration)."
|
|
21703
|
+
},
|
|
21704
|
+
"metadata_document_url": {
|
|
21705
|
+
"type": "string",
|
|
21706
|
+
"description": "For a client identified by a Client ID Metadata Document: the URL (also its client_id) its metadata was fetched from."
|
|
21707
|
+
},
|
|
21708
|
+
"registered_dynamically": {
|
|
21709
|
+
"type": "boolean"
|
|
21710
|
+
},
|
|
21414
21711
|
"application_type": {
|
|
21415
21712
|
"type": "string"
|
|
21416
21713
|
},
|
|
@@ -22016,6 +22313,60 @@
|
|
|
22016
22313
|
"required": false,
|
|
22017
22314
|
"description": "Exact match on `suspended`. Equivalent to `?query=suspended:<value>`."
|
|
22018
22315
|
},
|
|
22316
|
+
{
|
|
22317
|
+
"schema": {
|
|
22318
|
+
"type": "string"
|
|
22319
|
+
},
|
|
22320
|
+
"in": "query",
|
|
22321
|
+
"name": "last_login_since",
|
|
22322
|
+
"required": false,
|
|
22323
|
+
"description": "Exact match on `last_login_since`. Equivalent to `?query=last_login_since:<value>`."
|
|
22324
|
+
},
|
|
22325
|
+
{
|
|
22326
|
+
"schema": {
|
|
22327
|
+
"type": "string"
|
|
22328
|
+
},
|
|
22329
|
+
"in": "query",
|
|
22330
|
+
"name": "last_login_until",
|
|
22331
|
+
"required": false,
|
|
22332
|
+
"description": "Exact match on `last_login_until`. Equivalent to `?query=last_login_until:<value>`."
|
|
22333
|
+
},
|
|
22334
|
+
{
|
|
22335
|
+
"schema": {
|
|
22336
|
+
"type": "string"
|
|
22337
|
+
},
|
|
22338
|
+
"in": "query",
|
|
22339
|
+
"name": "created_since",
|
|
22340
|
+
"required": false,
|
|
22341
|
+
"description": "Exact match on `created_since`. Equivalent to `?query=created_since:<value>`."
|
|
22342
|
+
},
|
|
22343
|
+
{
|
|
22344
|
+
"schema": {
|
|
22345
|
+
"type": "string"
|
|
22346
|
+
},
|
|
22347
|
+
"in": "query",
|
|
22348
|
+
"name": "created_until",
|
|
22349
|
+
"required": false,
|
|
22350
|
+
"description": "Exact match on `created_until`. Equivalent to `?query=created_until:<value>`."
|
|
22351
|
+
},
|
|
22352
|
+
{
|
|
22353
|
+
"schema": {
|
|
22354
|
+
"type": "string"
|
|
22355
|
+
},
|
|
22356
|
+
"in": "query",
|
|
22357
|
+
"name": "sort",
|
|
22358
|
+
"required": false,
|
|
22359
|
+
"description": "Sort by one field: `<field>` ascending, `-<field>` descending. One of: createdAt, last_login, logins_count. Rows with no value in that field are left out. Default: `-createdAt`."
|
|
22360
|
+
},
|
|
22361
|
+
{
|
|
22362
|
+
"schema": {
|
|
22363
|
+
"type": "boolean"
|
|
22364
|
+
},
|
|
22365
|
+
"in": "query",
|
|
22366
|
+
"name": "count",
|
|
22367
|
+
"required": false,
|
|
22368
|
+
"description": "Also return `total`: the rows matching the whole filter, across every page."
|
|
22369
|
+
},
|
|
22019
22370
|
{
|
|
22020
22371
|
"schema": {
|
|
22021
22372
|
"type": "string"
|
|
@@ -22069,6 +22420,10 @@
|
|
|
22069
22420
|
"items": {
|
|
22070
22421
|
"$ref": "#/components/schemas/User"
|
|
22071
22422
|
}
|
|
22423
|
+
},
|
|
22424
|
+
"total": {
|
|
22425
|
+
"type": "integer",
|
|
22426
|
+
"description": "Rows matching the whole filter, across every page. Only with `?count=true`."
|
|
22072
22427
|
}
|
|
22073
22428
|
},
|
|
22074
22429
|
"additionalProperties": false
|
|
@@ -28396,6 +28751,15 @@
|
|
|
28396
28751
|
"required": false,
|
|
28397
28752
|
"description": "Exact match on `created_at`. Equivalent to `?query=created_at:<value>`."
|
|
28398
28753
|
},
|
|
28754
|
+
{
|
|
28755
|
+
"schema": {
|
|
28756
|
+
"type": "boolean"
|
|
28757
|
+
},
|
|
28758
|
+
"in": "query",
|
|
28759
|
+
"name": "count",
|
|
28760
|
+
"required": false,
|
|
28761
|
+
"description": "Also return `total`: the rows matching the whole filter, across every page."
|
|
28762
|
+
},
|
|
28399
28763
|
{
|
|
28400
28764
|
"schema": {
|
|
28401
28765
|
"type": "string"
|
|
@@ -28456,6 +28820,10 @@
|
|
|
28456
28820
|
"items": {
|
|
28457
28821
|
"$ref": "#/components/schemas/Identity"
|
|
28458
28822
|
}
|
|
28823
|
+
},
|
|
28824
|
+
"total": {
|
|
28825
|
+
"type": "integer",
|
|
28826
|
+
"description": "Rows matching the whole filter, across every page. Only with `?count=true`."
|
|
28459
28827
|
}
|
|
28460
28828
|
},
|
|
28461
28829
|
"additionalProperties": false
|
|
@@ -29757,6 +30125,15 @@
|
|
|
29757
30125
|
"required": false,
|
|
29758
30126
|
"description": "Exact match on `created_at`. Equivalent to `?query=created_at:<value>`."
|
|
29759
30127
|
},
|
|
30128
|
+
{
|
|
30129
|
+
"schema": {
|
|
30130
|
+
"type": "boolean"
|
|
30131
|
+
},
|
|
30132
|
+
"in": "query",
|
|
30133
|
+
"name": "count",
|
|
30134
|
+
"required": false,
|
|
30135
|
+
"description": "Also return `total`: the rows matching the whole filter, across every page."
|
|
30136
|
+
},
|
|
29760
30137
|
{
|
|
29761
30138
|
"schema": {
|
|
29762
30139
|
"type": "string"
|
|
@@ -29828,6 +30205,10 @@
|
|
|
29828
30205
|
"items": {
|
|
29829
30206
|
"$ref": "#/components/schemas/Credential"
|
|
29830
30207
|
}
|
|
30208
|
+
},
|
|
30209
|
+
"total": {
|
|
30210
|
+
"type": "integer",
|
|
30211
|
+
"description": "Rows matching the whole filter, across every page. Only with `?count=true`."
|
|
29831
30212
|
}
|
|
29832
30213
|
},
|
|
29833
30214
|
"additionalProperties": false
|
|
@@ -31421,6 +31802,15 @@
|
|
|
31421
31802
|
"required": false,
|
|
31422
31803
|
"description": "Cursor returned by the previous page"
|
|
31423
31804
|
},
|
|
31805
|
+
{
|
|
31806
|
+
"schema": {
|
|
31807
|
+
"type": "boolean"
|
|
31808
|
+
},
|
|
31809
|
+
"in": "query",
|
|
31810
|
+
"name": "count",
|
|
31811
|
+
"required": false,
|
|
31812
|
+
"description": "Also return `total`: the rows matching the whole filter, across every page."
|
|
31813
|
+
},
|
|
31424
31814
|
{
|
|
31425
31815
|
"schema": {
|
|
31426
31816
|
"type": "string"
|
|
@@ -31474,6 +31864,10 @@
|
|
|
31474
31864
|
"items": {
|
|
31475
31865
|
"$ref": "#/components/schemas/Role"
|
|
31476
31866
|
}
|
|
31867
|
+
},
|
|
31868
|
+
"total": {
|
|
31869
|
+
"type": "integer",
|
|
31870
|
+
"description": "Rows matching the whole filter, across every page. Only with `?count=true`."
|
|
31477
31871
|
}
|
|
31478
31872
|
},
|
|
31479
31873
|
"additionalProperties": false
|
|
@@ -33097,6 +33491,15 @@
|
|
|
33097
33491
|
"required": false,
|
|
33098
33492
|
"description": "Cursor returned by the previous page"
|
|
33099
33493
|
},
|
|
33494
|
+
{
|
|
33495
|
+
"schema": {
|
|
33496
|
+
"type": "boolean"
|
|
33497
|
+
},
|
|
33498
|
+
"in": "query",
|
|
33499
|
+
"name": "count",
|
|
33500
|
+
"required": false,
|
|
33501
|
+
"description": "Also return `total`: the rows matching the whole filter, across every page."
|
|
33502
|
+
},
|
|
33100
33503
|
{
|
|
33101
33504
|
"schema": {
|
|
33102
33505
|
"type": "string"
|
|
@@ -33157,6 +33560,10 @@
|
|
|
33157
33560
|
"items": {
|
|
33158
33561
|
"$ref": "#/components/schemas/RoleMember"
|
|
33159
33562
|
}
|
|
33563
|
+
},
|
|
33564
|
+
"total": {
|
|
33565
|
+
"type": "integer",
|
|
33566
|
+
"description": "Rows matching the whole filter, across every page. Only with `?count=true`."
|
|
33160
33567
|
}
|
|
33161
33568
|
},
|
|
33162
33569
|
"additionalProperties": false
|
|
@@ -33873,6 +34280,15 @@
|
|
|
33873
34280
|
"required": false,
|
|
33874
34281
|
"description": "Cursor returned by the previous page"
|
|
33875
34282
|
},
|
|
34283
|
+
{
|
|
34284
|
+
"schema": {
|
|
34285
|
+
"type": "boolean"
|
|
34286
|
+
},
|
|
34287
|
+
"in": "query",
|
|
34288
|
+
"name": "count",
|
|
34289
|
+
"required": false,
|
|
34290
|
+
"description": "Also return `total`: the rows matching the whole filter, across every page."
|
|
34291
|
+
},
|
|
33876
34292
|
{
|
|
33877
34293
|
"schema": {
|
|
33878
34294
|
"type": "string"
|
|
@@ -33926,6 +34342,10 @@
|
|
|
33926
34342
|
"items": {
|
|
33927
34343
|
"$ref": "#/components/schemas/Team"
|
|
33928
34344
|
}
|
|
34345
|
+
},
|
|
34346
|
+
"total": {
|
|
34347
|
+
"type": "integer",
|
|
34348
|
+
"description": "Rows matching the whole filter, across every page. Only with `?count=true`."
|
|
33929
34349
|
}
|
|
33930
34350
|
},
|
|
33931
34351
|
"additionalProperties": false
|
|
@@ -35838,6 +36258,15 @@
|
|
|
35838
36258
|
"required": false,
|
|
35839
36259
|
"description": "Cursor returned by the previous page"
|
|
35840
36260
|
},
|
|
36261
|
+
{
|
|
36262
|
+
"schema": {
|
|
36263
|
+
"type": "boolean"
|
|
36264
|
+
},
|
|
36265
|
+
"in": "query",
|
|
36266
|
+
"name": "count",
|
|
36267
|
+
"required": false,
|
|
36268
|
+
"description": "Also return `total`: the rows matching the whole filter, across every page."
|
|
36269
|
+
},
|
|
35841
36270
|
{
|
|
35842
36271
|
"schema": {
|
|
35843
36272
|
"type": "string"
|
|
@@ -35891,6 +36320,10 @@
|
|
|
35891
36320
|
"items": {
|
|
35892
36321
|
"$ref": "#/components/schemas/Organization"
|
|
35893
36322
|
}
|
|
36323
|
+
},
|
|
36324
|
+
"total": {
|
|
36325
|
+
"type": "integer",
|
|
36326
|
+
"description": "Rows matching the whole filter, across every page. Only with `?count=true`."
|
|
35894
36327
|
}
|
|
35895
36328
|
},
|
|
35896
36329
|
"additionalProperties": false
|
|
@@ -40005,6 +40438,15 @@
|
|
|
40005
40438
|
"required": false,
|
|
40006
40439
|
"description": "Exact match on `team`. Equivalent to `?query=team:<value>`."
|
|
40007
40440
|
},
|
|
40441
|
+
{
|
|
40442
|
+
"schema": {
|
|
40443
|
+
"type": "boolean"
|
|
40444
|
+
},
|
|
40445
|
+
"in": "query",
|
|
40446
|
+
"name": "count",
|
|
40447
|
+
"required": false,
|
|
40448
|
+
"description": "Also return `total`: the rows matching the whole filter, across every page."
|
|
40449
|
+
},
|
|
40008
40450
|
{
|
|
40009
40451
|
"schema": {
|
|
40010
40452
|
"type": "string"
|
|
@@ -40066,6 +40508,10 @@
|
|
|
40066
40508
|
"items": {
|
|
40067
40509
|
"$ref": "#/components/schemas/TeamMember"
|
|
40068
40510
|
}
|
|
40511
|
+
},
|
|
40512
|
+
"total": {
|
|
40513
|
+
"type": "integer",
|
|
40514
|
+
"description": "Rows matching the whole filter, across every page. Only with `?count=true`."
|
|
40069
40515
|
}
|
|
40070
40516
|
},
|
|
40071
40517
|
"additionalProperties": false
|
|
@@ -44007,6 +44453,15 @@
|
|
|
44007
44453
|
"required": false,
|
|
44008
44454
|
"description": "Exact match on `allow_offline_access`. Equivalent to `?query=allow_offline_access:<value>`."
|
|
44009
44455
|
},
|
|
44456
|
+
{
|
|
44457
|
+
"schema": {
|
|
44458
|
+
"type": "boolean"
|
|
44459
|
+
},
|
|
44460
|
+
"in": "query",
|
|
44461
|
+
"name": "count",
|
|
44462
|
+
"required": false,
|
|
44463
|
+
"description": "Also return `total`: the rows matching the whole filter, across every page."
|
|
44464
|
+
},
|
|
44010
44465
|
{
|
|
44011
44466
|
"schema": {
|
|
44012
44467
|
"type": "string"
|
|
@@ -44060,6 +44515,10 @@
|
|
|
44060
44515
|
"items": {
|
|
44061
44516
|
"$ref": "#/components/schemas/Api"
|
|
44062
44517
|
}
|
|
44518
|
+
},
|
|
44519
|
+
"total": {
|
|
44520
|
+
"type": "integer",
|
|
44521
|
+
"description": "Rows matching the whole filter, across every page. Only with `?count=true`."
|
|
44063
44522
|
}
|
|
44064
44523
|
},
|
|
44065
44524
|
"additionalProperties": false
|
|
@@ -44306,6 +44765,57 @@
|
|
|
44306
44765
|
"type": "boolean",
|
|
44307
44766
|
"description": "When true, clients can request `offline_access` and receive a refresh_token for this API."
|
|
44308
44767
|
},
|
|
44768
|
+
"consent_options": {
|
|
44769
|
+
"type": "object",
|
|
44770
|
+
"required": [
|
|
44771
|
+
"claim",
|
|
44772
|
+
"label",
|
|
44773
|
+
"url",
|
|
44774
|
+
"audience"
|
|
44775
|
+
],
|
|
44776
|
+
"properties": {
|
|
44777
|
+
"claim": {
|
|
44778
|
+
"type": "string",
|
|
44779
|
+
"pattern": "^[a-z][a-z0-9_]{0,31}$",
|
|
44780
|
+
"description": "Access token claim that carries the chosen id."
|
|
44781
|
+
},
|
|
44782
|
+
"label": {
|
|
44783
|
+
"type": "string",
|
|
44784
|
+
"maxLength": 60,
|
|
44785
|
+
"description": "What the screen asks for, e.g. \"Project\"."
|
|
44786
|
+
},
|
|
44787
|
+
"url": {
|
|
44788
|
+
"type": "string",
|
|
44789
|
+
"pattern": "^https://",
|
|
44790
|
+
"description": "GET endpoint of the resource server that lists the choices."
|
|
44791
|
+
},
|
|
44792
|
+
"audience": {
|
|
44793
|
+
"type": "string",
|
|
44794
|
+
"description": "Identifier of a registered API the listing token is issued for (usually the resource server behind `url`)."
|
|
44795
|
+
},
|
|
44796
|
+
"scope": {
|
|
44797
|
+
"type": "string",
|
|
44798
|
+
"description": "Space-separated permissions of the listing token. The token is delegated (`act`): the resource server sees auth acting for the user with only these, never the user’s full powers — an admin is listed their own choices, not the whole platform’s."
|
|
44799
|
+
}
|
|
44800
|
+
}
|
|
44801
|
+
},
|
|
44802
|
+
"delegation": {
|
|
44803
|
+
"type": "object",
|
|
44804
|
+
"required": [
|
|
44805
|
+
"client_id",
|
|
44806
|
+
"audience"
|
|
44807
|
+
],
|
|
44808
|
+
"properties": {
|
|
44809
|
+
"client_id": {
|
|
44810
|
+
"type": "string",
|
|
44811
|
+
"description": "The confidential client of the resource server allowed to exchange."
|
|
44812
|
+
},
|
|
44813
|
+
"audience": {
|
|
44814
|
+
"type": "string",
|
|
44815
|
+
"description": "Identifier of the registered API the new token is for."
|
|
44816
|
+
}
|
|
44817
|
+
}
|
|
44818
|
+
},
|
|
44309
44819
|
"skip_consent": {
|
|
44310
44820
|
"type": "boolean",
|
|
44311
44821
|
"description": "When true, skip the consent prompt for first-party clients."
|
|
@@ -44437,6 +44947,59 @@
|
|
|
44437
44947
|
"type": "boolean",
|
|
44438
44948
|
"description": "When true, the API is eligible to be the target of a `refresh_token` (i.e. clients can request `offline_access` against it)."
|
|
44439
44949
|
},
|
|
44950
|
+
"consent_options": {
|
|
44951
|
+
"type": "object",
|
|
44952
|
+
"required": [
|
|
44953
|
+
"claim",
|
|
44954
|
+
"label",
|
|
44955
|
+
"url",
|
|
44956
|
+
"audience"
|
|
44957
|
+
],
|
|
44958
|
+
"properties": {
|
|
44959
|
+
"claim": {
|
|
44960
|
+
"type": "string",
|
|
44961
|
+
"pattern": "^[a-z][a-z0-9_]{0,31}$",
|
|
44962
|
+
"description": "Access token claim that carries the chosen id."
|
|
44963
|
+
},
|
|
44964
|
+
"label": {
|
|
44965
|
+
"type": "string",
|
|
44966
|
+
"maxLength": 60,
|
|
44967
|
+
"description": "What the screen asks for, e.g. \"Project\"."
|
|
44968
|
+
},
|
|
44969
|
+
"url": {
|
|
44970
|
+
"type": "string",
|
|
44971
|
+
"pattern": "^https://",
|
|
44972
|
+
"description": "GET endpoint of the resource server that lists the choices."
|
|
44973
|
+
},
|
|
44974
|
+
"audience": {
|
|
44975
|
+
"type": "string",
|
|
44976
|
+
"description": "Identifier of a registered API the listing token is issued for (usually the resource server behind `url`)."
|
|
44977
|
+
},
|
|
44978
|
+
"scope": {
|
|
44979
|
+
"type": "string",
|
|
44980
|
+
"description": "Space-separated permissions of the listing token. The token is delegated (`act`): the resource server sees auth acting for the user with only these, never the user’s full powers — an admin is listed their own choices, not the whole platform’s."
|
|
44981
|
+
}
|
|
44982
|
+
},
|
|
44983
|
+
"nullable": true
|
|
44984
|
+
},
|
|
44985
|
+
"delegation": {
|
|
44986
|
+
"type": "object",
|
|
44987
|
+
"required": [
|
|
44988
|
+
"client_id",
|
|
44989
|
+
"audience"
|
|
44990
|
+
],
|
|
44991
|
+
"properties": {
|
|
44992
|
+
"client_id": {
|
|
44993
|
+
"type": "string",
|
|
44994
|
+
"description": "The confidential client of the resource server allowed to exchange."
|
|
44995
|
+
},
|
|
44996
|
+
"audience": {
|
|
44997
|
+
"type": "string",
|
|
44998
|
+
"description": "Identifier of the registered API the new token is for."
|
|
44999
|
+
}
|
|
45000
|
+
},
|
|
45001
|
+
"nullable": true
|
|
45002
|
+
},
|
|
44440
45003
|
"skip_consent": {
|
|
44441
45004
|
"type": "boolean",
|
|
44442
45005
|
"description": "When true, the consent prompt is skipped for first-party clients (clients owned by the same tenant as the API)."
|
|
@@ -44759,6 +45322,59 @@
|
|
|
44759
45322
|
"type": "boolean",
|
|
44760
45323
|
"description": "When true, the API is eligible to be the target of a `refresh_token` (i.e. clients can request `offline_access` against it)."
|
|
44761
45324
|
},
|
|
45325
|
+
"consent_options": {
|
|
45326
|
+
"type": "object",
|
|
45327
|
+
"required": [
|
|
45328
|
+
"claim",
|
|
45329
|
+
"label",
|
|
45330
|
+
"url",
|
|
45331
|
+
"audience"
|
|
45332
|
+
],
|
|
45333
|
+
"properties": {
|
|
45334
|
+
"claim": {
|
|
45335
|
+
"type": "string",
|
|
45336
|
+
"pattern": "^[a-z][a-z0-9_]{0,31}$",
|
|
45337
|
+
"description": "Access token claim that carries the chosen id."
|
|
45338
|
+
},
|
|
45339
|
+
"label": {
|
|
45340
|
+
"type": "string",
|
|
45341
|
+
"maxLength": 60,
|
|
45342
|
+
"description": "What the screen asks for, e.g. \"Project\"."
|
|
45343
|
+
},
|
|
45344
|
+
"url": {
|
|
45345
|
+
"type": "string",
|
|
45346
|
+
"pattern": "^https://",
|
|
45347
|
+
"description": "GET endpoint of the resource server that lists the choices."
|
|
45348
|
+
},
|
|
45349
|
+
"audience": {
|
|
45350
|
+
"type": "string",
|
|
45351
|
+
"description": "Identifier of a registered API the listing token is issued for (usually the resource server behind `url`)."
|
|
45352
|
+
},
|
|
45353
|
+
"scope": {
|
|
45354
|
+
"type": "string",
|
|
45355
|
+
"description": "Space-separated permissions of the listing token. The token is delegated (`act`): the resource server sees auth acting for the user with only these, never the user’s full powers — an admin is listed their own choices, not the whole platform’s."
|
|
45356
|
+
}
|
|
45357
|
+
},
|
|
45358
|
+
"nullable": true
|
|
45359
|
+
},
|
|
45360
|
+
"delegation": {
|
|
45361
|
+
"type": "object",
|
|
45362
|
+
"required": [
|
|
45363
|
+
"client_id",
|
|
45364
|
+
"audience"
|
|
45365
|
+
],
|
|
45366
|
+
"properties": {
|
|
45367
|
+
"client_id": {
|
|
45368
|
+
"type": "string",
|
|
45369
|
+
"description": "The confidential client of the resource server allowed to exchange."
|
|
45370
|
+
},
|
|
45371
|
+
"audience": {
|
|
45372
|
+
"type": "string",
|
|
45373
|
+
"description": "Identifier of the registered API the new token is for."
|
|
45374
|
+
}
|
|
45375
|
+
},
|
|
45376
|
+
"nullable": true
|
|
45377
|
+
},
|
|
44762
45378
|
"skip_consent": {
|
|
44763
45379
|
"type": "boolean",
|
|
44764
45380
|
"description": "When true, the consent prompt is skipped for first-party clients (clients owned by the same tenant as the API)."
|
|
@@ -45032,6 +45648,59 @@
|
|
|
45032
45648
|
"type": "boolean",
|
|
45033
45649
|
"description": "When true, clients can request `offline_access` and receive a refresh_token for this API."
|
|
45034
45650
|
},
|
|
45651
|
+
"consent_options": {
|
|
45652
|
+
"type": "object",
|
|
45653
|
+
"required": [
|
|
45654
|
+
"claim",
|
|
45655
|
+
"label",
|
|
45656
|
+
"url",
|
|
45657
|
+
"audience"
|
|
45658
|
+
],
|
|
45659
|
+
"properties": {
|
|
45660
|
+
"claim": {
|
|
45661
|
+
"type": "string",
|
|
45662
|
+
"pattern": "^[a-z][a-z0-9_]{0,31}$",
|
|
45663
|
+
"description": "Access token claim that carries the chosen id."
|
|
45664
|
+
},
|
|
45665
|
+
"label": {
|
|
45666
|
+
"type": "string",
|
|
45667
|
+
"maxLength": 60,
|
|
45668
|
+
"description": "What the screen asks for, e.g. \"Project\"."
|
|
45669
|
+
},
|
|
45670
|
+
"url": {
|
|
45671
|
+
"type": "string",
|
|
45672
|
+
"pattern": "^https://",
|
|
45673
|
+
"description": "GET endpoint of the resource server that lists the choices."
|
|
45674
|
+
},
|
|
45675
|
+
"audience": {
|
|
45676
|
+
"type": "string",
|
|
45677
|
+
"description": "Identifier of a registered API the listing token is issued for (usually the resource server behind `url`)."
|
|
45678
|
+
},
|
|
45679
|
+
"scope": {
|
|
45680
|
+
"type": "string",
|
|
45681
|
+
"description": "Space-separated permissions of the listing token. The token is delegated (`act`): the resource server sees auth acting for the user with only these, never the user’s full powers — an admin is listed their own choices, not the whole platform’s."
|
|
45682
|
+
}
|
|
45683
|
+
},
|
|
45684
|
+
"nullable": true
|
|
45685
|
+
},
|
|
45686
|
+
"delegation": {
|
|
45687
|
+
"type": "object",
|
|
45688
|
+
"required": [
|
|
45689
|
+
"client_id",
|
|
45690
|
+
"audience"
|
|
45691
|
+
],
|
|
45692
|
+
"properties": {
|
|
45693
|
+
"client_id": {
|
|
45694
|
+
"type": "string",
|
|
45695
|
+
"description": "The confidential client of the resource server allowed to exchange."
|
|
45696
|
+
},
|
|
45697
|
+
"audience": {
|
|
45698
|
+
"type": "string",
|
|
45699
|
+
"description": "Identifier of the registered API the new token is for."
|
|
45700
|
+
}
|
|
45701
|
+
},
|
|
45702
|
+
"nullable": true
|
|
45703
|
+
},
|
|
45035
45704
|
"skip_consent": {
|
|
45036
45705
|
"type": "boolean",
|
|
45037
45706
|
"description": "When true, skip the consent prompt for first-party clients."
|
|
@@ -45173,6 +45842,59 @@
|
|
|
45173
45842
|
"type": "boolean",
|
|
45174
45843
|
"description": "When true, the API is eligible to be the target of a `refresh_token` (i.e. clients can request `offline_access` against it)."
|
|
45175
45844
|
},
|
|
45845
|
+
"consent_options": {
|
|
45846
|
+
"type": "object",
|
|
45847
|
+
"required": [
|
|
45848
|
+
"claim",
|
|
45849
|
+
"label",
|
|
45850
|
+
"url",
|
|
45851
|
+
"audience"
|
|
45852
|
+
],
|
|
45853
|
+
"properties": {
|
|
45854
|
+
"claim": {
|
|
45855
|
+
"type": "string",
|
|
45856
|
+
"pattern": "^[a-z][a-z0-9_]{0,31}$",
|
|
45857
|
+
"description": "Access token claim that carries the chosen id."
|
|
45858
|
+
},
|
|
45859
|
+
"label": {
|
|
45860
|
+
"type": "string",
|
|
45861
|
+
"maxLength": 60,
|
|
45862
|
+
"description": "What the screen asks for, e.g. \"Project\"."
|
|
45863
|
+
},
|
|
45864
|
+
"url": {
|
|
45865
|
+
"type": "string",
|
|
45866
|
+
"pattern": "^https://",
|
|
45867
|
+
"description": "GET endpoint of the resource server that lists the choices."
|
|
45868
|
+
},
|
|
45869
|
+
"audience": {
|
|
45870
|
+
"type": "string",
|
|
45871
|
+
"description": "Identifier of a registered API the listing token is issued for (usually the resource server behind `url`)."
|
|
45872
|
+
},
|
|
45873
|
+
"scope": {
|
|
45874
|
+
"type": "string",
|
|
45875
|
+
"description": "Space-separated permissions of the listing token. The token is delegated (`act`): the resource server sees auth acting for the user with only these, never the user’s full powers — an admin is listed their own choices, not the whole platform’s."
|
|
45876
|
+
}
|
|
45877
|
+
},
|
|
45878
|
+
"nullable": true
|
|
45879
|
+
},
|
|
45880
|
+
"delegation": {
|
|
45881
|
+
"type": "object",
|
|
45882
|
+
"required": [
|
|
45883
|
+
"client_id",
|
|
45884
|
+
"audience"
|
|
45885
|
+
],
|
|
45886
|
+
"properties": {
|
|
45887
|
+
"client_id": {
|
|
45888
|
+
"type": "string",
|
|
45889
|
+
"description": "The confidential client of the resource server allowed to exchange."
|
|
45890
|
+
},
|
|
45891
|
+
"audience": {
|
|
45892
|
+
"type": "string",
|
|
45893
|
+
"description": "Identifier of the registered API the new token is for."
|
|
45894
|
+
}
|
|
45895
|
+
},
|
|
45896
|
+
"nullable": true
|
|
45897
|
+
},
|
|
45176
45898
|
"skip_consent": {
|
|
45177
45899
|
"type": "boolean",
|
|
45178
45900
|
"description": "When true, the consent prompt is skipped for first-party clients (clients owned by the same tenant as the API)."
|
|
@@ -45495,6 +46217,59 @@
|
|
|
45495
46217
|
"type": "boolean",
|
|
45496
46218
|
"description": "When true, the API is eligible to be the target of a `refresh_token` (i.e. clients can request `offline_access` against it)."
|
|
45497
46219
|
},
|
|
46220
|
+
"consent_options": {
|
|
46221
|
+
"type": "object",
|
|
46222
|
+
"required": [
|
|
46223
|
+
"claim",
|
|
46224
|
+
"label",
|
|
46225
|
+
"url",
|
|
46226
|
+
"audience"
|
|
46227
|
+
],
|
|
46228
|
+
"properties": {
|
|
46229
|
+
"claim": {
|
|
46230
|
+
"type": "string",
|
|
46231
|
+
"pattern": "^[a-z][a-z0-9_]{0,31}$",
|
|
46232
|
+
"description": "Access token claim that carries the chosen id."
|
|
46233
|
+
},
|
|
46234
|
+
"label": {
|
|
46235
|
+
"type": "string",
|
|
46236
|
+
"maxLength": 60,
|
|
46237
|
+
"description": "What the screen asks for, e.g. \"Project\"."
|
|
46238
|
+
},
|
|
46239
|
+
"url": {
|
|
46240
|
+
"type": "string",
|
|
46241
|
+
"pattern": "^https://",
|
|
46242
|
+
"description": "GET endpoint of the resource server that lists the choices."
|
|
46243
|
+
},
|
|
46244
|
+
"audience": {
|
|
46245
|
+
"type": "string",
|
|
46246
|
+
"description": "Identifier of a registered API the listing token is issued for (usually the resource server behind `url`)."
|
|
46247
|
+
},
|
|
46248
|
+
"scope": {
|
|
46249
|
+
"type": "string",
|
|
46250
|
+
"description": "Space-separated permissions of the listing token. The token is delegated (`act`): the resource server sees auth acting for the user with only these, never the user’s full powers — an admin is listed their own choices, not the whole platform’s."
|
|
46251
|
+
}
|
|
46252
|
+
},
|
|
46253
|
+
"nullable": true
|
|
46254
|
+
},
|
|
46255
|
+
"delegation": {
|
|
46256
|
+
"type": "object",
|
|
46257
|
+
"required": [
|
|
46258
|
+
"client_id",
|
|
46259
|
+
"audience"
|
|
46260
|
+
],
|
|
46261
|
+
"properties": {
|
|
46262
|
+
"client_id": {
|
|
46263
|
+
"type": "string",
|
|
46264
|
+
"description": "The confidential client of the resource server allowed to exchange."
|
|
46265
|
+
},
|
|
46266
|
+
"audience": {
|
|
46267
|
+
"type": "string",
|
|
46268
|
+
"description": "Identifier of the registered API the new token is for."
|
|
46269
|
+
}
|
|
46270
|
+
},
|
|
46271
|
+
"nullable": true
|
|
46272
|
+
},
|
|
45498
46273
|
"skip_consent": {
|
|
45499
46274
|
"type": "boolean",
|
|
45500
46275
|
"description": "When true, the consent prompt is skipped for first-party clients (clients owned by the same tenant as the API)."
|
|
@@ -46136,6 +46911,15 @@
|
|
|
46136
46911
|
"required": false,
|
|
46137
46912
|
"description": "Cursor returned by the previous page"
|
|
46138
46913
|
},
|
|
46914
|
+
{
|
|
46915
|
+
"schema": {
|
|
46916
|
+
"type": "boolean"
|
|
46917
|
+
},
|
|
46918
|
+
"in": "query",
|
|
46919
|
+
"name": "count",
|
|
46920
|
+
"required": false,
|
|
46921
|
+
"description": "Also return `total`: the rows matching the whole filter, across every page."
|
|
46922
|
+
},
|
|
46139
46923
|
{
|
|
46140
46924
|
"schema": {
|
|
46141
46925
|
"type": "string"
|
|
@@ -46178,6 +46962,10 @@
|
|
|
46178
46962
|
"items": {
|
|
46179
46963
|
"$ref": "#/components/schemas/Action"
|
|
46180
46964
|
}
|
|
46965
|
+
},
|
|
46966
|
+
"total": {
|
|
46967
|
+
"type": "integer",
|
|
46968
|
+
"description": "Rows matching the whole filter, across every page. Only with `?count=true`."
|
|
46181
46969
|
}
|
|
46182
46970
|
},
|
|
46183
46971
|
"additionalProperties": false
|
|
@@ -50884,6 +51672,15 @@
|
|
|
50884
51672
|
"required": false,
|
|
50885
51673
|
"description": "Cursor returned by the previous page"
|
|
50886
51674
|
},
|
|
51675
|
+
{
|
|
51676
|
+
"schema": {
|
|
51677
|
+
"type": "boolean"
|
|
51678
|
+
},
|
|
51679
|
+
"in": "query",
|
|
51680
|
+
"name": "count",
|
|
51681
|
+
"required": false,
|
|
51682
|
+
"description": "Also return `total`: the rows matching the whole filter, across every page."
|
|
51683
|
+
},
|
|
50887
51684
|
{
|
|
50888
51685
|
"schema": {
|
|
50889
51686
|
"type": "string"
|
|
@@ -50926,6 +51723,10 @@
|
|
|
50926
51723
|
"items": {
|
|
50927
51724
|
"$ref": "#/components/schemas/LoginFlow"
|
|
50928
51725
|
}
|
|
51726
|
+
},
|
|
51727
|
+
"total": {
|
|
51728
|
+
"type": "integer",
|
|
51729
|
+
"description": "Rows matching the whole filter, across every page. Only with `?count=true`."
|
|
50929
51730
|
}
|
|
50930
51731
|
},
|
|
50931
51732
|
"additionalProperties": false
|
|
@@ -54559,6 +55360,15 @@
|
|
|
54559
55360
|
"required": false,
|
|
54560
55361
|
"description": "Exact match on `events`. Equivalent to `?query=events:<value>`."
|
|
54561
55362
|
},
|
|
55363
|
+
{
|
|
55364
|
+
"schema": {
|
|
55365
|
+
"type": "boolean"
|
|
55366
|
+
},
|
|
55367
|
+
"in": "query",
|
|
55368
|
+
"name": "count",
|
|
55369
|
+
"required": false,
|
|
55370
|
+
"description": "Also return `total`: the rows matching the whole filter, across every page."
|
|
55371
|
+
},
|
|
54562
55372
|
{
|
|
54563
55373
|
"schema": {
|
|
54564
55374
|
"type": "string"
|
|
@@ -54601,6 +55411,10 @@
|
|
|
54601
55411
|
"items": {
|
|
54602
55412
|
"$ref": "#/components/schemas/NotificationSubscription"
|
|
54603
55413
|
}
|
|
55414
|
+
},
|
|
55415
|
+
"total": {
|
|
55416
|
+
"type": "integer",
|
|
55417
|
+
"description": "Rows matching the whole filter, across every page. Only with `?count=true`."
|
|
54604
55418
|
}
|
|
54605
55419
|
},
|
|
54606
55420
|
"additionalProperties": false
|
|
@@ -57309,6 +58123,15 @@
|
|
|
57309
58123
|
"required": false,
|
|
57310
58124
|
"description": "Exact match on `expires_after`. Equivalent to `?query=expires_after:<value>`."
|
|
57311
58125
|
},
|
|
58126
|
+
{
|
|
58127
|
+
"schema": {
|
|
58128
|
+
"type": "boolean"
|
|
58129
|
+
},
|
|
58130
|
+
"in": "query",
|
|
58131
|
+
"name": "count",
|
|
58132
|
+
"required": false,
|
|
58133
|
+
"description": "Also return `total`: the rows matching the whole filter, across every page."
|
|
58134
|
+
},
|
|
57312
58135
|
{
|
|
57313
58136
|
"schema": {
|
|
57314
58137
|
"type": "string"
|
|
@@ -57383,6 +58206,10 @@
|
|
|
57383
58206
|
"items": {
|
|
57384
58207
|
"$ref": "#/components/schemas/Log"
|
|
57385
58208
|
}
|
|
58209
|
+
},
|
|
58210
|
+
"total": {
|
|
58211
|
+
"type": "integer",
|
|
58212
|
+
"description": "Rows matching the whole filter, across every page. Only with `?count=true`."
|
|
57386
58213
|
}
|
|
57387
58214
|
},
|
|
57388
58215
|
"additionalProperties": false
|
|
@@ -57998,6 +58825,15 @@
|
|
|
57998
58825
|
"required": false,
|
|
57999
58826
|
"description": "Exact match on `until`. Equivalent to `?query=until:<value>`."
|
|
58000
58827
|
},
|
|
58828
|
+
{
|
|
58829
|
+
"schema": {
|
|
58830
|
+
"type": "boolean"
|
|
58831
|
+
},
|
|
58832
|
+
"in": "query",
|
|
58833
|
+
"name": "count",
|
|
58834
|
+
"required": false,
|
|
58835
|
+
"description": "Also return `total`: the rows matching the whole filter, across every page."
|
|
58836
|
+
},
|
|
58001
58837
|
{
|
|
58002
58838
|
"schema": {
|
|
58003
58839
|
"type": "string"
|
|
@@ -58059,6 +58895,10 @@
|
|
|
58059
58895
|
"items": {
|
|
58060
58896
|
"$ref": "#/components/schemas/Session"
|
|
58061
58897
|
}
|
|
58898
|
+
},
|
|
58899
|
+
"total": {
|
|
58900
|
+
"type": "integer",
|
|
58901
|
+
"description": "Rows matching the whole filter, across every page. Only with `?count=true`."
|
|
58062
58902
|
}
|
|
58063
58903
|
},
|
|
58064
58904
|
"additionalProperties": false
|
|
@@ -59156,6 +59996,15 @@
|
|
|
59156
59996
|
"required": false,
|
|
59157
59997
|
"description": "Cursor returned by the previous page"
|
|
59158
59998
|
},
|
|
59999
|
+
{
|
|
60000
|
+
"schema": {
|
|
60001
|
+
"type": "boolean"
|
|
60002
|
+
},
|
|
60003
|
+
"in": "query",
|
|
60004
|
+
"name": "count",
|
|
60005
|
+
"required": false,
|
|
60006
|
+
"description": "Also return `total`: the rows matching the whole filter, across every page."
|
|
60007
|
+
},
|
|
59159
60008
|
{
|
|
59160
60009
|
"schema": {
|
|
59161
60010
|
"type": "string"
|
|
@@ -59209,6 +60058,10 @@
|
|
|
59209
60058
|
"items": {
|
|
59210
60059
|
"$ref": "#/components/schemas/Customdomain"
|
|
59211
60060
|
}
|
|
60061
|
+
},
|
|
60062
|
+
"total": {
|
|
60063
|
+
"type": "integer",
|
|
60064
|
+
"description": "Rows matching the whole filter, across every page. Only with `?count=true`."
|
|
59212
60065
|
}
|
|
59213
60066
|
},
|
|
59214
60067
|
"additionalProperties": false
|
|
@@ -64417,6 +65270,341 @@
|
|
|
64417
65270
|
}
|
|
64418
65271
|
}
|
|
64419
65272
|
},
|
|
65273
|
+
"/me/grants": {
|
|
65274
|
+
"get": {
|
|
65275
|
+
"summary": "Apps the signed-in user has connected",
|
|
65276
|
+
"tags": [
|
|
65277
|
+
"account"
|
|
65278
|
+
],
|
|
65279
|
+
"description": "The live grants of the session user: each app they allowed on the consent screen, what it can do and what they picked (e.g. the project).",
|
|
65280
|
+
"responses": {
|
|
65281
|
+
"200": {
|
|
65282
|
+
"description": "Default Response",
|
|
65283
|
+
"content": {
|
|
65284
|
+
"application/json": {
|
|
65285
|
+
"schema": {
|
|
65286
|
+
"type": "object",
|
|
65287
|
+
"required": [
|
|
65288
|
+
"data"
|
|
65289
|
+
],
|
|
65290
|
+
"properties": {
|
|
65291
|
+
"data": {
|
|
65292
|
+
"type": "array",
|
|
65293
|
+
"items": {
|
|
65294
|
+
"type": "object",
|
|
65295
|
+
"required": [
|
|
65296
|
+
"id",
|
|
65297
|
+
"client",
|
|
65298
|
+
"resource",
|
|
65299
|
+
"scopes",
|
|
65300
|
+
"created_at"
|
|
65301
|
+
],
|
|
65302
|
+
"properties": {
|
|
65303
|
+
"id": {
|
|
65304
|
+
"type": "string"
|
|
65305
|
+
},
|
|
65306
|
+
"client": {
|
|
65307
|
+
"type": "object",
|
|
65308
|
+
"required": [
|
|
65309
|
+
"name"
|
|
65310
|
+
],
|
|
65311
|
+
"properties": {
|
|
65312
|
+
"name": {
|
|
65313
|
+
"type": "string"
|
|
65314
|
+
},
|
|
65315
|
+
"logo_uri": {
|
|
65316
|
+
"type": "string"
|
|
65317
|
+
},
|
|
65318
|
+
"client_uri": {
|
|
65319
|
+
"type": "string"
|
|
65320
|
+
},
|
|
65321
|
+
"metadata_document_url": {
|
|
65322
|
+
"type": "string"
|
|
65323
|
+
}
|
|
65324
|
+
}
|
|
65325
|
+
},
|
|
65326
|
+
"resource": {
|
|
65327
|
+
"type": "string"
|
|
65328
|
+
},
|
|
65329
|
+
"scopes": {
|
|
65330
|
+
"type": "array",
|
|
65331
|
+
"items": {
|
|
65332
|
+
"type": "string"
|
|
65333
|
+
}
|
|
65334
|
+
},
|
|
65335
|
+
"options": {
|
|
65336
|
+
"type": "object",
|
|
65337
|
+
"additionalProperties": {
|
|
65338
|
+
"type": "string"
|
|
65339
|
+
}
|
|
65340
|
+
},
|
|
65341
|
+
"created_at": {
|
|
65342
|
+
"type": "string"
|
|
65343
|
+
},
|
|
65344
|
+
"last_used_at": {
|
|
65345
|
+
"type": "string"
|
|
65346
|
+
}
|
|
65347
|
+
}
|
|
65348
|
+
}
|
|
65349
|
+
}
|
|
65350
|
+
}
|
|
65351
|
+
}
|
|
65352
|
+
}
|
|
65353
|
+
}
|
|
65354
|
+
},
|
|
65355
|
+
"401": {
|
|
65356
|
+
"description": "`not_logged_in` — There is no signed-in session for this request.",
|
|
65357
|
+
"content": {
|
|
65358
|
+
"application/json": {
|
|
65359
|
+
"schema": {
|
|
65360
|
+
"allOf": [
|
|
65361
|
+
{
|
|
65362
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
65363
|
+
},
|
|
65364
|
+
{
|
|
65365
|
+
"type": "object",
|
|
65366
|
+
"properties": {
|
|
65367
|
+
"error_code": {
|
|
65368
|
+
"type": "string",
|
|
65369
|
+
"enum": [
|
|
65370
|
+
"not_logged_in"
|
|
65371
|
+
]
|
|
65372
|
+
}
|
|
65373
|
+
}
|
|
65374
|
+
}
|
|
65375
|
+
]
|
|
65376
|
+
}
|
|
65377
|
+
}
|
|
65378
|
+
}
|
|
65379
|
+
},
|
|
65380
|
+
"404": {
|
|
65381
|
+
"description": "`account_not_found` — No Auth Account matches the request (domain, header or token).",
|
|
65382
|
+
"content": {
|
|
65383
|
+
"application/json": {
|
|
65384
|
+
"schema": {
|
|
65385
|
+
"allOf": [
|
|
65386
|
+
{
|
|
65387
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
65388
|
+
},
|
|
65389
|
+
{
|
|
65390
|
+
"type": "object",
|
|
65391
|
+
"properties": {
|
|
65392
|
+
"error_code": {
|
|
65393
|
+
"type": "string",
|
|
65394
|
+
"enum": [
|
|
65395
|
+
"account_not_found"
|
|
65396
|
+
]
|
|
65397
|
+
}
|
|
65398
|
+
}
|
|
65399
|
+
}
|
|
65400
|
+
]
|
|
65401
|
+
}
|
|
65402
|
+
}
|
|
65403
|
+
}
|
|
65404
|
+
},
|
|
65405
|
+
"429": {
|
|
65406
|
+
"description": "`too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header.",
|
|
65407
|
+
"content": {
|
|
65408
|
+
"application/json": {
|
|
65409
|
+
"schema": {
|
|
65410
|
+
"allOf": [
|
|
65411
|
+
{
|
|
65412
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
65413
|
+
},
|
|
65414
|
+
{
|
|
65415
|
+
"type": "object",
|
|
65416
|
+
"properties": {
|
|
65417
|
+
"error_code": {
|
|
65418
|
+
"type": "string",
|
|
65419
|
+
"enum": [
|
|
65420
|
+
"too_many_requests"
|
|
65421
|
+
]
|
|
65422
|
+
}
|
|
65423
|
+
}
|
|
65424
|
+
}
|
|
65425
|
+
]
|
|
65426
|
+
}
|
|
65427
|
+
}
|
|
65428
|
+
}
|
|
65429
|
+
},
|
|
65430
|
+
"500": {
|
|
65431
|
+
"description": "`internal_error` — Unexpected server error. Retry later; the request id is logged.",
|
|
65432
|
+
"content": {
|
|
65433
|
+
"application/json": {
|
|
65434
|
+
"schema": {
|
|
65435
|
+
"allOf": [
|
|
65436
|
+
{
|
|
65437
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
65438
|
+
},
|
|
65439
|
+
{
|
|
65440
|
+
"type": "object",
|
|
65441
|
+
"properties": {
|
|
65442
|
+
"error_code": {
|
|
65443
|
+
"type": "string",
|
|
65444
|
+
"enum": [
|
|
65445
|
+
"internal_error"
|
|
65446
|
+
]
|
|
65447
|
+
}
|
|
65448
|
+
}
|
|
65449
|
+
}
|
|
65450
|
+
]
|
|
65451
|
+
}
|
|
65452
|
+
}
|
|
65453
|
+
}
|
|
65454
|
+
}
|
|
65455
|
+
}
|
|
65456
|
+
}
|
|
65457
|
+
},
|
|
65458
|
+
"/me/grants/{grant_id}": {
|
|
65459
|
+
"delete": {
|
|
65460
|
+
"summary": "Disconnect an app",
|
|
65461
|
+
"tags": [
|
|
65462
|
+
"account"
|
|
65463
|
+
],
|
|
65464
|
+
"description": "Revokes one of the session user’s grants. The app loses access at its next token refresh (within an hour), and has to ask again to reconnect.",
|
|
65465
|
+
"parameters": [
|
|
65466
|
+
{
|
|
65467
|
+
"schema": {
|
|
65468
|
+
"type": "string"
|
|
65469
|
+
},
|
|
65470
|
+
"in": "path",
|
|
65471
|
+
"name": "grant_id",
|
|
65472
|
+
"required": true
|
|
65473
|
+
}
|
|
65474
|
+
],
|
|
65475
|
+
"responses": {
|
|
65476
|
+
"200": {
|
|
65477
|
+
"description": "Default Response"
|
|
65478
|
+
},
|
|
65479
|
+
"400": {
|
|
65480
|
+
"description": "`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
|
|
65481
|
+
"content": {
|
|
65482
|
+
"application/json": {
|
|
65483
|
+
"schema": {
|
|
65484
|
+
"allOf": [
|
|
65485
|
+
{
|
|
65486
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
65487
|
+
},
|
|
65488
|
+
{
|
|
65489
|
+
"type": "object",
|
|
65490
|
+
"properties": {
|
|
65491
|
+
"error_code": {
|
|
65492
|
+
"type": "string",
|
|
65493
|
+
"enum": [
|
|
65494
|
+
"validation_error"
|
|
65495
|
+
]
|
|
65496
|
+
}
|
|
65497
|
+
}
|
|
65498
|
+
}
|
|
65499
|
+
]
|
|
65500
|
+
}
|
|
65501
|
+
}
|
|
65502
|
+
}
|
|
65503
|
+
},
|
|
65504
|
+
"401": {
|
|
65505
|
+
"description": "`not_logged_in` — There is no signed-in session for this request.",
|
|
65506
|
+
"content": {
|
|
65507
|
+
"application/json": {
|
|
65508
|
+
"schema": {
|
|
65509
|
+
"allOf": [
|
|
65510
|
+
{
|
|
65511
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
65512
|
+
},
|
|
65513
|
+
{
|
|
65514
|
+
"type": "object",
|
|
65515
|
+
"properties": {
|
|
65516
|
+
"error_code": {
|
|
65517
|
+
"type": "string",
|
|
65518
|
+
"enum": [
|
|
65519
|
+
"not_logged_in"
|
|
65520
|
+
]
|
|
65521
|
+
}
|
|
65522
|
+
}
|
|
65523
|
+
}
|
|
65524
|
+
]
|
|
65525
|
+
}
|
|
65526
|
+
}
|
|
65527
|
+
}
|
|
65528
|
+
},
|
|
65529
|
+
"404": {
|
|
65530
|
+
"description": "`not_found` — The resource does not exist in this account.\n\n`account_not_found` — No Auth Account matches the request (domain, header or token).",
|
|
65531
|
+
"content": {
|
|
65532
|
+
"application/json": {
|
|
65533
|
+
"schema": {
|
|
65534
|
+
"allOf": [
|
|
65535
|
+
{
|
|
65536
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
65537
|
+
},
|
|
65538
|
+
{
|
|
65539
|
+
"type": "object",
|
|
65540
|
+
"properties": {
|
|
65541
|
+
"error_code": {
|
|
65542
|
+
"type": "string",
|
|
65543
|
+
"enum": [
|
|
65544
|
+
"not_found",
|
|
65545
|
+
"account_not_found"
|
|
65546
|
+
]
|
|
65547
|
+
}
|
|
65548
|
+
}
|
|
65549
|
+
}
|
|
65550
|
+
]
|
|
65551
|
+
}
|
|
65552
|
+
}
|
|
65553
|
+
}
|
|
65554
|
+
},
|
|
65555
|
+
"429": {
|
|
65556
|
+
"description": "`too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header.",
|
|
65557
|
+
"content": {
|
|
65558
|
+
"application/json": {
|
|
65559
|
+
"schema": {
|
|
65560
|
+
"allOf": [
|
|
65561
|
+
{
|
|
65562
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
65563
|
+
},
|
|
65564
|
+
{
|
|
65565
|
+
"type": "object",
|
|
65566
|
+
"properties": {
|
|
65567
|
+
"error_code": {
|
|
65568
|
+
"type": "string",
|
|
65569
|
+
"enum": [
|
|
65570
|
+
"too_many_requests"
|
|
65571
|
+
]
|
|
65572
|
+
}
|
|
65573
|
+
}
|
|
65574
|
+
}
|
|
65575
|
+
]
|
|
65576
|
+
}
|
|
65577
|
+
}
|
|
65578
|
+
}
|
|
65579
|
+
},
|
|
65580
|
+
"500": {
|
|
65581
|
+
"description": "`internal_error` — Unexpected server error. Retry later; the request id is logged.",
|
|
65582
|
+
"content": {
|
|
65583
|
+
"application/json": {
|
|
65584
|
+
"schema": {
|
|
65585
|
+
"allOf": [
|
|
65586
|
+
{
|
|
65587
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
65588
|
+
},
|
|
65589
|
+
{
|
|
65590
|
+
"type": "object",
|
|
65591
|
+
"properties": {
|
|
65592
|
+
"error_code": {
|
|
65593
|
+
"type": "string",
|
|
65594
|
+
"enum": [
|
|
65595
|
+
"internal_error"
|
|
65596
|
+
]
|
|
65597
|
+
}
|
|
65598
|
+
}
|
|
65599
|
+
}
|
|
65600
|
+
]
|
|
65601
|
+
}
|
|
65602
|
+
}
|
|
65603
|
+
}
|
|
65604
|
+
}
|
|
65605
|
+
}
|
|
65606
|
+
}
|
|
65607
|
+
},
|
|
64420
65608
|
"/me": {
|
|
64421
65609
|
"get": {
|
|
64422
65610
|
"operationId": "session/me",
|
|
@@ -67432,6 +68620,9 @@
|
|
|
67432
68620
|
},
|
|
67433
68621
|
"scope": {
|
|
67434
68622
|
"type": "string"
|
|
68623
|
+
},
|
|
68624
|
+
"issued_token_type": {
|
|
68625
|
+
"type": "string"
|
|
67435
68626
|
}
|
|
67436
68627
|
}
|
|
67437
68628
|
}
|
|
@@ -67927,6 +69118,9 @@
|
|
|
67927
69118
|
},
|
|
67928
69119
|
"scope": {
|
|
67929
69120
|
"type": "string"
|
|
69121
|
+
},
|
|
69122
|
+
"issued_token_type": {
|
|
69123
|
+
"type": "string"
|
|
67930
69124
|
}
|
|
67931
69125
|
}
|
|
67932
69126
|
}
|
|
@@ -69292,6 +70486,71 @@
|
|
|
69292
70486
|
}
|
|
69293
70487
|
}
|
|
69294
70488
|
},
|
|
70489
|
+
"/.well-known/oauth-authorization-server": {
|
|
70490
|
+
"get": {
|
|
70491
|
+
"operationId": "oauth/authorizationServerMetadata",
|
|
70492
|
+
"summary": "OAuth 2.0 Authorization Server Metadata (RFC 8414)",
|
|
70493
|
+
"tags": [
|
|
70494
|
+
"oauth"
|
|
70495
|
+
],
|
|
70496
|
+
"description": "The same provider metadata as the OpenID Connect Discovery document, at the RFC 8414 location that OAuth 2.0 and MCP clients query.",
|
|
70497
|
+
"responses": {
|
|
70498
|
+
"200": {
|
|
70499
|
+
"description": "Default Response"
|
|
70500
|
+
},
|
|
70501
|
+
"429": {
|
|
70502
|
+
"description": "`too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header.",
|
|
70503
|
+
"content": {
|
|
70504
|
+
"application/json": {
|
|
70505
|
+
"schema": {
|
|
70506
|
+
"allOf": [
|
|
70507
|
+
{
|
|
70508
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
70509
|
+
},
|
|
70510
|
+
{
|
|
70511
|
+
"type": "object",
|
|
70512
|
+
"properties": {
|
|
70513
|
+
"error_code": {
|
|
70514
|
+
"type": "string",
|
|
70515
|
+
"enum": [
|
|
70516
|
+
"too_many_requests"
|
|
70517
|
+
]
|
|
70518
|
+
}
|
|
70519
|
+
}
|
|
70520
|
+
}
|
|
70521
|
+
]
|
|
70522
|
+
}
|
|
70523
|
+
}
|
|
70524
|
+
}
|
|
70525
|
+
},
|
|
70526
|
+
"500": {
|
|
70527
|
+
"description": "`internal_error` — Unexpected server error. Retry later; the request id is logged.",
|
|
70528
|
+
"content": {
|
|
70529
|
+
"application/json": {
|
|
70530
|
+
"schema": {
|
|
70531
|
+
"allOf": [
|
|
70532
|
+
{
|
|
70533
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
70534
|
+
},
|
|
70535
|
+
{
|
|
70536
|
+
"type": "object",
|
|
70537
|
+
"properties": {
|
|
70538
|
+
"error_code": {
|
|
70539
|
+
"type": "string",
|
|
70540
|
+
"enum": [
|
|
70541
|
+
"internal_error"
|
|
70542
|
+
]
|
|
70543
|
+
}
|
|
70544
|
+
}
|
|
70545
|
+
}
|
|
70546
|
+
]
|
|
70547
|
+
}
|
|
70548
|
+
}
|
|
70549
|
+
}
|
|
70550
|
+
}
|
|
70551
|
+
}
|
|
70552
|
+
}
|
|
70553
|
+
},
|
|
69295
70554
|
"/.well-known/jwks.json": {
|
|
69296
70555
|
"get": {
|
|
69297
70556
|
"operationId": "oauth/jwks",
|
|
@@ -69790,7 +71049,6 @@
|
|
|
69790
71049
|
"type": "object",
|
|
69791
71050
|
"required": [
|
|
69792
71051
|
"client_id",
|
|
69793
|
-
"client_secret",
|
|
69794
71052
|
"client_id_issued_at",
|
|
69795
71053
|
"client_secret_expires_at",
|
|
69796
71054
|
"redirect_uris",
|
|
@@ -70027,6 +71285,669 @@
|
|
|
70027
71285
|
}
|
|
70028
71286
|
}
|
|
70029
71287
|
},
|
|
71288
|
+
"/consent/context": {
|
|
71289
|
+
"get": {
|
|
71290
|
+
"summary": "What the consent screen shows",
|
|
71291
|
+
"tags": [
|
|
71292
|
+
"oauth"
|
|
71293
|
+
],
|
|
71294
|
+
"description": "For a login parked on the consent screen: the client asking (name, logo, where it redirects), the user, the API and permissions requested, and — when the API offers one — the choice the user has to make (e.g. which project).",
|
|
71295
|
+
"parameters": [
|
|
71296
|
+
{
|
|
71297
|
+
"schema": {
|
|
71298
|
+
"type": "string"
|
|
71299
|
+
},
|
|
71300
|
+
"in": "query",
|
|
71301
|
+
"name": "state",
|
|
71302
|
+
"required": true
|
|
71303
|
+
}
|
|
71304
|
+
],
|
|
71305
|
+
"responses": {
|
|
71306
|
+
"200": {
|
|
71307
|
+
"description": "Default Response",
|
|
71308
|
+
"content": {
|
|
71309
|
+
"application/json": {
|
|
71310
|
+
"schema": {
|
|
71311
|
+
"type": "object",
|
|
71312
|
+
"required": [
|
|
71313
|
+
"account",
|
|
71314
|
+
"client",
|
|
71315
|
+
"user",
|
|
71316
|
+
"scopes"
|
|
71317
|
+
],
|
|
71318
|
+
"properties": {
|
|
71319
|
+
"account": {
|
|
71320
|
+
"type": "object",
|
|
71321
|
+
"properties": {
|
|
71322
|
+
"name": {
|
|
71323
|
+
"type": "string"
|
|
71324
|
+
}
|
|
71325
|
+
}
|
|
71326
|
+
},
|
|
71327
|
+
"client": {
|
|
71328
|
+
"type": "object",
|
|
71329
|
+
"required": [
|
|
71330
|
+
"name",
|
|
71331
|
+
"localhost_only"
|
|
71332
|
+
],
|
|
71333
|
+
"properties": {
|
|
71334
|
+
"name": {
|
|
71335
|
+
"type": "string"
|
|
71336
|
+
},
|
|
71337
|
+
"logo_uri": {
|
|
71338
|
+
"type": "string"
|
|
71339
|
+
},
|
|
71340
|
+
"client_uri": {
|
|
71341
|
+
"type": "string"
|
|
71342
|
+
},
|
|
71343
|
+
"redirect_host": {
|
|
71344
|
+
"type": "string"
|
|
71345
|
+
},
|
|
71346
|
+
"localhost_only": {
|
|
71347
|
+
"type": "boolean"
|
|
71348
|
+
},
|
|
71349
|
+
"metadata_document_url": {
|
|
71350
|
+
"type": "string"
|
|
71351
|
+
}
|
|
71352
|
+
}
|
|
71353
|
+
},
|
|
71354
|
+
"user": {
|
|
71355
|
+
"type": "object",
|
|
71356
|
+
"properties": {
|
|
71357
|
+
"email": {
|
|
71358
|
+
"type": "string"
|
|
71359
|
+
},
|
|
71360
|
+
"name": {
|
|
71361
|
+
"type": "string"
|
|
71362
|
+
}
|
|
71363
|
+
}
|
|
71364
|
+
},
|
|
71365
|
+
"resource": {
|
|
71366
|
+
"type": "object",
|
|
71367
|
+
"required": [
|
|
71368
|
+
"identifier",
|
|
71369
|
+
"name"
|
|
71370
|
+
],
|
|
71371
|
+
"properties": {
|
|
71372
|
+
"identifier": {
|
|
71373
|
+
"type": "string"
|
|
71374
|
+
},
|
|
71375
|
+
"name": {
|
|
71376
|
+
"type": "string"
|
|
71377
|
+
}
|
|
71378
|
+
}
|
|
71379
|
+
},
|
|
71380
|
+
"scopes": {
|
|
71381
|
+
"type": "array",
|
|
71382
|
+
"items": {
|
|
71383
|
+
"type": "object",
|
|
71384
|
+
"required": [
|
|
71385
|
+
"value",
|
|
71386
|
+
"description"
|
|
71387
|
+
],
|
|
71388
|
+
"properties": {
|
|
71389
|
+
"value": {
|
|
71390
|
+
"type": "string"
|
|
71391
|
+
},
|
|
71392
|
+
"description": {
|
|
71393
|
+
"type": "string"
|
|
71394
|
+
}
|
|
71395
|
+
}
|
|
71396
|
+
}
|
|
71397
|
+
},
|
|
71398
|
+
"choice": {
|
|
71399
|
+
"type": "object",
|
|
71400
|
+
"required": [
|
|
71401
|
+
"label",
|
|
71402
|
+
"options"
|
|
71403
|
+
],
|
|
71404
|
+
"properties": {
|
|
71405
|
+
"label": {
|
|
71406
|
+
"type": "string"
|
|
71407
|
+
},
|
|
71408
|
+
"options": {
|
|
71409
|
+
"type": "array",
|
|
71410
|
+
"items": {
|
|
71411
|
+
"type": "object",
|
|
71412
|
+
"required": [
|
|
71413
|
+
"id",
|
|
71414
|
+
"name"
|
|
71415
|
+
],
|
|
71416
|
+
"properties": {
|
|
71417
|
+
"id": {
|
|
71418
|
+
"type": "string"
|
|
71419
|
+
},
|
|
71420
|
+
"name": {
|
|
71421
|
+
"type": "string"
|
|
71422
|
+
}
|
|
71423
|
+
}
|
|
71424
|
+
}
|
|
71425
|
+
}
|
|
71426
|
+
}
|
|
71427
|
+
}
|
|
71428
|
+
}
|
|
71429
|
+
}
|
|
71430
|
+
}
|
|
71431
|
+
}
|
|
71432
|
+
},
|
|
71433
|
+
"400": {
|
|
71434
|
+
"description": "`invalid_state` — The `state` is missing, expired, or does not describe a resumable step.\n\n`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
|
|
71435
|
+
"content": {
|
|
71436
|
+
"application/json": {
|
|
71437
|
+
"schema": {
|
|
71438
|
+
"allOf": [
|
|
71439
|
+
{
|
|
71440
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
71441
|
+
},
|
|
71442
|
+
{
|
|
71443
|
+
"type": "object",
|
|
71444
|
+
"properties": {
|
|
71445
|
+
"error_code": {
|
|
71446
|
+
"type": "string",
|
|
71447
|
+
"enum": [
|
|
71448
|
+
"invalid_state",
|
|
71449
|
+
"validation_error"
|
|
71450
|
+
]
|
|
71451
|
+
}
|
|
71452
|
+
}
|
|
71453
|
+
}
|
|
71454
|
+
]
|
|
71455
|
+
}
|
|
71456
|
+
}
|
|
71457
|
+
}
|
|
71458
|
+
},
|
|
71459
|
+
"401": {
|
|
71460
|
+
"description": "`state_mismatch` — The `state` belongs to another account, session, client or ceremony.\n\n`session_missing` — The session that started this login no longer exists.",
|
|
71461
|
+
"content": {
|
|
71462
|
+
"application/json": {
|
|
71463
|
+
"schema": {
|
|
71464
|
+
"allOf": [
|
|
71465
|
+
{
|
|
71466
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
71467
|
+
},
|
|
71468
|
+
{
|
|
71469
|
+
"type": "object",
|
|
71470
|
+
"properties": {
|
|
71471
|
+
"error_code": {
|
|
71472
|
+
"type": "string",
|
|
71473
|
+
"enum": [
|
|
71474
|
+
"state_mismatch",
|
|
71475
|
+
"session_missing"
|
|
71476
|
+
]
|
|
71477
|
+
}
|
|
71478
|
+
}
|
|
71479
|
+
}
|
|
71480
|
+
]
|
|
71481
|
+
}
|
|
71482
|
+
}
|
|
71483
|
+
}
|
|
71484
|
+
},
|
|
71485
|
+
"404": {
|
|
71486
|
+
"description": "`account_not_found` — No Auth Account matches the request (domain, header or token).",
|
|
71487
|
+
"content": {
|
|
71488
|
+
"application/json": {
|
|
71489
|
+
"schema": {
|
|
71490
|
+
"allOf": [
|
|
71491
|
+
{
|
|
71492
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
71493
|
+
},
|
|
71494
|
+
{
|
|
71495
|
+
"type": "object",
|
|
71496
|
+
"properties": {
|
|
71497
|
+
"error_code": {
|
|
71498
|
+
"type": "string",
|
|
71499
|
+
"enum": [
|
|
71500
|
+
"account_not_found"
|
|
71501
|
+
]
|
|
71502
|
+
}
|
|
71503
|
+
}
|
|
71504
|
+
}
|
|
71505
|
+
]
|
|
71506
|
+
}
|
|
71507
|
+
}
|
|
71508
|
+
}
|
|
71509
|
+
},
|
|
71510
|
+
"429": {
|
|
71511
|
+
"description": "`too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header.",
|
|
71512
|
+
"content": {
|
|
71513
|
+
"application/json": {
|
|
71514
|
+
"schema": {
|
|
71515
|
+
"allOf": [
|
|
71516
|
+
{
|
|
71517
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
71518
|
+
},
|
|
71519
|
+
{
|
|
71520
|
+
"type": "object",
|
|
71521
|
+
"properties": {
|
|
71522
|
+
"error_code": {
|
|
71523
|
+
"type": "string",
|
|
71524
|
+
"enum": [
|
|
71525
|
+
"too_many_requests"
|
|
71526
|
+
]
|
|
71527
|
+
}
|
|
71528
|
+
}
|
|
71529
|
+
}
|
|
71530
|
+
]
|
|
71531
|
+
}
|
|
71532
|
+
}
|
|
71533
|
+
}
|
|
71534
|
+
},
|
|
71535
|
+
"500": {
|
|
71536
|
+
"description": "`internal_error` — Unexpected server error. Retry later; the request id is logged.",
|
|
71537
|
+
"content": {
|
|
71538
|
+
"application/json": {
|
|
71539
|
+
"schema": {
|
|
71540
|
+
"allOf": [
|
|
71541
|
+
{
|
|
71542
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
71543
|
+
},
|
|
71544
|
+
{
|
|
71545
|
+
"type": "object",
|
|
71546
|
+
"properties": {
|
|
71547
|
+
"error_code": {
|
|
71548
|
+
"type": "string",
|
|
71549
|
+
"enum": [
|
|
71550
|
+
"internal_error"
|
|
71551
|
+
]
|
|
71552
|
+
}
|
|
71553
|
+
}
|
|
71554
|
+
}
|
|
71555
|
+
]
|
|
71556
|
+
}
|
|
71557
|
+
}
|
|
71558
|
+
}
|
|
71559
|
+
},
|
|
71560
|
+
"502": {
|
|
71561
|
+
"description": "`consent_options_unavailable` — The consent screen could not load the choices from the API being authorized (its `consent_options.url`). Try again in a moment.",
|
|
71562
|
+
"content": {
|
|
71563
|
+
"application/json": {
|
|
71564
|
+
"schema": {
|
|
71565
|
+
"allOf": [
|
|
71566
|
+
{
|
|
71567
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
71568
|
+
},
|
|
71569
|
+
{
|
|
71570
|
+
"type": "object",
|
|
71571
|
+
"properties": {
|
|
71572
|
+
"error_code": {
|
|
71573
|
+
"type": "string",
|
|
71574
|
+
"enum": [
|
|
71575
|
+
"consent_options_unavailable"
|
|
71576
|
+
]
|
|
71577
|
+
}
|
|
71578
|
+
}
|
|
71579
|
+
}
|
|
71580
|
+
]
|
|
71581
|
+
}
|
|
71582
|
+
}
|
|
71583
|
+
}
|
|
71584
|
+
}
|
|
71585
|
+
}
|
|
71586
|
+
}
|
|
71587
|
+
},
|
|
71588
|
+
"/consent": {
|
|
71589
|
+
"post": {
|
|
71590
|
+
"summary": "Allow or deny a client on the consent screen",
|
|
71591
|
+
"tags": [
|
|
71592
|
+
"oauth"
|
|
71593
|
+
],
|
|
71594
|
+
"description": "Records the decision and returns where the browser goes next: on `allow`, on to the client with its code (the grant is remembered, so the screen is not shown again for the same permissions); on `deny`, back to the client with `error=access_denied`. `choice` is required when the consent context offered one, and must be one of its options.",
|
|
71595
|
+
"requestBody": {
|
|
71596
|
+
"required": true,
|
|
71597
|
+
"content": {
|
|
71598
|
+
"application/json": {
|
|
71599
|
+
"schema": {
|
|
71600
|
+
"type": "object",
|
|
71601
|
+
"required": [
|
|
71602
|
+
"state",
|
|
71603
|
+
"decision"
|
|
71604
|
+
],
|
|
71605
|
+
"properties": {
|
|
71606
|
+
"state": {
|
|
71607
|
+
"type": "string"
|
|
71608
|
+
},
|
|
71609
|
+
"decision": {
|
|
71610
|
+
"anyOf": [
|
|
71611
|
+
{
|
|
71612
|
+
"type": "string",
|
|
71613
|
+
"enum": [
|
|
71614
|
+
"allow"
|
|
71615
|
+
]
|
|
71616
|
+
},
|
|
71617
|
+
{
|
|
71618
|
+
"type": "string",
|
|
71619
|
+
"enum": [
|
|
71620
|
+
"deny"
|
|
71621
|
+
]
|
|
71622
|
+
}
|
|
71623
|
+
]
|
|
71624
|
+
},
|
|
71625
|
+
"choice": {
|
|
71626
|
+
"type": "string"
|
|
71627
|
+
}
|
|
71628
|
+
}
|
|
71629
|
+
}
|
|
71630
|
+
}
|
|
71631
|
+
}
|
|
71632
|
+
},
|
|
71633
|
+
"responses": {
|
|
71634
|
+
"200": {
|
|
71635
|
+
"description": "Default Response",
|
|
71636
|
+
"content": {
|
|
71637
|
+
"application/json": {
|
|
71638
|
+
"schema": {
|
|
71639
|
+
"type": "object",
|
|
71640
|
+
"required": [
|
|
71641
|
+
"redirect_url"
|
|
71642
|
+
],
|
|
71643
|
+
"properties": {
|
|
71644
|
+
"redirect_url": {
|
|
71645
|
+
"type": "string"
|
|
71646
|
+
}
|
|
71647
|
+
}
|
|
71648
|
+
}
|
|
71649
|
+
}
|
|
71650
|
+
}
|
|
71651
|
+
},
|
|
71652
|
+
"400": {
|
|
71653
|
+
"description": "`invalid_state` — The `state` is missing, expired, or does not describe a resumable step.\n\n`consent_choice_invalid` — The choice sent with the consent decision is not one the API offered for this user.\n\n`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
|
|
71654
|
+
"content": {
|
|
71655
|
+
"application/json": {
|
|
71656
|
+
"schema": {
|
|
71657
|
+
"allOf": [
|
|
71658
|
+
{
|
|
71659
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
71660
|
+
},
|
|
71661
|
+
{
|
|
71662
|
+
"type": "object",
|
|
71663
|
+
"properties": {
|
|
71664
|
+
"error_code": {
|
|
71665
|
+
"type": "string",
|
|
71666
|
+
"enum": [
|
|
71667
|
+
"invalid_state",
|
|
71668
|
+
"consent_choice_invalid",
|
|
71669
|
+
"validation_error"
|
|
71670
|
+
]
|
|
71671
|
+
}
|
|
71672
|
+
}
|
|
71673
|
+
}
|
|
71674
|
+
]
|
|
71675
|
+
}
|
|
71676
|
+
}
|
|
71677
|
+
}
|
|
71678
|
+
},
|
|
71679
|
+
"401": {
|
|
71680
|
+
"description": "`state_mismatch` — The `state` belongs to another account, session, client or ceremony.\n\n`session_missing` — The session that started this login no longer exists.",
|
|
71681
|
+
"content": {
|
|
71682
|
+
"application/json": {
|
|
71683
|
+
"schema": {
|
|
71684
|
+
"allOf": [
|
|
71685
|
+
{
|
|
71686
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
71687
|
+
},
|
|
71688
|
+
{
|
|
71689
|
+
"type": "object",
|
|
71690
|
+
"properties": {
|
|
71691
|
+
"error_code": {
|
|
71692
|
+
"type": "string",
|
|
71693
|
+
"enum": [
|
|
71694
|
+
"state_mismatch",
|
|
71695
|
+
"session_missing"
|
|
71696
|
+
]
|
|
71697
|
+
}
|
|
71698
|
+
}
|
|
71699
|
+
}
|
|
71700
|
+
]
|
|
71701
|
+
}
|
|
71702
|
+
}
|
|
71703
|
+
}
|
|
71704
|
+
},
|
|
71705
|
+
"404": {
|
|
71706
|
+
"description": "`account_not_found` — No Auth Account matches the request (domain, header or token).",
|
|
71707
|
+
"content": {
|
|
71708
|
+
"application/json": {
|
|
71709
|
+
"schema": {
|
|
71710
|
+
"allOf": [
|
|
71711
|
+
{
|
|
71712
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
71713
|
+
},
|
|
71714
|
+
{
|
|
71715
|
+
"type": "object",
|
|
71716
|
+
"properties": {
|
|
71717
|
+
"error_code": {
|
|
71718
|
+
"type": "string",
|
|
71719
|
+
"enum": [
|
|
71720
|
+
"account_not_found"
|
|
71721
|
+
]
|
|
71722
|
+
}
|
|
71723
|
+
}
|
|
71724
|
+
}
|
|
71725
|
+
]
|
|
71726
|
+
}
|
|
71727
|
+
}
|
|
71728
|
+
}
|
|
71729
|
+
},
|
|
71730
|
+
"429": {
|
|
71731
|
+
"description": "`too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header.",
|
|
71732
|
+
"content": {
|
|
71733
|
+
"application/json": {
|
|
71734
|
+
"schema": {
|
|
71735
|
+
"allOf": [
|
|
71736
|
+
{
|
|
71737
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
71738
|
+
},
|
|
71739
|
+
{
|
|
71740
|
+
"type": "object",
|
|
71741
|
+
"properties": {
|
|
71742
|
+
"error_code": {
|
|
71743
|
+
"type": "string",
|
|
71744
|
+
"enum": [
|
|
71745
|
+
"too_many_requests"
|
|
71746
|
+
]
|
|
71747
|
+
}
|
|
71748
|
+
}
|
|
71749
|
+
}
|
|
71750
|
+
]
|
|
71751
|
+
}
|
|
71752
|
+
}
|
|
71753
|
+
}
|
|
71754
|
+
},
|
|
71755
|
+
"500": {
|
|
71756
|
+
"description": "`internal_error` — Unexpected server error. Retry later; the request id is logged.",
|
|
71757
|
+
"content": {
|
|
71758
|
+
"application/json": {
|
|
71759
|
+
"schema": {
|
|
71760
|
+
"allOf": [
|
|
71761
|
+
{
|
|
71762
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
71763
|
+
},
|
|
71764
|
+
{
|
|
71765
|
+
"type": "object",
|
|
71766
|
+
"properties": {
|
|
71767
|
+
"error_code": {
|
|
71768
|
+
"type": "string",
|
|
71769
|
+
"enum": [
|
|
71770
|
+
"internal_error"
|
|
71771
|
+
]
|
|
71772
|
+
}
|
|
71773
|
+
}
|
|
71774
|
+
}
|
|
71775
|
+
]
|
|
71776
|
+
}
|
|
71777
|
+
}
|
|
71778
|
+
}
|
|
71779
|
+
},
|
|
71780
|
+
"502": {
|
|
71781
|
+
"description": "`consent_options_unavailable` — The consent screen could not load the choices from the API being authorized (its `consent_options.url`). Try again in a moment.",
|
|
71782
|
+
"content": {
|
|
71783
|
+
"application/json": {
|
|
71784
|
+
"schema": {
|
|
71785
|
+
"allOf": [
|
|
71786
|
+
{
|
|
71787
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
71788
|
+
},
|
|
71789
|
+
{
|
|
71790
|
+
"type": "object",
|
|
71791
|
+
"properties": {
|
|
71792
|
+
"error_code": {
|
|
71793
|
+
"type": "string",
|
|
71794
|
+
"enum": [
|
|
71795
|
+
"consent_options_unavailable"
|
|
71796
|
+
]
|
|
71797
|
+
}
|
|
71798
|
+
}
|
|
71799
|
+
}
|
|
71800
|
+
]
|
|
71801
|
+
}
|
|
71802
|
+
}
|
|
71803
|
+
}
|
|
71804
|
+
}
|
|
71805
|
+
}
|
|
71806
|
+
}
|
|
71807
|
+
},
|
|
71808
|
+
"/oauth/revoke": {
|
|
71809
|
+
"post": {
|
|
71810
|
+
"operationId": "oauth/revoke",
|
|
71811
|
+
"summary": "Revoke a token (RFC 7009)",
|
|
71812
|
+
"tags": [
|
|
71813
|
+
"oauth"
|
|
71814
|
+
],
|
|
71815
|
+
"description": "Revokes a refresh token (and, for a client the End-User had to allow, the grant behind it). Access tokens are short-lived and not revocable; the response is 200 either way, also for an unknown token. The client authenticates as at the token endpoint: `client_secret_basic`, `client_secret_post`, or just `client_id` for a public client.",
|
|
71816
|
+
"requestBody": {
|
|
71817
|
+
"required": true,
|
|
71818
|
+
"content": {
|
|
71819
|
+
"application/json": {
|
|
71820
|
+
"schema": {
|
|
71821
|
+
"type": "object",
|
|
71822
|
+
"required": [
|
|
71823
|
+
"token"
|
|
71824
|
+
],
|
|
71825
|
+
"properties": {
|
|
71826
|
+
"token": {
|
|
71827
|
+
"type": "string"
|
|
71828
|
+
},
|
|
71829
|
+
"token_type_hint": {
|
|
71830
|
+
"type": "string"
|
|
71831
|
+
},
|
|
71832
|
+
"client_id": {
|
|
71833
|
+
"type": "string"
|
|
71834
|
+
},
|
|
71835
|
+
"client_secret": {
|
|
71836
|
+
"type": "string"
|
|
71837
|
+
}
|
|
71838
|
+
}
|
|
71839
|
+
}
|
|
71840
|
+
}
|
|
71841
|
+
}
|
|
71842
|
+
},
|
|
71843
|
+
"responses": {
|
|
71844
|
+
"200": {
|
|
71845
|
+
"description": "Default Response"
|
|
71846
|
+
},
|
|
71847
|
+
"400": {
|
|
71848
|
+
"description": "`invalid_client` — The `client_id` in the request does not name a client of this account.\n\n`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
|
|
71849
|
+
"content": {
|
|
71850
|
+
"application/json": {
|
|
71851
|
+
"schema": {
|
|
71852
|
+
"allOf": [
|
|
71853
|
+
{
|
|
71854
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
71855
|
+
},
|
|
71856
|
+
{
|
|
71857
|
+
"type": "object",
|
|
71858
|
+
"properties": {
|
|
71859
|
+
"error_code": {
|
|
71860
|
+
"type": "string",
|
|
71861
|
+
"enum": [
|
|
71862
|
+
"invalid_client",
|
|
71863
|
+
"validation_error"
|
|
71864
|
+
]
|
|
71865
|
+
}
|
|
71866
|
+
}
|
|
71867
|
+
}
|
|
71868
|
+
]
|
|
71869
|
+
}
|
|
71870
|
+
}
|
|
71871
|
+
}
|
|
71872
|
+
},
|
|
71873
|
+
"404": {
|
|
71874
|
+
"description": "`account_not_found` — No Auth Account matches the request (domain, header or token).",
|
|
71875
|
+
"content": {
|
|
71876
|
+
"application/json": {
|
|
71877
|
+
"schema": {
|
|
71878
|
+
"allOf": [
|
|
71879
|
+
{
|
|
71880
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
71881
|
+
},
|
|
71882
|
+
{
|
|
71883
|
+
"type": "object",
|
|
71884
|
+
"properties": {
|
|
71885
|
+
"error_code": {
|
|
71886
|
+
"type": "string",
|
|
71887
|
+
"enum": [
|
|
71888
|
+
"account_not_found"
|
|
71889
|
+
]
|
|
71890
|
+
}
|
|
71891
|
+
}
|
|
71892
|
+
}
|
|
71893
|
+
]
|
|
71894
|
+
}
|
|
71895
|
+
}
|
|
71896
|
+
}
|
|
71897
|
+
},
|
|
71898
|
+
"429": {
|
|
71899
|
+
"description": "`too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header.",
|
|
71900
|
+
"content": {
|
|
71901
|
+
"application/json": {
|
|
71902
|
+
"schema": {
|
|
71903
|
+
"allOf": [
|
|
71904
|
+
{
|
|
71905
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
71906
|
+
},
|
|
71907
|
+
{
|
|
71908
|
+
"type": "object",
|
|
71909
|
+
"properties": {
|
|
71910
|
+
"error_code": {
|
|
71911
|
+
"type": "string",
|
|
71912
|
+
"enum": [
|
|
71913
|
+
"too_many_requests"
|
|
71914
|
+
]
|
|
71915
|
+
}
|
|
71916
|
+
}
|
|
71917
|
+
}
|
|
71918
|
+
]
|
|
71919
|
+
}
|
|
71920
|
+
}
|
|
71921
|
+
}
|
|
71922
|
+
},
|
|
71923
|
+
"500": {
|
|
71924
|
+
"description": "`internal_error` — Unexpected server error. Retry later; the request id is logged.",
|
|
71925
|
+
"content": {
|
|
71926
|
+
"application/json": {
|
|
71927
|
+
"schema": {
|
|
71928
|
+
"allOf": [
|
|
71929
|
+
{
|
|
71930
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
71931
|
+
},
|
|
71932
|
+
{
|
|
71933
|
+
"type": "object",
|
|
71934
|
+
"properties": {
|
|
71935
|
+
"error_code": {
|
|
71936
|
+
"type": "string",
|
|
71937
|
+
"enum": [
|
|
71938
|
+
"internal_error"
|
|
71939
|
+
]
|
|
71940
|
+
}
|
|
71941
|
+
}
|
|
71942
|
+
}
|
|
71943
|
+
]
|
|
71944
|
+
}
|
|
71945
|
+
}
|
|
71946
|
+
}
|
|
71947
|
+
}
|
|
71948
|
+
}
|
|
71949
|
+
}
|
|
71950
|
+
},
|
|
70030
71951
|
"/usernamepassword/login": {
|
|
70031
71952
|
"post": {
|
|
70032
71953
|
"operationId": "usernamepassword/login",
|