@faable/auth-sdk 2.7.83 → 2.7.85

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.
@@ -1368,6 +1368,46 @@ export interface paths {
1368
1368
  patch?: never;
1369
1369
  trace?: never;
1370
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
+ };
1391
+ "/organization/{organization_id}/require-sso": {
1392
+ parameters: {
1393
+ query?: never;
1394
+ header?: never;
1395
+ path?: never;
1396
+ cookie?: never;
1397
+ };
1398
+ get?: never;
1399
+ /**
1400
+ * Require SSO for an Organization
1401
+ * @description On: people of the verified domains reach the organization's teams only through its identity provider. Access tokens carry `https://faable.com/org` (the organization of the user's verified email domain) and `https://faable.com/org_sso` (whether this session came through its identity provider); the resource server applies it. Needs a bound `oidc` connection and the Pro plan; turning it off is always allowed.
1402
+ */
1403
+ put: operations["organization/setRequireSso"];
1404
+ post?: never;
1405
+ delete?: never;
1406
+ options?: never;
1407
+ head?: never;
1408
+ patch?: never;
1409
+ trace?: never;
1410
+ };
1371
1411
  "/teammember": {
1372
1412
  parameters: {
1373
1413
  query?: never;
@@ -4946,6 +4986,8 @@ export interface components {
4946
4986
  /** @default null */
4947
4987
  response_type: string;
4948
4988
  enabled: boolean;
4989
+ /** @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. */
4990
+ organization?: string | null;
4949
4991
  /** @default null */
4950
4992
  enabled_clients: string[] | null;
4951
4993
  /** @default [] */
@@ -5008,6 +5050,10 @@ export interface components {
5008
5050
  client_secret?: string;
5009
5051
  issuer?: string;
5010
5052
  jwks_url?: string;
5053
+ token_url?: string;
5054
+ userinfo_url?: string;
5055
+ /** @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. */
5056
+ organization?: string;
5011
5057
  scope?: string[];
5012
5058
  enabled?: boolean;
5013
5059
  claims_mapping?: {
@@ -5084,6 +5130,7 @@ export interface components {
5084
5130
  disable_signup?: boolean;
5085
5131
  /** @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. */
5086
5132
  login_identifier?: "email" | "username" | "email_or_username";
5133
+ organization?: string | null;
5087
5134
  };
5088
5135
  /** @description Presentation metadata for one connection type. Contains no endpoint URLs and no credentials. */
5089
5136
  ConnectionTypeInfo: {
@@ -5863,6 +5910,15 @@ export interface components {
5863
5910
  */
5864
5911
  verified_at: string | null;
5865
5912
  }[];
5913
+ /** @description People of the verified domains reach the organization's teams only through its identity provider. Applied by the resource server with the `https://faable.com/org` and `https://faable.com/org_sso` access-token claims. */
5914
+ require_sso: boolean;
5915
+ /** @description Whoever signs in with a verified email of one of the verified domains joins these teams. Empty = nobody joins by domain. */
5916
+ auto_join: {
5917
+ /** @description A team of this organization. */
5918
+ team: string;
5919
+ /** @description Role ids the member gets in that team. */
5920
+ roles: string[];
5921
+ }[];
5866
5922
  /** @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. */
5867
5923
  admins: string[];
5868
5924
  /** @description Object is related with this account */
@@ -7334,6 +7390,9 @@ export interface components {
7334
7390
  * - `organization_domain_taken` (409): Another organization of this tenant already verified this domain. A domain belongs to one organization.
7335
7391
  * - `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.
7336
7392
  * - `plan_unavailable` (503): The plan could not be checked right now, and this setting is only for paid plans. Try again in a minute.
7393
+ * - `organization_domain_mismatch` (403): This organization's identity provider can only sign in addresses of the organization's verified email domains.
7394
+ * - `team_not_in_organization` (400): Auto-join can only put people in teams of the same organization. `details.teams` lists the others.
7395
+ * - `organization_has_no_idp` (400): Requiring SSO needs an identity provider: bind an `oidc` connection to the organization first.
7337
7396
  * - `organization_not_found` (404): No organization with that id in this account.
7338
7397
  * - `invalid_user` (400): The user does not exist in this account.
7339
7398
  * - `not_an_organization_admin` (404): The user is not an admin of the organization.
@@ -7351,7 +7410,7 @@ export interface components {
7351
7410
  * - `delivery_in_progress` (409): The delivery is being attempted right now; retry the redeliver in a minute.
7352
7411
  * @enum {string}
7353
7412
  */
7354
- 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_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";
7413
+ ErrorCode: "bad_request" | "validation_error" | "unauthorized" | "payment_required" | "forbidden" | "not_found" | "method_not_allowed" | "conflict" | "payload_too_large" | "unsupported_media_type" | "unprocessable_entity" | "too_many_requests" | "internal_error" | "already_exists" | "invalid_id" | "account_not_found" | "invalid_query" | "search_not_supported" | "invalid_expand" | "access_denied" | "insufficient_scope" | "team_required" | "account_limit_reached" | "invalid_project_id" | "account_transfer_refused" | "email_sender_domain_not_allowed" | "plan_required" | "invalid_canonical_host" | "canonical_host_breaks_passkeys" | "not_logged_in" | "session_already_revoked" | "invalid_token" | "not_owner" | "user_suspended" | "invalid_credentials" | "login_denied" | "signup_denied" | "client_credentials_denied" | "m2m_quota_exceeded" | "signup_disabled" | "email_taken" | "username_taken" | "invalid_username" | "invalid_email" | "invalid_name" | "same_email" | "user_has_no_email" | "password_too_weak" | "invalid_password_hash" | "weak_password_hash" | "invalid_code" | "invalid_phone" | "phone_changed" | "phone_already_verified" | "sms_unavailable" | "sms_failed" | "invalid_state" | "state_mismatch" | "invalid_ticket" | "ticket_used" | "ticket_expired" | "ticket_not_found" | "credential_not_found" | "invalid_link" | "expired_link" | "invalid_otp" | "invalid_client" | "client_not_found" | "client_mismatch" | "invalid_client_metadata" | "invalid_connection" | "no_database_connection" | "connection_required" | "connection_misconfigured" | "passwordless_unavailable" | "ambiguous_connection" | "invalid_redirect_uri" | "origin_not_allowed" | "audience_not_found" | "system_resource" | "invalid_request" | "invalid_device_code" | "provider_error" | "identity_already_linked" | "identity_link_denied" | "identity_conflict" | "identity_orphaned" | "no_provider_token" | "no_refresh_token" | "action_unavailable" | "login_flow_misconfigured" | "mfa_required" | "step_up_required" | "interaction_required" | "passkey_login_disabled" | "mfa_pending" | "mfa_invalid_code" | "mfa_invalid_recovery_code" | "too_many_attempts" | "too_many_login_attempts" | "totp_not_allowed" | "no_usable_factor" | "factor_not_found" | "factor_already_confirmed" | "invalid_factor" | "session_missing" | "passkey_verification_failed" | "no_passkey_enrolled" | "malformed_credential" | "unknown_passkey" | "invalid_passkey" | "invalid_invite_url" | "invite_email_mismatch" | "invite_email_unverified" | "invite_not_found" | "invite_used" | "already_member" | "not_a_member" | "registration_disabled" | "invalid_email_domain" | "public_email_domain" | "organization_domain_not_found" | "organization_domain_taken" | "organization_domain_unverified" | "plan_unavailable" | "organization_domain_mismatch" | "team_not_in_organization" | "organization_has_no_idp" | "organization_not_found" | "invalid_user" | "not_an_organization_admin" | "last_organization_admin" | "team_id_unavailable" | "use_team_member_route" | "role_not_found" | "invalid_role" | "flow_not_found" | "revision_not_found" | "invalid_webhook_event" | "invalid_webhook_url" | "not_a_webhook" | "delivery_not_found" | "delivery_in_progress";
7355
7414
  /** @description Every error response has this shape. Branch on `error_code`, never on `message`: the message is written for a person and may change. */
7356
7415
  ErrorResponse: {
7357
7416
  /** @description The HTTP status, repeated. */
@@ -9938,6 +9997,10 @@ export interface operations {
9938
9997
  client_secret?: string;
9939
9998
  issuer?: string;
9940
9999
  jwks_url?: string;
10000
+ token_url?: string;
10001
+ userinfo_url?: string;
10002
+ /** @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. */
10003
+ organization?: string;
9941
10004
  scope?: string[];
9942
10005
  enabled?: boolean;
9943
10006
  claims_mapping?: {
@@ -10006,6 +10069,8 @@ export interface operations {
10006
10069
  /** @default null */
10007
10070
  response_type: string;
10008
10071
  enabled: boolean;
10072
+ /** @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. */
10073
+ organization?: string | null;
10009
10074
  /** @default null */
10010
10075
  enabled_clients: string[] | null;
10011
10076
  /** @default [] */
@@ -10177,6 +10242,8 @@ export interface operations {
10177
10242
  /** @default null */
10178
10243
  response_type: string;
10179
10244
  enabled: boolean;
10245
+ /** @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. */
10246
+ organization?: string | null;
10180
10247
  /** @default null */
10181
10248
  enabled_clients: string[] | null;
10182
10249
  /** @default [] */
@@ -10361,6 +10428,7 @@ export interface operations {
10361
10428
  disable_signup?: boolean;
10362
10429
  /** @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. */
10363
10430
  login_identifier?: "email" | "username" | "email_or_username";
10431
+ organization?: string | null;
10364
10432
  };
10365
10433
  };
10366
10434
  };
@@ -10394,6 +10462,8 @@ export interface operations {
10394
10462
  /** @default null */
10395
10463
  response_type: string;
10396
10464
  enabled: boolean;
10465
+ /** @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. */
10466
+ organization?: string | null;
10397
10467
  /** @default null */
10398
10468
  enabled_clients: string[] | null;
10399
10469
  /** @default [] */
@@ -10571,6 +10641,8 @@ export interface operations {
10571
10641
  /** @default null */
10572
10642
  response_type: string;
10573
10643
  enabled: boolean;
10644
+ /** @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. */
10645
+ organization?: string | null;
10574
10646
  /** @default null */
10575
10647
  enabled_clients: string[] | null;
10576
10648
  /** @default [] */
@@ -10892,6 +10964,15 @@ export interface operations {
10892
10964
  content: {
10893
10965
  "application/json": {
10894
10966
  ok: boolean;
10967
+ /** @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). */
10968
+ home_realm?: {
10969
+ connection_id: string;
10970
+ organization: {
10971
+ id: string;
10972
+ name: string;
10973
+ logo_url: string | null;
10974
+ };
10975
+ };
10895
10976
  };
10896
10977
  };
10897
10978
  };
@@ -19105,6 +19186,15 @@ export interface operations {
19105
19186
  */
19106
19187
  verified_at: string | null;
19107
19188
  }[];
19189
+ /** @description People of the verified domains reach the organization's teams only through its identity provider. Applied by the resource server with the `https://faable.com/org` and `https://faable.com/org_sso` access-token claims. */
19190
+ require_sso: boolean;
19191
+ /** @description Whoever signs in with a verified email of one of the verified domains joins these teams. Empty = nobody joins by domain. */
19192
+ auto_join: {
19193
+ /** @description A team of this organization. */
19194
+ team: string;
19195
+ /** @description Role ids the member gets in that team. */
19196
+ roles: string[];
19197
+ }[];
19108
19198
  /** @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. */
19109
19199
  admins: string[];
19110
19200
  /** @description Object is related with this account */
@@ -19253,6 +19343,15 @@ export interface operations {
19253
19343
  */
19254
19344
  verified_at: string | null;
19255
19345
  }[];
19346
+ /** @description People of the verified domains reach the organization's teams only through its identity provider. Applied by the resource server with the `https://faable.com/org` and `https://faable.com/org_sso` access-token claims. */
19347
+ require_sso: boolean;
19348
+ /** @description Whoever signs in with a verified email of one of the verified domains joins these teams. Empty = nobody joins by domain. */
19349
+ auto_join: {
19350
+ /** @description A team of this organization. */
19351
+ team: string;
19352
+ /** @description Role ids the member gets in that team. */
19353
+ roles: string[];
19354
+ }[];
19256
19355
  /** @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. */
19257
19356
  admins: string[];
19258
19357
  /** @description Object is related with this account */
@@ -19426,6 +19525,15 @@ export interface operations {
19426
19525
  */
19427
19526
  verified_at: string | null;
19428
19527
  }[];
19528
+ /** @description People of the verified domains reach the organization's teams only through its identity provider. Applied by the resource server with the `https://faable.com/org` and `https://faable.com/org_sso` access-token claims. */
19529
+ require_sso: boolean;
19530
+ /** @description Whoever signs in with a verified email of one of the verified domains joins these teams. Empty = nobody joins by domain. */
19531
+ auto_join: {
19532
+ /** @description A team of this organization. */
19533
+ team: string;
19534
+ /** @description Role ids the member gets in that team. */
19535
+ roles: string[];
19536
+ }[];
19429
19537
  /** @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. */
19430
19538
  admins: string[];
19431
19539
  /** @description Object is related with this account */
@@ -19580,6 +19688,15 @@ export interface operations {
19580
19688
  */
19581
19689
  verified_at: string | null;
19582
19690
  }[];
19691
+ /** @description People of the verified domains reach the organization's teams only through its identity provider. Applied by the resource server with the `https://faable.com/org` and `https://faable.com/org_sso` access-token claims. */
19692
+ require_sso: boolean;
19693
+ /** @description Whoever signs in with a verified email of one of the verified domains joins these teams. Empty = nobody joins by domain. */
19694
+ auto_join: {
19695
+ /** @description A team of this organization. */
19696
+ team: string;
19697
+ /** @description Role ids the member gets in that team. */
19698
+ roles: string[];
19699
+ }[];
19583
19700
  /** @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. */
19584
19701
  admins: string[];
19585
19702
  /** @description Object is related with this account */
@@ -19742,6 +19859,15 @@ export interface operations {
19742
19859
  */
19743
19860
  verified_at: string | null;
19744
19861
  }[];
19862
+ /** @description People of the verified domains reach the organization's teams only through its identity provider. Applied by the resource server with the `https://faable.com/org` and `https://faable.com/org_sso` access-token claims. */
19863
+ require_sso: boolean;
19864
+ /** @description Whoever signs in with a verified email of one of the verified domains joins these teams. Empty = nobody joins by domain. */
19865
+ auto_join: {
19866
+ /** @description A team of this organization. */
19867
+ team: string;
19868
+ /** @description Role ids the member gets in that team. */
19869
+ roles: string[];
19870
+ }[];
19745
19871
  /** @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. */
19746
19872
  admins: string[];
19747
19873
  /** @description Object is related with this account */
@@ -19895,6 +20021,15 @@ export interface operations {
19895
20021
  */
19896
20022
  verified_at: string | null;
19897
20023
  }[];
20024
+ /** @description People of the verified domains reach the organization's teams only through its identity provider. Applied by the resource server with the `https://faable.com/org` and `https://faable.com/org_sso` access-token claims. */
20025
+ require_sso: boolean;
20026
+ /** @description Whoever signs in with a verified email of one of the verified domains joins these teams. Empty = nobody joins by domain. */
20027
+ auto_join: {
20028
+ /** @description A team of this organization. */
20029
+ team: string;
20030
+ /** @description Role ids the member gets in that team. */
20031
+ roles: string[];
20032
+ }[];
19898
20033
  /** @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. */
19899
20034
  admins: string[];
19900
20035
  /** @description Object is related with this account */
@@ -20067,6 +20202,15 @@ export interface operations {
20067
20202
  */
20068
20203
  verified_at: string | null;
20069
20204
  }[];
20205
+ /** @description People of the verified domains reach the organization's teams only through its identity provider. Applied by the resource server with the `https://faable.com/org` and `https://faable.com/org_sso` access-token claims. */
20206
+ require_sso: boolean;
20207
+ /** @description Whoever signs in with a verified email of one of the verified domains joins these teams. Empty = nobody joins by domain. */
20208
+ auto_join: {
20209
+ /** @description A team of this organization. */
20210
+ team: string;
20211
+ /** @description Role ids the member gets in that team. */
20212
+ roles: string[];
20213
+ }[];
20070
20214
  /** @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. */
20071
20215
  admins: string[];
20072
20216
  /** @description Object is related with this account */
@@ -20224,6 +20368,15 @@ export interface operations {
20224
20368
  */
20225
20369
  verified_at: string | null;
20226
20370
  }[];
20371
+ /** @description People of the verified domains reach the organization's teams only through its identity provider. Applied by the resource server with the `https://faable.com/org` and `https://faable.com/org_sso` access-token claims. */
20372
+ require_sso: boolean;
20373
+ /** @description Whoever signs in with a verified email of one of the verified domains joins these teams. Empty = nobody joins by domain. */
20374
+ auto_join: {
20375
+ /** @description A team of this organization. */
20376
+ team: string;
20377
+ /** @description Role ids the member gets in that team. */
20378
+ roles: string[];
20379
+ }[];
20227
20380
  /** @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. */
20228
20381
  admins: string[];
20229
20382
  /** @description Object is related with this account */
@@ -20429,6 +20582,15 @@ export interface operations {
20429
20582
  */
20430
20583
  verified_at: string | null;
20431
20584
  }[];
20585
+ /** @description People of the verified domains reach the organization's teams only through its identity provider. Applied by the resource server with the `https://faable.com/org` and `https://faable.com/org_sso` access-token claims. */
20586
+ require_sso: boolean;
20587
+ /** @description Whoever signs in with a verified email of one of the verified domains joins these teams. Empty = nobody joins by domain. */
20588
+ auto_join: {
20589
+ /** @description A team of this organization. */
20590
+ team: string;
20591
+ /** @description Role ids the member gets in that team. */
20592
+ roles: string[];
20593
+ }[];
20432
20594
  /** @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. */
20433
20595
  admins: string[];
20434
20596
  /** @description Object is related with this account */
@@ -20533,6 +20695,397 @@ export interface operations {
20533
20695
  };
20534
20696
  };
20535
20697
  };
20698
+ "organization/setAutoJoin": {
20699
+ parameters: {
20700
+ query?: never;
20701
+ header?: never;
20702
+ path: {
20703
+ organization_id: string;
20704
+ };
20705
+ cookie?: never;
20706
+ };
20707
+ requestBody: {
20708
+ content: {
20709
+ "application/json": {
20710
+ auto_join: {
20711
+ /** @description A team of this organization. */
20712
+ team: string;
20713
+ /** @description Role ids of this tenant. */
20714
+ roles: string[];
20715
+ }[];
20716
+ };
20717
+ };
20718
+ };
20719
+ responses: {
20720
+ /** @description Organization */
20721
+ 200: {
20722
+ headers: {
20723
+ [name: string]: unknown;
20724
+ };
20725
+ content: {
20726
+ "application/json": {
20727
+ /** @description Organization ID */
20728
+ id: string;
20729
+ /**
20730
+ * @description Human-readable name of the organization.
20731
+ * @example Acme Inc.
20732
+ */
20733
+ name: string;
20734
+ /**
20735
+ * @description URL-safe identifier derived from `name`. Unique within the tenant.
20736
+ * @example acme-inc
20737
+ */
20738
+ slug: string;
20739
+ /** @description Optional free-form description. */
20740
+ description: string | null;
20741
+ /** @description Optional URL of the organization logo. */
20742
+ logo_url: string | null;
20743
+ /** @description Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized. */
20744
+ domains: {
20745
+ /** @example acme.com */
20746
+ domain: string;
20747
+ /** @description Put `faable-verification=<verification_token>` in a TXT record at `_faable-challenge.<domain>`, then call `POST /organization/{organization_id}/domain/{domain}/verify`. */
20748
+ verification_token: string;
20749
+ /**
20750
+ * Format: date-time
20751
+ * @description When the TXT record was found. `null` = not verified.
20752
+ */
20753
+ verified_at: string | null;
20754
+ }[];
20755
+ /** @description People of the verified domains reach the organization's teams only through its identity provider. Applied by the resource server with the `https://faable.com/org` and `https://faable.com/org_sso` access-token claims. */
20756
+ require_sso: boolean;
20757
+ /** @description Whoever signs in with a verified email of one of the verified domains joins these teams. Empty = nobody joins by domain. */
20758
+ auto_join: {
20759
+ /** @description A team of this organization. */
20760
+ team: string;
20761
+ /** @description Role ids the member gets in that team. */
20762
+ roles: string[];
20763
+ }[];
20764
+ /** @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. */
20765
+ admins: string[];
20766
+ /** @description Object is related with this account */
20767
+ account: string;
20768
+ /**
20769
+ * @description OrganizationMetadata
20770
+ * @default {}
20771
+ */
20772
+ metadata: {
20773
+ [key: string]: unknown;
20774
+ };
20775
+ /** @description Organization creation date */
20776
+ createdAt: string;
20777
+ /** @description Organization updated date */
20778
+ updatedAt?: string;
20779
+ };
20780
+ };
20781
+ };
20782
+ /**
20783
+ * @description `team_not_in_organization` — Auto-join can only put people in teams of the same organization. `details.teams` lists the others.
20784
+ *
20785
+ * `invalid_role` — The role belongs to another account.
20786
+ *
20787
+ * `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
20788
+ */
20789
+ 400: {
20790
+ headers: {
20791
+ [name: string]: unknown;
20792
+ };
20793
+ content: {
20794
+ "application/json": components["schemas"]["ErrorResponse"] & {
20795
+ /** @enum {string} */
20796
+ error_code?: "team_not_in_organization" | "invalid_role" | "validation_error";
20797
+ };
20798
+ };
20799
+ };
20800
+ /** @description `unauthorized` — The request carries no valid credentials. */
20801
+ 401: {
20802
+ headers: {
20803
+ [name: string]: unknown;
20804
+ };
20805
+ content: {
20806
+ "application/json": components["schemas"]["ErrorResponse"] & {
20807
+ /** @enum {string} */
20808
+ error_code?: "unauthorized";
20809
+ };
20810
+ };
20811
+ };
20812
+ /** @description `plan_required` — The setting requires a higher plan. `message` says which. */
20813
+ 402: {
20814
+ headers: {
20815
+ [name: string]: unknown;
20816
+ };
20817
+ content: {
20818
+ "application/json": components["schemas"]["ErrorResponse"] & {
20819
+ /** @enum {string} */
20820
+ error_code?: "plan_required";
20821
+ };
20822
+ };
20823
+ };
20824
+ /**
20825
+ * @description `forbidden` — The credentials are valid but do not allow this operation.
20826
+ *
20827
+ * `insufficient_scope` — The token lacks a scope this operation requires. `message` names it.
20828
+ *
20829
+ * `user_suspended` — The user is suspended and cannot sign in or be modified.
20830
+ */
20831
+ 403: {
20832
+ headers: {
20833
+ [name: string]: unknown;
20834
+ };
20835
+ content: {
20836
+ "application/json": components["schemas"]["ErrorResponse"] & {
20837
+ /** @enum {string} */
20838
+ error_code?: "forbidden" | "insufficient_scope" | "user_suspended";
20839
+ };
20840
+ };
20841
+ };
20842
+ /**
20843
+ * @description `organization_not_found` — No organization with that id in this account.
20844
+ *
20845
+ * `role_not_found` — No role with that id in this account.
20846
+ *
20847
+ * `account_not_found` — No Auth Account matches the request (domain, header or token).
20848
+ */
20849
+ 404: {
20850
+ headers: {
20851
+ [name: string]: unknown;
20852
+ };
20853
+ content: {
20854
+ "application/json": components["schemas"]["ErrorResponse"] & {
20855
+ /** @enum {string} */
20856
+ error_code?: "organization_not_found" | "role_not_found" | "account_not_found";
20857
+ };
20858
+ };
20859
+ };
20860
+ /** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
20861
+ 429: {
20862
+ headers: {
20863
+ [name: string]: unknown;
20864
+ };
20865
+ content: {
20866
+ "application/json": components["schemas"]["ErrorResponse"] & {
20867
+ /** @enum {string} */
20868
+ error_code?: "too_many_requests";
20869
+ };
20870
+ };
20871
+ };
20872
+ /** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
20873
+ 500: {
20874
+ headers: {
20875
+ [name: string]: unknown;
20876
+ };
20877
+ content: {
20878
+ "application/json": components["schemas"]["ErrorResponse"] & {
20879
+ /** @enum {string} */
20880
+ error_code?: "internal_error";
20881
+ };
20882
+ };
20883
+ };
20884
+ /** @description `plan_unavailable` — The plan could not be checked right now, and this setting is only for paid plans. Try again in a minute. */
20885
+ 503: {
20886
+ headers: {
20887
+ [name: string]: unknown;
20888
+ };
20889
+ content: {
20890
+ "application/json": components["schemas"]["ErrorResponse"] & {
20891
+ /** @enum {string} */
20892
+ error_code?: "plan_unavailable";
20893
+ };
20894
+ };
20895
+ };
20896
+ };
20897
+ };
20898
+ "organization/setRequireSso": {
20899
+ parameters: {
20900
+ query?: never;
20901
+ header?: never;
20902
+ path: {
20903
+ organization_id: string;
20904
+ };
20905
+ cookie?: never;
20906
+ };
20907
+ requestBody: {
20908
+ content: {
20909
+ "application/json": {
20910
+ require_sso: boolean;
20911
+ };
20912
+ };
20913
+ };
20914
+ responses: {
20915
+ /** @description Organization */
20916
+ 200: {
20917
+ headers: {
20918
+ [name: string]: unknown;
20919
+ };
20920
+ content: {
20921
+ "application/json": {
20922
+ /** @description Organization ID */
20923
+ id: string;
20924
+ /**
20925
+ * @description Human-readable name of the organization.
20926
+ * @example Acme Inc.
20927
+ */
20928
+ name: string;
20929
+ /**
20930
+ * @description URL-safe identifier derived from `name`. Unique within the tenant.
20931
+ * @example acme-inc
20932
+ */
20933
+ slug: string;
20934
+ /** @description Optional free-form description. */
20935
+ description: string | null;
20936
+ /** @description Optional URL of the organization logo. */
20937
+ logo_url: string | null;
20938
+ /** @description Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized. */
20939
+ domains: {
20940
+ /** @example acme.com */
20941
+ domain: string;
20942
+ /** @description Put `faable-verification=<verification_token>` in a TXT record at `_faable-challenge.<domain>`, then call `POST /organization/{organization_id}/domain/{domain}/verify`. */
20943
+ verification_token: string;
20944
+ /**
20945
+ * Format: date-time
20946
+ * @description When the TXT record was found. `null` = not verified.
20947
+ */
20948
+ verified_at: string | null;
20949
+ }[];
20950
+ /** @description People of the verified domains reach the organization's teams only through its identity provider. Applied by the resource server with the `https://faable.com/org` and `https://faable.com/org_sso` access-token claims. */
20951
+ require_sso: boolean;
20952
+ /** @description Whoever signs in with a verified email of one of the verified domains joins these teams. Empty = nobody joins by domain. */
20953
+ auto_join: {
20954
+ /** @description A team of this organization. */
20955
+ team: string;
20956
+ /** @description Role ids the member gets in that team. */
20957
+ roles: string[];
20958
+ }[];
20959
+ /** @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. */
20960
+ admins: string[];
20961
+ /** @description Object is related with this account */
20962
+ account: string;
20963
+ /**
20964
+ * @description OrganizationMetadata
20965
+ * @default {}
20966
+ */
20967
+ metadata: {
20968
+ [key: string]: unknown;
20969
+ };
20970
+ /** @description Organization creation date */
20971
+ createdAt: string;
20972
+ /** @description Organization updated date */
20973
+ updatedAt?: string;
20974
+ };
20975
+ };
20976
+ };
20977
+ /**
20978
+ * @description `organization_has_no_idp` — Requiring SSO needs an identity provider: bind an `oidc` connection to the organization first.
20979
+ *
20980
+ * `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
20981
+ */
20982
+ 400: {
20983
+ headers: {
20984
+ [name: string]: unknown;
20985
+ };
20986
+ content: {
20987
+ "application/json": components["schemas"]["ErrorResponse"] & {
20988
+ /** @enum {string} */
20989
+ error_code?: "organization_has_no_idp" | "validation_error";
20990
+ };
20991
+ };
20992
+ };
20993
+ /** @description `unauthorized` — The request carries no valid credentials. */
20994
+ 401: {
20995
+ headers: {
20996
+ [name: string]: unknown;
20997
+ };
20998
+ content: {
20999
+ "application/json": components["schemas"]["ErrorResponse"] & {
21000
+ /** @enum {string} */
21001
+ error_code?: "unauthorized";
21002
+ };
21003
+ };
21004
+ };
21005
+ /** @description `plan_required` — The setting requires a higher plan. `message` says which. */
21006
+ 402: {
21007
+ headers: {
21008
+ [name: string]: unknown;
21009
+ };
21010
+ content: {
21011
+ "application/json": components["schemas"]["ErrorResponse"] & {
21012
+ /** @enum {string} */
21013
+ error_code?: "plan_required";
21014
+ };
21015
+ };
21016
+ };
21017
+ /**
21018
+ * @description `forbidden` — The credentials are valid but do not allow this operation.
21019
+ *
21020
+ * `insufficient_scope` — The token lacks a scope this operation requires. `message` names it.
21021
+ *
21022
+ * `user_suspended` — The user is suspended and cannot sign in or be modified.
21023
+ */
21024
+ 403: {
21025
+ headers: {
21026
+ [name: string]: unknown;
21027
+ };
21028
+ content: {
21029
+ "application/json": components["schemas"]["ErrorResponse"] & {
21030
+ /** @enum {string} */
21031
+ error_code?: "forbidden" | "insufficient_scope" | "user_suspended";
21032
+ };
21033
+ };
21034
+ };
21035
+ /**
21036
+ * @description `organization_not_found` — No organization with that id in this account.
21037
+ *
21038
+ * `account_not_found` — No Auth Account matches the request (domain, header or token).
21039
+ */
21040
+ 404: {
21041
+ headers: {
21042
+ [name: string]: unknown;
21043
+ };
21044
+ content: {
21045
+ "application/json": components["schemas"]["ErrorResponse"] & {
21046
+ /** @enum {string} */
21047
+ error_code?: "organization_not_found" | "account_not_found";
21048
+ };
21049
+ };
21050
+ };
21051
+ /** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
21052
+ 429: {
21053
+ headers: {
21054
+ [name: string]: unknown;
21055
+ };
21056
+ content: {
21057
+ "application/json": components["schemas"]["ErrorResponse"] & {
21058
+ /** @enum {string} */
21059
+ error_code?: "too_many_requests";
21060
+ };
21061
+ };
21062
+ };
21063
+ /** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
21064
+ 500: {
21065
+ headers: {
21066
+ [name: string]: unknown;
21067
+ };
21068
+ content: {
21069
+ "application/json": components["schemas"]["ErrorResponse"] & {
21070
+ /** @enum {string} */
21071
+ error_code?: "internal_error";
21072
+ };
21073
+ };
21074
+ };
21075
+ /** @description `plan_unavailable` — The plan could not be checked right now, and this setting is only for paid plans. Try again in a minute. */
21076
+ 503: {
21077
+ headers: {
21078
+ [name: string]: unknown;
21079
+ };
21080
+ content: {
21081
+ "application/json": components["schemas"]["ErrorResponse"] & {
21082
+ /** @enum {string} */
21083
+ error_code?: "plan_unavailable";
21084
+ };
21085
+ };
21086
+ };
21087
+ };
21088
+ };
20536
21089
  "teammember/list": {
20537
21090
  parameters: {
20538
21091
  query?: {