@faable/auth-sdk 2.7.82 → 2.7.83

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,66 @@ 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
+ };
1311
1371
  "/teammember": {
1312
1372
  parameters: {
1313
1373
  query?: never;
@@ -5791,6 +5851,18 @@ export interface components {
5791
5851
  description: string | null;
5792
5852
  /** @description Optional URL of the organization logo. */
5793
5853
  logo_url: string | null;
5854
+ /** @description Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized. */
5855
+ domains: {
5856
+ /** @example acme.com */
5857
+ domain: string;
5858
+ /** @description Put `faable-verification=<verification_token>` in a TXT record at `_faable-challenge.<domain>`, then call `POST /organization/{organization_id}/domain/{domain}/verify`. */
5859
+ verification_token: string;
5860
+ /**
5861
+ * Format: date-time
5862
+ * @description When the TXT record was found. `null` = not verified.
5863
+ */
5864
+ verified_at: string | null;
5865
+ }[];
5794
5866
  /** @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
5867
  admins: string[];
5796
5868
  /** @description Object is related with this account */
@@ -7256,6 +7328,12 @@ export interface components {
7256
7328
  * - `already_member` (400): The user is already a member of the team.
7257
7329
  * - `not_a_member` (404): The user is not a member of the team.
7258
7330
  * - `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`.
7331
+ * - `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.
7332
+ * - `public_email_domain` (400): A public email provider (gmail.com, outlook.com…) cannot belong to an organization: anyone can have an address there.
7333
+ * - `organization_domain_not_found` (404): The organization has no such domain.
7334
+ * - `organization_domain_taken` (409): Another organization of this tenant already verified this domain. A domain belongs to one organization.
7335
+ * - `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
+ * - `plan_unavailable` (503): The plan could not be checked right now, and this setting is only for paid plans. Try again in a minute.
7259
7337
  * - `organization_not_found` (404): No organization with that id in this account.
7260
7338
  * - `invalid_user` (400): The user does not exist in this account.
7261
7339
  * - `not_an_organization_admin` (404): The user is not an admin of the organization.
@@ -7273,7 +7351,7 @@ export interface components {
7273
7351
  * - `delivery_in_progress` (409): The delivery is being attempted right now; retry the redeliver in a minute.
7274
7352
  * @enum {string}
7275
7353
  */
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";
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";
7277
7355
  /** @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
7356
  ErrorResponse: {
7279
7357
  /** @description The HTTP status, repeated. */
@@ -19015,6 +19093,18 @@ export interface operations {
19015
19093
  description: string | null;
19016
19094
  /** @description Optional URL of the organization logo. */
19017
19095
  logo_url: string | null;
19096
+ /** @description Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized. */
19097
+ domains: {
19098
+ /** @example acme.com */
19099
+ domain: string;
19100
+ /** @description Put `faable-verification=<verification_token>` in a TXT record at `_faable-challenge.<domain>`, then call `POST /organization/{organization_id}/domain/{domain}/verify`. */
19101
+ verification_token: string;
19102
+ /**
19103
+ * Format: date-time
19104
+ * @description When the TXT record was found. `null` = not verified.
19105
+ */
19106
+ verified_at: string | null;
19107
+ }[];
19018
19108
  /** @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
19109
  admins: string[];
19020
19110
  /** @description Object is related with this account */
@@ -19151,6 +19241,18 @@ export interface operations {
19151
19241
  description: string | null;
19152
19242
  /** @description Optional URL of the organization logo. */
19153
19243
  logo_url: string | null;
19244
+ /** @description Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized. */
19245
+ domains: {
19246
+ /** @example acme.com */
19247
+ domain: string;
19248
+ /** @description Put `faable-verification=<verification_token>` in a TXT record at `_faable-challenge.<domain>`, then call `POST /organization/{organization_id}/domain/{domain}/verify`. */
19249
+ verification_token: string;
19250
+ /**
19251
+ * Format: date-time
19252
+ * @description When the TXT record was found. `null` = not verified.
19253
+ */
19254
+ verified_at: string | null;
19255
+ }[];
19154
19256
  /** @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
19257
  admins: string[];
19156
19258
  /** @description Object is related with this account */
@@ -19312,6 +19414,18 @@ export interface operations {
19312
19414
  description: string | null;
19313
19415
  /** @description Optional URL of the organization logo. */
19314
19416
  logo_url: string | null;
19417
+ /** @description Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized. */
19418
+ domains: {
19419
+ /** @example acme.com */
19420
+ domain: string;
19421
+ /** @description Put `faable-verification=<verification_token>` in a TXT record at `_faable-challenge.<domain>`, then call `POST /organization/{organization_id}/domain/{domain}/verify`. */
19422
+ verification_token: string;
19423
+ /**
19424
+ * Format: date-time
19425
+ * @description When the TXT record was found. `null` = not verified.
19426
+ */
19427
+ verified_at: string | null;
19428
+ }[];
19315
19429
  /** @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
19430
  admins: string[];
19317
19431
  /** @description Object is related with this account */
@@ -19454,6 +19568,18 @@ export interface operations {
19454
19568
  description: string | null;
19455
19569
  /** @description Optional URL of the organization logo. */
19456
19570
  logo_url: string | null;
19571
+ /** @description Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized. */
19572
+ domains: {
19573
+ /** @example acme.com */
19574
+ domain: string;
19575
+ /** @description Put `faable-verification=<verification_token>` in a TXT record at `_faable-challenge.<domain>`, then call `POST /organization/{organization_id}/domain/{domain}/verify`. */
19576
+ verification_token: string;
19577
+ /**
19578
+ * Format: date-time
19579
+ * @description When the TXT record was found. `null` = not verified.
19580
+ */
19581
+ verified_at: string | null;
19582
+ }[];
19457
19583
  /** @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
19584
  admins: string[];
19459
19585
  /** @description Object is related with this account */
@@ -19604,6 +19730,18 @@ export interface operations {
19604
19730
  description: string | null;
19605
19731
  /** @description Optional URL of the organization logo. */
19606
19732
  logo_url: string | null;
19733
+ /** @description Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized. */
19734
+ domains: {
19735
+ /** @example acme.com */
19736
+ domain: string;
19737
+ /** @description Put `faable-verification=<verification_token>` in a TXT record at `_faable-challenge.<domain>`, then call `POST /organization/{organization_id}/domain/{domain}/verify`. */
19738
+ verification_token: string;
19739
+ /**
19740
+ * Format: date-time
19741
+ * @description When the TXT record was found. `null` = not verified.
19742
+ */
19743
+ verified_at: string | null;
19744
+ }[];
19607
19745
  /** @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
19746
  admins: string[];
19609
19747
  /** @description Object is related with this account */
@@ -19745,6 +19883,18 @@ export interface operations {
19745
19883
  description: string | null;
19746
19884
  /** @description Optional URL of the organization logo. */
19747
19885
  logo_url: string | null;
19886
+ /** @description Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized. */
19887
+ domains: {
19888
+ /** @example acme.com */
19889
+ domain: string;
19890
+ /** @description Put `faable-verification=<verification_token>` in a TXT record at `_faable-challenge.<domain>`, then call `POST /organization/{organization_id}/domain/{domain}/verify`. */
19891
+ verification_token: string;
19892
+ /**
19893
+ * Format: date-time
19894
+ * @description When the TXT record was found. `null` = not verified.
19895
+ */
19896
+ verified_at: string | null;
19897
+ }[];
19748
19898
  /** @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
19899
  admins: string[];
19750
19900
  /** @description Object is related with this account */
@@ -19861,6 +20011,528 @@ export interface operations {
19861
20011
  };
19862
20012
  };
19863
20013
  };
20014
+ "organization/addDomain": {
20015
+ parameters: {
20016
+ query?: never;
20017
+ header?: never;
20018
+ path: {
20019
+ organization_id: string;
20020
+ };
20021
+ cookie?: never;
20022
+ };
20023
+ requestBody: {
20024
+ content: {
20025
+ "application/json": {
20026
+ /**
20027
+ * @description The email domain, as in `alice@<domain>`.
20028
+ * @example acme.com
20029
+ */
20030
+ domain: string;
20031
+ };
20032
+ };
20033
+ };
20034
+ responses: {
20035
+ /** @description Organization */
20036
+ 200: {
20037
+ headers: {
20038
+ [name: string]: unknown;
20039
+ };
20040
+ content: {
20041
+ "application/json": {
20042
+ /** @description Organization ID */
20043
+ id: string;
20044
+ /**
20045
+ * @description Human-readable name of the organization.
20046
+ * @example Acme Inc.
20047
+ */
20048
+ name: string;
20049
+ /**
20050
+ * @description URL-safe identifier derived from `name`. Unique within the tenant.
20051
+ * @example acme-inc
20052
+ */
20053
+ slug: string;
20054
+ /** @description Optional free-form description. */
20055
+ description: string | null;
20056
+ /** @description Optional URL of the organization logo. */
20057
+ logo_url: string | null;
20058
+ /** @description Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized. */
20059
+ domains: {
20060
+ /** @example acme.com */
20061
+ domain: string;
20062
+ /** @description Put `faable-verification=<verification_token>` in a TXT record at `_faable-challenge.<domain>`, then call `POST /organization/{organization_id}/domain/{domain}/verify`. */
20063
+ verification_token: string;
20064
+ /**
20065
+ * Format: date-time
20066
+ * @description When the TXT record was found. `null` = not verified.
20067
+ */
20068
+ verified_at: string | null;
20069
+ }[];
20070
+ /** @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
+ admins: string[];
20072
+ /** @description Object is related with this account */
20073
+ account: string;
20074
+ /**
20075
+ * @description OrganizationMetadata
20076
+ * @default {}
20077
+ */
20078
+ metadata: {
20079
+ [key: string]: unknown;
20080
+ };
20081
+ /** @description Organization creation date */
20082
+ createdAt: string;
20083
+ /** @description Organization updated date */
20084
+ updatedAt?: string;
20085
+ };
20086
+ };
20087
+ };
20088
+ /**
20089
+ * @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.
20090
+ *
20091
+ * `public_email_domain` — A public email provider (gmail.com, outlook.com…) cannot belong to an organization: anyone can have an address there.
20092
+ *
20093
+ * `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
20094
+ */
20095
+ 400: {
20096
+ headers: {
20097
+ [name: string]: unknown;
20098
+ };
20099
+ content: {
20100
+ "application/json": components["schemas"]["ErrorResponse"] & {
20101
+ /** @enum {string} */
20102
+ error_code?: "invalid_email_domain" | "public_email_domain" | "validation_error";
20103
+ };
20104
+ };
20105
+ };
20106
+ /** @description `unauthorized` — The request carries no valid credentials. */
20107
+ 401: {
20108
+ headers: {
20109
+ [name: string]: unknown;
20110
+ };
20111
+ content: {
20112
+ "application/json": components["schemas"]["ErrorResponse"] & {
20113
+ /** @enum {string} */
20114
+ error_code?: "unauthorized";
20115
+ };
20116
+ };
20117
+ };
20118
+ /**
20119
+ * @description `forbidden` — The credentials are valid but do not allow this operation.
20120
+ *
20121
+ * `insufficient_scope` — The token lacks a scope this operation requires. `message` names it.
20122
+ *
20123
+ * `user_suspended` — The user is suspended and cannot sign in or be modified.
20124
+ */
20125
+ 403: {
20126
+ headers: {
20127
+ [name: string]: unknown;
20128
+ };
20129
+ content: {
20130
+ "application/json": components["schemas"]["ErrorResponse"] & {
20131
+ /** @enum {string} */
20132
+ error_code?: "forbidden" | "insufficient_scope" | "user_suspended";
20133
+ };
20134
+ };
20135
+ };
20136
+ /**
20137
+ * @description `organization_not_found` — No organization with that id in this account.
20138
+ *
20139
+ * `account_not_found` — No Auth Account matches the request (domain, header or token).
20140
+ */
20141
+ 404: {
20142
+ headers: {
20143
+ [name: string]: unknown;
20144
+ };
20145
+ content: {
20146
+ "application/json": components["schemas"]["ErrorResponse"] & {
20147
+ /** @enum {string} */
20148
+ error_code?: "organization_not_found" | "account_not_found";
20149
+ };
20150
+ };
20151
+ };
20152
+ /** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
20153
+ 429: {
20154
+ headers: {
20155
+ [name: string]: unknown;
20156
+ };
20157
+ content: {
20158
+ "application/json": components["schemas"]["ErrorResponse"] & {
20159
+ /** @enum {string} */
20160
+ error_code?: "too_many_requests";
20161
+ };
20162
+ };
20163
+ };
20164
+ /** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
20165
+ 500: {
20166
+ headers: {
20167
+ [name: string]: unknown;
20168
+ };
20169
+ content: {
20170
+ "application/json": components["schemas"]["ErrorResponse"] & {
20171
+ /** @enum {string} */
20172
+ error_code?: "internal_error";
20173
+ };
20174
+ };
20175
+ };
20176
+ };
20177
+ };
20178
+ "organization/verifyDomain": {
20179
+ parameters: {
20180
+ query?: never;
20181
+ header?: never;
20182
+ path: {
20183
+ organization_id: string;
20184
+ domain: string;
20185
+ };
20186
+ cookie?: never;
20187
+ };
20188
+ requestBody?: never;
20189
+ responses: {
20190
+ /** @description Default Response */
20191
+ 200: {
20192
+ headers: {
20193
+ [name: string]: unknown;
20194
+ };
20195
+ content: {
20196
+ "application/json": {
20197
+ /** @description Organization */
20198
+ organization: {
20199
+ /** @description Organization ID */
20200
+ id: string;
20201
+ /**
20202
+ * @description Human-readable name of the organization.
20203
+ * @example Acme Inc.
20204
+ */
20205
+ name: string;
20206
+ /**
20207
+ * @description URL-safe identifier derived from `name`. Unique within the tenant.
20208
+ * @example acme-inc
20209
+ */
20210
+ slug: string;
20211
+ /** @description Optional free-form description. */
20212
+ description: string | null;
20213
+ /** @description Optional URL of the organization logo. */
20214
+ logo_url: string | null;
20215
+ /** @description Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized. */
20216
+ domains: {
20217
+ /** @example acme.com */
20218
+ domain: string;
20219
+ /** @description Put `faable-verification=<verification_token>` in a TXT record at `_faable-challenge.<domain>`, then call `POST /organization/{organization_id}/domain/{domain}/verify`. */
20220
+ verification_token: string;
20221
+ /**
20222
+ * Format: date-time
20223
+ * @description When the TXT record was found. `null` = not verified.
20224
+ */
20225
+ verified_at: string | null;
20226
+ }[];
20227
+ /** @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
+ admins: string[];
20229
+ /** @description Object is related with this account */
20230
+ account: string;
20231
+ /**
20232
+ * @description OrganizationMetadata
20233
+ * @default {}
20234
+ */
20235
+ metadata: {
20236
+ [key: string]: unknown;
20237
+ };
20238
+ /** @description Organization creation date */
20239
+ createdAt: string;
20240
+ /** @description Organization updated date */
20241
+ updatedAt?: string;
20242
+ };
20243
+ /** @description `null` when the domain was already verified. */
20244
+ record: {
20245
+ /** @enum {string} */
20246
+ type: "TXT";
20247
+ host: string;
20248
+ expected: string;
20249
+ observed: string[];
20250
+ ok: boolean;
20251
+ } | null;
20252
+ };
20253
+ };
20254
+ };
20255
+ /**
20256
+ * @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.
20257
+ *
20258
+ * `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.
20259
+ *
20260
+ * `public_email_domain` — A public email provider (gmail.com, outlook.com…) cannot belong to an organization: anyone can have an address there.
20261
+ *
20262
+ * `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
20263
+ */
20264
+ 400: {
20265
+ headers: {
20266
+ [name: string]: unknown;
20267
+ };
20268
+ content: {
20269
+ "application/json": components["schemas"]["ErrorResponse"] & {
20270
+ /** @enum {string} */
20271
+ error_code?: "organization_domain_unverified" | "invalid_email_domain" | "public_email_domain" | "validation_error";
20272
+ };
20273
+ };
20274
+ };
20275
+ /** @description `unauthorized` — The request carries no valid credentials. */
20276
+ 401: {
20277
+ headers: {
20278
+ [name: string]: unknown;
20279
+ };
20280
+ content: {
20281
+ "application/json": components["schemas"]["ErrorResponse"] & {
20282
+ /** @enum {string} */
20283
+ error_code?: "unauthorized";
20284
+ };
20285
+ };
20286
+ };
20287
+ /** @description `plan_required` — The setting requires a higher plan. `message` says which. */
20288
+ 402: {
20289
+ headers: {
20290
+ [name: string]: unknown;
20291
+ };
20292
+ content: {
20293
+ "application/json": components["schemas"]["ErrorResponse"] & {
20294
+ /** @enum {string} */
20295
+ error_code?: "plan_required";
20296
+ };
20297
+ };
20298
+ };
20299
+ /**
20300
+ * @description `forbidden` — The credentials are valid but do not allow this operation.
20301
+ *
20302
+ * `insufficient_scope` — The token lacks a scope this operation requires. `message` names it.
20303
+ *
20304
+ * `user_suspended` — The user is suspended and cannot sign in or be modified.
20305
+ */
20306
+ 403: {
20307
+ headers: {
20308
+ [name: string]: unknown;
20309
+ };
20310
+ content: {
20311
+ "application/json": components["schemas"]["ErrorResponse"] & {
20312
+ /** @enum {string} */
20313
+ error_code?: "forbidden" | "insufficient_scope" | "user_suspended";
20314
+ };
20315
+ };
20316
+ };
20317
+ /**
20318
+ * @description `organization_not_found` — No organization with that id in this account.
20319
+ *
20320
+ * `organization_domain_not_found` — The organization has no such domain.
20321
+ *
20322
+ * `account_not_found` — No Auth Account matches the request (domain, header or token).
20323
+ */
20324
+ 404: {
20325
+ headers: {
20326
+ [name: string]: unknown;
20327
+ };
20328
+ content: {
20329
+ "application/json": components["schemas"]["ErrorResponse"] & {
20330
+ /** @enum {string} */
20331
+ error_code?: "organization_not_found" | "organization_domain_not_found" | "account_not_found";
20332
+ };
20333
+ };
20334
+ };
20335
+ /** @description `organization_domain_taken` — Another organization of this tenant already verified this domain. A domain belongs to one organization. */
20336
+ 409: {
20337
+ headers: {
20338
+ [name: string]: unknown;
20339
+ };
20340
+ content: {
20341
+ "application/json": components["schemas"]["ErrorResponse"] & {
20342
+ /** @enum {string} */
20343
+ error_code?: "organization_domain_taken";
20344
+ };
20345
+ };
20346
+ };
20347
+ /** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
20348
+ 429: {
20349
+ headers: {
20350
+ [name: string]: unknown;
20351
+ };
20352
+ content: {
20353
+ "application/json": components["schemas"]["ErrorResponse"] & {
20354
+ /** @enum {string} */
20355
+ error_code?: "too_many_requests";
20356
+ };
20357
+ };
20358
+ };
20359
+ /** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
20360
+ 500: {
20361
+ headers: {
20362
+ [name: string]: unknown;
20363
+ };
20364
+ content: {
20365
+ "application/json": components["schemas"]["ErrorResponse"] & {
20366
+ /** @enum {string} */
20367
+ error_code?: "internal_error";
20368
+ };
20369
+ };
20370
+ };
20371
+ /** @description `plan_unavailable` — The plan could not be checked right now, and this setting is only for paid plans. Try again in a minute. */
20372
+ 503: {
20373
+ headers: {
20374
+ [name: string]: unknown;
20375
+ };
20376
+ content: {
20377
+ "application/json": components["schemas"]["ErrorResponse"] & {
20378
+ /** @enum {string} */
20379
+ error_code?: "plan_unavailable";
20380
+ };
20381
+ };
20382
+ };
20383
+ };
20384
+ };
20385
+ "organization/removeDomain": {
20386
+ parameters: {
20387
+ query?: never;
20388
+ header?: never;
20389
+ path: {
20390
+ organization_id: string;
20391
+ domain: string;
20392
+ };
20393
+ cookie?: never;
20394
+ };
20395
+ requestBody?: never;
20396
+ responses: {
20397
+ /** @description Organization */
20398
+ 200: {
20399
+ headers: {
20400
+ [name: string]: unknown;
20401
+ };
20402
+ content: {
20403
+ "application/json": {
20404
+ /** @description Organization ID */
20405
+ id: string;
20406
+ /**
20407
+ * @description Human-readable name of the organization.
20408
+ * @example Acme Inc.
20409
+ */
20410
+ name: string;
20411
+ /**
20412
+ * @description URL-safe identifier derived from `name`. Unique within the tenant.
20413
+ * @example acme-inc
20414
+ */
20415
+ slug: string;
20416
+ /** @description Optional free-form description. */
20417
+ description: string | null;
20418
+ /** @description Optional URL of the organization logo. */
20419
+ logo_url: string | null;
20420
+ /** @description Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized. */
20421
+ domains: {
20422
+ /** @example acme.com */
20423
+ domain: string;
20424
+ /** @description Put `faable-verification=<verification_token>` in a TXT record at `_faable-challenge.<domain>`, then call `POST /organization/{organization_id}/domain/{domain}/verify`. */
20425
+ verification_token: string;
20426
+ /**
20427
+ * Format: date-time
20428
+ * @description When the TXT record was found. `null` = not verified.
20429
+ */
20430
+ verified_at: string | null;
20431
+ }[];
20432
+ /** @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
+ admins: string[];
20434
+ /** @description Object is related with this account */
20435
+ account: string;
20436
+ /**
20437
+ * @description OrganizationMetadata
20438
+ * @default {}
20439
+ */
20440
+ metadata: {
20441
+ [key: string]: unknown;
20442
+ };
20443
+ /** @description Organization creation date */
20444
+ createdAt: string;
20445
+ /** @description Organization updated date */
20446
+ updatedAt?: string;
20447
+ };
20448
+ };
20449
+ };
20450
+ /** @description `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field. */
20451
+ 400: {
20452
+ headers: {
20453
+ [name: string]: unknown;
20454
+ };
20455
+ content: {
20456
+ "application/json": components["schemas"]["ErrorResponse"] & {
20457
+ /** @enum {string} */
20458
+ error_code?: "validation_error";
20459
+ };
20460
+ };
20461
+ };
20462
+ /** @description `unauthorized` — The request carries no valid credentials. */
20463
+ 401: {
20464
+ headers: {
20465
+ [name: string]: unknown;
20466
+ };
20467
+ content: {
20468
+ "application/json": components["schemas"]["ErrorResponse"] & {
20469
+ /** @enum {string} */
20470
+ error_code?: "unauthorized";
20471
+ };
20472
+ };
20473
+ };
20474
+ /**
20475
+ * @description `forbidden` — The credentials are valid but do not allow this operation.
20476
+ *
20477
+ * `insufficient_scope` — The token lacks a scope this operation requires. `message` names it.
20478
+ *
20479
+ * `user_suspended` — The user is suspended and cannot sign in or be modified.
20480
+ */
20481
+ 403: {
20482
+ headers: {
20483
+ [name: string]: unknown;
20484
+ };
20485
+ content: {
20486
+ "application/json": components["schemas"]["ErrorResponse"] & {
20487
+ /** @enum {string} */
20488
+ error_code?: "forbidden" | "insufficient_scope" | "user_suspended";
20489
+ };
20490
+ };
20491
+ };
20492
+ /**
20493
+ * @description `organization_not_found` — No organization with that id in this account.
20494
+ *
20495
+ * `organization_domain_not_found` — The organization has no such domain.
20496
+ *
20497
+ * `account_not_found` — No Auth Account matches the request (domain, header or token).
20498
+ */
20499
+ 404: {
20500
+ headers: {
20501
+ [name: string]: unknown;
20502
+ };
20503
+ content: {
20504
+ "application/json": components["schemas"]["ErrorResponse"] & {
20505
+ /** @enum {string} */
20506
+ error_code?: "organization_not_found" | "organization_domain_not_found" | "account_not_found";
20507
+ };
20508
+ };
20509
+ };
20510
+ /** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
20511
+ 429: {
20512
+ headers: {
20513
+ [name: string]: unknown;
20514
+ };
20515
+ content: {
20516
+ "application/json": components["schemas"]["ErrorResponse"] & {
20517
+ /** @enum {string} */
20518
+ error_code?: "too_many_requests";
20519
+ };
20520
+ };
20521
+ };
20522
+ /** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
20523
+ 500: {
20524
+ headers: {
20525
+ [name: string]: unknown;
20526
+ };
20527
+ content: {
20528
+ "application/json": components["schemas"]["ErrorResponse"] & {
20529
+ /** @enum {string} */
20530
+ error_code?: "internal_error";
20531
+ };
20532
+ };
20533
+ };
20534
+ };
20535
+ };
19864
20536
  "teammember/list": {
19865
20537
  parameters: {
19866
20538
  query?: {