@faable/auth-sdk 2.7.82 → 2.7.84

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.
@@ -1308,6 +1308,86 @@ export interface paths {
1308
1308
  patch?: never;
1309
1309
  trace?: never;
1310
1310
  };
1311
+ "/organization/{organization_id}/domain": {
1312
+ parameters: {
1313
+ query?: never;
1314
+ header?: never;
1315
+ path?: never;
1316
+ cookie?: never;
1317
+ };
1318
+ get?: never;
1319
+ put?: never;
1320
+ /**
1321
+ * Claim an email domain for an Organization
1322
+ * @description Adds the domain unverified, with the `verification_token` its TXT record must hold. Idempotent. Nothing changes for anyone until the domain is verified.
1323
+ */
1324
+ post: operations["organization/addDomain"];
1325
+ delete?: never;
1326
+ options?: never;
1327
+ head?: never;
1328
+ patch?: never;
1329
+ trace?: never;
1330
+ };
1331
+ "/organization/{organization_id}/domain/{domain}/verify": {
1332
+ parameters: {
1333
+ query?: never;
1334
+ header?: never;
1335
+ path?: never;
1336
+ cookie?: never;
1337
+ };
1338
+ get?: never;
1339
+ put?: never;
1340
+ /**
1341
+ * Verify an Organization's email domain
1342
+ * @description Looks up the TXT record `_faable-challenge.<domain>` and, when it holds `faable-verification=<verification_token>`, marks the domain verified. Pro plan (`plan_required`; `plan_unavailable` when the plan cannot be checked). A domain is verified by one organization of the tenant at most (`organization_domain_taken`).
1343
+ */
1344
+ post: operations["organization/verifyDomain"];
1345
+ delete?: never;
1346
+ options?: never;
1347
+ head?: never;
1348
+ patch?: never;
1349
+ trace?: never;
1350
+ };
1351
+ "/organization/{organization_id}/domain/{domain}": {
1352
+ parameters: {
1353
+ query?: never;
1354
+ header?: never;
1355
+ path?: never;
1356
+ cookie?: never;
1357
+ };
1358
+ get?: never;
1359
+ put?: never;
1360
+ post?: never;
1361
+ /**
1362
+ * Remove an email domain from an Organization
1363
+ * @description Removes the domain, verified or not. Logins of people already in the organization are unaffected.
1364
+ */
1365
+ delete: operations["organization/removeDomain"];
1366
+ options?: never;
1367
+ head?: never;
1368
+ patch?: never;
1369
+ trace?: never;
1370
+ };
1371
+ "/organization/{organization_id}/auto-join": {
1372
+ parameters: {
1373
+ query?: never;
1374
+ header?: never;
1375
+ path?: never;
1376
+ cookie?: never;
1377
+ };
1378
+ get?: never;
1379
+ /**
1380
+ * Set an Organization's auto-join rules
1381
+ * @description Replaces the auto-join rules: whoever signs in with a verified email of one of the verified domains joins these teams (of this organization) with these roles. Nobody already a member is changed. Pro plan to turn it on; an empty list turns it off and is always allowed.
1382
+ */
1383
+ put: operations["organization/setAutoJoin"];
1384
+ post?: never;
1385
+ delete?: never;
1386
+ options?: never;
1387
+ head?: never;
1388
+ patch?: never;
1389
+ trace?: never;
1390
+ };
1311
1391
  "/teammember": {
1312
1392
  parameters: {
1313
1393
  query?: never;
@@ -4886,6 +4966,8 @@ export interface components {
4886
4966
  /** @default null */
4887
4967
  response_type: string;
4888
4968
  enabled: boolean;
4969
+ /** @description The Organization whose identity provider this is (`organization_…`), or `null`. Only `oidc` connections. Reached by home realm discovery from the organization's verified email domains, and only accepts emails of those domains. Pro plan. */
4970
+ organization?: string | null;
4889
4971
  /** @default null */
4890
4972
  enabled_clients: string[] | null;
4891
4973
  /** @default [] */
@@ -4948,6 +5030,10 @@ export interface components {
4948
5030
  client_secret?: string;
4949
5031
  issuer?: string;
4950
5032
  jwks_url?: string;
5033
+ token_url?: string;
5034
+ userinfo_url?: string;
5035
+ /** @description The Organization whose identity provider this is (`organization_…`), or `null`. Only `oidc` connections. Reached by home realm discovery from the organization's verified email domains, and only accepts emails of those domains. Pro plan. */
5036
+ organization?: string;
4951
5037
  scope?: string[];
4952
5038
  enabled?: boolean;
4953
5039
  claims_mapping?: {
@@ -5024,6 +5110,7 @@ export interface components {
5024
5110
  disable_signup?: boolean;
5025
5111
  /** @description What users of this database connection sign in with: `email`, `username`, or `email_or_username` (email first, then username). The login looks up only the matching field, and the hosted login screen asks for it — validating the address format under `email`. New database connections default to `email`; a connection created before this setting existed behaves as `email_or_username`. Only meaningful on `database` connections. */
5026
5112
  login_identifier?: "email" | "username" | "email_or_username";
5113
+ organization?: string | null;
5027
5114
  };
5028
5115
  /** @description Presentation metadata for one connection type. Contains no endpoint URLs and no credentials. */
5029
5116
  ConnectionTypeInfo: {
@@ -5791,6 +5878,25 @@ export interface components {
5791
5878
  description: string | null;
5792
5879
  /** @description Optional URL of the organization logo. */
5793
5880
  logo_url: string | null;
5881
+ /** @description Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized. */
5882
+ domains: {
5883
+ /** @example acme.com */
5884
+ domain: string;
5885
+ /** @description Put `faable-verification=<verification_token>` in a TXT record at `_faable-challenge.<domain>`, then call `POST /organization/{organization_id}/domain/{domain}/verify`. */
5886
+ verification_token: string;
5887
+ /**
5888
+ * Format: date-time
5889
+ * @description When the TXT record was found. `null` = not verified.
5890
+ */
5891
+ verified_at: string | null;
5892
+ }[];
5893
+ /** @description Whoever signs in with a verified email of one of the verified domains joins these teams. Empty = nobody joins by domain. */
5894
+ auto_join: {
5895
+ /** @description A team of this organization. */
5896
+ team: string;
5897
+ /** @description Role ids the member gets in that team. */
5898
+ roles: string[];
5899
+ }[];
5794
5900
  /** @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
5901
  admins: string[];
5796
5902
  /** @description Object is related with this account */
@@ -7256,6 +7362,14 @@ export interface components {
7256
7362
  * - `already_member` (400): The user is already a member of the team.
7257
7363
  * - `not_a_member` (404): The user is not a member of the team.
7258
7364
  * - `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`.
7365
+ * - `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.
7366
+ * - `public_email_domain` (400): A public email provider (gmail.com, outlook.com…) cannot belong to an organization: anyone can have an address there.
7367
+ * - `organization_domain_not_found` (404): The organization has no such domain.
7368
+ * - `organization_domain_taken` (409): Another organization of this tenant already verified this domain. A domain belongs to one organization.
7369
+ * - `organization_domain_unverified` (400): The TXT record was not found or does not hold the expected value yet. `details.record` says what was expected and what resolves now; DNS can take a few minutes to propagate.
7370
+ * - `plan_unavailable` (503): The plan could not be checked right now, and this setting is only for paid plans. Try again in a minute.
7371
+ * - `organization_domain_mismatch` (403): This organization's identity provider can only sign in addresses of the organization's verified email domains.
7372
+ * - `team_not_in_organization` (400): Auto-join can only put people in teams of the same organization. `details.teams` lists the others.
7259
7373
  * - `organization_not_found` (404): No organization with that id in this account.
7260
7374
  * - `invalid_user` (400): The user does not exist in this account.
7261
7375
  * - `not_an_organization_admin` (404): The user is not an admin of the organization.
@@ -7273,7 +7387,7 @@ export interface components {
7273
7387
  * - `delivery_in_progress` (409): The delivery is being attempted right now; retry the redeliver in a minute.
7274
7388
  * @enum {string}
7275
7389
  */
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";
7390
+ 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_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";
7277
7391
  /** @description Every error response has this shape. Branch on `error_code`, never on `message`: the message is written for a person and may change. */
7278
7392
  ErrorResponse: {
7279
7393
  /** @description The HTTP status, repeated. */
@@ -9860,6 +9974,10 @@ export interface operations {
9860
9974
  client_secret?: string;
9861
9975
  issuer?: string;
9862
9976
  jwks_url?: string;
9977
+ token_url?: string;
9978
+ userinfo_url?: string;
9979
+ /** @description The Organization whose identity provider this is (`organization_…`), or `null`. Only `oidc` connections. Reached by home realm discovery from the organization's verified email domains, and only accepts emails of those domains. Pro plan. */
9980
+ organization?: string;
9863
9981
  scope?: string[];
9864
9982
  enabled?: boolean;
9865
9983
  claims_mapping?: {
@@ -9928,6 +10046,8 @@ export interface operations {
9928
10046
  /** @default null */
9929
10047
  response_type: string;
9930
10048
  enabled: boolean;
10049
+ /** @description The Organization whose identity provider this is (`organization_…`), or `null`. Only `oidc` connections. Reached by home realm discovery from the organization's verified email domains, and only accepts emails of those domains. Pro plan. */
10050
+ organization?: string | null;
9931
10051
  /** @default null */
9932
10052
  enabled_clients: string[] | null;
9933
10053
  /** @default [] */
@@ -10099,6 +10219,8 @@ export interface operations {
10099
10219
  /** @default null */
10100
10220
  response_type: string;
10101
10221
  enabled: boolean;
10222
+ /** @description The Organization whose identity provider this is (`organization_…`), or `null`. Only `oidc` connections. Reached by home realm discovery from the organization's verified email domains, and only accepts emails of those domains. Pro plan. */
10223
+ organization?: string | null;
10102
10224
  /** @default null */
10103
10225
  enabled_clients: string[] | null;
10104
10226
  /** @default [] */
@@ -10283,6 +10405,7 @@ export interface operations {
10283
10405
  disable_signup?: boolean;
10284
10406
  /** @description What users of this database connection sign in with: `email`, `username`, or `email_or_username` (email first, then username). The login looks up only the matching field, and the hosted login screen asks for it — validating the address format under `email`. New database connections default to `email`; a connection created before this setting existed behaves as `email_or_username`. Only meaningful on `database` connections. */
10285
10407
  login_identifier?: "email" | "username" | "email_or_username";
10408
+ organization?: string | null;
10286
10409
  };
10287
10410
  };
10288
10411
  };
@@ -10316,6 +10439,8 @@ export interface operations {
10316
10439
  /** @default null */
10317
10440
  response_type: string;
10318
10441
  enabled: boolean;
10442
+ /** @description The Organization whose identity provider this is (`organization_…`), or `null`. Only `oidc` connections. Reached by home realm discovery from the organization's verified email domains, and only accepts emails of those domains. Pro plan. */
10443
+ organization?: string | null;
10319
10444
  /** @default null */
10320
10445
  enabled_clients: string[] | null;
10321
10446
  /** @default [] */
@@ -10493,6 +10618,8 @@ export interface operations {
10493
10618
  /** @default null */
10494
10619
  response_type: string;
10495
10620
  enabled: boolean;
10621
+ /** @description The Organization whose identity provider this is (`organization_…`), or `null`. Only `oidc` connections. Reached by home realm discovery from the organization's verified email domains, and only accepts emails of those domains. Pro plan. */
10622
+ organization?: string | null;
10496
10623
  /** @default null */
10497
10624
  enabled_clients: string[] | null;
10498
10625
  /** @default [] */
@@ -10814,6 +10941,15 @@ export interface operations {
10814
10941
  content: {
10815
10942
  "application/json": {
10816
10943
  ok: boolean;
10944
+ /** @description The identifier is an email of an organization's verified domain, and that organization has its own identity provider: continue with `/authorize?resume_state=<state>&connection=<connection_id>` instead of the method chooser (arch/auth/sso.md F3). */
10945
+ home_realm?: {
10946
+ connection_id: string;
10947
+ organization: {
10948
+ id: string;
10949
+ name: string;
10950
+ logo_url: string | null;
10951
+ };
10952
+ };
10817
10953
  };
10818
10954
  };
10819
10955
  };
@@ -19015,6 +19151,25 @@ export interface operations {
19015
19151
  description: string | null;
19016
19152
  /** @description Optional URL of the organization logo. */
19017
19153
  logo_url: string | null;
19154
+ /** @description Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized. */
19155
+ domains: {
19156
+ /** @example acme.com */
19157
+ domain: string;
19158
+ /** @description Put `faable-verification=<verification_token>` in a TXT record at `_faable-challenge.<domain>`, then call `POST /organization/{organization_id}/domain/{domain}/verify`. */
19159
+ verification_token: string;
19160
+ /**
19161
+ * Format: date-time
19162
+ * @description When the TXT record was found. `null` = not verified.
19163
+ */
19164
+ verified_at: string | null;
19165
+ }[];
19166
+ /** @description Whoever signs in with a verified email of one of the verified domains joins these teams. Empty = nobody joins by domain. */
19167
+ auto_join: {
19168
+ /** @description A team of this organization. */
19169
+ team: string;
19170
+ /** @description Role ids the member gets in that team. */
19171
+ roles: string[];
19172
+ }[];
19018
19173
  /** @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
19174
  admins: string[];
19020
19175
  /** @description Object is related with this account */
@@ -19151,6 +19306,25 @@ export interface operations {
19151
19306
  description: string | null;
19152
19307
  /** @description Optional URL of the organization logo. */
19153
19308
  logo_url: string | null;
19309
+ /** @description Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized. */
19310
+ domains: {
19311
+ /** @example acme.com */
19312
+ domain: string;
19313
+ /** @description Put `faable-verification=<verification_token>` in a TXT record at `_faable-challenge.<domain>`, then call `POST /organization/{organization_id}/domain/{domain}/verify`. */
19314
+ verification_token: string;
19315
+ /**
19316
+ * Format: date-time
19317
+ * @description When the TXT record was found. `null` = not verified.
19318
+ */
19319
+ verified_at: string | null;
19320
+ }[];
19321
+ /** @description Whoever signs in with a verified email of one of the verified domains joins these teams. Empty = nobody joins by domain. */
19322
+ auto_join: {
19323
+ /** @description A team of this organization. */
19324
+ team: string;
19325
+ /** @description Role ids the member gets in that team. */
19326
+ roles: string[];
19327
+ }[];
19154
19328
  /** @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
19329
  admins: string[];
19156
19330
  /** @description Object is related with this account */
@@ -19312,6 +19486,25 @@ export interface operations {
19312
19486
  description: string | null;
19313
19487
  /** @description Optional URL of the organization logo. */
19314
19488
  logo_url: string | null;
19489
+ /** @description Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized. */
19490
+ domains: {
19491
+ /** @example acme.com */
19492
+ domain: string;
19493
+ /** @description Put `faable-verification=<verification_token>` in a TXT record at `_faable-challenge.<domain>`, then call `POST /organization/{organization_id}/domain/{domain}/verify`. */
19494
+ verification_token: string;
19495
+ /**
19496
+ * Format: date-time
19497
+ * @description When the TXT record was found. `null` = not verified.
19498
+ */
19499
+ verified_at: string | null;
19500
+ }[];
19501
+ /** @description Whoever signs in with a verified email of one of the verified domains joins these teams. Empty = nobody joins by domain. */
19502
+ auto_join: {
19503
+ /** @description A team of this organization. */
19504
+ team: string;
19505
+ /** @description Role ids the member gets in that team. */
19506
+ roles: string[];
19507
+ }[];
19315
19508
  /** @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
19509
  admins: string[];
19317
19510
  /** @description Object is related with this account */
@@ -19454,6 +19647,25 @@ export interface operations {
19454
19647
  description: string | null;
19455
19648
  /** @description Optional URL of the organization logo. */
19456
19649
  logo_url: string | null;
19650
+ /** @description Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized. */
19651
+ domains: {
19652
+ /** @example acme.com */
19653
+ domain: string;
19654
+ /** @description Put `faable-verification=<verification_token>` in a TXT record at `_faable-challenge.<domain>`, then call `POST /organization/{organization_id}/domain/{domain}/verify`. */
19655
+ verification_token: string;
19656
+ /**
19657
+ * Format: date-time
19658
+ * @description When the TXT record was found. `null` = not verified.
19659
+ */
19660
+ verified_at: string | null;
19661
+ }[];
19662
+ /** @description Whoever signs in with a verified email of one of the verified domains joins these teams. Empty = nobody joins by domain. */
19663
+ auto_join: {
19664
+ /** @description A team of this organization. */
19665
+ team: string;
19666
+ /** @description Role ids the member gets in that team. */
19667
+ roles: string[];
19668
+ }[];
19457
19669
  /** @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
19670
  admins: string[];
19459
19671
  /** @description Object is related with this account */
@@ -19604,6 +19816,25 @@ export interface operations {
19604
19816
  description: string | null;
19605
19817
  /** @description Optional URL of the organization logo. */
19606
19818
  logo_url: string | null;
19819
+ /** @description Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized. */
19820
+ domains: {
19821
+ /** @example acme.com */
19822
+ domain: string;
19823
+ /** @description Put `faable-verification=<verification_token>` in a TXT record at `_faable-challenge.<domain>`, then call `POST /organization/{organization_id}/domain/{domain}/verify`. */
19824
+ verification_token: string;
19825
+ /**
19826
+ * Format: date-time
19827
+ * @description When the TXT record was found. `null` = not verified.
19828
+ */
19829
+ verified_at: string | null;
19830
+ }[];
19831
+ /** @description Whoever signs in with a verified email of one of the verified domains joins these teams. Empty = nobody joins by domain. */
19832
+ auto_join: {
19833
+ /** @description A team of this organization. */
19834
+ team: string;
19835
+ /** @description Role ids the member gets in that team. */
19836
+ roles: string[];
19837
+ }[];
19607
19838
  /** @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
19839
  admins: string[];
19609
19840
  /** @description Object is related with this account */
@@ -19745,6 +19976,25 @@ export interface operations {
19745
19976
  description: string | null;
19746
19977
  /** @description Optional URL of the organization logo. */
19747
19978
  logo_url: string | null;
19979
+ /** @description Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized. */
19980
+ domains: {
19981
+ /** @example acme.com */
19982
+ domain: string;
19983
+ /** @description Put `faable-verification=<verification_token>` in a TXT record at `_faable-challenge.<domain>`, then call `POST /organization/{organization_id}/domain/{domain}/verify`. */
19984
+ verification_token: string;
19985
+ /**
19986
+ * Format: date-time
19987
+ * @description When the TXT record was found. `null` = not verified.
19988
+ */
19989
+ verified_at: string | null;
19990
+ }[];
19991
+ /** @description Whoever signs in with a verified email of one of the verified domains joins these teams. Empty = nobody joins by domain. */
19992
+ auto_join: {
19993
+ /** @description A team of this organization. */
19994
+ team: string;
19995
+ /** @description Role ids the member gets in that team. */
19996
+ roles: string[];
19997
+ }[];
19748
19998
  /** @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
19999
  admins: string[];
19750
20000
  /** @description Object is related with this account */
@@ -19861,6 +20111,747 @@ export interface operations {
19861
20111
  };
19862
20112
  };
19863
20113
  };
20114
+ "organization/addDomain": {
20115
+ parameters: {
20116
+ query?: never;
20117
+ header?: never;
20118
+ path: {
20119
+ organization_id: string;
20120
+ };
20121
+ cookie?: never;
20122
+ };
20123
+ requestBody: {
20124
+ content: {
20125
+ "application/json": {
20126
+ /**
20127
+ * @description The email domain, as in `alice@<domain>`.
20128
+ * @example acme.com
20129
+ */
20130
+ domain: string;
20131
+ };
20132
+ };
20133
+ };
20134
+ responses: {
20135
+ /** @description Organization */
20136
+ 200: {
20137
+ headers: {
20138
+ [name: string]: unknown;
20139
+ };
20140
+ content: {
20141
+ "application/json": {
20142
+ /** @description Organization ID */
20143
+ id: string;
20144
+ /**
20145
+ * @description Human-readable name of the organization.
20146
+ * @example Acme Inc.
20147
+ */
20148
+ name: string;
20149
+ /**
20150
+ * @description URL-safe identifier derived from `name`. Unique within the tenant.
20151
+ * @example acme-inc
20152
+ */
20153
+ slug: string;
20154
+ /** @description Optional free-form description. */
20155
+ description: string | null;
20156
+ /** @description Optional URL of the organization logo. */
20157
+ logo_url: string | null;
20158
+ /** @description Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized. */
20159
+ domains: {
20160
+ /** @example acme.com */
20161
+ domain: string;
20162
+ /** @description Put `faable-verification=<verification_token>` in a TXT record at `_faable-challenge.<domain>`, then call `POST /organization/{organization_id}/domain/{domain}/verify`. */
20163
+ verification_token: string;
20164
+ /**
20165
+ * Format: date-time
20166
+ * @description When the TXT record was found. `null` = not verified.
20167
+ */
20168
+ verified_at: string | null;
20169
+ }[];
20170
+ /** @description Whoever signs in with a verified email of one of the verified domains joins these teams. Empty = nobody joins by domain. */
20171
+ auto_join: {
20172
+ /** @description A team of this organization. */
20173
+ team: string;
20174
+ /** @description Role ids the member gets in that team. */
20175
+ roles: string[];
20176
+ }[];
20177
+ /** @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. */
20178
+ admins: string[];
20179
+ /** @description Object is related with this account */
20180
+ account: string;
20181
+ /**
20182
+ * @description OrganizationMetadata
20183
+ * @default {}
20184
+ */
20185
+ metadata: {
20186
+ [key: string]: unknown;
20187
+ };
20188
+ /** @description Organization creation date */
20189
+ createdAt: string;
20190
+ /** @description Organization updated date */
20191
+ updatedAt?: string;
20192
+ };
20193
+ };
20194
+ };
20195
+ /**
20196
+ * @description `invalid_email_domain` — Not an email domain this organization can claim: it must be a plain domain name (`acme.com`), lowercase, without scheme, path or wildcard.
20197
+ *
20198
+ * `public_email_domain` — A public email provider (gmail.com, outlook.com…) cannot belong to an organization: anyone can have an address there.
20199
+ *
20200
+ * `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
20201
+ */
20202
+ 400: {
20203
+ headers: {
20204
+ [name: string]: unknown;
20205
+ };
20206
+ content: {
20207
+ "application/json": components["schemas"]["ErrorResponse"] & {
20208
+ /** @enum {string} */
20209
+ error_code?: "invalid_email_domain" | "public_email_domain" | "validation_error";
20210
+ };
20211
+ };
20212
+ };
20213
+ /** @description `unauthorized` — The request carries no valid credentials. */
20214
+ 401: {
20215
+ headers: {
20216
+ [name: string]: unknown;
20217
+ };
20218
+ content: {
20219
+ "application/json": components["schemas"]["ErrorResponse"] & {
20220
+ /** @enum {string} */
20221
+ error_code?: "unauthorized";
20222
+ };
20223
+ };
20224
+ };
20225
+ /**
20226
+ * @description `forbidden` — The credentials are valid but do not allow this operation.
20227
+ *
20228
+ * `insufficient_scope` — The token lacks a scope this operation requires. `message` names it.
20229
+ *
20230
+ * `user_suspended` — The user is suspended and cannot sign in or be modified.
20231
+ */
20232
+ 403: {
20233
+ headers: {
20234
+ [name: string]: unknown;
20235
+ };
20236
+ content: {
20237
+ "application/json": components["schemas"]["ErrorResponse"] & {
20238
+ /** @enum {string} */
20239
+ error_code?: "forbidden" | "insufficient_scope" | "user_suspended";
20240
+ };
20241
+ };
20242
+ };
20243
+ /**
20244
+ * @description `organization_not_found` — No organization with that id in this account.
20245
+ *
20246
+ * `account_not_found` — No Auth Account matches the request (domain, header or token).
20247
+ */
20248
+ 404: {
20249
+ headers: {
20250
+ [name: string]: unknown;
20251
+ };
20252
+ content: {
20253
+ "application/json": components["schemas"]["ErrorResponse"] & {
20254
+ /** @enum {string} */
20255
+ error_code?: "organization_not_found" | "account_not_found";
20256
+ };
20257
+ };
20258
+ };
20259
+ /** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
20260
+ 429: {
20261
+ headers: {
20262
+ [name: string]: unknown;
20263
+ };
20264
+ content: {
20265
+ "application/json": components["schemas"]["ErrorResponse"] & {
20266
+ /** @enum {string} */
20267
+ error_code?: "too_many_requests";
20268
+ };
20269
+ };
20270
+ };
20271
+ /** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
20272
+ 500: {
20273
+ headers: {
20274
+ [name: string]: unknown;
20275
+ };
20276
+ content: {
20277
+ "application/json": components["schemas"]["ErrorResponse"] & {
20278
+ /** @enum {string} */
20279
+ error_code?: "internal_error";
20280
+ };
20281
+ };
20282
+ };
20283
+ };
20284
+ };
20285
+ "organization/verifyDomain": {
20286
+ parameters: {
20287
+ query?: never;
20288
+ header?: never;
20289
+ path: {
20290
+ organization_id: string;
20291
+ domain: string;
20292
+ };
20293
+ cookie?: never;
20294
+ };
20295
+ requestBody?: never;
20296
+ responses: {
20297
+ /** @description Default Response */
20298
+ 200: {
20299
+ headers: {
20300
+ [name: string]: unknown;
20301
+ };
20302
+ content: {
20303
+ "application/json": {
20304
+ /** @description Organization */
20305
+ organization: {
20306
+ /** @description Organization ID */
20307
+ id: string;
20308
+ /**
20309
+ * @description Human-readable name of the organization.
20310
+ * @example Acme Inc.
20311
+ */
20312
+ name: string;
20313
+ /**
20314
+ * @description URL-safe identifier derived from `name`. Unique within the tenant.
20315
+ * @example acme-inc
20316
+ */
20317
+ slug: string;
20318
+ /** @description Optional free-form description. */
20319
+ description: string | null;
20320
+ /** @description Optional URL of the organization logo. */
20321
+ logo_url: string | null;
20322
+ /** @description Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized. */
20323
+ domains: {
20324
+ /** @example acme.com */
20325
+ domain: string;
20326
+ /** @description Put `faable-verification=<verification_token>` in a TXT record at `_faable-challenge.<domain>`, then call `POST /organization/{organization_id}/domain/{domain}/verify`. */
20327
+ verification_token: string;
20328
+ /**
20329
+ * Format: date-time
20330
+ * @description When the TXT record was found. `null` = not verified.
20331
+ */
20332
+ verified_at: string | null;
20333
+ }[];
20334
+ /** @description Whoever signs in with a verified email of one of the verified domains joins these teams. Empty = nobody joins by domain. */
20335
+ auto_join: {
20336
+ /** @description A team of this organization. */
20337
+ team: string;
20338
+ /** @description Role ids the member gets in that team. */
20339
+ roles: string[];
20340
+ }[];
20341
+ /** @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. */
20342
+ admins: string[];
20343
+ /** @description Object is related with this account */
20344
+ account: string;
20345
+ /**
20346
+ * @description OrganizationMetadata
20347
+ * @default {}
20348
+ */
20349
+ metadata: {
20350
+ [key: string]: unknown;
20351
+ };
20352
+ /** @description Organization creation date */
20353
+ createdAt: string;
20354
+ /** @description Organization updated date */
20355
+ updatedAt?: string;
20356
+ };
20357
+ /** @description `null` when the domain was already verified. */
20358
+ record: {
20359
+ /** @enum {string} */
20360
+ type: "TXT";
20361
+ host: string;
20362
+ expected: string;
20363
+ observed: string[];
20364
+ ok: boolean;
20365
+ } | null;
20366
+ };
20367
+ };
20368
+ };
20369
+ /**
20370
+ * @description `organization_domain_unverified` — The TXT record was not found or does not hold the expected value yet. `details.record` says what was expected and what resolves now; DNS can take a few minutes to propagate.
20371
+ *
20372
+ * `invalid_email_domain` — Not an email domain this organization can claim: it must be a plain domain name (`acme.com`), lowercase, without scheme, path or wildcard.
20373
+ *
20374
+ * `public_email_domain` — A public email provider (gmail.com, outlook.com…) cannot belong to an organization: anyone can have an address there.
20375
+ *
20376
+ * `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
20377
+ */
20378
+ 400: {
20379
+ headers: {
20380
+ [name: string]: unknown;
20381
+ };
20382
+ content: {
20383
+ "application/json": components["schemas"]["ErrorResponse"] & {
20384
+ /** @enum {string} */
20385
+ error_code?: "organization_domain_unverified" | "invalid_email_domain" | "public_email_domain" | "validation_error";
20386
+ };
20387
+ };
20388
+ };
20389
+ /** @description `unauthorized` — The request carries no valid credentials. */
20390
+ 401: {
20391
+ headers: {
20392
+ [name: string]: unknown;
20393
+ };
20394
+ content: {
20395
+ "application/json": components["schemas"]["ErrorResponse"] & {
20396
+ /** @enum {string} */
20397
+ error_code?: "unauthorized";
20398
+ };
20399
+ };
20400
+ };
20401
+ /** @description `plan_required` — The setting requires a higher plan. `message` says which. */
20402
+ 402: {
20403
+ headers: {
20404
+ [name: string]: unknown;
20405
+ };
20406
+ content: {
20407
+ "application/json": components["schemas"]["ErrorResponse"] & {
20408
+ /** @enum {string} */
20409
+ error_code?: "plan_required";
20410
+ };
20411
+ };
20412
+ };
20413
+ /**
20414
+ * @description `forbidden` — The credentials are valid but do not allow this operation.
20415
+ *
20416
+ * `insufficient_scope` — The token lacks a scope this operation requires. `message` names it.
20417
+ *
20418
+ * `user_suspended` — The user is suspended and cannot sign in or be modified.
20419
+ */
20420
+ 403: {
20421
+ headers: {
20422
+ [name: string]: unknown;
20423
+ };
20424
+ content: {
20425
+ "application/json": components["schemas"]["ErrorResponse"] & {
20426
+ /** @enum {string} */
20427
+ error_code?: "forbidden" | "insufficient_scope" | "user_suspended";
20428
+ };
20429
+ };
20430
+ };
20431
+ /**
20432
+ * @description `organization_not_found` — No organization with that id in this account.
20433
+ *
20434
+ * `organization_domain_not_found` — The organization has no such domain.
20435
+ *
20436
+ * `account_not_found` — No Auth Account matches the request (domain, header or token).
20437
+ */
20438
+ 404: {
20439
+ headers: {
20440
+ [name: string]: unknown;
20441
+ };
20442
+ content: {
20443
+ "application/json": components["schemas"]["ErrorResponse"] & {
20444
+ /** @enum {string} */
20445
+ error_code?: "organization_not_found" | "organization_domain_not_found" | "account_not_found";
20446
+ };
20447
+ };
20448
+ };
20449
+ /** @description `organization_domain_taken` — Another organization of this tenant already verified this domain. A domain belongs to one organization. */
20450
+ 409: {
20451
+ headers: {
20452
+ [name: string]: unknown;
20453
+ };
20454
+ content: {
20455
+ "application/json": components["schemas"]["ErrorResponse"] & {
20456
+ /** @enum {string} */
20457
+ error_code?: "organization_domain_taken";
20458
+ };
20459
+ };
20460
+ };
20461
+ /** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
20462
+ 429: {
20463
+ headers: {
20464
+ [name: string]: unknown;
20465
+ };
20466
+ content: {
20467
+ "application/json": components["schemas"]["ErrorResponse"] & {
20468
+ /** @enum {string} */
20469
+ error_code?: "too_many_requests";
20470
+ };
20471
+ };
20472
+ };
20473
+ /** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
20474
+ 500: {
20475
+ headers: {
20476
+ [name: string]: unknown;
20477
+ };
20478
+ content: {
20479
+ "application/json": components["schemas"]["ErrorResponse"] & {
20480
+ /** @enum {string} */
20481
+ error_code?: "internal_error";
20482
+ };
20483
+ };
20484
+ };
20485
+ /** @description `plan_unavailable` — The plan could not be checked right now, and this setting is only for paid plans. Try again in a minute. */
20486
+ 503: {
20487
+ headers: {
20488
+ [name: string]: unknown;
20489
+ };
20490
+ content: {
20491
+ "application/json": components["schemas"]["ErrorResponse"] & {
20492
+ /** @enum {string} */
20493
+ error_code?: "plan_unavailable";
20494
+ };
20495
+ };
20496
+ };
20497
+ };
20498
+ };
20499
+ "organization/removeDomain": {
20500
+ parameters: {
20501
+ query?: never;
20502
+ header?: never;
20503
+ path: {
20504
+ organization_id: string;
20505
+ domain: string;
20506
+ };
20507
+ cookie?: never;
20508
+ };
20509
+ requestBody?: never;
20510
+ responses: {
20511
+ /** @description Organization */
20512
+ 200: {
20513
+ headers: {
20514
+ [name: string]: unknown;
20515
+ };
20516
+ content: {
20517
+ "application/json": {
20518
+ /** @description Organization ID */
20519
+ id: string;
20520
+ /**
20521
+ * @description Human-readable name of the organization.
20522
+ * @example Acme Inc.
20523
+ */
20524
+ name: string;
20525
+ /**
20526
+ * @description URL-safe identifier derived from `name`. Unique within the tenant.
20527
+ * @example acme-inc
20528
+ */
20529
+ slug: string;
20530
+ /** @description Optional free-form description. */
20531
+ description: string | null;
20532
+ /** @description Optional URL of the organization logo. */
20533
+ logo_url: string | null;
20534
+ /** @description Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized. */
20535
+ domains: {
20536
+ /** @example acme.com */
20537
+ domain: string;
20538
+ /** @description Put `faable-verification=<verification_token>` in a TXT record at `_faable-challenge.<domain>`, then call `POST /organization/{organization_id}/domain/{domain}/verify`. */
20539
+ verification_token: string;
20540
+ /**
20541
+ * Format: date-time
20542
+ * @description When the TXT record was found. `null` = not verified.
20543
+ */
20544
+ verified_at: string | null;
20545
+ }[];
20546
+ /** @description Whoever signs in with a verified email of one of the verified domains joins these teams. Empty = nobody joins by domain. */
20547
+ auto_join: {
20548
+ /** @description A team of this organization. */
20549
+ team: string;
20550
+ /** @description Role ids the member gets in that team. */
20551
+ roles: string[];
20552
+ }[];
20553
+ /** @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. */
20554
+ admins: string[];
20555
+ /** @description Object is related with this account */
20556
+ account: string;
20557
+ /**
20558
+ * @description OrganizationMetadata
20559
+ * @default {}
20560
+ */
20561
+ metadata: {
20562
+ [key: string]: unknown;
20563
+ };
20564
+ /** @description Organization creation date */
20565
+ createdAt: string;
20566
+ /** @description Organization updated date */
20567
+ updatedAt?: string;
20568
+ };
20569
+ };
20570
+ };
20571
+ /** @description `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field. */
20572
+ 400: {
20573
+ headers: {
20574
+ [name: string]: unknown;
20575
+ };
20576
+ content: {
20577
+ "application/json": components["schemas"]["ErrorResponse"] & {
20578
+ /** @enum {string} */
20579
+ error_code?: "validation_error";
20580
+ };
20581
+ };
20582
+ };
20583
+ /** @description `unauthorized` — The request carries no valid credentials. */
20584
+ 401: {
20585
+ headers: {
20586
+ [name: string]: unknown;
20587
+ };
20588
+ content: {
20589
+ "application/json": components["schemas"]["ErrorResponse"] & {
20590
+ /** @enum {string} */
20591
+ error_code?: "unauthorized";
20592
+ };
20593
+ };
20594
+ };
20595
+ /**
20596
+ * @description `forbidden` — The credentials are valid but do not allow this operation.
20597
+ *
20598
+ * `insufficient_scope` — The token lacks a scope this operation requires. `message` names it.
20599
+ *
20600
+ * `user_suspended` — The user is suspended and cannot sign in or be modified.
20601
+ */
20602
+ 403: {
20603
+ headers: {
20604
+ [name: string]: unknown;
20605
+ };
20606
+ content: {
20607
+ "application/json": components["schemas"]["ErrorResponse"] & {
20608
+ /** @enum {string} */
20609
+ error_code?: "forbidden" | "insufficient_scope" | "user_suspended";
20610
+ };
20611
+ };
20612
+ };
20613
+ /**
20614
+ * @description `organization_not_found` — No organization with that id in this account.
20615
+ *
20616
+ * `organization_domain_not_found` — The organization has no such domain.
20617
+ *
20618
+ * `account_not_found` — No Auth Account matches the request (domain, header or token).
20619
+ */
20620
+ 404: {
20621
+ headers: {
20622
+ [name: string]: unknown;
20623
+ };
20624
+ content: {
20625
+ "application/json": components["schemas"]["ErrorResponse"] & {
20626
+ /** @enum {string} */
20627
+ error_code?: "organization_not_found" | "organization_domain_not_found" | "account_not_found";
20628
+ };
20629
+ };
20630
+ };
20631
+ /** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
20632
+ 429: {
20633
+ headers: {
20634
+ [name: string]: unknown;
20635
+ };
20636
+ content: {
20637
+ "application/json": components["schemas"]["ErrorResponse"] & {
20638
+ /** @enum {string} */
20639
+ error_code?: "too_many_requests";
20640
+ };
20641
+ };
20642
+ };
20643
+ /** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
20644
+ 500: {
20645
+ headers: {
20646
+ [name: string]: unknown;
20647
+ };
20648
+ content: {
20649
+ "application/json": components["schemas"]["ErrorResponse"] & {
20650
+ /** @enum {string} */
20651
+ error_code?: "internal_error";
20652
+ };
20653
+ };
20654
+ };
20655
+ };
20656
+ };
20657
+ "organization/setAutoJoin": {
20658
+ parameters: {
20659
+ query?: never;
20660
+ header?: never;
20661
+ path: {
20662
+ organization_id: string;
20663
+ };
20664
+ cookie?: never;
20665
+ };
20666
+ requestBody: {
20667
+ content: {
20668
+ "application/json": {
20669
+ auto_join: {
20670
+ /** @description A team of this organization. */
20671
+ team: string;
20672
+ /** @description Role ids of this tenant. */
20673
+ roles: string[];
20674
+ }[];
20675
+ };
20676
+ };
20677
+ };
20678
+ responses: {
20679
+ /** @description Organization */
20680
+ 200: {
20681
+ headers: {
20682
+ [name: string]: unknown;
20683
+ };
20684
+ content: {
20685
+ "application/json": {
20686
+ /** @description Organization ID */
20687
+ id: string;
20688
+ /**
20689
+ * @description Human-readable name of the organization.
20690
+ * @example Acme Inc.
20691
+ */
20692
+ name: string;
20693
+ /**
20694
+ * @description URL-safe identifier derived from `name`. Unique within the tenant.
20695
+ * @example acme-inc
20696
+ */
20697
+ slug: string;
20698
+ /** @description Optional free-form description. */
20699
+ description: string | null;
20700
+ /** @description Optional URL of the organization logo. */
20701
+ logo_url: string | null;
20702
+ /** @description Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized. */
20703
+ domains: {
20704
+ /** @example acme.com */
20705
+ domain: string;
20706
+ /** @description Put `faable-verification=<verification_token>` in a TXT record at `_faable-challenge.<domain>`, then call `POST /organization/{organization_id}/domain/{domain}/verify`. */
20707
+ verification_token: string;
20708
+ /**
20709
+ * Format: date-time
20710
+ * @description When the TXT record was found. `null` = not verified.
20711
+ */
20712
+ verified_at: string | null;
20713
+ }[];
20714
+ /** @description Whoever signs in with a verified email of one of the verified domains joins these teams. Empty = nobody joins by domain. */
20715
+ auto_join: {
20716
+ /** @description A team of this organization. */
20717
+ team: string;
20718
+ /** @description Role ids the member gets in that team. */
20719
+ roles: string[];
20720
+ }[];
20721
+ /** @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. */
20722
+ admins: string[];
20723
+ /** @description Object is related with this account */
20724
+ account: string;
20725
+ /**
20726
+ * @description OrganizationMetadata
20727
+ * @default {}
20728
+ */
20729
+ metadata: {
20730
+ [key: string]: unknown;
20731
+ };
20732
+ /** @description Organization creation date */
20733
+ createdAt: string;
20734
+ /** @description Organization updated date */
20735
+ updatedAt?: string;
20736
+ };
20737
+ };
20738
+ };
20739
+ /**
20740
+ * @description `team_not_in_organization` — Auto-join can only put people in teams of the same organization. `details.teams` lists the others.
20741
+ *
20742
+ * `invalid_role` — The role belongs to another account.
20743
+ *
20744
+ * `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
20745
+ */
20746
+ 400: {
20747
+ headers: {
20748
+ [name: string]: unknown;
20749
+ };
20750
+ content: {
20751
+ "application/json": components["schemas"]["ErrorResponse"] & {
20752
+ /** @enum {string} */
20753
+ error_code?: "team_not_in_organization" | "invalid_role" | "validation_error";
20754
+ };
20755
+ };
20756
+ };
20757
+ /** @description `unauthorized` — The request carries no valid credentials. */
20758
+ 401: {
20759
+ headers: {
20760
+ [name: string]: unknown;
20761
+ };
20762
+ content: {
20763
+ "application/json": components["schemas"]["ErrorResponse"] & {
20764
+ /** @enum {string} */
20765
+ error_code?: "unauthorized";
20766
+ };
20767
+ };
20768
+ };
20769
+ /** @description `plan_required` — The setting requires a higher plan. `message` says which. */
20770
+ 402: {
20771
+ headers: {
20772
+ [name: string]: unknown;
20773
+ };
20774
+ content: {
20775
+ "application/json": components["schemas"]["ErrorResponse"] & {
20776
+ /** @enum {string} */
20777
+ error_code?: "plan_required";
20778
+ };
20779
+ };
20780
+ };
20781
+ /**
20782
+ * @description `forbidden` — The credentials are valid but do not allow this operation.
20783
+ *
20784
+ * `insufficient_scope` — The token lacks a scope this operation requires. `message` names it.
20785
+ *
20786
+ * `user_suspended` — The user is suspended and cannot sign in or be modified.
20787
+ */
20788
+ 403: {
20789
+ headers: {
20790
+ [name: string]: unknown;
20791
+ };
20792
+ content: {
20793
+ "application/json": components["schemas"]["ErrorResponse"] & {
20794
+ /** @enum {string} */
20795
+ error_code?: "forbidden" | "insufficient_scope" | "user_suspended";
20796
+ };
20797
+ };
20798
+ };
20799
+ /**
20800
+ * @description `organization_not_found` — No organization with that id in this account.
20801
+ *
20802
+ * `role_not_found` — No role with that id in this account.
20803
+ *
20804
+ * `account_not_found` — No Auth Account matches the request (domain, header or token).
20805
+ */
20806
+ 404: {
20807
+ headers: {
20808
+ [name: string]: unknown;
20809
+ };
20810
+ content: {
20811
+ "application/json": components["schemas"]["ErrorResponse"] & {
20812
+ /** @enum {string} */
20813
+ error_code?: "organization_not_found" | "role_not_found" | "account_not_found";
20814
+ };
20815
+ };
20816
+ };
20817
+ /** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
20818
+ 429: {
20819
+ headers: {
20820
+ [name: string]: unknown;
20821
+ };
20822
+ content: {
20823
+ "application/json": components["schemas"]["ErrorResponse"] & {
20824
+ /** @enum {string} */
20825
+ error_code?: "too_many_requests";
20826
+ };
20827
+ };
20828
+ };
20829
+ /** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
20830
+ 500: {
20831
+ headers: {
20832
+ [name: string]: unknown;
20833
+ };
20834
+ content: {
20835
+ "application/json": components["schemas"]["ErrorResponse"] & {
20836
+ /** @enum {string} */
20837
+ error_code?: "internal_error";
20838
+ };
20839
+ };
20840
+ };
20841
+ /** @description `plan_unavailable` — The plan could not be checked right now, and this setting is only for paid plans. Try again in a minute. */
20842
+ 503: {
20843
+ headers: {
20844
+ [name: string]: unknown;
20845
+ };
20846
+ content: {
20847
+ "application/json": components["schemas"]["ErrorResponse"] & {
20848
+ /** @enum {string} */
20849
+ error_code?: "plan_unavailable";
20850
+ };
20851
+ };
20852
+ };
20853
+ };
20854
+ };
19864
20855
  "teammember/list": {
19865
20856
  parameters: {
19866
20857
  query?: {