@faable/auth-sdk 2.7.81 → 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.
- package/dist/FaableAuthApi.d.ts +7 -0
- package/dist/api/api-types.d.ts +6 -0
- package/dist/api/generated-client.d.ts +488 -3
- package/dist/api/generated-client.js +221 -0
- package/dist/api/types.d.ts +2158 -43
- package/dist/version.js +2 -2
- package/package.json +1 -1
- package/spec/openapi.json +4085 -438
package/dist/api/types.d.ts
CHANGED
|
@@ -1196,6 +1196,178 @@ export interface paths {
|
|
|
1196
1196
|
patch?: never;
|
|
1197
1197
|
trace?: never;
|
|
1198
1198
|
};
|
|
1199
|
+
"/team/{team_id}/organization": {
|
|
1200
|
+
parameters: {
|
|
1201
|
+
query?: never;
|
|
1202
|
+
header?: never;
|
|
1203
|
+
path?: never;
|
|
1204
|
+
cookie?: never;
|
|
1205
|
+
};
|
|
1206
|
+
get?: never;
|
|
1207
|
+
/**
|
|
1208
|
+
* Put a Team in an Organization, or take it out
|
|
1209
|
+
* @description Sets the Organization the Team belongs to (`null` = none). A team is in at most one organization; setting another one moves it. Belonging to an organization grants nobody access to the team. Emits `team.updated`.
|
|
1210
|
+
*/
|
|
1211
|
+
put: operations["team/setOrganization"];
|
|
1212
|
+
post?: never;
|
|
1213
|
+
delete?: never;
|
|
1214
|
+
options?: never;
|
|
1215
|
+
head?: never;
|
|
1216
|
+
patch?: never;
|
|
1217
|
+
trace?: never;
|
|
1218
|
+
};
|
|
1219
|
+
"/organization": {
|
|
1220
|
+
parameters: {
|
|
1221
|
+
query?: never;
|
|
1222
|
+
header?: never;
|
|
1223
|
+
path?: never;
|
|
1224
|
+
cookie?: never;
|
|
1225
|
+
};
|
|
1226
|
+
/**
|
|
1227
|
+
* List Organizations
|
|
1228
|
+
* @description List Organizations
|
|
1229
|
+
*/
|
|
1230
|
+
get: operations["organization/list"];
|
|
1231
|
+
put?: never;
|
|
1232
|
+
/**
|
|
1233
|
+
* Create Organization
|
|
1234
|
+
* @description Create Organization
|
|
1235
|
+
*/
|
|
1236
|
+
post: operations["organization/create"];
|
|
1237
|
+
delete?: never;
|
|
1238
|
+
options?: never;
|
|
1239
|
+
head?: never;
|
|
1240
|
+
patch?: never;
|
|
1241
|
+
trace?: never;
|
|
1242
|
+
};
|
|
1243
|
+
"/organization/{organization_id}": {
|
|
1244
|
+
parameters: {
|
|
1245
|
+
query?: never;
|
|
1246
|
+
header?: never;
|
|
1247
|
+
path?: never;
|
|
1248
|
+
cookie?: never;
|
|
1249
|
+
};
|
|
1250
|
+
/**
|
|
1251
|
+
* Get Organization
|
|
1252
|
+
* @description Get Organization
|
|
1253
|
+
*/
|
|
1254
|
+
get: operations["organization/get"];
|
|
1255
|
+
put?: never;
|
|
1256
|
+
/**
|
|
1257
|
+
* Update Organization
|
|
1258
|
+
* @description Update Organization
|
|
1259
|
+
*/
|
|
1260
|
+
post: operations["organization/update"];
|
|
1261
|
+
/**
|
|
1262
|
+
* Delete Organization
|
|
1263
|
+
* @description Delete Organization
|
|
1264
|
+
*/
|
|
1265
|
+
delete: operations["organization/delete"];
|
|
1266
|
+
options?: never;
|
|
1267
|
+
head?: never;
|
|
1268
|
+
patch?: never;
|
|
1269
|
+
trace?: never;
|
|
1270
|
+
};
|
|
1271
|
+
"/organization/{organization_id}/admin": {
|
|
1272
|
+
parameters: {
|
|
1273
|
+
query?: never;
|
|
1274
|
+
header?: never;
|
|
1275
|
+
path?: never;
|
|
1276
|
+
cookie?: never;
|
|
1277
|
+
};
|
|
1278
|
+
get?: never;
|
|
1279
|
+
put?: never;
|
|
1280
|
+
/**
|
|
1281
|
+
* Add an admin to an Organization
|
|
1282
|
+
* @description Makes a user of this tenant an admin of the Organization. Idempotent. Being an admin does not grant access to any team of the organization. Emits `organization.updated`.
|
|
1283
|
+
*/
|
|
1284
|
+
post: operations["organization/addAdmin"];
|
|
1285
|
+
delete?: never;
|
|
1286
|
+
options?: never;
|
|
1287
|
+
head?: never;
|
|
1288
|
+
patch?: never;
|
|
1289
|
+
trace?: never;
|
|
1290
|
+
};
|
|
1291
|
+
"/organization/{organization_id}/admin/{user_id}": {
|
|
1292
|
+
parameters: {
|
|
1293
|
+
query?: never;
|
|
1294
|
+
header?: never;
|
|
1295
|
+
path?: never;
|
|
1296
|
+
cookie?: never;
|
|
1297
|
+
};
|
|
1298
|
+
get?: never;
|
|
1299
|
+
put?: never;
|
|
1300
|
+
post?: never;
|
|
1301
|
+
/**
|
|
1302
|
+
* Remove an admin from an Organization
|
|
1303
|
+
* @description Removes the user from the admins of the Organization (the user is not deleted). An organization keeps at least one admin: removing the last one is `last_organization_admin`. Emits `organization.updated`.
|
|
1304
|
+
*/
|
|
1305
|
+
delete: operations["organization/removeAdmin"];
|
|
1306
|
+
options?: never;
|
|
1307
|
+
head?: never;
|
|
1308
|
+
patch?: never;
|
|
1309
|
+
trace?: never;
|
|
1310
|
+
};
|
|
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
|
+
};
|
|
1199
1371
|
"/teammember": {
|
|
1200
1372
|
parameters: {
|
|
1201
1373
|
query?: never;
|
|
@@ -4437,7 +4609,7 @@ export interface paths {
|
|
|
4437
4609
|
put?: never;
|
|
4438
4610
|
/**
|
|
4439
4611
|
* OpenID Connect Dynamic Client Registration
|
|
4440
|
-
* @description Register a new OAuth/OIDC client dynamically (OIDC Dynamic Client Registration 1.0 / RFC 7591). The new client is bound to the Account resolved from the request context.
|
|
4612
|
+
* @description Register a new OAuth/OIDC client dynamically (OIDC Dynamic Client Registration 1.0 / RFC 7591). The new client is bound to the Account resolved from the request context. Only when the tenant has `dynamic_client_registration_enabled`; otherwise `registration_disabled` (403).
|
|
4441
4613
|
*/
|
|
4442
4614
|
post: operations["oauth/register"];
|
|
4443
4615
|
delete?: never;
|
|
@@ -4725,6 +4897,8 @@ export interface components {
|
|
|
4725
4897
|
webauthn_rp_id?: string | null;
|
|
4726
4898
|
/** @description When true, `/logout` asks the End-User to confirm before ending the session unless the request carries a verified `id_token_hint`. Off by default — a plain link to `/logout` is otherwise enough to sign anyone out (logout CSRF). */
|
|
4727
4899
|
logout_confirm_required?: boolean;
|
|
4900
|
+
/** @description When true, anyone can register a client with `POST /oidc/register` (OIDC Dynamic Client Registration / RFC 7591) and the discovery document advertises `registration_endpoint`. Off by default: an open registration lets anyone create a client with their own `redirect_uri`. */
|
|
4901
|
+
dynamic_client_registration_enabled?: boolean;
|
|
4728
4902
|
/** @description The one host this tenant's OIDC issuer and discovery document are always minted with, regardless of which host actually served the request — must be the account's own platform host or one of its verified custom domains. `/authorize` and `/logout` 302 here from any other host of the tenant. Unset (the default): every URL uses whatever host served the request, as before this field existed. Changing it can invalidate every WebAuthn passkey already enrolled unless `webauthn_rp_id` already covers the new host. */
|
|
4729
4903
|
canonical_host?: string | null;
|
|
4730
4904
|
/** @description AuthAccount creation date */
|
|
@@ -5603,6 +5777,8 @@ export interface components {
|
|
|
5603
5777
|
description: string | null;
|
|
5604
5778
|
/** @description Optional URL of an image used as the team avatar/logo. */
|
|
5605
5779
|
logo_url: string | null;
|
|
5780
|
+
/** @description Id of the Organization the team belongs to, or `null`. Changed only with `PUT /team/{team_id}/organization`. */
|
|
5781
|
+
organization?: string | null;
|
|
5606
5782
|
/** @description Object is related with this account */
|
|
5607
5783
|
account: string;
|
|
5608
5784
|
/**
|
|
@@ -5657,6 +5833,104 @@ export interface components {
|
|
|
5657
5833
|
TeamUpdateMetadata: {
|
|
5658
5834
|
[key: string]: unknown;
|
|
5659
5835
|
};
|
|
5836
|
+
/** @description Organization */
|
|
5837
|
+
Organization: {
|
|
5838
|
+
/** @description Organization ID */
|
|
5839
|
+
id: string;
|
|
5840
|
+
/**
|
|
5841
|
+
* @description Human-readable name of the organization.
|
|
5842
|
+
* @example Acme Inc.
|
|
5843
|
+
*/
|
|
5844
|
+
name: string;
|
|
5845
|
+
/**
|
|
5846
|
+
* @description URL-safe identifier derived from `name`. Unique within the tenant.
|
|
5847
|
+
* @example acme-inc
|
|
5848
|
+
*/
|
|
5849
|
+
slug: string;
|
|
5850
|
+
/** @description Optional free-form description. */
|
|
5851
|
+
description: string | null;
|
|
5852
|
+
/** @description Optional URL of the organization logo. */
|
|
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
|
+
}[];
|
|
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. */
|
|
5867
|
+
admins: string[];
|
|
5868
|
+
/** @description Object is related with this account */
|
|
5869
|
+
account: string;
|
|
5870
|
+
/**
|
|
5871
|
+
* @description OrganizationMetadata
|
|
5872
|
+
* @default {}
|
|
5873
|
+
*/
|
|
5874
|
+
metadata: {
|
|
5875
|
+
[key: string]: unknown;
|
|
5876
|
+
};
|
|
5877
|
+
/** @description Organization creation date */
|
|
5878
|
+
createdAt: string;
|
|
5879
|
+
/** @description Organization updated date */
|
|
5880
|
+
updatedAt?: string;
|
|
5881
|
+
};
|
|
5882
|
+
/**
|
|
5883
|
+
* @description OrganizationMetadata
|
|
5884
|
+
* @default {}
|
|
5885
|
+
*/
|
|
5886
|
+
OrganizationMetadata: {
|
|
5887
|
+
[key: string]: unknown;
|
|
5888
|
+
};
|
|
5889
|
+
/** @description OrganizationCreate */
|
|
5890
|
+
OrganizationCreate: {
|
|
5891
|
+
/**
|
|
5892
|
+
* @description Human-readable name of the organization.
|
|
5893
|
+
* @example Acme Inc.
|
|
5894
|
+
*/
|
|
5895
|
+
name: string;
|
|
5896
|
+
/** @description Optional free-form description. */
|
|
5897
|
+
description?: string;
|
|
5898
|
+
/**
|
|
5899
|
+
* Format: uri
|
|
5900
|
+
* @description Optional URL of the organization logo.
|
|
5901
|
+
*/
|
|
5902
|
+
logo_url?: string;
|
|
5903
|
+
/** @description Initial admins (user ids of this tenant). Can be empty and filled later with `POST /organization/{organization_id}/admin`. */
|
|
5904
|
+
admins?: string[];
|
|
5905
|
+
/** @description Add Metadata */
|
|
5906
|
+
metadata?: {
|
|
5907
|
+
[key: string]: unknown;
|
|
5908
|
+
};
|
|
5909
|
+
};
|
|
5910
|
+
/** @description Add Metadata */
|
|
5911
|
+
OrganizationMetadataCreate: {
|
|
5912
|
+
[key: string]: unknown;
|
|
5913
|
+
};
|
|
5914
|
+
/** @description Partial update for an Organization. `slug` is derived from `name` on creation and is not editable; admins change through `/organization/{organization_id}/admin`. */
|
|
5915
|
+
OrganizationUpdate: {
|
|
5916
|
+
/** @description New human-readable name. */
|
|
5917
|
+
name?: string;
|
|
5918
|
+
/** @description New free-form description. */
|
|
5919
|
+
description?: string;
|
|
5920
|
+
/**
|
|
5921
|
+
* Format: uri
|
|
5922
|
+
* @description New URL of the organization logo.
|
|
5923
|
+
*/
|
|
5924
|
+
logo_url?: string;
|
|
5925
|
+
/** @description Arbitrary key/value pairs. Replaces the previous metadata entirely. */
|
|
5926
|
+
metadata?: {
|
|
5927
|
+
[key: string]: unknown;
|
|
5928
|
+
};
|
|
5929
|
+
};
|
|
5930
|
+
/** @description Arbitrary key/value pairs. Replaces the previous metadata entirely. */
|
|
5931
|
+
OrganizationUpdateMetadata: {
|
|
5932
|
+
[key: string]: unknown;
|
|
5933
|
+
};
|
|
5660
5934
|
/** @description TeamMember */
|
|
5661
5935
|
TeamMember: {
|
|
5662
5936
|
/** @description TeamMember ID */
|
|
@@ -6101,8 +6375,11 @@ export interface components {
|
|
|
6101
6375
|
* - `team.invite.created`: An invitation to join a team was created.
|
|
6102
6376
|
* - `team.invite.revoked`: A pending team invitation was revoked.
|
|
6103
6377
|
* - `team.invite.accepted`: A team invitation was accepted.
|
|
6378
|
+
* - `organization.created`: An organization was created.
|
|
6379
|
+
* - `organization.updated`: An organization was updated (name, settings or admins).
|
|
6380
|
+
* - `organization.deleted`: An organization was deleted. Its teams are no longer in any organization; no `team.updated` is sent for them.
|
|
6104
6381
|
*
|
|
6105
|
-
* `team.*` payloads are notices, not state: they carry ids (`team_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
|
|
6382
|
+
* `team.*` and `organization.*` payloads are notices, not state: they carry ids (`team_id`, `organization_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
|
|
6106
6383
|
*/
|
|
6107
6384
|
events: string[];
|
|
6108
6385
|
/** @enum {string} */
|
|
@@ -6202,8 +6479,11 @@ export interface components {
|
|
|
6202
6479
|
* - `team.invite.created`: An invitation to join a team was created.
|
|
6203
6480
|
* - `team.invite.revoked`: A pending team invitation was revoked.
|
|
6204
6481
|
* - `team.invite.accepted`: A team invitation was accepted.
|
|
6482
|
+
* - `organization.created`: An organization was created.
|
|
6483
|
+
* - `organization.updated`: An organization was updated (name, settings or admins).
|
|
6484
|
+
* - `organization.deleted`: An organization was deleted. Its teams are no longer in any organization; no `team.updated` is sent for them.
|
|
6205
6485
|
*
|
|
6206
|
-
* `team.*` payloads are notices, not state: they carry ids (`team_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
|
|
6486
|
+
* `team.*` and `organization.*` payloads are notices, not state: they carry ids (`team_id`, `organization_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
|
|
6207
6487
|
*/
|
|
6208
6488
|
events: string[];
|
|
6209
6489
|
/** @enum {string} */
|
|
@@ -6297,8 +6577,11 @@ export interface components {
|
|
|
6297
6577
|
* - `team.invite.created`: An invitation to join a team was created.
|
|
6298
6578
|
* - `team.invite.revoked`: A pending team invitation was revoked.
|
|
6299
6579
|
* - `team.invite.accepted`: A team invitation was accepted.
|
|
6580
|
+
* - `organization.created`: An organization was created.
|
|
6581
|
+
* - `organization.updated`: An organization was updated (name, settings or admins).
|
|
6582
|
+
* - `organization.deleted`: An organization was deleted. Its teams are no longer in any organization; no `team.updated` is sent for them.
|
|
6300
6583
|
*
|
|
6301
|
-
* `team.*` payloads are notices, not state: they carry ids (`team_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
|
|
6584
|
+
* `team.*` and `organization.*` payloads are notices, not state: they carry ids (`team_id`, `organization_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
|
|
6302
6585
|
*/
|
|
6303
6586
|
events: string[];
|
|
6304
6587
|
/** @enum {string} */
|
|
@@ -6360,8 +6643,11 @@ export interface components {
|
|
|
6360
6643
|
* - `team.invite.created`: An invitation to join a team was created.
|
|
6361
6644
|
* - `team.invite.revoked`: A pending team invitation was revoked.
|
|
6362
6645
|
* - `team.invite.accepted`: A team invitation was accepted.
|
|
6646
|
+
* - `organization.created`: An organization was created.
|
|
6647
|
+
* - `organization.updated`: An organization was updated (name, settings or admins).
|
|
6648
|
+
* - `organization.deleted`: An organization was deleted. Its teams are no longer in any organization; no `team.updated` is sent for them.
|
|
6363
6649
|
*
|
|
6364
|
-
* `team.*` payloads are notices, not state: they carry ids (`team_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
|
|
6650
|
+
* `team.*` and `organization.*` payloads are notices, not state: they carry ids (`team_id`, `organization_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
|
|
6365
6651
|
*/
|
|
6366
6652
|
events: string[];
|
|
6367
6653
|
/** @enum {string} */
|
|
@@ -6427,8 +6713,11 @@ export interface components {
|
|
|
6427
6713
|
* - `team.invite.created`: An invitation to join a team was created.
|
|
6428
6714
|
* - `team.invite.revoked`: A pending team invitation was revoked.
|
|
6429
6715
|
* - `team.invite.accepted`: A team invitation was accepted.
|
|
6716
|
+
* - `organization.created`: An organization was created.
|
|
6717
|
+
* - `organization.updated`: An organization was updated (name, settings or admins).
|
|
6718
|
+
* - `organization.deleted`: An organization was deleted. Its teams are no longer in any organization; no `team.updated` is sent for them.
|
|
6430
6719
|
*
|
|
6431
|
-
* `team.*` payloads are notices, not state: they carry ids (`team_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
|
|
6720
|
+
* `team.*` and `organization.*` payloads are notices, not state: they carry ids (`team_id`, `organization_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
|
|
6432
6721
|
*/
|
|
6433
6722
|
events?: string[];
|
|
6434
6723
|
/** @enum {string} */
|
|
@@ -6827,6 +7116,7 @@ export interface components {
|
|
|
6827
7116
|
default_country_iso?: string | null;
|
|
6828
7117
|
webauthn_rp_id?: string | null;
|
|
6829
7118
|
logout_confirm_required?: boolean | null;
|
|
7119
|
+
dynamic_client_registration_enabled?: boolean | null;
|
|
6830
7120
|
canonical_host?: string | null;
|
|
6831
7121
|
login_flow?: string | null;
|
|
6832
7122
|
};
|
|
@@ -7037,6 +7327,17 @@ export interface components {
|
|
|
7037
7327
|
* - `invite_used` (400): The invite was already accepted.
|
|
7038
7328
|
* - `already_member` (400): The user is already a member of the team.
|
|
7039
7329
|
* - `not_a_member` (404): The user is not a member of the team.
|
|
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.
|
|
7337
|
+
* - `organization_not_found` (404): No organization with that id in this account.
|
|
7338
|
+
* - `invalid_user` (400): The user does not exist in this account.
|
|
7339
|
+
* - `not_an_organization_admin` (404): The user is not an admin of the organization.
|
|
7340
|
+
* - `last_organization_admin` (409): An organization keeps at least one admin. Add another admin before removing this one.
|
|
7040
7341
|
* - `team_id_unavailable` (409): The team id cannot be used in this tenant. Pick another id or let the API generate one.
|
|
7041
7342
|
* - `use_team_member_route` (400): This generic route cannot create memberships. Use `POST /team/{team_id}/member` for team members or `POST /role/{role_id}/users` for role grants.
|
|
7042
7343
|
* - `role_not_found` (404): No role with that id in this account.
|
|
@@ -7050,7 +7351,7 @@ export interface components {
|
|
|
7050
7351
|
* - `delivery_in_progress` (409): The delivery is being attempted right now; retry the redeliver in a minute.
|
|
7051
7352
|
* @enum {string}
|
|
7052
7353
|
*/
|
|
7053
|
-
ErrorCode: "bad_request" | "validation_error" | "unauthorized" | "payment_required" | "forbidden" | "not_found" | "method_not_allowed" | "conflict" | "payload_too_large" | "unsupported_media_type" | "unprocessable_entity" | "too_many_requests" | "internal_error" | "already_exists" | "invalid_id" | "account_not_found" | "invalid_query" | "search_not_supported" | "invalid_expand" | "access_denied" | "insufficient_scope" | "team_required" | "account_limit_reached" | "invalid_project_id" | "account_transfer_refused" | "email_sender_domain_not_allowed" | "plan_required" | "invalid_canonical_host" | "canonical_host_breaks_passkeys" | "not_logged_in" | "session_already_revoked" | "invalid_token" | "not_owner" | "user_suspended" | "invalid_credentials" | "login_denied" | "signup_denied" | "client_credentials_denied" | "m2m_quota_exceeded" | "signup_disabled" | "email_taken" | "username_taken" | "invalid_username" | "invalid_email" | "invalid_name" | "same_email" | "user_has_no_email" | "password_too_weak" | "invalid_password_hash" | "weak_password_hash" | "invalid_code" | "invalid_phone" | "phone_changed" | "phone_already_verified" | "sms_unavailable" | "sms_failed" | "invalid_state" | "state_mismatch" | "invalid_ticket" | "ticket_used" | "ticket_expired" | "ticket_not_found" | "credential_not_found" | "invalid_link" | "expired_link" | "invalid_otp" | "invalid_client" | "client_not_found" | "client_mismatch" | "invalid_client_metadata" | "invalid_connection" | "no_database_connection" | "connection_required" | "connection_misconfigured" | "passwordless_unavailable" | "ambiguous_connection" | "invalid_redirect_uri" | "origin_not_allowed" | "audience_not_found" | "system_resource" | "invalid_request" | "invalid_device_code" | "provider_error" | "identity_already_linked" | "identity_link_denied" | "identity_conflict" | "identity_orphaned" | "no_provider_token" | "no_refresh_token" | "action_unavailable" | "login_flow_misconfigured" | "mfa_required" | "step_up_required" | "interaction_required" | "passkey_login_disabled" | "mfa_pending" | "mfa_invalid_code" | "mfa_invalid_recovery_code" | "too_many_attempts" | "too_many_login_attempts" | "totp_not_allowed" | "no_usable_factor" | "factor_not_found" | "factor_already_confirmed" | "invalid_factor" | "session_missing" | "passkey_verification_failed" | "no_passkey_enrolled" | "malformed_credential" | "unknown_passkey" | "invalid_passkey" | "invalid_invite_url" | "invite_email_mismatch" | "invite_email_unverified" | "invite_not_found" | "invite_used" | "already_member" | "not_a_member" | "team_id_unavailable" | "use_team_member_route" | "role_not_found" | "invalid_role" | "flow_not_found" | "revision_not_found" | "invalid_webhook_event" | "invalid_webhook_url" | "not_a_webhook" | "delivery_not_found" | "delivery_in_progress";
|
|
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";
|
|
7054
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. */
|
|
7055
7356
|
ErrorResponse: {
|
|
7056
7357
|
/** @description The HTTP status, repeated. */
|
|
@@ -7210,6 +7511,8 @@ export interface operations {
|
|
|
7210
7511
|
webauthn_rp_id?: string | null;
|
|
7211
7512
|
/** @description When true, `/logout` asks the End-User to confirm before ending the session unless the request carries a verified `id_token_hint`. Off by default — a plain link to `/logout` is otherwise enough to sign anyone out (logout CSRF). */
|
|
7212
7513
|
logout_confirm_required?: boolean;
|
|
7514
|
+
/** @description When true, anyone can register a client with `POST /oidc/register` (OIDC Dynamic Client Registration / RFC 7591) and the discovery document advertises `registration_endpoint`. Off by default: an open registration lets anyone create a client with their own `redirect_uri`. */
|
|
7515
|
+
dynamic_client_registration_enabled?: boolean;
|
|
7213
7516
|
/** @description The one host this tenant's OIDC issuer and discovery document are always minted with, regardless of which host actually served the request — must be the account's own platform host or one of its verified custom domains. `/authorize` and `/logout` 302 here from any other host of the tenant. Unset (the default): every URL uses whatever host served the request, as before this field existed. Changing it can invalidate every WebAuthn passkey already enrolled unless `webauthn_rp_id` already covers the new host. */
|
|
7214
7517
|
canonical_host?: string | null;
|
|
7215
7518
|
/** @description AuthAccount creation date */
|
|
@@ -7565,6 +7868,8 @@ export interface operations {
|
|
|
7565
7868
|
webauthn_rp_id?: string | null;
|
|
7566
7869
|
/** @description When true, `/logout` asks the End-User to confirm before ending the session unless the request carries a verified `id_token_hint`. Off by default — a plain link to `/logout` is otherwise enough to sign anyone out (logout CSRF). */
|
|
7567
7870
|
logout_confirm_required?: boolean;
|
|
7871
|
+
/** @description When true, anyone can register a client with `POST /oidc/register` (OIDC Dynamic Client Registration / RFC 7591) and the discovery document advertises `registration_endpoint`. Off by default: an open registration lets anyone create a client with their own `redirect_uri`. */
|
|
7872
|
+
dynamic_client_registration_enabled?: boolean;
|
|
7568
7873
|
/** @description The one host this tenant's OIDC issuer and discovery document are always minted with, regardless of which host actually served the request — must be the account's own platform host or one of its verified custom domains. `/authorize` and `/logout` 302 here from any other host of the tenant. Unset (the default): every URL uses whatever host served the request, as before this field existed. Changing it can invalidate every WebAuthn passkey already enrolled unless `webauthn_rp_id` already covers the new host. */
|
|
7569
7874
|
canonical_host?: string | null;
|
|
7570
7875
|
/** @description AuthAccount creation date */
|
|
@@ -7808,6 +8113,8 @@ export interface operations {
|
|
|
7808
8113
|
webauthn_rp_id?: string | null;
|
|
7809
8114
|
/** @description When true, `/logout` asks the End-User to confirm before ending the session unless the request carries a verified `id_token_hint`. Off by default — a plain link to `/logout` is otherwise enough to sign anyone out (logout CSRF). */
|
|
7810
8115
|
logout_confirm_required?: boolean;
|
|
8116
|
+
/** @description When true, anyone can register a client with `POST /oidc/register` (OIDC Dynamic Client Registration / RFC 7591) and the discovery document advertises `registration_endpoint`. Off by default: an open registration lets anyone create a client with their own `redirect_uri`. */
|
|
8117
|
+
dynamic_client_registration_enabled?: boolean;
|
|
7811
8118
|
/** @description The one host this tenant's OIDC issuer and discovery document are always minted with, regardless of which host actually served the request — must be the account's own platform host or one of its verified custom domains. `/authorize` and `/logout` 302 here from any other host of the tenant. Unset (the default): every URL uses whatever host served the request, as before this field existed. Changing it can invalidate every WebAuthn passkey already enrolled unless `webauthn_rp_id` already covers the new host. */
|
|
7812
8119
|
canonical_host?: string | null;
|
|
7813
8120
|
/** @description AuthAccount creation date */
|
|
@@ -8000,6 +8307,7 @@ export interface operations {
|
|
|
8000
8307
|
default_country_iso?: string | null;
|
|
8001
8308
|
webauthn_rp_id?: string | null;
|
|
8002
8309
|
logout_confirm_required?: boolean | null;
|
|
8310
|
+
dynamic_client_registration_enabled?: boolean | null;
|
|
8003
8311
|
canonical_host?: string | null;
|
|
8004
8312
|
login_flow?: string | null;
|
|
8005
8313
|
};
|
|
@@ -8126,6 +8434,8 @@ export interface operations {
|
|
|
8126
8434
|
webauthn_rp_id?: string | null;
|
|
8127
8435
|
/** @description When true, `/logout` asks the End-User to confirm before ending the session unless the request carries a verified `id_token_hint`. Off by default — a plain link to `/logout` is otherwise enough to sign anyone out (logout CSRF). */
|
|
8128
8436
|
logout_confirm_required?: boolean;
|
|
8437
|
+
/** @description When true, anyone can register a client with `POST /oidc/register` (OIDC Dynamic Client Registration / RFC 7591) and the discovery document advertises `registration_endpoint`. Off by default: an open registration lets anyone create a client with their own `redirect_uri`. */
|
|
8438
|
+
dynamic_client_registration_enabled?: boolean;
|
|
8129
8439
|
/** @description The one host this tenant's OIDC issuer and discovery document are always minted with, regardless of which host actually served the request — must be the account's own platform host or one of its verified custom domains. `/authorize` and `/logout` 302 here from any other host of the tenant. Unset (the default): every URL uses whatever host served the request, as before this field existed. Changing it can invalidate every WebAuthn passkey already enrolled unless `webauthn_rp_id` already covers the new host. */
|
|
8130
8440
|
canonical_host?: string | null;
|
|
8131
8441
|
/** @description AuthAccount creation date */
|
|
@@ -9388,6 +9698,8 @@ export interface operations {
|
|
|
9388
9698
|
webauthn_rp_id?: string | null;
|
|
9389
9699
|
/** @description When true, `/logout` asks the End-User to confirm before ending the session unless the request carries a verified `id_token_hint`. Off by default — a plain link to `/logout` is otherwise enough to sign anyone out (logout CSRF). */
|
|
9390
9700
|
logout_confirm_required?: boolean;
|
|
9701
|
+
/** @description When true, anyone can register a client with `POST /oidc/register` (OIDC Dynamic Client Registration / RFC 7591) and the discovery document advertises `registration_endpoint`. Off by default: an open registration lets anyone create a client with their own `redirect_uri`. */
|
|
9702
|
+
dynamic_client_registration_enabled?: boolean;
|
|
9391
9703
|
/** @description The one host this tenant's OIDC issuer and discovery document are always minted with, regardless of which host actually served the request — must be the account's own platform host or one of its verified custom domains. `/authorize` and `/logout` 302 here from any other host of the tenant. Unset (the default): every URL uses whatever host served the request, as before this field existed. Changing it can invalidate every WebAuthn passkey already enrolled unless `webauthn_rp_id` already covers the new host. */
|
|
9392
9704
|
canonical_host?: string | null;
|
|
9393
9705
|
/** @description AuthAccount creation date */
|
|
@@ -17708,6 +18020,8 @@ export interface operations {
|
|
|
17708
18020
|
description: string | null;
|
|
17709
18021
|
/** @description Optional URL of an image used as the team avatar/logo. */
|
|
17710
18022
|
logo_url: string | null;
|
|
18023
|
+
/** @description Id of the Organization the team belongs to, or `null`. Changed only with `PUT /team/{team_id}/organization`. */
|
|
18024
|
+
organization?: string | null;
|
|
17711
18025
|
/** @description Object is related with this account */
|
|
17712
18026
|
account: string;
|
|
17713
18027
|
/**
|
|
@@ -17842,6 +18156,8 @@ export interface operations {
|
|
|
17842
18156
|
description: string | null;
|
|
17843
18157
|
/** @description Optional URL of an image used as the team avatar/logo. */
|
|
17844
18158
|
logo_url: string | null;
|
|
18159
|
+
/** @description Id of the Organization the team belongs to, or `null`. Changed only with `PUT /team/{team_id}/organization`. */
|
|
18160
|
+
organization?: string | null;
|
|
17845
18161
|
/** @description Object is related with this account */
|
|
17846
18162
|
account: string;
|
|
17847
18163
|
/**
|
|
@@ -18005,6 +18321,8 @@ export interface operations {
|
|
|
18005
18321
|
description: string | null;
|
|
18006
18322
|
/** @description Optional URL of an image used as the team avatar/logo. */
|
|
18007
18323
|
logo_url: string | null;
|
|
18324
|
+
/** @description Id of the Organization the team belongs to, or `null`. Changed only with `PUT /team/{team_id}/organization`. */
|
|
18325
|
+
organization?: string | null;
|
|
18008
18326
|
/** @description Object is related with this account */
|
|
18009
18327
|
account: string;
|
|
18010
18328
|
/**
|
|
@@ -18044,6 +18362,8 @@ export interface operations {
|
|
|
18044
18362
|
description: string | null;
|
|
18045
18363
|
/** @description Optional URL of an image used as the team avatar/logo. */
|
|
18046
18364
|
logo_url: string | null;
|
|
18365
|
+
/** @description Id of the Organization the team belongs to, or `null`. Changed only with `PUT /team/{team_id}/organization`. */
|
|
18366
|
+
organization?: string | null;
|
|
18047
18367
|
/** @description Object is related with this account */
|
|
18048
18368
|
account: string;
|
|
18049
18369
|
/**
|
|
@@ -18204,6 +18524,8 @@ export interface operations {
|
|
|
18204
18524
|
description: string | null;
|
|
18205
18525
|
/** @description Optional URL of an image used as the team avatar/logo. */
|
|
18206
18526
|
logo_url: string | null;
|
|
18527
|
+
/** @description Id of the Organization the team belongs to, or `null`. Changed only with `PUT /team/{team_id}/organization`. */
|
|
18528
|
+
organization?: string | null;
|
|
18207
18529
|
/** @description Object is related with this account */
|
|
18208
18530
|
account: string;
|
|
18209
18531
|
/**
|
|
@@ -18344,6 +18666,8 @@ export interface operations {
|
|
|
18344
18666
|
description: string | null;
|
|
18345
18667
|
/** @description Optional URL of an image used as the team avatar/logo. */
|
|
18346
18668
|
logo_url: string | null;
|
|
18669
|
+
/** @description Id of the Organization the team belongs to, or `null`. Changed only with `PUT /team/{team_id}/organization`. */
|
|
18670
|
+
organization?: string | null;
|
|
18347
18671
|
/** @description Object is related with this account */
|
|
18348
18672
|
account: string;
|
|
18349
18673
|
/**
|
|
@@ -18448,50 +18772,1811 @@ export interface operations {
|
|
|
18448
18772
|
};
|
|
18449
18773
|
};
|
|
18450
18774
|
};
|
|
18451
|
-
"
|
|
18775
|
+
"team/setOrganization": {
|
|
18452
18776
|
parameters: {
|
|
18453
|
-
query?:
|
|
18454
|
-
/** @description Number of items per page (max 200) */
|
|
18455
|
-
pageSize?: number;
|
|
18456
|
-
/** @description Cursor for next page */
|
|
18457
|
-
cursor?: string;
|
|
18458
|
-
/** @description Cursor returned by the previous page */
|
|
18459
|
-
next?: string;
|
|
18460
|
-
/** @description Exact match on `user`. Equivalent to `?query=user:<value>`. */
|
|
18461
|
-
user?: string;
|
|
18462
|
-
/** @description Exact match on `team`. Equivalent to `?query=team:<value>`. */
|
|
18463
|
-
team?: string;
|
|
18464
|
-
/** @description Filter using a FaableQL query */
|
|
18465
|
-
query?: string;
|
|
18466
|
-
/** @description Expand id-only fields in the response. Pass one path per entry (e.g. `?expand=user`). */
|
|
18467
|
-
expand?: ("user" | "team" | "roles")[];
|
|
18468
|
-
};
|
|
18777
|
+
query?: never;
|
|
18469
18778
|
header?: never;
|
|
18470
|
-
path
|
|
18779
|
+
path: {
|
|
18780
|
+
team_id: string;
|
|
18781
|
+
};
|
|
18471
18782
|
cookie?: never;
|
|
18472
18783
|
};
|
|
18473
|
-
requestBody
|
|
18784
|
+
requestBody: {
|
|
18785
|
+
content: {
|
|
18786
|
+
"application/json": {
|
|
18787
|
+
/** @description Id of an Organization of this tenant, or `null` to take the team out of its organization. */
|
|
18788
|
+
organization: string | null;
|
|
18789
|
+
};
|
|
18790
|
+
};
|
|
18791
|
+
};
|
|
18474
18792
|
responses: {
|
|
18475
|
-
/** @description
|
|
18793
|
+
/** @description Team */
|
|
18476
18794
|
200: {
|
|
18477
18795
|
headers: {
|
|
18478
18796
|
[name: string]: unknown;
|
|
18479
18797
|
};
|
|
18480
18798
|
content: {
|
|
18481
18799
|
"application/json": {
|
|
18482
|
-
|
|
18483
|
-
|
|
18800
|
+
/** @description Team ID */
|
|
18801
|
+
id: string;
|
|
18802
|
+
/**
|
|
18803
|
+
* @description Human-readable name of the team. Shown in the dashboard and in team-picker UI.
|
|
18804
|
+
* @example Acme Engineering
|
|
18805
|
+
*/
|
|
18806
|
+
name: string;
|
|
18807
|
+
/**
|
|
18808
|
+
* @description URL-safe identifier auto-derived from `name`. Unique within the tenant; used in routes that address a team by slug.
|
|
18809
|
+
* @example acme-engineering
|
|
18810
|
+
*/
|
|
18811
|
+
slug: string;
|
|
18812
|
+
/** @description Optional free-form description of the team. */
|
|
18813
|
+
description: string | null;
|
|
18814
|
+
/** @description Optional URL of an image used as the team avatar/logo. */
|
|
18815
|
+
logo_url: string | null;
|
|
18816
|
+
/** @description Id of the Organization the team belongs to, or `null`. Changed only with `PUT /team/{team_id}/organization`. */
|
|
18817
|
+
organization?: string | null;
|
|
18818
|
+
/** @description Object is related with this account */
|
|
18819
|
+
account: string;
|
|
18820
|
+
/**
|
|
18821
|
+
* @description TeamMetadata
|
|
18822
|
+
* @default {}
|
|
18823
|
+
*/
|
|
18824
|
+
metadata: {
|
|
18825
|
+
[key: string]: unknown;
|
|
18826
|
+
};
|
|
18827
|
+
/** @description Team creation date */
|
|
18828
|
+
createdAt: string;
|
|
18829
|
+
/** @description Team updated date */
|
|
18830
|
+
updatedAt?: string;
|
|
18484
18831
|
};
|
|
18485
18832
|
};
|
|
18486
18833
|
};
|
|
18487
|
-
/**
|
|
18488
|
-
|
|
18489
|
-
|
|
18490
|
-
|
|
18491
|
-
|
|
18492
|
-
|
|
18493
|
-
|
|
18494
|
-
|
|
18834
|
+
/** @description `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field. */
|
|
18835
|
+
400: {
|
|
18836
|
+
headers: {
|
|
18837
|
+
[name: string]: unknown;
|
|
18838
|
+
};
|
|
18839
|
+
content: {
|
|
18840
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
18841
|
+
/** @enum {string} */
|
|
18842
|
+
error_code?: "validation_error";
|
|
18843
|
+
};
|
|
18844
|
+
};
|
|
18845
|
+
};
|
|
18846
|
+
/** @description `unauthorized` — The request carries no valid credentials. */
|
|
18847
|
+
401: {
|
|
18848
|
+
headers: {
|
|
18849
|
+
[name: string]: unknown;
|
|
18850
|
+
};
|
|
18851
|
+
content: {
|
|
18852
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
18853
|
+
/** @enum {string} */
|
|
18854
|
+
error_code?: "unauthorized";
|
|
18855
|
+
};
|
|
18856
|
+
};
|
|
18857
|
+
};
|
|
18858
|
+
/**
|
|
18859
|
+
* @description `forbidden` — The credentials are valid but do not allow this operation.
|
|
18860
|
+
*
|
|
18861
|
+
* `insufficient_scope` — The token lacks a scope this operation requires. `message` names it.
|
|
18862
|
+
*
|
|
18863
|
+
* `user_suspended` — The user is suspended and cannot sign in or be modified.
|
|
18864
|
+
*/
|
|
18865
|
+
403: {
|
|
18866
|
+
headers: {
|
|
18867
|
+
[name: string]: unknown;
|
|
18868
|
+
};
|
|
18869
|
+
content: {
|
|
18870
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
18871
|
+
/** @enum {string} */
|
|
18872
|
+
error_code?: "forbidden" | "insufficient_scope" | "user_suspended";
|
|
18873
|
+
};
|
|
18874
|
+
};
|
|
18875
|
+
};
|
|
18876
|
+
/**
|
|
18877
|
+
* @description `not_found` — The resource does not exist in this account.
|
|
18878
|
+
*
|
|
18879
|
+
* `organization_not_found` — No organization with that id in this account.
|
|
18880
|
+
*
|
|
18881
|
+
* `account_not_found` — No Auth Account matches the request (domain, header or token).
|
|
18882
|
+
*/
|
|
18883
|
+
404: {
|
|
18884
|
+
headers: {
|
|
18885
|
+
[name: string]: unknown;
|
|
18886
|
+
};
|
|
18887
|
+
content: {
|
|
18888
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
18889
|
+
/** @enum {string} */
|
|
18890
|
+
error_code?: "not_found" | "organization_not_found" | "account_not_found";
|
|
18891
|
+
};
|
|
18892
|
+
};
|
|
18893
|
+
};
|
|
18894
|
+
/** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
|
|
18895
|
+
429: {
|
|
18896
|
+
headers: {
|
|
18897
|
+
[name: string]: unknown;
|
|
18898
|
+
};
|
|
18899
|
+
content: {
|
|
18900
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
18901
|
+
/** @enum {string} */
|
|
18902
|
+
error_code?: "too_many_requests";
|
|
18903
|
+
};
|
|
18904
|
+
};
|
|
18905
|
+
};
|
|
18906
|
+
/** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
|
|
18907
|
+
500: {
|
|
18908
|
+
headers: {
|
|
18909
|
+
[name: string]: unknown;
|
|
18910
|
+
};
|
|
18911
|
+
content: {
|
|
18912
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
18913
|
+
/** @enum {string} */
|
|
18914
|
+
error_code?: "internal_error";
|
|
18915
|
+
};
|
|
18916
|
+
};
|
|
18917
|
+
};
|
|
18918
|
+
};
|
|
18919
|
+
};
|
|
18920
|
+
"organization/list": {
|
|
18921
|
+
parameters: {
|
|
18922
|
+
query?: {
|
|
18923
|
+
/** @description Number of items per page (max 200) */
|
|
18924
|
+
pageSize?: number;
|
|
18925
|
+
/** @description Cursor for next page */
|
|
18926
|
+
cursor?: string;
|
|
18927
|
+
/** @description Cursor returned by the previous page */
|
|
18928
|
+
next?: string;
|
|
18929
|
+
/** @description Filter using a FaableQL query */
|
|
18930
|
+
query?: string;
|
|
18931
|
+
/** @description Full-text search across: `name`, `slug`. */
|
|
18932
|
+
q?: string;
|
|
18933
|
+
};
|
|
18934
|
+
header?: never;
|
|
18935
|
+
path?: never;
|
|
18936
|
+
cookie?: never;
|
|
18937
|
+
};
|
|
18938
|
+
requestBody?: never;
|
|
18939
|
+
responses: {
|
|
18940
|
+
/** @description Default Response */
|
|
18941
|
+
200: {
|
|
18942
|
+
headers: {
|
|
18943
|
+
[name: string]: unknown;
|
|
18944
|
+
};
|
|
18945
|
+
content: {
|
|
18946
|
+
"application/json": {
|
|
18947
|
+
next: string | null;
|
|
18948
|
+
results: components["schemas"]["Organization"][];
|
|
18949
|
+
};
|
|
18950
|
+
};
|
|
18951
|
+
};
|
|
18952
|
+
/**
|
|
18953
|
+
* @description `invalid_query` — The `?query=` FaableQL expression could not be parsed.
|
|
18954
|
+
*
|
|
18955
|
+
* `invalid_expand` — An `?expand=` path is not allowed on this resource.
|
|
18956
|
+
*
|
|
18957
|
+
* `search_not_supported` — This resource does not support `?search=`.
|
|
18958
|
+
*
|
|
18959
|
+
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
18960
|
+
*/
|
|
18961
|
+
400: {
|
|
18962
|
+
headers: {
|
|
18963
|
+
[name: string]: unknown;
|
|
18964
|
+
};
|
|
18965
|
+
content: {
|
|
18966
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
18967
|
+
/** @enum {string} */
|
|
18968
|
+
error_code?: "invalid_query" | "invalid_expand" | "search_not_supported" | "validation_error";
|
|
18969
|
+
};
|
|
18970
|
+
};
|
|
18971
|
+
};
|
|
18972
|
+
/** @description `unauthorized` — The request carries no valid credentials. */
|
|
18973
|
+
401: {
|
|
18974
|
+
headers: {
|
|
18975
|
+
[name: string]: unknown;
|
|
18976
|
+
};
|
|
18977
|
+
content: {
|
|
18978
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
18979
|
+
/** @enum {string} */
|
|
18980
|
+
error_code?: "unauthorized";
|
|
18981
|
+
};
|
|
18982
|
+
};
|
|
18983
|
+
};
|
|
18984
|
+
/**
|
|
18985
|
+
* @description `forbidden` — The credentials are valid but do not allow this operation.
|
|
18986
|
+
*
|
|
18987
|
+
* `insufficient_scope` — The token lacks a scope this operation requires. `message` names it.
|
|
18988
|
+
*
|
|
18989
|
+
* `user_suspended` — The user is suspended and cannot sign in or be modified.
|
|
18990
|
+
*/
|
|
18991
|
+
403: {
|
|
18992
|
+
headers: {
|
|
18993
|
+
[name: string]: unknown;
|
|
18994
|
+
};
|
|
18995
|
+
content: {
|
|
18996
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
18997
|
+
/** @enum {string} */
|
|
18998
|
+
error_code?: "forbidden" | "insufficient_scope" | "user_suspended";
|
|
18999
|
+
};
|
|
19000
|
+
};
|
|
19001
|
+
};
|
|
19002
|
+
/** @description `account_not_found` — No Auth Account matches the request (domain, header or token). */
|
|
19003
|
+
404: {
|
|
19004
|
+
headers: {
|
|
19005
|
+
[name: string]: unknown;
|
|
19006
|
+
};
|
|
19007
|
+
content: {
|
|
19008
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19009
|
+
/** @enum {string} */
|
|
19010
|
+
error_code?: "account_not_found";
|
|
19011
|
+
};
|
|
19012
|
+
};
|
|
19013
|
+
};
|
|
19014
|
+
/** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
|
|
19015
|
+
429: {
|
|
19016
|
+
headers: {
|
|
19017
|
+
[name: string]: unknown;
|
|
19018
|
+
};
|
|
19019
|
+
content: {
|
|
19020
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19021
|
+
/** @enum {string} */
|
|
19022
|
+
error_code?: "too_many_requests";
|
|
19023
|
+
};
|
|
19024
|
+
};
|
|
19025
|
+
};
|
|
19026
|
+
/** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
|
|
19027
|
+
500: {
|
|
19028
|
+
headers: {
|
|
19029
|
+
[name: string]: unknown;
|
|
19030
|
+
};
|
|
19031
|
+
content: {
|
|
19032
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19033
|
+
/** @enum {string} */
|
|
19034
|
+
error_code?: "internal_error";
|
|
19035
|
+
};
|
|
19036
|
+
};
|
|
19037
|
+
};
|
|
19038
|
+
};
|
|
19039
|
+
};
|
|
19040
|
+
"organization/create": {
|
|
19041
|
+
parameters: {
|
|
19042
|
+
query?: never;
|
|
19043
|
+
header?: never;
|
|
19044
|
+
path?: never;
|
|
19045
|
+
cookie?: never;
|
|
19046
|
+
};
|
|
19047
|
+
/** @description OrganizationCreate */
|
|
19048
|
+
requestBody: {
|
|
19049
|
+
content: {
|
|
19050
|
+
"application/json": {
|
|
19051
|
+
/**
|
|
19052
|
+
* @description Human-readable name of the organization.
|
|
19053
|
+
* @example Acme Inc.
|
|
19054
|
+
*/
|
|
19055
|
+
name: string;
|
|
19056
|
+
/** @description Optional free-form description. */
|
|
19057
|
+
description?: string;
|
|
19058
|
+
/**
|
|
19059
|
+
* Format: uri
|
|
19060
|
+
* @description Optional URL of the organization logo.
|
|
19061
|
+
*/
|
|
19062
|
+
logo_url?: string;
|
|
19063
|
+
/** @description Initial admins (user ids of this tenant). Can be empty and filled later with `POST /organization/{organization_id}/admin`. */
|
|
19064
|
+
admins?: string[];
|
|
19065
|
+
/** @description Add Metadata */
|
|
19066
|
+
metadata?: {
|
|
19067
|
+
[key: string]: unknown;
|
|
19068
|
+
};
|
|
19069
|
+
};
|
|
19070
|
+
};
|
|
19071
|
+
};
|
|
19072
|
+
responses: {
|
|
19073
|
+
/** @description Organization */
|
|
19074
|
+
200: {
|
|
19075
|
+
headers: {
|
|
19076
|
+
[name: string]: unknown;
|
|
19077
|
+
};
|
|
19078
|
+
content: {
|
|
19079
|
+
"application/json": {
|
|
19080
|
+
/** @description Organization ID */
|
|
19081
|
+
id: string;
|
|
19082
|
+
/**
|
|
19083
|
+
* @description Human-readable name of the organization.
|
|
19084
|
+
* @example Acme Inc.
|
|
19085
|
+
*/
|
|
19086
|
+
name: string;
|
|
19087
|
+
/**
|
|
19088
|
+
* @description URL-safe identifier derived from `name`. Unique within the tenant.
|
|
19089
|
+
* @example acme-inc
|
|
19090
|
+
*/
|
|
19091
|
+
slug: string;
|
|
19092
|
+
/** @description Optional free-form description. */
|
|
19093
|
+
description: string | null;
|
|
19094
|
+
/** @description Optional URL of the organization logo. */
|
|
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
|
+
}[];
|
|
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. */
|
|
19109
|
+
admins: string[];
|
|
19110
|
+
/** @description Object is related with this account */
|
|
19111
|
+
account: string;
|
|
19112
|
+
/**
|
|
19113
|
+
* @description OrganizationMetadata
|
|
19114
|
+
* @default {}
|
|
19115
|
+
*/
|
|
19116
|
+
metadata: {
|
|
19117
|
+
[key: string]: unknown;
|
|
19118
|
+
};
|
|
19119
|
+
/** @description Organization creation date */
|
|
19120
|
+
createdAt: string;
|
|
19121
|
+
/** @description Organization updated date */
|
|
19122
|
+
updatedAt?: string;
|
|
19123
|
+
};
|
|
19124
|
+
};
|
|
19125
|
+
};
|
|
19126
|
+
/**
|
|
19127
|
+
* @description `already_exists` — A resource with the same unique field already exists (for a user, usually `email`). `details.fields` names the field.
|
|
19128
|
+
*
|
|
19129
|
+
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
19130
|
+
*/
|
|
19131
|
+
400: {
|
|
19132
|
+
headers: {
|
|
19133
|
+
[name: string]: unknown;
|
|
19134
|
+
};
|
|
19135
|
+
content: {
|
|
19136
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19137
|
+
/** @enum {string} */
|
|
19138
|
+
error_code?: "already_exists" | "validation_error";
|
|
19139
|
+
};
|
|
19140
|
+
};
|
|
19141
|
+
};
|
|
19142
|
+
/** @description `unauthorized` — The request carries no valid credentials. */
|
|
19143
|
+
401: {
|
|
19144
|
+
headers: {
|
|
19145
|
+
[name: string]: unknown;
|
|
19146
|
+
};
|
|
19147
|
+
content: {
|
|
19148
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19149
|
+
/** @enum {string} */
|
|
19150
|
+
error_code?: "unauthorized";
|
|
19151
|
+
};
|
|
19152
|
+
};
|
|
19153
|
+
};
|
|
19154
|
+
/**
|
|
19155
|
+
* @description `forbidden` — The credentials are valid but do not allow this operation.
|
|
19156
|
+
*
|
|
19157
|
+
* `insufficient_scope` — The token lacks a scope this operation requires. `message` names it.
|
|
19158
|
+
*
|
|
19159
|
+
* `user_suspended` — The user is suspended and cannot sign in or be modified.
|
|
19160
|
+
*/
|
|
19161
|
+
403: {
|
|
19162
|
+
headers: {
|
|
19163
|
+
[name: string]: unknown;
|
|
19164
|
+
};
|
|
19165
|
+
content: {
|
|
19166
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19167
|
+
/** @enum {string} */
|
|
19168
|
+
error_code?: "forbidden" | "insufficient_scope" | "user_suspended";
|
|
19169
|
+
};
|
|
19170
|
+
};
|
|
19171
|
+
};
|
|
19172
|
+
/** @description `account_not_found` — No Auth Account matches the request (domain, header or token). */
|
|
19173
|
+
404: {
|
|
19174
|
+
headers: {
|
|
19175
|
+
[name: string]: unknown;
|
|
19176
|
+
};
|
|
19177
|
+
content: {
|
|
19178
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19179
|
+
/** @enum {string} */
|
|
19180
|
+
error_code?: "account_not_found";
|
|
19181
|
+
};
|
|
19182
|
+
};
|
|
19183
|
+
};
|
|
19184
|
+
/** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
|
|
19185
|
+
429: {
|
|
19186
|
+
headers: {
|
|
19187
|
+
[name: string]: unknown;
|
|
19188
|
+
};
|
|
19189
|
+
content: {
|
|
19190
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19191
|
+
/** @enum {string} */
|
|
19192
|
+
error_code?: "too_many_requests";
|
|
19193
|
+
};
|
|
19194
|
+
};
|
|
19195
|
+
};
|
|
19196
|
+
/** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
|
|
19197
|
+
500: {
|
|
19198
|
+
headers: {
|
|
19199
|
+
[name: string]: unknown;
|
|
19200
|
+
};
|
|
19201
|
+
content: {
|
|
19202
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19203
|
+
/** @enum {string} */
|
|
19204
|
+
error_code?: "internal_error";
|
|
19205
|
+
};
|
|
19206
|
+
};
|
|
19207
|
+
};
|
|
19208
|
+
};
|
|
19209
|
+
};
|
|
19210
|
+
"organization/get": {
|
|
19211
|
+
parameters: {
|
|
19212
|
+
query?: never;
|
|
19213
|
+
header?: never;
|
|
19214
|
+
path: {
|
|
19215
|
+
organization_id: string;
|
|
19216
|
+
};
|
|
19217
|
+
cookie?: never;
|
|
19218
|
+
};
|
|
19219
|
+
requestBody?: never;
|
|
19220
|
+
responses: {
|
|
19221
|
+
/** @description Organization */
|
|
19222
|
+
200: {
|
|
19223
|
+
headers: {
|
|
19224
|
+
[name: string]: unknown;
|
|
19225
|
+
};
|
|
19226
|
+
content: {
|
|
19227
|
+
"application/json": {
|
|
19228
|
+
/** @description Organization ID */
|
|
19229
|
+
id: string;
|
|
19230
|
+
/**
|
|
19231
|
+
* @description Human-readable name of the organization.
|
|
19232
|
+
* @example Acme Inc.
|
|
19233
|
+
*/
|
|
19234
|
+
name: string;
|
|
19235
|
+
/**
|
|
19236
|
+
* @description URL-safe identifier derived from `name`. Unique within the tenant.
|
|
19237
|
+
* @example acme-inc
|
|
19238
|
+
*/
|
|
19239
|
+
slug: string;
|
|
19240
|
+
/** @description Optional free-form description. */
|
|
19241
|
+
description: string | null;
|
|
19242
|
+
/** @description Optional URL of the organization logo. */
|
|
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
|
+
}[];
|
|
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. */
|
|
19257
|
+
admins: string[];
|
|
19258
|
+
/** @description Object is related with this account */
|
|
19259
|
+
account: string;
|
|
19260
|
+
/**
|
|
19261
|
+
* @description OrganizationMetadata
|
|
19262
|
+
* @default {}
|
|
19263
|
+
*/
|
|
19264
|
+
metadata: {
|
|
19265
|
+
[key: string]: unknown;
|
|
19266
|
+
};
|
|
19267
|
+
/** @description Organization creation date */
|
|
19268
|
+
createdAt: string;
|
|
19269
|
+
/** @description Organization updated date */
|
|
19270
|
+
updatedAt?: string;
|
|
19271
|
+
};
|
|
19272
|
+
};
|
|
19273
|
+
};
|
|
19274
|
+
/**
|
|
19275
|
+
* @description `invalid_id` — The id in the path is not a valid id for this resource.
|
|
19276
|
+
*
|
|
19277
|
+
* `invalid_expand` — An `?expand=` path is not allowed on this resource.
|
|
19278
|
+
*
|
|
19279
|
+
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
19280
|
+
*/
|
|
19281
|
+
400: {
|
|
19282
|
+
headers: {
|
|
19283
|
+
[name: string]: unknown;
|
|
19284
|
+
};
|
|
19285
|
+
content: {
|
|
19286
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19287
|
+
/** @enum {string} */
|
|
19288
|
+
error_code?: "invalid_id" | "invalid_expand" | "validation_error";
|
|
19289
|
+
};
|
|
19290
|
+
};
|
|
19291
|
+
};
|
|
19292
|
+
/** @description `unauthorized` — The request carries no valid credentials. */
|
|
19293
|
+
401: {
|
|
19294
|
+
headers: {
|
|
19295
|
+
[name: string]: unknown;
|
|
19296
|
+
};
|
|
19297
|
+
content: {
|
|
19298
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19299
|
+
/** @enum {string} */
|
|
19300
|
+
error_code?: "unauthorized";
|
|
19301
|
+
};
|
|
19302
|
+
};
|
|
19303
|
+
};
|
|
19304
|
+
/**
|
|
19305
|
+
* @description `forbidden` — The credentials are valid but do not allow this operation.
|
|
19306
|
+
*
|
|
19307
|
+
* `insufficient_scope` — The token lacks a scope this operation requires. `message` names it.
|
|
19308
|
+
*
|
|
19309
|
+
* `user_suspended` — The user is suspended and cannot sign in or be modified.
|
|
19310
|
+
*/
|
|
19311
|
+
403: {
|
|
19312
|
+
headers: {
|
|
19313
|
+
[name: string]: unknown;
|
|
19314
|
+
};
|
|
19315
|
+
content: {
|
|
19316
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19317
|
+
/** @enum {string} */
|
|
19318
|
+
error_code?: "forbidden" | "insufficient_scope" | "user_suspended";
|
|
19319
|
+
};
|
|
19320
|
+
};
|
|
19321
|
+
};
|
|
19322
|
+
/**
|
|
19323
|
+
* @description `not_found` — The resource does not exist in this account.
|
|
19324
|
+
*
|
|
19325
|
+
* `account_not_found` — No Auth Account matches the request (domain, header or token).
|
|
19326
|
+
*/
|
|
19327
|
+
404: {
|
|
19328
|
+
headers: {
|
|
19329
|
+
[name: string]: unknown;
|
|
19330
|
+
};
|
|
19331
|
+
content: {
|
|
19332
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19333
|
+
/** @enum {string} */
|
|
19334
|
+
error_code?: "not_found" | "account_not_found";
|
|
19335
|
+
};
|
|
19336
|
+
};
|
|
19337
|
+
};
|
|
19338
|
+
/** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
|
|
19339
|
+
429: {
|
|
19340
|
+
headers: {
|
|
19341
|
+
[name: string]: unknown;
|
|
19342
|
+
};
|
|
19343
|
+
content: {
|
|
19344
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19345
|
+
/** @enum {string} */
|
|
19346
|
+
error_code?: "too_many_requests";
|
|
19347
|
+
};
|
|
19348
|
+
};
|
|
19349
|
+
};
|
|
19350
|
+
/** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
|
|
19351
|
+
500: {
|
|
19352
|
+
headers: {
|
|
19353
|
+
[name: string]: unknown;
|
|
19354
|
+
};
|
|
19355
|
+
content: {
|
|
19356
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19357
|
+
/** @enum {string} */
|
|
19358
|
+
error_code?: "internal_error";
|
|
19359
|
+
};
|
|
19360
|
+
};
|
|
19361
|
+
};
|
|
19362
|
+
};
|
|
19363
|
+
};
|
|
19364
|
+
"organization/update": {
|
|
19365
|
+
parameters: {
|
|
19366
|
+
query?: never;
|
|
19367
|
+
header?: never;
|
|
19368
|
+
path: {
|
|
19369
|
+
organization_id: string;
|
|
19370
|
+
};
|
|
19371
|
+
cookie?: never;
|
|
19372
|
+
};
|
|
19373
|
+
/** @description Partial update for an Organization. `slug` is derived from `name` on creation and is not editable; admins change through `/organization/{organization_id}/admin`. */
|
|
19374
|
+
requestBody: {
|
|
19375
|
+
content: {
|
|
19376
|
+
"application/json": {
|
|
19377
|
+
/** @description New human-readable name. */
|
|
19378
|
+
name?: string;
|
|
19379
|
+
/** @description New free-form description. */
|
|
19380
|
+
description?: string;
|
|
19381
|
+
/**
|
|
19382
|
+
* Format: uri
|
|
19383
|
+
* @description New URL of the organization logo.
|
|
19384
|
+
*/
|
|
19385
|
+
logo_url?: string;
|
|
19386
|
+
/** @description Arbitrary key/value pairs. Replaces the previous metadata entirely. */
|
|
19387
|
+
metadata?: {
|
|
19388
|
+
[key: string]: unknown;
|
|
19389
|
+
};
|
|
19390
|
+
};
|
|
19391
|
+
};
|
|
19392
|
+
};
|
|
19393
|
+
responses: {
|
|
19394
|
+
/** @description Organization */
|
|
19395
|
+
200: {
|
|
19396
|
+
headers: {
|
|
19397
|
+
[name: string]: unknown;
|
|
19398
|
+
};
|
|
19399
|
+
content: {
|
|
19400
|
+
"application/json": {
|
|
19401
|
+
/** @description Organization ID */
|
|
19402
|
+
id: string;
|
|
19403
|
+
/**
|
|
19404
|
+
* @description Human-readable name of the organization.
|
|
19405
|
+
* @example Acme Inc.
|
|
19406
|
+
*/
|
|
19407
|
+
name: string;
|
|
19408
|
+
/**
|
|
19409
|
+
* @description URL-safe identifier derived from `name`. Unique within the tenant.
|
|
19410
|
+
* @example acme-inc
|
|
19411
|
+
*/
|
|
19412
|
+
slug: string;
|
|
19413
|
+
/** @description Optional free-form description. */
|
|
19414
|
+
description: string | null;
|
|
19415
|
+
/** @description Optional URL of the organization logo. */
|
|
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
|
+
}[];
|
|
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. */
|
|
19430
|
+
admins: string[];
|
|
19431
|
+
/** @description Object is related with this account */
|
|
19432
|
+
account: string;
|
|
19433
|
+
/**
|
|
19434
|
+
* @description OrganizationMetadata
|
|
19435
|
+
* @default {}
|
|
19436
|
+
*/
|
|
19437
|
+
metadata: {
|
|
19438
|
+
[key: string]: unknown;
|
|
19439
|
+
};
|
|
19440
|
+
/** @description Organization creation date */
|
|
19441
|
+
createdAt: string;
|
|
19442
|
+
/** @description Organization updated date */
|
|
19443
|
+
updatedAt?: string;
|
|
19444
|
+
};
|
|
19445
|
+
};
|
|
19446
|
+
};
|
|
19447
|
+
/**
|
|
19448
|
+
* @description `invalid_id` — The id in the path is not a valid id for this resource.
|
|
19449
|
+
*
|
|
19450
|
+
* `already_exists` — A resource with the same unique field already exists (for a user, usually `email`). `details.fields` names the field.
|
|
19451
|
+
*
|
|
19452
|
+
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
19453
|
+
*/
|
|
19454
|
+
400: {
|
|
19455
|
+
headers: {
|
|
19456
|
+
[name: string]: unknown;
|
|
19457
|
+
};
|
|
19458
|
+
content: {
|
|
19459
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19460
|
+
/** @enum {string} */
|
|
19461
|
+
error_code?: "invalid_id" | "already_exists" | "validation_error";
|
|
19462
|
+
};
|
|
19463
|
+
};
|
|
19464
|
+
};
|
|
19465
|
+
/** @description `unauthorized` — The request carries no valid credentials. */
|
|
19466
|
+
401: {
|
|
19467
|
+
headers: {
|
|
19468
|
+
[name: string]: unknown;
|
|
19469
|
+
};
|
|
19470
|
+
content: {
|
|
19471
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19472
|
+
/** @enum {string} */
|
|
19473
|
+
error_code?: "unauthorized";
|
|
19474
|
+
};
|
|
19475
|
+
};
|
|
19476
|
+
};
|
|
19477
|
+
/**
|
|
19478
|
+
* @description `forbidden` — The credentials are valid but do not allow this operation.
|
|
19479
|
+
*
|
|
19480
|
+
* `insufficient_scope` — The token lacks a scope this operation requires. `message` names it.
|
|
19481
|
+
*
|
|
19482
|
+
* `user_suspended` — The user is suspended and cannot sign in or be modified.
|
|
19483
|
+
*/
|
|
19484
|
+
403: {
|
|
19485
|
+
headers: {
|
|
19486
|
+
[name: string]: unknown;
|
|
19487
|
+
};
|
|
19488
|
+
content: {
|
|
19489
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19490
|
+
/** @enum {string} */
|
|
19491
|
+
error_code?: "forbidden" | "insufficient_scope" | "user_suspended";
|
|
19492
|
+
};
|
|
19493
|
+
};
|
|
19494
|
+
};
|
|
19495
|
+
/**
|
|
19496
|
+
* @description `not_found` — The resource does not exist in this account.
|
|
19497
|
+
*
|
|
19498
|
+
* `account_not_found` — No Auth Account matches the request (domain, header or token).
|
|
19499
|
+
*/
|
|
19500
|
+
404: {
|
|
19501
|
+
headers: {
|
|
19502
|
+
[name: string]: unknown;
|
|
19503
|
+
};
|
|
19504
|
+
content: {
|
|
19505
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19506
|
+
/** @enum {string} */
|
|
19507
|
+
error_code?: "not_found" | "account_not_found";
|
|
19508
|
+
};
|
|
19509
|
+
};
|
|
19510
|
+
};
|
|
19511
|
+
/** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
|
|
19512
|
+
429: {
|
|
19513
|
+
headers: {
|
|
19514
|
+
[name: string]: unknown;
|
|
19515
|
+
};
|
|
19516
|
+
content: {
|
|
19517
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19518
|
+
/** @enum {string} */
|
|
19519
|
+
error_code?: "too_many_requests";
|
|
19520
|
+
};
|
|
19521
|
+
};
|
|
19522
|
+
};
|
|
19523
|
+
/** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
|
|
19524
|
+
500: {
|
|
19525
|
+
headers: {
|
|
19526
|
+
[name: string]: unknown;
|
|
19527
|
+
};
|
|
19528
|
+
content: {
|
|
19529
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19530
|
+
/** @enum {string} */
|
|
19531
|
+
error_code?: "internal_error";
|
|
19532
|
+
};
|
|
19533
|
+
};
|
|
19534
|
+
};
|
|
19535
|
+
};
|
|
19536
|
+
};
|
|
19537
|
+
"organization/delete": {
|
|
19538
|
+
parameters: {
|
|
19539
|
+
query?: never;
|
|
19540
|
+
header?: never;
|
|
19541
|
+
path: {
|
|
19542
|
+
organization_id: string;
|
|
19543
|
+
};
|
|
19544
|
+
cookie?: never;
|
|
19545
|
+
};
|
|
19546
|
+
requestBody?: never;
|
|
19547
|
+
responses: {
|
|
19548
|
+
/** @description Organization */
|
|
19549
|
+
200: {
|
|
19550
|
+
headers: {
|
|
19551
|
+
[name: string]: unknown;
|
|
19552
|
+
};
|
|
19553
|
+
content: {
|
|
19554
|
+
"application/json": {
|
|
19555
|
+
/** @description Organization ID */
|
|
19556
|
+
id: string;
|
|
19557
|
+
/**
|
|
19558
|
+
* @description Human-readable name of the organization.
|
|
19559
|
+
* @example Acme Inc.
|
|
19560
|
+
*/
|
|
19561
|
+
name: string;
|
|
19562
|
+
/**
|
|
19563
|
+
* @description URL-safe identifier derived from `name`. Unique within the tenant.
|
|
19564
|
+
* @example acme-inc
|
|
19565
|
+
*/
|
|
19566
|
+
slug: string;
|
|
19567
|
+
/** @description Optional free-form description. */
|
|
19568
|
+
description: string | null;
|
|
19569
|
+
/** @description Optional URL of the organization logo. */
|
|
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
|
+
}[];
|
|
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. */
|
|
19584
|
+
admins: string[];
|
|
19585
|
+
/** @description Object is related with this account */
|
|
19586
|
+
account: string;
|
|
19587
|
+
/**
|
|
19588
|
+
* @description OrganizationMetadata
|
|
19589
|
+
* @default {}
|
|
19590
|
+
*/
|
|
19591
|
+
metadata: {
|
|
19592
|
+
[key: string]: unknown;
|
|
19593
|
+
};
|
|
19594
|
+
/** @description Organization creation date */
|
|
19595
|
+
createdAt: string;
|
|
19596
|
+
/** @description Organization updated date */
|
|
19597
|
+
updatedAt?: string;
|
|
19598
|
+
};
|
|
19599
|
+
};
|
|
19600
|
+
};
|
|
19601
|
+
/**
|
|
19602
|
+
* @description `invalid_id` — The id in the path is not a valid id for this resource.
|
|
19603
|
+
*
|
|
19604
|
+
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
19605
|
+
*/
|
|
19606
|
+
400: {
|
|
19607
|
+
headers: {
|
|
19608
|
+
[name: string]: unknown;
|
|
19609
|
+
};
|
|
19610
|
+
content: {
|
|
19611
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19612
|
+
/** @enum {string} */
|
|
19613
|
+
error_code?: "invalid_id" | "validation_error";
|
|
19614
|
+
};
|
|
19615
|
+
};
|
|
19616
|
+
};
|
|
19617
|
+
/** @description `unauthorized` — The request carries no valid credentials. */
|
|
19618
|
+
401: {
|
|
19619
|
+
headers: {
|
|
19620
|
+
[name: string]: unknown;
|
|
19621
|
+
};
|
|
19622
|
+
content: {
|
|
19623
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19624
|
+
/** @enum {string} */
|
|
19625
|
+
error_code?: "unauthorized";
|
|
19626
|
+
};
|
|
19627
|
+
};
|
|
19628
|
+
};
|
|
19629
|
+
/**
|
|
19630
|
+
* @description `forbidden` — The credentials are valid but do not allow this operation.
|
|
19631
|
+
*
|
|
19632
|
+
* `insufficient_scope` — The token lacks a scope this operation requires. `message` names it.
|
|
19633
|
+
*
|
|
19634
|
+
* `user_suspended` — The user is suspended and cannot sign in or be modified.
|
|
19635
|
+
*/
|
|
19636
|
+
403: {
|
|
19637
|
+
headers: {
|
|
19638
|
+
[name: string]: unknown;
|
|
19639
|
+
};
|
|
19640
|
+
content: {
|
|
19641
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19642
|
+
/** @enum {string} */
|
|
19643
|
+
error_code?: "forbidden" | "insufficient_scope" | "user_suspended";
|
|
19644
|
+
};
|
|
19645
|
+
};
|
|
19646
|
+
};
|
|
19647
|
+
/**
|
|
19648
|
+
* @description `not_found` — The resource does not exist in this account.
|
|
19649
|
+
*
|
|
19650
|
+
* `account_not_found` — No Auth Account matches the request (domain, header or token).
|
|
19651
|
+
*/
|
|
19652
|
+
404: {
|
|
19653
|
+
headers: {
|
|
19654
|
+
[name: string]: unknown;
|
|
19655
|
+
};
|
|
19656
|
+
content: {
|
|
19657
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19658
|
+
/** @enum {string} */
|
|
19659
|
+
error_code?: "not_found" | "account_not_found";
|
|
19660
|
+
};
|
|
19661
|
+
};
|
|
19662
|
+
};
|
|
19663
|
+
/** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
|
|
19664
|
+
429: {
|
|
19665
|
+
headers: {
|
|
19666
|
+
[name: string]: unknown;
|
|
19667
|
+
};
|
|
19668
|
+
content: {
|
|
19669
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19670
|
+
/** @enum {string} */
|
|
19671
|
+
error_code?: "too_many_requests";
|
|
19672
|
+
};
|
|
19673
|
+
};
|
|
19674
|
+
};
|
|
19675
|
+
/** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
|
|
19676
|
+
500: {
|
|
19677
|
+
headers: {
|
|
19678
|
+
[name: string]: unknown;
|
|
19679
|
+
};
|
|
19680
|
+
content: {
|
|
19681
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19682
|
+
/** @enum {string} */
|
|
19683
|
+
error_code?: "internal_error";
|
|
19684
|
+
};
|
|
19685
|
+
};
|
|
19686
|
+
};
|
|
19687
|
+
};
|
|
19688
|
+
};
|
|
19689
|
+
"organization/addAdmin": {
|
|
19690
|
+
parameters: {
|
|
19691
|
+
query?: never;
|
|
19692
|
+
header?: never;
|
|
19693
|
+
path: {
|
|
19694
|
+
organization_id: string;
|
|
19695
|
+
};
|
|
19696
|
+
cookie?: never;
|
|
19697
|
+
};
|
|
19698
|
+
requestBody: {
|
|
19699
|
+
content: {
|
|
19700
|
+
"application/json": {
|
|
19701
|
+
/**
|
|
19702
|
+
* @description Id of a user of this tenant.
|
|
19703
|
+
* @example user_6555fd29a1b2c3d4e5f60718
|
|
19704
|
+
*/
|
|
19705
|
+
user_id: string;
|
|
19706
|
+
};
|
|
19707
|
+
};
|
|
19708
|
+
};
|
|
19709
|
+
responses: {
|
|
19710
|
+
/** @description Organization */
|
|
19711
|
+
200: {
|
|
19712
|
+
headers: {
|
|
19713
|
+
[name: string]: unknown;
|
|
19714
|
+
};
|
|
19715
|
+
content: {
|
|
19716
|
+
"application/json": {
|
|
19717
|
+
/** @description Organization ID */
|
|
19718
|
+
id: string;
|
|
19719
|
+
/**
|
|
19720
|
+
* @description Human-readable name of the organization.
|
|
19721
|
+
* @example Acme Inc.
|
|
19722
|
+
*/
|
|
19723
|
+
name: string;
|
|
19724
|
+
/**
|
|
19725
|
+
* @description URL-safe identifier derived from `name`. Unique within the tenant.
|
|
19726
|
+
* @example acme-inc
|
|
19727
|
+
*/
|
|
19728
|
+
slug: string;
|
|
19729
|
+
/** @description Optional free-form description. */
|
|
19730
|
+
description: string | null;
|
|
19731
|
+
/** @description Optional URL of the organization logo. */
|
|
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
|
+
}[];
|
|
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. */
|
|
19746
|
+
admins: string[];
|
|
19747
|
+
/** @description Object is related with this account */
|
|
19748
|
+
account: string;
|
|
19749
|
+
/**
|
|
19750
|
+
* @description OrganizationMetadata
|
|
19751
|
+
* @default {}
|
|
19752
|
+
*/
|
|
19753
|
+
metadata: {
|
|
19754
|
+
[key: string]: unknown;
|
|
19755
|
+
};
|
|
19756
|
+
/** @description Organization creation date */
|
|
19757
|
+
createdAt: string;
|
|
19758
|
+
/** @description Organization updated date */
|
|
19759
|
+
updatedAt?: string;
|
|
19760
|
+
};
|
|
19761
|
+
};
|
|
19762
|
+
};
|
|
19763
|
+
/**
|
|
19764
|
+
* @description `invalid_user` — The user does not exist in this account.
|
|
19765
|
+
*
|
|
19766
|
+
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
19767
|
+
*/
|
|
19768
|
+
400: {
|
|
19769
|
+
headers: {
|
|
19770
|
+
[name: string]: unknown;
|
|
19771
|
+
};
|
|
19772
|
+
content: {
|
|
19773
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19774
|
+
/** @enum {string} */
|
|
19775
|
+
error_code?: "invalid_user" | "validation_error";
|
|
19776
|
+
};
|
|
19777
|
+
};
|
|
19778
|
+
};
|
|
19779
|
+
/** @description `unauthorized` — The request carries no valid credentials. */
|
|
19780
|
+
401: {
|
|
19781
|
+
headers: {
|
|
19782
|
+
[name: string]: unknown;
|
|
19783
|
+
};
|
|
19784
|
+
content: {
|
|
19785
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19786
|
+
/** @enum {string} */
|
|
19787
|
+
error_code?: "unauthorized";
|
|
19788
|
+
};
|
|
19789
|
+
};
|
|
19790
|
+
};
|
|
19791
|
+
/**
|
|
19792
|
+
* @description `forbidden` — The credentials are valid but do not allow this operation.
|
|
19793
|
+
*
|
|
19794
|
+
* `insufficient_scope` — The token lacks a scope this operation requires. `message` names it.
|
|
19795
|
+
*
|
|
19796
|
+
* `user_suspended` — The user is suspended and cannot sign in or be modified.
|
|
19797
|
+
*/
|
|
19798
|
+
403: {
|
|
19799
|
+
headers: {
|
|
19800
|
+
[name: string]: unknown;
|
|
19801
|
+
};
|
|
19802
|
+
content: {
|
|
19803
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19804
|
+
/** @enum {string} */
|
|
19805
|
+
error_code?: "forbidden" | "insufficient_scope" | "user_suspended";
|
|
19806
|
+
};
|
|
19807
|
+
};
|
|
19808
|
+
};
|
|
19809
|
+
/**
|
|
19810
|
+
* @description `organization_not_found` — No organization with that id in this account.
|
|
19811
|
+
*
|
|
19812
|
+
* `account_not_found` — No Auth Account matches the request (domain, header or token).
|
|
19813
|
+
*/
|
|
19814
|
+
404: {
|
|
19815
|
+
headers: {
|
|
19816
|
+
[name: string]: unknown;
|
|
19817
|
+
};
|
|
19818
|
+
content: {
|
|
19819
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19820
|
+
/** @enum {string} */
|
|
19821
|
+
error_code?: "organization_not_found" | "account_not_found";
|
|
19822
|
+
};
|
|
19823
|
+
};
|
|
19824
|
+
};
|
|
19825
|
+
/** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
|
|
19826
|
+
429: {
|
|
19827
|
+
headers: {
|
|
19828
|
+
[name: string]: unknown;
|
|
19829
|
+
};
|
|
19830
|
+
content: {
|
|
19831
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19832
|
+
/** @enum {string} */
|
|
19833
|
+
error_code?: "too_many_requests";
|
|
19834
|
+
};
|
|
19835
|
+
};
|
|
19836
|
+
};
|
|
19837
|
+
/** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
|
|
19838
|
+
500: {
|
|
19839
|
+
headers: {
|
|
19840
|
+
[name: string]: unknown;
|
|
19841
|
+
};
|
|
19842
|
+
content: {
|
|
19843
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19844
|
+
/** @enum {string} */
|
|
19845
|
+
error_code?: "internal_error";
|
|
19846
|
+
};
|
|
19847
|
+
};
|
|
19848
|
+
};
|
|
19849
|
+
};
|
|
19850
|
+
};
|
|
19851
|
+
"organization/removeAdmin": {
|
|
19852
|
+
parameters: {
|
|
19853
|
+
query?: never;
|
|
19854
|
+
header?: never;
|
|
19855
|
+
path: {
|
|
19856
|
+
organization_id: string;
|
|
19857
|
+
user_id: string;
|
|
19858
|
+
};
|
|
19859
|
+
cookie?: never;
|
|
19860
|
+
};
|
|
19861
|
+
requestBody?: never;
|
|
19862
|
+
responses: {
|
|
19863
|
+
/** @description Organization */
|
|
19864
|
+
200: {
|
|
19865
|
+
headers: {
|
|
19866
|
+
[name: string]: unknown;
|
|
19867
|
+
};
|
|
19868
|
+
content: {
|
|
19869
|
+
"application/json": {
|
|
19870
|
+
/** @description Organization ID */
|
|
19871
|
+
id: string;
|
|
19872
|
+
/**
|
|
19873
|
+
* @description Human-readable name of the organization.
|
|
19874
|
+
* @example Acme Inc.
|
|
19875
|
+
*/
|
|
19876
|
+
name: string;
|
|
19877
|
+
/**
|
|
19878
|
+
* @description URL-safe identifier derived from `name`. Unique within the tenant.
|
|
19879
|
+
* @example acme-inc
|
|
19880
|
+
*/
|
|
19881
|
+
slug: string;
|
|
19882
|
+
/** @description Optional free-form description. */
|
|
19883
|
+
description: string | null;
|
|
19884
|
+
/** @description Optional URL of the organization logo. */
|
|
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
|
+
}[];
|
|
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. */
|
|
19899
|
+
admins: string[];
|
|
19900
|
+
/** @description Object is related with this account */
|
|
19901
|
+
account: string;
|
|
19902
|
+
/**
|
|
19903
|
+
* @description OrganizationMetadata
|
|
19904
|
+
* @default {}
|
|
19905
|
+
*/
|
|
19906
|
+
metadata: {
|
|
19907
|
+
[key: string]: unknown;
|
|
19908
|
+
};
|
|
19909
|
+
/** @description Organization creation date */
|
|
19910
|
+
createdAt: string;
|
|
19911
|
+
/** @description Organization updated date */
|
|
19912
|
+
updatedAt?: string;
|
|
19913
|
+
};
|
|
19914
|
+
};
|
|
19915
|
+
};
|
|
19916
|
+
/** @description `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field. */
|
|
19917
|
+
400: {
|
|
19918
|
+
headers: {
|
|
19919
|
+
[name: string]: unknown;
|
|
19920
|
+
};
|
|
19921
|
+
content: {
|
|
19922
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19923
|
+
/** @enum {string} */
|
|
19924
|
+
error_code?: "validation_error";
|
|
19925
|
+
};
|
|
19926
|
+
};
|
|
19927
|
+
};
|
|
19928
|
+
/** @description `unauthorized` — The request carries no valid credentials. */
|
|
19929
|
+
401: {
|
|
19930
|
+
headers: {
|
|
19931
|
+
[name: string]: unknown;
|
|
19932
|
+
};
|
|
19933
|
+
content: {
|
|
19934
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19935
|
+
/** @enum {string} */
|
|
19936
|
+
error_code?: "unauthorized";
|
|
19937
|
+
};
|
|
19938
|
+
};
|
|
19939
|
+
};
|
|
19940
|
+
/**
|
|
19941
|
+
* @description `forbidden` — The credentials are valid but do not allow this operation.
|
|
19942
|
+
*
|
|
19943
|
+
* `insufficient_scope` — The token lacks a scope this operation requires. `message` names it.
|
|
19944
|
+
*
|
|
19945
|
+
* `user_suspended` — The user is suspended and cannot sign in or be modified.
|
|
19946
|
+
*/
|
|
19947
|
+
403: {
|
|
19948
|
+
headers: {
|
|
19949
|
+
[name: string]: unknown;
|
|
19950
|
+
};
|
|
19951
|
+
content: {
|
|
19952
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19953
|
+
/** @enum {string} */
|
|
19954
|
+
error_code?: "forbidden" | "insufficient_scope" | "user_suspended";
|
|
19955
|
+
};
|
|
19956
|
+
};
|
|
19957
|
+
};
|
|
19958
|
+
/**
|
|
19959
|
+
* @description `organization_not_found` — No organization with that id in this account.
|
|
19960
|
+
*
|
|
19961
|
+
* `not_an_organization_admin` — The user is not an admin of the organization.
|
|
19962
|
+
*
|
|
19963
|
+
* `account_not_found` — No Auth Account matches the request (domain, header or token).
|
|
19964
|
+
*/
|
|
19965
|
+
404: {
|
|
19966
|
+
headers: {
|
|
19967
|
+
[name: string]: unknown;
|
|
19968
|
+
};
|
|
19969
|
+
content: {
|
|
19970
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19971
|
+
/** @enum {string} */
|
|
19972
|
+
error_code?: "organization_not_found" | "not_an_organization_admin" | "account_not_found";
|
|
19973
|
+
};
|
|
19974
|
+
};
|
|
19975
|
+
};
|
|
19976
|
+
/** @description `last_organization_admin` — An organization keeps at least one admin. Add another admin before removing this one. */
|
|
19977
|
+
409: {
|
|
19978
|
+
headers: {
|
|
19979
|
+
[name: string]: unknown;
|
|
19980
|
+
};
|
|
19981
|
+
content: {
|
|
19982
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19983
|
+
/** @enum {string} */
|
|
19984
|
+
error_code?: "last_organization_admin";
|
|
19985
|
+
};
|
|
19986
|
+
};
|
|
19987
|
+
};
|
|
19988
|
+
/** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
|
|
19989
|
+
429: {
|
|
19990
|
+
headers: {
|
|
19991
|
+
[name: string]: unknown;
|
|
19992
|
+
};
|
|
19993
|
+
content: {
|
|
19994
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19995
|
+
/** @enum {string} */
|
|
19996
|
+
error_code?: "too_many_requests";
|
|
19997
|
+
};
|
|
19998
|
+
};
|
|
19999
|
+
};
|
|
20000
|
+
/** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
|
|
20001
|
+
500: {
|
|
20002
|
+
headers: {
|
|
20003
|
+
[name: string]: unknown;
|
|
20004
|
+
};
|
|
20005
|
+
content: {
|
|
20006
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
20007
|
+
/** @enum {string} */
|
|
20008
|
+
error_code?: "internal_error";
|
|
20009
|
+
};
|
|
20010
|
+
};
|
|
20011
|
+
};
|
|
20012
|
+
};
|
|
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
|
+
};
|
|
20536
|
+
"teammember/list": {
|
|
20537
|
+
parameters: {
|
|
20538
|
+
query?: {
|
|
20539
|
+
/** @description Number of items per page (max 200) */
|
|
20540
|
+
pageSize?: number;
|
|
20541
|
+
/** @description Cursor for next page */
|
|
20542
|
+
cursor?: string;
|
|
20543
|
+
/** @description Cursor returned by the previous page */
|
|
20544
|
+
next?: string;
|
|
20545
|
+
/** @description Exact match on `user`. Equivalent to `?query=user:<value>`. */
|
|
20546
|
+
user?: string;
|
|
20547
|
+
/** @description Exact match on `team`. Equivalent to `?query=team:<value>`. */
|
|
20548
|
+
team?: string;
|
|
20549
|
+
/** @description Filter using a FaableQL query */
|
|
20550
|
+
query?: string;
|
|
20551
|
+
/** @description Expand id-only fields in the response. Pass one path per entry (e.g. `?expand=user`). */
|
|
20552
|
+
expand?: ("user" | "team" | "roles")[];
|
|
20553
|
+
};
|
|
20554
|
+
header?: never;
|
|
20555
|
+
path?: never;
|
|
20556
|
+
cookie?: never;
|
|
20557
|
+
};
|
|
20558
|
+
requestBody?: never;
|
|
20559
|
+
responses: {
|
|
20560
|
+
/** @description Default Response */
|
|
20561
|
+
200: {
|
|
20562
|
+
headers: {
|
|
20563
|
+
[name: string]: unknown;
|
|
20564
|
+
};
|
|
20565
|
+
content: {
|
|
20566
|
+
"application/json": {
|
|
20567
|
+
next: string | null;
|
|
20568
|
+
results: components["schemas"]["TeamMember"][];
|
|
20569
|
+
};
|
|
20570
|
+
};
|
|
20571
|
+
};
|
|
20572
|
+
/**
|
|
20573
|
+
* @description `invalid_query` — The `?query=` FaableQL expression could not be parsed.
|
|
20574
|
+
*
|
|
20575
|
+
* `invalid_expand` — An `?expand=` path is not allowed on this resource.
|
|
20576
|
+
*
|
|
20577
|
+
* `search_not_supported` — This resource does not support `?search=`.
|
|
20578
|
+
*
|
|
20579
|
+
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
18495
20580
|
*/
|
|
18496
20581
|
400: {
|
|
18497
20582
|
headers: {
|
|
@@ -24211,8 +26296,11 @@ export interface operations {
|
|
|
24211
26296
|
* - `team.invite.created`: An invitation to join a team was created.
|
|
24212
26297
|
* - `team.invite.revoked`: A pending team invitation was revoked.
|
|
24213
26298
|
* - `team.invite.accepted`: A team invitation was accepted.
|
|
26299
|
+
* - `organization.created`: An organization was created.
|
|
26300
|
+
* - `organization.updated`: An organization was updated (name, settings or admins).
|
|
26301
|
+
* - `organization.deleted`: An organization was deleted. Its teams are no longer in any organization; no `team.updated` is sent for them.
|
|
24214
26302
|
*
|
|
24215
|
-
* `team.*` payloads are notices, not state: they carry ids (`team_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
|
|
26303
|
+
* `team.*` and `organization.*` payloads are notices, not state: they carry ids (`team_id`, `organization_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
|
|
24216
26304
|
*/
|
|
24217
26305
|
events: string[];
|
|
24218
26306
|
/** @enum {string} */
|
|
@@ -24286,8 +26374,11 @@ export interface operations {
|
|
|
24286
26374
|
* - `team.invite.created`: An invitation to join a team was created.
|
|
24287
26375
|
* - `team.invite.revoked`: A pending team invitation was revoked.
|
|
24288
26376
|
* - `team.invite.accepted`: A team invitation was accepted.
|
|
26377
|
+
* - `organization.created`: An organization was created.
|
|
26378
|
+
* - `organization.updated`: An organization was updated (name, settings or admins).
|
|
26379
|
+
* - `organization.deleted`: An organization was deleted. Its teams are no longer in any organization; no `team.updated` is sent for them.
|
|
24289
26380
|
*
|
|
24290
|
-
* `team.*` payloads are notices, not state: they carry ids (`team_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
|
|
26381
|
+
* `team.*` and `organization.*` payloads are notices, not state: they carry ids (`team_id`, `organization_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
|
|
24291
26382
|
*/
|
|
24292
26383
|
events: string[];
|
|
24293
26384
|
/** @enum {string} */
|
|
@@ -24477,8 +26568,11 @@ export interface operations {
|
|
|
24477
26568
|
* - `team.invite.created`: An invitation to join a team was created.
|
|
24478
26569
|
* - `team.invite.revoked`: A pending team invitation was revoked.
|
|
24479
26570
|
* - `team.invite.accepted`: A team invitation was accepted.
|
|
26571
|
+
* - `organization.created`: An organization was created.
|
|
26572
|
+
* - `organization.updated`: An organization was updated (name, settings or admins).
|
|
26573
|
+
* - `organization.deleted`: An organization was deleted. Its teams are no longer in any organization; no `team.updated` is sent for them.
|
|
24480
26574
|
*
|
|
24481
|
-
* `team.*` payloads are notices, not state: they carry ids (`team_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
|
|
26575
|
+
* `team.*` and `organization.*` payloads are notices, not state: they carry ids (`team_id`, `organization_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
|
|
24482
26576
|
*/
|
|
24483
26577
|
events: string[];
|
|
24484
26578
|
/** @enum {string} */
|
|
@@ -24656,8 +26750,11 @@ export interface operations {
|
|
|
24656
26750
|
* - `team.invite.created`: An invitation to join a team was created.
|
|
24657
26751
|
* - `team.invite.revoked`: A pending team invitation was revoked.
|
|
24658
26752
|
* - `team.invite.accepted`: A team invitation was accepted.
|
|
26753
|
+
* - `organization.created`: An organization was created.
|
|
26754
|
+
* - `organization.updated`: An organization was updated (name, settings or admins).
|
|
26755
|
+
* - `organization.deleted`: An organization was deleted. Its teams are no longer in any organization; no `team.updated` is sent for them.
|
|
24659
26756
|
*
|
|
24660
|
-
* `team.*` payloads are notices, not state: they carry ids (`team_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
|
|
26757
|
+
* `team.*` and `organization.*` payloads are notices, not state: they carry ids (`team_id`, `organization_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
|
|
24661
26758
|
*/
|
|
24662
26759
|
events?: string[];
|
|
24663
26760
|
/** @enum {string} */
|
|
@@ -24731,8 +26828,11 @@ export interface operations {
|
|
|
24731
26828
|
* - `team.invite.created`: An invitation to join a team was created.
|
|
24732
26829
|
* - `team.invite.revoked`: A pending team invitation was revoked.
|
|
24733
26830
|
* - `team.invite.accepted`: A team invitation was accepted.
|
|
26831
|
+
* - `organization.created`: An organization was created.
|
|
26832
|
+
* - `organization.updated`: An organization was updated (name, settings or admins).
|
|
26833
|
+
* - `organization.deleted`: An organization was deleted. Its teams are no longer in any organization; no `team.updated` is sent for them.
|
|
24734
26834
|
*
|
|
24735
|
-
* `team.*` payloads are notices, not state: they carry ids (`team_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
|
|
26835
|
+
* `team.*` and `organization.*` payloads are notices, not state: they carry ids (`team_id`, `organization_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
|
|
24736
26836
|
*/
|
|
24737
26837
|
events: string[];
|
|
24738
26838
|
/** @enum {string} */
|
|
@@ -24928,8 +27028,11 @@ export interface operations {
|
|
|
24928
27028
|
* - `team.invite.created`: An invitation to join a team was created.
|
|
24929
27029
|
* - `team.invite.revoked`: A pending team invitation was revoked.
|
|
24930
27030
|
* - `team.invite.accepted`: A team invitation was accepted.
|
|
27031
|
+
* - `organization.created`: An organization was created.
|
|
27032
|
+
* - `organization.updated`: An organization was updated (name, settings or admins).
|
|
27033
|
+
* - `organization.deleted`: An organization was deleted. Its teams are no longer in any organization; no `team.updated` is sent for them.
|
|
24931
27034
|
*
|
|
24932
|
-
* `team.*` payloads are notices, not state: they carry ids (`team_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
|
|
27035
|
+
* `team.*` and `organization.*` payloads are notices, not state: they carry ids (`team_id`, `organization_id`, `user_id`, `roles`, `invite_id`...) and the receiver reads whatever else it needs. Use the delivery id (`x-faable-delivery`) to deduplicate: retries keep it.
|
|
24933
27036
|
*/
|
|
24934
27037
|
events: string[];
|
|
24935
27038
|
/** @enum {string} */
|
|
@@ -29848,6 +31951,18 @@ export interface operations {
|
|
|
29848
31951
|
};
|
|
29849
31952
|
};
|
|
29850
31953
|
};
|
|
31954
|
+
/** @description `registration_disabled` — Dynamic client registration is turned off for this tenant. Create the client from the dashboard or the Management API, or turn on `dynamic_client_registration_enabled`. */
|
|
31955
|
+
403: {
|
|
31956
|
+
headers: {
|
|
31957
|
+
[name: string]: unknown;
|
|
31958
|
+
};
|
|
31959
|
+
content: {
|
|
31960
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
31961
|
+
/** @enum {string} */
|
|
31962
|
+
error_code?: "registration_disabled";
|
|
31963
|
+
};
|
|
31964
|
+
};
|
|
31965
|
+
};
|
|
29851
31966
|
/** @description `account_not_found` — No Auth Account matches the request (domain, header or token). */
|
|
29852
31967
|
404: {
|
|
29853
31968
|
headers: {
|