@faable/auth-sdk 2.7.80 → 2.7.82

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.
@@ -1196,6 +1196,118 @@ export interface paths {
1196
1196
  patch?: never;
1197
1197
  trace?: never;
1198
1198
  };
1199
+ "/team/{team_id}/organization": {
1200
+ parameters: {
1201
+ query?: never;
1202
+ header?: never;
1203
+ path?: never;
1204
+ cookie?: never;
1205
+ };
1206
+ get?: never;
1207
+ /**
1208
+ * Put a Team in an Organization, or take it out
1209
+ * @description Sets the Organization the Team belongs to (`null` = none). A team is in at most one organization; setting another one moves it. Belonging to an organization grants nobody access to the team. Emits `team.updated`.
1210
+ */
1211
+ put: operations["team/setOrganization"];
1212
+ post?: never;
1213
+ delete?: never;
1214
+ options?: never;
1215
+ head?: never;
1216
+ patch?: never;
1217
+ trace?: never;
1218
+ };
1219
+ "/organization": {
1220
+ parameters: {
1221
+ query?: never;
1222
+ header?: never;
1223
+ path?: never;
1224
+ cookie?: never;
1225
+ };
1226
+ /**
1227
+ * List Organizations
1228
+ * @description List Organizations
1229
+ */
1230
+ get: operations["organization/list"];
1231
+ put?: never;
1232
+ /**
1233
+ * Create Organization
1234
+ * @description Create Organization
1235
+ */
1236
+ post: operations["organization/create"];
1237
+ delete?: never;
1238
+ options?: never;
1239
+ head?: never;
1240
+ patch?: never;
1241
+ trace?: never;
1242
+ };
1243
+ "/organization/{organization_id}": {
1244
+ parameters: {
1245
+ query?: never;
1246
+ header?: never;
1247
+ path?: never;
1248
+ cookie?: never;
1249
+ };
1250
+ /**
1251
+ * Get Organization
1252
+ * @description Get Organization
1253
+ */
1254
+ get: operations["organization/get"];
1255
+ put?: never;
1256
+ /**
1257
+ * Update Organization
1258
+ * @description Update Organization
1259
+ */
1260
+ post: operations["organization/update"];
1261
+ /**
1262
+ * Delete Organization
1263
+ * @description Delete Organization
1264
+ */
1265
+ delete: operations["organization/delete"];
1266
+ options?: never;
1267
+ head?: never;
1268
+ patch?: never;
1269
+ trace?: never;
1270
+ };
1271
+ "/organization/{organization_id}/admin": {
1272
+ parameters: {
1273
+ query?: never;
1274
+ header?: never;
1275
+ path?: never;
1276
+ cookie?: never;
1277
+ };
1278
+ get?: never;
1279
+ put?: never;
1280
+ /**
1281
+ * Add an admin to an Organization
1282
+ * @description Makes a user of this tenant an admin of the Organization. Idempotent. Being an admin does not grant access to any team of the organization. Emits `organization.updated`.
1283
+ */
1284
+ post: operations["organization/addAdmin"];
1285
+ delete?: never;
1286
+ options?: never;
1287
+ head?: never;
1288
+ patch?: never;
1289
+ trace?: never;
1290
+ };
1291
+ "/organization/{organization_id}/admin/{user_id}": {
1292
+ parameters: {
1293
+ query?: never;
1294
+ header?: never;
1295
+ path?: never;
1296
+ cookie?: never;
1297
+ };
1298
+ get?: never;
1299
+ put?: never;
1300
+ post?: never;
1301
+ /**
1302
+ * Remove an admin from an Organization
1303
+ * @description Removes the user from the admins of the Organization (the user is not deleted). An organization keeps at least one admin: removing the last one is `last_organization_admin`. Emits `organization.updated`.
1304
+ */
1305
+ delete: operations["organization/removeAdmin"];
1306
+ options?: never;
1307
+ head?: never;
1308
+ patch?: never;
1309
+ trace?: never;
1310
+ };
1199
1311
  "/teammember": {
1200
1312
  parameters: {
1201
1313
  query?: never;
@@ -4437,7 +4549,7 @@ export interface paths {
4437
4549
  put?: never;
4438
4550
  /**
4439
4551
  * OpenID Connect Dynamic Client Registration
4440
- * @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.
4552
+ * @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).
4441
4553
  */
4442
4554
  post: operations["oauth/register"];
4443
4555
  delete?: never;
@@ -4725,6 +4837,8 @@ export interface components {
4725
4837
  webauthn_rp_id?: string | null;
4726
4838
  /** @description When true, `/logout` asks the End-User to confirm before ending the session unless the request carries a verified `id_token_hint`. Off by default — a plain link to `/logout` is otherwise enough to sign anyone out (logout CSRF). */
4727
4839
  logout_confirm_required?: boolean;
4840
+ /** @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`. */
4841
+ dynamic_client_registration_enabled?: boolean;
4728
4842
  /** @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. */
4729
4843
  canonical_host?: string | null;
4730
4844
  /** @description AuthAccount creation date */
@@ -5603,6 +5717,8 @@ export interface components {
5603
5717
  description: string | null;
5604
5718
  /** @description Optional URL of an image used as the team avatar/logo. */
5605
5719
  logo_url: string | null;
5720
+ /** @description Id of the Organization the team belongs to, or `null`. Changed only with `PUT /team/{team_id}/organization`. */
5721
+ organization?: string | null;
5606
5722
  /** @description Object is related with this account */
5607
5723
  account: string;
5608
5724
  /**
@@ -5657,6 +5773,92 @@ export interface components {
5657
5773
  TeamUpdateMetadata: {
5658
5774
  [key: string]: unknown;
5659
5775
  };
5776
+ /** @description Organization */
5777
+ Organization: {
5778
+ /** @description Organization ID */
5779
+ id: string;
5780
+ /**
5781
+ * @description Human-readable name of the organization.
5782
+ * @example Acme Inc.
5783
+ */
5784
+ name: string;
5785
+ /**
5786
+ * @description URL-safe identifier derived from `name`. Unique within the tenant.
5787
+ * @example acme-inc
5788
+ */
5789
+ slug: string;
5790
+ /** @description Optional free-form description. */
5791
+ description: string | null;
5792
+ /** @description Optional URL of the organization logo. */
5793
+ logo_url: string | null;
5794
+ /** @description Ids of the users who manage the organization: its teams and its identity settings. Being an admin does not grant access to any team; team access is team membership. */
5795
+ admins: string[];
5796
+ /** @description Object is related with this account */
5797
+ account: string;
5798
+ /**
5799
+ * @description OrganizationMetadata
5800
+ * @default {}
5801
+ */
5802
+ metadata: {
5803
+ [key: string]: unknown;
5804
+ };
5805
+ /** @description Organization creation date */
5806
+ createdAt: string;
5807
+ /** @description Organization updated date */
5808
+ updatedAt?: string;
5809
+ };
5810
+ /**
5811
+ * @description OrganizationMetadata
5812
+ * @default {}
5813
+ */
5814
+ OrganizationMetadata: {
5815
+ [key: string]: unknown;
5816
+ };
5817
+ /** @description OrganizationCreate */
5818
+ OrganizationCreate: {
5819
+ /**
5820
+ * @description Human-readable name of the organization.
5821
+ * @example Acme Inc.
5822
+ */
5823
+ name: string;
5824
+ /** @description Optional free-form description. */
5825
+ description?: string;
5826
+ /**
5827
+ * Format: uri
5828
+ * @description Optional URL of the organization logo.
5829
+ */
5830
+ logo_url?: string;
5831
+ /** @description Initial admins (user ids of this tenant). Can be empty and filled later with `POST /organization/{organization_id}/admin`. */
5832
+ admins?: string[];
5833
+ /** @description Add Metadata */
5834
+ metadata?: {
5835
+ [key: string]: unknown;
5836
+ };
5837
+ };
5838
+ /** @description Add Metadata */
5839
+ OrganizationMetadataCreate: {
5840
+ [key: string]: unknown;
5841
+ };
5842
+ /** @description Partial update for an Organization. `slug` is derived from `name` on creation and is not editable; admins change through `/organization/{organization_id}/admin`. */
5843
+ OrganizationUpdate: {
5844
+ /** @description New human-readable name. */
5845
+ name?: string;
5846
+ /** @description New free-form description. */
5847
+ description?: string;
5848
+ /**
5849
+ * Format: uri
5850
+ * @description New URL of the organization logo.
5851
+ */
5852
+ logo_url?: string;
5853
+ /** @description Arbitrary key/value pairs. Replaces the previous metadata entirely. */
5854
+ metadata?: {
5855
+ [key: string]: unknown;
5856
+ };
5857
+ };
5858
+ /** @description Arbitrary key/value pairs. Replaces the previous metadata entirely. */
5859
+ OrganizationUpdateMetadata: {
5860
+ [key: string]: unknown;
5861
+ };
5660
5862
  /** @description TeamMember */
5661
5863
  TeamMember: {
5662
5864
  /** @description TeamMember ID */
@@ -6101,8 +6303,11 @@ export interface components {
6101
6303
  * - `team.invite.created`: An invitation to join a team was created.
6102
6304
  * - `team.invite.revoked`: A pending team invitation was revoked.
6103
6305
  * - `team.invite.accepted`: A team invitation was accepted.
6306
+ * - `organization.created`: An organization was created.
6307
+ * - `organization.updated`: An organization was updated (name, settings or admins).
6308
+ * - `organization.deleted`: An organization was deleted. Its teams are no longer in any organization; no `team.updated` is sent for them.
6104
6309
  *
6105
- * `team.*` payloads are notices, not state: they carry ids (`team_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
6310
+ * `team.*` and `organization.*` payloads are notices, not state: they carry ids (`team_id`, `organization_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
6106
6311
  */
6107
6312
  events: string[];
6108
6313
  /** @enum {string} */
@@ -6202,8 +6407,11 @@ export interface components {
6202
6407
  * - `team.invite.created`: An invitation to join a team was created.
6203
6408
  * - `team.invite.revoked`: A pending team invitation was revoked.
6204
6409
  * - `team.invite.accepted`: A team invitation was accepted.
6410
+ * - `organization.created`: An organization was created.
6411
+ * - `organization.updated`: An organization was updated (name, settings or admins).
6412
+ * - `organization.deleted`: An organization was deleted. Its teams are no longer in any organization; no `team.updated` is sent for them.
6205
6413
  *
6206
- * `team.*` payloads are notices, not state: they carry ids (`team_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
6414
+ * `team.*` and `organization.*` payloads are notices, not state: they carry ids (`team_id`, `organization_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
6207
6415
  */
6208
6416
  events: string[];
6209
6417
  /** @enum {string} */
@@ -6297,8 +6505,11 @@ export interface components {
6297
6505
  * - `team.invite.created`: An invitation to join a team was created.
6298
6506
  * - `team.invite.revoked`: A pending team invitation was revoked.
6299
6507
  * - `team.invite.accepted`: A team invitation was accepted.
6508
+ * - `organization.created`: An organization was created.
6509
+ * - `organization.updated`: An organization was updated (name, settings or admins).
6510
+ * - `organization.deleted`: An organization was deleted. Its teams are no longer in any organization; no `team.updated` is sent for them.
6300
6511
  *
6301
- * `team.*` payloads are notices, not state: they carry ids (`team_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
6512
+ * `team.*` and `organization.*` payloads are notices, not state: they carry ids (`team_id`, `organization_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
6302
6513
  */
6303
6514
  events: string[];
6304
6515
  /** @enum {string} */
@@ -6360,8 +6571,11 @@ export interface components {
6360
6571
  * - `team.invite.created`: An invitation to join a team was created.
6361
6572
  * - `team.invite.revoked`: A pending team invitation was revoked.
6362
6573
  * - `team.invite.accepted`: A team invitation was accepted.
6574
+ * - `organization.created`: An organization was created.
6575
+ * - `organization.updated`: An organization was updated (name, settings or admins).
6576
+ * - `organization.deleted`: An organization was deleted. Its teams are no longer in any organization; no `team.updated` is sent for them.
6363
6577
  *
6364
- * `team.*` payloads are notices, not state: they carry ids (`team_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
6578
+ * `team.*` and `organization.*` payloads are notices, not state: they carry ids (`team_id`, `organization_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
6365
6579
  */
6366
6580
  events: string[];
6367
6581
  /** @enum {string} */
@@ -6427,8 +6641,11 @@ export interface components {
6427
6641
  * - `team.invite.created`: An invitation to join a team was created.
6428
6642
  * - `team.invite.revoked`: A pending team invitation was revoked.
6429
6643
  * - `team.invite.accepted`: A team invitation was accepted.
6644
+ * - `organization.created`: An organization was created.
6645
+ * - `organization.updated`: An organization was updated (name, settings or admins).
6646
+ * - `organization.deleted`: An organization was deleted. Its teams are no longer in any organization; no `team.updated` is sent for them.
6430
6647
  *
6431
- * `team.*` payloads are notices, not state: they carry ids (`team_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
6648
+ * `team.*` and `organization.*` payloads are notices, not state: they carry ids (`team_id`, `organization_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
6432
6649
  */
6433
6650
  events?: string[];
6434
6651
  /** @enum {string} */
@@ -6827,6 +7044,7 @@ export interface components {
6827
7044
  default_country_iso?: string | null;
6828
7045
  webauthn_rp_id?: string | null;
6829
7046
  logout_confirm_required?: boolean | null;
7047
+ dynamic_client_registration_enabled?: boolean | null;
6830
7048
  canonical_host?: string | null;
6831
7049
  login_flow?: string | null;
6832
7050
  };
@@ -6864,6 +7082,8 @@ export interface components {
6864
7082
  audience?: string;
6865
7083
  /** @description RFC 8707 Resource Indicator. Absolute URI of the target Api, no fragment. Matched against `Api.identifier` in the tenant. */
6866
7084
  resource?: string;
7085
+ /** @description client_credentials only. An access token previously returned by this endpoint that a resource server rejected with 401. If it is the cached token for this client, the cache entry is dropped and a new token is issued; otherwise it has no effect. */
7086
+ invalidate_token?: string;
6867
7087
  } & {
6868
7088
  [key: string]: unknown;
6869
7089
  };
@@ -7035,6 +7255,11 @@ export interface components {
7035
7255
  * - `invite_used` (400): The invite was already accepted.
7036
7256
  * - `already_member` (400): The user is already a member of the team.
7037
7257
  * - `not_a_member` (404): The user is not a member of the team.
7258
+ * - `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`.
7259
+ * - `organization_not_found` (404): No organization with that id in this account.
7260
+ * - `invalid_user` (400): The user does not exist in this account.
7261
+ * - `not_an_organization_admin` (404): The user is not an admin of the organization.
7262
+ * - `last_organization_admin` (409): An organization keeps at least one admin. Add another admin before removing this one.
7038
7263
  * - `team_id_unavailable` (409): The team id cannot be used in this tenant. Pick another id or let the API generate one.
7039
7264
  * - `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.
7040
7265
  * - `role_not_found` (404): No role with that id in this account.
@@ -7048,7 +7273,7 @@ export interface components {
7048
7273
  * - `delivery_in_progress` (409): The delivery is being attempted right now; retry the redeliver in a minute.
7049
7274
  * @enum {string}
7050
7275
  */
7051
- 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" | "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";
7276
+ 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" | "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";
7052
7277
  /** @description Every error response has this shape. Branch on `error_code`, never on `message`: the message is written for a person and may change. */
7053
7278
  ErrorResponse: {
7054
7279
  /** @description The HTTP status, repeated. */
@@ -7208,6 +7433,8 @@ export interface operations {
7208
7433
  webauthn_rp_id?: string | null;
7209
7434
  /** @description When true, `/logout` asks the End-User to confirm before ending the session unless the request carries a verified `id_token_hint`. Off by default — a plain link to `/logout` is otherwise enough to sign anyone out (logout CSRF). */
7210
7435
  logout_confirm_required?: boolean;
7436
+ /** @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`. */
7437
+ dynamic_client_registration_enabled?: boolean;
7211
7438
  /** @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. */
7212
7439
  canonical_host?: string | null;
7213
7440
  /** @description AuthAccount creation date */
@@ -7563,6 +7790,8 @@ export interface operations {
7563
7790
  webauthn_rp_id?: string | null;
7564
7791
  /** @description When true, `/logout` asks the End-User to confirm before ending the session unless the request carries a verified `id_token_hint`. Off by default — a plain link to `/logout` is otherwise enough to sign anyone out (logout CSRF). */
7565
7792
  logout_confirm_required?: boolean;
7793
+ /** @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`. */
7794
+ dynamic_client_registration_enabled?: boolean;
7566
7795
  /** @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. */
7567
7796
  canonical_host?: string | null;
7568
7797
  /** @description AuthAccount creation date */
@@ -7806,6 +8035,8 @@ export interface operations {
7806
8035
  webauthn_rp_id?: string | null;
7807
8036
  /** @description When true, `/logout` asks the End-User to confirm before ending the session unless the request carries a verified `id_token_hint`. Off by default — a plain link to `/logout` is otherwise enough to sign anyone out (logout CSRF). */
7808
8037
  logout_confirm_required?: boolean;
8038
+ /** @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`. */
8039
+ dynamic_client_registration_enabled?: boolean;
7809
8040
  /** @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. */
7810
8041
  canonical_host?: string | null;
7811
8042
  /** @description AuthAccount creation date */
@@ -7998,6 +8229,7 @@ export interface operations {
7998
8229
  default_country_iso?: string | null;
7999
8230
  webauthn_rp_id?: string | null;
8000
8231
  logout_confirm_required?: boolean | null;
8232
+ dynamic_client_registration_enabled?: boolean | null;
8001
8233
  canonical_host?: string | null;
8002
8234
  login_flow?: string | null;
8003
8235
  };
@@ -8124,6 +8356,8 @@ export interface operations {
8124
8356
  webauthn_rp_id?: string | null;
8125
8357
  /** @description When true, `/logout` asks the End-User to confirm before ending the session unless the request carries a verified `id_token_hint`. Off by default — a plain link to `/logout` is otherwise enough to sign anyone out (logout CSRF). */
8126
8358
  logout_confirm_required?: boolean;
8359
+ /** @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`. */
8360
+ dynamic_client_registration_enabled?: boolean;
8127
8361
  /** @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. */
8128
8362
  canonical_host?: string | null;
8129
8363
  /** @description AuthAccount creation date */
@@ -9386,6 +9620,8 @@ export interface operations {
9386
9620
  webauthn_rp_id?: string | null;
9387
9621
  /** @description When true, `/logout` asks the End-User to confirm before ending the session unless the request carries a verified `id_token_hint`. Off by default — a plain link to `/logout` is otherwise enough to sign anyone out (logout CSRF). */
9388
9622
  logout_confirm_required?: boolean;
9623
+ /** @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`. */
9624
+ dynamic_client_registration_enabled?: boolean;
9389
9625
  /** @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. */
9390
9626
  canonical_host?: string | null;
9391
9627
  /** @description AuthAccount creation date */
@@ -17706,6 +17942,8 @@ export interface operations {
17706
17942
  description: string | null;
17707
17943
  /** @description Optional URL of an image used as the team avatar/logo. */
17708
17944
  logo_url: string | null;
17945
+ /** @description Id of the Organization the team belongs to, or `null`. Changed only with `PUT /team/{team_id}/organization`. */
17946
+ organization?: string | null;
17709
17947
  /** @description Object is related with this account */
17710
17948
  account: string;
17711
17949
  /**
@@ -17840,6 +18078,8 @@ export interface operations {
17840
18078
  description: string | null;
17841
18079
  /** @description Optional URL of an image used as the team avatar/logo. */
17842
18080
  logo_url: string | null;
18081
+ /** @description Id of the Organization the team belongs to, or `null`. Changed only with `PUT /team/{team_id}/organization`. */
18082
+ organization?: string | null;
17843
18083
  /** @description Object is related with this account */
17844
18084
  account: string;
17845
18085
  /**
@@ -18003,6 +18243,8 @@ export interface operations {
18003
18243
  description: string | null;
18004
18244
  /** @description Optional URL of an image used as the team avatar/logo. */
18005
18245
  logo_url: string | null;
18246
+ /** @description Id of the Organization the team belongs to, or `null`. Changed only with `PUT /team/{team_id}/organization`. */
18247
+ organization?: string | null;
18006
18248
  /** @description Object is related with this account */
18007
18249
  account: string;
18008
18250
  /**
@@ -18042,6 +18284,8 @@ export interface operations {
18042
18284
  description: string | null;
18043
18285
  /** @description Optional URL of an image used as the team avatar/logo. */
18044
18286
  logo_url: string | null;
18287
+ /** @description Id of the Organization the team belongs to, or `null`. Changed only with `PUT /team/{team_id}/organization`. */
18288
+ organization?: string | null;
18045
18289
  /** @description Object is related with this account */
18046
18290
  account: string;
18047
18291
  /**
@@ -18202,6 +18446,8 @@ export interface operations {
18202
18446
  description: string | null;
18203
18447
  /** @description Optional URL of an image used as the team avatar/logo. */
18204
18448
  logo_url: string | null;
18449
+ /** @description Id of the Organization the team belongs to, or `null`. Changed only with `PUT /team/{team_id}/organization`. */
18450
+ organization?: string | null;
18205
18451
  /** @description Object is related with this account */
18206
18452
  account: string;
18207
18453
  /**
@@ -18342,6 +18588,8 @@ export interface operations {
18342
18588
  description: string | null;
18343
18589
  /** @description Optional URL of an image used as the team avatar/logo. */
18344
18590
  logo_url: string | null;
18591
+ /** @description Id of the Organization the team belongs to, or `null`. Changed only with `PUT /team/{team_id}/organization`. */
18592
+ organization?: string | null;
18345
18593
  /** @description Object is related with this account */
18346
18594
  account: string;
18347
18595
  /**
@@ -18446,51 +18694,66 @@ export interface operations {
18446
18694
  };
18447
18695
  };
18448
18696
  };
18449
- "teammember/list": {
18697
+ "team/setOrganization": {
18450
18698
  parameters: {
18451
- query?: {
18452
- /** @description Number of items per page (max 200) */
18453
- pageSize?: number;
18454
- /** @description Cursor for next page */
18455
- cursor?: string;
18456
- /** @description Cursor returned by the previous page */
18457
- next?: string;
18458
- /** @description Exact match on `user`. Equivalent to `?query=user:<value>`. */
18459
- user?: string;
18460
- /** @description Exact match on `team`. Equivalent to `?query=team:<value>`. */
18461
- team?: string;
18462
- /** @description Filter using a FaableQL query */
18463
- query?: string;
18464
- /** @description Expand id-only fields in the response. Pass one path per entry (e.g. `?expand=user`). */
18465
- expand?: ("user" | "team" | "roles")[];
18466
- };
18699
+ query?: never;
18467
18700
  header?: never;
18468
- path?: never;
18701
+ path: {
18702
+ team_id: string;
18703
+ };
18469
18704
  cookie?: never;
18470
18705
  };
18471
- requestBody?: never;
18706
+ requestBody: {
18707
+ content: {
18708
+ "application/json": {
18709
+ /** @description Id of an Organization of this tenant, or `null` to take the team out of its organization. */
18710
+ organization: string | null;
18711
+ };
18712
+ };
18713
+ };
18472
18714
  responses: {
18473
- /** @description Default Response */
18715
+ /** @description Team */
18474
18716
  200: {
18475
18717
  headers: {
18476
18718
  [name: string]: unknown;
18477
18719
  };
18478
18720
  content: {
18479
18721
  "application/json": {
18480
- next: string | null;
18481
- results: components["schemas"]["TeamMember"][];
18722
+ /** @description Team ID */
18723
+ id: string;
18724
+ /**
18725
+ * @description Human-readable name of the team. Shown in the dashboard and in team-picker UI.
18726
+ * @example Acme Engineering
18727
+ */
18728
+ name: string;
18729
+ /**
18730
+ * @description URL-safe identifier auto-derived from `name`. Unique within the tenant; used in routes that address a team by slug.
18731
+ * @example acme-engineering
18732
+ */
18733
+ slug: string;
18734
+ /** @description Optional free-form description of the team. */
18735
+ description: string | null;
18736
+ /** @description Optional URL of an image used as the team avatar/logo. */
18737
+ logo_url: string | null;
18738
+ /** @description Id of the Organization the team belongs to, or `null`. Changed only with `PUT /team/{team_id}/organization`. */
18739
+ organization?: string | null;
18740
+ /** @description Object is related with this account */
18741
+ account: string;
18742
+ /**
18743
+ * @description TeamMetadata
18744
+ * @default {}
18745
+ */
18746
+ metadata: {
18747
+ [key: string]: unknown;
18748
+ };
18749
+ /** @description Team creation date */
18750
+ createdAt: string;
18751
+ /** @description Team updated date */
18752
+ updatedAt?: string;
18482
18753
  };
18483
18754
  };
18484
18755
  };
18485
- /**
18486
- * @description `invalid_query` — The `?query=` FaableQL expression could not be parsed.
18487
- *
18488
- * `invalid_expand` — An `?expand=` path is not allowed on this resource.
18489
- *
18490
- * `search_not_supported` — This resource does not support `?search=`.
18491
- *
18492
- * `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
18493
- */
18756
+ /** @description `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field. */
18494
18757
  400: {
18495
18758
  headers: {
18496
18759
  [name: string]: unknown;
@@ -18498,7 +18761,7 @@ export interface operations {
18498
18761
  content: {
18499
18762
  "application/json": components["schemas"]["ErrorResponse"] & {
18500
18763
  /** @enum {string} */
18501
- error_code?: "invalid_query" | "invalid_expand" | "search_not_supported" | "validation_error";
18764
+ error_code?: "validation_error";
18502
18765
  };
18503
18766
  };
18504
18767
  };
@@ -18532,7 +18795,13 @@ export interface operations {
18532
18795
  };
18533
18796
  };
18534
18797
  };
18535
- /** @description `account_not_found` — No Auth Account matches the request (domain, header or token). */
18798
+ /**
18799
+ * @description `not_found` — The resource does not exist in this account.
18800
+ *
18801
+ * `organization_not_found` — No organization with that id in this account.
18802
+ *
18803
+ * `account_not_found` — No Auth Account matches the request (domain, header or token).
18804
+ */
18536
18805
  404: {
18537
18806
  headers: {
18538
18807
  [name: string]: unknown;
@@ -18540,7 +18809,7 @@ export interface operations {
18540
18809
  content: {
18541
18810
  "application/json": components["schemas"]["ErrorResponse"] & {
18542
18811
  /** @enum {string} */
18543
- error_code?: "account_not_found";
18812
+ error_code?: "not_found" | "organization_not_found" | "account_not_found";
18544
18813
  };
18545
18814
  };
18546
18815
  };
@@ -18570,48 +18839,1194 @@ export interface operations {
18570
18839
  };
18571
18840
  };
18572
18841
  };
18573
- "teammember/get": {
18842
+ "organization/list": {
18574
18843
  parameters: {
18575
18844
  query?: {
18576
- /** @description Expand id-only fields in the response. Pass one path per entry (e.g. `?expand=user`). */
18577
- expand?: ("user" | "team" | "roles")[];
18845
+ /** @description Number of items per page (max 200) */
18846
+ pageSize?: number;
18847
+ /** @description Cursor for next page */
18848
+ cursor?: string;
18849
+ /** @description Cursor returned by the previous page */
18850
+ next?: string;
18851
+ /** @description Filter using a FaableQL query */
18852
+ query?: string;
18853
+ /** @description Full-text search across: `name`, `slug`. */
18854
+ q?: string;
18578
18855
  };
18579
18856
  header?: never;
18580
- path: {
18581
- teammember_id: string;
18582
- };
18857
+ path?: never;
18583
18858
  cookie?: never;
18584
18859
  };
18585
18860
  requestBody?: never;
18586
18861
  responses: {
18587
- /** @description TeamMember */
18862
+ /** @description Default Response */
18588
18863
  200: {
18589
18864
  headers: {
18590
18865
  [name: string]: unknown;
18591
18866
  };
18592
18867
  content: {
18593
18868
  "application/json": {
18594
- /** @description TeamMember ID */
18595
- id: string;
18596
- /** @description User that belongs to the team. Returned as an id by default; pass `?expand=user` to inline the full User object. */
18597
- user: components["schemas"]["User"] | string | unknown;
18598
- /** @description Team the user belongs to. Returned as an id by default; pass `?expand=team` to inline the full Team object. */
18599
- team: components["schemas"]["Team"] | string | unknown;
18600
- /** @description Roles granted to the user *within this team*. Distinct from account-wide RoleMember grants — these only apply in the scope of the team. Each entry is an id by default; pass `?expand=roles` to inline. */
18601
- roles: (components["schemas"]["Role"] | string | unknown)[];
18602
- /** @description Object is related with this account */
18603
- account: string;
18604
- /**
18605
- * @description TeamMemberMetadata
18606
- * @default {}
18607
- */
18608
- metadata: {
18609
- [key: string]: unknown;
18610
- };
18611
- /** @description TeamMember creation date */
18612
- createdAt: string;
18613
- /** @description TeamMember updated date */
18614
- updatedAt?: string;
18869
+ next: string | null;
18870
+ results: components["schemas"]["Organization"][];
18871
+ };
18872
+ };
18873
+ };
18874
+ /**
18875
+ * @description `invalid_query` — The `?query=` FaableQL expression could not be parsed.
18876
+ *
18877
+ * `invalid_expand` — An `?expand=` path is not allowed on this resource.
18878
+ *
18879
+ * `search_not_supported` — This resource does not support `?search=`.
18880
+ *
18881
+ * `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
18882
+ */
18883
+ 400: {
18884
+ headers: {
18885
+ [name: string]: unknown;
18886
+ };
18887
+ content: {
18888
+ "application/json": components["schemas"]["ErrorResponse"] & {
18889
+ /** @enum {string} */
18890
+ error_code?: "invalid_query" | "invalid_expand" | "search_not_supported" | "validation_error";
18891
+ };
18892
+ };
18893
+ };
18894
+ /** @description `unauthorized` — The request carries no valid credentials. */
18895
+ 401: {
18896
+ headers: {
18897
+ [name: string]: unknown;
18898
+ };
18899
+ content: {
18900
+ "application/json": components["schemas"]["ErrorResponse"] & {
18901
+ /** @enum {string} */
18902
+ error_code?: "unauthorized";
18903
+ };
18904
+ };
18905
+ };
18906
+ /**
18907
+ * @description `forbidden` — The credentials are valid but do not allow this operation.
18908
+ *
18909
+ * `insufficient_scope` — The token lacks a scope this operation requires. `message` names it.
18910
+ *
18911
+ * `user_suspended` — The user is suspended and cannot sign in or be modified.
18912
+ */
18913
+ 403: {
18914
+ headers: {
18915
+ [name: string]: unknown;
18916
+ };
18917
+ content: {
18918
+ "application/json": components["schemas"]["ErrorResponse"] & {
18919
+ /** @enum {string} */
18920
+ error_code?: "forbidden" | "insufficient_scope" | "user_suspended";
18921
+ };
18922
+ };
18923
+ };
18924
+ /** @description `account_not_found` — No Auth Account matches the request (domain, header or token). */
18925
+ 404: {
18926
+ headers: {
18927
+ [name: string]: unknown;
18928
+ };
18929
+ content: {
18930
+ "application/json": components["schemas"]["ErrorResponse"] & {
18931
+ /** @enum {string} */
18932
+ error_code?: "account_not_found";
18933
+ };
18934
+ };
18935
+ };
18936
+ /** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
18937
+ 429: {
18938
+ headers: {
18939
+ [name: string]: unknown;
18940
+ };
18941
+ content: {
18942
+ "application/json": components["schemas"]["ErrorResponse"] & {
18943
+ /** @enum {string} */
18944
+ error_code?: "too_many_requests";
18945
+ };
18946
+ };
18947
+ };
18948
+ /** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
18949
+ 500: {
18950
+ headers: {
18951
+ [name: string]: unknown;
18952
+ };
18953
+ content: {
18954
+ "application/json": components["schemas"]["ErrorResponse"] & {
18955
+ /** @enum {string} */
18956
+ error_code?: "internal_error";
18957
+ };
18958
+ };
18959
+ };
18960
+ };
18961
+ };
18962
+ "organization/create": {
18963
+ parameters: {
18964
+ query?: never;
18965
+ header?: never;
18966
+ path?: never;
18967
+ cookie?: never;
18968
+ };
18969
+ /** @description OrganizationCreate */
18970
+ requestBody: {
18971
+ content: {
18972
+ "application/json": {
18973
+ /**
18974
+ * @description Human-readable name of the organization.
18975
+ * @example Acme Inc.
18976
+ */
18977
+ name: string;
18978
+ /** @description Optional free-form description. */
18979
+ description?: string;
18980
+ /**
18981
+ * Format: uri
18982
+ * @description Optional URL of the organization logo.
18983
+ */
18984
+ logo_url?: string;
18985
+ /** @description Initial admins (user ids of this tenant). Can be empty and filled later with `POST /organization/{organization_id}/admin`. */
18986
+ admins?: string[];
18987
+ /** @description Add Metadata */
18988
+ metadata?: {
18989
+ [key: string]: unknown;
18990
+ };
18991
+ };
18992
+ };
18993
+ };
18994
+ responses: {
18995
+ /** @description Organization */
18996
+ 200: {
18997
+ headers: {
18998
+ [name: string]: unknown;
18999
+ };
19000
+ content: {
19001
+ "application/json": {
19002
+ /** @description Organization ID */
19003
+ id: string;
19004
+ /**
19005
+ * @description Human-readable name of the organization.
19006
+ * @example Acme Inc.
19007
+ */
19008
+ name: string;
19009
+ /**
19010
+ * @description URL-safe identifier derived from `name`. Unique within the tenant.
19011
+ * @example acme-inc
19012
+ */
19013
+ slug: string;
19014
+ /** @description Optional free-form description. */
19015
+ description: string | null;
19016
+ /** @description Optional URL of the organization logo. */
19017
+ logo_url: string | null;
19018
+ /** @description Ids of the users who manage the organization: its teams and its identity settings. Being an admin does not grant access to any team; team access is team membership. */
19019
+ admins: string[];
19020
+ /** @description Object is related with this account */
19021
+ account: string;
19022
+ /**
19023
+ * @description OrganizationMetadata
19024
+ * @default {}
19025
+ */
19026
+ metadata: {
19027
+ [key: string]: unknown;
19028
+ };
19029
+ /** @description Organization creation date */
19030
+ createdAt: string;
19031
+ /** @description Organization updated date */
19032
+ updatedAt?: string;
19033
+ };
19034
+ };
19035
+ };
19036
+ /**
19037
+ * @description `already_exists` — A resource with the same unique field already exists (for a user, usually `email`). `details.fields` names the field.
19038
+ *
19039
+ * `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
19040
+ */
19041
+ 400: {
19042
+ headers: {
19043
+ [name: string]: unknown;
19044
+ };
19045
+ content: {
19046
+ "application/json": components["schemas"]["ErrorResponse"] & {
19047
+ /** @enum {string} */
19048
+ error_code?: "already_exists" | "validation_error";
19049
+ };
19050
+ };
19051
+ };
19052
+ /** @description `unauthorized` — The request carries no valid credentials. */
19053
+ 401: {
19054
+ headers: {
19055
+ [name: string]: unknown;
19056
+ };
19057
+ content: {
19058
+ "application/json": components["schemas"]["ErrorResponse"] & {
19059
+ /** @enum {string} */
19060
+ error_code?: "unauthorized";
19061
+ };
19062
+ };
19063
+ };
19064
+ /**
19065
+ * @description `forbidden` — The credentials are valid but do not allow this operation.
19066
+ *
19067
+ * `insufficient_scope` — The token lacks a scope this operation requires. `message` names it.
19068
+ *
19069
+ * `user_suspended` — The user is suspended and cannot sign in or be modified.
19070
+ */
19071
+ 403: {
19072
+ headers: {
19073
+ [name: string]: unknown;
19074
+ };
19075
+ content: {
19076
+ "application/json": components["schemas"]["ErrorResponse"] & {
19077
+ /** @enum {string} */
19078
+ error_code?: "forbidden" | "insufficient_scope" | "user_suspended";
19079
+ };
19080
+ };
19081
+ };
19082
+ /** @description `account_not_found` — No Auth Account matches the request (domain, header or token). */
19083
+ 404: {
19084
+ headers: {
19085
+ [name: string]: unknown;
19086
+ };
19087
+ content: {
19088
+ "application/json": components["schemas"]["ErrorResponse"] & {
19089
+ /** @enum {string} */
19090
+ error_code?: "account_not_found";
19091
+ };
19092
+ };
19093
+ };
19094
+ /** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
19095
+ 429: {
19096
+ headers: {
19097
+ [name: string]: unknown;
19098
+ };
19099
+ content: {
19100
+ "application/json": components["schemas"]["ErrorResponse"] & {
19101
+ /** @enum {string} */
19102
+ error_code?: "too_many_requests";
19103
+ };
19104
+ };
19105
+ };
19106
+ /** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
19107
+ 500: {
19108
+ headers: {
19109
+ [name: string]: unknown;
19110
+ };
19111
+ content: {
19112
+ "application/json": components["schemas"]["ErrorResponse"] & {
19113
+ /** @enum {string} */
19114
+ error_code?: "internal_error";
19115
+ };
19116
+ };
19117
+ };
19118
+ };
19119
+ };
19120
+ "organization/get": {
19121
+ parameters: {
19122
+ query?: never;
19123
+ header?: never;
19124
+ path: {
19125
+ organization_id: string;
19126
+ };
19127
+ cookie?: never;
19128
+ };
19129
+ requestBody?: never;
19130
+ responses: {
19131
+ /** @description Organization */
19132
+ 200: {
19133
+ headers: {
19134
+ [name: string]: unknown;
19135
+ };
19136
+ content: {
19137
+ "application/json": {
19138
+ /** @description Organization ID */
19139
+ id: string;
19140
+ /**
19141
+ * @description Human-readable name of the organization.
19142
+ * @example Acme Inc.
19143
+ */
19144
+ name: string;
19145
+ /**
19146
+ * @description URL-safe identifier derived from `name`. Unique within the tenant.
19147
+ * @example acme-inc
19148
+ */
19149
+ slug: string;
19150
+ /** @description Optional free-form description. */
19151
+ description: string | null;
19152
+ /** @description Optional URL of the organization logo. */
19153
+ logo_url: string | null;
19154
+ /** @description Ids of the users who manage the organization: its teams and its identity settings. Being an admin does not grant access to any team; team access is team membership. */
19155
+ admins: string[];
19156
+ /** @description Object is related with this account */
19157
+ account: string;
19158
+ /**
19159
+ * @description OrganizationMetadata
19160
+ * @default {}
19161
+ */
19162
+ metadata: {
19163
+ [key: string]: unknown;
19164
+ };
19165
+ /** @description Organization creation date */
19166
+ createdAt: string;
19167
+ /** @description Organization updated date */
19168
+ updatedAt?: string;
19169
+ };
19170
+ };
19171
+ };
19172
+ /**
19173
+ * @description `invalid_id` — The id in the path is not a valid id for this resource.
19174
+ *
19175
+ * `invalid_expand` — An `?expand=` path is not allowed on this resource.
19176
+ *
19177
+ * `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
19178
+ */
19179
+ 400: {
19180
+ headers: {
19181
+ [name: string]: unknown;
19182
+ };
19183
+ content: {
19184
+ "application/json": components["schemas"]["ErrorResponse"] & {
19185
+ /** @enum {string} */
19186
+ error_code?: "invalid_id" | "invalid_expand" | "validation_error";
19187
+ };
19188
+ };
19189
+ };
19190
+ /** @description `unauthorized` — The request carries no valid credentials. */
19191
+ 401: {
19192
+ headers: {
19193
+ [name: string]: unknown;
19194
+ };
19195
+ content: {
19196
+ "application/json": components["schemas"]["ErrorResponse"] & {
19197
+ /** @enum {string} */
19198
+ error_code?: "unauthorized";
19199
+ };
19200
+ };
19201
+ };
19202
+ /**
19203
+ * @description `forbidden` — The credentials are valid but do not allow this operation.
19204
+ *
19205
+ * `insufficient_scope` — The token lacks a scope this operation requires. `message` names it.
19206
+ *
19207
+ * `user_suspended` — The user is suspended and cannot sign in or be modified.
19208
+ */
19209
+ 403: {
19210
+ headers: {
19211
+ [name: string]: unknown;
19212
+ };
19213
+ content: {
19214
+ "application/json": components["schemas"]["ErrorResponse"] & {
19215
+ /** @enum {string} */
19216
+ error_code?: "forbidden" | "insufficient_scope" | "user_suspended";
19217
+ };
19218
+ };
19219
+ };
19220
+ /**
19221
+ * @description `not_found` — The resource does not exist in this account.
19222
+ *
19223
+ * `account_not_found` — No Auth Account matches the request (domain, header or token).
19224
+ */
19225
+ 404: {
19226
+ headers: {
19227
+ [name: string]: unknown;
19228
+ };
19229
+ content: {
19230
+ "application/json": components["schemas"]["ErrorResponse"] & {
19231
+ /** @enum {string} */
19232
+ error_code?: "not_found" | "account_not_found";
19233
+ };
19234
+ };
19235
+ };
19236
+ /** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
19237
+ 429: {
19238
+ headers: {
19239
+ [name: string]: unknown;
19240
+ };
19241
+ content: {
19242
+ "application/json": components["schemas"]["ErrorResponse"] & {
19243
+ /** @enum {string} */
19244
+ error_code?: "too_many_requests";
19245
+ };
19246
+ };
19247
+ };
19248
+ /** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
19249
+ 500: {
19250
+ headers: {
19251
+ [name: string]: unknown;
19252
+ };
19253
+ content: {
19254
+ "application/json": components["schemas"]["ErrorResponse"] & {
19255
+ /** @enum {string} */
19256
+ error_code?: "internal_error";
19257
+ };
19258
+ };
19259
+ };
19260
+ };
19261
+ };
19262
+ "organization/update": {
19263
+ parameters: {
19264
+ query?: never;
19265
+ header?: never;
19266
+ path: {
19267
+ organization_id: string;
19268
+ };
19269
+ cookie?: never;
19270
+ };
19271
+ /** @description Partial update for an Organization. `slug` is derived from `name` on creation and is not editable; admins change through `/organization/{organization_id}/admin`. */
19272
+ requestBody: {
19273
+ content: {
19274
+ "application/json": {
19275
+ /** @description New human-readable name. */
19276
+ name?: string;
19277
+ /** @description New free-form description. */
19278
+ description?: string;
19279
+ /**
19280
+ * Format: uri
19281
+ * @description New URL of the organization logo.
19282
+ */
19283
+ logo_url?: string;
19284
+ /** @description Arbitrary key/value pairs. Replaces the previous metadata entirely. */
19285
+ metadata?: {
19286
+ [key: string]: unknown;
19287
+ };
19288
+ };
19289
+ };
19290
+ };
19291
+ responses: {
19292
+ /** @description Organization */
19293
+ 200: {
19294
+ headers: {
19295
+ [name: string]: unknown;
19296
+ };
19297
+ content: {
19298
+ "application/json": {
19299
+ /** @description Organization ID */
19300
+ id: string;
19301
+ /**
19302
+ * @description Human-readable name of the organization.
19303
+ * @example Acme Inc.
19304
+ */
19305
+ name: string;
19306
+ /**
19307
+ * @description URL-safe identifier derived from `name`. Unique within the tenant.
19308
+ * @example acme-inc
19309
+ */
19310
+ slug: string;
19311
+ /** @description Optional free-form description. */
19312
+ description: string | null;
19313
+ /** @description Optional URL of the organization logo. */
19314
+ logo_url: string | null;
19315
+ /** @description Ids of the users who manage the organization: its teams and its identity settings. Being an admin does not grant access to any team; team access is team membership. */
19316
+ admins: string[];
19317
+ /** @description Object is related with this account */
19318
+ account: string;
19319
+ /**
19320
+ * @description OrganizationMetadata
19321
+ * @default {}
19322
+ */
19323
+ metadata: {
19324
+ [key: string]: unknown;
19325
+ };
19326
+ /** @description Organization creation date */
19327
+ createdAt: string;
19328
+ /** @description Organization updated date */
19329
+ updatedAt?: string;
19330
+ };
19331
+ };
19332
+ };
19333
+ /**
19334
+ * @description `invalid_id` — The id in the path is not a valid id for this resource.
19335
+ *
19336
+ * `already_exists` — A resource with the same unique field already exists (for a user, usually `email`). `details.fields` names the field.
19337
+ *
19338
+ * `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
19339
+ */
19340
+ 400: {
19341
+ headers: {
19342
+ [name: string]: unknown;
19343
+ };
19344
+ content: {
19345
+ "application/json": components["schemas"]["ErrorResponse"] & {
19346
+ /** @enum {string} */
19347
+ error_code?: "invalid_id" | "already_exists" | "validation_error";
19348
+ };
19349
+ };
19350
+ };
19351
+ /** @description `unauthorized` — The request carries no valid credentials. */
19352
+ 401: {
19353
+ headers: {
19354
+ [name: string]: unknown;
19355
+ };
19356
+ content: {
19357
+ "application/json": components["schemas"]["ErrorResponse"] & {
19358
+ /** @enum {string} */
19359
+ error_code?: "unauthorized";
19360
+ };
19361
+ };
19362
+ };
19363
+ /**
19364
+ * @description `forbidden` — The credentials are valid but do not allow this operation.
19365
+ *
19366
+ * `insufficient_scope` — The token lacks a scope this operation requires. `message` names it.
19367
+ *
19368
+ * `user_suspended` — The user is suspended and cannot sign in or be modified.
19369
+ */
19370
+ 403: {
19371
+ headers: {
19372
+ [name: string]: unknown;
19373
+ };
19374
+ content: {
19375
+ "application/json": components["schemas"]["ErrorResponse"] & {
19376
+ /** @enum {string} */
19377
+ error_code?: "forbidden" | "insufficient_scope" | "user_suspended";
19378
+ };
19379
+ };
19380
+ };
19381
+ /**
19382
+ * @description `not_found` — The resource does not exist in this account.
19383
+ *
19384
+ * `account_not_found` — No Auth Account matches the request (domain, header or token).
19385
+ */
19386
+ 404: {
19387
+ headers: {
19388
+ [name: string]: unknown;
19389
+ };
19390
+ content: {
19391
+ "application/json": components["schemas"]["ErrorResponse"] & {
19392
+ /** @enum {string} */
19393
+ error_code?: "not_found" | "account_not_found";
19394
+ };
19395
+ };
19396
+ };
19397
+ /** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
19398
+ 429: {
19399
+ headers: {
19400
+ [name: string]: unknown;
19401
+ };
19402
+ content: {
19403
+ "application/json": components["schemas"]["ErrorResponse"] & {
19404
+ /** @enum {string} */
19405
+ error_code?: "too_many_requests";
19406
+ };
19407
+ };
19408
+ };
19409
+ /** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
19410
+ 500: {
19411
+ headers: {
19412
+ [name: string]: unknown;
19413
+ };
19414
+ content: {
19415
+ "application/json": components["schemas"]["ErrorResponse"] & {
19416
+ /** @enum {string} */
19417
+ error_code?: "internal_error";
19418
+ };
19419
+ };
19420
+ };
19421
+ };
19422
+ };
19423
+ "organization/delete": {
19424
+ parameters: {
19425
+ query?: never;
19426
+ header?: never;
19427
+ path: {
19428
+ organization_id: string;
19429
+ };
19430
+ cookie?: never;
19431
+ };
19432
+ requestBody?: never;
19433
+ responses: {
19434
+ /** @description Organization */
19435
+ 200: {
19436
+ headers: {
19437
+ [name: string]: unknown;
19438
+ };
19439
+ content: {
19440
+ "application/json": {
19441
+ /** @description Organization ID */
19442
+ id: string;
19443
+ /**
19444
+ * @description Human-readable name of the organization.
19445
+ * @example Acme Inc.
19446
+ */
19447
+ name: string;
19448
+ /**
19449
+ * @description URL-safe identifier derived from `name`. Unique within the tenant.
19450
+ * @example acme-inc
19451
+ */
19452
+ slug: string;
19453
+ /** @description Optional free-form description. */
19454
+ description: string | null;
19455
+ /** @description Optional URL of the organization logo. */
19456
+ logo_url: string | null;
19457
+ /** @description Ids of the users who manage the organization: its teams and its identity settings. Being an admin does not grant access to any team; team access is team membership. */
19458
+ admins: string[];
19459
+ /** @description Object is related with this account */
19460
+ account: string;
19461
+ /**
19462
+ * @description OrganizationMetadata
19463
+ * @default {}
19464
+ */
19465
+ metadata: {
19466
+ [key: string]: unknown;
19467
+ };
19468
+ /** @description Organization creation date */
19469
+ createdAt: string;
19470
+ /** @description Organization updated date */
19471
+ updatedAt?: string;
19472
+ };
19473
+ };
19474
+ };
19475
+ /**
19476
+ * @description `invalid_id` — The id in the path is not a valid id for this resource.
19477
+ *
19478
+ * `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
19479
+ */
19480
+ 400: {
19481
+ headers: {
19482
+ [name: string]: unknown;
19483
+ };
19484
+ content: {
19485
+ "application/json": components["schemas"]["ErrorResponse"] & {
19486
+ /** @enum {string} */
19487
+ error_code?: "invalid_id" | "validation_error";
19488
+ };
19489
+ };
19490
+ };
19491
+ /** @description `unauthorized` — The request carries no valid credentials. */
19492
+ 401: {
19493
+ headers: {
19494
+ [name: string]: unknown;
19495
+ };
19496
+ content: {
19497
+ "application/json": components["schemas"]["ErrorResponse"] & {
19498
+ /** @enum {string} */
19499
+ error_code?: "unauthorized";
19500
+ };
19501
+ };
19502
+ };
19503
+ /**
19504
+ * @description `forbidden` — The credentials are valid but do not allow this operation.
19505
+ *
19506
+ * `insufficient_scope` — The token lacks a scope this operation requires. `message` names it.
19507
+ *
19508
+ * `user_suspended` — The user is suspended and cannot sign in or be modified.
19509
+ */
19510
+ 403: {
19511
+ headers: {
19512
+ [name: string]: unknown;
19513
+ };
19514
+ content: {
19515
+ "application/json": components["schemas"]["ErrorResponse"] & {
19516
+ /** @enum {string} */
19517
+ error_code?: "forbidden" | "insufficient_scope" | "user_suspended";
19518
+ };
19519
+ };
19520
+ };
19521
+ /**
19522
+ * @description `not_found` — The resource does not exist in this account.
19523
+ *
19524
+ * `account_not_found` — No Auth Account matches the request (domain, header or token).
19525
+ */
19526
+ 404: {
19527
+ headers: {
19528
+ [name: string]: unknown;
19529
+ };
19530
+ content: {
19531
+ "application/json": components["schemas"]["ErrorResponse"] & {
19532
+ /** @enum {string} */
19533
+ error_code?: "not_found" | "account_not_found";
19534
+ };
19535
+ };
19536
+ };
19537
+ /** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
19538
+ 429: {
19539
+ headers: {
19540
+ [name: string]: unknown;
19541
+ };
19542
+ content: {
19543
+ "application/json": components["schemas"]["ErrorResponse"] & {
19544
+ /** @enum {string} */
19545
+ error_code?: "too_many_requests";
19546
+ };
19547
+ };
19548
+ };
19549
+ /** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
19550
+ 500: {
19551
+ headers: {
19552
+ [name: string]: unknown;
19553
+ };
19554
+ content: {
19555
+ "application/json": components["schemas"]["ErrorResponse"] & {
19556
+ /** @enum {string} */
19557
+ error_code?: "internal_error";
19558
+ };
19559
+ };
19560
+ };
19561
+ };
19562
+ };
19563
+ "organization/addAdmin": {
19564
+ parameters: {
19565
+ query?: never;
19566
+ header?: never;
19567
+ path: {
19568
+ organization_id: string;
19569
+ };
19570
+ cookie?: never;
19571
+ };
19572
+ requestBody: {
19573
+ content: {
19574
+ "application/json": {
19575
+ /**
19576
+ * @description Id of a user of this tenant.
19577
+ * @example user_6555fd29a1b2c3d4e5f60718
19578
+ */
19579
+ user_id: string;
19580
+ };
19581
+ };
19582
+ };
19583
+ responses: {
19584
+ /** @description Organization */
19585
+ 200: {
19586
+ headers: {
19587
+ [name: string]: unknown;
19588
+ };
19589
+ content: {
19590
+ "application/json": {
19591
+ /** @description Organization ID */
19592
+ id: string;
19593
+ /**
19594
+ * @description Human-readable name of the organization.
19595
+ * @example Acme Inc.
19596
+ */
19597
+ name: string;
19598
+ /**
19599
+ * @description URL-safe identifier derived from `name`. Unique within the tenant.
19600
+ * @example acme-inc
19601
+ */
19602
+ slug: string;
19603
+ /** @description Optional free-form description. */
19604
+ description: string | null;
19605
+ /** @description Optional URL of the organization logo. */
19606
+ logo_url: string | null;
19607
+ /** @description Ids of the users who manage the organization: its teams and its identity settings. Being an admin does not grant access to any team; team access is team membership. */
19608
+ admins: string[];
19609
+ /** @description Object is related with this account */
19610
+ account: string;
19611
+ /**
19612
+ * @description OrganizationMetadata
19613
+ * @default {}
19614
+ */
19615
+ metadata: {
19616
+ [key: string]: unknown;
19617
+ };
19618
+ /** @description Organization creation date */
19619
+ createdAt: string;
19620
+ /** @description Organization updated date */
19621
+ updatedAt?: string;
19622
+ };
19623
+ };
19624
+ };
19625
+ /**
19626
+ * @description `invalid_user` — The user does not exist in this account.
19627
+ *
19628
+ * `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
19629
+ */
19630
+ 400: {
19631
+ headers: {
19632
+ [name: string]: unknown;
19633
+ };
19634
+ content: {
19635
+ "application/json": components["schemas"]["ErrorResponse"] & {
19636
+ /** @enum {string} */
19637
+ error_code?: "invalid_user" | "validation_error";
19638
+ };
19639
+ };
19640
+ };
19641
+ /** @description `unauthorized` — The request carries no valid credentials. */
19642
+ 401: {
19643
+ headers: {
19644
+ [name: string]: unknown;
19645
+ };
19646
+ content: {
19647
+ "application/json": components["schemas"]["ErrorResponse"] & {
19648
+ /** @enum {string} */
19649
+ error_code?: "unauthorized";
19650
+ };
19651
+ };
19652
+ };
19653
+ /**
19654
+ * @description `forbidden` — The credentials are valid but do not allow this operation.
19655
+ *
19656
+ * `insufficient_scope` — The token lacks a scope this operation requires. `message` names it.
19657
+ *
19658
+ * `user_suspended` — The user is suspended and cannot sign in or be modified.
19659
+ */
19660
+ 403: {
19661
+ headers: {
19662
+ [name: string]: unknown;
19663
+ };
19664
+ content: {
19665
+ "application/json": components["schemas"]["ErrorResponse"] & {
19666
+ /** @enum {string} */
19667
+ error_code?: "forbidden" | "insufficient_scope" | "user_suspended";
19668
+ };
19669
+ };
19670
+ };
19671
+ /**
19672
+ * @description `organization_not_found` — No organization with that id in this account.
19673
+ *
19674
+ * `account_not_found` — No Auth Account matches the request (domain, header or token).
19675
+ */
19676
+ 404: {
19677
+ headers: {
19678
+ [name: string]: unknown;
19679
+ };
19680
+ content: {
19681
+ "application/json": components["schemas"]["ErrorResponse"] & {
19682
+ /** @enum {string} */
19683
+ error_code?: "organization_not_found" | "account_not_found";
19684
+ };
19685
+ };
19686
+ };
19687
+ /** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
19688
+ 429: {
19689
+ headers: {
19690
+ [name: string]: unknown;
19691
+ };
19692
+ content: {
19693
+ "application/json": components["schemas"]["ErrorResponse"] & {
19694
+ /** @enum {string} */
19695
+ error_code?: "too_many_requests";
19696
+ };
19697
+ };
19698
+ };
19699
+ /** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
19700
+ 500: {
19701
+ headers: {
19702
+ [name: string]: unknown;
19703
+ };
19704
+ content: {
19705
+ "application/json": components["schemas"]["ErrorResponse"] & {
19706
+ /** @enum {string} */
19707
+ error_code?: "internal_error";
19708
+ };
19709
+ };
19710
+ };
19711
+ };
19712
+ };
19713
+ "organization/removeAdmin": {
19714
+ parameters: {
19715
+ query?: never;
19716
+ header?: never;
19717
+ path: {
19718
+ organization_id: string;
19719
+ user_id: string;
19720
+ };
19721
+ cookie?: never;
19722
+ };
19723
+ requestBody?: never;
19724
+ responses: {
19725
+ /** @description Organization */
19726
+ 200: {
19727
+ headers: {
19728
+ [name: string]: unknown;
19729
+ };
19730
+ content: {
19731
+ "application/json": {
19732
+ /** @description Organization ID */
19733
+ id: string;
19734
+ /**
19735
+ * @description Human-readable name of the organization.
19736
+ * @example Acme Inc.
19737
+ */
19738
+ name: string;
19739
+ /**
19740
+ * @description URL-safe identifier derived from `name`. Unique within the tenant.
19741
+ * @example acme-inc
19742
+ */
19743
+ slug: string;
19744
+ /** @description Optional free-form description. */
19745
+ description: string | null;
19746
+ /** @description Optional URL of the organization logo. */
19747
+ logo_url: string | null;
19748
+ /** @description Ids of the users who manage the organization: its teams and its identity settings. Being an admin does not grant access to any team; team access is team membership. */
19749
+ admins: string[];
19750
+ /** @description Object is related with this account */
19751
+ account: string;
19752
+ /**
19753
+ * @description OrganizationMetadata
19754
+ * @default {}
19755
+ */
19756
+ metadata: {
19757
+ [key: string]: unknown;
19758
+ };
19759
+ /** @description Organization creation date */
19760
+ createdAt: string;
19761
+ /** @description Organization updated date */
19762
+ updatedAt?: string;
19763
+ };
19764
+ };
19765
+ };
19766
+ /** @description `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field. */
19767
+ 400: {
19768
+ headers: {
19769
+ [name: string]: unknown;
19770
+ };
19771
+ content: {
19772
+ "application/json": components["schemas"]["ErrorResponse"] & {
19773
+ /** @enum {string} */
19774
+ error_code?: "validation_error";
19775
+ };
19776
+ };
19777
+ };
19778
+ /** @description `unauthorized` — The request carries no valid credentials. */
19779
+ 401: {
19780
+ headers: {
19781
+ [name: string]: unknown;
19782
+ };
19783
+ content: {
19784
+ "application/json": components["schemas"]["ErrorResponse"] & {
19785
+ /** @enum {string} */
19786
+ error_code?: "unauthorized";
19787
+ };
19788
+ };
19789
+ };
19790
+ /**
19791
+ * @description `forbidden` — The credentials are valid but do not allow this operation.
19792
+ *
19793
+ * `insufficient_scope` — The token lacks a scope this operation requires. `message` names it.
19794
+ *
19795
+ * `user_suspended` — The user is suspended and cannot sign in or be modified.
19796
+ */
19797
+ 403: {
19798
+ headers: {
19799
+ [name: string]: unknown;
19800
+ };
19801
+ content: {
19802
+ "application/json": components["schemas"]["ErrorResponse"] & {
19803
+ /** @enum {string} */
19804
+ error_code?: "forbidden" | "insufficient_scope" | "user_suspended";
19805
+ };
19806
+ };
19807
+ };
19808
+ /**
19809
+ * @description `organization_not_found` — No organization with that id in this account.
19810
+ *
19811
+ * `not_an_organization_admin` — The user is not an admin of the organization.
19812
+ *
19813
+ * `account_not_found` — No Auth Account matches the request (domain, header or token).
19814
+ */
19815
+ 404: {
19816
+ headers: {
19817
+ [name: string]: unknown;
19818
+ };
19819
+ content: {
19820
+ "application/json": components["schemas"]["ErrorResponse"] & {
19821
+ /** @enum {string} */
19822
+ error_code?: "organization_not_found" | "not_an_organization_admin" | "account_not_found";
19823
+ };
19824
+ };
19825
+ };
19826
+ /** @description `last_organization_admin` — An organization keeps at least one admin. Add another admin before removing this one. */
19827
+ 409: {
19828
+ headers: {
19829
+ [name: string]: unknown;
19830
+ };
19831
+ content: {
19832
+ "application/json": components["schemas"]["ErrorResponse"] & {
19833
+ /** @enum {string} */
19834
+ error_code?: "last_organization_admin";
19835
+ };
19836
+ };
19837
+ };
19838
+ /** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
19839
+ 429: {
19840
+ headers: {
19841
+ [name: string]: unknown;
19842
+ };
19843
+ content: {
19844
+ "application/json": components["schemas"]["ErrorResponse"] & {
19845
+ /** @enum {string} */
19846
+ error_code?: "too_many_requests";
19847
+ };
19848
+ };
19849
+ };
19850
+ /** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
19851
+ 500: {
19852
+ headers: {
19853
+ [name: string]: unknown;
19854
+ };
19855
+ content: {
19856
+ "application/json": components["schemas"]["ErrorResponse"] & {
19857
+ /** @enum {string} */
19858
+ error_code?: "internal_error";
19859
+ };
19860
+ };
19861
+ };
19862
+ };
19863
+ };
19864
+ "teammember/list": {
19865
+ parameters: {
19866
+ query?: {
19867
+ /** @description Number of items per page (max 200) */
19868
+ pageSize?: number;
19869
+ /** @description Cursor for next page */
19870
+ cursor?: string;
19871
+ /** @description Cursor returned by the previous page */
19872
+ next?: string;
19873
+ /** @description Exact match on `user`. Equivalent to `?query=user:<value>`. */
19874
+ user?: string;
19875
+ /** @description Exact match on `team`. Equivalent to `?query=team:<value>`. */
19876
+ team?: string;
19877
+ /** @description Filter using a FaableQL query */
19878
+ query?: string;
19879
+ /** @description Expand id-only fields in the response. Pass one path per entry (e.g. `?expand=user`). */
19880
+ expand?: ("user" | "team" | "roles")[];
19881
+ };
19882
+ header?: never;
19883
+ path?: never;
19884
+ cookie?: never;
19885
+ };
19886
+ requestBody?: never;
19887
+ responses: {
19888
+ /** @description Default Response */
19889
+ 200: {
19890
+ headers: {
19891
+ [name: string]: unknown;
19892
+ };
19893
+ content: {
19894
+ "application/json": {
19895
+ next: string | null;
19896
+ results: components["schemas"]["TeamMember"][];
19897
+ };
19898
+ };
19899
+ };
19900
+ /**
19901
+ * @description `invalid_query` — The `?query=` FaableQL expression could not be parsed.
19902
+ *
19903
+ * `invalid_expand` — An `?expand=` path is not allowed on this resource.
19904
+ *
19905
+ * `search_not_supported` — This resource does not support `?search=`.
19906
+ *
19907
+ * `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
19908
+ */
19909
+ 400: {
19910
+ headers: {
19911
+ [name: string]: unknown;
19912
+ };
19913
+ content: {
19914
+ "application/json": components["schemas"]["ErrorResponse"] & {
19915
+ /** @enum {string} */
19916
+ error_code?: "invalid_query" | "invalid_expand" | "search_not_supported" | "validation_error";
19917
+ };
19918
+ };
19919
+ };
19920
+ /** @description `unauthorized` — The request carries no valid credentials. */
19921
+ 401: {
19922
+ headers: {
19923
+ [name: string]: unknown;
19924
+ };
19925
+ content: {
19926
+ "application/json": components["schemas"]["ErrorResponse"] & {
19927
+ /** @enum {string} */
19928
+ error_code?: "unauthorized";
19929
+ };
19930
+ };
19931
+ };
19932
+ /**
19933
+ * @description `forbidden` — The credentials are valid but do not allow this operation.
19934
+ *
19935
+ * `insufficient_scope` — The token lacks a scope this operation requires. `message` names it.
19936
+ *
19937
+ * `user_suspended` — The user is suspended and cannot sign in or be modified.
19938
+ */
19939
+ 403: {
19940
+ headers: {
19941
+ [name: string]: unknown;
19942
+ };
19943
+ content: {
19944
+ "application/json": components["schemas"]["ErrorResponse"] & {
19945
+ /** @enum {string} */
19946
+ error_code?: "forbidden" | "insufficient_scope" | "user_suspended";
19947
+ };
19948
+ };
19949
+ };
19950
+ /** @description `account_not_found` — No Auth Account matches the request (domain, header or token). */
19951
+ 404: {
19952
+ headers: {
19953
+ [name: string]: unknown;
19954
+ };
19955
+ content: {
19956
+ "application/json": components["schemas"]["ErrorResponse"] & {
19957
+ /** @enum {string} */
19958
+ error_code?: "account_not_found";
19959
+ };
19960
+ };
19961
+ };
19962
+ /** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
19963
+ 429: {
19964
+ headers: {
19965
+ [name: string]: unknown;
19966
+ };
19967
+ content: {
19968
+ "application/json": components["schemas"]["ErrorResponse"] & {
19969
+ /** @enum {string} */
19970
+ error_code?: "too_many_requests";
19971
+ };
19972
+ };
19973
+ };
19974
+ /** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
19975
+ 500: {
19976
+ headers: {
19977
+ [name: string]: unknown;
19978
+ };
19979
+ content: {
19980
+ "application/json": components["schemas"]["ErrorResponse"] & {
19981
+ /** @enum {string} */
19982
+ error_code?: "internal_error";
19983
+ };
19984
+ };
19985
+ };
19986
+ };
19987
+ };
19988
+ "teammember/get": {
19989
+ parameters: {
19990
+ query?: {
19991
+ /** @description Expand id-only fields in the response. Pass one path per entry (e.g. `?expand=user`). */
19992
+ expand?: ("user" | "team" | "roles")[];
19993
+ };
19994
+ header?: never;
19995
+ path: {
19996
+ teammember_id: string;
19997
+ };
19998
+ cookie?: never;
19999
+ };
20000
+ requestBody?: never;
20001
+ responses: {
20002
+ /** @description TeamMember */
20003
+ 200: {
20004
+ headers: {
20005
+ [name: string]: unknown;
20006
+ };
20007
+ content: {
20008
+ "application/json": {
20009
+ /** @description TeamMember ID */
20010
+ id: string;
20011
+ /** @description User that belongs to the team. Returned as an id by default; pass `?expand=user` to inline the full User object. */
20012
+ user: components["schemas"]["User"] | string | unknown;
20013
+ /** @description Team the user belongs to. Returned as an id by default; pass `?expand=team` to inline the full Team object. */
20014
+ team: components["schemas"]["Team"] | string | unknown;
20015
+ /** @description Roles granted to the user *within this team*. Distinct from account-wide RoleMember grants — these only apply in the scope of the team. Each entry is an id by default; pass `?expand=roles` to inline. */
20016
+ roles: (components["schemas"]["Role"] | string | unknown)[];
20017
+ /** @description Object is related with this account */
20018
+ account: string;
20019
+ /**
20020
+ * @description TeamMemberMetadata
20021
+ * @default {}
20022
+ */
20023
+ metadata: {
20024
+ [key: string]: unknown;
20025
+ };
20026
+ /** @description TeamMember creation date */
20027
+ createdAt: string;
20028
+ /** @description TeamMember updated date */
20029
+ updatedAt?: string;
18615
20030
  };
18616
20031
  };
18617
20032
  };
@@ -24209,8 +25624,11 @@ export interface operations {
24209
25624
  * - `team.invite.created`: An invitation to join a team was created.
24210
25625
  * - `team.invite.revoked`: A pending team invitation was revoked.
24211
25626
  * - `team.invite.accepted`: A team invitation was accepted.
25627
+ * - `organization.created`: An organization was created.
25628
+ * - `organization.updated`: An organization was updated (name, settings or admins).
25629
+ * - `organization.deleted`: An organization was deleted. Its teams are no longer in any organization; no `team.updated` is sent for them.
24212
25630
  *
24213
- * `team.*` payloads are notices, not state: they carry ids (`team_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
25631
+ * `team.*` and `organization.*` payloads are notices, not state: they carry ids (`team_id`, `organization_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
24214
25632
  */
24215
25633
  events: string[];
24216
25634
  /** @enum {string} */
@@ -24284,8 +25702,11 @@ export interface operations {
24284
25702
  * - `team.invite.created`: An invitation to join a team was created.
24285
25703
  * - `team.invite.revoked`: A pending team invitation was revoked.
24286
25704
  * - `team.invite.accepted`: A team invitation was accepted.
25705
+ * - `organization.created`: An organization was created.
25706
+ * - `organization.updated`: An organization was updated (name, settings or admins).
25707
+ * - `organization.deleted`: An organization was deleted. Its teams are no longer in any organization; no `team.updated` is sent for them.
24287
25708
  *
24288
- * `team.*` payloads are notices, not state: they carry ids (`team_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
25709
+ * `team.*` and `organization.*` payloads are notices, not state: they carry ids (`team_id`, `organization_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
24289
25710
  */
24290
25711
  events: string[];
24291
25712
  /** @enum {string} */
@@ -24475,8 +25896,11 @@ export interface operations {
24475
25896
  * - `team.invite.created`: An invitation to join a team was created.
24476
25897
  * - `team.invite.revoked`: A pending team invitation was revoked.
24477
25898
  * - `team.invite.accepted`: A team invitation was accepted.
25899
+ * - `organization.created`: An organization was created.
25900
+ * - `organization.updated`: An organization was updated (name, settings or admins).
25901
+ * - `organization.deleted`: An organization was deleted. Its teams are no longer in any organization; no `team.updated` is sent for them.
24478
25902
  *
24479
- * `team.*` payloads are notices, not state: they carry ids (`team_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
25903
+ * `team.*` and `organization.*` payloads are notices, not state: they carry ids (`team_id`, `organization_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
24480
25904
  */
24481
25905
  events: string[];
24482
25906
  /** @enum {string} */
@@ -24654,8 +26078,11 @@ export interface operations {
24654
26078
  * - `team.invite.created`: An invitation to join a team was created.
24655
26079
  * - `team.invite.revoked`: A pending team invitation was revoked.
24656
26080
  * - `team.invite.accepted`: A team invitation was accepted.
26081
+ * - `organization.created`: An organization was created.
26082
+ * - `organization.updated`: An organization was updated (name, settings or admins).
26083
+ * - `organization.deleted`: An organization was deleted. Its teams are no longer in any organization; no `team.updated` is sent for them.
24657
26084
  *
24658
- * `team.*` payloads are notices, not state: they carry ids (`team_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
26085
+ * `team.*` and `organization.*` payloads are notices, not state: they carry ids (`team_id`, `organization_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
24659
26086
  */
24660
26087
  events?: string[];
24661
26088
  /** @enum {string} */
@@ -24729,8 +26156,11 @@ export interface operations {
24729
26156
  * - `team.invite.created`: An invitation to join a team was created.
24730
26157
  * - `team.invite.revoked`: A pending team invitation was revoked.
24731
26158
  * - `team.invite.accepted`: A team invitation was accepted.
26159
+ * - `organization.created`: An organization was created.
26160
+ * - `organization.updated`: An organization was updated (name, settings or admins).
26161
+ * - `organization.deleted`: An organization was deleted. Its teams are no longer in any organization; no `team.updated` is sent for them.
24732
26162
  *
24733
- * `team.*` payloads are notices, not state: they carry ids (`team_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
26163
+ * `team.*` and `organization.*` payloads are notices, not state: they carry ids (`team_id`, `organization_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
24734
26164
  */
24735
26165
  events: string[];
24736
26166
  /** @enum {string} */
@@ -24926,8 +26356,11 @@ export interface operations {
24926
26356
  * - `team.invite.created`: An invitation to join a team was created.
24927
26357
  * - `team.invite.revoked`: A pending team invitation was revoked.
24928
26358
  * - `team.invite.accepted`: A team invitation was accepted.
26359
+ * - `organization.created`: An organization was created.
26360
+ * - `organization.updated`: An organization was updated (name, settings or admins).
26361
+ * - `organization.deleted`: An organization was deleted. Its teams are no longer in any organization; no `team.updated` is sent for them.
24929
26362
  *
24930
- * `team.*` payloads are notices, not state: they carry ids (`team_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
26363
+ * `team.*` and `organization.*` payloads are notices, not state: they carry ids (`team_id`, `organization_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
24931
26364
  */
24932
26365
  events: string[];
24933
26366
  /** @enum {string} */
@@ -28656,6 +30089,8 @@ export interface operations {
28656
30089
  audience?: string;
28657
30090
  /** @description RFC 8707 Resource Indicator. Absolute URI of the target Api, no fragment. Matched against `Api.identifier` in the tenant. */
28658
30091
  resource?: string;
30092
+ /** @description client_credentials only. An access token previously returned by this endpoint that a resource server rejected with 401. If it is the cached token for this client, the cache entry is dropped and a new token is issued; otherwise it has no effect. */
30093
+ invalidate_token?: string;
28659
30094
  };
28660
30095
  header?: never;
28661
30096
  path?: never;
@@ -28757,6 +30192,8 @@ export interface operations {
28757
30192
  audience?: string;
28758
30193
  /** @description RFC 8707 Resource Indicator. Absolute URI of the target Api, no fragment. Matched against `Api.identifier` in the tenant. */
28759
30194
  resource?: string;
30195
+ /** @description client_credentials only. An access token previously returned by this endpoint that a resource server rejected with 401. If it is the cached token for this client, the cache entry is dropped and a new token is issued; otherwise it has no effect. */
30196
+ invalidate_token?: string;
28760
30197
  };
28761
30198
  header?: never;
28762
30199
  path?: never;
@@ -28790,6 +30227,8 @@ export interface operations {
28790
30227
  audience?: string;
28791
30228
  /** @description RFC 8707 Resource Indicator. Absolute URI of the target Api, no fragment. Matched against `Api.identifier` in the tenant. */
28792
30229
  resource?: string;
30230
+ /** @description client_credentials only. An access token previously returned by this endpoint that a resource server rejected with 401. If it is the cached token for this client, the cache entry is dropped and a new token is issued; otherwise it has no effect. */
30231
+ invalidate_token?: string;
28793
30232
  } & {
28794
30233
  [key: string]: unknown;
28795
30234
  };
@@ -29840,6 +31279,18 @@ export interface operations {
29840
31279
  };
29841
31280
  };
29842
31281
  };
31282
+ /** @description `registration_disabled` — 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`. */
31283
+ 403: {
31284
+ headers: {
31285
+ [name: string]: unknown;
31286
+ };
31287
+ content: {
31288
+ "application/json": components["schemas"]["ErrorResponse"] & {
31289
+ /** @enum {string} */
31290
+ error_code?: "registration_disabled";
31291
+ };
31292
+ };
31293
+ };
29843
31294
  /** @description `account_not_found` — No Auth Account matches the request (domain, header or token). */
29844
31295
  404: {
29845
31296
  headers: {