@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.
@@ -4242,6 +4242,213 @@ export interface paths {
4242
4242
  patch?: never;
4243
4243
  trace?: never;
4244
4244
  };
4245
+ "/me/grants": {
4246
+ parameters: {
4247
+ query?: never;
4248
+ header?: never;
4249
+ path?: never;
4250
+ cookie?: never;
4251
+ };
4252
+ /**
4253
+ * Apps the signed-in user has connected
4254
+ * @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).
4255
+ */
4256
+ get: {
4257
+ parameters: {
4258
+ query?: never;
4259
+ header?: never;
4260
+ path?: never;
4261
+ cookie?: never;
4262
+ };
4263
+ requestBody?: never;
4264
+ responses: {
4265
+ /** @description Default Response */
4266
+ 200: {
4267
+ headers: {
4268
+ [name: string]: unknown;
4269
+ };
4270
+ content: {
4271
+ "application/json": {
4272
+ data: {
4273
+ id: string;
4274
+ client: {
4275
+ name: string;
4276
+ logo_uri?: string;
4277
+ client_uri?: string;
4278
+ metadata_document_url?: string;
4279
+ };
4280
+ resource: string;
4281
+ scopes: string[];
4282
+ options?: {
4283
+ [key: string]: string;
4284
+ };
4285
+ created_at: string;
4286
+ last_used_at?: string;
4287
+ }[];
4288
+ };
4289
+ };
4290
+ };
4291
+ /** @description `not_logged_in` — There is no signed-in session for this request. */
4292
+ 401: {
4293
+ headers: {
4294
+ [name: string]: unknown;
4295
+ };
4296
+ content: {
4297
+ "application/json": components["schemas"]["ErrorResponse"] & {
4298
+ /** @enum {string} */
4299
+ error_code?: "not_logged_in";
4300
+ };
4301
+ };
4302
+ };
4303
+ /** @description `account_not_found` — No Auth Account matches the request (domain, header or token). */
4304
+ 404: {
4305
+ headers: {
4306
+ [name: string]: unknown;
4307
+ };
4308
+ content: {
4309
+ "application/json": components["schemas"]["ErrorResponse"] & {
4310
+ /** @enum {string} */
4311
+ error_code?: "account_not_found";
4312
+ };
4313
+ };
4314
+ };
4315
+ /** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
4316
+ 429: {
4317
+ headers: {
4318
+ [name: string]: unknown;
4319
+ };
4320
+ content: {
4321
+ "application/json": components["schemas"]["ErrorResponse"] & {
4322
+ /** @enum {string} */
4323
+ error_code?: "too_many_requests";
4324
+ };
4325
+ };
4326
+ };
4327
+ /** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
4328
+ 500: {
4329
+ headers: {
4330
+ [name: string]: unknown;
4331
+ };
4332
+ content: {
4333
+ "application/json": components["schemas"]["ErrorResponse"] & {
4334
+ /** @enum {string} */
4335
+ error_code?: "internal_error";
4336
+ };
4337
+ };
4338
+ };
4339
+ };
4340
+ };
4341
+ put?: never;
4342
+ post?: never;
4343
+ delete?: never;
4344
+ options?: never;
4345
+ head?: never;
4346
+ patch?: never;
4347
+ trace?: never;
4348
+ };
4349
+ "/me/grants/{grant_id}": {
4350
+ parameters: {
4351
+ query?: never;
4352
+ header?: never;
4353
+ path?: never;
4354
+ cookie?: never;
4355
+ };
4356
+ get?: never;
4357
+ put?: never;
4358
+ post?: never;
4359
+ /**
4360
+ * Disconnect an app
4361
+ * @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.
4362
+ */
4363
+ delete: {
4364
+ parameters: {
4365
+ query?: never;
4366
+ header?: never;
4367
+ path: {
4368
+ grant_id: string;
4369
+ };
4370
+ cookie?: never;
4371
+ };
4372
+ requestBody?: never;
4373
+ responses: {
4374
+ /** @description Default Response */
4375
+ 200: {
4376
+ headers: {
4377
+ [name: string]: unknown;
4378
+ };
4379
+ content?: never;
4380
+ };
4381
+ /** @description `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field. */
4382
+ 400: {
4383
+ headers: {
4384
+ [name: string]: unknown;
4385
+ };
4386
+ content: {
4387
+ "application/json": components["schemas"]["ErrorResponse"] & {
4388
+ /** @enum {string} */
4389
+ error_code?: "validation_error";
4390
+ };
4391
+ };
4392
+ };
4393
+ /** @description `not_logged_in` — There is no signed-in session for this request. */
4394
+ 401: {
4395
+ headers: {
4396
+ [name: string]: unknown;
4397
+ };
4398
+ content: {
4399
+ "application/json": components["schemas"]["ErrorResponse"] & {
4400
+ /** @enum {string} */
4401
+ error_code?: "not_logged_in";
4402
+ };
4403
+ };
4404
+ };
4405
+ /**
4406
+ * @description `not_found` — The resource does not exist in this account.
4407
+ *
4408
+ * `account_not_found` — No Auth Account matches the request (domain, header or token).
4409
+ */
4410
+ 404: {
4411
+ headers: {
4412
+ [name: string]: unknown;
4413
+ };
4414
+ content: {
4415
+ "application/json": components["schemas"]["ErrorResponse"] & {
4416
+ /** @enum {string} */
4417
+ error_code?: "not_found" | "account_not_found";
4418
+ };
4419
+ };
4420
+ };
4421
+ /** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
4422
+ 429: {
4423
+ headers: {
4424
+ [name: string]: unknown;
4425
+ };
4426
+ content: {
4427
+ "application/json": components["schemas"]["ErrorResponse"] & {
4428
+ /** @enum {string} */
4429
+ error_code?: "too_many_requests";
4430
+ };
4431
+ };
4432
+ };
4433
+ /** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
4434
+ 500: {
4435
+ headers: {
4436
+ [name: string]: unknown;
4437
+ };
4438
+ content: {
4439
+ "application/json": components["schemas"]["ErrorResponse"] & {
4440
+ /** @enum {string} */
4441
+ error_code?: "internal_error";
4442
+ };
4443
+ };
4444
+ };
4445
+ };
4446
+ };
4447
+ options?: never;
4448
+ head?: never;
4449
+ patch?: never;
4450
+ trace?: never;
4451
+ };
4245
4452
  "/me": {
4246
4453
  parameters: {
4247
4454
  query?: never;
@@ -4614,6 +4821,26 @@ export interface paths {
4614
4821
  patch?: never;
4615
4822
  trace?: never;
4616
4823
  };
4824
+ "/.well-known/oauth-authorization-server": {
4825
+ parameters: {
4826
+ query?: never;
4827
+ header?: never;
4828
+ path?: never;
4829
+ cookie?: never;
4830
+ };
4831
+ /**
4832
+ * OAuth 2.0 Authorization Server Metadata (RFC 8414)
4833
+ * @description The same provider metadata as the OpenID Connect Discovery document, at the RFC 8414 location that OAuth 2.0 and MCP clients query.
4834
+ */
4835
+ get: operations["oauth/authorizationServerMetadata"];
4836
+ put?: never;
4837
+ post?: never;
4838
+ delete?: never;
4839
+ options?: never;
4840
+ head?: never;
4841
+ patch?: never;
4842
+ trace?: never;
4843
+ };
4617
4844
  "/.well-known/jwks.json": {
4618
4845
  parameters: {
4619
4846
  query?: never;
@@ -4641,24 +4868,327 @@ export interface paths {
4641
4868
  path?: never;
4642
4869
  cookie?: never;
4643
4870
  };
4644
- /**
4645
- * OpenID Connect UserInfo endpoint
4646
- * @description Returns claims about the authenticated User. Authentication is via a Bearer access token (RFC 6750). Returned claims are filtered by the `scope` claim of the access token (OIDC §5.3.2). The response always contains `sub`. See https://openid.net/specs/openid-connect-core-1_0.html#UserInfo.
4647
- */
4648
- get: operations["oauth/userinfo"];
4649
- put?: never;
4650
- /**
4651
- * OpenID Connect UserInfo endpoint (POST)
4652
- * @description Same as `GET /userinfo`. Provided for clients that prefer to send the Bearer token in a POST body or are required to by spec compliance audits.
4653
- */
4654
- post: operations["oauth/userinfoPost"];
4871
+ /**
4872
+ * OpenID Connect UserInfo endpoint
4873
+ * @description Returns claims about the authenticated User. Authentication is via a Bearer access token (RFC 6750). Returned claims are filtered by the `scope` claim of the access token (OIDC §5.3.2). The response always contains `sub`. See https://openid.net/specs/openid-connect-core-1_0.html#UserInfo.
4874
+ */
4875
+ get: operations["oauth/userinfo"];
4876
+ put?: never;
4877
+ /**
4878
+ * OpenID Connect UserInfo endpoint (POST)
4879
+ * @description Same as `GET /userinfo`. Provided for clients that prefer to send the Bearer token in a POST body or are required to by spec compliance audits.
4880
+ */
4881
+ post: operations["oauth/userinfoPost"];
4882
+ delete?: never;
4883
+ options?: never;
4884
+ head?: never;
4885
+ patch?: never;
4886
+ trace?: never;
4887
+ };
4888
+ "/oidc/register": {
4889
+ parameters: {
4890
+ query?: never;
4891
+ header?: never;
4892
+ path?: never;
4893
+ cookie?: never;
4894
+ };
4895
+ get?: never;
4896
+ put?: never;
4897
+ /**
4898
+ * OpenID Connect Dynamic Client Registration
4899
+ * @description Register a new OAuth/OIDC client dynamically (OIDC Dynamic Client Registration 1.0 / RFC 7591). The new client is bound to the Account resolved from the request context. Only when the tenant has `dynamic_client_registration_enabled`; otherwise `registration_disabled` (403).
4900
+ */
4901
+ post: operations["oauth/register"];
4902
+ delete?: never;
4903
+ options?: never;
4904
+ head?: never;
4905
+ patch?: never;
4906
+ trace?: never;
4907
+ };
4908
+ "/consent/context": {
4909
+ parameters: {
4910
+ query?: never;
4911
+ header?: never;
4912
+ path?: never;
4913
+ cookie?: never;
4914
+ };
4915
+ /**
4916
+ * What the consent screen shows
4917
+ * @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).
4918
+ */
4919
+ get: {
4920
+ parameters: {
4921
+ query: {
4922
+ state: string;
4923
+ };
4924
+ header?: never;
4925
+ path?: never;
4926
+ cookie?: never;
4927
+ };
4928
+ requestBody?: never;
4929
+ responses: {
4930
+ /** @description Default Response */
4931
+ 200: {
4932
+ headers: {
4933
+ [name: string]: unknown;
4934
+ };
4935
+ content: {
4936
+ "application/json": {
4937
+ account: {
4938
+ name?: string;
4939
+ };
4940
+ client: {
4941
+ name: string;
4942
+ logo_uri?: string;
4943
+ client_uri?: string;
4944
+ redirect_host?: string;
4945
+ localhost_only: boolean;
4946
+ metadata_document_url?: string;
4947
+ };
4948
+ user: {
4949
+ email?: string;
4950
+ name?: string;
4951
+ };
4952
+ resource?: {
4953
+ identifier: string;
4954
+ name: string;
4955
+ };
4956
+ scopes: {
4957
+ value: string;
4958
+ description: string;
4959
+ }[];
4960
+ choice?: {
4961
+ label: string;
4962
+ options: {
4963
+ id: string;
4964
+ name: string;
4965
+ }[];
4966
+ };
4967
+ };
4968
+ };
4969
+ };
4970
+ /**
4971
+ * @description `invalid_state` — The `state` is missing, expired, or does not describe a resumable step.
4972
+ *
4973
+ * `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
4974
+ */
4975
+ 400: {
4976
+ headers: {
4977
+ [name: string]: unknown;
4978
+ };
4979
+ content: {
4980
+ "application/json": components["schemas"]["ErrorResponse"] & {
4981
+ /** @enum {string} */
4982
+ error_code?: "invalid_state" | "validation_error";
4983
+ };
4984
+ };
4985
+ };
4986
+ /**
4987
+ * @description `state_mismatch` — The `state` belongs to another account, session, client or ceremony.
4988
+ *
4989
+ * `session_missing` — The session that started this login no longer exists.
4990
+ */
4991
+ 401: {
4992
+ headers: {
4993
+ [name: string]: unknown;
4994
+ };
4995
+ content: {
4996
+ "application/json": components["schemas"]["ErrorResponse"] & {
4997
+ /** @enum {string} */
4998
+ error_code?: "state_mismatch" | "session_missing";
4999
+ };
5000
+ };
5001
+ };
5002
+ /** @description `account_not_found` — No Auth Account matches the request (domain, header or token). */
5003
+ 404: {
5004
+ headers: {
5005
+ [name: string]: unknown;
5006
+ };
5007
+ content: {
5008
+ "application/json": components["schemas"]["ErrorResponse"] & {
5009
+ /** @enum {string} */
5010
+ error_code?: "account_not_found";
5011
+ };
5012
+ };
5013
+ };
5014
+ /** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
5015
+ 429: {
5016
+ headers: {
5017
+ [name: string]: unknown;
5018
+ };
5019
+ content: {
5020
+ "application/json": components["schemas"]["ErrorResponse"] & {
5021
+ /** @enum {string} */
5022
+ error_code?: "too_many_requests";
5023
+ };
5024
+ };
5025
+ };
5026
+ /** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
5027
+ 500: {
5028
+ headers: {
5029
+ [name: string]: unknown;
5030
+ };
5031
+ content: {
5032
+ "application/json": components["schemas"]["ErrorResponse"] & {
5033
+ /** @enum {string} */
5034
+ error_code?: "internal_error";
5035
+ };
5036
+ };
5037
+ };
5038
+ /** @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. */
5039
+ 502: {
5040
+ headers: {
5041
+ [name: string]: unknown;
5042
+ };
5043
+ content: {
5044
+ "application/json": components["schemas"]["ErrorResponse"] & {
5045
+ /** @enum {string} */
5046
+ error_code?: "consent_options_unavailable";
5047
+ };
5048
+ };
5049
+ };
5050
+ };
5051
+ };
5052
+ put?: never;
5053
+ post?: never;
5054
+ delete?: never;
5055
+ options?: never;
5056
+ head?: never;
5057
+ patch?: never;
5058
+ trace?: never;
5059
+ };
5060
+ "/consent": {
5061
+ parameters: {
5062
+ query?: never;
5063
+ header?: never;
5064
+ path?: never;
5065
+ cookie?: never;
5066
+ };
5067
+ get?: never;
5068
+ put?: never;
5069
+ /**
5070
+ * Allow or deny a client on the consent screen
5071
+ * @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.
5072
+ */
5073
+ post: {
5074
+ parameters: {
5075
+ query?: never;
5076
+ header?: never;
5077
+ path?: never;
5078
+ cookie?: never;
5079
+ };
5080
+ requestBody: {
5081
+ content: {
5082
+ "application/json": {
5083
+ state: string;
5084
+ decision: "allow" | "deny";
5085
+ choice?: string;
5086
+ };
5087
+ };
5088
+ };
5089
+ responses: {
5090
+ /** @description Default Response */
5091
+ 200: {
5092
+ headers: {
5093
+ [name: string]: unknown;
5094
+ };
5095
+ content: {
5096
+ "application/json": {
5097
+ redirect_url: string;
5098
+ };
5099
+ };
5100
+ };
5101
+ /**
5102
+ * @description `invalid_state` — The `state` is missing, expired, or does not describe a resumable step.
5103
+ *
5104
+ * `consent_choice_invalid` — The choice sent with the consent decision is not one the API offered for this user.
5105
+ *
5106
+ * `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
5107
+ */
5108
+ 400: {
5109
+ headers: {
5110
+ [name: string]: unknown;
5111
+ };
5112
+ content: {
5113
+ "application/json": components["schemas"]["ErrorResponse"] & {
5114
+ /** @enum {string} */
5115
+ error_code?: "invalid_state" | "consent_choice_invalid" | "validation_error";
5116
+ };
5117
+ };
5118
+ };
5119
+ /**
5120
+ * @description `state_mismatch` — The `state` belongs to another account, session, client or ceremony.
5121
+ *
5122
+ * `session_missing` — The session that started this login no longer exists.
5123
+ */
5124
+ 401: {
5125
+ headers: {
5126
+ [name: string]: unknown;
5127
+ };
5128
+ content: {
5129
+ "application/json": components["schemas"]["ErrorResponse"] & {
5130
+ /** @enum {string} */
5131
+ error_code?: "state_mismatch" | "session_missing";
5132
+ };
5133
+ };
5134
+ };
5135
+ /** @description `account_not_found` — No Auth Account matches the request (domain, header or token). */
5136
+ 404: {
5137
+ headers: {
5138
+ [name: string]: unknown;
5139
+ };
5140
+ content: {
5141
+ "application/json": components["schemas"]["ErrorResponse"] & {
5142
+ /** @enum {string} */
5143
+ error_code?: "account_not_found";
5144
+ };
5145
+ };
5146
+ };
5147
+ /** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
5148
+ 429: {
5149
+ headers: {
5150
+ [name: string]: unknown;
5151
+ };
5152
+ content: {
5153
+ "application/json": components["schemas"]["ErrorResponse"] & {
5154
+ /** @enum {string} */
5155
+ error_code?: "too_many_requests";
5156
+ };
5157
+ };
5158
+ };
5159
+ /** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
5160
+ 500: {
5161
+ headers: {
5162
+ [name: string]: unknown;
5163
+ };
5164
+ content: {
5165
+ "application/json": components["schemas"]["ErrorResponse"] & {
5166
+ /** @enum {string} */
5167
+ error_code?: "internal_error";
5168
+ };
5169
+ };
5170
+ };
5171
+ /** @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. */
5172
+ 502: {
5173
+ headers: {
5174
+ [name: string]: unknown;
5175
+ };
5176
+ content: {
5177
+ "application/json": components["schemas"]["ErrorResponse"] & {
5178
+ /** @enum {string} */
5179
+ error_code?: "consent_options_unavailable";
5180
+ };
5181
+ };
5182
+ };
5183
+ };
5184
+ };
4655
5185
  delete?: never;
