@faable/auth-sdk 2.7.61 → 2.7.63
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/api/api-types.d.ts +0 -2
- package/dist/api/generated-client.d.ts +143 -37
- package/dist/api/generated-client.js +105 -23
- package/dist/api/types.d.ts +2031 -1109
- package/dist/version.js +2 -2
- package/package.json +1 -1
- package/spec/openapi.json +2729 -1547
package/dist/api/types.d.ts
CHANGED
|
@@ -1109,11 +1109,7 @@ export interface paths {
|
|
|
1109
1109
|
*/
|
|
1110
1110
|
get: operations["rolemember/list"];
|
|
1111
1111
|
put?: never;
|
|
1112
|
-
|
|
1113
|
-
* Create Rolemember
|
|
1114
|
-
* @description Create Rolemember
|
|
1115
|
-
*/
|
|
1116
|
-
post: operations["rolemember/create"];
|
|
1112
|
+
post?: never;
|
|
1117
1113
|
delete?: never;
|
|
1118
1114
|
options?: never;
|
|
1119
1115
|
head?: never;
|
|
@@ -1180,7 +1176,11 @@ export interface paths {
|
|
|
1180
1176
|
* @description Get Team
|
|
1181
1177
|
*/
|
|
1182
1178
|
get: operations["team/get"];
|
|
1183
|
-
|
|
1179
|
+
/**
|
|
1180
|
+
* Create or update a Team with a given id
|
|
1181
|
+
* @description Creates the Team with the given id if it does not exist in this tenant (201), or updates its name, description, metadata and — when given — slug (200). Idempotent. Needs both `create:teams` and `update:teams`. `team_id_unavailable` (409) when the id cannot be used in this tenant; `already_exists` when the slug is taken by another team.
|
|
1182
|
+
*/
|
|
1183
|
+
put: operations["team/put"];
|
|
1184
1184
|
/**
|
|
1185
1185
|
* Update Team
|
|
1186
1186
|
* @description Update Team
|
|
@@ -1209,11 +1209,7 @@ export interface paths {
|
|
|
1209
1209
|
*/
|
|
1210
1210
|
get: operations["teammember/list"];
|
|
1211
1211
|
put?: never;
|
|
1212
|
-
|
|
1213
|
-
* Create Teammember
|
|
1214
|
-
* @description Create Teammember
|
|
1215
|
-
*/
|
|
1216
|
-
post: operations["teammember/create"];
|
|
1212
|
+
post?: never;
|
|
1217
1213
|
delete?: never;
|
|
1218
1214
|
options?: never;
|
|
1219
1215
|
head?: never;
|
|
@@ -1288,6 +1284,30 @@ export interface paths {
|
|
|
1288
1284
|
patch?: never;
|
|
1289
1285
|
trace?: never;
|
|
1290
1286
|
};
|
|
1287
|
+
"/team/{team_id}/member/{user_id}": {
|
|
1288
|
+
parameters: {
|
|
1289
|
+
query?: never;
|
|
1290
|
+
header?: never;
|
|
1291
|
+
path?: never;
|
|
1292
|
+
cookie?: never;
|
|
1293
|
+
};
|
|
1294
|
+
get?: never;
|
|
1295
|
+
put?: never;
|
|
1296
|
+
/**
|
|
1297
|
+
* Change a Team member's roles
|
|
1298
|
+
* @description Replaces the roles a User holds within the given Team. Every role must be a Role of this tenant. Emits `team.member.updated` when the roles actually change, and leaves an entry in the tenant's log.
|
|
1299
|
+
*/
|
|
1300
|
+
post: operations["team/updateMember"];
|
|
1301
|
+
/**
|
|
1302
|
+
* Remove a User from a Team
|
|
1303
|
+
* @description Removes the User's membership of the given Team (the User itself is not deleted). Emits `team.member.removed` and leaves an entry in the tenant's log.
|
|
1304
|
+
*/
|
|
1305
|
+
delete: operations["team/removeMember"];
|
|
1306
|
+
options?: never;
|
|
1307
|
+
head?: never;
|
|
1308
|
+
patch?: never;
|
|
1309
|
+
trace?: never;
|
|
1310
|
+
};
|
|
1291
1311
|
"/team/{team_id}/invite": {
|
|
1292
1312
|
parameters: {
|
|
1293
1313
|
query?: never;
|
|
@@ -1717,6 +1737,66 @@ export interface paths {
|
|
|
1717
1737
|
patch?: never;
|
|
1718
1738
|
trace?: never;
|
|
1719
1739
|
};
|
|
1740
|
+
"/notificationsubscription/{notificationsubscription_id}/test": {
|
|
1741
|
+
parameters: {
|
|
1742
|
+
query?: never;
|
|
1743
|
+
header?: never;
|
|
1744
|
+
path?: never;
|
|
1745
|
+
cookie?: never;
|
|
1746
|
+
};
|
|
1747
|
+
get?: never;
|
|
1748
|
+
put?: never;
|
|
1749
|
+
/**
|
|
1750
|
+
* Send a test event to a webhook
|
|
1751
|
+
* @description Sends a signed `ping` event to the subscription URL right now and returns the outcome. The request is signed exactly like a real delivery (`x-faable-signature`, `x-faable-timestamp`, `x-faable-delivery`), with `payload: { subscription_id }`. It is not retried and is recorded in the Log as `webhook.ping`. A successful test sets a `failing` subscription back to `healthy`. Works on inactive subscriptions too.
|
|
1752
|
+
*/
|
|
1753
|
+
post: operations["notificationsubscription/test"];
|
|
1754
|
+
delete?: never;
|
|
1755
|
+
options?: never;
|
|
1756
|
+
head?: never;
|
|
1757
|
+
patch?: never;
|
|
1758
|
+
trace?: never;
|
|
1759
|
+
};
|
|
1760
|
+
"/notificationsubscription/{notificationsubscription_id}/rotate-secret": {
|
|
1761
|
+
parameters: {
|
|
1762
|
+
query?: never;
|
|
1763
|
+
header?: never;
|
|
1764
|
+
path?: never;
|
|
1765
|
+
cookie?: never;
|
|
1766
|
+
};
|
|
1767
|
+
get?: never;
|
|
1768
|
+
put?: never;
|
|
1769
|
+
/**
|
|
1770
|
+
* Rotate a webhook's signing secret
|
|
1771
|
+
* @description Replaces the signing secret with a new one (generated, or the one in the body) and keeps the previous one valid for 24 hours. During that overlap every delivery carries two signatures, `x-faable-signature: sha256=<new>,sha256=<previous>`, so receivers can switch to the new secret at their own pace: accept a delivery when any of the signatures matches. The new secret is returned only in this response. Rotating again during an overlap drops the oldest secret.
|
|
1772
|
+
*/
|
|
1773
|
+
post: operations["notificationsubscription/rotateSecret"];
|
|
1774
|
+
delete?: never;
|
|
1775
|
+
options?: never;
|
|
1776
|
+
head?: never;
|
|
1777
|
+
patch?: never;
|
|
1778
|
+
trace?: never;
|
|
1779
|
+
};
|
|
1780
|
+
"/notificationsubscription/{notificationsubscription_id}/deliveries/{delivery_id}/redeliver": {
|
|
1781
|
+
parameters: {
|
|
1782
|
+
query?: never;
|
|
1783
|
+
header?: never;
|
|
1784
|
+
path?: never;
|
|
1785
|
+
cookie?: never;
|
|
1786
|
+
};
|
|
1787
|
+
get?: never;
|
|
1788
|
+
put?: never;
|
|
1789
|
+
/**
|
|
1790
|
+
* Redeliver a webhook delivery
|
|
1791
|
+
* @description Queues a past delivery (succeeded, failed or still retrying) to be sent again within the next few seconds, with the same event id (`x-faable-delivery`) and a fresh retry schedule (1 min, 5 min, 30 min, 2 h, 12 h on timeouts, network errors, 5xx and 429). The delivery id is `data.delivery_id` in the `webhook.<event>` Log rows. Deliveries are kept for 30 days after they finish.
|
|
1792
|
+
*/
|
|
1793
|
+
post: operations["notificationsubscription/redeliver"];
|
|
1794
|
+
delete?: never;
|
|
1795
|
+
options?: never;
|
|
1796
|
+
head?: never;
|
|
1797
|
+
patch?: never;
|
|
1798
|
+
trace?: never;
|
|
1799
|
+
};
|
|
1720
1800
|
"/log": {
|
|
1721
1801
|
parameters: {
|
|
1722
1802
|
query?: never;
|
|
@@ -5417,16 +5497,6 @@ export interface components {
|
|
|
5417
5497
|
RoleMemberMetadata: {
|
|
5418
5498
|
[key: string]: unknown;
|
|
5419
5499
|
};
|
|
5420
|
-
/** @description Payload for granting a role to one or more users in a single call. Posted to `POST /role/:role_id/users`. */
|
|
5421
|
-
RoleMemberCreate: {
|
|
5422
|
-
/**
|
|
5423
|
-
* @description List of User ids to grant the role to. Existing role memberships are preserved; passing a user that already holds the role is a no-op.
|
|
5424
|
-
* @example [
|
|
5425
|
-
* "user_6555fd293acc2f0fac0e3452"
|
|
5426
|
-
* ]
|
|
5427
|
-
*/
|
|
5428
|
-
users: string[];
|
|
5429
|
-
};
|
|
5430
5500
|
/** @description Team */
|
|
5431
5501
|
Team: {
|
|
5432
5502
|
/** @description Team ID */
|
|
@@ -5530,24 +5600,6 @@ export interface components {
|
|
|
5530
5600
|
TeamMemberMetadata: {
|
|
5531
5601
|
[key: string]: unknown;
|
|
5532
5602
|
};
|
|
5533
|
-
/** @description Payload for adding one or more users to a team in a single call. Posted to `POST /team/:team_id/member`. */
|
|
5534
|
-
TeamMemberCreate: {
|
|
5535
|
-
/**
|
|
5536
|
-
* @description List of User ids to add as members of the team. Users already in the team are skipped.
|
|
5537
|
-
* @example [
|
|
5538
|
-
* "user_6555fd293acc2f0fac0e3452"
|
|
5539
|
-
* ]
|
|
5540
|
-
*/
|
|
5541
|
-
users: string[];
|
|
5542
|
-
/**
|
|
5543
|
-
* @description Role ids to grant to the added members within the scope of this team.
|
|
5544
|
-
* @default []
|
|
5545
|
-
* @example [
|
|
5546
|
-
* "role_6555fd293acc2f0fac0e3452"
|
|
5547
|
-
* ]
|
|
5548
|
-
*/
|
|
5549
|
-
roles: string[];
|
|
5550
|
-
};
|
|
5551
5603
|
/** @description A permission exposed by an API: a single value that may end up in the `permissions` claim of an access_token, plus a human-readable description shown in the consent prompt. */
|
|
5552
5604
|
Permission: {
|
|
5553
5605
|
/**
|
|
@@ -5944,6 +5996,26 @@ export interface components {
|
|
|
5944
5996
|
} | {
|
|
5945
5997
|
/** @description NotificationSubscriptionWebhook ID */
|
|
5946
5998
|
id: string;
|
|
5999
|
+
/**
|
|
6000
|
+
* @description Events to subscribe to. For `webhook` subscriptions it must be a subset of the published catalog; any other value is rejected with a 400:
|
|
6001
|
+
*
|
|
6002
|
+
* - `user.created`: A user was created (signup, import or Management API).
|
|
6003
|
+
* - `user.updated`: A user was updated.
|
|
6004
|
+
* - `user.deleted`: A user was deleted.
|
|
6005
|
+
* - `auth.login`: A user logged in.
|
|
6006
|
+
* - `credentials.exported`: Someone exported the tenant's password hashes (`GET /user/export` with hashes).
|
|
6007
|
+
* - `team.created`: A team was created.
|
|
6008
|
+
* - `team.updated`: A team was updated.
|
|
6009
|
+
* - `team.deleted`: A team was deleted.
|
|
6010
|
+
* - `team.member.added`: A user was added to a team.
|
|
6011
|
+
* - `team.member.updated`: A team member's roles changed.
|
|
6012
|
+
* - `team.member.removed`: A user was removed from a team (or left it).
|
|
6013
|
+
* - `team.invite.created`: An invitation to join a team was created.
|
|
6014
|
+
* - `team.invite.revoked`: A pending team invitation was revoked.
|
|
6015
|
+
* - `team.invite.accepted`: A team invitation was accepted.
|
|
6016
|
+
*
|
|
6017
|
+
* `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.
|
|
6018
|
+
*/
|
|
5947
6019
|
events: string[];
|
|
5948
6020
|
/** @enum {string} */
|
|
5949
6021
|
channel: "webhook";
|
|
@@ -5955,9 +6027,22 @@ export interface components {
|
|
|
5955
6027
|
* @description Webhook URL
|
|
5956
6028
|
*/
|
|
5957
6029
|
url: string;
|
|
5958
|
-
/**
|
|
5959
|
-
|
|
6030
|
+
/**
|
|
6031
|
+
* Format: date-time
|
|
6032
|
+
* @description Set after a `rotate-secret`: until this instant deliveries are signed with both the new and the previous secret.
|
|
6033
|
+
*/
|
|
6034
|
+
previous_secret_expires_at?: string;
|
|
5960
6035
|
};
|
|
6036
|
+
/** @description `failing` after several consecutive failed delivery attempts; the next successful delivery (or a successful `test`) sets it back to `healthy`. A failing subscription keeps receiving deliveries: it is never deactivated automatically. */
|
|
6037
|
+
status?: "healthy" | "failing";
|
|
6038
|
+
/** @description Failed delivery attempts since the last success. */
|
|
6039
|
+
consecutive_failures?: number;
|
|
6040
|
+
/** Format: date-time */
|
|
6041
|
+
last_failure_at?: string;
|
|
6042
|
+
/** Format: date-time */
|
|
6043
|
+
last_success_at?: string;
|
|
6044
|
+
/** @description The signing secret. Returned ONLY in the response of create (and of `rotate-secret`); get and list never include it. Store it when you create the subscription. */
|
|
6045
|
+
secret?: string;
|
|
5961
6046
|
/** @description Object is related with this account */
|
|
5962
6047
|
account: string;
|
|
5963
6048
|
/**
|
|
@@ -6012,6 +6097,26 @@ export interface components {
|
|
|
6012
6097
|
NotificationSubscriptionWebhook: {
|
|
6013
6098
|
/** @description NotificationSubscriptionWebhook ID */
|
|
6014
6099
|
id: string;
|
|
6100
|
+
/**
|
|
6101
|
+
* @description Events to subscribe to. For `webhook` subscriptions it must be a subset of the published catalog; any other value is rejected with a 400:
|
|
6102
|
+
*
|
|
6103
|
+
* - `user.created`: A user was created (signup, import or Management API).
|
|
6104
|
+
* - `user.updated`: A user was updated.
|
|
6105
|
+
* - `user.deleted`: A user was deleted.
|
|
6106
|
+
* - `auth.login`: A user logged in.
|
|
6107
|
+
* - `credentials.exported`: Someone exported the tenant's password hashes (`GET /user/export` with hashes).
|
|
6108
|
+
* - `team.created`: A team was created.
|
|
6109
|
+
* - `team.updated`: A team was updated.
|
|
6110
|
+
* - `team.deleted`: A team was deleted.
|
|
6111
|
+
* - `team.member.added`: A user was added to a team.
|
|
6112
|
+
* - `team.member.updated`: A team member's roles changed.
|
|
6113
|
+
* - `team.member.removed`: A user was removed from a team (or left it).
|
|
6114
|
+
* - `team.invite.created`: An invitation to join a team was created.
|
|
6115
|
+
* - `team.invite.revoked`: A pending team invitation was revoked.
|
|
6116
|
+
* - `team.invite.accepted`: A team invitation was accepted.
|
|
6117
|
+
*
|
|
6118
|
+
* `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.
|
|
6119
|
+
*/
|
|
6015
6120
|
events: string[];
|
|
6016
6121
|
/** @enum {string} */
|
|
6017
6122
|
channel: "webhook";
|
|
@@ -6023,9 +6128,22 @@ export interface components {
|
|
|
6023
6128
|
* @description Webhook URL
|
|
6024
6129
|
*/
|
|
6025
6130
|
url: string;
|
|
6026
|
-
/**
|
|
6027
|
-
|
|
6131
|
+
/**
|
|
6132
|
+
* Format: date-time
|
|
6133
|
+
* @description Set after a `rotate-secret`: until this instant deliveries are signed with both the new and the previous secret.
|
|
6134
|
+
*/
|
|
6135
|
+
previous_secret_expires_at?: string;
|
|
6028
6136
|
};
|
|
6137
|
+
/** @description `failing` after several consecutive failed delivery attempts; the next successful delivery (or a successful `test`) sets it back to `healthy`. A failing subscription keeps receiving deliveries: it is never deactivated automatically. */
|
|
6138
|
+
status?: "healthy" | "failing";
|
|
6139
|
+
/** @description Failed delivery attempts since the last success. */
|
|
6140
|
+
consecutive_failures?: number;
|
|
6141
|
+
/** Format: date-time */
|
|
6142
|
+
last_failure_at?: string;
|
|
6143
|
+
/** Format: date-time */
|
|
6144
|
+
last_success_at?: string;
|
|
6145
|
+
/** @description The signing secret. Returned ONLY in the response of create (and of `rotate-secret`); get and list never include it. Store it when you create the subscription. */
|
|
6146
|
+
secret?: string;
|
|
6029
6147
|
/** @description Object is related with this account */
|
|
6030
6148
|
account: string;
|
|
6031
6149
|
/**
|
|
@@ -6046,8 +6164,11 @@ export interface components {
|
|
|
6046
6164
|
* @description Webhook URL
|
|
6047
6165
|
*/
|
|
6048
6166
|
url: string;
|
|
6049
|
-
/**
|
|
6050
|
-
|
|
6167
|
+
/**
|
|
6168
|
+
* Format: date-time
|
|
6169
|
+
* @description Set after a `rotate-secret`: until this instant deliveries are signed with both the new and the previous secret.
|
|
6170
|
+
*/
|
|
6171
|
+
previous_secret_expires_at?: string;
|
|
6051
6172
|
};
|
|
6052
6173
|
/**
|
|
6053
6174
|
* @description NotificationSubscriptionWebhookMetadata
|
|
@@ -6071,6 +6192,26 @@ export interface components {
|
|
|
6071
6192
|
[key: string]: unknown;
|
|
6072
6193
|
};
|
|
6073
6194
|
} | {
|
|
6195
|
+
/**
|
|
6196
|
+
* @description Events to subscribe to. For `webhook` subscriptions it must be a subset of the published catalog; any other value is rejected with a 400:
|
|
6197
|
+
*
|
|
6198
|
+
* - `user.created`: A user was created (signup, import or Management API).
|
|
6199
|
+
* - `user.updated`: A user was updated.
|
|
6200
|
+
* - `user.deleted`: A user was deleted.
|
|
6201
|
+
* - `auth.login`: A user logged in.
|
|
6202
|
+
* - `credentials.exported`: Someone exported the tenant's password hashes (`GET /user/export` with hashes).
|
|
6203
|
+
* - `team.created`: A team was created.
|
|
6204
|
+
* - `team.updated`: A team was updated.
|
|
6205
|
+
* - `team.deleted`: A team was deleted.
|
|
6206
|
+
* - `team.member.added`: A user was added to a team.
|
|
6207
|
+
* - `team.member.updated`: A team member's roles changed.
|
|
6208
|
+
* - `team.member.removed`: A user was removed from a team (or left it).
|
|
6209
|
+
* - `team.invite.created`: An invitation to join a team was created.
|
|
6210
|
+
* - `team.invite.revoked`: A pending team invitation was revoked.
|
|
6211
|
+
* - `team.invite.accepted`: A team invitation was accepted.
|
|
6212
|
+
*
|
|
6213
|
+
* `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.
|
|
6214
|
+
*/
|
|
6074
6215
|
events: string[];
|
|
6075
6216
|
/** @enum {string} */
|
|
6076
6217
|
channel: "webhook";
|
|
@@ -6079,11 +6220,11 @@ export interface components {
|
|
|
6079
6220
|
config: {
|
|
6080
6221
|
/**
|
|
6081
6222
|
* Format: uri
|
|
6082
|
-
* @description Webhook URL
|
|
6223
|
+
* @description Webhook URL. Must be `https`. Deliveries to private, loopback, link-local or metadata addresses are refused at delivery time.
|
|
6083
6224
|
*/
|
|
6084
6225
|
url: string;
|
|
6085
|
-
/** @description Secret used to sign the webhook payload */
|
|
6086
|
-
secret
|
|
6226
|
+
/** @description Secret used to sign the webhook payload. Optional: when omitted one is generated and returned once, in the `secret` field of the response. */
|
|
6227
|
+
secret?: string;
|
|
6087
6228
|
};
|
|
6088
6229
|
/** @description Add Metadata */
|
|
6089
6230
|
metadata?: {
|
|
@@ -6114,6 +6255,26 @@ export interface components {
|
|
|
6114
6255
|
};
|
|
6115
6256
|
/** @description NotificationSubscriptionWebhookCreate */
|
|
6116
6257
|
NotificationSubscriptionWebhookCreate: {
|
|
6258
|
+
/**
|
|
6259
|
+
* @description Events to subscribe to. For `webhook` subscriptions it must be a subset of the published catalog; any other value is rejected with a 400:
|
|
6260
|
+
*
|
|
6261
|
+
* - `user.created`: A user was created (signup, import or Management API).
|
|
6262
|
+
* - `user.updated`: A user was updated.
|
|
6263
|
+
* - `user.deleted`: A user was deleted.
|
|
6264
|
+
* - `auth.login`: A user logged in.
|
|
6265
|
+
* - `credentials.exported`: Someone exported the tenant's password hashes (`GET /user/export` with hashes).
|
|
6266
|
+
* - `team.created`: A team was created.
|
|
6267
|
+
* - `team.updated`: A team was updated.
|
|
6268
|
+
* - `team.deleted`: A team was deleted.
|
|
6269
|
+
* - `team.member.added`: A user was added to a team.
|
|
6270
|
+
* - `team.member.updated`: A team member's roles changed.
|
|
6271
|
+
* - `team.member.removed`: A user was removed from a team (or left it).
|
|
6272
|
+
* - `team.invite.created`: An invitation to join a team was created.
|
|
6273
|
+
* - `team.invite.revoked`: A pending team invitation was revoked.
|
|
6274
|
+
* - `team.invite.accepted`: A team invitation was accepted.
|
|
6275
|
+
*
|
|
6276
|
+
* `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.
|
|
6277
|
+
*/
|
|
6117
6278
|
events: string[];
|
|
6118
6279
|
/** @enum {string} */
|
|
6119
6280
|
channel: "webhook";
|
|
@@ -6122,11 +6283,11 @@ export interface components {
|
|
|
6122
6283
|
config: {
|
|
6123
6284
|
/**
|
|
6124
6285
|
* Format: uri
|
|
6125
|
-
* @description Webhook URL
|
|
6286
|
+
* @description Webhook URL. Must be `https`. Deliveries to private, loopback, link-local or metadata addresses are refused at delivery time.
|
|
6126
6287
|
*/
|
|
6127
6288
|
url: string;
|
|
6128
|
-
/** @description Secret used to sign the webhook payload */
|
|
6129
|
-
secret
|
|
6289
|
+
/** @description Secret used to sign the webhook payload. Optional: when omitted one is generated and returned once, in the `secret` field of the response. */
|
|
6290
|
+
secret?: string;
|
|
6130
6291
|
};
|
|
6131
6292
|
/** @description Add Metadata */
|
|
6132
6293
|
metadata?: {
|
|
@@ -6136,11 +6297,11 @@ export interface components {
|
|
|
6136
6297
|
NotificationSubscriptionWebhookConfigCreate: {
|
|
6137
6298
|
/**
|
|
6138
6299
|
* Format: uri
|
|
6139
|
-
* @description Webhook URL
|
|
6300
|
+
* @description Webhook URL. Must be `https`. Deliveries to private, loopback, link-local or metadata addresses are refused at delivery time.
|
|
6140
6301
|
*/
|
|
6141
6302
|
url: string;
|
|
6142
|
-
/** @description Secret used to sign the webhook payload */
|
|
6143
|
-
secret
|
|
6303
|
+
/** @description Secret used to sign the webhook payload. Optional: when omitted one is generated and returned once, in the `secret` field of the response. */
|
|
6304
|
+
secret?: string;
|
|
6144
6305
|
};
|
|
6145
6306
|
/** @description Add Metadata */
|
|
6146
6307
|
NotificationSubscriptionWebhookMetadataCreate: {
|
|
@@ -6161,6 +6322,26 @@ export interface components {
|
|
|
6161
6322
|
[key: string]: unknown;
|
|
6162
6323
|
};
|
|
6163
6324
|
} | {
|
|
6325
|
+
/**
|
|
6326
|
+
* @description Events to subscribe to. For `webhook` subscriptions it must be a subset of the published catalog; any other value is rejected with a 400:
|
|
6327
|
+
*
|
|
6328
|
+
* - `user.created`: A user was created (signup, import or Management API).
|
|
6329
|
+
* - `user.updated`: A user was updated.
|
|
6330
|
+
* - `user.deleted`: A user was deleted.
|
|
6331
|
+
* - `auth.login`: A user logged in.
|
|
6332
|
+
* - `credentials.exported`: Someone exported the tenant's password hashes (`GET /user/export` with hashes).
|
|
6333
|
+
* - `team.created`: A team was created.
|
|
6334
|
+
* - `team.updated`: A team was updated.
|
|
6335
|
+
* - `team.deleted`: A team was deleted.
|
|
6336
|
+
* - `team.member.added`: A user was added to a team.
|
|
6337
|
+
* - `team.member.updated`: A team member's roles changed.
|
|
6338
|
+
* - `team.member.removed`: A user was removed from a team (or left it).
|
|
6339
|
+
* - `team.invite.created`: An invitation to join a team was created.
|
|
6340
|
+
* - `team.invite.revoked`: A pending team invitation was revoked.
|
|
6341
|
+
* - `team.invite.accepted`: A team invitation was accepted.
|
|
6342
|
+
*
|
|
6343
|
+
* `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.
|
|
6344
|
+
*/
|
|
6164
6345
|
events?: string[];
|
|
6165
6346
|
/** @enum {string} */
|
|
6166
6347
|
channel?: "webhook";
|
|
@@ -6169,10 +6350,10 @@ export interface components {
|
|
|
6169
6350
|
config?: {
|
|
6170
6351
|
/**
|
|
6171
6352
|
* Format: uri
|
|
6172
|
-
* @description Webhook URL
|
|
6353
|
+
* @description Webhook URL. Must be `https`.
|
|
6173
6354
|
*/
|
|
6174
6355
|
url?: string;
|
|
6175
|
-
/** @description
|
|
6356
|
+
/** @description Replaces the signing secret immediately, with no overlap. Prefer `POST /notificationsubscription/{id}/rotate-secret`, which keeps the previous secret valid for 24 hours. */
|
|
6176
6357
|
secret?: string;
|
|
6177
6358
|
};
|
|
6178
6359
|
/** @description Metadata update */
|
|
@@ -6759,13 +6940,20 @@ export interface components {
|
|
|
6759
6940
|
* - `invite_used` (400): The invite was already accepted.
|
|
6760
6941
|
* - `already_member` (400): The user is already a member of the team.
|
|
6761
6942
|
* - `not_a_member` (404): The user is not a member of the team.
|
|
6943
|
+
* - `team_id_unavailable` (409): The team id cannot be used in this tenant. Pick another id or let the API generate one.
|
|
6944
|
+
* - `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.
|
|
6762
6945
|
* - `role_not_found` (404): No role with that id in this account.
|
|
6763
6946
|
* - `invalid_role` (400): The role belongs to another account.
|
|
6764
6947
|
* - `flow_not_found` (400): The login flow does not exist in this account.
|
|
6765
6948
|
* - `revision_not_found` (404): The revision is not in the flow history.
|
|
6949
|
+
* - `invalid_webhook_event` (400): An event is not in the webhook event catalog. `message` and `details.valid_events` list the valid ones.
|
|
6950
|
+
* - `invalid_webhook_url` (400): The webhook URL must be an absolute `https` URL.
|
|
6951
|
+
* - `not_a_webhook` (400): The operation only applies to `webhook` subscriptions.
|
|
6952
|
+
* - `delivery_not_found` (404): No webhook delivery with that id for this subscription.
|
|
6953
|
+
* - `delivery_in_progress` (409): The delivery is being attempted right now; retry the redeliver in a minute.
|
|
6766
6954
|
* @enum {string}
|
|
6767
6955
|
*/
|
|
6768
|
-
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" | "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" | "invite_not_found" | "invite_used" | "already_member" | "not_a_member" | "role_not_found" | "invalid_role" | "flow_not_found" | "revision_not_found";
|
|
6956
|
+
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" | "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" | "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";
|
|
6769
6957
|
/** @description Every error response has this shape. Branch on `error_code`, never on `message`: the message is written for a person and may change. */
|
|
6770
6958
|
ErrorResponse: {
|
|
6771
6959
|
/** @description The HTTP status, repeated. */
|
|
@@ -16964,141 +17152,6 @@ export interface operations {
|
|
|
16964
17152
|
};
|
|
16965
17153
|
};
|
|
16966
17154
|
};
|
|
16967
|
-
"rolemember/create": {
|
|
16968
|
-
parameters: {
|
|
16969
|
-
query?: never;
|
|
16970
|
-
header?: never;
|
|
16971
|
-
path?: never;
|
|
16972
|
-
cookie?: never;
|
|
16973
|
-
};
|
|
16974
|
-
/** @description Payload for granting a role to one or more users in a single call. Posted to `POST /role/:role_id/users`. */
|
|
16975
|
-
requestBody: {
|
|
16976
|
-
content: {
|
|
16977
|
-
"application/json": {
|
|
16978
|
-
/**
|
|
16979
|
-
* @description List of User ids to grant the role to. Existing role memberships are preserved; passing a user that already holds the role is a no-op.
|
|
16980
|
-
* @example [
|
|
16981
|
-
* "user_6555fd293acc2f0fac0e3452"
|
|
16982
|
-
* ]
|
|
16983
|
-
*/
|
|
16984
|
-
users: string[];
|
|
16985
|
-
};
|
|
16986
|
-
};
|
|
16987
|
-
};
|
|
16988
|
-
responses: {
|
|
16989
|
-
/** @description RoleMember */
|
|
16990
|
-
200: {
|
|
16991
|
-
headers: {
|
|
16992
|
-
[name: string]: unknown;
|
|
16993
|
-
};
|
|
16994
|
-
content: {
|
|
16995
|
-
"application/json": {
|
|
16996
|
-
/** @description RoleMember ID */
|
|
16997
|
-
id: string;
|
|
16998
|
-
/** @description Role granted to the user. Returned as an id by default; pass `?expand=role` to inline the full Role object. */
|
|
16999
|
-
role: components["schemas"]["Role"] | string | unknown;
|
|
17000
|
-
/** @description User the role is granted to. Returned as an id by default; pass `?expand=user` to inline the full User object. */
|
|
17001
|
-
user: components["schemas"]["User"] | string | unknown;
|
|
17002
|
-
/** @description Object is related with this account */
|
|
17003
|
-
account: string;
|
|
17004
|
-
/**
|
|
17005
|
-
* @description RoleMemberMetadata
|
|
17006
|
-
* @default {}
|
|
17007
|
-
*/
|
|
17008
|
-
metadata: {
|
|
17009
|
-
[key: string]: unknown;
|
|
17010
|
-
};
|
|
17011
|
-
/** @description RoleMember creation date */
|
|
17012
|
-
createdAt: string;
|
|
17013
|
-
/** @description RoleMember updated date */
|
|
17014
|
-
updatedAt?: string;
|
|
17015
|
-
};
|
|
17016
|
-
};
|
|
17017
|
-
};
|
|
17018
|
-
/**
|
|
17019
|
-
* @description `already_exists` — A resource with the same unique field already exists (for a user, usually `email`). `details.fields` names the field.
|
|
17020
|
-
*
|
|
17021
|
-
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
17022
|
-
*/
|
|
17023
|
-
400: {
|
|
17024
|
-
headers: {
|
|
17025
|
-
[name: string]: unknown;
|
|
17026
|
-
};
|
|
17027
|
-
content: {
|
|
17028
|
-
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
17029
|
-
/** @enum {string} */
|
|
17030
|
-
error_code?: "already_exists" | "validation_error";
|
|
17031
|
-
};
|
|
17032
|
-
};
|
|
17033
|
-
};
|
|
17034
|
-
/** @description `unauthorized` — The request carries no valid credentials. */
|
|
17035
|
-
401: {
|
|
17036
|
-
headers: {
|
|
17037
|
-
[name: string]: unknown;
|
|
17038
|
-
};
|
|
17039
|
-
content: {
|
|
17040
|
-
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
17041
|
-
/** @enum {string} */
|
|
17042
|
-
error_code?: "unauthorized";
|
|
17043
|
-
};
|
|
17044
|
-
};
|
|
17045
|
-
};
|
|
17046
|
-
/**
|
|
17047
|
-
* @description `forbidden` — The credentials are valid but do not allow this operation.
|
|
17048
|
-
*
|
|
17049
|
-
* `insufficient_scope` — The token lacks a scope this operation requires. `message` names it.
|
|
17050
|
-
*
|
|
17051
|
-
* `user_suspended` — The user is suspended and cannot sign in or be modified.
|
|
17052
|
-
*/
|
|
17053
|
-
403: {
|
|
17054
|
-
headers: {
|
|
17055
|
-
[name: string]: unknown;
|
|
17056
|
-
};
|
|
17057
|
-
content: {
|
|
17058
|
-
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
17059
|
-
/** @enum {string} */
|
|
17060
|
-
error_code?: "forbidden" | "insufficient_scope" | "user_suspended";
|
|
17061
|
-
};
|
|
17062
|
-
};
|
|
17063
|
-
};
|
|
17064
|
-
/** @description `account_not_found` — No Auth Account matches the request (domain, header or token). */
|
|
17065
|
-
404: {
|
|
17066
|
-
headers: {
|
|
17067
|
-
[name: string]: unknown;
|
|
17068
|
-
};
|
|
17069
|
-
content: {
|
|
17070
|
-
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
17071
|
-
/** @enum {string} */
|
|
17072
|
-
error_code?: "account_not_found";
|
|
17073
|
-
};
|
|
17074
|
-
};
|
|
17075
|
-
};
|
|
17076
|
-
/** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
|
|
17077
|
-
429: {
|
|
17078
|
-
headers: {
|
|
17079
|
-
[name: string]: unknown;
|
|
17080
|
-
};
|
|
17081
|
-
content: {
|
|
17082
|
-
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
17083
|
-
/** @enum {string} */
|
|
17084
|
-
error_code?: "too_many_requests";
|
|
17085
|
-
};
|
|
17086
|
-
};
|
|
17087
|
-
};
|
|
17088
|
-
/** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
|
|
17089
|
-
500: {
|
|
17090
|
-
headers: {
|
|
17091
|
-
[name: string]: unknown;
|
|
17092
|
-
};
|
|
17093
|
-
content: {
|
|
17094
|
-
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
17095
|
-
/** @enum {string} */
|
|
17096
|
-
error_code?: "internal_error";
|
|
17097
|
-
};
|
|
17098
|
-
};
|
|
17099
|
-
};
|
|
17100
|
-
};
|
|
17101
|
-
};
|
|
17102
17155
|
"rolemember/get": {
|
|
17103
17156
|
parameters: {
|
|
17104
17157
|
query?: {
|
|
@@ -17769,27 +17822,36 @@ export interface operations {
|
|
|
17769
17822
|
};
|
|
17770
17823
|
};
|
|
17771
17824
|
};
|
|
17772
|
-
"team/
|
|
17825
|
+
"team/put": {
|
|
17773
17826
|
parameters: {
|
|
17774
17827
|
query?: never;
|
|
17775
17828
|
header?: never;
|
|
17776
17829
|
path: {
|
|
17830
|
+
/** @description Id of the team to create or update: `team_` followed by 24 lowercase hex characters, chosen by the caller. */
|
|
17777
17831
|
team_id: string;
|
|
17778
17832
|
};
|
|
17779
17833
|
cookie?: never;
|
|
17780
17834
|
};
|
|
17781
|
-
/** @description
|
|
17835
|
+
/** @description Payload for creating or updating a Team under a caller-chosen id. */
|
|
17782
17836
|
requestBody: {
|
|
17783
17837
|
content: {
|
|
17784
17838
|
"application/json": {
|
|
17785
|
-
/**
|
|
17786
|
-
|
|
17787
|
-
|
|
17788
|
-
|
|
17789
|
-
|
|
17790
|
-
|
|
17791
|
-
|
|
17792
|
-
|
|
17839
|
+
/**
|
|
17840
|
+
* @description Human-readable name of the team.
|
|
17841
|
+
* @example Acme Engineering
|
|
17842
|
+
*/
|
|
17843
|
+
name: string;
|
|
17844
|
+
/**
|
|
17845
|
+
* @description URL-safe identifier, unique within the tenant. Derived from `name` when omitted on creation; when given, it is set as-is (also on update). Pass it when names can repeat.
|
|
17846
|
+
* @example acme-engineering
|
|
17847
|
+
*/
|
|
17848
|
+
slug?: string;
|
|
17849
|
+
/** @description Optional free-form description. */
|
|
17850
|
+
description?: string;
|
|
17851
|
+
/** @description Arbitrary key/value pairs attached to the team. Replaces the previous metadata entirely. */
|
|
17852
|
+
metadata?: {
|
|
17853
|
+
[key: string]: unknown;
|
|
17854
|
+
};
|
|
17793
17855
|
};
|
|
17794
17856
|
};
|
|
17795
17857
|
};
|
|
@@ -17833,10 +17895,47 @@ export interface operations {
|
|
|
17833
17895
|
};
|
|
17834
17896
|
};
|
|
17835
17897
|
};
|
|
17898
|
+
/** @description Team */
|
|
17899
|
+
201: {
|
|
17900
|
+
headers: {
|
|
17901
|
+
[name: string]: unknown;
|
|
17902
|
+
};
|
|
17903
|
+
content: {
|
|
17904
|
+
"application/json": {
|
|
17905
|
+
/** @description Team ID */
|
|
17906
|
+
id: string;
|
|
17907
|
+
/**
|
|
17908
|
+
* @description Human-readable name of the team. Shown in the dashboard and in team-picker UI.
|
|
17909
|
+
* @example Acme Engineering
|
|
17910
|
+
*/
|
|
17911
|
+
name: string;
|
|
17912
|
+
/**
|
|
17913
|
+
* @description URL-safe identifier auto-derived from `name`. Unique within the tenant; used in routes that address a team by slug.
|
|
17914
|
+
* @example acme-engineering
|
|
17915
|
+
*/
|
|
17916
|
+
slug: string;
|
|
17917
|
+
/** @description Optional free-form description of the team. */
|
|
17918
|
+
description: string | null;
|
|
17919
|
+
/** @description Optional URL of an image used as the team avatar/logo. */
|
|
17920
|
+
logo_url: string | null;
|
|
17921
|
+
/** @description Object is related with this account */
|
|
17922
|
+
account: string;
|
|
17923
|
+
/**
|
|
17924
|
+
* @description TeamMetadata
|
|
17925
|
+
* @default {}
|
|
17926
|
+
*/
|
|
17927
|
+
metadata: {
|
|
17928
|
+
[key: string]: unknown;
|
|
17929
|
+
};
|
|
17930
|
+
/** @description Team creation date */
|
|
17931
|
+
createdAt: string;
|
|
17932
|
+
/** @description Team updated date */
|
|
17933
|
+
updatedAt?: string;
|
|
17934
|
+
};
|
|
17935
|
+
};
|
|
17936
|
+
};
|
|
17836
17937
|
/**
|
|
17837
|
-
* @description `
|
|
17838
|
-
*
|
|
17839
|
-
* `already_exists` — A resource with the same unique field already exists (for a user, usually `email`). `details.fields` names the field.
|
|
17938
|
+
* @description `already_exists` — A resource with the same unique field already exists (for a user, usually `email`). `details.fields` names the field.
|
|
17840
17939
|
*
|
|
17841
17940
|
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
17842
17941
|
*/
|
|
@@ -17847,7 +17946,7 @@ export interface operations {
|
|
|
17847
17946
|
content: {
|
|
17848
17947
|
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
17849
17948
|
/** @enum {string} */
|
|
17850
|
-
error_code?: "
|
|
17949
|
+
error_code?: "already_exists" | "validation_error";
|
|
17851
17950
|
};
|
|
17852
17951
|
};
|
|
17853
17952
|
};
|
|
@@ -17881,11 +17980,7 @@ export interface operations {
|
|
|
17881
17980
|
};
|
|
17882
17981
|
};
|
|
17883
17982
|
};
|
|
17884
|
-
/**
|
|
17885
|
-
* @description `not_found` — The resource does not exist in this account.
|
|
17886
|
-
*
|
|
17887
|
-
* `account_not_found` — No Auth Account matches the request (domain, header or token).
|
|
17888
|
-
*/
|
|
17983
|
+
/** @description `account_not_found` — No Auth Account matches the request (domain, header or token). */
|
|
17889
17984
|
404: {
|
|
17890
17985
|
headers: {
|
|
17891
17986
|
[name: string]: unknown;
|
|
@@ -17893,7 +17988,19 @@ export interface operations {
|
|
|
17893
17988
|
content: {
|
|
17894
17989
|
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
17895
17990
|
/** @enum {string} */
|
|
17896
|
-
error_code?: "
|
|
17991
|
+
error_code?: "account_not_found";
|
|
17992
|
+
};
|
|
17993
|
+
};
|
|
17994
|
+
};
|
|
17995
|
+
/** @description `team_id_unavailable` — The team id cannot be used in this tenant. Pick another id or let the API generate one. */
|
|
17996
|
+
409: {
|
|
17997
|
+
headers: {
|
|
17998
|
+
[name: string]: unknown;
|
|
17999
|
+
};
|
|
18000
|
+
content: {
|
|
18001
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
18002
|
+
/** @enum {string} */
|
|
18003
|
+
error_code?: "team_id_unavailable";
|
|
17897
18004
|
};
|
|
17898
18005
|
};
|
|
17899
18006
|
};
|
|
@@ -17923,7 +18030,7 @@ export interface operations {
|
|
|
17923
18030
|
};
|
|
17924
18031
|
};
|
|
17925
18032
|
};
|
|
17926
|
-
"team/
|
|
18033
|
+
"team/update": {
|
|
17927
18034
|
parameters: {
|
|
17928
18035
|
query?: never;
|
|
17929
18036
|
header?: never;
|
|
@@ -17932,7 +18039,21 @@ export interface operations {
|
|
|
17932
18039
|
};
|
|
17933
18040
|
cookie?: never;
|
|
17934
18041
|
};
|
|
17935
|
-
|
|
18042
|
+
/** @description Partial update for a Team. Only the supplied fields are modified. `slug` is auto-derived from `name` and is not user-editable. */
|
|
18043
|
+
requestBody: {
|
|
18044
|
+
content: {
|
|
18045
|
+
"application/json": {
|
|
18046
|
+
/** @description New human-readable name for the team. */
|
|
18047
|
+
name?: string;
|
|
18048
|
+
/** @description New free-form description for the team. */
|
|
18049
|
+
description?: string;
|
|
18050
|
+
/** @description Arbitrary key/value pairs attached to the team. Replaces the previous metadata entirely. */
|
|
18051
|
+
metadata?: {
|
|
18052
|
+
[key: string]: unknown;
|
|
18053
|
+
};
|
|
18054
|
+
};
|
|
18055
|
+
};
|
|
18056
|
+
};
|
|
17936
18057
|
responses: {
|
|
17937
18058
|
/** @description Team */
|
|
17938
18059
|
200: {
|
|
@@ -17976,6 +18097,8 @@ export interface operations {
|
|
|
17976
18097
|
/**
|
|
17977
18098
|
* @description `invalid_id` — The id in the path is not a valid id for this resource.
|
|
17978
18099
|
*
|
|
18100
|
+
* `already_exists` — A resource with the same unique field already exists (for a user, usually `email`). `details.fields` names the field.
|
|
18101
|
+
*
|
|
17979
18102
|
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
17980
18103
|
*/
|
|
17981
18104
|
400: {
|
|
@@ -17985,7 +18108,7 @@ export interface operations {
|
|
|
17985
18108
|
content: {
|
|
17986
18109
|
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
17987
18110
|
/** @enum {string} */
|
|
17988
|
-
error_code?: "invalid_id" | "validation_error";
|
|
18111
|
+
error_code?: "invalid_id" | "already_exists" | "validation_error";
|
|
17989
18112
|
};
|
|
17990
18113
|
};
|
|
17991
18114
|
};
|
|
@@ -18061,48 +18184,58 @@ export interface operations {
|
|
|
18061
18184
|
};
|
|
18062
18185
|
};
|
|
18063
18186
|
};
|
|
18064
|
-
"
|
|
18187
|
+
"team/delete": {
|
|
18065
18188
|
parameters: {
|
|
18066
|
-
query?:
|
|
18067
|
-
/** @description Number of items per page (max 200) */
|
|
18068
|
-
pageSize?: number;
|
|
18069
|
-
/** @description Cursor for next page */
|
|
18070
|
-
cursor?: string;
|
|
18071
|
-
/** @description Cursor returned by the previous page */
|
|
18072
|
-
next?: string;
|
|
18073
|
-
/** @description Exact match on `user`. Equivalent to `?query=user:<value>`. */
|
|
18074
|
-
user?: string;
|
|
18075
|
-
/** @description Exact match on `team`. Equivalent to `?query=team:<value>`. */
|
|
18076
|
-
team?: string;
|
|
18077
|
-
/** @description Filter using a FaableQL query */
|
|
18078
|
-
query?: string;
|
|
18079
|
-
/** @description Expand id-only fields in the response. Pass one path per entry (e.g. `?expand=user`). */
|
|
18080
|
-
expand?: ("user" | "team" | "roles")[];
|
|
18081
|
-
};
|
|
18189
|
+
query?: never;
|
|
18082
18190
|
header?: never;
|
|
18083
|
-
path
|
|
18191
|
+
path: {
|
|
18192
|
+
team_id: string;
|
|
18193
|
+
};
|
|
18084
18194
|
cookie?: never;
|
|
18085
18195
|
};
|
|
18086
18196
|
requestBody?: never;
|
|
18087
18197
|
responses: {
|
|
18088
|
-
/** @description
|
|
18198
|
+
/** @description Team */
|
|
18089
18199
|
200: {
|
|
18090
18200
|
headers: {
|
|
18091
18201
|
[name: string]: unknown;
|
|
18092
18202
|
};
|
|
18093
18203
|
content: {
|
|
18094
18204
|
"application/json": {
|
|
18095
|
-
|
|
18096
|
-
|
|
18205
|
+
/** @description Team ID */
|
|
18206
|
+
id: string;
|
|
18207
|
+
/**
|
|
18208
|
+
* @description Human-readable name of the team. Shown in the dashboard and in team-picker UI.
|
|
18209
|
+
* @example Acme Engineering
|
|
18210
|
+
*/
|
|
18211
|
+
name: string;
|
|
18212
|
+
/**
|
|
18213
|
+
* @description URL-safe identifier auto-derived from `name`. Unique within the tenant; used in routes that address a team by slug.
|
|
18214
|
+
* @example acme-engineering
|
|
18215
|
+
*/
|
|
18216
|
+
slug: string;
|
|
18217
|
+
/** @description Optional free-form description of the team. */
|
|
18218
|
+
description: string | null;
|
|
18219
|
+
/** @description Optional URL of an image used as the team avatar/logo. */
|
|
18220
|
+
logo_url: string | null;
|
|
18221
|
+
/** @description Object is related with this account */
|
|
18222
|
+
account: string;
|
|
18223
|
+
/**
|
|
18224
|
+
* @description TeamMetadata
|
|
18225
|
+
* @default {}
|
|
18226
|
+
*/
|
|
18227
|
+
metadata: {
|
|
18228
|
+
[key: string]: unknown;
|
|
18229
|
+
};
|
|
18230
|
+
/** @description Team creation date */
|
|
18231
|
+
createdAt: string;
|
|
18232
|
+
/** @description Team updated date */
|
|
18233
|
+
updatedAt?: string;
|
|
18097
18234
|
};
|
|
18098
18235
|
};
|
|
18099
18236
|
};
|
|
18100
18237
|
/**
|
|
18101
|
-
* @description `
|
|
18102
|
-
*
|
|
18103
|
-
* `invalid_expand` — An `?expand=` path is not allowed on this resource.
|
|
18104
|
-
*
|
|
18105
|
-
* `search_not_supported` — This resource does not support `?search=`.
|
|
18238
|
+
* @description `invalid_id` — The id in the path is not a valid id for this resource.
|
|
18106
18239
|
*
|
|
18107
18240
|
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
18108
18241
|
*/
|
|
@@ -18113,7 +18246,7 @@ export interface operations {
|
|
|
18113
18246
|
content: {
|
|
18114
18247
|
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
18115
18248
|
/** @enum {string} */
|
|
18116
|
-
error_code?: "
|
|
18249
|
+
error_code?: "invalid_id" | "validation_error";
|
|
18117
18250
|
};
|
|
18118
18251
|
};
|
|
18119
18252
|
};
|
|
@@ -18147,7 +18280,11 @@ export interface operations {
|
|
|
18147
18280
|
};
|
|
18148
18281
|
};
|
|
18149
18282
|
};
|
|
18150
|
-
/**
|
|
18283
|
+
/**
|
|
18284
|
+
* @description `not_found` — The resource does not exist in this account.
|
|
18285
|
+
*
|
|
18286
|
+
* `account_not_found` — No Auth Account matches the request (domain, header or token).
|
|
18287
|
+
*/
|
|
18151
18288
|
404: {
|
|
18152
18289
|
headers: {
|
|
18153
18290
|
[name: string]: unknown;
|
|
@@ -18155,7 +18292,7 @@ export interface operations {
|
|
|
18155
18292
|
content: {
|
|
18156
18293
|
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
18157
18294
|
/** @enum {string} */
|
|
18158
|
-
error_code?: "account_not_found";
|
|
18295
|
+
error_code?: "not_found" | "account_not_found";
|
|
18159
18296
|
};
|
|
18160
18297
|
};
|
|
18161
18298
|
};
|
|
@@ -18185,69 +18322,48 @@ export interface operations {
|
|
|
18185
18322
|
};
|
|
18186
18323
|
};
|
|
18187
18324
|
};
|
|
18188
|
-
"teammember/
|
|
18325
|
+
"teammember/list": {
|
|
18189
18326
|
parameters: {
|
|
18190
|
-
query?:
|
|
18327
|
+
query?: {
|
|
18328
|
+
/** @description Number of items per page (max 200) */
|
|
18329
|
+
pageSize?: number;
|
|
18330
|
+
/** @description Cursor for next page */
|
|
18331
|
+
cursor?: string;
|
|
18332
|
+
/** @description Cursor returned by the previous page */
|
|
18333
|
+
next?: string;
|
|
18334
|
+
/** @description Exact match on `user`. Equivalent to `?query=user:<value>`. */
|
|
18335
|
+
user?: string;
|
|
18336
|
+
/** @description Exact match on `team`. Equivalent to `?query=team:<value>`. */
|
|
18337
|
+
team?: string;
|
|
18338
|
+
/** @description Filter using a FaableQL query */
|
|
18339
|
+
query?: string;
|
|
18340
|
+
/** @description Expand id-only fields in the response. Pass one path per entry (e.g. `?expand=user`). */
|
|
18341
|
+
expand?: ("user" | "team" | "roles")[];
|
|
18342
|
+
};
|
|
18191
18343
|
header?: never;
|
|
18192
18344
|
path?: never;
|
|
18193
18345
|
cookie?: never;
|
|
18194
18346
|
};
|
|
18195
|
-
|
|
18196
|
-
requestBody: {
|
|
18197
|
-
content: {
|
|
18198
|
-
"application/json": {
|
|
18199
|
-
/**
|
|
18200
|
-
* @description List of User ids to add as members of the team. Users already in the team are skipped.
|
|
18201
|
-
* @example [
|
|
18202
|
-
* "user_6555fd293acc2f0fac0e3452"
|
|
18203
|
-
* ]
|
|
18204
|
-
*/
|
|
18205
|
-
users: string[];
|
|
18206
|
-
/**
|
|
18207
|
-
* @description Role ids to grant to the added members within the scope of this team.
|
|
18208
|
-
* @default []
|
|
18209
|
-
* @example [
|
|
18210
|
-
* "role_6555fd293acc2f0fac0e3452"
|
|
18211
|
-
* ]
|
|
18212
|
-
*/
|
|
18213
|
-
roles?: string[];
|
|
18214
|
-
};
|
|
18215
|
-
};
|
|
18216
|
-
};
|
|
18347
|
+
requestBody?: never;
|
|
18217
18348
|
responses: {
|
|
18218
|
-
/** @description
|
|
18349
|
+
/** @description Default Response */
|
|
18219
18350
|
200: {
|
|
18220
18351
|
headers: {
|
|
18221
18352
|
[name: string]: unknown;
|
|
18222
18353
|
};
|
|
18223
18354
|
content: {
|
|
18224
18355
|
"application/json": {
|
|
18225
|
-
|
|
18226
|
-
|
|
18227
|
-
/** @description User that belongs to the team. Returned as an id by default; pass `?expand=user` to inline the full User object. */
|
|
18228
|
-
user: components["schemas"]["User"] | string | unknown;
|
|
18229
|
-
/** @description Team the user belongs to. Returned as an id by default; pass `?expand=team` to inline the full Team object. */
|
|
18230
|
-
team: components["schemas"]["Team"] | string | unknown;
|
|
18231
|
-
/** @description Roles granted to the user *within this team*. Distinct from account-wide RoleMember grants — these only apply in the scope of the team. Each entry is an id by default; pass `?expand=roles` to inline. */
|
|
18232
|
-
roles: (components["schemas"]["Role"] | string | unknown)[];
|
|
18233
|
-
/** @description Object is related with this account */
|
|
18234
|
-
account: string;
|
|
18235
|
-
/**
|
|
18236
|
-
* @description TeamMemberMetadata
|
|
18237
|
-
* @default {}
|
|
18238
|
-
*/
|
|
18239
|
-
metadata: {
|
|
18240
|
-
[key: string]: unknown;
|
|
18241
|
-
};
|
|
18242
|
-
/** @description TeamMember creation date */
|
|
18243
|
-
createdAt: string;
|
|
18244
|
-
/** @description TeamMember updated date */
|
|
18245
|
-
updatedAt?: string;
|
|
18356
|
+
next: string | null;
|
|
18357
|
+
results: components["schemas"]["TeamMember"][];
|
|
18246
18358
|
};
|
|
18247
18359
|
};
|
|
18248
18360
|
};
|
|
18249
18361
|
/**
|
|
18250
|
-
* @description `
|
|
18362
|
+
* @description `invalid_query` — The `?query=` FaableQL expression could not be parsed.
|
|
18363
|
+
*
|
|
18364
|
+
* `invalid_expand` — An `?expand=` path is not allowed on this resource.
|
|
18365
|
+
*
|
|
18366
|
+
* `search_not_supported` — This resource does not support `?search=`.
|
|
18251
18367
|
*
|
|
18252
18368
|
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
18253
18369
|
*/
|
|
@@ -18258,7 +18374,7 @@ export interface operations {
|
|
|
18258
18374
|
content: {
|
|
18259
18375
|
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
18260
18376
|
/** @enum {string} */
|
|
18261
|
-
error_code?: "
|
|
18377
|
+
error_code?: "invalid_query" | "invalid_expand" | "search_not_supported" | "validation_error";
|
|
18262
18378
|
};
|
|
18263
18379
|
};
|
|
18264
18380
|
};
|
|
@@ -18775,6 +18891,8 @@ export interface operations {
|
|
|
18775
18891
|
/**
|
|
18776
18892
|
* @description `already_member` — The user is already a member of the team.
|
|
18777
18893
|
*
|
|
18894
|
+
* `invalid_role` — The role belongs to another account.
|
|
18895
|
+
*
|
|
18778
18896
|
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
18779
18897
|
*/
|
|
18780
18898
|
400: {
|
|
@@ -18784,7 +18902,7 @@ export interface operations {
|
|
|
18784
18902
|
content: {
|
|
18785
18903
|
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
18786
18904
|
/** @enum {string} */
|
|
18787
|
-
error_code?: "already_member" | "validation_error";
|
|
18905
|
+
error_code?: "already_member" | "invalid_role" | "validation_error";
|
|
18788
18906
|
};
|
|
18789
18907
|
};
|
|
18790
18908
|
};
|
|
@@ -18994,64 +19112,67 @@ export interface operations {
|
|
|
18994
19112
|
};
|
|
18995
19113
|
};
|
|
18996
19114
|
};
|
|
18997
|
-
"team/
|
|
19115
|
+
"team/updateMember": {
|
|
18998
19116
|
parameters: {
|
|
18999
|
-
query?:
|
|
19000
|
-
/** @description FaableQL filter. Supported fields: `email`. Example: `?query=email:foo@bar.com` */
|
|
19001
|
-
query?: string;
|
|
19002
|
-
};
|
|
19117
|
+
query?: never;
|
|
19003
19118
|
header?: never;
|
|
19004
19119
|
path: {
|
|
19005
19120
|
team_id: string;
|
|
19121
|
+
user_id: string;
|
|
19006
19122
|
};
|
|
19007
19123
|
cookie?: never;
|
|
19008
19124
|
};
|
|
19009
|
-
|
|
19010
|
-
|
|
19011
|
-
|
|
19012
|
-
|
|
19013
|
-
|
|
19125
|
+
/** @description Payload for replacing the roles of one team member. */
|
|
19126
|
+
requestBody: {
|
|
19127
|
+
content: {
|
|
19128
|
+
"application/json": {
|
|
19129
|
+
/**
|
|
19130
|
+
* @description Role ids the member will hold within this team. Replaces the current list entirely; `[]` leaves the member without roles.
|
|
19131
|
+
* @example [
|
|
19132
|
+
* "role_6555fd293acc2f0fac0e3452"
|
|
19133
|
+
* ]
|
|
19134
|
+
*/
|
|
19135
|
+
roles: string[];
|
|
19136
|
+
};
|
|
19137
|
+
};
|
|
19138
|
+
};
|
|
19139
|
+
responses: {
|
|
19140
|
+
/** @description TeamMember */
|
|
19141
|
+
200: {
|
|
19142
|
+
headers: {
|
|
19014
19143
|
[name: string]: unknown;
|
|
19015
19144
|
};
|
|
19016
19145
|
content: {
|
|
19017
19146
|
"application/json": {
|
|
19018
|
-
|
|
19019
|
-
|
|
19020
|
-
|
|
19021
|
-
|
|
19022
|
-
|
|
19023
|
-
|
|
19024
|
-
|
|
19025
|
-
|
|
19026
|
-
|
|
19027
|
-
|
|
19028
|
-
|
|
19029
|
-
|
|
19030
|
-
|
|
19031
|
-
|
|
19032
|
-
|
|
19033
|
-
|
|
19034
|
-
|
|
19035
|
-
|
|
19036
|
-
|
|
19037
|
-
|
|
19038
|
-
|
|
19039
|
-
/**
|
|
19040
|
-
* @description TeamInviteMetadata
|
|
19041
|
-
* @default {}
|
|
19042
|
-
*/
|
|
19043
|
-
metadata: {
|
|
19044
|
-
[key: string]: unknown;
|
|
19045
|
-
};
|
|
19046
|
-
/** @description TeamInvite creation date */
|
|
19047
|
-
createdAt: string;
|
|
19048
|
-
/** @description TeamInvite updated date */
|
|
19049
|
-
updatedAt?: string;
|
|
19050
|
-
}[];
|
|
19147
|
+
/** @description TeamMember ID */
|
|
19148
|
+
id: string;
|
|
19149
|
+
/** @description User that belongs to the team. Returned as an id by default; pass `?expand=user` to inline the full User object. */
|
|
19150
|
+
user: components["schemas"]["User"] | string | unknown;
|
|
19151
|
+
/** @description Team the user belongs to. Returned as an id by default; pass `?expand=team` to inline the full Team object. */
|
|
19152
|
+
team: components["schemas"]["Team"] | string | unknown;
|
|
19153
|
+
/** @description Roles granted to the user *within this team*. Distinct from account-wide RoleMember grants — these only apply in the scope of the team. Each entry is an id by default; pass `?expand=roles` to inline. */
|
|
19154
|
+
roles: (components["schemas"]["Role"] | string | unknown)[];
|
|
19155
|
+
/** @description Object is related with this account */
|
|
19156
|
+
account: string;
|
|
19157
|
+
/**
|
|
19158
|
+
* @description TeamMemberMetadata
|
|
19159
|
+
* @default {}
|
|
19160
|
+
*/
|
|
19161
|
+
metadata: {
|
|
19162
|
+
[key: string]: unknown;
|
|
19163
|
+
};
|
|
19164
|
+
/** @description TeamMember creation date */
|
|
19165
|
+
createdAt: string;
|
|
19166
|
+
/** @description TeamMember updated date */
|
|
19167
|
+
updatedAt?: string;
|
|
19051
19168
|
};
|
|
19052
19169
|
};
|
|
19053
19170
|
};
|
|
19054
|
-
/**
|
|
19171
|
+
/**
|
|
19172
|
+
* @description `invalid_role` — The role belongs to another account.
|
|
19173
|
+
*
|
|
19174
|
+
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
19175
|
+
*/
|
|
19055
19176
|
400: {
|
|
19056
19177
|
headers: {
|
|
19057
19178
|
[name: string]: unknown;
|
|
@@ -19059,7 +19180,7 @@ export interface operations {
|
|
|
19059
19180
|
content: {
|
|
19060
19181
|
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19061
19182
|
/** @enum {string} */
|
|
19062
|
-
error_code?: "validation_error";
|
|
19183
|
+
error_code?: "invalid_role" | "validation_error";
|
|
19063
19184
|
};
|
|
19064
19185
|
};
|
|
19065
19186
|
};
|
|
@@ -19093,7 +19214,13 @@ export interface operations {
|
|
|
19093
19214
|
};
|
|
19094
19215
|
};
|
|
19095
19216
|
};
|
|
19096
|
-
/**
|
|
19217
|
+
/**
|
|
19218
|
+
* @description `not_a_member` — The user is not a member of the team.
|
|
19219
|
+
*
|
|
19220
|
+
* `not_found` — The resource does not exist in this account.
|
|
19221
|
+
*
|
|
19222
|
+
* `account_not_found` — No Auth Account matches the request (domain, header or token).
|
|
19223
|
+
*/
|
|
19097
19224
|
404: {
|
|
19098
19225
|
headers: {
|
|
19099
19226
|
[name: string]: unknown;
|
|
@@ -19101,7 +19228,7 @@ export interface operations {
|
|
|
19101
19228
|
content: {
|
|
19102
19229
|
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19103
19230
|
/** @enum {string} */
|
|
19104
|
-
error_code?: "account_not_found";
|
|
19231
|
+
error_code?: "not_a_member" | "not_found" | "account_not_found";
|
|
19105
19232
|
};
|
|
19106
19233
|
};
|
|
19107
19234
|
};
|
|
@@ -19131,36 +19258,17 @@ export interface operations {
|
|
|
19131
19258
|
};
|
|
19132
19259
|
};
|
|
19133
19260
|
};
|
|
19134
|
-
"team/
|
|
19261
|
+
"team/removeMember": {
|
|
19135
19262
|
parameters: {
|
|
19136
19263
|
query?: never;
|
|
19137
19264
|
header?: never;
|
|
19138
19265
|
path: {
|
|
19139
19266
|
team_id: string;
|
|
19267
|
+
user_id: string;
|
|
19140
19268
|
};
|
|
19141
19269
|
cookie?: never;
|
|
19142
19270
|
};
|
|
19143
|
-
|
|
19144
|
-
requestBody: {
|
|
19145
|
-
content: {
|
|
19146
|
-
"application/json": {
|
|
19147
|
-
/**
|
|
19148
|
-
* @description Email of the user to invite to the team.
|
|
19149
|
-
* @example someone@example.com
|
|
19150
|
-
*/
|
|
19151
|
-
email: string;
|
|
19152
|
-
/**
|
|
19153
|
-
* @description Role ids granted to the resulting TeamMember within the scope of this team.
|
|
19154
|
-
* @default []
|
|
19155
|
-
*/
|
|
19156
|
-
roles?: string[];
|
|
19157
|
-
/** @description `auto` adds the user directly if they already exist in the tenant and only falls back to a ticketed invite when the email is unknown. `invite` always issues a ticket + email regardless of whether the user exists. */
|
|
19158
|
-
mode?: "auto" | "invite";
|
|
19159
|
-
/** @description Where to redirect the invitee after a successful accept. Defaults to `/`. */
|
|
19160
|
-
redirect_uri?: string;
|
|
19161
|
-
};
|
|
19162
|
-
};
|
|
19163
|
-
};
|
|
19271
|
+
requestBody?: never;
|
|
19164
19272
|
responses: {
|
|
19165
19273
|
/** @description Default Response */
|
|
19166
19274
|
200: {
|
|
@@ -19169,42 +19277,14 @@ export interface operations {
|
|
|
19169
19277
|
};
|
|
19170
19278
|
content: {
|
|
19171
19279
|
"application/json": {
|
|
19172
|
-
/** @description
|
|
19173
|
-
|
|
19174
|
-
/** @
|
|
19175
|
-
|
|
19176
|
-
/** @description TeamMember */
|
|
19177
|
-
member?: {
|
|
19178
|
-
/** @description TeamMember ID */
|
|
19179
|
-
id: string;
|
|
19180
|
-
/** @description User that belongs to the team. Returned as an id by default; pass `?expand=user` to inline the full User object. */
|
|
19181
|
-
user: components["schemas"]["User"] | string | unknown;
|
|
19182
|
-
/** @description Team the user belongs to. Returned as an id by default; pass `?expand=team` to inline the full Team object. */
|
|
19183
|
-
team: components["schemas"]["Team"] | string | unknown;
|
|
19184
|
-
/** @description Roles granted to the user *within this team*. Distinct from account-wide RoleMember grants — these only apply in the scope of the team. Each entry is an id by default; pass `?expand=roles` to inline. */
|
|
19185
|
-
roles: (components["schemas"]["Role"] | string | unknown)[];
|
|
19186
|
-
/** @description Object is related with this account */
|
|
19187
|
-
account: string;
|
|
19188
|
-
/**
|
|
19189
|
-
* @description TeamMemberMetadata
|
|
19190
|
-
* @default {}
|
|
19191
|
-
*/
|
|
19192
|
-
metadata: {
|
|
19193
|
-
[key: string]: unknown;
|
|
19194
|
-
};
|
|
19195
|
-
/** @description TeamMember creation date */
|
|
19196
|
-
createdAt: string;
|
|
19197
|
-
/** @description TeamMember updated date */
|
|
19198
|
-
updatedAt?: string;
|
|
19199
|
-
};
|
|
19280
|
+
/** @description Id of the removed TeamMember record. */
|
|
19281
|
+
id: string;
|
|
19282
|
+
/** @enum {boolean} */
|
|
19283
|
+
deleted: true;
|
|
19200
19284
|
};
|
|
19201
19285
|
};
|
|
19202
19286
|
};
|
|
19203
|
-
/**
|
|
19204
|
-
* @description `invite_used` — The invite was already accepted.
|
|
19205
|
-
*
|
|
19206
|
-
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
19207
|
-
*/
|
|
19287
|
+
/** @description `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field. */
|
|
19208
19288
|
400: {
|
|
19209
19289
|
headers: {
|
|
19210
19290
|
[name: string]: unknown;
|
|
@@ -19212,7 +19292,7 @@ export interface operations {
|
|
|
19212
19292
|
content: {
|
|
19213
19293
|
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19214
19294
|
/** @enum {string} */
|
|
19215
|
-
error_code?: "
|
|
19295
|
+
error_code?: "validation_error";
|
|
19216
19296
|
};
|
|
19217
19297
|
};
|
|
19218
19298
|
};
|
|
@@ -19246,7 +19326,13 @@ export interface operations {
|
|
|
19246
19326
|
};
|
|
19247
19327
|
};
|
|
19248
19328
|
};
|
|
19249
|
-
/**
|
|
19329
|
+
/**
|
|
19330
|
+
* @description `not_a_member` — The user is not a member of the team.
|
|
19331
|
+
*
|
|
19332
|
+
* `not_found` — The resource does not exist in this account.
|
|
19333
|
+
*
|
|
19334
|
+
* `account_not_found` — No Auth Account matches the request (domain, header or token).
|
|
19335
|
+
*/
|
|
19250
19336
|
404: {
|
|
19251
19337
|
headers: {
|
|
19252
19338
|
[name: string]: unknown;
|
|
@@ -19254,7 +19340,7 @@ export interface operations {
|
|
|
19254
19340
|
content: {
|
|
19255
19341
|
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19256
19342
|
/** @enum {string} */
|
|
19257
|
-
error_code?: "account_not_found";
|
|
19343
|
+
error_code?: "not_a_member" | "not_found" | "account_not_found";
|
|
19258
19344
|
};
|
|
19259
19345
|
};
|
|
19260
19346
|
};
|
|
@@ -19284,13 +19370,15 @@ export interface operations {
|
|
|
19284
19370
|
};
|
|
19285
19371
|
};
|
|
19286
19372
|
};
|
|
19287
|
-
"team/
|
|
19373
|
+
"team/listInvites": {
|
|
19288
19374
|
parameters: {
|
|
19289
|
-
query?:
|
|
19375
|
+
query?: {
|
|
19376
|
+
/** @description FaableQL filter. Supported fields: `email`. Example: `?query=email:foo@bar.com` */
|
|
19377
|
+
query?: string;
|
|
19378
|
+
};
|
|
19290
19379
|
header?: never;
|
|
19291
19380
|
path: {
|
|
19292
19381
|
team_id: string;
|
|
19293
|
-
ticket_id: string;
|
|
19294
19382
|
};
|
|
19295
19383
|
cookie?: never;
|
|
19296
19384
|
};
|
|
@@ -19303,8 +19391,39 @@ export interface operations {
|
|
|
19303
19391
|
};
|
|
19304
19392
|
content: {
|
|
19305
19393
|
"application/json": {
|
|
19306
|
-
|
|
19307
|
-
|
|
19394
|
+
data: {
|
|
19395
|
+
/** @description TeamInvite ID */
|
|
19396
|
+
id: string;
|
|
19397
|
+
/** @description Email address that was invited */
|
|
19398
|
+
email: string;
|
|
19399
|
+
/** @description Team the invitee will be added to upon acceptance. */
|
|
19400
|
+
team: components["schemas"]["Team"] | string | unknown;
|
|
19401
|
+
/** @description User that created the invitation, if known. */
|
|
19402
|
+
inviter?: components["schemas"]["User"] | string | unknown;
|
|
19403
|
+
/** @description Role ids that will be applied to the new TeamMember on acceptance. */
|
|
19404
|
+
roles: string[];
|
|
19405
|
+
/** @description `auto` adds the user directly if they already exist in the tenant and only falls back to a ticketed invite when the email is unknown. `invite` always issues a ticket + email regardless of whether the user exists. */
|
|
19406
|
+
mode: "auto" | "invite";
|
|
19407
|
+
/** @description URI to redirect the invitee to after a successful accept. */
|
|
19408
|
+
redirect_uri?: string;
|
|
19409
|
+
/** @description ISO 8601 timestamp at which the invite stops being valid. */
|
|
19410
|
+
expires_at: string;
|
|
19411
|
+
/** @description ISO 8601 timestamp at which the invite was accepted. Absent for pending invites. */
|
|
19412
|
+
consume_date?: string;
|
|
19413
|
+
/** @description Object is related with this account */
|
|
19414
|
+
account: string;
|
|
19415
|
+
/**
|
|
19416
|
+
* @description TeamInviteMetadata
|
|
19417
|
+
* @default {}
|
|
19418
|
+
*/
|
|
19419
|
+
metadata: {
|
|
19420
|
+
[key: string]: unknown;
|
|
19421
|
+
};
|
|
19422
|
+
/** @description TeamInvite creation date */
|
|
19423
|
+
createdAt: string;
|
|
19424
|
+
/** @description TeamInvite updated date */
|
|
19425
|
+
updatedAt?: string;
|
|
19426
|
+
}[];
|
|
19308
19427
|
};
|
|
19309
19428
|
};
|
|
19310
19429
|
};
|
|
@@ -19350,11 +19469,7 @@ export interface operations {
|
|
|
19350
19469
|
};
|
|
19351
19470
|
};
|
|
19352
19471
|
};
|
|
19353
|
-
/**
|
|
19354
|
-
* @description `invite_not_found` — No invite with that id in this account.
|
|
19355
|
-
*
|
|
19356
|
-
* `account_not_found` — No Auth Account matches the request (domain, header or token).
|
|
19357
|
-
*/
|
|
19472
|
+
/** @description `account_not_found` — No Auth Account matches the request (domain, header or token). */
|
|
19358
19473
|
404: {
|
|
19359
19474
|
headers: {
|
|
19360
19475
|
[name: string]: unknown;
|
|
@@ -19362,7 +19477,7 @@ export interface operations {
|
|
|
19362
19477
|
content: {
|
|
19363
19478
|
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19364
19479
|
/** @enum {string} */
|
|
19365
|
-
error_code?: "
|
|
19480
|
+
error_code?: "account_not_found";
|
|
19366
19481
|
};
|
|
19367
19482
|
};
|
|
19368
19483
|
};
|
|
@@ -19392,118 +19507,36 @@ export interface operations {
|
|
|
19392
19507
|
};
|
|
19393
19508
|
};
|
|
19394
19509
|
};
|
|
19395
|
-
|
|
19510
|
+
"team/invite": {
|
|
19396
19511
|
parameters: {
|
|
19397
|
-
query?:
|
|
19398
|
-
token?: string;
|
|
19399
|
-
ticket?: string;
|
|
19400
|
-
};
|
|
19512
|
+
query?: never;
|
|
19401
19513
|
header?: never;
|
|
19402
|
-
path
|
|
19514
|
+
path: {
|
|
19515
|
+
team_id: string;
|
|
19516
|
+
};
|
|
19403
19517
|
cookie?: never;
|
|
19404
19518
|
};
|
|
19405
|
-
|
|
19406
|
-
|
|
19407
|
-
|
|
19408
|
-
|
|
19409
|
-
|
|
19410
|
-
|
|
19411
|
-
|
|
19412
|
-
|
|
19413
|
-
|
|
19414
|
-
|
|
19415
|
-
|
|
19416
|
-
|
|
19417
|
-
|
|
19418
|
-
|
|
19419
|
-
|
|
19420
|
-
|
|
19421
|
-
|
|
19422
|
-
|
|
19423
|
-
|
|
19424
|
-
|
|
19425
|
-
|
|
19426
|
-
};
|
|
19427
|
-
content: {
|
|
19428
|
-
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19429
|
-
/** @enum {string} */
|
|
19430
|
-
error_code?: "invalid_ticket" | "ticket_expired" | "ticket_used" | "validation_error";
|
|
19431
|
-
};
|
|
19432
|
-
};
|
|
19433
|
-
};
|
|
19434
|
-
/**
|
|
19435
|
-
* @description `invite_not_found` — No invite with that id in this account.
|
|
19436
|
-
*
|
|
19437
|
-
* `account_not_found` — No Auth Account matches the request (domain, header or token).
|
|
19438
|
-
*/
|
|
19439
|
-
404: {
|
|
19440
|
-
headers: {
|
|
19441
|
-
[name: string]: unknown;
|
|
19442
|
-
};
|
|
19443
|
-
content: {
|
|
19444
|
-
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19445
|
-
/** @enum {string} */
|
|
19446
|
-
error_code?: "invite_not_found" | "account_not_found";
|
|
19447
|
-
};
|
|
19448
|
-
};
|
|
19449
|
-
};
|
|
19450
|
-
/** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
|
|
19451
|
-
429: {
|
|
19452
|
-
headers: {
|
|
19453
|
-
[name: string]: unknown;
|
|
19454
|
-
};
|
|
19455
|
-
content: {
|
|
19456
|
-
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19457
|
-
/** @enum {string} */
|
|
19458
|
-
error_code?: "too_many_requests";
|
|
19459
|
-
};
|
|
19460
|
-
};
|
|
19461
|
-
};
|
|
19462
|
-
/** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
|
|
19463
|
-
500: {
|
|
19464
|
-
headers: {
|
|
19465
|
-
[name: string]: unknown;
|
|
19466
|
-
};
|
|
19467
|
-
content: {
|
|
19468
|
-
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19469
|
-
/** @enum {string} */
|
|
19470
|
-
error_code?: "internal_error";
|
|
19471
|
-
};
|
|
19472
|
-
};
|
|
19473
|
-
};
|
|
19474
|
-
};
|
|
19475
|
-
};
|
|
19476
|
-
"api/list": {
|
|
19477
|
-
parameters: {
|
|
19478
|
-
query?: {
|
|
19479
|
-
/** @description Number of items per page (max 200) */
|
|
19480
|
-
pageSize?: number;
|
|
19481
|
-
/** @description Cursor for next page */
|
|
19482
|
-
cursor?: string;
|
|
19483
|
-
/** @description Cursor returned by the previous page */
|
|
19484
|
-
next?: string;
|
|
19485
|
-
/** @description Exact match on `name`. Equivalent to `?query=name:<value>`. */
|
|
19486
|
-
name?: string;
|
|
19487
|
-
/** @description Exact match on `slug`. Equivalent to `?query=slug:<value>`. */
|
|
19488
|
-
slug?: string;
|
|
19489
|
-
/** @description Exact match on `identifier`. Equivalent to `?query=identifier:<value>`. */
|
|
19490
|
-
identifier?: string;
|
|
19491
|
-
/** @description Exact match on `token_dialect`. Equivalent to `?query=token_dialect:<value>`. */
|
|
19492
|
-
token_dialect?: string;
|
|
19493
|
-
/** @description Exact match on `enforce_policies`. Equivalent to `?query=enforce_policies:<value>`. */
|
|
19494
|
-
enforce_policies?: string;
|
|
19495
|
-
/** @description Exact match on `allow_offline_access`. Equivalent to `?query=allow_offline_access:<value>`. */
|
|
19496
|
-
allow_offline_access?: string;
|
|
19497
|
-
/** @description Filter using a FaableQL query */
|
|
19498
|
-
query?: string;
|
|
19499
|
-
/** @description Full-text search across: `name`, `description`, `identifier`, `slug`. */
|
|
19500
|
-
q?: string;
|
|
19501
|
-
};
|
|
19502
|
-
header?: never;
|
|
19503
|
-
path?: never;
|
|
19504
|
-
cookie?: never;
|
|
19505
|
-
};
|
|
19506
|
-
requestBody?: never;
|
|
19519
|
+
/** @description Payload for inviting a user to a team by email. `mode='auto'` (default) adds the user immediately if they already exist in the tenant and falls back to a ticketed invite otherwise. `mode='invite'` always issues a ticket + email. */
|
|
19520
|
+
requestBody: {
|
|
19521
|
+
content: {
|
|
19522
|
+
"application/json": {
|
|
19523
|
+
/**
|
|
19524
|
+
* @description Email of the user to invite to the team.
|
|
19525
|
+
* @example someone@example.com
|
|
19526
|
+
*/
|
|
19527
|
+
email: string;
|
|
19528
|
+
/**
|
|
19529
|
+
* @description Role ids granted to the resulting TeamMember within the scope of this team.
|
|
19530
|
+
* @default []
|
|
19531
|
+
*/
|
|
19532
|
+
roles?: string[];
|
|
19533
|
+
/** @description `auto` adds the user directly if they already exist in the tenant and only falls back to a ticketed invite when the email is unknown. `invite` always issues a ticket + email regardless of whether the user exists. */
|
|
19534
|
+
mode?: "auto" | "invite";
|
|
19535
|
+
/** @description Where to redirect the invitee after a successful accept. Defaults to `/`. */
|
|
19536
|
+
redirect_uri?: string;
|
|
19537
|
+
};
|
|
19538
|
+
};
|
|
19539
|
+
};
|
|
19507
19540
|
responses: {
|
|
19508
19541
|
/** @description Default Response */
|
|
19509
19542
|
200: {
|
|
@@ -19512,17 +19545,41 @@ export interface operations {
|
|
|
19512
19545
|
};
|
|
19513
19546
|
content: {
|
|
19514
19547
|
"application/json": {
|
|
19515
|
-
|
|
19516
|
-
|
|
19548
|
+
/** @description `invited` when a ticket + email was issued, `added` when the user was added directly (auto mode + existing user). */
|
|
19549
|
+
status: "invited" | "added";
|
|
19550
|
+
/** @description ID of the issued invite ticket (when status=invited). */
|
|
19551
|
+
ticket_id?: string;
|
|
19552
|
+
/** @description TeamMember */
|
|
19553
|
+
member?: {
|
|
19554
|
+
/** @description TeamMember ID */
|
|
19555
|
+
id: string;
|
|
19556
|
+
/** @description User that belongs to the team. Returned as an id by default; pass `?expand=user` to inline the full User object. */
|
|
19557
|
+
user: components["schemas"]["User"] | string | unknown;
|
|
19558
|
+
/** @description Team the user belongs to. Returned as an id by default; pass `?expand=team` to inline the full Team object. */
|
|
19559
|
+
team: components["schemas"]["Team"] | string | unknown;
|
|
19560
|
+
/** @description Roles granted to the user *within this team*. Distinct from account-wide RoleMember grants — these only apply in the scope of the team. Each entry is an id by default; pass `?expand=roles` to inline. */
|
|
19561
|
+
roles: (components["schemas"]["Role"] | string | unknown)[];
|
|
19562
|
+
/** @description Object is related with this account */
|
|
19563
|
+
account: string;
|
|
19564
|
+
/**
|
|
19565
|
+
* @description TeamMemberMetadata
|
|
19566
|
+
* @default {}
|
|
19567
|
+
*/
|
|
19568
|
+
metadata: {
|
|
19569
|
+
[key: string]: unknown;
|
|
19570
|
+
};
|
|
19571
|
+
/** @description TeamMember creation date */
|
|
19572
|
+
createdAt: string;
|
|
19573
|
+
/** @description TeamMember updated date */
|
|
19574
|
+
updatedAt?: string;
|
|
19575
|
+
};
|
|
19517
19576
|
};
|
|
19518
19577
|
};
|
|
19519
19578
|
};
|
|
19520
19579
|
/**
|
|
19521
|
-
* @description `
|
|
19522
|
-
*
|
|
19523
|
-
* `invalid_expand` — An `?expand=` path is not allowed on this resource.
|
|
19580
|
+
* @description `invite_used` — The invite was already accepted.
|
|
19524
19581
|
*
|
|
19525
|
-
* `
|
|
19582
|
+
* `invalid_role` — The role belongs to another account.
|
|
19526
19583
|
*
|
|
19527
19584
|
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
19528
19585
|
*/
|
|
@@ -19533,7 +19590,7 @@ export interface operations {
|
|
|
19533
19590
|
content: {
|
|
19534
19591
|
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19535
19592
|
/** @enum {string} */
|
|
19536
|
-
error_code?: "
|
|
19593
|
+
error_code?: "invite_used" | "invalid_role" | "validation_error";
|
|
19537
19594
|
};
|
|
19538
19595
|
};
|
|
19539
19596
|
};
|
|
@@ -19605,124 +19662,31 @@ export interface operations {
|
|
|
19605
19662
|
};
|
|
19606
19663
|
};
|
|
19607
19664
|
};
|
|
19608
|
-
"
|
|
19665
|
+
"team/revokeInvite": {
|
|
19609
19666
|
parameters: {
|
|
19610
19667
|
query?: never;
|
|
19611
19668
|
header?: never;
|
|
19612
|
-
path
|
|
19613
|
-
|
|
19614
|
-
|
|
19615
|
-
/** @description Payload for creating an Api (a.k.a. Resource Server / Audience). The `identifier` becomes the `aud` claim in tokens issued for this API and cannot be changed after creation. */
|
|
19616
|
-
requestBody: {
|
|
19617
|
-
content: {
|
|
19618
|
-
"application/json": {
|
|
19619
|
-
/**
|
|
19620
|
-
* @description Human-readable name for the API.
|
|
19621
|
-
* @example My Backend API
|
|
19622
|
-
*/
|
|
19623
|
-
name: string;
|
|
19624
|
-
/**
|
|
19625
|
-
* @description Audience URL clients pass as `audience=` when requesting a token for this API. Must be unique within the tenant and is immutable after creation.
|
|
19626
|
-
* @example https://api.faable.com
|
|
19627
|
-
*/
|
|
19628
|
-
identifier: string;
|
|
19629
|
-
/** @description Optional human-readable description of the API. */
|
|
19630
|
-
description?: string;
|
|
19631
|
-
/**
|
|
19632
|
-
* @description Set of permissions (scopes) this API exposes. Tokens issued with `audience=identifier` will only carry these in their `permissions` claim.
|
|
19633
|
-
* @default []
|
|
19634
|
-
*/
|
|
19635
|
-
permissions?: components["schemas"]["PermissionCreate"][];
|
|
19636
|
-
/** @description JWA algorithm used to sign access_tokens issued for this API. Currently only RS256 (the account keystore default) is implemented. */
|
|
19637
|
-
signing_alg?: "RS256";
|
|
19638
|
-
/** @description Shape of access_tokens issued for this API. `access_token` emits the standard OAuth2 token. `access_token_authz` additionally embeds a `permissions` claim listing the permissions granted to the subject for this API. */
|
|
19639
|
-
token_dialect?: "access_token" | "access_token_authz";
|
|
19640
|
-
/** @description Access_token lifetime in seconds. Defaults to 86400 (24h) if omitted. */
|
|
19641
|
-
token_lifetime?: number;
|
|
19642
|
-
/** @description When true, requested scopes are filtered against `permissions` at token issuance. */
|
|
19643
|
-
enforce_policies?: boolean;
|
|
19644
|
-
/** @description When true, clients can request `offline_access` and receive a refresh_token for this API. */
|
|
19645
|
-
allow_offline_access?: boolean;
|
|
19646
|
-
/** @description When true, skip the consent prompt for first-party clients. */
|
|
19647
|
-
skip_consent?: boolean;
|
|
19648
|
-
/** @description When true, access_tokens issued for this API carry a `teams` claim with the subject team slugs. */
|
|
19649
|
-
include_teams_in_access_token?: boolean;
|
|
19650
|
-
/** @description When true, access_tokens issued for this API carry a `roles` claim with the subject role names. */
|
|
19651
|
-
include_roles_in_access_token?: boolean;
|
|
19652
|
-
/** @description When true, id_tokens issued together with an access_token for this API carry a `teams` claim with the subject team slugs. */
|
|
19653
|
-
include_teams_in_id_token?: boolean;
|
|
19654
|
-
/** @description When true, id_tokens issued together with an access_token for this API carry a `roles` claim with the subject role names. */
|
|
19655
|
-
include_roles_in_id_token?: boolean;
|
|
19656
|
-
};
|
|
19669
|
+
path: {
|
|
19670
|
+
team_id: string;
|
|
19671
|
+
ticket_id: string;
|
|
19657
19672
|
};
|
|
19673
|
+
cookie?: never;
|
|
19658
19674
|
};
|
|
19675
|
+
requestBody?: never;
|
|
19659
19676
|
responses: {
|
|
19660
|
-
/** @description
|
|
19677
|
+
/** @description Default Response */
|
|
19661
19678
|
200: {
|
|
19662
19679
|
headers: {
|
|
19663
19680
|
[name: string]: unknown;
|
|
19664
19681
|
};
|
|
19665
19682
|
content: {
|
|
19666
19683
|
"application/json": {
|
|
19667
|
-
/** @
|
|
19668
|
-
|
|
19669
|
-
/**
|
|
19670
|
-
* @description Human-readable name for the API. Shown in the dashboard and consent prompts.
|
|
19671
|
-
* @example My Backend API
|
|
19672
|
-
*/
|
|
19673
|
-
name: string;
|
|
19674
|
-
/** @description URL-safe identifier auto-derived from `name`. Unique within the tenant. */
|
|
19675
|
-
slug: string;
|
|
19676
|
-
/**
|
|
19677
|
-
* @description Audience URL that clients pass as `audience=` when requesting a token for this API. Becomes the `aud` claim in the issued access_token. Immutable after creation and unique within the tenant.
|
|
19678
|
-
* @example https://api.faable.com
|
|
19679
|
-
*/
|
|
19680
|
-
identifier: string;
|
|
19681
|
-
/** @description Optional human-readable description of the API. */
|
|
19682
|
-
description?: string;
|
|
19683
|
-
/** @description Set of permissions (scopes) this API exposes. When a token is issued with `audience=identifier`, the requested `scope` is intersected with this list to populate the `permissions` claim. */
|
|
19684
|
-
permissions: components["schemas"]["Permission"][];
|
|
19685
|
-
/** @description JWA algorithm used to sign access_tokens issued for this API. Currently only RS256 (the account keystore default) is implemented. */
|
|
19686
|
-
signing_alg: "RS256";
|
|
19687
|
-
/** @description Shape of access_tokens issued for this API. `access_token` emits the standard OAuth2 token. `access_token_authz` additionally embeds a `permissions` claim listing the permissions granted to the subject for this API. */
|
|
19688
|
-
token_dialect: "access_token" | "access_token_authz";
|
|
19689
|
-
/** @description Access_token lifetime in seconds. Default 86400 (24h). Applied at token issuance time (overrides the generic default). */
|
|
19690
|
-
token_lifetime: number;
|
|
19691
|
-
/** @description When true, only scopes that match a permission in `permissions` are forwarded into the access_token. When false, requested scopes are echoed back verbatim with no filtering. */
|
|
19692
|
-
enforce_policies: boolean;
|
|
19693
|
-
/** @description When true, the API is eligible to be the target of a `refresh_token` (i.e. clients can request `offline_access` against it). */
|
|
19694
|
-
allow_offline_access: boolean;
|
|
19695
|
-
/** @description When true, the consent prompt is skipped for first-party clients (clients owned by the same tenant as the API). */
|
|
19696
|
-
skip_consent: boolean;
|
|
19697
|
-
/** @description When true, access_tokens issued for this API carry a `teams` claim listing the slugs of the teams the subject is a member of within the tenant. */
|
|
19698
|
-
include_teams_in_access_token: boolean;
|
|
19699
|
-
/** @description When true, access_tokens issued for this API carry a `roles` claim listing the names of the roles the subject holds across their team memberships within the tenant. */
|
|
19700
|
-
include_roles_in_access_token: boolean;
|
|
19701
|
-
/** @description When true, id_tokens issued together with an access_token for this API carry a `teams` claim with the subject team slugs. The id_token only sees the flag when the client requested `audience=` so this API is resolved at issuance time. */
|
|
19702
|
-
include_teams_in_id_token: boolean;
|
|
19703
|
-
/** @description When true, id_tokens issued together with an access_token for this API carry a `roles` claim with the subject role names. Same audience caveat as `include_teams_in_id_token`. */
|
|
19704
|
-
include_roles_in_id_token: boolean;
|
|
19705
|
-
/** @description Object is related with this account */
|
|
19706
|
-
account: string;
|
|
19707
|
-
/**
|
|
19708
|
-
* @description ApiMetadata
|
|
19709
|
-
* @default {}
|
|
19710
|
-
*/
|
|
19711
|
-
metadata: {
|
|
19712
|
-
[key: string]: unknown;
|
|
19713
|
-
};
|
|
19714
|
-
/** @description Api creation date */
|
|
19715
|
-
createdAt: string;
|
|
19716
|
-
/** @description Api updated date */
|
|
19717
|
-
updatedAt?: string;
|
|
19684
|
+
/** @enum {string} */
|
|
19685
|
+
status: "revoked";
|
|
19718
19686
|
};
|
|
19719
19687
|
};
|
|
19720
19688
|
};
|
|
19721
|
-
/**
|
|
19722
|
-
* @description `already_exists` — A resource with the same unique field already exists (for a user, usually `email`). `details.fields` names the field.
|
|
19723
|
-
*
|
|
19724
|
-
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
19725
|
-
*/
|
|
19689
|
+
/** @description `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field. */
|
|
19726
19690
|
400: {
|
|
19727
19691
|
headers: {
|
|
19728
19692
|
[name: string]: unknown;
|
|
@@ -19730,7 +19694,7 @@ export interface operations {
|
|
|
19730
19694
|
content: {
|
|
19731
19695
|
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19732
19696
|
/** @enum {string} */
|
|
19733
|
-
error_code?: "
|
|
19697
|
+
error_code?: "validation_error";
|
|
19734
19698
|
};
|
|
19735
19699
|
};
|
|
19736
19700
|
};
|
|
@@ -19764,7 +19728,11 @@ export interface operations {
|
|
|
19764
19728
|
};
|
|
19765
19729
|
};
|
|
19766
19730
|
};
|
|
19767
|
-
/**
|
|
19731
|
+
/**
|
|
19732
|
+
* @description `invite_not_found` — No invite with that id in this account.
|
|
19733
|
+
*
|
|
19734
|
+
* `account_not_found` — No Auth Account matches the request (domain, header or token).
|
|
19735
|
+
*/
|
|
19768
19736
|
404: {
|
|
19769
19737
|
headers: {
|
|
19770
19738
|
[name: string]: unknown;
|
|
@@ -19772,7 +19740,7 @@ export interface operations {
|
|
|
19772
19740
|
content: {
|
|
19773
19741
|
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19774
19742
|
/** @enum {string} */
|
|
19775
|
-
error_code?: "account_not_found";
|
|
19743
|
+
error_code?: "invite_not_found" | "account_not_found";
|
|
19776
19744
|
};
|
|
19777
19745
|
};
|
|
19778
19746
|
};
|
|
@@ -19802,83 +19770,138 @@ export interface operations {
|
|
|
19802
19770
|
};
|
|
19803
19771
|
};
|
|
19804
19772
|
};
|
|
19805
|
-
|
|
19773
|
+
team_invite_verify: {
|
|
19806
19774
|
parameters: {
|
|
19807
|
-
query?:
|
|
19808
|
-
|
|
19809
|
-
|
|
19810
|
-
api_id: string;
|
|
19775
|
+
query?: {
|
|
19776
|
+
token?: string;
|
|
19777
|
+
ticket?: string;
|
|
19811
19778
|
};
|
|
19779
|
+
header?: never;
|
|
19780
|
+
path?: never;
|
|
19812
19781
|
cookie?: never;
|
|
19813
19782
|
};
|
|
19814
19783
|
requestBody?: never;
|
|
19815
19784
|
responses: {
|
|
19816
|
-
/** @description
|
|
19785
|
+
/** @description Default Response */
|
|
19786
|
+
200: {
|
|
19787
|
+
headers: {
|
|
19788
|
+
[name: string]: unknown;
|
|
19789
|
+
};
|
|
19790
|
+
content?: never;
|
|
19791
|
+
};
|
|
19792
|
+
/**
|
|
19793
|
+
* @description `invalid_ticket` — The ticket does not exist or is not the kind this endpoint accepts.
|
|
19794
|
+
*
|
|
19795
|
+
* `ticket_expired` — The ticket is past its expiry.
|
|
19796
|
+
*
|
|
19797
|
+
* `ticket_used` — The ticket was already consumed.
|
|
19798
|
+
*
|
|
19799
|
+
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
19800
|
+
*/
|
|
19801
|
+
400: {
|
|
19802
|
+
headers: {
|
|
19803
|
+
[name: string]: unknown;
|
|
19804
|
+
};
|
|
19805
|
+
content: {
|
|
19806
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19807
|
+
/** @enum {string} */
|
|
19808
|
+
error_code?: "invalid_ticket" | "ticket_expired" | "ticket_used" | "validation_error";
|
|
19809
|
+
};
|
|
19810
|
+
};
|
|
19811
|
+
};
|
|
19812
|
+
/**
|
|
19813
|
+
* @description `invite_not_found` — No invite with that id in this account.
|
|
19814
|
+
*
|
|
19815
|
+
* `account_not_found` — No Auth Account matches the request (domain, header or token).
|
|
19816
|
+
*/
|
|
19817
|
+
404: {
|
|
19818
|
+
headers: {
|
|
19819
|
+
[name: string]: unknown;
|
|
19820
|
+
};
|
|
19821
|
+
content: {
|
|
19822
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19823
|
+
/** @enum {string} */
|
|
19824
|
+
error_code?: "invite_not_found" | "account_not_found";
|
|
19825
|
+
};
|
|
19826
|
+
};
|
|
19827
|
+
};
|
|
19828
|
+
/** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
|
|
19829
|
+
429: {
|
|
19830
|
+
headers: {
|
|
19831
|
+
[name: string]: unknown;
|
|
19832
|
+
};
|
|
19833
|
+
content: {
|
|
19834
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19835
|
+
/** @enum {string} */
|
|
19836
|
+
error_code?: "too_many_requests";
|
|
19837
|
+
};
|
|
19838
|
+
};
|
|
19839
|
+
};
|
|
19840
|
+
/** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
|
|
19841
|
+
500: {
|
|
19842
|
+
headers: {
|
|
19843
|
+
[name: string]: unknown;
|
|
19844
|
+
};
|
|
19845
|
+
content: {
|
|
19846
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19847
|
+
/** @enum {string} */
|
|
19848
|
+
error_code?: "internal_error";
|
|
19849
|
+
};
|
|
19850
|
+
};
|
|
19851
|
+
};
|
|
19852
|
+
};
|
|
19853
|
+
};
|
|
19854
|
+
"api/list": {
|
|
19855
|
+
parameters: {
|
|
19856
|
+
query?: {
|
|
19857
|
+
/** @description Number of items per page (max 200) */
|
|
19858
|
+
pageSize?: number;
|
|
19859
|
+
/** @description Cursor for next page */
|
|
19860
|
+
cursor?: string;
|
|
19861
|
+
/** @description Cursor returned by the previous page */
|
|
19862
|
+
next?: string;
|
|
19863
|
+
/** @description Exact match on `name`. Equivalent to `?query=name:<value>`. */
|
|
19864
|
+
name?: string;
|
|
19865
|
+
/** @description Exact match on `slug`. Equivalent to `?query=slug:<value>`. */
|
|
19866
|
+
slug?: string;
|
|
19867
|
+
/** @description Exact match on `identifier`. Equivalent to `?query=identifier:<value>`. */
|
|
19868
|
+
identifier?: string;
|
|
19869
|
+
/** @description Exact match on `token_dialect`. Equivalent to `?query=token_dialect:<value>`. */
|
|
19870
|
+
token_dialect?: string;
|
|
19871
|
+
/** @description Exact match on `enforce_policies`. Equivalent to `?query=enforce_policies:<value>`. */
|
|
19872
|
+
enforce_policies?: string;
|
|
19873
|
+
/** @description Exact match on `allow_offline_access`. Equivalent to `?query=allow_offline_access:<value>`. */
|
|
19874
|
+
allow_offline_access?: string;
|
|
19875
|
+
/** @description Filter using a FaableQL query */
|
|
19876
|
+
query?: string;
|
|
19877
|
+
/** @description Full-text search across: `name`, `description`, `identifier`, `slug`. */
|
|
19878
|
+
q?: string;
|
|
19879
|
+
};
|
|
19880
|
+
header?: never;
|
|
19881
|
+
path?: never;
|
|
19882
|
+
cookie?: never;
|
|
19883
|
+
};
|
|
19884
|
+
requestBody?: never;
|
|
19885
|
+
responses: {
|
|
19886
|
+
/** @description Default Response */
|
|
19817
19887
|
200: {
|
|
19818
19888
|
headers: {
|
|
19819
19889
|
[name: string]: unknown;
|
|
19820
19890
|
};
|
|
19821
19891
|
content: {
|
|
19822
19892
|
"application/json": {
|
|
19823
|
-
|
|
19824
|
-
|
|
19825
|
-
/**
|
|
19826
|
-
* @description Human-readable name for the API. Shown in the dashboard and consent prompts.
|
|
19827
|
-
* @example My Backend API
|
|
19828
|
-
*/
|
|
19829
|
-
name: string;
|
|
19830
|
-
/** @description URL-safe identifier auto-derived from `name`. Unique within the tenant. */
|
|
19831
|
-
slug: string;
|
|
19832
|
-
/**
|
|
19833
|
-
* @description Audience URL that clients pass as `audience=` when requesting a token for this API. Becomes the `aud` claim in the issued access_token. Immutable after creation and unique within the tenant.
|
|
19834
|
-
* @example https://api.faable.com
|
|
19835
|
-
*/
|
|
19836
|
-
identifier: string;
|
|
19837
|
-
/** @description Optional human-readable description of the API. */
|
|
19838
|
-
description?: string;
|
|
19839
|
-
/** @description Set of permissions (scopes) this API exposes. When a token is issued with `audience=identifier`, the requested `scope` is intersected with this list to populate the `permissions` claim. */
|
|
19840
|
-
permissions: components["schemas"]["Permission"][];
|
|
19841
|
-
/** @description JWA algorithm used to sign access_tokens issued for this API. Currently only RS256 (the account keystore default) is implemented. */
|
|
19842
|
-
signing_alg: "RS256";
|
|
19843
|
-
/** @description Shape of access_tokens issued for this API. `access_token` emits the standard OAuth2 token. `access_token_authz` additionally embeds a `permissions` claim listing the permissions granted to the subject for this API. */
|
|
19844
|
-
token_dialect: "access_token" | "access_token_authz";
|
|
19845
|
-
/** @description Access_token lifetime in seconds. Default 86400 (24h). Applied at token issuance time (overrides the generic default). */
|
|
19846
|
-
token_lifetime: number;
|
|
19847
|
-
/** @description When true, only scopes that match a permission in `permissions` are forwarded into the access_token. When false, requested scopes are echoed back verbatim with no filtering. */
|
|
19848
|
-
enforce_policies: boolean;
|
|
19849
|
-
/** @description When true, the API is eligible to be the target of a `refresh_token` (i.e. clients can request `offline_access` against it). */
|
|
19850
|
-
allow_offline_access: boolean;
|
|
19851
|
-
/** @description When true, the consent prompt is skipped for first-party clients (clients owned by the same tenant as the API). */
|
|
19852
|
-
skip_consent: boolean;
|
|
19853
|
-
/** @description When true, access_tokens issued for this API carry a `teams` claim listing the slugs of the teams the subject is a member of within the tenant. */
|
|
19854
|
-
include_teams_in_access_token: boolean;
|
|
19855
|
-
/** @description When true, access_tokens issued for this API carry a `roles` claim listing the names of the roles the subject holds across their team memberships within the tenant. */
|
|
19856
|
-
include_roles_in_access_token: boolean;
|
|
19857
|
-
/** @description When true, id_tokens issued together with an access_token for this API carry a `teams` claim with the subject team slugs. The id_token only sees the flag when the client requested `audience=` so this API is resolved at issuance time. */
|
|
19858
|
-
include_teams_in_id_token: boolean;
|
|
19859
|
-
/** @description When true, id_tokens issued together with an access_token for this API carry a `roles` claim with the subject role names. Same audience caveat as `include_teams_in_id_token`. */
|
|
19860
|
-
include_roles_in_id_token: boolean;
|
|
19861
|
-
/** @description Object is related with this account */
|
|
19862
|
-
account: string;
|
|
19863
|
-
/**
|
|
19864
|
-
* @description ApiMetadata
|
|
19865
|
-
* @default {}
|
|
19866
|
-
*/
|
|
19867
|
-
metadata: {
|
|
19868
|
-
[key: string]: unknown;
|
|
19869
|
-
};
|
|
19870
|
-
/** @description Api creation date */
|
|
19871
|
-
createdAt: string;
|
|
19872
|
-
/** @description Api updated date */
|
|
19873
|
-
updatedAt?: string;
|
|
19893
|
+
next: string | null;
|
|
19894
|
+
results: components["schemas"]["Api"][];
|
|
19874
19895
|
};
|
|
19875
19896
|
};
|
|
19876
19897
|
};
|
|
19877
19898
|
/**
|
|
19878
|
-
* @description `
|
|
19899
|
+
* @description `invalid_query` — The `?query=` FaableQL expression could not be parsed.
|
|
19879
19900
|
*
|
|
19880
19901
|
* `invalid_expand` — An `?expand=` path is not allowed on this resource.
|
|
19881
19902
|
*
|
|
19903
|
+
* `search_not_supported` — This resource does not support `?search=`.
|
|
19904
|
+
*
|
|
19882
19905
|
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
19883
19906
|
*/
|
|
19884
19907
|
400: {
|
|
@@ -19888,7 +19911,7 @@ export interface operations {
|
|
|
19888
19911
|
content: {
|
|
19889
19912
|
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19890
19913
|
/** @enum {string} */
|
|
19891
|
-
error_code?: "
|
|
19914
|
+
error_code?: "invalid_query" | "invalid_expand" | "search_not_supported" | "validation_error";
|
|
19892
19915
|
};
|
|
19893
19916
|
};
|
|
19894
19917
|
};
|
|
@@ -19922,11 +19945,7 @@ export interface operations {
|
|
|
19922
19945
|
};
|
|
19923
19946
|
};
|
|
19924
19947
|
};
|
|
19925
|
-
/**
|
|
19926
|
-
* @description `not_found` — The resource does not exist in this account.
|
|
19927
|
-
*
|
|
19928
|
-
* `account_not_found` — No Auth Account matches the request (domain, header or token).
|
|
19929
|
-
*/
|
|
19948
|
+
/** @description `account_not_found` — No Auth Account matches the request (domain, header or token). */
|
|
19930
19949
|
404: {
|
|
19931
19950
|
headers: {
|
|
19932
19951
|
[name: string]: unknown;
|
|
@@ -19934,7 +19953,7 @@ export interface operations {
|
|
|
19934
19953
|
content: {
|
|
19935
19954
|
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
19936
19955
|
/** @enum {string} */
|
|
19937
|
-
error_code?: "
|
|
19956
|
+
error_code?: "account_not_found";
|
|
19938
19957
|
};
|
|
19939
19958
|
};
|
|
19940
19959
|
};
|
|
@@ -19964,30 +19983,39 @@ export interface operations {
|
|
|
19964
19983
|
};
|
|
19965
19984
|
};
|
|
19966
19985
|
};
|
|
19967
|
-
"api/
|
|
19986
|
+
"api/create": {
|
|
19968
19987
|
parameters: {
|
|
19969
19988
|
query?: never;
|
|
19970
19989
|
header?: never;
|
|
19971
|
-
path
|
|
19972
|
-
api_id: string;
|
|
19973
|
-
};
|
|
19990
|
+
path?: never;
|
|
19974
19991
|
cookie?: never;
|
|
19975
19992
|
};
|
|
19976
|
-
/** @description
|
|
19993
|
+
/** @description Payload for creating an Api (a.k.a. Resource Server / Audience). The `identifier` becomes the `aud` claim in tokens issued for this API and cannot be changed after creation. */
|
|
19977
19994
|
requestBody: {
|
|
19978
19995
|
content: {
|
|
19979
19996
|
"application/json": {
|
|
19980
|
-
/**
|
|
19981
|
-
|
|
19997
|
+
/**
|
|
19998
|
+
* @description Human-readable name for the API.
|
|
19999
|
+
* @example My Backend API
|
|
20000
|
+
*/
|
|
20001
|
+
name: string;
|
|
20002
|
+
/**
|
|
20003
|
+
* @description Audience URL clients pass as `audience=` when requesting a token for this API. Must be unique within the tenant and is immutable after creation.
|
|
20004
|
+
* @example https://api.faable.com
|
|
20005
|
+
*/
|
|
20006
|
+
identifier: string;
|
|
19982
20007
|
/** @description Optional human-readable description of the API. */
|
|
19983
20008
|
description?: string;
|
|
19984
|
-
/**
|
|
20009
|
+
/**
|
|
20010
|
+
* @description Set of permissions (scopes) this API exposes. Tokens issued with `audience=identifier` will only carry these in their `permissions` claim.
|
|
20011
|
+
* @default []
|
|
20012
|
+
*/
|
|
19985
20013
|
permissions?: components["schemas"]["PermissionCreate"][];
|
|
19986
20014
|
/** @description JWA algorithm used to sign access_tokens issued for this API. Currently only RS256 (the account keystore default) is implemented. */
|
|
19987
20015
|
signing_alg?: "RS256";
|
|
19988
20016
|
/** @description Shape of access_tokens issued for this API. `access_token` emits the standard OAuth2 token. `access_token_authz` additionally embeds a `permissions` claim listing the permissions granted to the subject for this API. */
|
|
19989
20017
|
token_dialect?: "access_token" | "access_token_authz";
|
|
19990
|
-
/** @description Access_token lifetime in seconds. */
|
|
20018
|
+
/** @description Access_token lifetime in seconds. Defaults to 86400 (24h) if omitted. */
|
|
19991
20019
|
token_lifetime?: number;
|
|
19992
20020
|
/** @description When true, requested scopes are filtered against `permissions` at token issuance. */
|
|
19993
20021
|
enforce_policies?: boolean;
|
|
@@ -20069,9 +20097,7 @@ export interface operations {
|
|
|
20069
20097
|
};
|
|
20070
20098
|
};
|
|
20071
20099
|
/**
|
|
20072
|
-
* @description `
|
|
20073
|
-
*
|
|
20074
|
-
* `already_exists` — A resource with the same unique field already exists (for a user, usually `email`). `details.fields` names the field.
|
|
20100
|
+
* @description `already_exists` — A resource with the same unique field already exists (for a user, usually `email`). `details.fields` names the field.
|
|
20075
20101
|
*
|
|
20076
20102
|
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
20077
20103
|
*/
|
|
@@ -20082,7 +20108,7 @@ export interface operations {
|
|
|
20082
20108
|
content: {
|
|
20083
20109
|
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
20084
20110
|
/** @enum {string} */
|
|
20085
|
-
error_code?: "
|
|
20111
|
+
error_code?: "already_exists" | "validation_error";
|
|
20086
20112
|
};
|
|
20087
20113
|
};
|
|
20088
20114
|
};
|
|
@@ -20116,11 +20142,7 @@ export interface operations {
|
|
|
20116
20142
|
};
|
|
20117
20143
|
};
|
|
20118
20144
|
};
|
|
20119
|
-
/**
|
|
20120
|
-
* @description `not_found` — The resource does not exist in this account.
|
|
20121
|
-
*
|
|
20122
|
-
* `account_not_found` — No Auth Account matches the request (domain, header or token).
|
|
20123
|
-
*/
|
|
20145
|
+
/** @description `account_not_found` — No Auth Account matches the request (domain, header or token). */
|
|
20124
20146
|
404: {
|
|
20125
20147
|
headers: {
|
|
20126
20148
|
[name: string]: unknown;
|
|
@@ -20128,7 +20150,7 @@ export interface operations {
|
|
|
20128
20150
|
content: {
|
|
20129
20151
|
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
20130
20152
|
/** @enum {string} */
|
|
20131
|
-
error_code?: "
|
|
20153
|
+
error_code?: "account_not_found";
|
|
20132
20154
|
};
|
|
20133
20155
|
};
|
|
20134
20156
|
};
|
|
@@ -20158,7 +20180,7 @@ export interface operations {
|
|
|
20158
20180
|
};
|
|
20159
20181
|
};
|
|
20160
20182
|
};
|
|
20161
|
-
"api/
|
|
20183
|
+
"api/get": {
|
|
20162
20184
|
parameters: {
|
|
20163
20185
|
query?: never;
|
|
20164
20186
|
header?: never;
|
|
@@ -20233,6 +20255,8 @@ export interface operations {
|
|
|
20233
20255
|
/**
|
|
20234
20256
|
* @description `invalid_id` — The id in the path is not a valid id for this resource.
|
|
20235
20257
|
*
|
|
20258
|
+
* `invalid_expand` — An `?expand=` path is not allowed on this resource.
|
|
20259
|
+
*
|
|
20236
20260
|
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
20237
20261
|
*/
|
|
20238
20262
|
400: {
|
|
@@ -20242,7 +20266,7 @@ export interface operations {
|
|
|
20242
20266
|
content: {
|
|
20243
20267
|
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
20244
20268
|
/** @enum {string} */
|
|
20245
|
-
error_code?: "invalid_id" | "validation_error";
|
|
20269
|
+
error_code?: "invalid_id" | "invalid_expand" | "validation_error";
|
|
20246
20270
|
};
|
|
20247
20271
|
};
|
|
20248
20272
|
};
|
|
@@ -20318,28 +20342,125 @@ export interface operations {
|
|
|
20318
20342
|
};
|
|
20319
20343
|
};
|
|
20320
20344
|
};
|
|
20321
|
-
"
|
|
20345
|
+
"api/update": {
|
|
20322
20346
|
parameters: {
|
|
20323
20347
|
query?: never;
|
|
20324
20348
|
header?: never;
|
|
20325
|
-
path
|
|
20349
|
+
path: {
|
|
20350
|
+
api_id: string;
|
|
20351
|
+
};
|
|
20326
20352
|
cookie?: never;
|
|
20327
20353
|
};
|
|
20328
|
-
|
|
20354
|
+
/** @description Partial update for an Api. `identifier` is immutable and not present here; recreate the API if you need to change it. */
|
|
20355
|
+
requestBody: {
|
|
20356
|
+
content: {
|
|
20357
|
+
"application/json": {
|
|
20358
|
+
/** @description Human-readable name for the API. */
|
|
20359
|
+
name?: string;
|
|
20360
|
+
/** @description Optional human-readable description of the API. */
|
|
20361
|
+
description?: string;
|
|
20362
|
+
/** @description Replaces the full permissions list. Tokens issued AFTER the update will use the new list; tokens already in circulation are unchanged. */
|
|
20363
|
+
permissions?: components["schemas"]["PermissionCreate"][];
|
|
20364
|
+
/** @description JWA algorithm used to sign access_tokens issued for this API. Currently only RS256 (the account keystore default) is implemented. */
|
|
20365
|
+
signing_alg?: "RS256";
|
|
20366
|
+
/** @description Shape of access_tokens issued for this API. `access_token` emits the standard OAuth2 token. `access_token_authz` additionally embeds a `permissions` claim listing the permissions granted to the subject for this API. */
|
|
20367
|
+
token_dialect?: "access_token" | "access_token_authz";
|
|
20368
|
+
/** @description Access_token lifetime in seconds. */
|
|
20369
|
+
token_lifetime?: number;
|
|
20370
|
+
/** @description When true, requested scopes are filtered against `permissions` at token issuance. */
|
|
20371
|
+
enforce_policies?: boolean;
|
|
20372
|
+
/** @description When true, clients can request `offline_access` and receive a refresh_token for this API. */
|
|
20373
|
+
allow_offline_access?: boolean;
|
|
20374
|
+
/** @description When true, skip the consent prompt for first-party clients. */
|
|
20375
|
+
skip_consent?: boolean;
|
|
20376
|
+
/** @description When true, access_tokens issued for this API carry a `teams` claim with the subject team slugs. */
|
|
20377
|
+
include_teams_in_access_token?: boolean;
|
|
20378
|
+
/** @description When true, access_tokens issued for this API carry a `roles` claim with the subject role names. */
|
|
20379
|
+
include_roles_in_access_token?: boolean;
|
|
20380
|
+
/** @description When true, id_tokens issued together with an access_token for this API carry a `teams` claim with the subject team slugs. */
|
|
20381
|
+
include_teams_in_id_token?: boolean;
|
|
20382
|
+
/** @description When true, id_tokens issued together with an access_token for this API carry a `roles` claim with the subject role names. */
|
|
20383
|
+
include_roles_in_id_token?: boolean;
|
|
20384
|
+
};
|
|
20385
|
+
};
|
|
20386
|
+
};
|
|
20329
20387
|
responses: {
|
|
20330
|
-
/** @description
|
|
20388
|
+
/** @description Api */
|
|
20331
20389
|
200: {
|
|
20332
20390
|
headers: {
|
|
20333
20391
|
[name: string]: unknown;
|
|
20334
20392
|
};
|
|
20335
20393
|
content: {
|
|
20336
20394
|
"application/json": {
|
|
20337
|
-
/** @description
|
|
20338
|
-
|
|
20339
|
-
/**
|
|
20340
|
-
|
|
20341
|
-
|
|
20342
|
-
|
|
20395
|
+
/** @description Api ID */
|
|
20396
|
+
id: string;
|
|
20397
|
+
/**
|
|
20398
|
+
* @description Human-readable name for the API. Shown in the dashboard and consent prompts.
|
|
20399
|
+
* @example My Backend API
|
|
20400
|
+
*/
|
|
20401
|
+
name: string;
|
|
20402
|
+
/** @description URL-safe identifier auto-derived from `name`. Unique within the tenant. */
|
|
20403
|
+
slug: string;
|
|
20404
|
+
/**
|
|
20405
|
+
* @description Audience URL that clients pass as `audience=` when requesting a token for this API. Becomes the `aud` claim in the issued access_token. Immutable after creation and unique within the tenant.
|
|
20406
|
+
* @example https://api.faable.com
|
|
20407
|
+
*/
|
|
20408
|
+
identifier: string;
|
|
20409
|
+
/** @description Optional human-readable description of the API. */
|
|
20410
|
+
description?: string;
|
|
20411
|
+
/** @description Set of permissions (scopes) this API exposes. When a token is issued with `audience=identifier`, the requested `scope` is intersected with this list to populate the `permissions` claim. */
|
|
20412
|
+
permissions: components["schemas"]["Permission"][];
|
|
20413
|
+
/** @description JWA algorithm used to sign access_tokens issued for this API. Currently only RS256 (the account keystore default) is implemented. */
|
|
20414
|
+
signing_alg: "RS256";
|
|
20415
|
+
/** @description Shape of access_tokens issued for this API. `access_token` emits the standard OAuth2 token. `access_token_authz` additionally embeds a `permissions` claim listing the permissions granted to the subject for this API. */
|
|
20416
|
+
token_dialect: "access_token" | "access_token_authz";
|
|
20417
|
+
/** @description Access_token lifetime in seconds. Default 86400 (24h). Applied at token issuance time (overrides the generic default). */
|
|
20418
|
+
token_lifetime: number;
|
|
20419
|
+
/** @description When true, only scopes that match a permission in `permissions` are forwarded into the access_token. When false, requested scopes are echoed back verbatim with no filtering. */
|
|
20420
|
+
enforce_policies: boolean;
|
|
20421
|
+
/** @description When true, the API is eligible to be the target of a `refresh_token` (i.e. clients can request `offline_access` against it). */
|
|
20422
|
+
allow_offline_access: boolean;
|
|
20423
|
+
/** @description When true, the consent prompt is skipped for first-party clients (clients owned by the same tenant as the API). */
|
|
20424
|
+
skip_consent: boolean;
|
|
20425
|
+
/** @description When true, access_tokens issued for this API carry a `teams` claim listing the slugs of the teams the subject is a member of within the tenant. */
|
|
20426
|
+
include_teams_in_access_token: boolean;
|
|
20427
|
+
/** @description When true, access_tokens issued for this API carry a `roles` claim listing the names of the roles the subject holds across their team memberships within the tenant. */
|
|
20428
|
+
include_roles_in_access_token: boolean;
|
|
20429
|
+
/** @description When true, id_tokens issued together with an access_token for this API carry a `teams` claim with the subject team slugs. The id_token only sees the flag when the client requested `audience=` so this API is resolved at issuance time. */
|
|
20430
|
+
include_teams_in_id_token: boolean;
|
|
20431
|
+
/** @description When true, id_tokens issued together with an access_token for this API carry a `roles` claim with the subject role names. Same audience caveat as `include_teams_in_id_token`. */
|
|
20432
|
+
include_roles_in_id_token: boolean;
|
|
20433
|
+
/** @description Object is related with this account */
|
|
20434
|
+
account: string;
|
|
20435
|
+
/**
|
|
20436
|
+
* @description ApiMetadata
|
|
20437
|
+
* @default {}
|
|
20438
|
+
*/
|
|
20439
|
+
metadata: {
|
|
20440
|
+
[key: string]: unknown;
|
|
20441
|
+
};
|
|
20442
|
+
/** @description Api creation date */
|
|
20443
|
+
createdAt: string;
|
|
20444
|
+
/** @description Api updated date */
|
|
20445
|
+
updatedAt?: string;
|
|
20446
|
+
};
|
|
20447
|
+
};
|
|
20448
|
+
};
|
|
20449
|
+
/**
|
|
20450
|
+
* @description `invalid_id` — The id in the path is not a valid id for this resource.
|
|
20451
|
+
*
|
|
20452
|
+
* `already_exists` — A resource with the same unique field already exists (for a user, usually `email`). `details.fields` names the field.
|
|
20453
|
+
*
|
|
20454
|
+
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
20455
|
+
*/
|
|
20456
|
+
400: {
|
|
20457
|
+
headers: {
|
|
20458
|
+
[name: string]: unknown;
|
|
20459
|
+
};
|
|
20460
|
+
content: {
|
|
20461
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
20462
|
+
/** @enum {string} */
|
|
20463
|
+
error_code?: "invalid_id" | "already_exists" | "validation_error";
|
|
20343
20464
|
};
|
|
20344
20465
|
};
|
|
20345
20466
|
};
|
|
@@ -20373,7 +20494,11 @@ export interface operations {
|
|
|
20373
20494
|
};
|
|
20374
20495
|
};
|
|
20375
20496
|
};
|
|
20376
|
-
/**
|
|
20497
|
+
/**
|
|
20498
|
+
* @description `not_found` — The resource does not exist in this account.
|
|
20499
|
+
*
|
|
20500
|
+
* `account_not_found` — No Auth Account matches the request (domain, header or token).
|
|
20501
|
+
*/
|
|
20377
20502
|
404: {
|
|
20378
20503
|
headers: {
|
|
20379
20504
|
[name: string]: unknown;
|
|
@@ -20381,7 +20506,7 @@ export interface operations {
|
|
|
20381
20506
|
content: {
|
|
20382
20507
|
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
20383
20508
|
/** @enum {string} */
|
|
20384
|
-
error_code?: "account_not_found";
|
|
20509
|
+
error_code?: "not_found" | "account_not_found";
|
|
20385
20510
|
};
|
|
20386
20511
|
};
|
|
20387
20512
|
};
|
|
@@ -20411,40 +20536,83 @@ export interface operations {
|
|
|
20411
20536
|
};
|
|
20412
20537
|
};
|
|
20413
20538
|
};
|
|
20414
|
-
"
|
|
20539
|
+
"api/delete": {
|
|
20415
20540
|
parameters: {
|
|
20416
20541
|
query?: never;
|
|
20417
20542
|
header?: never;
|
|
20418
|
-
path
|
|
20419
|
-
|
|
20420
|
-
};
|
|
20421
|
-
requestBody: {
|
|
20422
|
-
content: {
|
|
20423
|
-
"application/json": Record<string, never>;
|
|
20543
|
+
path: {
|
|
20544
|
+
api_id: string;
|
|
20424
20545
|
};
|
|
20546
|
+
cookie?: never;
|
|
20425
20547
|
};
|
|
20548
|
+
requestBody?: never;
|
|
20426
20549
|
responses: {
|
|
20427
|
-
/** @description
|
|
20550
|
+
/** @description Api */
|
|
20428
20551
|
200: {
|
|
20429
20552
|
headers: {
|
|
20430
20553
|
[name: string]: unknown;
|
|
20431
20554
|
};
|
|
20432
20555
|
content: {
|
|
20433
20556
|
"application/json": {
|
|
20434
|
-
/** @description
|
|
20435
|
-
|
|
20436
|
-
/**
|
|
20437
|
-
|
|
20438
|
-
|
|
20439
|
-
|
|
20440
|
-
|
|
20441
|
-
|
|
20442
|
-
|
|
20443
|
-
|
|
20557
|
+
/** @description Api ID */
|
|
20558
|
+
id: string;
|
|
20559
|
+
/**
|
|
20560
|
+
* @description Human-readable name for the API. Shown in the dashboard and consent prompts.
|
|
20561
|
+
* @example My Backend API
|
|
20562
|
+
*/
|
|
20563
|
+
name: string;
|
|
20564
|
+
/** @description URL-safe identifier auto-derived from `name`. Unique within the tenant. */
|
|
20565
|
+
slug: string;
|
|
20566
|
+
/**
|
|
20567
|
+
* @description Audience URL that clients pass as `audience=` when requesting a token for this API. Becomes the `aud` claim in the issued access_token. Immutable after creation and unique within the tenant.
|
|
20568
|
+
* @example https://api.faable.com
|
|
20569
|
+
*/
|
|
20570
|
+
identifier: string;
|
|
20571
|
+
/** @description Optional human-readable description of the API. */
|
|
20572
|
+
description?: string;
|
|
20573
|
+
/** @description Set of permissions (scopes) this API exposes. When a token is issued with `audience=identifier`, the requested `scope` is intersected with this list to populate the `permissions` claim. */
|
|
20574
|
+
permissions: components["schemas"]["Permission"][];
|
|
20575
|
+
/** @description JWA algorithm used to sign access_tokens issued for this API. Currently only RS256 (the account keystore default) is implemented. */
|
|
20576
|
+
signing_alg: "RS256";
|
|
20577
|
+
/** @description Shape of access_tokens issued for this API. `access_token` emits the standard OAuth2 token. `access_token_authz` additionally embeds a `permissions` claim listing the permissions granted to the subject for this API. */
|
|
20578
|
+
token_dialect: "access_token" | "access_token_authz";
|
|
20579
|
+
/** @description Access_token lifetime in seconds. Default 86400 (24h). Applied at token issuance time (overrides the generic default). */
|
|
20580
|
+
token_lifetime: number;
|
|
20581
|
+
/** @description When true, only scopes that match a permission in `permissions` are forwarded into the access_token. When false, requested scopes are echoed back verbatim with no filtering. */
|
|
20582
|
+
enforce_policies: boolean;
|
|
20583
|
+
/** @description When true, the API is eligible to be the target of a `refresh_token` (i.e. clients can request `offline_access` against it). */
|
|
20584
|
+
allow_offline_access: boolean;
|
|
20585
|
+
/** @description When true, the consent prompt is skipped for first-party clients (clients owned by the same tenant as the API). */
|
|
20586
|
+
skip_consent: boolean;
|
|
20587
|
+
/** @description When true, access_tokens issued for this API carry a `teams` claim listing the slugs of the teams the subject is a member of within the tenant. */
|
|
20588
|
+
include_teams_in_access_token: boolean;
|
|
20589
|
+
/** @description When true, access_tokens issued for this API carry a `roles` claim listing the names of the roles the subject holds across their team memberships within the tenant. */
|
|
20590
|
+
include_roles_in_access_token: boolean;
|
|
20591
|
+
/** @description When true, id_tokens issued together with an access_token for this API carry a `teams` claim with the subject team slugs. The id_token only sees the flag when the client requested `audience=` so this API is resolved at issuance time. */
|
|
20592
|
+
include_teams_in_id_token: boolean;
|
|
20593
|
+
/** @description When true, id_tokens issued together with an access_token for this API carry a `roles` claim with the subject role names. Same audience caveat as `include_teams_in_id_token`. */
|
|
20594
|
+
include_roles_in_id_token: boolean;
|
|
20595
|
+
/** @description Object is related with this account */
|
|
20596
|
+
account: string;
|
|
20597
|
+
/**
|
|
20598
|
+
* @description ApiMetadata
|
|
20599
|
+
* @default {}
|
|
20600
|
+
*/
|
|
20601
|
+
metadata: {
|
|
20602
|
+
[key: string]: unknown;
|
|
20603
|
+
};
|
|
20604
|
+
/** @description Api creation date */
|
|
20605
|
+
createdAt: string;
|
|
20606
|
+
/** @description Api updated date */
|
|
20607
|
+
updatedAt?: string;
|
|
20444
20608
|
};
|
|
20445
20609
|
};
|
|
20446
20610
|
};
|
|
20447
|
-
/**
|
|
20611
|
+
/**
|
|
20612
|
+
* @description `invalid_id` — The id in the path is not a valid id for this resource.
|
|
20613
|
+
*
|
|
20614
|
+
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
20615
|
+
*/
|
|
20448
20616
|
400: {
|
|
20449
20617
|
headers: {
|
|
20450
20618
|
[name: string]: unknown;
|
|
@@ -20452,7 +20620,7 @@ export interface operations {
|
|
|
20452
20620
|
content: {
|
|
20453
20621
|
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
20454
20622
|
/** @enum {string} */
|
|
20455
|
-
error_code?: "validation_error";
|
|
20623
|
+
error_code?: "invalid_id" | "validation_error";
|
|
20456
20624
|
};
|
|
20457
20625
|
};
|
|
20458
20626
|
};
|
|
@@ -20486,7 +20654,11 @@ export interface operations {
|
|
|
20486
20654
|
};
|
|
20487
20655
|
};
|
|
20488
20656
|
};
|
|
20489
|
-
/**
|
|
20657
|
+
/**
|
|
20658
|
+
* @description `not_found` — The resource does not exist in this account.
|
|
20659
|
+
*
|
|
20660
|
+
* `account_not_found` — No Auth Account matches the request (domain, header or token).
|
|
20661
|
+
*/
|
|
20490
20662
|
404: {
|
|
20491
20663
|
headers: {
|
|
20492
20664
|
[name: string]: unknown;
|
|
@@ -20494,7 +20666,7 @@ export interface operations {
|
|
|
20494
20666
|
content: {
|
|
20495
20667
|
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
20496
20668
|
/** @enum {string} */
|
|
20497
|
-
error_code?: "account_not_found";
|
|
20669
|
+
error_code?: "not_found" | "account_not_found";
|
|
20498
20670
|
};
|
|
20499
20671
|
};
|
|
20500
20672
|
};
|
|
@@ -20524,18 +20696,9 @@ export interface operations {
|
|
|
20524
20696
|
};
|
|
20525
20697
|
};
|
|
20526
20698
|
};
|
|
20527
|
-
"
|
|
20699
|
+
"account/getKeys": {
|
|
20528
20700
|
parameters: {
|
|
20529
|
-
query?:
|
|
20530
|
-
/** @description Number of items per page (max 200) */
|
|
20531
|
-
pageSize?: number;
|
|
20532
|
-
/** @description Cursor for next page */
|
|
20533
|
-
cursor?: string;
|
|
20534
|
-
/** @description Cursor returned by the previous page */
|
|
20535
|
-
next?: string;
|
|
20536
|
-
/** @description Filter using a FaableQL query */
|
|
20537
|
-
query?: string;
|
|
20538
|
-
};
|
|
20701
|
+
query?: never;
|
|
20539
20702
|
header?: never;
|
|
20540
20703
|
path?: never;
|
|
20541
20704
|
cookie?: never;
|
|
@@ -20549,28 +20712,12 @@ export interface operations {
|
|
|
20549
20712
|
};
|
|
20550
20713
|
content: {
|
|
20551
20714
|
"application/json": {
|
|
20552
|
-
|
|
20553
|
-
|
|
20554
|
-
|
|
20555
|
-
|
|
20556
|
-
|
|
20557
|
-
|
|
20558
|
-
* @description `invalid_query` — The `?query=` FaableQL expression could not be parsed.
|
|
20559
|
-
*
|
|
20560
|
-
* `invalid_expand` — An `?expand=` path is not allowed on this resource.
|
|
20561
|
-
*
|
|
20562
|
-
* `search_not_supported` — This resource does not support `?search=`.
|
|
20563
|
-
*
|
|
20564
|
-
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
20565
|
-
*/
|
|
20566
|
-
400: {
|
|
20567
|
-
headers: {
|
|
20568
|
-
[name: string]: unknown;
|
|
20569
|
-
};
|
|
20570
|
-
content: {
|
|
20571
|
-
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
20572
|
-
/** @enum {string} */
|
|
20573
|
-
error_code?: "invalid_query" | "invalid_expand" | "search_not_supported" | "validation_error";
|
|
20715
|
+
/** @description kid currently used to sign new tokens */
|
|
20716
|
+
production_kid: string;
|
|
20717
|
+
/** @description kid that will be promoted on the next rotation */
|
|
20718
|
+
next_in_queue_kid: string;
|
|
20719
|
+
/** @description All kids currently published in the JWK Set */
|
|
20720
|
+
kids_active: string[];
|
|
20574
20721
|
};
|
|
20575
20722
|
};
|
|
20576
20723
|
};
|
|
@@ -20642,7 +20789,7 @@ export interface operations {
|
|
|
20642
20789
|
};
|
|
20643
20790
|
};
|
|
20644
20791
|
};
|
|
20645
|
-
"
|
|
20792
|
+
"account/rotateKeys": {
|
|
20646
20793
|
parameters: {
|
|
20647
20794
|
query?: never;
|
|
20648
20795
|
header?: never;
|
|
@@ -20651,73 +20798,146 @@ export interface operations {
|
|
|
20651
20798
|
};
|
|
20652
20799
|
requestBody: {
|
|
20653
20800
|
content: {
|
|
20654
|
-
"application/json":
|
|
20655
|
-
/** @description Action Name */
|
|
20656
|
-
name: string;
|
|
20657
|
-
/** @description JavaScript code. Must export at least one hook: exports.onExecutePostLogin, exports.onExecuteContinue and/or exports.onExecuteClientCredentials. The triggers are derived from the exported hooks. */
|
|
20658
|
-
code: string;
|
|
20659
|
-
/**
|
|
20660
|
-
* @description Is this action active?
|
|
20661
|
-
* @default true
|
|
20662
|
-
*/
|
|
20663
|
-
enabled?: boolean;
|
|
20664
|
-
/**
|
|
20665
|
-
* @description Execution order: lower runs first; on ties the newest action runs first
|
|
20666
|
-
* @default 0
|
|
20667
|
-
*/
|
|
20668
|
-
order?: number;
|
|
20669
|
-
};
|
|
20801
|
+
"application/json": Record<string, never>;
|
|
20670
20802
|
};
|
|
20671
20803
|
};
|
|
20672
20804
|
responses: {
|
|
20673
|
-
/** @description
|
|
20805
|
+
/** @description Default Response */
|
|
20674
20806
|
200: {
|
|
20675
20807
|
headers: {
|
|
20676
20808
|
[name: string]: unknown;
|
|
20677
20809
|
};
|
|
20678
20810
|
content: {
|
|
20679
20811
|
"application/json": {
|
|
20680
|
-
/** @description
|
|
20681
|
-
|
|
20682
|
-
/** @description
|
|
20683
|
-
|
|
20684
|
-
/** @description
|
|
20685
|
-
|
|
20686
|
-
/** @description
|
|
20687
|
-
|
|
20688
|
-
/**
|
|
20689
|
-
|
|
20690
|
-
|
|
20691
|
-
|
|
20692
|
-
|
|
20693
|
-
|
|
20694
|
-
|
|
20695
|
-
|
|
20696
|
-
|
|
20697
|
-
|
|
20698
|
-
|
|
20699
|
-
|
|
20700
|
-
|
|
20701
|
-
|
|
20702
|
-
|
|
20703
|
-
|
|
20704
|
-
|
|
20705
|
-
|
|
20706
|
-
|
|
20707
|
-
|
|
20708
|
-
|
|
20709
|
-
|
|
20710
|
-
|
|
20711
|
-
|
|
20712
|
-
/** @
|
|
20713
|
-
|
|
20714
|
-
/** @description Action updated date */
|
|
20715
|
-
updatedAt?: string;
|
|
20812
|
+
/** @description ISO 8601 timestamp of the rotation */
|
|
20813
|
+
rotated_at: string;
|
|
20814
|
+
/** @description kid that was active before rotation. Tokens signed with it are still verifiable via /.well-known/jwks.json */
|
|
20815
|
+
previous_production_kid: string;
|
|
20816
|
+
/** @description kid now used to sign new tokens */
|
|
20817
|
+
production_kid: string;
|
|
20818
|
+
/** @description kid that will be promoted on the next rotation */
|
|
20819
|
+
next_in_queue_kid: string;
|
|
20820
|
+
/** @description All kids currently published in the JWK Set */
|
|
20821
|
+
kids_active: string[];
|
|
20822
|
+
};
|
|
20823
|
+
};
|
|
20824
|
+
};
|
|
20825
|
+
/** @description `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field. */
|
|
20826
|
+
400: {
|
|
20827
|
+
headers: {
|
|
20828
|
+
[name: string]: unknown;
|
|
20829
|
+
};
|
|
20830
|
+
content: {
|
|
20831
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
20832
|
+
/** @enum {string} */
|
|
20833
|
+
error_code?: "validation_error";
|
|
20834
|
+
};
|
|
20835
|
+
};
|
|
20836
|
+
};
|
|
20837
|
+
/** @description `unauthorized` — The request carries no valid credentials. */
|
|
20838
|
+
401: {
|
|
20839
|
+
headers: {
|
|
20840
|
+
[name: string]: unknown;
|
|
20841
|
+
};
|
|
20842
|
+
content: {
|
|
20843
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
20844
|
+
/** @enum {string} */
|
|
20845
|
+
error_code?: "unauthorized";
|
|
20716
20846
|
};
|
|
20717
20847
|
};
|
|
20718
20848
|
};
|
|
20719
20849
|
/**
|
|
20720
|
-
* @description `
|
|
20850
|
+
* @description `forbidden` — The credentials are valid but do not allow this operation.
|
|
20851
|
+
*
|
|
20852
|
+
* `insufficient_scope` — The token lacks a scope this operation requires. `message` names it.
|
|
20853
|
+
*
|
|
20854
|
+
* `user_suspended` — The user is suspended and cannot sign in or be modified.
|
|
20855
|
+
*/
|
|
20856
|
+
403: {
|
|
20857
|
+
headers: {
|
|
20858
|
+
[name: string]: unknown;
|
|
20859
|
+
};
|
|
20860
|
+
content: {
|
|
20861
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
20862
|
+
/** @enum {string} */
|
|
20863
|
+
error_code?: "forbidden" | "insufficient_scope" | "user_suspended";
|
|
20864
|
+
};
|
|
20865
|
+
};
|
|
20866
|
+
};
|
|
20867
|
+
/** @description `account_not_found` — No Auth Account matches the request (domain, header or token). */
|
|
20868
|
+
404: {
|
|
20869
|
+
headers: {
|
|
20870
|
+
[name: string]: unknown;
|
|
20871
|
+
};
|
|
20872
|
+
content: {
|
|
20873
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
20874
|
+
/** @enum {string} */
|
|
20875
|
+
error_code?: "account_not_found";
|
|
20876
|
+
};
|
|
20877
|
+
};
|
|
20878
|
+
};
|
|
20879
|
+
/** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
|
|
20880
|
+
429: {
|
|
20881
|
+
headers: {
|
|
20882
|
+
[name: string]: unknown;
|
|
20883
|
+
};
|
|
20884
|
+
content: {
|
|
20885
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
20886
|
+
/** @enum {string} */
|
|
20887
|
+
error_code?: "too_many_requests";
|
|
20888
|
+
};
|
|
20889
|
+
};
|
|
20890
|
+
};
|
|
20891
|
+
/** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
|
|
20892
|
+
500: {
|
|
20893
|
+
headers: {
|
|
20894
|
+
[name: string]: unknown;
|
|
20895
|
+
};
|
|
20896
|
+
content: {
|
|
20897
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
20898
|
+
/** @enum {string} */
|
|
20899
|
+
error_code?: "internal_error";
|
|
20900
|
+
};
|
|
20901
|
+
};
|
|
20902
|
+
};
|
|
20903
|
+
};
|
|
20904
|
+
};
|
|
20905
|
+
"action/list": {
|
|
20906
|
+
parameters: {
|
|
20907
|
+
query?: {
|
|
20908
|
+
/** @description Number of items per page (max 200) */
|
|
20909
|
+
pageSize?: number;
|
|
20910
|
+
/** @description Cursor for next page */
|
|
20911
|
+
cursor?: string;
|
|
20912
|
+
/** @description Cursor returned by the previous page */
|
|
20913
|
+
next?: string;
|
|
20914
|
+
/** @description Filter using a FaableQL query */
|
|
20915
|
+
query?: string;
|
|
20916
|
+
};
|
|
20917
|
+
header?: never;
|
|
20918
|
+
path?: never;
|
|
20919
|
+
cookie?: never;
|
|
20920
|
+
};
|
|
20921
|
+
requestBody?: never;
|
|
20922
|
+
responses: {
|
|
20923
|
+
/** @description Default Response */
|
|
20924
|
+
200: {
|
|
20925
|
+
headers: {
|
|
20926
|
+
[name: string]: unknown;
|
|
20927
|
+
};
|
|
20928
|
+
content: {
|
|
20929
|
+
"application/json": {
|
|
20930
|
+
next: string | null;
|
|
20931
|
+
results: components["schemas"]["Action"][];
|
|
20932
|
+
};
|
|
20933
|
+
};
|
|
20934
|
+
};
|
|
20935
|
+
/**
|
|
20936
|
+
* @description `invalid_query` — The `?query=` FaableQL expression could not be parsed.
|
|
20937
|
+
*
|
|
20938
|
+
* `invalid_expand` — An `?expand=` path is not allowed on this resource.
|
|
20939
|
+
*
|
|
20940
|
+
* `search_not_supported` — This resource does not support `?search=`.
|
|
20721
20941
|
*
|
|
20722
20942
|
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
20723
20943
|
*/
|
|
@@ -20728,7 +20948,7 @@ export interface operations {
|
|
|
20728
20948
|
content: {
|
|
20729
20949
|
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
20730
20950
|
/** @enum {string} */
|
|
20731
|
-
error_code?: "
|
|
20951
|
+
error_code?: "invalid_query" | "invalid_expand" | "search_not_supported" | "validation_error";
|
|
20732
20952
|
};
|
|
20733
20953
|
};
|
|
20734
20954
|
};
|
|
@@ -20800,16 +21020,33 @@ export interface operations {
|
|
|
20800
21020
|
};
|
|
20801
21021
|
};
|
|
20802
21022
|
};
|
|
20803
|
-
"action/
|
|
21023
|
+
"action/create": {
|
|
20804
21024
|
parameters: {
|
|
20805
21025
|
query?: never;
|
|
20806
21026
|
header?: never;
|
|
20807
|
-
path
|
|
20808
|
-
action_id: string;
|
|
20809
|
-
};
|
|
21027
|
+
path?: never;
|
|
20810
21028
|
cookie?: never;
|
|
20811
21029
|
};
|
|
20812
|
-
requestBody
|
|
21030
|
+
requestBody: {
|
|
21031
|
+
content: {
|
|
21032
|
+
"application/json": {
|
|
21033
|
+
/** @description Action Name */
|
|
21034
|
+
name: string;
|
|
21035
|
+
/** @description JavaScript code. Must export at least one hook: exports.onExecutePostLogin, exports.onExecuteContinue and/or exports.onExecuteClientCredentials. The triggers are derived from the exported hooks. */
|
|
21036
|
+
code: string;
|
|
21037
|
+
/**
|
|
21038
|
+
* @description Is this action active?
|
|
21039
|
+
* @default true
|
|
21040
|
+
*/
|
|
21041
|
+
enabled?: boolean;
|
|
21042
|
+
/**
|
|
21043
|
+
* @description Execution order: lower runs first; on ties the newest action runs first
|
|
21044
|
+
* @default 0
|
|
21045
|
+
*/
|
|
21046
|
+
order?: number;
|
|
21047
|
+
};
|
|
21048
|
+
};
|
|
21049
|
+
};
|
|
20813
21050
|
responses: {
|
|
20814
21051
|
/** @description Action */
|
|
20815
21052
|
200: {
|
|
@@ -20858,9 +21095,7 @@ export interface operations {
|
|
|
20858
21095
|
};
|
|
20859
21096
|
};
|
|
20860
21097
|
/**
|
|
20861
|
-
* @description `
|
|
20862
|
-
*
|
|
20863
|
-
* `invalid_expand` — An `?expand=` path is not allowed on this resource.
|
|
21098
|
+
* @description `already_exists` — A resource with the same unique field already exists (for a user, usually `email`). `details.fields` names the field.
|
|
20864
21099
|
*
|
|
20865
21100
|
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
20866
21101
|
*/
|
|
@@ -20871,7 +21106,7 @@ export interface operations {
|
|
|
20871
21106
|
content: {
|
|
20872
21107
|
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
20873
21108
|
/** @enum {string} */
|
|
20874
|
-
error_code?: "
|
|
21109
|
+
error_code?: "already_exists" | "validation_error";
|
|
20875
21110
|
};
|
|
20876
21111
|
};
|
|
20877
21112
|
};
|
|
@@ -20905,11 +21140,7 @@ export interface operations {
|
|
|
20905
21140
|
};
|
|
20906
21141
|
};
|
|
20907
21142
|
};
|
|
20908
|
-
/**
|
|
20909
|
-
* @description `not_found` — The resource does not exist in this account.
|
|
20910
|
-
*
|
|
20911
|
-
* `account_not_found` — No Auth Account matches the request (domain, header or token).
|
|
20912
|
-
*/
|
|
21143
|
+
/** @description `account_not_found` — No Auth Account matches the request (domain, header or token). */
|
|
20913
21144
|
404: {
|
|
20914
21145
|
headers: {
|
|
20915
21146
|
[name: string]: unknown;
|
|
@@ -20917,7 +21148,7 @@ export interface operations {
|
|
|
20917
21148
|
content: {
|
|
20918
21149
|
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
20919
21150
|
/** @enum {string} */
|
|
20920
|
-
error_code?: "
|
|
21151
|
+
error_code?: "account_not_found";
|
|
20921
21152
|
};
|
|
20922
21153
|
};
|
|
20923
21154
|
};
|
|
@@ -20947,7 +21178,7 @@ export interface operations {
|
|
|
20947
21178
|
};
|
|
20948
21179
|
};
|
|
20949
21180
|
};
|
|
20950
|
-
"action/
|
|
21181
|
+
"action/get": {
|
|
20951
21182
|
parameters: {
|
|
20952
21183
|
query?: never;
|
|
20953
21184
|
header?: never;
|
|
@@ -20956,21 +21187,7 @@ export interface operations {
|
|
|
20956
21187
|
};
|
|
20957
21188
|
cookie?: never;
|
|
20958
21189
|
};
|
|
20959
|
-
|
|
20960
|
-
requestBody: {
|
|
20961
|
-
content: {
|
|
20962
|
-
"application/json": {
|
|
20963
|
-
/** @description Action Name */
|
|
20964
|
-
name?: string;
|
|
20965
|
-
/** @description JavaScript code. The triggers are re-derived from the hooks it exports. */
|
|
20966
|
-
code?: string;
|
|
20967
|
-
/** @description Is this action active? */
|
|
20968
|
-
enabled?: boolean;
|
|
20969
|
-
/** @description Execution order */
|
|
20970
|
-
order?: number;
|
|
20971
|
-
};
|
|
20972
|
-
};
|
|
20973
|
-
};
|
|
21190
|
+
requestBody?: never;
|
|
20974
21191
|
responses: {
|
|
20975
21192
|
/** @description Action */
|
|
20976
21193
|
200: {
|
|
@@ -21021,7 +21238,7 @@ export interface operations {
|
|
|
21021
21238
|
/**
|
|
21022
21239
|
* @description `invalid_id` — The id in the path is not a valid id for this resource.
|
|
21023
21240
|
*
|
|
21024
|
-
* `
|
|
21241
|
+
* `invalid_expand` — An `?expand=` path is not allowed on this resource.
|
|
21025
21242
|
*
|
|
21026
21243
|
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
21027
21244
|
*/
|
|
@@ -21032,7 +21249,7 @@ export interface operations {
|
|
|
21032
21249
|
content: {
|
|
21033
21250
|
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
21034
21251
|
/** @enum {string} */
|
|
21035
|
-
error_code?: "invalid_id" | "
|
|
21252
|
+
error_code?: "invalid_id" | "invalid_expand" | "validation_error";
|
|
21036
21253
|
};
|
|
21037
21254
|
};
|
|
21038
21255
|
};
|
|
@@ -21108,7 +21325,7 @@ export interface operations {
|
|
|
21108
21325
|
};
|
|
21109
21326
|
};
|
|
21110
21327
|
};
|
|
21111
|
-
"action/
|
|
21328
|
+
"action/update": {
|
|
21112
21329
|
parameters: {
|
|
21113
21330
|
query?: never;
|
|
21114
21331
|
header?: never;
|
|
@@ -21117,7 +21334,21 @@ export interface operations {
|
|
|
21117
21334
|
};
|
|
21118
21335
|
cookie?: never;
|
|
21119
21336
|
};
|
|
21120
|
-
|
|
21337
|
+
/** @description Partial update for an Action. Only the supplied fields are modified; `triggers` is read-only and follows `code`. */
|
|
21338
|
+
requestBody: {
|
|
21339
|
+
content: {
|
|
21340
|
+
"application/json": {
|
|
21341
|
+
/** @description Action Name */
|
|
21342
|
+
name?: string;
|
|
21343
|
+
/** @description JavaScript code. The triggers are re-derived from the hooks it exports. */
|
|
21344
|
+
code?: string;
|
|
21345
|
+
/** @description Is this action active? */
|
|
21346
|
+
enabled?: boolean;
|
|
21347
|
+
/** @description Execution order */
|
|
21348
|
+
order?: number;
|
|
21349
|
+
};
|
|
21350
|
+
};
|
|
21351
|
+
};
|
|
21121
21352
|
responses: {
|
|
21122
21353
|
/** @description Action */
|
|
21123
21354
|
200: {
|
|
@@ -21168,6 +21399,8 @@ export interface operations {
|
|
|
21168
21399
|
/**
|
|
21169
21400
|
* @description `invalid_id` — The id in the path is not a valid id for this resource.
|
|
21170
21401
|
*
|
|
21402
|
+
* `already_exists` — A resource with the same unique field already exists (for a user, usually `email`). `details.fields` names the field.
|
|
21403
|
+
*
|
|
21171
21404
|
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
21172
21405
|
*/
|
|
21173
21406
|
400: {
|
|
@@ -21177,7 +21410,7 @@ export interface operations {
|
|
|
21177
21410
|
content: {
|
|
21178
21411
|
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
21179
21412
|
/** @enum {string} */
|
|
21180
|
-
error_code?: "invalid_id" | "validation_error";
|
|
21413
|
+
error_code?: "invalid_id" | "already_exists" | "validation_error";
|
|
21181
21414
|
};
|
|
21182
21415
|
};
|
|
21183
21416
|
};
|
|
@@ -21253,38 +21486,183 @@ export interface operations {
|
|
|
21253
21486
|
};
|
|
21254
21487
|
};
|
|
21255
21488
|
};
|
|
21256
|
-
"
|
|
21489
|
+
"action/delete": {
|
|
21257
21490
|
parameters: {
|
|
21258
|
-
query?:
|
|
21259
|
-
client_id?: string;
|
|
21260
|
-
};
|
|
21491
|
+
query?: never;
|
|
21261
21492
|
header?: never;
|
|
21262
|
-
path
|
|
21493
|
+
path: {
|
|
21494
|
+
action_id: string;
|
|
21495
|
+
};
|
|
21263
21496
|
cookie?: never;
|
|
21264
21497
|
};
|
|
21265
21498
|
requestBody?: never;
|
|
21266
21499
|
responses: {
|
|
21267
|
-
/** @description
|
|
21500
|
+
/** @description Action */
|
|
21268
21501
|
200: {
|
|
21269
21502
|
headers: {
|
|
21270
21503
|
[name: string]: unknown;
|
|
21271
21504
|
};
|
|
21272
21505
|
content: {
|
|
21273
21506
|
"application/json": {
|
|
21274
|
-
|
|
21275
|
-
|
|
21276
|
-
|
|
21277
|
-
|
|
21278
|
-
|
|
21279
|
-
|
|
21280
|
-
|
|
21281
|
-
|
|
21282
|
-
|
|
21283
|
-
|
|
21284
|
-
|
|
21285
|
-
|
|
21286
|
-
|
|
21287
|
-
|
|
21507
|
+
/** @description Action ID */
|
|
21508
|
+
id: string;
|
|
21509
|
+
/** @description Action Name */
|
|
21510
|
+
name: string;
|
|
21511
|
+
/** @description Triggers this action runs on. Derived from the hooks the code exports (`onExecutePostLogin` → post-login, `onExecuteContinue` → continue, `onExecuteClientCredentials` → client-credentials); read-only. */
|
|
21512
|
+
triggers: ("continue" | "post-login" | "client-credentials")[];
|
|
21513
|
+
/** @description JavaScript Code to execute */
|
|
21514
|
+
code: string;
|
|
21515
|
+
/**
|
|
21516
|
+
* @description Is this action active?
|
|
21517
|
+
* @default true
|
|
21518
|
+
*/
|
|
21519
|
+
enabled: boolean;
|
|
21520
|
+
/**
|
|
21521
|
+
* @description Execution order: lower runs first; on ties the newest action runs first
|
|
21522
|
+
* @default 0
|
|
21523
|
+
*/
|
|
21524
|
+
order: number;
|
|
21525
|
+
/**
|
|
21526
|
+
* @description Monotonic edit counter — increments on every update. Audit rows stamp the revision that produced each allow/deny (`data.action_revision`); `updatedAt` dates the current revision.
|
|
21527
|
+
* @default 1
|
|
21528
|
+
*/
|
|
21529
|
+
revision: number;
|
|
21530
|
+
/** @description Object is related with this account */
|
|
21531
|
+
account: string;
|
|
21532
|
+
/**
|
|
21533
|
+
* @description ActionMetadata
|
|
21534
|
+
* @default {}
|
|
21535
|
+
*/
|
|
21536
|
+
metadata: {
|
|
21537
|
+
[key: string]: unknown;
|
|
21538
|
+
};
|
|
21539
|
+
/** @description Action creation date */
|
|
21540
|
+
createdAt: string;
|
|
21541
|
+
/** @description Action updated date */
|
|
21542
|
+
updatedAt?: string;
|
|
21543
|
+
};
|
|
21544
|
+
};
|
|
21545
|
+
};
|
|
21546
|
+
/**
|
|
21547
|
+
* @description `invalid_id` — The id in the path is not a valid id for this resource.
|
|
21548
|
+
*
|
|
21549
|
+
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
21550
|
+
*/
|
|
21551
|
+
400: {
|
|
21552
|
+
headers: {
|
|
21553
|
+
[name: string]: unknown;
|
|
21554
|
+
};
|
|
21555
|
+
content: {
|
|
21556
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
21557
|
+
/** @enum {string} */
|
|
21558
|
+
error_code?: "invalid_id" | "validation_error";
|
|
21559
|
+
};
|
|
21560
|
+
};
|
|
21561
|
+
};
|
|
21562
|
+
/** @description `unauthorized` — The request carries no valid credentials. */
|
|
21563
|
+
401: {
|
|
21564
|
+
headers: {
|
|
21565
|
+
[name: string]: unknown;
|
|
21566
|
+
};
|
|
21567
|
+
content: {
|
|
21568
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
21569
|
+
/** @enum {string} */
|
|
21570
|
+
error_code?: "unauthorized";
|
|
21571
|
+
};
|
|
21572
|
+
};
|
|
21573
|
+
};
|
|
21574
|
+
/**
|
|
21575
|
+
* @description `forbidden` — The credentials are valid but do not allow this operation.
|
|
21576
|
+
*
|
|
21577
|
+
* `insufficient_scope` — The token lacks a scope this operation requires. `message` names it.
|
|
21578
|
+
*
|
|
21579
|
+
* `user_suspended` — The user is suspended and cannot sign in or be modified.
|
|
21580
|
+
*/
|
|
21581
|
+
403: {
|
|
21582
|
+
headers: {
|
|
21583
|
+
[name: string]: unknown;
|
|
21584
|
+
};
|
|
21585
|
+
content: {
|
|
21586
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
21587
|
+
/** @enum {string} */
|
|
21588
|
+
error_code?: "forbidden" | "insufficient_scope" | "user_suspended";
|
|
21589
|
+
};
|
|
21590
|
+
};
|
|
21591
|
+
};
|
|
21592
|
+
/**
|
|
21593
|
+
* @description `not_found` — The resource does not exist in this account.
|
|
21594
|
+
*
|
|
21595
|
+
* `account_not_found` — No Auth Account matches the request (domain, header or token).
|
|
21596
|
+
*/
|
|
21597
|
+
404: {
|
|
21598
|
+
headers: {
|
|
21599
|
+
[name: string]: unknown;
|
|
21600
|
+
};
|
|
21601
|
+
content: {
|
|
21602
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
21603
|
+
/** @enum {string} */
|
|
21604
|
+
error_code?: "not_found" | "account_not_found";
|
|
21605
|
+
};
|
|
21606
|
+
};
|
|
21607
|
+
};
|
|
21608
|
+
/** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
|
|
21609
|
+
429: {
|
|
21610
|
+
headers: {
|
|
21611
|
+
[name: string]: unknown;
|
|
21612
|
+
};
|
|
21613
|
+
content: {
|
|
21614
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
21615
|
+
/** @enum {string} */
|
|
21616
|
+
error_code?: "too_many_requests";
|
|
21617
|
+
};
|
|
21618
|
+
};
|
|
21619
|
+
};
|
|
21620
|
+
/** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
|
|
21621
|
+
500: {
|
|
21622
|
+
headers: {
|
|
21623
|
+
[name: string]: unknown;
|
|
21624
|
+
};
|
|
21625
|
+
content: {
|
|
21626
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
21627
|
+
/** @enum {string} */
|
|
21628
|
+
error_code?: "internal_error";
|
|
21629
|
+
};
|
|
21630
|
+
};
|
|
21631
|
+
};
|
|
21632
|
+
};
|
|
21633
|
+
};
|
|
21634
|
+
"loginflow/resolved": {
|
|
21635
|
+
parameters: {
|
|
21636
|
+
query?: {
|
|
21637
|
+
client_id?: string;
|
|
21638
|
+
};
|
|
21639
|
+
header?: never;
|
|
21640
|
+
path?: never;
|
|
21641
|
+
cookie?: never;
|
|
21642
|
+
};
|
|
21643
|
+
requestBody?: never;
|
|
21644
|
+
responses: {
|
|
21645
|
+
/** @description Default Response */
|
|
21646
|
+
200: {
|
|
21647
|
+
headers: {
|
|
21648
|
+
[name: string]: unknown;
|
|
21649
|
+
};
|
|
21650
|
+
content: {
|
|
21651
|
+
"application/json": {
|
|
21652
|
+
source: "compiled" | "published";
|
|
21653
|
+
flow_id: string | null;
|
|
21654
|
+
revision: number;
|
|
21655
|
+
/** @description A login flow graph: typed nodes joined by named handles. See the validation rules on publish. */
|
|
21656
|
+
graph: {
|
|
21657
|
+
nodes: {
|
|
21658
|
+
id: string;
|
|
21659
|
+
type: "start" | "identify" | "methods" | "credential" | "action" | "mfa_gate" | "mfa_challenge" | "mfa_enroll" | "passkey_offer" | "condition" | "deny" | "end" | "consent" | "set_data";
|
|
21660
|
+
config?: {
|
|
21661
|
+
[key: string]: unknown;
|
|
21662
|
+
};
|
|
21663
|
+
}[];
|
|
21664
|
+
edges: {
|
|
21665
|
+
from: string;
|
|
21288
21666
|
handle: string;
|
|
21289
21667
|
to: string;
|
|
21290
21668
|
}[];
|
|
@@ -23287,6 +23665,26 @@ export interface operations {
|
|
|
23287
23665
|
[key: string]: unknown;
|
|
23288
23666
|
};
|
|
23289
23667
|
} | {
|
|
23668
|
+
/**
|
|
23669
|
+
* @description Events to subscribe to. For `webhook` subscriptions it must be a subset of the published catalog; any other value is rejected with a 400:
|
|
23670
|
+
*
|
|
23671
|
+
* - `user.created`: A user was created (signup, import or Management API).
|
|
23672
|
+
* - `user.updated`: A user was updated.
|
|
23673
|
+
* - `user.deleted`: A user was deleted.
|
|
23674
|
+
* - `auth.login`: A user logged in.
|
|
23675
|
+
* - `credentials.exported`: Someone exported the tenant's password hashes (`GET /user/export` with hashes).
|
|
23676
|
+
* - `team.created`: A team was created.
|
|
23677
|
+
* - `team.updated`: A team was updated.
|
|
23678
|
+
* - `team.deleted`: A team was deleted.
|
|
23679
|
+
* - `team.member.added`: A user was added to a team.
|
|
23680
|
+
* - `team.member.updated`: A team member's roles changed.
|
|
23681
|
+
* - `team.member.removed`: A user was removed from a team (or left it).
|
|
23682
|
+
* - `team.invite.created`: An invitation to join a team was created.
|
|
23683
|
+
* - `team.invite.revoked`: A pending team invitation was revoked.
|
|
23684
|
+
* - `team.invite.accepted`: A team invitation was accepted.
|
|
23685
|
+
*
|
|
23686
|
+
* `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.
|
|
23687
|
+
*/
|
|
23290
23688
|
events: string[];
|
|
23291
23689
|
/** @enum {string} */
|
|
23292
23690
|
channel: "webhook";
|
|
@@ -23295,11 +23693,11 @@ export interface operations {
|
|
|
23295
23693
|
config: {
|
|
23296
23694
|
/**
|
|
23297
23695
|
* Format: uri
|
|
23298
|
-
* @description Webhook URL
|
|
23696
|
+
* @description Webhook URL. Must be `https`. Deliveries to private, loopback, link-local or metadata addresses are refused at delivery time.
|
|
23299
23697
|
*/
|
|
23300
23698
|
url: string;
|
|
23301
|
-
/** @description Secret used to sign the webhook payload */
|
|
23302
|
-
secret
|
|
23699
|
+
/** @description Secret used to sign the webhook payload. Optional: when omitted one is generated and returned once, in the `secret` field of the response. */
|
|
23700
|
+
secret?: string;
|
|
23303
23701
|
};
|
|
23304
23702
|
/** @description Add Metadata */
|
|
23305
23703
|
metadata?: {
|
|
@@ -23342,6 +23740,668 @@ export interface operations {
|
|
|
23342
23740
|
} | {
|
|
23343
23741
|
/** @description NotificationSubscriptionWebhook ID */
|
|
23344
23742
|
id: string;
|
|
23743
|
+
/**
|
|
23744
|
+
* @description Events to subscribe to. For `webhook` subscriptions it must be a subset of the published catalog; any other value is rejected with a 400:
|
|
23745
|
+
*
|
|
23746
|
+
* - `user.created`: A user was created (signup, import or Management API).
|
|
23747
|
+
* - `user.updated`: A user was updated.
|
|
23748
|
+
* - `user.deleted`: A user was deleted.
|
|
23749
|
+
* - `auth.login`: A user logged in.
|
|
23750
|
+
* - `credentials.exported`: Someone exported the tenant's password hashes (`GET /user/export` with hashes).
|
|
23751
|
+
* - `team.created`: A team was created.
|
|
23752
|
+
* - `team.updated`: A team was updated.
|
|
23753
|
+
* - `team.deleted`: A team was deleted.
|
|
23754
|
+
* - `team.member.added`: A user was added to a team.
|
|
23755
|
+
* - `team.member.updated`: A team member's roles changed.
|
|
23756
|
+
* - `team.member.removed`: A user was removed from a team (or left it).
|
|
23757
|
+
* - `team.invite.created`: An invitation to join a team was created.
|
|
23758
|
+
* - `team.invite.revoked`: A pending team invitation was revoked.
|
|
23759
|
+
* - `team.invite.accepted`: A team invitation was accepted.
|
|
23760
|
+
*
|
|
23761
|
+
* `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.
|
|
23762
|
+
*/
|
|
23763
|
+
events: string[];
|
|
23764
|
+
/** @enum {string} */
|
|
23765
|
+
channel: "webhook";
|
|
23766
|
+
/** @description Whether the subscription is active */
|
|
23767
|
+
active: boolean;
|
|
23768
|
+
config: {
|
|
23769
|
+
/**
|
|
23770
|
+
* Format: uri
|
|
23771
|
+
* @description Webhook URL
|
|
23772
|
+
*/
|
|
23773
|
+
url: string;
|
|
23774
|
+
/**
|
|
23775
|
+
* Format: date-time
|
|
23776
|
+
* @description Set after a `rotate-secret`: until this instant deliveries are signed with both the new and the previous secret.
|
|
23777
|
+
*/
|
|
23778
|
+
previous_secret_expires_at?: string;
|
|
23779
|
+
};
|
|
23780
|
+
/** @description `failing` after several consecutive failed delivery attempts; the next successful delivery (or a successful `test`) sets it back to `healthy`. A failing subscription keeps receiving deliveries: it is never deactivated automatically. */
|
|
23781
|
+
status?: "healthy" | "failing";
|
|
23782
|
+
/** @description Failed delivery attempts since the last success. */
|
|
23783
|
+
consecutive_failures?: number;
|
|
23784
|
+
/** Format: date-time */
|
|
23785
|
+
last_failure_at?: string;
|
|
23786
|
+
/** Format: date-time */
|
|
23787
|
+
last_success_at?: string;
|
|
23788
|
+
/** @description The signing secret. Returned ONLY in the response of create (and of `rotate-secret`); get and list never include it. Store it when you create the subscription. */
|
|
23789
|
+
secret?: string;
|
|
23790
|
+
/** @description Object is related with this account */
|
|
23791
|
+
account: string;
|
|
23792
|
+
/**
|
|
23793
|
+
* @description NotificationSubscriptionWebhookMetadata
|
|
23794
|
+
* @default {}
|
|
23795
|
+
*/
|
|
23796
|
+
metadata: {
|
|
23797
|
+
[key: string]: unknown;
|
|
23798
|
+
};
|
|
23799
|
+
/** @description NotificationSubscriptionWebhook creation date */
|
|
23800
|
+
createdAt: string;
|
|
23801
|
+
/** @description NotificationSubscriptionWebhook updated date */
|
|
23802
|
+
updatedAt?: string;
|
|
23803
|
+
};
|
|
23804
|
+
};
|
|
23805
|
+
};
|
|
23806
|
+
/**
|
|
23807
|
+
* @description `already_exists` — A resource with the same unique field already exists (for a user, usually `email`). `details.fields` names the field.
|
|
23808
|
+
*
|
|
23809
|
+
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
23810
|
+
*/
|
|
23811
|
+
400: {
|
|
23812
|
+
headers: {
|
|
23813
|
+
[name: string]: unknown;
|
|
23814
|
+
};
|
|
23815
|
+
content: {
|
|
23816
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
23817
|
+
/** @enum {string} */
|
|
23818
|
+
error_code?: "already_exists" | "validation_error";
|
|
23819
|
+
};
|
|
23820
|
+
};
|
|
23821
|
+
};
|
|
23822
|
+
/** @description `unauthorized` — The request carries no valid credentials. */
|
|
23823
|
+
401: {
|
|
23824
|
+
headers: {
|
|
23825
|
+
[name: string]: unknown;
|
|
23826
|
+
};
|
|
23827
|
+
content: {
|
|
23828
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
23829
|
+
/** @enum {string} */
|
|
23830
|
+
error_code?: "unauthorized";
|
|
23831
|
+
};
|
|
23832
|
+
};
|
|
23833
|
+
};
|
|
23834
|
+
/**
|
|
23835
|
+
* @description `forbidden` — The credentials are valid but do not allow this operation.
|
|
23836
|
+
*
|
|
23837
|
+
* `insufficient_scope` — The token lacks a scope this operation requires. `message` names it.
|
|
23838
|
+
*
|
|
23839
|
+
* `user_suspended` — The user is suspended and cannot sign in or be modified.
|
|
23840
|
+
*/
|
|
23841
|
+
403: {
|
|
23842
|
+
headers: {
|
|
23843
|
+
[name: string]: unknown;
|
|
23844
|
+
};
|
|
23845
|
+
content: {
|
|
23846
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
23847
|
+
/** @enum {string} */
|
|
23848
|
+
error_code?: "forbidden" | "insufficient_scope" | "user_suspended";
|
|
23849
|
+
};
|
|
23850
|
+
};
|
|
23851
|
+
};
|
|
23852
|
+
/** @description `account_not_found` — No Auth Account matches the request (domain, header or token). */
|
|
23853
|
+
404: {
|
|
23854
|
+
headers: {
|
|
23855
|
+
[name: string]: unknown;
|
|
23856
|
+
};
|
|
23857
|
+
content: {
|
|
23858
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
23859
|
+
/** @enum {string} */
|
|
23860
|
+
error_code?: "account_not_found";
|
|
23861
|
+
};
|
|
23862
|
+
};
|
|
23863
|
+
};
|
|
23864
|
+
/** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
|
|
23865
|
+
429: {
|
|
23866
|
+
headers: {
|
|
23867
|
+
[name: string]: unknown;
|
|
23868
|
+
};
|
|
23869
|
+
content: {
|
|
23870
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
23871
|
+
/** @enum {string} */
|
|
23872
|
+
error_code?: "too_many_requests";
|
|
23873
|
+
};
|
|
23874
|
+
};
|
|
23875
|
+
};
|
|
23876
|
+
/** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
|
|
23877
|
+
500: {
|
|
23878
|
+
headers: {
|
|
23879
|
+
[name: string]: unknown;
|
|
23880
|
+
};
|
|
23881
|
+
content: {
|
|
23882
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
23883
|
+
/** @enum {string} */
|
|
23884
|
+
error_code?: "internal_error";
|
|
23885
|
+
};
|
|
23886
|
+
};
|
|
23887
|
+
};
|
|
23888
|
+
};
|
|
23889
|
+
};
|
|
23890
|
+
"notificationsubscription/get": {
|
|
23891
|
+
parameters: {
|
|
23892
|
+
query?: never;
|
|
23893
|
+
header?: never;
|
|
23894
|
+
path: {
|
|
23895
|
+
notificationsubscription_id: string;
|
|
23896
|
+
};
|
|
23897
|
+
cookie?: never;
|
|
23898
|
+
};
|
|
23899
|
+
requestBody?: never;
|
|
23900
|
+
responses: {
|
|
23901
|
+
/** @description NotificationSubscription */
|
|
23902
|
+
200: {
|
|
23903
|
+
headers: {
|
|
23904
|
+
[name: string]: unknown;
|
|
23905
|
+
};
|
|
23906
|
+
content: {
|
|
23907
|
+
"application/json": {
|
|
23908
|
+
/** @description NotificationSubscriptionEmail ID */
|
|
23909
|
+
id: string;
|
|
23910
|
+
events: string[];
|
|
23911
|
+
/** @enum {string} */
|
|
23912
|
+
channel: "email";
|
|
23913
|
+
/** @description Whether the subscription is active */
|
|
23914
|
+
active: boolean;
|
|
23915
|
+
config: {
|
|
23916
|
+
recipients: string[];
|
|
23917
|
+
};
|
|
23918
|
+
/** @description Object is related with this account */
|
|
23919
|
+
account: string;
|
|
23920
|
+
/**
|
|
23921
|
+
* @description NotificationSubscriptionEmailMetadata
|
|
23922
|
+
* @default {}
|
|
23923
|
+
*/
|
|
23924
|
+
metadata: {
|
|
23925
|
+
[key: string]: unknown;
|
|
23926
|
+
};
|
|
23927
|
+
/** @description NotificationSubscriptionEmail creation date */
|
|
23928
|
+
createdAt: string;
|
|
23929
|
+
/** @description NotificationSubscriptionEmail updated date */
|
|
23930
|
+
updatedAt?: string;
|
|
23931
|
+
} | {
|
|
23932
|
+
/** @description NotificationSubscriptionWebhook ID */
|
|
23933
|
+
id: string;
|
|
23934
|
+
/**
|
|
23935
|
+
* @description Events to subscribe to. For `webhook` subscriptions it must be a subset of the published catalog; any other value is rejected with a 400:
|
|
23936
|
+
*
|
|
23937
|
+
* - `user.created`: A user was created (signup, import or Management API).
|
|
23938
|
+
* - `user.updated`: A user was updated.
|
|
23939
|
+
* - `user.deleted`: A user was deleted.
|
|
23940
|
+
* - `auth.login`: A user logged in.
|
|
23941
|
+
* - `credentials.exported`: Someone exported the tenant's password hashes (`GET /user/export` with hashes).
|
|
23942
|
+
* - `team.created`: A team was created.
|
|
23943
|
+
* - `team.updated`: A team was updated.
|
|
23944
|
+
* - `team.deleted`: A team was deleted.
|
|
23945
|
+
* - `team.member.added`: A user was added to a team.
|
|
23946
|
+
* - `team.member.updated`: A team member's roles changed.
|
|
23947
|
+
* - `team.member.removed`: A user was removed from a team (or left it).
|
|
23948
|
+
* - `team.invite.created`: An invitation to join a team was created.
|
|
23949
|
+
* - `team.invite.revoked`: A pending team invitation was revoked.
|
|
23950
|
+
* - `team.invite.accepted`: A team invitation was accepted.
|
|
23951
|
+
*
|
|
23952
|
+
* `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.
|
|
23953
|
+
*/
|
|
23954
|
+
events: string[];
|
|
23955
|
+
/** @enum {string} */
|
|
23956
|
+
channel: "webhook";
|
|
23957
|
+
/** @description Whether the subscription is active */
|
|
23958
|
+
active: boolean;
|
|
23959
|
+
config: {
|
|
23960
|
+
/**
|
|
23961
|
+
* Format: uri
|
|
23962
|
+
* @description Webhook URL
|
|
23963
|
+
*/
|
|
23964
|
+
url: string;
|
|
23965
|
+
/**
|
|
23966
|
+
* Format: date-time
|
|
23967
|
+
* @description Set after a `rotate-secret`: until this instant deliveries are signed with both the new and the previous secret.
|
|
23968
|
+
*/
|
|
23969
|
+
previous_secret_expires_at?: string;
|
|
23970
|
+
};
|
|
23971
|
+
/** @description `failing` after several consecutive failed delivery attempts; the next successful delivery (or a successful `test`) sets it back to `healthy`. A failing subscription keeps receiving deliveries: it is never deactivated automatically. */
|
|
23972
|
+
status?: "healthy" | "failing";
|
|
23973
|
+
/** @description Failed delivery attempts since the last success. */
|
|
23974
|
+
consecutive_failures?: number;
|
|
23975
|
+
/** Format: date-time */
|
|
23976
|
+
last_failure_at?: string;
|
|
23977
|
+
/** Format: date-time */
|
|
23978
|
+
last_success_at?: string;
|
|
23979
|
+
/** @description The signing secret. Returned ONLY in the response of create (and of `rotate-secret`); get and list never include it. Store it when you create the subscription. */
|
|
23980
|
+
secret?: string;
|
|
23981
|
+
/** @description Object is related with this account */
|
|
23982
|
+
account: string;
|
|
23983
|
+
/**
|
|
23984
|
+
* @description NotificationSubscriptionWebhookMetadata
|
|
23985
|
+
* @default {}
|
|
23986
|
+
*/
|
|
23987
|
+
metadata: {
|
|
23988
|
+
[key: string]: unknown;
|
|
23989
|
+
};
|
|
23990
|
+
/** @description NotificationSubscriptionWebhook creation date */
|
|
23991
|
+
createdAt: string;
|
|
23992
|
+
/** @description NotificationSubscriptionWebhook updated date */
|
|
23993
|
+
updatedAt?: string;
|
|
23994
|
+
};
|
|
23995
|
+
};
|
|
23996
|
+
};
|
|
23997
|
+
/**
|
|
23998
|
+
* @description `invalid_id` — The id in the path is not a valid id for this resource.
|
|
23999
|
+
*
|
|
24000
|
+
* `invalid_expand` — An `?expand=` path is not allowed on this resource.
|
|
24001
|
+
*
|
|
24002
|
+
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
24003
|
+
*/
|
|
24004
|
+
400: {
|
|
24005
|
+
headers: {
|
|
24006
|
+
[name: string]: unknown;
|
|
24007
|
+
};
|
|
24008
|
+
content: {
|
|
24009
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
24010
|
+
/** @enum {string} */
|
|
24011
|
+
error_code?: "invalid_id" | "invalid_expand" | "validation_error";
|
|
24012
|
+
};
|
|
24013
|
+
};
|
|
24014
|
+
};
|
|
24015
|
+
/** @description `unauthorized` — The request carries no valid credentials. */
|
|
24016
|
+
401: {
|
|
24017
|
+
headers: {
|
|
24018
|
+
[name: string]: unknown;
|
|
24019
|
+
};
|
|
24020
|
+
content: {
|
|
24021
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
24022
|
+
/** @enum {string} */
|
|
24023
|
+
error_code?: "unauthorized";
|
|
24024
|
+
};
|
|
24025
|
+
};
|
|
24026
|
+
};
|
|
24027
|
+
/**
|
|
24028
|
+
* @description `forbidden` — The credentials are valid but do not allow this operation.
|
|
24029
|
+
*
|
|
24030
|
+
* `insufficient_scope` — The token lacks a scope this operation requires. `message` names it.
|
|
24031
|
+
*
|
|
24032
|
+
* `user_suspended` — The user is suspended and cannot sign in or be modified.
|
|
24033
|
+
*/
|
|
24034
|
+
403: {
|
|
24035
|
+
headers: {
|
|
24036
|
+
[name: string]: unknown;
|
|
24037
|
+
};
|
|
24038
|
+
content: {
|
|
24039
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
24040
|
+
/** @enum {string} */
|
|
24041
|
+
error_code?: "forbidden" | "insufficient_scope" | "user_suspended";
|
|
24042
|
+
};
|
|
24043
|
+
};
|
|
24044
|
+
};
|
|
24045
|
+
/**
|
|
24046
|
+
* @description `not_found` — The resource does not exist in this account.
|
|
24047
|
+
*
|
|
24048
|
+
* `account_not_found` — No Auth Account matches the request (domain, header or token).
|
|
24049
|
+
*/
|
|
24050
|
+
404: {
|
|
24051
|
+
headers: {
|
|
24052
|
+
[name: string]: unknown;
|
|
24053
|
+
};
|
|
24054
|
+
content: {
|
|
24055
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
24056
|
+
/** @enum {string} */
|
|
24057
|
+
error_code?: "not_found" | "account_not_found";
|
|
24058
|
+
};
|
|
24059
|
+
};
|
|
24060
|
+
};
|
|
24061
|
+
/** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
|
|
24062
|
+
429: {
|
|
24063
|
+
headers: {
|
|
24064
|
+
[name: string]: unknown;
|
|
24065
|
+
};
|
|
24066
|
+
content: {
|
|
24067
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
24068
|
+
/** @enum {string} */
|
|
24069
|
+
error_code?: "too_many_requests";
|
|
24070
|
+
};
|
|
24071
|
+
};
|
|
24072
|
+
};
|
|
24073
|
+
/** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
|
|
24074
|
+
500: {
|
|
24075
|
+
headers: {
|
|
24076
|
+
[name: string]: unknown;
|
|
24077
|
+
};
|
|
24078
|
+
content: {
|
|
24079
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
24080
|
+
/** @enum {string} */
|
|
24081
|
+
error_code?: "internal_error";
|
|
24082
|
+
};
|
|
24083
|
+
};
|
|
24084
|
+
};
|
|
24085
|
+
};
|
|
24086
|
+
};
|
|
24087
|
+
"notificationsubscription/update": {
|
|
24088
|
+
parameters: {
|
|
24089
|
+
query?: never;
|
|
24090
|
+
header?: never;
|
|
24091
|
+
path: {
|
|
24092
|
+
notificationsubscription_id: string;
|
|
24093
|
+
};
|
|
24094
|
+
cookie?: never;
|
|
24095
|
+
};
|
|
24096
|
+
/** @description NotificationSubscriptionUpdate */
|
|
24097
|
+
requestBody: {
|
|
24098
|
+
content: {
|
|
24099
|
+
"application/json": {
|
|
24100
|
+
events?: string[];
|
|
24101
|
+
/** @enum {string} */
|
|
24102
|
+
channel?: "email";
|
|
24103
|
+
/** @description Whether the subscription is active */
|
|
24104
|
+
active?: boolean;
|
|
24105
|
+
config?: {
|
|
24106
|
+
recipients?: string[];
|
|
24107
|
+
};
|
|
24108
|
+
/** @description Metadata update */
|
|
24109
|
+
metadata?: {
|
|
24110
|
+
[key: string]: unknown;
|
|
24111
|
+
};
|
|
24112
|
+
} | {
|
|
24113
|
+
/**
|
|
24114
|
+
* @description Events to subscribe to. For `webhook` subscriptions it must be a subset of the published catalog; any other value is rejected with a 400:
|
|
24115
|
+
*
|
|
24116
|
+
* - `user.created`: A user was created (signup, import or Management API).
|
|
24117
|
+
* - `user.updated`: A user was updated.
|
|
24118
|
+
* - `user.deleted`: A user was deleted.
|
|
24119
|
+
* - `auth.login`: A user logged in.
|
|
24120
|
+
* - `credentials.exported`: Someone exported the tenant's password hashes (`GET /user/export` with hashes).
|
|
24121
|
+
* - `team.created`: A team was created.
|
|
24122
|
+
* - `team.updated`: A team was updated.
|
|
24123
|
+
* - `team.deleted`: A team was deleted.
|
|
24124
|
+
* - `team.member.added`: A user was added to a team.
|
|
24125
|
+
* - `team.member.updated`: A team member's roles changed.
|
|
24126
|
+
* - `team.member.removed`: A user was removed from a team (or left it).
|
|
24127
|
+
* - `team.invite.created`: An invitation to join a team was created.
|
|
24128
|
+
* - `team.invite.revoked`: A pending team invitation was revoked.
|
|
24129
|
+
* - `team.invite.accepted`: A team invitation was accepted.
|
|
24130
|
+
*
|
|
24131
|
+
* `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.
|
|
24132
|
+
*/
|
|
24133
|
+
events?: string[];
|
|
24134
|
+
/** @enum {string} */
|
|
24135
|
+
channel?: "webhook";
|
|
24136
|
+
/** @description Whether the subscription is active */
|
|
24137
|
+
active?: boolean;
|
|
24138
|
+
config?: {
|
|
24139
|
+
/**
|
|
24140
|
+
* Format: uri
|
|
24141
|
+
* @description Webhook URL. Must be `https`.
|
|
24142
|
+
*/
|
|
24143
|
+
url?: string;
|
|
24144
|
+
/** @description Replaces the signing secret immediately, with no overlap. Prefer `POST /notificationsubscription/{id}/rotate-secret`, which keeps the previous secret valid for 24 hours. */
|
|
24145
|
+
secret?: string;
|
|
24146
|
+
};
|
|
24147
|
+
/** @description Metadata update */
|
|
24148
|
+
metadata?: {
|
|
24149
|
+
[key: string]: unknown;
|
|
24150
|
+
};
|
|
24151
|
+
};
|
|
24152
|
+
};
|
|
24153
|
+
};
|
|
24154
|
+
responses: {
|
|
24155
|
+
/** @description NotificationSubscription */
|
|
24156
|
+
200: {
|
|
24157
|
+
headers: {
|
|
24158
|
+
[name: string]: unknown;
|
|
24159
|
+
};
|
|
24160
|
+
content: {
|
|
24161
|
+
"application/json": {
|
|
24162
|
+
/** @description NotificationSubscriptionEmail ID */
|
|
24163
|
+
id: string;
|
|
24164
|
+
events: string[];
|
|
24165
|
+
/** @enum {string} */
|
|
24166
|
+
channel: "email";
|
|
24167
|
+
/** @description Whether the subscription is active */
|
|
24168
|
+
active: boolean;
|
|
24169
|
+
config: {
|
|
24170
|
+
recipients: string[];
|
|
24171
|
+
};
|
|
24172
|
+
/** @description Object is related with this account */
|
|
24173
|
+
account: string;
|
|
24174
|
+
/**
|
|
24175
|
+
* @description NotificationSubscriptionEmailMetadata
|
|
24176
|
+
* @default {}
|
|
24177
|
+
*/
|
|
24178
|
+
metadata: {
|
|
24179
|
+
[key: string]: unknown;
|
|
24180
|
+
};
|
|
24181
|
+
/** @description NotificationSubscriptionEmail creation date */
|
|
24182
|
+
createdAt: string;
|
|
24183
|
+
/** @description NotificationSubscriptionEmail updated date */
|
|
24184
|
+
updatedAt?: string;
|
|
24185
|
+
} | {
|
|
24186
|
+
/** @description NotificationSubscriptionWebhook ID */
|
|
24187
|
+
id: string;
|
|
24188
|
+
/**
|
|
24189
|
+
* @description Events to subscribe to. For `webhook` subscriptions it must be a subset of the published catalog; any other value is rejected with a 400:
|
|
24190
|
+
*
|
|
24191
|
+
* - `user.created`: A user was created (signup, import or Management API).
|
|
24192
|
+
* - `user.updated`: A user was updated.
|
|
24193
|
+
* - `user.deleted`: A user was deleted.
|
|
24194
|
+
* - `auth.login`: A user logged in.
|
|
24195
|
+
* - `credentials.exported`: Someone exported the tenant's password hashes (`GET /user/export` with hashes).
|
|
24196
|
+
* - `team.created`: A team was created.
|
|
24197
|
+
* - `team.updated`: A team was updated.
|
|
24198
|
+
* - `team.deleted`: A team was deleted.
|
|
24199
|
+
* - `team.member.added`: A user was added to a team.
|
|
24200
|
+
* - `team.member.updated`: A team member's roles changed.
|
|
24201
|
+
* - `team.member.removed`: A user was removed from a team (or left it).
|
|
24202
|
+
* - `team.invite.created`: An invitation to join a team was created.
|
|
24203
|
+
* - `team.invite.revoked`: A pending team invitation was revoked.
|
|
24204
|
+
* - `team.invite.accepted`: A team invitation was accepted.
|
|
24205
|
+
*
|
|
24206
|
+
* `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.
|
|
24207
|
+
*/
|
|
24208
|
+
events: string[];
|
|
24209
|
+
/** @enum {string} */
|
|
24210
|
+
channel: "webhook";
|
|
24211
|
+
/** @description Whether the subscription is active */
|
|
24212
|
+
active: boolean;
|
|
24213
|
+
config: {
|
|
24214
|
+
/**
|
|
24215
|
+
* Format: uri
|
|
24216
|
+
* @description Webhook URL
|
|
24217
|
+
*/
|
|
24218
|
+
url: string;
|
|
24219
|
+
/**
|
|
24220
|
+
* Format: date-time
|
|
24221
|
+
* @description Set after a `rotate-secret`: until this instant deliveries are signed with both the new and the previous secret.
|
|
24222
|
+
*/
|
|
24223
|
+
previous_secret_expires_at?: string;
|
|
24224
|
+
};
|
|
24225
|
+
/** @description `failing` after several consecutive failed delivery attempts; the next successful delivery (or a successful `test`) sets it back to `healthy`. A failing subscription keeps receiving deliveries: it is never deactivated automatically. */
|
|
24226
|
+
status?: "healthy" | "failing";
|
|
24227
|
+
/** @description Failed delivery attempts since the last success. */
|
|
24228
|
+
consecutive_failures?: number;
|
|
24229
|
+
/** Format: date-time */
|
|
24230
|
+
last_failure_at?: string;
|
|
24231
|
+
/** Format: date-time */
|
|
24232
|
+
last_success_at?: string;
|
|
24233
|
+
/** @description The signing secret. Returned ONLY in the response of create (and of `rotate-secret`); get and list never include it. Store it when you create the subscription. */
|
|
24234
|
+
secret?: string;
|
|
24235
|
+
/** @description Object is related with this account */
|
|
24236
|
+
account: string;
|
|
24237
|
+
/**
|
|
24238
|
+
* @description NotificationSubscriptionWebhookMetadata
|
|
24239
|
+
* @default {}
|
|
24240
|
+
*/
|
|
24241
|
+
metadata: {
|
|
24242
|
+
[key: string]: unknown;
|
|
24243
|
+
};
|
|
24244
|
+
/** @description NotificationSubscriptionWebhook creation date */
|
|
24245
|
+
createdAt: string;
|
|
24246
|
+
/** @description NotificationSubscriptionWebhook updated date */
|
|
24247
|
+
updatedAt?: string;
|
|
24248
|
+
};
|
|
24249
|
+
};
|
|
24250
|
+
};
|
|
24251
|
+
/**
|
|
24252
|
+
* @description `invalid_id` — The id in the path is not a valid id for this resource.
|
|
24253
|
+
*
|
|
24254
|
+
* `already_exists` — A resource with the same unique field already exists (for a user, usually `email`). `details.fields` names the field.
|
|
24255
|
+
*
|
|
24256
|
+
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
24257
|
+
*/
|
|
24258
|
+
400: {
|
|
24259
|
+
headers: {
|
|
24260
|
+
[name: string]: unknown;
|
|
24261
|
+
};
|
|
24262
|
+
content: {
|
|
24263
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
24264
|
+
/** @enum {string} */
|
|
24265
|
+
error_code?: "invalid_id" | "already_exists" | "validation_error";
|
|
24266
|
+
};
|
|
24267
|
+
};
|
|
24268
|
+
};
|
|
24269
|
+
/** @description `unauthorized` — The request carries no valid credentials. */
|
|
24270
|
+
401: {
|
|
24271
|
+
headers: {
|
|
24272
|
+
[name: string]: unknown;
|
|
24273
|
+
};
|
|
24274
|
+
content: {
|
|
24275
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
24276
|
+
/** @enum {string} */
|
|
24277
|
+
error_code?: "unauthorized";
|
|
24278
|
+
};
|
|
24279
|
+
};
|
|
24280
|
+
};
|
|
24281
|
+
/**
|
|
24282
|
+
* @description `forbidden` — The credentials are valid but do not allow this operation.
|
|
24283
|
+
*
|
|
24284
|
+
* `insufficient_scope` — The token lacks a scope this operation requires. `message` names it.
|
|
24285
|
+
*
|
|
24286
|
+
* `user_suspended` — The user is suspended and cannot sign in or be modified.
|
|
24287
|
+
*/
|
|
24288
|
+
403: {
|
|
24289
|
+
headers: {
|
|
24290
|
+
[name: string]: unknown;
|
|
24291
|
+
};
|
|
24292
|
+
content: {
|
|
24293
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
24294
|
+
/** @enum {string} */
|
|
24295
|
+
error_code?: "forbidden" | "insufficient_scope" | "user_suspended";
|
|
24296
|
+
};
|
|
24297
|
+
};
|
|
24298
|
+
};
|
|
24299
|
+
/**
|
|
24300
|
+
* @description `not_found` — The resource does not exist in this account.
|
|
24301
|
+
*
|
|
24302
|
+
* `account_not_found` — No Auth Account matches the request (domain, header or token).
|
|
24303
|
+
*/
|
|
24304
|
+
404: {
|
|
24305
|
+
headers: {
|
|
24306
|
+
[name: string]: unknown;
|
|
24307
|
+
};
|
|
24308
|
+
content: {
|
|
24309
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
24310
|
+
/** @enum {string} */
|
|
24311
|
+
error_code?: "not_found" | "account_not_found";
|
|
24312
|
+
};
|
|
24313
|
+
};
|
|
24314
|
+
};
|
|
24315
|
+
/** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
|
|
24316
|
+
429: {
|
|
24317
|
+
headers: {
|
|
24318
|
+
[name: string]: unknown;
|
|
24319
|
+
};
|
|
24320
|
+
content: {
|
|
24321
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
24322
|
+
/** @enum {string} */
|
|
24323
|
+
error_code?: "too_many_requests";
|
|
24324
|
+
};
|
|
24325
|
+
};
|
|
24326
|
+
};
|
|
24327
|
+
/** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
|
|
24328
|
+
500: {
|
|
24329
|
+
headers: {
|
|
24330
|
+
[name: string]: unknown;
|
|
24331
|
+
};
|
|
24332
|
+
content: {
|
|
24333
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
24334
|
+
/** @enum {string} */
|
|
24335
|
+
error_code?: "internal_error";
|
|
24336
|
+
};
|
|
24337
|
+
};
|
|
24338
|
+
};
|
|
24339
|
+
};
|
|
24340
|
+
};
|
|
24341
|
+
"notificationsubscription/delete": {
|
|
24342
|
+
parameters: {
|
|
24343
|
+
query?: never;
|
|
24344
|
+
header?: never;
|
|
24345
|
+
path: {
|
|
24346
|
+
notificationsubscription_id: string;
|
|
24347
|
+
};
|
|
24348
|
+
cookie?: never;
|
|
24349
|
+
};
|
|
24350
|
+
requestBody?: never;
|
|
24351
|
+
responses: {
|
|
24352
|
+
/** @description NotificationSubscription */
|
|
24353
|
+
200: {
|
|
24354
|
+
headers: {
|
|
24355
|
+
[name: string]: unknown;
|
|
24356
|
+
};
|
|
24357
|
+
content: {
|
|
24358
|
+
"application/json": {
|
|
24359
|
+
/** @description NotificationSubscriptionEmail ID */
|
|
24360
|
+
id: string;
|
|
24361
|
+
events: string[];
|
|
24362
|
+
/** @enum {string} */
|
|
24363
|
+
channel: "email";
|
|
24364
|
+
/** @description Whether the subscription is active */
|
|
24365
|
+
active: boolean;
|
|
24366
|
+
config: {
|
|
24367
|
+
recipients: string[];
|
|
24368
|
+
};
|
|
24369
|
+
/** @description Object is related with this account */
|
|
24370
|
+
account: string;
|
|
24371
|
+
/**
|
|
24372
|
+
* @description NotificationSubscriptionEmailMetadata
|
|
24373
|
+
* @default {}
|
|
24374
|
+
*/
|
|
24375
|
+
metadata: {
|
|
24376
|
+
[key: string]: unknown;
|
|
24377
|
+
};
|
|
24378
|
+
/** @description NotificationSubscriptionEmail creation date */
|
|
24379
|
+
createdAt: string;
|
|
24380
|
+
/** @description NotificationSubscriptionEmail updated date */
|
|
24381
|
+
updatedAt?: string;
|
|
24382
|
+
} | {
|
|
24383
|
+
/** @description NotificationSubscriptionWebhook ID */
|
|
24384
|
+
id: string;
|
|
24385
|
+
/**
|
|
24386
|
+
* @description Events to subscribe to. For `webhook` subscriptions it must be a subset of the published catalog; any other value is rejected with a 400:
|
|
24387
|
+
*
|
|
24388
|
+
* - `user.created`: A user was created (signup, import or Management API).
|
|
24389
|
+
* - `user.updated`: A user was updated.
|
|
24390
|
+
* - `user.deleted`: A user was deleted.
|
|
24391
|
+
* - `auth.login`: A user logged in.
|
|
24392
|
+
* - `credentials.exported`: Someone exported the tenant's password hashes (`GET /user/export` with hashes).
|
|
24393
|
+
* - `team.created`: A team was created.
|
|
24394
|
+
* - `team.updated`: A team was updated.
|
|
24395
|
+
* - `team.deleted`: A team was deleted.
|
|
24396
|
+
* - `team.member.added`: A user was added to a team.
|
|
24397
|
+
* - `team.member.updated`: A team member's roles changed.
|
|
24398
|
+
* - `team.member.removed`: A user was removed from a team (or left it).
|
|
24399
|
+
* - `team.invite.created`: An invitation to join a team was created.
|
|
24400
|
+
* - `team.invite.revoked`: A pending team invitation was revoked.
|
|
24401
|
+
* - `team.invite.accepted`: A team invitation was accepted.
|
|
24402
|
+
*
|
|
24403
|
+
* `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.
|
|
24404
|
+
*/
|
|
23345
24405
|
events: string[];
|
|
23346
24406
|
/** @enum {string} */
|
|
23347
24407
|
channel: "webhook";
|
|
@@ -23353,9 +24413,22 @@ export interface operations {
|
|
|
23353
24413
|
* @description Webhook URL
|
|
23354
24414
|
*/
|
|
23355
24415
|
url: string;
|
|
23356
|
-
/**
|
|
23357
|
-
|
|
24416
|
+
/**
|
|
24417
|
+
* Format: date-time
|
|
24418
|
+
* @description Set after a `rotate-secret`: until this instant deliveries are signed with both the new and the previous secret.
|
|
24419
|
+
*/
|
|
24420
|
+
previous_secret_expires_at?: string;
|
|
23358
24421
|
};
|
|
24422
|
+
/** @description `failing` after several consecutive failed delivery attempts; the next successful delivery (or a successful `test`) sets it back to `healthy`. A failing subscription keeps receiving deliveries: it is never deactivated automatically. */
|
|
24423
|
+
status?: "healthy" | "failing";
|
|
24424
|
+
/** @description Failed delivery attempts since the last success. */
|
|
24425
|
+
consecutive_failures?: number;
|
|
24426
|
+
/** Format: date-time */
|
|
24427
|
+
last_failure_at?: string;
|
|
24428
|
+
/** Format: date-time */
|
|
24429
|
+
last_success_at?: string;
|
|
24430
|
+
/** @description The signing secret. Returned ONLY in the response of create (and of `rotate-secret`); get and list never include it. Store it when you create the subscription. */
|
|
24431
|
+
secret?: string;
|
|
23359
24432
|
/** @description Object is related with this account */
|
|
23360
24433
|
account: string;
|
|
23361
24434
|
/**
|
|
@@ -23373,7 +24446,7 @@ export interface operations {
|
|
|
23373
24446
|
};
|
|
23374
24447
|
};
|
|
23375
24448
|
/**
|
|
23376
|
-
* @description `
|
|
24449
|
+
* @description `invalid_id` — The id in the path is not a valid id for this resource.
|
|
23377
24450
|
*
|
|
23378
24451
|
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
23379
24452
|
*/
|
|
@@ -23384,7 +24457,7 @@ export interface operations {
|
|
|
23384
24457
|
content: {
|
|
23385
24458
|
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
23386
24459
|
/** @enum {string} */
|
|
23387
|
-
error_code?: "
|
|
24460
|
+
error_code?: "invalid_id" | "validation_error";
|
|
23388
24461
|
};
|
|
23389
24462
|
};
|
|
23390
24463
|
};
|
|
@@ -23418,7 +24491,11 @@ export interface operations {
|
|
|
23418
24491
|
};
|
|
23419
24492
|
};
|
|
23420
24493
|
};
|
|
23421
|
-
/**
|
|
24494
|
+
/**
|
|
24495
|
+
* @description `not_found` — The resource does not exist in this account.
|
|
24496
|
+
*
|
|
24497
|
+
* `account_not_found` — No Auth Account matches the request (domain, header or token).
|
|
24498
|
+
*/
|
|
23422
24499
|
404: {
|
|
23423
24500
|
headers: {
|
|
23424
24501
|
[name: string]: unknown;
|
|
@@ -23426,7 +24503,7 @@ export interface operations {
|
|
|
23426
24503
|
content: {
|
|
23427
24504
|
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
23428
24505
|
/** @enum {string} */
|
|
23429
|
-
error_code?: "account_not_found";
|
|
24506
|
+
error_code?: "not_found" | "account_not_found";
|
|
23430
24507
|
};
|
|
23431
24508
|
};
|
|
23432
24509
|
};
|
|
@@ -23456,7 +24533,7 @@ export interface operations {
|
|
|
23456
24533
|
};
|
|
23457
24534
|
};
|
|
23458
24535
|
};
|
|
23459
|
-
"notificationsubscription/
|
|
24536
|
+
"notificationsubscription/test": {
|
|
23460
24537
|
parameters: {
|
|
23461
24538
|
query?: never;
|
|
23462
24539
|
header?: never;
|
|
@@ -23467,73 +24544,27 @@ export interface operations {
|
|
|
23467
24544
|
};
|
|
23468
24545
|
requestBody?: never;
|
|
23469
24546
|
responses: {
|
|
23470
|
-
/** @description
|
|
24547
|
+
/** @description Default Response */
|
|
23471
24548
|
200: {
|
|
23472
24549
|
headers: {
|
|
23473
24550
|
[name: string]: unknown;
|
|
23474
24551
|
};
|
|
23475
24552
|
content: {
|
|
23476
24553
|
"application/json": {
|
|
23477
|
-
/** @description
|
|
23478
|
-
|
|
23479
|
-
|
|
23480
|
-
|
|
23481
|
-
|
|
23482
|
-
|
|
23483
|
-
|
|
23484
|
-
|
|
23485
|
-
|
|
23486
|
-
};
|
|
23487
|
-
/** @description Object is related with this account */
|
|
23488
|
-
account: string;
|
|
23489
|
-
/**
|
|
23490
|
-
* @description NotificationSubscriptionEmailMetadata
|
|
23491
|
-
* @default {}
|
|
23492
|
-
*/
|
|
23493
|
-
metadata: {
|
|
23494
|
-
[key: string]: unknown;
|
|
23495
|
-
};
|
|
23496
|
-
/** @description NotificationSubscriptionEmail creation date */
|
|
23497
|
-
createdAt: string;
|
|
23498
|
-
/** @description NotificationSubscriptionEmail updated date */
|
|
23499
|
-
updatedAt?: string;
|
|
23500
|
-
} | {
|
|
23501
|
-
/** @description NotificationSubscriptionWebhook ID */
|
|
23502
|
-
id: string;
|
|
23503
|
-
events: string[];
|
|
23504
|
-
/** @enum {string} */
|
|
23505
|
-
channel: "webhook";
|
|
23506
|
-
/** @description Whether the subscription is active */
|
|
23507
|
-
active: boolean;
|
|
23508
|
-
config: {
|
|
23509
|
-
/**
|
|
23510
|
-
* Format: uri
|
|
23511
|
-
* @description Webhook URL
|
|
23512
|
-
*/
|
|
23513
|
-
url: string;
|
|
23514
|
-
/** @description Secret used to sign the webhook payload */
|
|
23515
|
-
secret: string;
|
|
23516
|
-
};
|
|
23517
|
-
/** @description Object is related with this account */
|
|
23518
|
-
account: string;
|
|
23519
|
-
/**
|
|
23520
|
-
* @description NotificationSubscriptionWebhookMetadata
|
|
23521
|
-
* @default {}
|
|
23522
|
-
*/
|
|
23523
|
-
metadata: {
|
|
23524
|
-
[key: string]: unknown;
|
|
23525
|
-
};
|
|
23526
|
-
/** @description NotificationSubscriptionWebhook creation date */
|
|
23527
|
-
createdAt: string;
|
|
23528
|
-
/** @description NotificationSubscriptionWebhook updated date */
|
|
23529
|
-
updatedAt?: string;
|
|
24554
|
+
/** @description Whether the endpoint answered 2xx. */
|
|
24555
|
+
ok: boolean;
|
|
24556
|
+
/** @description Id of the `ping` event (also sent as `x-faable-delivery`). */
|
|
24557
|
+
event_id: string;
|
|
24558
|
+
/** @description HTTP status the endpoint answered. */
|
|
24559
|
+
status?: number;
|
|
24560
|
+
duration_ms: number;
|
|
24561
|
+
/** @description Why it failed: `HTTP <status>`, a timeout, a network error, or a refused destination. */
|
|
24562
|
+
error?: string;
|
|
23530
24563
|
};
|
|
23531
24564
|
};
|
|
23532
24565
|
};
|
|
23533
24566
|
/**
|
|
23534
|
-
* @description `
|
|
23535
|
-
*
|
|
23536
|
-
* `invalid_expand` — An `?expand=` path is not allowed on this resource.
|
|
24567
|
+
* @description `not_a_webhook` — The operation only applies to `webhook` subscriptions.
|
|
23537
24568
|
*
|
|
23538
24569
|
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
23539
24570
|
*/
|
|
@@ -23544,7 +24575,7 @@ export interface operations {
|
|
|
23544
24575
|
content: {
|
|
23545
24576
|
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
23546
24577
|
/** @enum {string} */
|
|
23547
|
-
error_code?: "
|
|
24578
|
+
error_code?: "not_a_webhook" | "validation_error";
|
|
23548
24579
|
};
|
|
23549
24580
|
};
|
|
23550
24581
|
};
|
|
@@ -23620,7 +24651,7 @@ export interface operations {
|
|
|
23620
24651
|
};
|
|
23621
24652
|
};
|
|
23622
24653
|
};
|
|
23623
|
-
"notificationsubscription/
|
|
24654
|
+
"notificationsubscription/rotateSecret": {
|
|
23624
24655
|
parameters: {
|
|
23625
24656
|
query?: never;
|
|
23626
24657
|
header?: never;
|
|
@@ -23629,112 +24660,35 @@ export interface operations {
|
|
|
23629
24660
|
};
|
|
23630
24661
|
cookie?: never;
|
|
23631
24662
|
};
|
|
23632
|
-
/** @description NotificationSubscriptionUpdate */
|
|
23633
24663
|
requestBody: {
|
|
23634
24664
|
content: {
|
|
23635
24665
|
"application/json": {
|
|
23636
|
-
|
|
23637
|
-
|
|
23638
|
-
channel?: "email";
|
|
23639
|
-
/** @description Whether the subscription is active */
|
|
23640
|
-
active?: boolean;
|
|
23641
|
-
config?: {
|
|
23642
|
-
recipients?: string[];
|
|
23643
|
-
};
|
|
23644
|
-
/** @description Metadata update */
|
|
23645
|
-
metadata?: {
|
|
23646
|
-
[key: string]: unknown;
|
|
23647
|
-
};
|
|
23648
|
-
} | {
|
|
23649
|
-
events?: string[];
|
|
23650
|
-
/** @enum {string} */
|
|
23651
|
-
channel?: "webhook";
|
|
23652
|
-
/** @description Whether the subscription is active */
|
|
23653
|
-
active?: boolean;
|
|
23654
|
-
config?: {
|
|
23655
|
-
/**
|
|
23656
|
-
* Format: uri
|
|
23657
|
-
* @description Webhook URL
|
|
23658
|
-
*/
|
|
23659
|
-
url?: string;
|
|
23660
|
-
/** @description Secret used to sign the webhook payload */
|
|
23661
|
-
secret?: string;
|
|
23662
|
-
};
|
|
23663
|
-
/** @description Metadata update */
|
|
23664
|
-
metadata?: {
|
|
23665
|
-
[key: string]: unknown;
|
|
23666
|
-
};
|
|
24666
|
+
/** @description The new secret. Omit it (send `{}`) to have one generated. */
|
|
24667
|
+
secret?: string;
|
|
23667
24668
|
};
|
|
23668
24669
|
};
|
|
23669
24670
|
};
|
|
23670
24671
|
responses: {
|
|
23671
|
-
/** @description
|
|
24672
|
+
/** @description Default Response */
|
|
23672
24673
|
200: {
|
|
23673
24674
|
headers: {
|
|
23674
24675
|
[name: string]: unknown;
|
|
23675
24676
|
};
|
|
23676
24677
|
content: {
|
|
23677
24678
|
"application/json": {
|
|
23678
|
-
/** @description NotificationSubscriptionEmail ID */
|
|
23679
|
-
id: string;
|
|
23680
|
-
events: string[];
|
|
23681
|
-
/** @enum {string} */
|
|
23682
|
-
channel: "email";
|
|
23683
|
-
/** @description Whether the subscription is active */
|
|
23684
|
-
active: boolean;
|
|
23685
|
-
config: {
|
|
23686
|
-
recipients: string[];
|
|
23687
|
-
};
|
|
23688
|
-
/** @description Object is related with this account */
|
|
23689
|
-
account: string;
|
|
23690
|
-
/**
|
|
23691
|
-
* @description NotificationSubscriptionEmailMetadata
|
|
23692
|
-
* @default {}
|
|
23693
|
-
*/
|
|
23694
|
-
metadata: {
|
|
23695
|
-
[key: string]: unknown;
|
|
23696
|
-
};
|
|
23697
|
-
/** @description NotificationSubscriptionEmail creation date */
|
|
23698
|
-
createdAt: string;
|
|
23699
|
-
/** @description NotificationSubscriptionEmail updated date */
|
|
23700
|
-
updatedAt?: string;
|
|
23701
|
-
} | {
|
|
23702
|
-
/** @description NotificationSubscriptionWebhook ID */
|
|
23703
24679
|
id: string;
|
|
23704
|
-
|
|
23705
|
-
|
|
23706
|
-
channel: "webhook";
|
|
23707
|
-
/** @description Whether the subscription is active */
|
|
23708
|
-
active: boolean;
|
|
23709
|
-
config: {
|
|
23710
|
-
/**
|
|
23711
|
-
* Format: uri
|
|
23712
|
-
* @description Webhook URL
|
|
23713
|
-
*/
|
|
23714
|
-
url: string;
|
|
23715
|
-
/** @description Secret used to sign the webhook payload */
|
|
23716
|
-
secret: string;
|
|
23717
|
-
};
|
|
23718
|
-
/** @description Object is related with this account */
|
|
23719
|
-
account: string;
|
|
24680
|
+
/** @description The new signing secret. This is the only time it is returned. */
|
|
24681
|
+
secret: string;
|
|
23720
24682
|
/**
|
|
23721
|
-
*
|
|
23722
|
-
* @
|
|
24683
|
+
* Format: date-time
|
|
24684
|
+
* @description Until this instant deliveries carry two signatures, one per secret.
|
|
23723
24685
|
*/
|
|
23724
|
-
|
|
23725
|
-
[key: string]: unknown;
|
|
23726
|
-
};
|
|
23727
|
-
/** @description NotificationSubscriptionWebhook creation date */
|
|
23728
|
-
createdAt: string;
|
|
23729
|
-
/** @description NotificationSubscriptionWebhook updated date */
|
|
23730
|
-
updatedAt?: string;
|
|
24686
|
+
previous_secret_expires_at: string;
|
|
23731
24687
|
};
|
|
23732
24688
|
};
|
|
23733
24689
|
};
|
|
23734
24690
|
/**
|
|
23735
|
-
* @description `
|
|
23736
|
-
*
|
|
23737
|
-
* `already_exists` — A resource with the same unique field already exists (for a user, usually `email`). `details.fields` names the field.
|
|
24691
|
+
* @description `not_a_webhook` — The operation only applies to `webhook` subscriptions.
|
|
23738
24692
|
*
|
|
23739
24693
|
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
23740
24694
|
*/
|
|
@@ -23745,7 +24699,7 @@ export interface operations {
|
|
|
23745
24699
|
content: {
|
|
23746
24700
|
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
23747
24701
|
/** @enum {string} */
|
|
23748
|
-
error_code?: "
|
|
24702
|
+
error_code?: "not_a_webhook" | "validation_error";
|
|
23749
24703
|
};
|
|
23750
24704
|
};
|
|
23751
24705
|
};
|
|
@@ -23821,82 +24775,36 @@ export interface operations {
|
|
|
23821
24775
|
};
|
|
23822
24776
|
};
|
|
23823
24777
|
};
|
|
23824
|
-
"notificationsubscription/
|
|
24778
|
+
"notificationsubscription/redeliver": {
|
|
23825
24779
|
parameters: {
|
|
23826
24780
|
query?: never;
|
|
23827
24781
|
header?: never;
|
|
23828
24782
|
path: {
|
|
23829
24783
|
notificationsubscription_id: string;
|
|
24784
|
+
/** @description The delivery id: `data.delivery_id` of the `webhook.<event>` rows of the Log. */
|
|
24785
|
+
delivery_id: string;
|
|
23830
24786
|
};
|
|
23831
24787
|
cookie?: never;
|
|
23832
24788
|
};
|
|
23833
24789
|
requestBody?: never;
|
|
23834
24790
|
responses: {
|
|
23835
|
-
/** @description
|
|
23836
|
-
|
|
24791
|
+
/** @description Default Response */
|
|
24792
|
+
202: {
|
|
23837
24793
|
headers: {
|
|
23838
24794
|
[name: string]: unknown;
|
|
23839
24795
|
};
|
|
23840
24796
|
content: {
|
|
23841
24797
|
"application/json": {
|
|
23842
|
-
|
|
23843
|
-
id: string;
|
|
23844
|
-
events: string[];
|
|
23845
|
-
/** @enum {string} */
|
|
23846
|
-
channel: "email";
|
|
23847
|
-
/** @description Whether the subscription is active */
|
|
23848
|
-
active: boolean;
|
|
23849
|
-
config: {
|
|
23850
|
-
recipients: string[];
|
|
23851
|
-
};
|
|
23852
|
-
/** @description Object is related with this account */
|
|
23853
|
-
account: string;
|
|
23854
|
-
/**
|
|
23855
|
-
* @description NotificationSubscriptionEmailMetadata
|
|
23856
|
-
* @default {}
|
|
23857
|
-
*/
|
|
23858
|
-
metadata: {
|
|
23859
|
-
[key: string]: unknown;
|
|
23860
|
-
};
|
|
23861
|
-
/** @description NotificationSubscriptionEmail creation date */
|
|
23862
|
-
createdAt: string;
|
|
23863
|
-
/** @description NotificationSubscriptionEmail updated date */
|
|
23864
|
-
updatedAt?: string;
|
|
23865
|
-
} | {
|
|
23866
|
-
/** @description NotificationSubscriptionWebhook ID */
|
|
23867
|
-
id: string;
|
|
23868
|
-
events: string[];
|
|
24798
|
+
delivery_id: string;
|
|
23869
24799
|
/** @enum {string} */
|
|
23870
|
-
|
|
23871
|
-
/**
|
|
23872
|
-
|
|
23873
|
-
config: {
|
|
23874
|
-
/**
|
|
23875
|
-
* Format: uri
|
|
23876
|
-
* @description Webhook URL
|
|
23877
|
-
*/
|
|
23878
|
-
url: string;
|
|
23879
|
-
/** @description Secret used to sign the webhook payload */
|
|
23880
|
-
secret: string;
|
|
23881
|
-
};
|
|
23882
|
-
/** @description Object is related with this account */
|
|
23883
|
-
account: string;
|
|
23884
|
-
/**
|
|
23885
|
-
* @description NotificationSubscriptionWebhookMetadata
|
|
23886
|
-
* @default {}
|
|
23887
|
-
*/
|
|
23888
|
-
metadata: {
|
|
23889
|
-
[key: string]: unknown;
|
|
23890
|
-
};
|
|
23891
|
-
/** @description NotificationSubscriptionWebhook creation date */
|
|
23892
|
-
createdAt: string;
|
|
23893
|
-
/** @description NotificationSubscriptionWebhook updated date */
|
|
23894
|
-
updatedAt?: string;
|
|
24800
|
+
status: "pending";
|
|
24801
|
+
/** Format: date-time */
|
|
24802
|
+
next_attempt_at: string;
|
|
23895
24803
|
};
|
|
23896
24804
|
};
|
|
23897
24805
|
};
|
|
23898
24806
|
/**
|
|
23899
|
-
* @description `
|
|
24807
|
+
* @description `not_a_webhook` — The operation only applies to `webhook` subscriptions.
|
|
23900
24808
|
*
|
|
23901
24809
|
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
23902
24810
|
*/
|
|
@@ -23907,7 +24815,7 @@ export interface operations {
|
|
|
23907
24815
|
content: {
|
|
23908
24816
|
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
23909
24817
|
/** @enum {string} */
|
|
23910
|
-
error_code?: "
|
|
24818
|
+
error_code?: "not_a_webhook" | "validation_error";
|
|
23911
24819
|
};
|
|
23912
24820
|
};
|
|
23913
24821
|
};
|
|
@@ -23944,6 +24852,8 @@ export interface operations {
|
|
|
23944
24852
|
/**
|
|
23945
24853
|
* @description `not_found` — The resource does not exist in this account.
|
|
23946
24854
|
*
|
|
24855
|
+
* `delivery_not_found` — No webhook delivery with that id for this subscription.
|
|
24856
|
+
*
|
|
23947
24857
|
* `account_not_found` — No Auth Account matches the request (domain, header or token).
|
|
23948
24858
|
*/
|
|
23949
24859
|
404: {
|
|
@@ -23953,7 +24863,19 @@ export interface operations {
|
|
|
23953
24863
|
content: {
|
|
23954
24864
|
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
23955
24865
|
/** @enum {string} */
|
|
23956
|
-
error_code?: "not_found" | "account_not_found";
|
|
24866
|
+
error_code?: "not_found" | "delivery_not_found" | "account_not_found";
|
|
24867
|
+
};
|
|
24868
|
+
};
|
|
24869
|
+
};
|
|
24870
|
+
/** @description `delivery_in_progress` — The delivery is being attempted right now; retry the redeliver in a minute. */
|
|
24871
|
+
409: {
|
|
24872
|
+
headers: {
|
|
24873
|
+
[name: string]: unknown;
|
|
24874
|
+
};
|
|
24875
|
+
content: {
|
|
24876
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
24877
|
+
/** @enum {string} */
|
|
24878
|
+
error_code?: "delivery_in_progress";
|
|
23957
24879
|
};
|
|
23958
24880
|
};
|
|
23959
24881
|
};
|