4656
5186
  options?: never;
4657
5187
  head?: never;
4658
5188
  patch?: never;
4659
5189
  trace?: never;
4660
5190
  };
4661
- "/oidc/register": {
5191
+ "/oauth/revoke": {
4662
5192
  parameters: {
4663
5193
  query?: never;
4664
5194
  header?: never;
@@ -4668,10 +5198,10 @@ export interface paths {
4668
5198
  get?: never;
4669
5199
  put?: never;
4670
5200
  /**
4671
- * OpenID Connect Dynamic Client Registration
4672
- * @description Register a new OAuth/OIDC client dynamically (OIDC Dynamic Client Registration 1.0 / RFC 7591). The new client is bound to the Account resolved from the request context. Only when the tenant has `dynamic_client_registration_enabled`; otherwise `registration_disabled` (403).
5201
+ * Revoke a token (RFC 7009)
5202
+ * @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.
4673
5203
  */
4674
- post: operations["oauth/register"];
5204
+ post: operations["oauth/revoke"];
4675
5205
  delete?: never;
4676
5206
  options?: never;
4677
5207
  head?: never;
@@ -4959,6 +5489,8 @@ export interface components {
4959
5489
  logout_confirm_required?: boolean;
4960
5490
  /** @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`. */
4961
5491
  dynamic_client_registration_enabled?: boolean;
5492
+ /** @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. */
5493
+ client_id_metadata_documents_enabled?: boolean;
4962
5494
  /** @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. */
4963
5495
  canonical_host?: string | null;
4964
5496
  /** @description AuthAccount creation date */
@@ -5227,6 +5759,11 @@ export interface components {
5227
5759
  grant_types?: string[];
5228
5760
  response_types?: string[];
5229
5761
  token_endpoint_auth_method?: string;
5762
+ /** @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). */
5763
+ consent_required?: boolean;
5764
+ /** @description For a client identified by a Client ID Metadata Document: the URL (also its client_id) its metadata was fetched from. */
5765
+ metadata_document_url?: string;
5766
+ registered_dynamically?: boolean;
5230
5767
  application_type?: string;
5231
5768
  software_id?: string | null;
5232
5769
  software_version?: string | null;
@@ -6092,6 +6629,24 @@ export interface components {
6092
6629
  enforce_policies: boolean;
6093
6630
  /** @description When true, the API is eligible to be the target of a `refresh_token` (i.e. clients can request `offline_access` against it). */
6094
6631
  allow_offline_access: boolean;
6632
+ consent_options?: {
6633
+ /** @description Access token claim that carries the chosen id. */
6634
+ claim: string;
6635
+ /** @description What the screen asks for, e.g. "Project". */
6636
+ label: string;
6637
+ /** @description GET endpoint of the resource server that lists the choices. */
6638
+ url: string;
6639
+ /** @description Identifier of a registered API the listing token is issued for (usually the resource server behind `url`). */
6640
+ audience: string;
6641
+ /** @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. */
6642
+ scope?: string;
6643
+ } | null;
6644
+ delegation?: {
6645
+ /** @description The confidential client of the resource server allowed to exchange. */
6646
+ client_id: string;
6647
+ /** @description Identifier of the registered API the new token is for. */
6648
+ audience: string;
6649
+ } | null;
6095
6650
  /** @description When true, the consent prompt is skipped for first-party clients (clients owned by the same tenant as the API). */
6096
6651
  skip_consent: boolean;
6097
6652
  /** @description When true, access_tokens issued for this API carry a `teams` claim listing the slugs of the teams the subject is a member of within the tenant. */
@@ -6152,6 +6707,24 @@ export interface components {
6152
6707
  enforce_policies?: boolean;
6153
6708
  /** @description When true, clients can request `offline_access` and receive a refresh_token for this API. */
6154
6709
  allow_offline_access?: boolean;
6710
+ consent_options?: {
6711
+ /** @description Access token claim that carries the chosen id. */
6712
+ claim: string;
6713
+ /** @description What the screen asks for, e.g. "Project". */
6714
+ label: string;
6715
+ /** @description GET endpoint of the resource server that lists the choices. */
6716
+ url: string;
6717
+ /** @description Identifier of a registered API the listing token is issued for (usually the resource server behind `url`). */
6718
+ audience: string;
6719
+ /** @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. */
6720
+ scope?: string;
6721
+ };
6722
+ delegation?: {
6723
+ /** @description The confidential client of the resource server allowed to exchange. */
6724
+ client_id: string;
6725
+ /** @description Identifier of the registered API the new token is for. */
6726
+ audience: string;
6727
+ };
6155
6728
  /** @description When true, skip the consent prompt for first-party clients. */
6156
6729
  skip_consent?: boolean;
6157
6730
  /** @description When true, access_tokens issued for this API carry a `teams` claim with the subject team slugs. */
@@ -6181,6 +6754,24 @@ export interface components {
6181
6754
  enforce_policies?: boolean;
6182
6755
  /** @description When true, clients can request `offline_access` and receive a refresh_token for this API. */
6183
6756
  allow_offline_access?: boolean;
6757
+ consent_options?: {
6758
+ /** @description Access token claim that carries the chosen id. */
6759
+ claim: string;
6760
+ /** @description What the screen asks for, e.g. "Project". */
6761
+ label: string;
6762
+ /** @description GET endpoint of the resource server that lists the choices. */
6763
+ url: string;
6764
+ /** @description Identifier of a registered API the listing token is issued for (usually the resource server behind `url`). */
6765
+ audience: string;
6766
+ /** @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. */
6767
+ scope?: string;
6768
+ } | null;
6769
+ delegation?: {
6770
+ /** @description The confidential client of the resource server allowed to exchange. */
6771
+ client_id: string;
6772
+ /** @description Identifier of the registered API the new token is for. */
6773
+ audience: string;
6774
+ } | null;
6184
6775
  /** @description When true, skip the consent prompt for first-party clients. */
6185
6776
  skip_consent?: boolean;
6186
6777
  /** @description When true, access_tokens issued for this API carry a `teams` claim with the subject team slugs. */
@@ -7019,7 +7610,7 @@ export interface components {
7019
7610
  };
7020
7611
  ClientRegistrationResponse: {
7021
7612
  client_id: string;
7022
- client_secret: string;
7613
+ client_secret?: string;
7023
7614
  /** @description Unix timestamp (seconds) at which the client_id was issued */
7024
7615
  client_id_issued_at: number;
7025
7616
  /** @description 0 if the client_secret does not expire */
@@ -7193,6 +7784,7 @@ export interface components {
7193
7784
  webauthn_rp_id?: string | null;
7194
7785
  logout_confirm_required?: boolean | null;
7195
7786
  dynamic_client_registration_enabled?: boolean | null;
7787
+ client_id_metadata_documents_enabled?: boolean | null;
7196
7788
  canonical_host?: string | null;
7197
7789
  login_flow?: string | null;
7198
7790
  };
@@ -7403,6 +7995,8 @@ export interface components {
7403
7995
  * - `invite_used` (400): The invite was already accepted.
7404
7996
  * - `already_member` (400): The user is already a member of the team.
7405
7997
  * - `not_a_member` (404): The user is not a member of the team.
7998
+ * - `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.
7999
+ * - `consent_choice_invalid` (400): The choice sent with the consent decision is not one the API offered for this user.
7406
8000
  * - `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`.
7407
8001
  * - `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.
7408
8002
  * - `public_email_domain` (400): A public email provider (gmail.com, outlook.com…) cannot belong to an organization: anyone can have an address there.
@@ -7430,7 +8024,7 @@ export interface components {
7430
8024
  * - `delivery_in_progress` (409): The delivery is being attempted right now; retry the redeliver in a minute.
7431
8025
  * @enum {string}
7432
8026
  */
7433
- ErrorCode: "bad_request" | "validation_error" | "unauthorized" | "payment_required" | "forbidden" | "not_found" | "method_not_allowed" | "conflict" | "payload_too_large" | "unsupported_media_type" | "unprocessable_entity" | "too_many_requests" | "internal_error" | "already_exists" | "invalid_id" | "account_not_found" | "invalid_query" | "search_not_supported" | "invalid_expand" | "access_denied" | "insufficient_scope" | "team_required" | "account_limit_reached" | "invalid_project_id" | "account_transfer_refused" | "email_sender_domain_not_allowed" | "plan_required" | "invalid_canonical_host" | "canonical_host_breaks_passkeys" | "not_logged_in" | "session_already_revoked" | "invalid_token" | "not_owner" | "user_suspended" | "invalid_credentials" | "login_denied" | "signup_denied" | "client_credentials_denied" | "m2m_quota_exceeded" | "signup_disabled" | "email_taken" | "username_taken" | "invalid_username" | "invalid_email" | "invalid_name" | "same_email" | "user_has_no_email" | "password_too_weak" | "invalid_password_hash" | "weak_password_hash" | "invalid_code" | "invalid_phone" | "phone_changed" | "phone_already_verified" | "sms_unavailable" | "sms_failed" | "invalid_state" | "state_mismatch" | "invalid_ticket" | "ticket_used" | "ticket_expired" | "ticket_not_found" | "credential_not_found" | "invalid_link" | "expired_link" | "invalid_otp" | "invalid_client" | "client_not_found" | "client_mismatch" | "invalid_client_metadata" | "invalid_connection" | "no_database_connection" | "connection_required" | "connection_misconfigured" | "passwordless_unavailable" | "ambiguous_connection" | "invalid_redirect_uri" | "origin_not_allowed" | "audience_not_found" | "system_resource" | "invalid_request" | "invalid_device_code" | "provider_error" | "identity_already_linked" | "identity_link_denied" | "identity_conflict" | "identity_orphaned" | "no_provider_token" | "no_refresh_token" | "action_unavailable" | "login_flow_misconfigured" | "mfa_required" | "step_up_required" | "interaction_required" | "passkey_login_disabled" | "mfa_pending" | "mfa_invalid_code" | "mfa_invalid_recovery_code" | "too_many_attempts" | "too_many_login_attempts" | "totp_not_allowed" | "no_usable_factor" | "factor_not_found" | "factor_already_confirmed" | "invalid_factor" | "session_missing" | "passkey_verification_failed" | "no_passkey_enrolled" | "malformed_credential" | "unknown_passkey" | "invalid_passkey" | "invalid_invite_url" | "invite_email_mismatch" | "invite_email_unverified" | "invite_not_found" | "invite_used" | "already_member" | "not_a_member" | "registration_disabled" | "invalid_email_domain" | "public_email_domain" | "organization_domain_not_found" | "organization_domain_taken" | "organization_domain_unverified" | "plan_unavailable" | "organization_domain_mismatch" | "team_not_in_organization" | "organization_has_no_idp" | "organization_not_found" | "invalid_user" | "not_an_organization_admin" | "last_organization_admin" | "team_id_unavailable" | "use_team_member_route" | "role_not_found" | "invalid_role" | "flow_not_found" | "revision_not_found" | "invalid_webhook_event" | "invalid_webhook_url" | "not_a_webhook" | "delivery_not_found" | "delivery_in_progress";
8027
+ ErrorCode: "bad_request" | "validation_error" | "unauthorized" | "payment_required" | "forbidden" | "not_found" | "method_not_allowed" | "conflict" | "payload_too_large" | "unsupported_media_type" | "unprocessable_entity" | "too_many_requests" | "internal_error" | "already_exists" | "invalid_id" | "account_not_found" | "invalid_query" | "search_not_supported" | "invalid_expand" | "access_denied" | "insufficient_scope" | "team_required" | "account_limit_reached" | "invalid_project_id" | "account_transfer_refused" | "email_sender_domain_not_allowed" | "plan_required" | "invalid_canonical_host" | "canonical_host_breaks_passkeys" | "not_logged_in" | "session_already_revoked" | "invalid_token" | "not_owner" | "user_suspended" | "invalid_credentials" | "login_denied" | "signup_denied" | "client_credentials_denied" | "m2m_quota_exceeded" | "signup_disabled" | "email_taken" | "username_taken" | "invalid_username" | "invalid_email" | "invalid_name" | "same_email" | "user_has_no_email" | "password_too_weak" | "invalid_password_hash" | "weak_password_hash" | "invalid_code" | "invalid_phone" | "phone_changed" | "phone_already_verified" | "sms_unavailable" | "sms_failed" | "invalid_state" | "state_mismatch" | "invalid_ticket" | "ticket_used" | "ticket_expired" | "ticket_not_found" | "credential_not_found" | "invalid_link" | "expired_link" | "invalid_otp" | "invalid_client" | "client_not_found" | "client_mismatch" | "invalid_client_metadata" | "invalid_connection" | "no_database_connection" | "connection_required" | "connection_misconfigured" | "passwordless_unavailable" | "ambiguous_connection" | "invalid_redirect_uri" | "origin_not_allowed" | "audience_not_found" | "system_resource" | "invalid_request" | "invalid_device_code" | "provider_error" | "identity_already_linked" | "identity_link_denied" | "identity_conflict" | "identity_orphaned" | "no_provider_token" | "no_refresh_token" | "action_unavailable" | "login_flow_misconfigured" | "mfa_required" | "step_up_required" | "interaction_required" | "passkey_login_disabled" | "mfa_pending" | "mfa_invalid_code" | "mfa_invalid_recovery_code" | "too_many_attempts" | "too_many_login_attempts" | "totp_not_allowed" | "no_usable_factor" | "factor_not_found" | "factor_already_confirmed" | "invalid_factor" | "session_missing" | "passkey_verification_failed" | "no_passkey_enrolled" | "malformed_credential" | "unknown_passkey" | "invalid_passkey" | "invalid_invite_url" | "invite_email_mismatch" | "invite_email_unverified" | "invite_not_found" | "invite_used" | "already_member" | "not_a_member" | "consent_options_unavailable" | "consent_choice_invalid" | "registration_disabled" | "invalid_email_domain" | "public_email_domain" | "organization_domain_not_found" | "organization_domain_taken" | "organization_domain_unverified" | "plan_unavailable" | "organization_domain_mismatch" | "team_not_in_organization" | "organization_has_no_idp" | "organization_not_found" | "invalid_user" | "not_an_organization_admin" | "last_organization_admin" | "team_id_unavailable" | "use_team_member_route" | "role_not_found" | "invalid_role" | "flow_not_found" | "revision_not_found" | "invalid_webhook_event" | "invalid_webhook_url" | "not_a_webhook" | "delivery_not_found" | "delivery_in_progress";
7434
8028
  /** @description Every error response has this shape. Branch on `error_code`, never on `message`: the message is written for a person and may change. */
7435
8029
  ErrorResponse: {
7436
8030
  /** @description The HTTP status, repeated. */
@@ -7592,6 +8186,8 @@ export interface operations {
7592
8186
  logout_confirm_required?: boolean;
7593
8187
  /** @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`. */
7594
8188
  dynamic_client_registration_enabled?: boolean;
8189
+ /** @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. */
8190
+ client_id_metadata_documents_enabled?: boolean;
7595
8191
  /** @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. */
7596
8192
  canonical_host?: string | null;
7597
8193
  /** @description AuthAccount creation date */
@@ -7949,6 +8545,8 @@ export interface operations {
7949
8545
  logout_confirm_required?: boolean;
7950
8546
  /** @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`. */
7951
8547
  dynamic_client_registration_enabled?: boolean;
8548
+ /** @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. */
8549
+ client_id_metadata_documents_enabled?: boolean;
7952
8550
  /** @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. */
7953
8551
  canonical_host?: string | null;
7954
8552
  /** @description AuthAccount creation date */
@@ -8194,6 +8792,8 @@ export interface operations {
8194
8792
  logout_confirm_required?: boolean;
8195
8793
  /** @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`. */
8196
8794
  dynamic_client_registration_enabled?: boolean;
8795
+ /** @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. */
8796
+ client_id_metadata_documents_enabled?: boolean;
8197
8797
  /** @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. */
8198
8798
  canonical_host?: string | null;
8199
8799
  /** @description AuthAccount creation date */
@@ -8387,6 +8987,7 @@ export interface operations {
8387
8987
  webauthn_rp_id?: string | null;
8388
8988
  logout_confirm_required?: boolean | null;
8389
8989
  dynamic_client_registration_enabled?: boolean | null;
8990
+ client_id_metadata_documents_enabled?: boolean | null;
8390
8991
  canonical_host?: string | null;
8391
8992
  login_flow?: string | null;
8392
8993
  };
@@ -8515,6 +9116,8 @@ export interface operations {
8515
9116
  logout_confirm_required?: boolean;
8516
9117
  /** @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`. */
8517
9118
  dynamic_client_registration_enabled?: boolean;
9119
+ /** @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. */
9120
+ client_id_metadata_documents_enabled?: boolean;
8518
9121
  /** @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. */
8519
9122
  canonical_host?: string | null;
8520
9123
  /** @description AuthAccount creation date */
@@ -8828,6 +9431,10 @@ export interface operations {
8828
9431
  * @default 900
8829
9432
  */
8830
9433
  ttl?: number;
9434
+ /** @description Narrow the token to these management scopes (each must be in the catalog). Omitted: the whole catalog. */
9435
+ scopes?: string[];
9436
+ /** @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. */
9437
+ apikey_id?: string;
8831
9438
  };
8832
9439
  };
8833
9440
  };
@@ -9779,6 +10386,8 @@ export interface operations {
9779
10386
  logout_confirm_required?: boolean;
9780
10387
  /** @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`. */
9781
10388
  dynamic_client_registration_enabled?: boolean;
10389
+ /** @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. */
10390
+ client_id_metadata_documents_enabled?: boolean;
9782
10391
  /** @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. */
9783
10392
  canonical_host?: string | null;
9784
10393
  /** @description AuthAccount creation date */
@@ -9887,6 +10496,8 @@ export interface operations {
9887
10496
  enabled?: string;
9888
10497
  /** @description Exact match on `category`. Equivalent to `?query=category:<value>`. */
9889
10498
  category?: string;
10499
+ /** @description Also return `total`: the rows matching the whole filter, across every page. */
10500
+ count?: boolean;
9890
10501
  /** @description Filter using a FaableQL query */
9891
10502
  query?: string;
9892
10503
  /** @description Full-text search across: `connection_name`, `connection_type`. */
@@ -9907,6 +10518,8 @@ export interface operations {
9907
10518
  "application/json": {
9908
10519
  next: string | null;
9909
10520
  results: components["schemas"]["Connection"][];
10521
+ /** @description Rows matching the whole filter, across every page. Only with `?count=true`. */
10522
+ total?: number;
9910
10523
  };
9911
10524
  };
9912
10525
  };
@@ -11153,6 +11766,8 @@ export interface operations {
11153
11766
  cursor?: string;
11154
11767
  /** @description Cursor returned by the previous page */
11155
11768
  next?: string;
11769
+ /** @description Also return `total`: the rows matching the whole filter, across every page. */
11770
+ count?: boolean;
11156
11771
  /** @description Filter using a FaableQL query */
11157
11772
  query?: string;
11158
11773
  /** @description Full-text search across: `name`, `description`, `client_id`. */
@@ -11173,6 +11788,8 @@ export interface operations {
11173
11788
  "application/json": {
11174
11789
  next: string | null;
11175
11790
  results: components["schemas"]["Client"][];
11791
+ /** @description Rows matching the whole filter, across every page. Only with `?count=true`. */
11792
+ total?: number;
11176
11793
  };
11177
11794
  };
11178
11795
  };
@@ -11324,6 +11941,11 @@ export interface operations {
11324
11941
  grant_types?: string[];
11325
11942
  response_types?: string[];
11326
11943
  token_endpoint_auth_method?: string;
11944
+ /** @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). */
11945
+ consent_required?: boolean;
11946
+ /** @description For a client identified by a Client ID Metadata Document: the URL (also its client_id) its metadata was fetched from. */
11947
+ metadata_document_url?: string;
11948
+ registered_dynamically?: boolean;
11327
11949
  application_type?: string;
11328
11950
  software_id?: string | null;
11329
11951
  software_version?: string | null;
@@ -11524,6 +12146,11 @@ export interface operations {
11524
12146
  grant_types?: string[];
11525
12147
  response_types?: string[];
11526
12148
  token_endpoint_auth_method?: string;
12149
+ /** @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). */
12150
+ consent_required?: boolean;
12151
+ /** @description For a client identified by a Client ID Metadata Document: the URL (also its client_id) its metadata was fetched from. */
12152
+ metadata_document_url?: string;
12153
+ registered_dynamically?: boolean;
11527
12154
  application_type?: string;
11528
12155
  software_id?: string | null;
11529
12156
  software_version?: string | null;
@@ -11819,6 +12446,11 @@ export interface operations {
11819
12446
  grant_types?: string[];
11820
12447
  response_types?: string[];
11821
12448
  token_endpoint_auth_method?: string;
12449
+ /** @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). */
12450
+ consent_required?: boolean;
12451
+ /** @description For a client identified by a Client ID Metadata Document: the URL (also its client_id) its metadata was fetched from. */
12452
+ metadata_document_url?: string;
12453
+ registered_dynamically?: boolean;
11822
12454
  application_type?: string;
11823
12455
  software_id?: string | null;
11824
12456
  software_version?: string | null;
@@ -12025,6 +12657,11 @@ export interface operations {
12025
12657
  grant_types?: string[];
12026
12658
  response_types?: string[];
12027
12659
  token_endpoint_auth_method?: string;
12660
+ /** @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). */
12661
+ consent_required?: boolean;
12662
+ /** @description For a client identified by a Client ID Metadata Document: the URL (also its client_id) its metadata was fetched from. */
12663
+ metadata_document_url?: string;
12664
+ registered_dynamically?: boolean;
12028
12665
  application_type?: string;
12029
12666
  software_id?: string | null;
12030
12667
  software_version?: string | null;
@@ -12229,6 +12866,11 @@ export interface operations {
12229
12866
  grant_types?: string[];
12230
12867
  response_types?: string[];
12231
12868
  token_endpoint_auth_method?: string;
12869
+ /** @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). */
12870
+ consent_required?: boolean;
12871
+ /** @description For a client identified by a Client ID Metadata Document: the URL (also its client_id) its metadata was fetched from. */
12872
+ metadata_document_url?: string;
12873
+ registered_dynamically?: boolean;
12232
12874
  application_type?: string;
12233
12875
  software_id?: string | null;
12234
12876
  software_version?: string | null;
@@ -12412,6 +13054,18 @@ export interface operations {
12412
13054
  email_verified?: string;
12413
13055
  /** @description Exact match on `suspended`. Equivalent to `?query=suspended:<value>`. */
12414
13056
  suspended?: string;
13057
+ /** @description Exact match on `last_login_since`. Equivalent to `?query=last_login_since:<value>`. */
13058
+ last_login_since?: string;
13059
+ /** @description Exact match on `last_login_until`. Equivalent to `?query=last_login_until:<value>`. */
13060
+ last_login_until?: string;
13061
+ /** @description Exact match on `created_since`. Equivalent to `?query=created_since:<value>`. */
13062
+ created_since?: string;
13063
+ /** @description Exact match on `created_until`. Equivalent to `?query=created_until:<value>`. */
13064
+ created_until?: string;
13065
+ /** @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`. */
13066
+ sort?: string;
13067
+ /** @description Also return `total`: the rows matching the whole filter, across every page. */
13068
+ count?: boolean;
12415
13069
  /** @description Filter using a FaableQL query */
12416
13070
  query?: string;
12417
13071
  /** @description Full-text search across: `name`, `email`, `phone`. */
@@ -12432,6 +13086,8 @@ export interface operations {
12432
13086
  "application/json": {
12433
13087
  next: string | null;
12434
13088
  results: components["schemas"]["User"][];
13089
+ /** @description Rows matching the whole filter, across every page. Only with `?count=true`. */
13090
+ total?: number;
12435
13091
  };
12436
13092
  };
12437
13093
  };
@@ -15290,6 +15946,8 @@ export interface operations {
15290
15946
  provider?: string;
15291
15947
  /** @description Exact match on `created_at`. Equivalent to `?query=created_at:<value>`. */
15292
15948
  created_at?: string;
15949
+ /** @description Also return `total`: the rows matching the whole filter, across every page. */
15950
+ count?: boolean;
15293
15951
  /** @description Filter using a FaableQL query */
15294
15952
  query?: string;
15295
15953
  /** @description Expand id-only fields in the response. Pass one path per entry (e.g. `?expand=user`). */
@@ -15310,6 +15968,8 @@ export interface operations {
15310
15968
  "application/json": {
15311
15969
  next: string | null;
15312
15970
  results: components["schemas"]["Identity"][];
15971
+ /** @description Rows matching the whole filter, across every page. Only with `?count=true`. */
15972
+ total?: number;
15313
15973
  };
15314
15974
  };
15315
15975
  };
@@ -15947,6 +16607,8 @@ export interface operations {
15947
16607
  username?: string;
15948
16608
  /** @description Exact match on `created_at`. Equivalent to `?query=created_at:<value>`. */
15949
16609
  created_at?: string;
16610
+ /** @description Also return `total`: the rows matching the whole filter, across every page. */
16611
+ count?: boolean;
15950
16612
  /** @description Filter using a FaableQL query */
15951
16613
  query?: string;
15952
16614
  /** @description Expand id-only fields in the response. Pass one path per entry (e.g. `?expand=user`). */
@@ -15969,6 +16631,8 @@ export interface operations {
15969
16631
  "application/json": {
15970
16632
  next: string | null;
15971
16633
  results: components["schemas"]["Credential"][];
16634
+ /** @description Rows matching the whole filter, across every page. Only with `?count=true`. */
16635
+ total?: number;
15972
16636
  };
15973
16637
  };
15974
16638
  };
@@ -16756,6 +17420,8 @@ export interface operations {
16756
17420
  cursor?: string;
16757
17421
  /** @description Cursor returned by the previous page */
16758
17422
  next?: string;
17423
+ /** @description Also return `total`: the rows matching the whole filter, across every page. */
17424
+ count?: boolean;
16759
17425
  /** @description Filter using a FaableQL query */
16760
17426
  query?: string;
16761
17427
  /** @description Full-text search across: `name`, `description`. */
@@ -16776,6 +17442,8 @@ export interface operations {
16776
17442
  "application/json": {
16777
17443
  next: string | null;
16778
17444
  results: components["schemas"]["Role"][];
17445
+ /** @description Rows matching the whole filter, across every page. Only with `?count=true`. */
17446
+ total?: number;
16779
17447
  };
16780
17448
  };
16781
17449
  };
@@ -17660,6 +18328,8 @@ export interface operations {
17660
18328
  cursor?: string;
17661
18329
  /** @description Cursor returned by the previous page */
17662
18330
  next?: string;
18331
+ /** @description Also return `total`: the rows matching the whole filter, across every page. */
18332
+ count?: boolean;
17663
18333
  /** @description Filter using a FaableQL query */
17664
18334
  query?: string;
17665
18335
  /** @description Expand id-only fields in the response. Pass one path per entry (e.g. `?expand=user`). */
@@ -17680,6 +18350,8 @@ export interface operations {
17680
18350
  "application/json": {
17681
18351
  next: string | null;
17682
18352
  results: components["schemas"]["RoleMember"][];
18353
+ /** @description Rows matching the whole filter, across every page. Only with `?count=true`. */
18354
+ total?: number;
17683
18355
  };
17684
18356
  };
17685
18357
  };
@@ -18041,6 +18713,8 @@ export interface operations {
18041
18713
  cursor?: string;
18042
18714
  /** @description Cursor returned by the previous page */
18043
18715
  next?: string;
18716
+ /** @description Also return `total`: the rows matching the whole filter, across every page. */
18717
+ count?: boolean;
18044
18718
  /** @description Filter using a FaableQL query */
18045
18719
  query?: string;
18046
18720
  /** @description Full-text search across: `name`, `slug`. */
@@ -18061,6 +18735,8 @@ export interface operations {
18061
18735
  "application/json": {
18062
18736
  next: string | null;
18063
18737
  results: components["schemas"]["Team"][];
18738
+ /** @description Rows matching the whole filter, across every page. Only with `?count=true`. */
18739
+ total?: number;
18064
18740
  };
18065
18741
  };
18066
18742
  };
@@ -19107,6 +19783,8 @@ export interface operations {
19107
19783
  cursor?: string;
19108
19784
  /** @description Cursor returned by the previous page */
19109
19785
  next?: string;
19786
+ /** @description Also return `total`: the rows matching the whole filter, across every page. */
19787
+ count?: boolean;
19110
19788
  /** @description Filter using a FaableQL query */
19111
19789
  query?: string;
19112
19790
  /** @description Full-text search across: `name`, `slug`. */
@@ -19127,6 +19805,8 @@ export interface operations {
19127
19805
  "application/json": {
19128
19806
  next: string | null;
19129
19807
  results: components["schemas"]["Organization"][];
19808
+ /** @description Rows matching the whole filter, across every page. Only with `?count=true`. */
19809
+ total?: number;
19130
19810
  };
19131
19811
  };
19132
19812
  };
@@ -21199,6 +21879,8 @@ export interface operations {
21199
21879
  user?: string;
21200
21880
  /** @description Exact match on `team`. Equivalent to `?query=team:<value>`. */
21201
21881
  team?: string;
21882
+ /** @description Also return `total`: the rows matching the whole filter, across every page. */
21883
+ count?: boolean;
21202
21884
  /** @description Filter using a FaableQL query */
21203
21885
  query?: string;
21204
21886
  /** @description Expand id-only fields in the response. Pass one path per entry (e.g. `?expand=user`). */
@@ -21219,6 +21901,8 @@ export interface operations {
21219
21901
  "application/json": {
21220
21902
  next: string | null;
21221
21903
  results: components["schemas"]["TeamMember"][];
21904
+ /** @description Rows matching the whole filter, across every page. Only with `?count=true`. */
21905
+ total?: number;
21222
21906
  };
21223
21907
  };
21224
21908
  };
@@ -23139,6 +23823,8 @@ export interface operations {
23139
23823
  enforce_policies?: string;
23140
23824
  /** @description Exact match on `allow_offline_access`. Equivalent to `?query=allow_offline_access:<value>`. */
23141
23825
  allow_offline_access?: string;
23826
+ /** @description Also return `total`: the rows matching the whole filter, across every page. */
23827
+ count?: boolean;
23142
23828
  /** @description Filter using a FaableQL query */
23143
23829
  query?: string;
23144
23830
  /** @description Full-text search across: `name`, `description`, `identifier`, `slug`. */
@@ -23159,6 +23845,8 @@ export interface operations {
23159
23845
  "application/json": {
23160
23846
  next: string | null;
23161
23847
  results: components["schemas"]["Api"][];
23848
+ /** @description Rows matching the whole filter, across every page. Only with `?count=true`. */
23849
+ total?: number;
23162
23850
  };
23163
23851
  };
23164
23852
  };
@@ -23288,6 +23976,24 @@ export interface operations {
23288
23976
  enforce_policies?: boolean;
23289
23977
  /** @description When true, clients can request `offline_access` and receive a refresh_token for this API. */
23290
23978
  allow_offline_access?: boolean;
23979
+ consent_options?: {
23980
+ /** @description Access token claim that carries the chosen id. */
23981
+ claim: string;
23982
+ /** @description What the screen asks for, e.g. "Project". */
23983
+ label: string;
23984
+ /** @description GET endpoint of the resource server that lists the choices. */
23985
+ url: string;
23986
+ /** @description Identifier of a registered API the listing token is issued for (usually the resource server behind `url`). */
23987
+ audience: string;
23988
+ /** @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. */
23989
+ scope?: string;
23990
+ };
23991
+ delegation?: {
23992
+ /** @description The confidential client of the resource server allowed to exchange. */
23993
+ client_id: string;
23994
+ /** @description Identifier of the registered API the new token is for. */
23995
+ audience: string;
23996
+ };
23291
23997
  /** @description When true, skip the consent prompt for first-party clients. */
23292
23998
  skip_consent?: boolean;
23293
23999
  /** @description When true, access_tokens issued for this API carry a `teams` claim with the subject team slugs. */
@@ -23337,6 +24043,24 @@ export interface operations {
23337
24043
  enforce_policies: boolean;
23338
24044
  /** @description When true, the API is eligible to be the target of a `refresh_token` (i.e. clients can request `offline_access` against it). */
23339
24045
  allow_offline_access: boolean;
24046
+ consent_options?: {
24047
+ /** @description Access token claim that carries the chosen id. */
24048
+ claim: string;
24049
+ /** @description What the screen asks for, e.g. "Project". */
24050
+ label: string;
24051
+ /** @description GET endpoint of the resource server that lists the choices. */
24052
+ url: string;
24053
+ /** @description Identifier of a registered API the listing token is issued for (usually the resource server behind `url`). */
24054
+ audience: string;
24055
+ /** @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. */
24056
+ scope?: string;
24057
+ } | null;
24058
+ delegation?: {
24059
+ /** @description The confidential client of the resource server allowed to exchange. */
24060
+ client_id: string;
24061
+ /** @description Identifier of the registered API the new token is for. */
24062
+ audience: string;
24063
+ } | null;
23340
24064
  /** @description When true, the consent prompt is skipped for first-party clients (clients owned by the same tenant as the API). */
23341
24065
  skip_consent: boolean;
23342
24066
  /** @description When true, access_tokens issued for this API carry a `teams` claim listing the slugs of the teams the subject is a member of within the tenant. */
@@ -23493,6 +24217,24 @@ export interface operations {
23493
24217
  enforce_policies: boolean;
23494
24218
  /** @description When true, the API is eligible to be the target of a `refresh_token` (i.e. clients can request `offline_access` against it). */
23495
24219
  allow_offline_access: boolean;
24220
+ consent_options?: {
24221
+ /** @description Access token claim that carries the chosen id. */
24222
+ claim: string;
24223
+ /** @description What the screen asks for, e.g. "Project". */
24224
+ label: string;
24225
+ /** @description GET endpoint of the resource server that lists the choices. */
24226
+ url: string;
24227
+ /** @description Identifier of a registered API the listing token is issued for (usually the resource server behind `url`). */
24228
+ audience: string;
24229
+ /** @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. */
24230
+ scope?: string;
24231
+ } | null;
24232
+ delegation?: {
24233
+ /** @description The confidential client of the resource server allowed to exchange. */
24234
+ client_id: string;
24235
+ /** @description Identifier of the registered API the new token is for. */
24236
+ audience: string;
24237
+ } | null;
23496
24238
  /** @description When true, the consent prompt is skipped for first-party clients (clients owned by the same tenant as the API). */
23497
24239
  skip_consent: boolean;
23498
24240
  /** @description When true, access_tokens issued for this API carry a `teams` claim listing the slugs of the teams the subject is a member of within the tenant. */
@@ -23638,6 +24380,24 @@ export interface operations {
23638
24380
  enforce_policies?: boolean;
23639
24381
  /** @description When true, clients can request `offline_access` and receive a refresh_token for this API. */
23640
24382
  allow_offline_access?: boolean;
24383
+ consent_options?: {
24384
+ /** @description Access token claim that carries the chosen id. */
24385
+ claim: string;
24386
+ /** @description What the screen asks for, e.g. "Project". */
24387
+ label: string;
24388
+ /** @description GET endpoint of the resource server that lists the choices. */
24389
+ url: string;
24390
+ /** @description Identifier of a registered API the listing token is issued for (usually the resource server behind `url`). */
24391
+ audience: string;
24392
+ /** @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. */
24393
+ scope?: string;
24394
+ } | null;
24395
+ delegation?: {
24396
+ /** @description The confidential client of the resource server allowed to exchange. */
24397
+ client_id: string;
24398
+ /** @description Identifier of the registered API the new token is for. */
24399
+ audience: string;
24400
+ } | null;
23641
24401
  /** @description When true, skip the consent prompt for first-party clients. */
23642
24402
  skip_consent?: boolean;
23643
24403
  /** @description When true, access_tokens issued for this API carry a `teams` claim with the subject team slugs. */
@@ -23687,6 +24447,24 @@ export interface operations {
23687
24447
  enforce_policies: boolean;
23688
24448
  /** @description When true, the API is eligible to be the target of a `refresh_token` (i.e. clients can request `offline_access` against it). */
23689
24449
  allow_offline_access: boolean;
24450
+ consent_options?: {
24451
+ /** @description Access token claim that carries the chosen id. */
24452
+ claim: string;
24453
+ /** @description What the screen asks for, e.g. "Project". */
24454
+ label: string;
24455
+ /** @description GET endpoint of the resource server that lists the choices. */
24456
+ url: string;
24457
+ /** @description Identifier of a registered API the listing token is issued for (usually the resource server behind `url`). */
24458
+ audience: string;
24459
+ /** @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. */
24460
+ scope?: string;
24461
+ } | null;
24462
+ delegation?: {
24463
+ /** @description The confidential client of the resource server allowed to exchange. */
24464
+ client_id: string;
24465
+ /** @description Identifier of the registered API the new token is for. */
24466
+ audience: string;
24467
+ } | null;
23690
24468
  /** @description When true, the consent prompt is skipped for first-party clients (clients owned by the same tenant as the API). */
23691
24469
  skip_consent: boolean;
23692
24470
  /** @description When true, access_tokens issued for this API carry a `teams` claim listing the slugs of the teams the subject is a member of within the tenant. */
@@ -23849,6 +24627,24 @@ export interface operations {
23849
24627
  enforce_policies: boolean;
23850
24628
  /** @description When true, the API is eligible to be the target of a `refresh_token` (i.e. clients can request `offline_access` against it). */
23851
24629
  allow_offline_access: boolean;
24630
+ consent_options?: {
24631
+ /** @description Access token claim that carries the chosen id. */
24632
+ claim: string;
24633
+ /** @description What the screen asks for, e.g. "Project". */
24634
+ label: string;
24635
+ /** @description GET endpoint of the resource server that lists the choices. */
24636
+ url: string;
24637
+ /** @description Identifier of a registered API the listing token is issued for (usually the resource server behind `url`). */
24638
+ audience: string;
24639
+ /** @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. */
24640
+ scope?: string;
24641
+ } | null;
24642
+ delegation?: {
24643
+ /** @description The confidential client of the resource server allowed to exchange. */
24644
+ client_id: string;
24645
+ /** @description Identifier of the registered API the new token is for. */
24646
+ audience: string;
24647
+ } | null;
23852
24648
  /** @description When true, the consent prompt is skipped for first-party clients (clients owned by the same tenant as the API). */
23853
24649
  skip_consent: boolean;
23854
24650
  /** @description When true, access_tokens issued for this API carry a `teams` claim listing the slugs of the teams the subject is a member of within the tenant. */
@@ -24178,6 +24974,8 @@ export interface operations {
24178
24974
  cursor?: string;
24179
24975
  /** @description Cursor returned by the previous page */
24180
24976
  next?: string;
24977
+ /** @description Also return `total`: the rows matching the whole filter, across every page. */
24978
+ count?: boolean;
24181
24979
  /** @description Filter using a FaableQL query */
24182
24980
  query?: string;
24183
24981
  };
@@ -24196,6 +24994,8 @@ export interface operations {
24196
24994
  "application/json": {
24197
24995
  next: string | null;
24198
24996
  results: components["schemas"]["Action"][];
24997
+ /** @description Rows matching the whole filter, across every page. Only with `?count=true`. */
24998
+ total?: number;
24199
24999
  };
24200
25000
  };
24201
25001
  };
@@ -25861,6 +26661,8 @@ export interface operations {
25861
26661
  cursor?: string;
25862
26662
  /** @description Cursor returned by the previous page */
25863
26663
  next?: string;
26664
+ /** @description Also return `total`: the rows matching the whole filter, across every page. */
26665
+ count?: boolean;
25864
26666
  /** @description Filter using a FaableQL query */
25865
26667
  query?: string;
25866
26668
  };
@@ -25879,6 +26681,8 @@ export interface operations {
25879
26681
  "application/json": {
25880
26682
  next: string | null;
25881
26683
  results: components["schemas"]["LoginFlow"][];
26684
+ /** @description Rows matching the whole filter, across every page. Only with `?count=true`. */
26685
+ total?: number;
25882
26686
  };
25883
26687
  };
25884
26688
  };
@@ -26799,6 +27603,8 @@ export interface operations {
26799
27603
  channel?: string;
26800
27604
  /** @description Exact match on `events`. Equivalent to `?query=events:<value>`. */
26801
27605
  events?: string;
27606
+ /** @description Also return `total`: the rows matching the whole filter, across every page. */
27607
+ count?: boolean;
26802
27608
  /** @description Filter using a FaableQL query */
26803
27609
  query?: string;
26804
27610
  };
@@ -26817,6 +27623,8 @@ export interface operations {
26817
27623
  "application/json": {
26818
27624
  next: string | null;
26819
27625
  results: components["schemas"]["NotificationSubscription"][];
27626
+ /** @description Rows matching the whole filter, across every page. Only with `?count=true`. */
27627
+ total?: number;
26820
27628
  };
26821
27629
  };
26822
27630
  };
@@ -28227,6 +29035,8 @@ export interface operations {
28227
29035
  expires_before?: string;
28228
29036
  /** @description Exact match on `expires_after`. Equivalent to `?query=expires_after:<value>`. */
28229
29037
  expires_after?: string;
29038
+ /** @description Also return `total`: the rows matching the whole filter, across every page. */
29039
+ count?: boolean;
28230
29040
  /** @description Filter using a FaableQL query */
28231
29041
  query?: string;
28232
29042
  /** @description Expand id-only fields in the response. Pass one path per entry (e.g. `?expand=user`). */
@@ -28249,6 +29059,8 @@ export interface operations {
28249
29059
  "application/json": {
28250
29060
  next: string | null;
28251
29061
  results: components["schemas"]["Log"][];
29062
+ /** @description Rows matching the whole filter, across every page. Only with `?count=true`. */
29063
+ total?: number;
28252
29064
  };
28253
29065
  };
28254
29066
  };
@@ -28511,6 +29323,8 @@ export interface operations {
28511
29323
  since?: string;
28512
29324
  /** @description Exact match on `until`. Equivalent to `?query=until:<value>`. */
28513
29325
  until?: string;
29326
+ /** @description Also return `total`: the rows matching the whole filter, across every page. */
29327
+ count?: boolean;
28514
29328
  /** @description Filter using a FaableQL query */
28515
29329
  query?: string;
28516
29330
  /** @description Expand id-only fields in the response. Pass one path per entry (e.g. `?expand=user`). */
@@ -28531,6 +29345,8 @@ export interface operations {
28531
29345
  "application/json": {
28532
29346
  next: string | null;
28533
29347
  results: components["schemas"]["Session"][];
29348
+ /** @description Rows matching the whole filter, across every page. Only with `?count=true`. */
29349
+ total?: number;
28534
29350
  };
28535
29351
  };
28536
29352
  };
@@ -29048,6 +29864,8 @@ export interface operations {
29048
29864
  cursor?: string;
29049
29865
  /** @description Cursor returned by the previous page */
29050
29866
  next?: string;
29867
+ /** @description Also return `total`: the rows matching the whole filter, across every page. */
29868
+ count?: boolean;
29051
29869
  /** @description Filter using a FaableQL query */
29052
29870
  query?: string;
29053
29871
  /** @description Full-text search across: `domain`. */
@@ -29068,6 +29886,8 @@ export interface operations {
29068
29886
  "application/json": {
29069
29887
  next: string | null;
29070
29888
  results: components["schemas"]["Customdomain"][];
29889
+ /** @description Rows matching the whole filter, across every page. Only with `?count=true`. */
29890
+ total?: number;
29071
29891
  };
29072
29892
  };
29073
29893
  };
@@ -31436,6 +32256,7 @@ export interface operations {
31436
32256
  refresh_token?: string;
31437
32257
  id_token?: string;
31438
32258
  scope?: string;
32259
+ issued_token_type?: string;
31439
32260
  };
31440
32261
  };
31441
32262
  };
@@ -31573,6 +32394,7 @@ export interface operations {
31573
32394
  refresh_token?: string;
31574
32395
  id_token?: string;
31575
32396
  scope?: string;
32397
+ issued_token_type?: string;
31576
32398
  };
31577
32399
  };
31578
32400
  };
@@ -32309,6 +33131,48 @@ export interface operations {
32309
33131
  };
32310
33132
  };
32311
33133
  };
33134
+ "oauth/authorizationServerMetadata": {
33135
+ parameters: {
33136
+ query?: never;
33137
+ header?: never;
33138
+ path?: never;
33139
+ cookie?: never;
33140
+ };
33141
+ requestBody?: never;
33142
+ responses: {
33143
+ /** @description Default Response */
33144
+ 200: {
33145
+ headers: {
33146
+ [name: string]: unknown;
33147
+ };
33148
+ content?: never;
33149
+ };
33150
+ /** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
33151
+ 429: {
33152
+ headers: {
33153
+ [name: string]: unknown;
33154
+ };
33155
+ content: {
33156
+ "application/json": components["schemas"]["ErrorResponse"] & {
33157
+ /** @enum {string} */
33158
+ error_code?: "too_many_requests";
33159
+ };
33160
+ };
33161
+ };
33162
+ /** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
33163
+ 500: {
33164
+ headers: {
33165
+ [name: string]: unknown;
33166
+ };
33167
+ content: {
33168
+ "application/json": components["schemas"]["ErrorResponse"] & {
33169
+ /** @enum {string} */
33170
+ error_code?: "internal_error";
33171
+ };
33172
+ };
33173
+ };
33174
+ };
33175
+ };
32312
33176
  "oauth/jwks": {
32313
33177
  parameters: {
32314
33178
  query?: never;
@@ -32558,7 +33422,7 @@ export interface operations {
32558
33422
  content: {
32559
33423
  "application/json": {
32560
33424
  client_id: string;
32561
- client_secret: string;
33425
+ client_secret?: string;
32562
33426
  /** @description Unix timestamp (seconds) at which the client_id was issued */
32563
33427
  client_id_issued_at: number;
32564
33428
  /** @description 0 if the client_secret does not expire */
@@ -32654,6 +33518,85 @@ export interface operations {
32654
33518
  };
32655
33519
  };
32656
33520
  };
33521
+ "oauth/revoke": {
33522
+ parameters: {
33523
+ query?: never;
33524
+ header?: never;
33525
+ path?: never;
33526
+ cookie?: never;
33527
+ };
33528
+ requestBody: {
33529
+ content: {
33530
+ "application/json": {
33531
+ token: string;
33532
+ token_type_hint?: string;
33533
+ client_id?: string;
33534
+ client_secret?: string;
33535
+ };
33536
+ };
33537
+ };
33538
+ responses: {
33539
+ /** @description Default Response */
33540
+ 200: {
33541
+ headers: {
33542
+ [name: string]: unknown;
33543
+ };
33544
+ content?: never;
33545
+ };
33546
+ /**
33547
+ * @description `invalid_client` — The `client_id` in the request does not name a client of this account.
33548
+ *
33549
+ * `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
33550
+ */
33551
+ 400: {
33552
+ headers: {
33553
+ [name: string]: unknown;
33554
+ };
33555
+ content: {
33556
+ "application/json": components["schemas"]["ErrorResponse"] & {
33557
+ /** @enum {string} */
33558
+ error_code?: "invalid_client" | "validation_error";
33559
+ };
33560
+ };
33561
+ };
33562
+ /** @description `account_not_found` — No Auth Account matches the request (domain, header or token). */
33563
+ 404: {
33564
+ headers: {
33565
+ [name: string]: unknown;
33566
+ };
33567
+ content: {
33568
+ "application/json": components["schemas"]["ErrorResponse"] & {
33569
+ /** @enum {string} */
33570
+ error_code?: "account_not_found";
33571
+ };
33572
+ };
33573
+ };
33574
+ /** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
33575
+ 429: {
33576
+ headers: {
33577
+ [name: string]: unknown;
33578
+ };
33579
+ content: {
33580
+ "application/json": components["schemas"]["ErrorResponse"] & {
33581
+ /** @enum {string} */
33582
+ error_code?: "too_many_requests";
33583
+ };
33584
+ };
33585
+ };
33586
+ /** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
33587
+ 500: {
33588
+ headers: {
33589
+ [name: string]: unknown;
33590
+ };
33591
+ content: {
33592
+ "application/json": components["schemas"]["ErrorResponse"] & {
33593
+ /** @enum {string} */
33594
+ error_code?: "internal_error";
33595
+ };
33596
+ };
33597
+ };
33598
+ };
33599
+ };
32657
33600
  "usernamepassword/login": {
32658
33601
  parameters: {
32659
33602
  query?: never;