@faable/auth-sdk 1.3.14 → 1.3.16

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.
@@ -103,14 +103,14 @@ export interface paths {
103
103
  cookie?: never;
104
104
  };
105
105
  /**
106
- * List Connections in Account
107
- * @description List Connections in Account
106
+ * List Connections
107
+ * @description List Connections
108
108
  */
109
109
  get: operations["connection/list"];
110
110
  put?: never;
111
111
  /**
112
- * Create Connection in Account
113
- * @description Create Connection in Account
112
+ * Create Connection
113
+ * @description Create Connection
114
114
  */
115
115
  post: operations["connection/create"];
116
116
  delete?: never;
@@ -127,21 +127,21 @@ export interface paths {
127
127
  cookie?: never;
128
128
  };
129
129
  /**
130
- * Get Connection in Account
131
- * @description Get Connection in Account
130
+ * Get Connection
131
+ * @description Get Connection
132
132
  */
133
133
  get: operations["connection/get"];
134
134
  put?: never;
135
135
  /**
136
- * Update Connections in Account
137
- * @description Update Connections in Account
136
+ * Update Connection
137
+ * @description Update Connection
138
138
  */
139
139
  post: operations["connection/update"];
140
140
  /**
141
- * Delete Connection in Account
142
- * @description Delete Connection in Account
141
+ * Delete Connection
142
+ * @description Delete Connection
143
143
  */
144
- delete: operations["connection/remove"];
144
+ delete: operations["connection/delete"];
145
145
  options?: never;
146
146
  head?: never;
147
147
  patch?: never;
@@ -155,14 +155,14 @@ export interface paths {
155
155
  cookie?: never;
156
156
  };
157
157
  /**
158
- * List Clients in Account
159
- * @description List Clients in Account
158
+ * List Clients
159
+ * @description List Clients
160
160
  */
161
161
  get: operations["client/list"];
162
162
  put?: never;
163
163
  /**
164
- * Create Client in Account
165
- * @description Create Client in Account
164
+ * Create Client
165
+ * @description Create Client
166
166
  */
167
167
  post: operations["client/create"];
168
168
  delete?: never;
@@ -179,21 +179,21 @@ export interface paths {
179
179
  cookie?: never;
180
180
  };
181
181
  /**
182
- * Get Client in Account
183
- * @description Get Client in Account
182
+ * Get Client
183
+ * @description Get Client
184
184
  */
185
185
  get: operations["client/get"];
186
186
  put?: never;
187
187
  /**
188
- * Update Clients in Account
189
- * @description Update Clients in Account
188
+ * Update Client
189
+ * @description Update Client
190
190
  */
191
191
  post: operations["client/update"];
192
192
  /**
193
- * Delete Client in Account
194
- * @description Delete Client in Account
193
+ * Delete Client
194
+ * @description Delete Client
195
195
  */
196
- delete: operations["client/remove"];
196
+ delete: operations["client/delete"];
197
197
  options?: never;
198
198
  head?: never;
199
199
  patch?: never;
@@ -227,14 +227,14 @@ export interface paths {
227
227
  cookie?: never;
228
228
  };
229
229
  /**
230
- * List Users in Account
231
- * @description List Users in Account
230
+ * List Users
231
+ * @description List Users
232
232
  */
233
233
  get: operations["user/list"];
234
234
  put?: never;
235
235
  /**
236
- * Create User in Account
237
- * @description Create User in Account
236
+ * Create User
237
+ * @description Create User
238
238
  */
239
239
  post: operations["user/create"];
240
240
  delete?: never;
@@ -251,21 +251,21 @@ export interface paths {
251
251
  cookie?: never;
252
252
  };
253
253
  /**
254
- * Get User in Account
255
- * @description Get User in Account
254
+ * Get User
255
+ * @description Get User
256
256
  */
257
257
  get: operations["user/get"];
258
258
  put?: never;
259
259
  /**
260
- * Update Users in Account
261
- * @description Update Users in Account
260
+ * Update User
261
+ * @description Update User
262
262
  */
263
263
  post: operations["user/update"];
264
264
  /**
265
- * Delete User in Account
266
- * @description Delete User in Account
265
+ * Delete User
266
+ * @description Delete User
267
267
  */
268
- delete: operations["user/remove"];
268
+ delete: operations["user/delete"];
269
269
  options?: never;
270
270
  head?: never;
271
271
  patch?: never;
@@ -359,14 +359,14 @@ export interface paths {
359
359
  cookie?: never;
360
360
  };
361
361
  /**
362
- * List Identitys in Account
363
- * @description List Identitys in Account
362
+ * List Identitys
363
+ * @description List Identitys
364
364
  */
365
365
  get: operations["identity/list"];
366
366
  put?: never;
367
367
  /**
368
- * Create Identity in Account
369
- * @description Create Identity in Account
368
+ * Create Identity
369
+ * @description Create Identity
370
370
  */
371
371
  post: operations["identity/create"];
372
372
  delete?: never;
@@ -383,17 +383,37 @@ export interface paths {
383
383
  cookie?: never;
384
384
  };
385
385
  /**
386
- * Get Identity in Account
387
- * @description Get Identity in Account
386
+ * Get Identity
387
+ * @description Get Identity
388
388
  */
389
389
  get: operations["identity/get"];
390
390
  put?: never;
391
391
  post?: never;
392
392
  /**
393
- * Delete Identity in Account
394
- * @description Delete Identity in Account
393
+ * Delete Identity
394
+ * @description Delete Identity
395
395
  */
396
- delete: operations["identity/remove"];
396
+ delete: operations["identity/delete"];
397
+ options?: never;
398
+ head?: never;
399
+ patch?: never;
400
+ trace?: never;
401
+ };
402
+ "/identity/{identity_id}/provider-token": {
403
+ parameters: {
404
+ query?: never;
405
+ header?: never;
406
+ path?: never;
407
+ cookie?: never;
408
+ };
409
+ /**
410
+ * Get a guaranteed-valid provider access_token
411
+ * @description Returns the identity's upstream provider `access_token`, refreshing it transparently via the stored `refresh_token` when it is (about to be) expired. Pass `?fresh=true` to force a refresh. Fails with 400 when the token is expired and no `refresh_token` is available (the user must re-authorize).
412
+ */
413
+ get: operations["identity/getProviderToken"];
414
+ put?: never;
415
+ post?: never;
416
+ delete?: never;
397
417
  options?: never;
398
418
  head?: never;
399
419
  patch?: never;
@@ -407,14 +427,14 @@ export interface paths {
407
427
  cookie?: never;
408
428
  };
409
429
  /**
410
- * List Roles in Account
411
- * @description List Roles in Account
430
+ * List Roles
431
+ * @description List Roles
412
432
  */
413
433
  get: operations["role/list"];
414
434
  put?: never;
415
435
  /**
416
- * Create Role in Account
417
- * @description Create Role in Account
436
+ * Create Role
437
+ * @description Create Role
418
438
  */
419
439
  post: operations["role/create"];
420
440
  delete?: never;
@@ -431,21 +451,21 @@ export interface paths {
431
451
  cookie?: never;
432
452
  };
433
453
  /**
434
- * Get Role in Account
435
- * @description Get Role in Account
454
+ * Get Role
455
+ * @description Get Role
436
456
  */
437
457
  get: operations["role/get"];
438
458
  put?: never;
439
459
  /**
440
- * Update Roles in Account
441
- * @description Update Roles in Account
460
+ * Update Role
461
+ * @description Update Role
442
462
  */
443
463
  post: operations["role/update"];
444
464
  /**
445
- * Delete Role in Account
446
- * @description Delete Role in Account
465
+ * Delete Role
466
+ * @description Delete Role
447
467
  */
448
- delete: operations["role/remove"];
468
+ delete: operations["role/delete"];
449
469
  options?: never;
450
470
  head?: never;
451
471
  patch?: never;
@@ -483,14 +503,14 @@ export interface paths {
483
503
  cookie?: never;
484
504
  };
485
505
  /**
486
- * List Rolemembers in Account
487
- * @description List Rolemembers in Account
506
+ * List Rolemembers
507
+ * @description List Rolemembers
488
508
  */
489
509
  get: operations["rolemember/list"];
490
510
  put?: never;
491
511
  /**
492
- * Create Rolemember in Account
493
- * @description Create Rolemember in Account
512
+ * Create Rolemember
513
+ * @description Create Rolemember
494
514
  */
495
515
  post: operations["rolemember/create"];
496
516
  delete?: never;
@@ -507,17 +527,17 @@ export interface paths {
507
527
  cookie?: never;
508
528
  };
509
529
  /**
510
- * Get Rolemember in Account
511
- * @description Get Rolemember in Account
530
+ * Get Rolemember
531
+ * @description Get Rolemember
512
532
  */
513
533
  get: operations["rolemember/get"];
514
534
  put?: never;
515
535
  post?: never;
516
536
  /**
517
- * Delete Rolemember in Account
518
- * @description Delete Rolemember in Account
537
+ * Delete Rolemember
538
+ * @description Delete Rolemember
519
539
  */
520
- delete: operations["rolemember/remove"];
540
+ delete: operations["rolemember/delete"];
521
541
  options?: never;
522
542
  head?: never;
523
543
  patch?: never;
@@ -531,14 +551,14 @@ export interface paths {
531
551
  cookie?: never;
532
552
  };
533
553
  /**
534
- * List Teams in Account
535
- * @description List Teams in Account
554
+ * List Teams
555
+ * @description List Teams
536
556
  */
537
557
  get: operations["team/list"];
538
558
  put?: never;
539
559
  /**
540
- * Create Team in Account
541
- * @description Create Team in Account
560
+ * Create Team
561
+ * @description Create Team
542
562
  */
543
563
  post: operations["team/create"];
544
564
  delete?: never;
@@ -555,21 +575,21 @@ export interface paths {
555
575
  cookie?: never;
556
576
  };
557
577
  /**
558
- * Get Team in Account
559
- * @description Get Team in Account
578
+ * Get Team
579
+ * @description Get Team
560
580
  */
561
581
  get: operations["team/get"];
562
582
  put?: never;
563
583
  /**
564
- * Update Teams in Account
565
- * @description Update Teams in Account
584
+ * Update Team
585
+ * @description Update Team
566
586
  */
567
587
  post: operations["team/update"];
568
588
  /**
569
- * Delete Team in Account
570
- * @description Delete Team in Account
589
+ * Delete Team
590
+ * @description Delete Team
571
591
  */
572
- delete: operations["team/remove"];
592
+ delete: operations["team/delete"];
573
593
  options?: never;
574
594
  head?: never;
575
595
  patch?: never;
@@ -583,14 +603,14 @@ export interface paths {
583
603
  cookie?: never;
584
604
  };
585
605
  /**
586
- * List Teammembers in Account
587
- * @description List Teammembers in Account
606
+ * List Teammembers
607
+ * @description List Teammembers
588
608
  */
589
609
  get: operations["teammember/list"];
590
610
  put?: never;
591
611
  /**
592
- * Create Teammember in Account
593
- * @description Create Teammember in Account
612
+ * Create Teammember
613
+ * @description Create Teammember
594
614
  */
595
615
  post: operations["teammember/create"];
596
616
  delete?: never;
@@ -607,17 +627,17 @@ export interface paths {
607
627
  cookie?: never;
608
628
  };
609
629
  /**
610
- * Get Teammember in Account
611
- * @description Get Teammember in Account
630
+ * Get Teammember
631
+ * @description Get Teammember
612
632
  */
613
633
  get: operations["teammember/get"];
614
634
  put?: never;
615
635
  post?: never;
616
636
  /**
617
- * Delete Teammember in Account
618
- * @description Delete Teammember in Account
637
+ * Delete Teammember
638
+ * @description Delete Teammember
619
639
  */
620
- delete: operations["teammember/remove"];
640
+ delete: operations["teammember/delete"];
621
641
  options?: never;
622
642
  head?: never;
623
643
  patch?: never;
@@ -739,14 +759,14 @@ export interface paths {
739
759
  cookie?: never;
740
760
  };
741
761
  /**
742
- * List Apis in Account
743
- * @description List Apis in Account
762
+ * List Apis
763
+ * @description List Apis
744
764
  */
745
765
  get: operations["api/list"];
746
766
  put?: never;
747
767
  /**
748
- * Create Api in Account
749
- * @description Create Api in Account
768
+ * Create Api
769
+ * @description Create Api
750
770
  */
751
771
  post: operations["api/create"];
752
772
  delete?: never;
@@ -763,21 +783,21 @@ export interface paths {
763
783
  cookie?: never;
764
784
  };
765
785
  /**
766
- * Get Api in Account
767
- * @description Get Api in Account
786
+ * Get Api
787
+ * @description Get Api
768
788
  */
769
789
  get: operations["api/get"];
770
790
  put?: never;
771
791
  /**
772
- * Update Apis in Account
773
- * @description Update Apis in Account
792
+ * Update Api
793
+ * @description Update Api
774
794
  */
775
795
  post: operations["api/update"];
776
796
  /**
777
- * Delete Api in Account
778
- * @description Delete Api in Account
797
+ * Delete Api
798
+ * @description Delete Api
779
799
  */
780
- delete: operations["api/remove"];
800
+ delete: operations["api/delete"];
781
801
  options?: never;
782
802
  head?: never;
783
803
  patch?: never;
@@ -831,14 +851,14 @@ export interface paths {
831
851
  cookie?: never;
832
852
  };
833
853
  /**
834
- * List Actions in Account
835
- * @description List Actions in Account
854
+ * List Actions
855
+ * @description List Actions
836
856
  */
837
857
  get: operations["action/list"];
838
858
  put?: never;
839
859
  /**
840
- * Create Action in Account
841
- * @description Create Action in Account
860
+ * Create Action
861
+ * @description Create Action
842
862
  */
843
863
  post: operations["action/create"];
844
864
  delete?: never;
@@ -855,17 +875,17 @@ export interface paths {
855
875
  cookie?: never;
856
876
  };
857
877
  /**
858
- * Get Action in Account
859
- * @description Get Action in Account
878
+ * Get Action
879
+ * @description Get Action
860
880
  */
861
881
  get: operations["action/get"];
862
882
  put?: never;
863
883
  post?: never;
864
884
  /**
865
- * Delete Action in Account
866
- * @description Delete Action in Account
885
+ * Delete Action
886
+ * @description Delete Action
867
887
  */
868
- delete: operations["action/remove"];
888
+ delete: operations["action/delete"];
869
889
  options?: never;
870
890
  head?: never;
871
891
  patch?: never;
@@ -879,14 +899,14 @@ export interface paths {
879
899
  cookie?: never;
880
900
  };
881
901
  /**
882
- * List Notificationsubscriptions in Account
883
- * @description List Notificationsubscriptions in Account
902
+ * List Notificationsubscriptions
903
+ * @description List Notificationsubscriptions
884
904
  */
885
905
  get: operations["notificationsubscription/list"];
886
906
  put?: never;
887
907
  /**
888
- * Create Notificationsubscription in Account
889
- * @description Create Notificationsubscription in Account
908
+ * Create Notificationsubscription
909
+ * @description Create Notificationsubscription
890
910
  */
891
911
  post: operations["notificationsubscription/create"];
892
912
  delete?: never;
@@ -903,21 +923,21 @@ export interface paths {
903
923
  cookie?: never;
904
924
  };
905
925
  /**
906
- * Get Notificationsubscription in Account
907
- * @description Get Notificationsubscription in Account
926
+ * Get Notificationsubscription
927
+ * @description Get Notificationsubscription
908
928
  */
909
929
  get: operations["notificationsubscription/get"];
910
930
  put?: never;
911
931
  /**
912
- * Update Notificationsubscriptions in Account
913
- * @description Update Notificationsubscriptions in Account
932
+ * Update Notificationsubscription
933
+ * @description Update Notificationsubscription
914
934
  */
915
935
  post: operations["notificationsubscription/update"];
916
936
  /**
917
- * Delete Notificationsubscription in Account
918
- * @description Delete Notificationsubscription in Account
937
+ * Delete Notificationsubscription
938
+ * @description Delete Notificationsubscription
919
939
  */
920
- delete: operations["notificationsubscription/remove"];
940
+ delete: operations["notificationsubscription/delete"];
921
941
  options?: never;
922
942
  head?: never;
923
943
  patch?: never;
@@ -931,8 +951,8 @@ export interface paths {
931
951
  cookie?: never;
932
952
  };
933
953
  /**
934
- * List Logs in Account
935
- * @description List Logs in Account
954
+ * List Logs
955
+ * @description List Logs
936
956
  */
937
957
  get: operations["log/list"];
938
958
  put?: never;
@@ -951,8 +971,8 @@ export interface paths {
951
971
  cookie?: never;
952
972
  };
953
973
  /**
954
- * Get Log in Account
955
- * @description Get Log in Account
974
+ * Get Log
975
+ * @description Get Log
956
976
  */
957
977
  get: operations["log/get"];
958
978
  put?: never;
@@ -991,14 +1011,14 @@ export interface paths {
991
1011
  cookie?: never;
992
1012
  };
993
1013
  /**
994
- * List Customdomains in Account
995
- * @description List Customdomains in Account
1014
+ * List Customdomains
1015
+ * @description List Customdomains
996
1016
  */
997
1017
  get: operations["customdomain/list"];
998
1018
  put?: never;
999
1019
  /**
1000
- * Create Customdomain in Account
1001
- * @description Create Customdomain in Account
1020
+ * Create Customdomain
1021
+ * @description Create Customdomain
1002
1022
  */
1003
1023
  post: operations["customdomain/create"];
1004
1024
  delete?: never;
@@ -1015,17 +1035,17 @@ export interface paths {
1015
1035
  cookie?: never;
1016
1036
  };
1017
1037
  /**
1018
- * Get Customdomain in Account
1019
- * @description Get Customdomain in Account
1038
+ * Get Customdomain
1039
+ * @description Get Customdomain
1020
1040
  */
1021
1041
  get: operations["customdomain/get"];
1022
1042
  put?: never;
1023
1043
  post?: never;
1024
1044
  /**
1025
- * Delete Customdomain in Account
1026
- * @description Delete Customdomain in Account
1045
+ * Delete Customdomain
1046
+ * @description Delete Customdomain
1027
1047
  */
1028
- delete: operations["customdomain/remove"];
1048
+ delete: operations["customdomain/delete"];
1029
1049
  options?: never;
1030
1050
  head?: never;
1031
1051
  patch?: never;
@@ -1577,6 +1597,9 @@ export interface components {
1577
1597
  authorize_params: {
1578
1598
  [key: string]: string;
1579
1599
  };
1600
+ claims_mapping?: {
1601
+ [key: string]: string;
1602
+ };
1580
1603
  /** @description Derived: true when the connection_type has shared Faable defaults AND the tenant has not set its own client_id/client_secret. Read-only — set by the server on every read. */
1581
1604
  readonly is_using_default_credentials: boolean;
1582
1605
  /** @description Per-connection override of `Account.email_oauth_sync_policy`. When set on a Connection, takes precedence over the Account-level setting for logins through this IdP. When unset (default), the Account-level policy applies. Use this to allow `always_sync` for a trusted IdP (e.g. corporate SSO) while keeping `preserve_manual` for others within the same tenant. */
@@ -1661,6 +1684,9 @@ export interface components {
1661
1684
  authorize_params: {
1662
1685
  [key: string]: string;
1663
1686
  };
1687
+ claims_mapping?: {
1688
+ [key: string]: string;
1689
+ };
1664
1690
  email_oauth_sync_policy?: "preserve_manual" | "always_sync" | null;
1665
1691
  };
1666
1692
  /** @description Client */
@@ -1980,6 +2006,8 @@ export interface components {
1980
2006
  access_token?: string;
1981
2007
  access_token_secret?: string;
1982
2008
  refresh_token?: string;
2009
+ /** @description ISO 8601 timestamp when the stored provider `access_token` expires. Stamped from the provider `expires_in` on (re-)authorization and refresh. Absent when the provider issues non-expiring tokens. */
2010
+ access_token_expires_at?: string;
1983
2011
  profile_data: unknown;
1984
2012
  /** @description Object is related with this account */
1985
2013
  account: string;
@@ -2285,6 +2313,14 @@ export interface components {
2285
2313
  allow_offline_access: boolean;
2286
2314
  /** @description When true, the consent prompt is skipped for first-party clients (clients owned by the same tenant as the API). */
2287
2315
  skip_consent: boolean;
2316
+ /** @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. */
2317
+ include_teams_in_access_token: boolean;
2318
+ /** @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. */
2319
+ include_roles_in_access_token: boolean;
2320
+ /** @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. */
2321
+ include_teams_in_id_token: boolean;
2322
+ /** @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`. */
2323
+ include_roles_in_id_token: boolean;
2288
2324
  /** @description Object is related with this account */
2289
2325
  account: string;
2290
2326
  /**
@@ -2337,6 +2373,14 @@ export interface components {
2337
2373
  allow_offline_access?: boolean;
2338
2374
  /** @description When true, skip the consent prompt for first-party clients. */
2339
2375
  skip_consent?: boolean;
2376
+ /** @description When true, access_tokens issued for this API carry a `teams` claim with the subject team slugs. */
2377
+ include_teams_in_access_token?: boolean;
2378
+ /** @description When true, access_tokens issued for this API carry a `roles` claim with the subject role names. */
2379
+ include_roles_in_access_token?: boolean;
2380
+ /** @description When true, id_tokens issued together with an access_token for this API carry a `teams` claim with the subject team slugs. */
2381
+ include_teams_in_id_token?: boolean;
2382
+ /** @description When true, id_tokens issued together with an access_token for this API carry a `roles` claim with the subject role names. */
2383
+ include_roles_in_id_token?: boolean;
2340
2384
  };
2341
2385
  /** @description Partial update for an Api. `identifier` is immutable and not present here; recreate the API if you need to change it. */
2342
2386
  ApiUpdate: {
@@ -2358,6 +2402,14 @@ export interface components {
2358
2402
  allow_offline_access?: boolean;
2359
2403
  /** @description When true, skip the consent prompt for first-party clients. */
2360
2404
  skip_consent?: boolean;
2405
+ /** @description When true, access_tokens issued for this API carry a `teams` claim with the subject team slugs. */
2406
+ include_teams_in_access_token?: boolean;
2407
+ /** @description When true, access_tokens issued for this API carry a `roles` claim with the subject role names. */
2408
+ include_roles_in_access_token?: boolean;
2409
+ /** @description When true, id_tokens issued together with an access_token for this API carry a `teams` claim with the subject team slugs. */
2410
+ include_teams_in_id_token?: boolean;
2411
+ /** @description When true, id_tokens issued together with an access_token for this API carry a `roles` claim with the subject role names. */
2412
+ include_roles_in_id_token?: boolean;
2361
2413
  };
2362
2414
  /** @description Action */
2363
2415
  Action: {
@@ -2900,8 +2952,10 @@ export interface components {
2900
2952
  subject_token_type?: string;
2901
2953
  /** @description The device code returned by the authorization server. */
2902
2954
  device_code?: string;
2903
- /** @description Identifier of the API the client wants to access. Matched against `Api.identifier` in the tenant. */
2955
+ /** @description Auth0-compatible alias for `resource` (RFC 8707). When both are provided they must match. */
2904
2956
  audience?: string;
2957
+ /** @description RFC 8707 Resource Indicator. Absolute URI of the target Api, no fragment. Matched against `Api.identifier` in the tenant. */
2958
+ resource?: string;
2905
2959
  } & {
2906
2960
  [key: string]: unknown;
2907
2961
  };
@@ -2927,8 +2981,10 @@ export interface components {
2927
2981
  /** @description OIDC §3.1.2.1 — maximum allowable elapsed time in seconds since the last End-User authentication. If exceeded, the OP re-authenticates and `auth_time` is REQUIRED in the resulting id_token. */
2928
2982
  max_age?: number;
2929
2983
  prompt?: string;
2930
- /** @description Resource Indicator (RFC 8707). Identifier of the Api the client wants to access. Persisted in the auth state so the token issued at /oauth/token targets the matching Api resource and its `aud` claim is set to this value. */
2984
+ /** @description Auth0-compatible alias for `resource` (RFC 8707). When both are sent they must match. Identifier of the Api the client wants to access; persisted in the auth state so the token issued at /oauth/token targets the matching Api resource. */
2931
2985
  audience?: string;
2986
+ /** @description RFC 8707 Resource Indicator. MUST be an absolute URI without fragment. When matched against a registered Api in the tenant the issued access_token gets `aud = <api.identifier>`. */
2987
+ resource?: string;
2932
2988
  };
2933
2989
  LoginCallbackBody: {
2934
2990
  /** @description is always wsignin1.0 */
@@ -3352,12 +3408,12 @@ export interface operations {
3352
3408
  "connection/list": {
3353
3409
  parameters: {
3354
3410
  query?: {
3355
- /** @description Start from this cursor */
3411
+ /** @description Number of items per page (max 200) */
3412
+ pageSize?: number;
3413
+ /** @description Cursor for next page */
3356
3414
  cursor?: string;
3357
- /** @description Start from this cursor */
3415
+ /** @description Cursor returned by the previous page */
3358
3416
  next?: string;
3359
- /** @description Size of the results array */
3360
- pageSize?: number;
3361
3417
  /** @description Filter using a FaableQL query */
3362
3418
  query?: string;
3363
3419
  /** @description Full-text search across: `connection_name`, `connection_type`. */
@@ -3369,16 +3425,14 @@ export interface operations {
3369
3425
  };
3370
3426
  requestBody?: never;
3371
3427
  responses: {
3372
- /** @description PaginatedResponse */
3428
+ /** @description Default Response */
3373
3429
  200: {
3374
3430
  headers: {
3375
3431
  [name: string]: unknown;
3376
3432
  };
3377
3433
  content: {
3378
3434
  "application/json": {
3379
- /** @description next cursor */
3380
3435
  next: string | null;
3381
- /** @description List of results */
3382
3436
  results: components["schemas"]["Connection"][];
3383
3437
  };
3384
3438
  };
@@ -3471,6 +3525,9 @@ export interface operations {
3471
3525
  authorize_params: {
3472
3526
  [key: string]: string;
3473
3527
  };
3528
+ claims_mapping?: {
3529
+ [key: string]: string;
3530
+ };
3474
3531
  /** @description Derived: true when the connection_type has shared Faable defaults AND the tenant has not set its own client_id/client_secret. Read-only — set by the server on every read. */
3475
3532
  readonly is_using_default_credentials: boolean;
3476
3533
  /** @description Per-connection override of `Account.email_oauth_sync_policy`. When set on a Connection, takes precedence over the Account-level setting for logins through this IdP. When unset (default), the Account-level policy applies. Use this to allow `always_sync` for a trusted IdP (e.g. corporate SSO) while keeping `preserve_manual` for others within the same tenant. */
@@ -3544,6 +3601,9 @@ export interface operations {
3544
3601
  authorize_params: {
3545
3602
  [key: string]: string;
3546
3603
  };
3604
+ claims_mapping?: {
3605
+ [key: string]: string;
3606
+ };
3547
3607
  /** @description Derived: true when the connection_type has shared Faable defaults AND the tenant has not set its own client_id/client_secret. Read-only — set by the server on every read. */
3548
3608
  readonly is_using_default_credentials: boolean;
3549
3609
  /** @description Per-connection override of `Account.email_oauth_sync_policy`. When set on a Connection, takes precedence over the Account-level setting for logins through this IdP. When unset (default), the Account-level policy applies. Use this to allow `always_sync` for a trusted IdP (e.g. corporate SSO) while keeping `preserve_manual` for others within the same tenant. */
@@ -3598,6 +3658,9 @@ export interface operations {
3598
3658
  authorize_params?: {
3599
3659
  [key: string]: string;
3600
3660
  };
3661
+ claims_mapping?: {
3662
+ [key: string]: string;
3663
+ };
3601
3664
  email_oauth_sync_policy?: "preserve_manual" | "always_sync" | null;
3602
3665
  };
3603
3666
  };
@@ -3643,6 +3706,9 @@ export interface operations {
3643
3706
  authorize_params: {
3644
3707
  [key: string]: string;
3645
3708
  };
3709
+ claims_mapping?: {
3710
+ [key: string]: string;
3711
+ };
3646
3712
  /** @description Derived: true when the connection_type has shared Faable defaults AND the tenant has not set its own client_id/client_secret. Read-only — set by the server on every read. */
3647
3713
  readonly is_using_default_credentials: boolean;
3648
3714
  /** @description Per-connection override of `Account.email_oauth_sync_policy`. When set on a Connection, takes precedence over the Account-level setting for logins through this IdP. When unset (default), the Account-level policy applies. Use this to allow `always_sync` for a trusted IdP (e.g. corporate SSO) while keeping `preserve_manual` for others within the same tenant. */
@@ -3665,7 +3731,7 @@ export interface operations {
3665
3731
  };
3666
3732
  };
3667
3733
  };
3668
- "connection/remove": {
3734
+ "connection/delete": {
3669
3735
  parameters: {
3670
3736
  query?: never;
3671
3737
  header?: never;
@@ -3676,24 +3742,80 @@ export interface operations {
3676
3742
  };
3677
3743
  requestBody?: never;
3678
3744
  responses: {
3679
- /** @description Default Response */
3745
+ /** @description Connection */
3680
3746
  200: {
3681
3747
  headers: {
3682
3748
  [name: string]: unknown;
3683
3749
  };
3684
- content?: never;
3750
+ content: {
3751
+ "application/json": {
3752
+ /** @description Connection ID */
3753
+ id: string;
3754
+ connection_name: string;
3755
+ /** @enum {unknown} */
3756
+ connection_type: "database" | "custom" | "github" | "figma" | "google_oauth2" | "oidc" | "passwordless_email";
3757
+ /** @default null */
3758
+ authorize_url: string;
3759
+ /** @default null */
3760
+ token_url: string;
3761
+ /** @default null */
3762
+ userinfo_url: string;
3763
+ /** @default null */
3764
+ client_id: string;
3765
+ /** @default null */
3766
+ client_secret: string;
3767
+ /** @default null */
3768
+ issuer: string;
3769
+ /** @default null */
3770
+ jwks_url: string;
3771
+ /** @default null */
3772
+ response_type: string;
3773
+ enabled: boolean;
3774
+ /** @default null */
3775
+ enabled_clients: string[] | null;
3776
+ /** @default [] */
3777
+ scope: string[];
3778
+ /**
3779
+ * @description Authorize params
3780
+ * @default {}
3781
+ */
3782
+ authorize_params: {
3783
+ [key: string]: string;
3784
+ };
3785
+ claims_mapping?: {
3786
+ [key: string]: string;
3787
+ };
3788
+ /** @description Derived: true when the connection_type has shared Faable defaults AND the tenant has not set its own client_id/client_secret. Read-only — set by the server on every read. */
3789
+ readonly is_using_default_credentials: boolean;
3790
+ /** @description Per-connection override of `Account.email_oauth_sync_policy`. When set on a Connection, takes precedence over the Account-level setting for logins through this IdP. When unset (default), the Account-level policy applies. Use this to allow `always_sync` for a trusted IdP (e.g. corporate SSO) while keeping `preserve_manual` for others within the same tenant. */
3791
+ email_oauth_sync_policy?: "preserve_manual" | "always_sync";
3792
+ /** @description Object is related with this account */
3793
+ account: string;
3794
+ /**
3795
+ * @description ConnectionMetadata
3796
+ * @default {}
3797
+ */
3798
+ metadata: {
3799
+ [key: string]: unknown;
3800
+ };
3801
+ /** @description Connection creation date */
3802
+ createdAt: string;
3803
+ /** @description Connection updated date */
3804
+ updatedAt?: string;
3805
+ };
3806
+ };
3685
3807
  };
3686
3808
  };
3687
3809
  };
3688
3810
  "client/list": {
3689
3811
  parameters: {
3690
3812
  query?: {
3691
- /** @description Start from this cursor */
3813
+ /** @description Number of items per page (max 200) */
3814
+ pageSize?: number;
3815
+ /** @description Cursor for next page */
3692
3816
  cursor?: string;
3693
- /** @description Start from this cursor */
3817
+ /** @description Cursor returned by the previous page */
3694
3818
  next?: string;
3695
- /** @description Size of the results array */
3696
- pageSize?: number;
3697
3819
  /** @description Filter using a FaableQL query */
3698
3820
  query?: string;
3699
3821
  /** @description Full-text search across: `name`, `description`, `client_id`. */
@@ -3705,16 +3827,14 @@ export interface operations {
3705
3827
  };
3706
3828
  requestBody?: never;
3707
3829
  responses: {
3708
- /** @description PaginatedResponse */
3830
+ /** @description Default Response */
3709
3831
  200: {
3710
3832
  headers: {
3711
3833
  [name: string]: unknown;
3712
3834
  };
3713
3835
  content: {
3714
3836
  "application/json": {
3715
- /** @description next cursor */
3716
3837
  next: string | null;
3717
- /** @description List of results */
3718
3838
  results: components["schemas"]["Client"][];
3719
3839
  };
3720
3840
  };
@@ -3955,7 +4075,7 @@ export interface operations {
3955
4075
  };
3956
4076
  };
3957
4077
  };
3958
- "client/remove": {
4078
+ "client/delete": {
3959
4079
  parameters: {
3960
4080
  query?: never;
3961
4081
  header?: never;
@@ -3966,12 +4086,55 @@ export interface operations {
3966
4086
  };
3967
4087
  requestBody?: never;
3968
4088
  responses: {
3969
- /** @description Default Response */
4089
+ /** @description Client */
3970
4090
  200: {
3971
4091
  headers: {
3972
4092
  [name: string]: unknown;
3973
4093
  };
3974
- content?: never;
4094
+ content: {
4095
+ "application/json": {
4096
+ /** @description Client ID */
4097
+ id: string;
4098
+ name: string;
4099
+ description: string;
4100
+ client_id: string;
4101
+ client_secret: string;
4102
+ callbacks: string[];
4103
+ logout_urls: string[];
4104
+ refresh_token: {
4105
+ /** @enum {unknown} */
4106
+ expiration_mode: "expire" | "not-expire";
4107
+ infinite_token_lifetime: boolean;
4108
+ token_lifetime: number;
4109
+ };
4110
+ client_uri?: string | null;
4111
+ logo_uri?: string | null;
4112
+ tos_uri?: string | null;
4113
+ policy_uri?: string | null;
4114
+ contacts?: string[];
4115
+ grant_types?: string[];
4116
+ response_types?: string[];
4117
+ token_endpoint_auth_method?: string;
4118
+ application_type?: string;
4119
+ software_id?: string | null;
4120
+ software_version?: string | null;
4121
+ frontchannel_logout_uri?: string | null;
4122
+ frontchannel_logout_session_required?: boolean;
4123
+ /** @description Object is related with this account */
4124
+ account: string;
4125
+ /**
4126
+ * @description ClientMetadata
4127
+ * @default {}
4128
+ */
4129
+ metadata: {
4130
+ [key: string]: unknown;
4131
+ };
4132
+ /** @description Client creation date */
4133
+ createdAt: string;
4134
+ /** @description Client updated date */
4135
+ updatedAt?: string;
4136
+ };
4137
+ };
3975
4138
  };
3976
4139
  };
3977
4140
  };
@@ -4041,12 +4204,12 @@ export interface operations {
4041
4204
  "user/list": {
4042
4205
  parameters: {
4043
4206
  query?: {
4044
- /** @description Start from this cursor */
4207
+ /** @description Number of items per page (max 200) */
4208
+ pageSize?: number;
4209
+ /** @description Cursor for next page */
4045
4210
  cursor?: string;
4046
- /** @description Start from this cursor */
4211
+ /** @description Cursor returned by the previous page */
4047
4212
  next?: string;
4048
- /** @description Size of the results array */
4049
- pageSize?: number;
4050
4213
  /** @description Filter using a FaableQL query */
4051
4214
  query?: string;
4052
4215
  /** @description Full-text search across: `name`, `email`, `phone`. */
@@ -4058,16 +4221,14 @@ export interface operations {
4058
4221
  };
4059
4222
  requestBody?: never;
4060
4223
  responses: {
4061
- /** @description PaginatedResponse */
4224
+ /** @description Default Response */
4062
4225
  200: {
4063
4226
  headers: {
4064
4227
  [name: string]: unknown;
4065
4228
  };
4066
4229
  content: {
4067
4230
  "application/json": {
4068
- /** @description next cursor */
4069
4231
  next: string | null;
4070
- /** @description List of results */
4071
4232
  results: components["schemas"]["User"][];
4072
4233
  };
4073
4234
  };
@@ -4499,27 +4660,7 @@ export interface operations {
4499
4660
  };
4500
4661
  };
4501
4662
  };
4502
- "user/remove": {
4503
- parameters: {
4504
- query?: never;
4505
- header?: never;
4506
- path: {
4507
- user_id: string;
4508
- };
4509
- cookie?: never;
4510
- };
4511
- requestBody?: never;
4512
- responses: {
4513
- /** @description Default Response */
4514
- 200: {
4515
- headers: {
4516
- [name: string]: unknown;
4517
- };
4518
- content?: never;
4519
- };
4520
- };
4521
- };
4522
- "user/changeEmail": {
4663
+ "user/delete": {
4523
4664
  parameters: {
4524
4665
  query?: never;
4525
4666
  header?: never;
@@ -4528,85 +4669,204 @@ export interface operations {
4528
4669
  };
4529
4670
  cookie?: never;
4530
4671
  };
4531
- /** @description Payload for `POST /user/:user_id/change-email`. Triggers the verification flow: a Ticket is created and an email is sent to the new address with a confirmation link. */
4532
- requestBody: {
4533
- content: {
4534
- "application/json": {
4535
- /** @description The email address the user wants to switch to. */
4536
- new_email: string;
4537
- /** @description Override the account-wide policy. Can only raise the bar: passing `old_and_new` forces double verification; `new_only` is ignored if the account requires `old_and_new`. */
4538
- verification_mode?: "new_only" | "old_and_new";
4539
- /** @description Where to send the user after they click the link in the verification email. The status of the operation is appended as a `?status=applied|pending_old` query param so the calling app can render the right screen. When omitted, the user lands on the auth host's `/flow/email-change-done` fallback. */
4540
- redirect_uri?: string;
4541
- };
4542
- };
4543
- };
4544
- responses: {
4545
- /** @description Default Response */
4546
- 200: {
4547
- headers: {
4548
- [name: string]: unknown;
4549
- };
4550
- content: {
4551
- "application/json": {
4552
- /** @enum {string} */
4553
- status: "verification_sent";
4554
- ticket_id: string;
4555
- verification_mode: "new_only" | "old_and_new";
4556
- };
4557
- };
4558
- };
4559
- };
4560
- };
4561
- user_change_email_verify: {
4562
- parameters: {
4563
- query: {
4564
- ticket: string;
4565
- };
4566
- header?: never;
4567
- path?: never;
4568
- cookie?: never;
4569
- };
4570
4672
  requestBody?: never;
4571
4673
  responses: {
4572
- /** @description Default Response */
4573
- 200: {
4574
- headers: {
4575
- [name: string]: unknown;
4576
- };
4577
- content?: never;
4578
- };
4579
- };
4580
- };
4581
- "user/verifyEmailStart": {
4582
- parameters: {
4583
- query?: never;
4584
- header?: never;
4585
- path: {
4586
- user_id: string;
4587
- };
4588
- cookie?: never;
4589
- };
4590
- /** @description Optional payload for `POST /user/:user_id/verify-email/start`. Trigger a verification email send for the given user. */
4591
- requestBody: {
4592
- content: {
4593
- "application/json": {
4594
- /** @description Where to send the user after they click the link. The status of the operation is appended as `?status=verified|already_verified|invalid_link|expired` so the calling app can render the right screen. When omitted, the user lands on the auth host's `/flow/verify-email-done` fallback. */
4595
- redirect_uri?: string;
4596
- };
4597
- };
4598
- };
4599
- responses: {
4600
- /** @description Default Response */
4674
+ /** @description User */
4601
4675
  200: {
4602
4676
  headers: {
4603
4677
  [name: string]: unknown;
4604
4678
  };
4605
4679
  content: {
4606
4680
  "application/json": {
4607
- status: "verification_sent" | "already_verified";
4608
- ticket_id?: string;
4609
- };
4681
+ /** @description User ID */
4682
+ id: string;
4683
+ /** @description User name */
4684
+ name?: string | null;
4685
+ /** @description unique username for this user */
4686
+ username?: string | null;
4687
+ /** @description Given name */
4688
+ given_name?: string | null;
4689
+ /** @description Family name */
4690
+ family_name?: string | null;
4691
+ /** @description Middle name (OIDC §5.1) */
4692
+ middle_name?: string | null;
4693
+ /** @description Casual name. Distinct from given_name (e.g. "Mike" vs "Michael"). OIDC §5.1 */
4694
+ nickname?: string | null;
4695
+ /** @description User email */
4696
+ email?: string | null;
4697
+ /**
4698
+ * @description true if email is verified
4699
+ * @default false
4700
+ */
4701
+ email_verified: boolean;
4702
+ /** @description How `email_verified` was last set. `manual` — admin flipped the flag via `POST /user/:id`. `verification_flow` — user clicked the verification link. `passwordless_otp` — user completed passwordless OTP login. `team_invite` — user clicked a team invitation link. `email_change` — user confirmed a self-service email change. `federated` — verified by the external IdP on OAuth callback. `null` — the field was cleared (admin un-verified the email). */
4703
+ email_verified_method?: "manual" | "verification_flow" | "passwordless_otp" | "team_invite" | "email_change" | "federated" | null;
4704
+ /** @description ISO 8601 timestamp of when `email_verified` was last flipped to true. */
4705
+ email_verified_at?: string | null;
4706
+ /** @description ISO 8601 timestamp of the user's last verified email change. When set, OAuth callbacks will not overwrite `email`/`email_verified` from the federated provider — the manually-chosen email wins. */
4707
+ email_change_locked_at?: string | null;
4708
+ /** @description contact phone number */
4709
+ phone?: string | null;
4710
+ /** @description phone is verified */
4711
+ phone_verified: boolean;
4712
+ /** @description How `phone_verified` was last set. Same enum as `email_verified_method`. */
4713
+ phone_verified_method?: "manual" | "verification_flow" | "passwordless_otp" | "team_invite" | "email_change" | "federated" | null;
4714
+ /** @description ISO 8601 timestamp of when `phone_verified` was last flipped to true. */
4715
+ phone_verified_at?: string | null;
4716
+ /** @description country iso code */
4717
+ country_iso?: string | null;
4718
+ /** @description user birth_date */
4719
+ birth_date?: string | null;
4720
+ /** @description User gender (free-form, OIDC §5.1) */
4721
+ gender?: string | null;
4722
+ /** @description IANA time-zone name (e.g. "Europe/Madrid"). OIDC §5.1 — used for the `zoneinfo` claim. */
4723
+ zoneinfo?: string | null;
4724
+ /** @description user main language */
4725
+ locale?: string;
4726
+ /** @description customer region */
4727
+ region?: string | null;
4728
+ /** @description URL of the User's personal Web page or blog (OIDC §5.1) */
4729
+ website?: string | null;
4730
+ address?: {
4731
+ /** @description Full mailing address, formatted for display (may contain newlines) */
4732
+ formatted?: string | null;
4733
+ street_address?: string | null;
4734
+ /** @description City or locality */
4735
+ locality?: string | null;
4736
+ /** @description State, province, or region */
4737
+ region?: string | null;
4738
+ postal_code?: string | null;
4739
+ /** @description Country name */
4740
+ country?: string | null;
4741
+ } | null;
4742
+ /** @description User picture url */
4743
+ picture?: string | null;
4744
+ /** @description Total number of logins this user has performed. */
4745
+ logins_count: number;
4746
+ /** @description Last IP address from which this user logged in */
4747
+ last_ip?: string | null;
4748
+ /** @description Last date and time this user logged in (ISO_8601 format) */
4749
+ last_login?: string | null;
4750
+ /**
4751
+ * @description User Metadata
4752
+ * @default {}
4753
+ */
4754
+ user_metadata: {
4755
+ [key: string]: unknown;
4756
+ };
4757
+ /**
4758
+ * @description App Metadata
4759
+ * @default {}
4760
+ */
4761
+ app_metadata: {
4762
+ [key: string]: unknown;
4763
+ };
4764
+ /** @description Object is related with this account */
4765
+ account: string;
4766
+ /**
4767
+ * @description UserMetadata
4768
+ * @default {}
4769
+ */
4770
+ metadata: {
4771
+ [key: string]: unknown;
4772
+ };
4773
+ /** @description User creation date */
4774
+ createdAt: string;
4775
+ /** @description User updated date */
4776
+ updatedAt?: string;
4777
+ };
4778
+ };
4779
+ };
4780
+ };
4781
+ };
4782
+ "user/changeEmail": {
4783
+ parameters: {
4784
+ query?: never;
4785
+ header?: never;
4786
+ path: {
4787
+ user_id: string;
4788
+ };
4789
+ cookie?: never;
4790
+ };
4791
+ /** @description Payload for `POST /user/:user_id/change-email`. Triggers the verification flow: a Ticket is created and an email is sent to the new address with a confirmation link. */
4792
+ requestBody: {
4793
+ content: {
4794
+ "application/json": {
4795
+ /** @description The email address the user wants to switch to. */
4796
+ new_email: string;
4797
+ /** @description Override the account-wide policy. Can only raise the bar: passing `old_and_new` forces double verification; `new_only` is ignored if the account requires `old_and_new`. */
4798
+ verification_mode?: "new_only" | "old_and_new";
4799
+ /** @description Where to send the user after they click the link in the verification email. The status of the operation is appended as a `?status=applied|pending_old` query param so the calling app can render the right screen. When omitted, the user lands on the auth host's `/flow/email-change-done` fallback. */
4800
+ redirect_uri?: string;
4801
+ };
4802
+ };
4803
+ };
4804
+ responses: {
4805
+ /** @description Default Response */
4806
+ 200: {
4807
+ headers: {
4808
+ [name: string]: unknown;
4809
+ };
4810
+ content: {
4811
+ "application/json": {
4812
+ /** @enum {string} */
4813
+ status: "verification_sent";
4814
+ ticket_id: string;
4815
+ verification_mode: "new_only" | "old_and_new";
4816
+ };
4817
+ };
4818
+ };
4819
+ };
4820
+ };
4821
+ user_change_email_verify: {
4822
+ parameters: {
4823
+ query: {
4824
+ ticket: string;
4825
+ };
4826
+ header?: never;
4827
+ path?: never;
4828
+ cookie?: never;
4829
+ };
4830
+ requestBody?: never;
4831
+ responses: {
4832
+ /** @description Default Response */
4833
+ 200: {
4834
+ headers: {
4835
+ [name: string]: unknown;
4836
+ };
4837
+ content?: never;
4838
+ };
4839
+ };
4840
+ };
4841
+ "user/verifyEmailStart": {
4842
+ parameters: {
4843
+ query?: never;
4844
+ header?: never;
4845
+ path: {
4846
+ user_id: string;
4847
+ };
4848
+ cookie?: never;
4849
+ };
4850
+ /** @description Optional payload for `POST /user/:user_id/verify-email/start`. Trigger a verification email send for the given user. */
4851
+ requestBody: {
4852
+ content: {
4853
+ "application/json": {
4854
+ /** @description Where to send the user after they click the link. The status of the operation is appended as `?status=verified|already_verified|invalid_link|expired` so the calling app can render the right screen. When omitted, the user lands on the auth host's `/flow/verify-email-done` fallback. */
4855
+ redirect_uri?: string;
4856
+ };
4857
+ };
4858
+ };
4859
+ responses: {
4860
+ /** @description Default Response */
4861
+ 200: {
4862
+ headers: {
4863
+ [name: string]: unknown;
4864
+ };
4865
+ content: {
4866
+ "application/json": {
4867
+ status: "verification_sent" | "already_verified";
4868
+ ticket_id?: string;
4869
+ };
4610
4870
  };
4611
4871
  };
4612
4872
  };
@@ -4634,12 +4894,12 @@ export interface operations {
4634
4894
  "identity/list": {
4635
4895
  parameters: {
4636
4896
  query?: {
4637
- /** @description Start from this cursor */
4897
+ /** @description Number of items per page (max 200) */
4898
+ pageSize?: number;
4899
+ /** @description Cursor for next page */
4638
4900
  cursor?: string;
4639
- /** @description Start from this cursor */
4901
+ /** @description Cursor returned by the previous page */
4640
4902
  next?: string;
4641
- /** @description Size of the results array */
4642
- pageSize?: number;
4643
4903
  /** @description Filter using a FaableQL query */
4644
4904
  query?: string;
4645
4905
  /** @description Expand id-only fields in the response. Pass one path per entry (e.g. `?expand=user`). */
@@ -4651,16 +4911,14 @@ export interface operations {
4651
4911
  };
4652
4912
  requestBody?: never;
4653
4913
  responses: {
4654
- /** @description PaginatedResponse */
4914
+ /** @description Default Response */
4655
4915
  200: {
4656
4916
  headers: {
4657
4917
  [name: string]: unknown;
4658
4918
  };
4659
4919
  content: {
4660
4920
  "application/json": {
4661
- /** @description next cursor */
4662
4921
  next: string | null;
4663
- /** @description List of results */
4664
4922
  results: components["schemas"]["Identity"][];
4665
4923
  };
4666
4924
  };
@@ -4704,6 +4962,8 @@ export interface operations {
4704
4962
  access_token?: string;
4705
4963
  access_token_secret?: string;
4706
4964
  refresh_token?: string;
4965
+ /** @description ISO 8601 timestamp when the stored provider `access_token` expires. Stamped from the provider `expires_in` on (re-)authorization and refresh. Absent when the provider issues non-expiring tokens. */
4966
+ access_token_expires_at?: string;
4707
4967
  profile_data: unknown;
4708
4968
  /** @description Object is related with this account */
4709
4969
  account: string;
@@ -4752,6 +5012,8 @@ export interface operations {
4752
5012
  access_token?: string;
4753
5013
  access_token_secret?: string;
4754
5014
  refresh_token?: string;
5015
+ /** @description ISO 8601 timestamp when the stored provider `access_token` expires. Stamped from the provider `expires_in` on (re-)authorization and refresh. Absent when the provider issues non-expiring tokens. */
5016
+ access_token_expires_at?: string;
4755
5017
  profile_data: unknown;
4756
5018
  /** @description Object is related with this account */
4757
5019
  account: string;
@@ -4771,7 +5033,7 @@ export interface operations {
4771
5033
  };
4772
5034
  };
4773
5035
  };
4774
- "identity/remove": {
5036
+ "identity/delete": {
4775
5037
  parameters: {
4776
5038
  query?: never;
4777
5039
  header?: never;
@@ -4781,25 +5043,81 @@ export interface operations {
4781
5043
  cookie?: never;
4782
5044
  };
4783
5045
  requestBody?: never;
5046
+ responses: {
5047
+ /** @description Identity */
5048
+ 200: {
5049
+ headers: {
5050
+ [name: string]: unknown;
5051
+ };
5052
+ content: {
5053
+ "application/json": {
5054
+ /** @description Identity ID */
5055
+ id: string;
5056
+ connection: components["schemas"]["Connection"] | string | unknown;
5057
+ user: components["schemas"]["User"] | string | unknown;
5058
+ identity_id: string;
5059
+ access_token?: string;
5060
+ access_token_secret?: string;
5061
+ refresh_token?: string;
5062
+ /** @description ISO 8601 timestamp when the stored provider `access_token` expires. Stamped from the provider `expires_in` on (re-)authorization and refresh. Absent when the provider issues non-expiring tokens. */
5063
+ access_token_expires_at?: string;
5064
+ profile_data: unknown;
5065
+ /** @description Object is related with this account */
5066
+ account: string;
5067
+ /**
5068
+ * @description IdentityMetadata
5069
+ * @default {}
5070
+ */
5071
+ metadata: {
5072
+ [key: string]: unknown;
5073
+ };
5074
+ /** @description Identity creation date */
5075
+ createdAt: string;
5076
+ /** @description Identity updated date */
5077
+ updatedAt?: string;
5078
+ };
5079
+ };
5080
+ };
5081
+ };
5082
+ };
5083
+ "identity/getProviderToken": {
5084
+ parameters: {
5085
+ query?: {
5086
+ /** @description Force a refresh against the provider even when the stored token still looks valid. */
5087
+ fresh?: boolean;
5088
+ };
5089
+ header?: never;
5090
+ path: {
5091
+ identity_id: string;
5092
+ };
5093
+ cookie?: never;
5094
+ };
5095
+ requestBody?: never;
4784
5096
  responses: {
4785
5097
  /** @description Default Response */
4786
5098
  200: {
4787
5099
  headers: {
4788
5100
  [name: string]: unknown;
4789
5101
  };
4790
- content?: never;
5102
+ content: {
5103
+ "application/json": {
5104
+ access_token: string;
5105
+ access_token_expires_at?: string;
5106
+ refreshed: boolean;
5107
+ };
5108
+ };
4791
5109
  };
4792
5110
  };
4793
5111
  };
4794
5112
  "role/list": {
4795
5113
  parameters: {
4796
5114
  query?: {
4797
- /** @description Start from this cursor */
5115
+ /** @description Number of items per page (max 200) */
5116
+ pageSize?: number;
5117
+ /** @description Cursor for next page */
4798
5118
  cursor?: string;
4799
- /** @description Start from this cursor */
5119
+ /** @description Cursor returned by the previous page */
4800
5120
  next?: string;
4801
- /** @description Size of the results array */
4802
- pageSize?: number;
4803
5121
  /** @description Filter using a FaableQL query */
4804
5122
  query?: string;
4805
5123
  /** @description Full-text search across: `name`, `description`. */
@@ -4811,16 +5129,14 @@ export interface operations {
4811
5129
  };
4812
5130
  requestBody?: never;
4813
5131
  responses: {
4814
- /** @description PaginatedResponse */
5132
+ /** @description Default Response */
4815
5133
  200: {
4816
5134
  headers: {
4817
5135
  [name: string]: unknown;
4818
5136
  };
4819
5137
  content: {
4820
5138
  "application/json": {
4821
- /** @description next cursor */
4822
5139
  next: string | null;
4823
- /** @description List of results */
4824
5140
  results: components["schemas"]["Role"][];
4825
5141
  };
4826
5142
  };
@@ -4987,7 +5303,7 @@ export interface operations {
4987
5303
  };
4988
5304
  };
4989
5305
  };
4990
- "role/remove": {
5306
+ "role/delete": {
4991
5307
  parameters: {
4992
5308
  query?: never;
4993
5309
  header?: never;
@@ -4998,12 +5314,37 @@ export interface operations {
4998
5314
  };
4999
5315
  requestBody?: never;
5000
5316
  responses: {
5001
- /** @description Default Response */
5317
+ /** @description Role */
5002
5318
  200: {
5003
5319
  headers: {
5004
5320
  [name: string]: unknown;
5005
5321
  };
5006
- content?: never;
5322
+ content: {
5323
+ "application/json": {
5324
+ /** @description Role ID */
5325
+ id: string;
5326
+ /**
5327
+ * @description Short, human-readable identifier for the role (e.g. `admin`, `editor`, `billing-manager`). Surfaced in the dashboard role pickers.
5328
+ * @example admin
5329
+ */
5330
+ name: string;
5331
+ /** @description Free-form explanation of what users in this role are expected to do or have access to. Shown alongside the role in the dashboard. */
5332
+ description: string;
5333
+ /** @description Object is related with this account */
5334
+ account: string;
5335
+ /**
5336
+ * @description RoleMetadata
5337
+ * @default {}
5338
+ */
5339
+ metadata: {
5340
+ [key: string]: unknown;
5341
+ };
5342
+ /** @description Role creation date */
5343
+ createdAt: string;
5344
+ /** @description Role updated date */
5345
+ updatedAt?: string;
5346
+ };
5347
+ };
5007
5348
  };
5008
5349
  };
5009
5350
  };
@@ -5077,12 +5418,12 @@ export interface operations {
5077
5418
  "rolemember/list": {
5078
5419
  parameters: {
5079
5420
  query?: {
5080
- /** @description Start from this cursor */
5421
+ /** @description Number of items per page (max 200) */
5422
+ pageSize?: number;
5423
+ /** @description Cursor for next page */
5081
5424
  cursor?: string;
5082
- /** @description Start from this cursor */
5425
+ /** @description Cursor returned by the previous page */
5083
5426
  next?: string;
5084
- /** @description Size of the results array */
5085
- pageSize?: number;
5086
5427
  /** @description Filter using a FaableQL query */
5087
5428
  query?: string;
5088
5429
  /** @description Expand id-only fields in the response. Pass one path per entry (e.g. `?expand=user`). */
@@ -5094,16 +5435,14 @@ export interface operations {
5094
5435
  };
5095
5436
  requestBody?: never;
5096
5437
  responses: {
5097
- /** @description PaginatedResponse */
5438
+ /** @description Default Response */
5098
5439
  200: {
5099
5440
  headers: {
5100
5441
  [name: string]: unknown;
5101
5442
  };
5102
5443
  content: {
5103
5444
  "application/json": {
5104
- /** @description next cursor */
5105
5445
  next: string | null;
5106
- /** @description List of results */
5107
5446
  results: components["schemas"]["RoleMember"][];
5108
5447
  };
5109
5448
  };
@@ -5208,7 +5547,7 @@ export interface operations {
5208
5547
  };
5209
5548
  };
5210
5549
  };
5211
- "rolemember/remove": {
5550
+ "rolemember/delete": {
5212
5551
  parameters: {
5213
5552
  query?: never;
5214
5553
  header?: never;
@@ -5219,24 +5558,46 @@ export interface operations {
5219
5558
  };
5220
5559
  requestBody?: never;
5221
5560
  responses: {
5222
- /** @description Default Response */
5561
+ /** @description RoleMember */
5223
5562
  200: {
5224
5563
  headers: {
5225
5564
  [name: string]: unknown;
5226
5565
  };
5227
- content?: never;
5566
+ content: {
5567
+ "application/json": {
5568
+ /** @description RoleMember ID */
5569
+ id: string;
5570
+ /** @description Role granted to the user. Returned as an id by default; pass `?expand=role` to inline the full Role object. */
5571
+ role: components["schemas"]["Role"] | string | unknown;
5572
+ /** @description User the role is granted to. Returned as an id by default; pass `?expand=user` to inline the full User object. */
5573
+ user: components["schemas"]["User"] | string | unknown;
5574
+ /** @description Object is related with this account */
5575
+ account: string;
5576
+ /**
5577
+ * @description RoleMemberMetadata
5578
+ * @default {}
5579
+ */
5580
+ metadata: {
5581
+ [key: string]: unknown;
5582
+ };
5583
+ /** @description RoleMember creation date */
5584
+ createdAt: string;
5585
+ /** @description RoleMember updated date */
5586
+ updatedAt?: string;
5587
+ };
5588
+ };
5228
5589
  };
5229
5590
  };
5230
5591
  };
5231
5592
  "team/list": {
5232
5593
  parameters: {
5233
5594
  query?: {
5234
- /** @description Start from this cursor */
5595
+ /** @description Number of items per page (max 200) */
5596
+ pageSize?: number;
5597
+ /** @description Cursor for next page */
5235
5598
  cursor?: string;
5236
- /** @description Start from this cursor */
5599
+ /** @description Cursor returned by the previous page */
5237
5600
  next?: string;
5238
- /** @description Size of the results array */
5239
- pageSize?: number;
5240
5601
  /** @description Filter using a FaableQL query */
5241
5602
  query?: string;
5242
5603
  /** @description Full-text search across: `name`, `slug`. */
@@ -5248,16 +5609,14 @@ export interface operations {
5248
5609
  };
5249
5610
  requestBody?: never;
5250
5611
  responses: {
5251
- /** @description PaginatedResponse */
5612
+ /** @description Default Response */
5252
5613
  200: {
5253
5614
  headers: {
5254
5615
  [name: string]: unknown;
5255
5616
  };
5256
5617
  content: {
5257
5618
  "application/json": {
5258
- /** @description next cursor */
5259
5619
  next: string | null;
5260
- /** @description List of results */
5261
5620
  results: components["schemas"]["Team"][];
5262
5621
  };
5263
5622
  };
@@ -5449,7 +5808,7 @@ export interface operations {
5449
5808
  };
5450
5809
  };
5451
5810
  };
5452
- "team/remove": {
5811
+ "team/delete": {
5453
5812
  parameters: {
5454
5813
  query?: never;
5455
5814
  header?: never;
@@ -5460,24 +5819,56 @@ export interface operations {
5460
5819
  };
5461
5820
  requestBody?: never;
5462
5821
  responses: {
5463
- /** @description Default Response */
5822
+ /** @description Team */
5464
5823
  200: {
5465
5824
  headers: {
5466
5825
  [name: string]: unknown;
5467
5826
  };
5468
- content?: never;
5827
+ content: {
5828
+ "application/json": {
5829
+ /** @description Team ID */
5830
+ id: string;
5831
+ /**
5832
+ * @description Human-readable name of the team. Shown in the dashboard and in team-picker UI.
5833
+ * @example Acme Engineering
5834
+ */
5835
+ name: string;
5836
+ /**
5837
+ * @description URL-safe identifier auto-derived from `name`. Unique within the tenant; used in routes that address a team by slug.
5838
+ * @example acme-engineering
5839
+ */
5840
+ slug: string;
5841
+ /** @description Optional free-form description of the team. */
5842
+ description: string | null;
5843
+ /** @description Optional URL of an image used as the team avatar/logo. */
5844
+ logo_url: string | null;
5845
+ /** @description Object is related with this account */
5846
+ account: string;
5847
+ /**
5848
+ * @description TeamMetadata
5849
+ * @default {}
5850
+ */
5851
+ metadata: {
5852
+ [key: string]: unknown;
5853
+ };
5854
+ /** @description Team creation date */
5855
+ createdAt: string;
5856
+ /** @description Team updated date */
5857
+ updatedAt?: string;
5858
+ };
5859
+ };
5469
5860
  };
5470
5861
  };
5471
5862
  };
5472
5863
  "teammember/list": {
5473
5864
  parameters: {
5474
5865
  query?: {
5475
- /** @description Start from this cursor */
5866
+ /** @description Number of items per page (max 200) */
5867
+ pageSize?: number;
5868
+ /** @description Cursor for next page */
5476
5869
  cursor?: string;
5477
- /** @description Start from this cursor */
5870
+ /** @description Cursor returned by the previous page */
5478
5871
  next?: string;
5479
- /** @description Size of the results array */
5480
- pageSize?: number;
5481
5872
  /** @description Filter using a FaableQL query */
5482
5873
  query?: string;
5483
5874
  /** @description Expand id-only fields in the response. Pass one path per entry (e.g. `?expand=user`). */
@@ -5489,16 +5880,14 @@ export interface operations {
5489
5880
  };
5490
5881
  requestBody?: never;
5491
5882
  responses: {
5492
- /** @description PaginatedResponse */
5883
+ /** @description Default Response */
5493
5884
  200: {
5494
5885
  headers: {
5495
5886
  [name: string]: unknown;
5496
5887
  };
5497
5888
  content: {
5498
5889
  "application/json": {
5499
- /** @description next cursor */
5500
5890
  next: string | null;
5501
- /** @description List of results */
5502
5891
  results: components["schemas"]["TeamMember"][];
5503
5892
  };
5504
5893
  };
@@ -5615,26 +6004,50 @@ export interface operations {
5615
6004
  };
5616
6005
  };
5617
6006
  };
5618
- "teammember/remove": {
5619
- parameters: {
5620
- query?: never;
5621
- header?: never;
5622
- path: {
5623
- teammember_id: string;
5624
- };
5625
- cookie?: never;
5626
- };
5627
- requestBody?: never;
5628
- responses: {
5629
- /** @description Default Response */
5630
- 200: {
5631
- headers: {
5632
- [name: string]: unknown;
5633
- };
5634
- content?: never;
5635
- };
5636
- };
5637
- };
6007
+ "teammember/delete": {
6008
+ parameters: {
6009
+ query?: never;
6010
+ header?: never;
6011
+ path: {
6012
+ teammember_id: string;
6013
+ };
6014
+ cookie?: never;
6015
+ };
6016
+ requestBody?: never;
6017
+ responses: {
6018
+ /** @description TeamMember */
6019
+ 200: {
6020
+ headers: {
6021
+ [name: string]: unknown;
6022
+ };
6023
+ content: {
6024
+ "application/json": {
6025
+ /** @description TeamMember ID */
6026
+ id: string;
6027
+ /** @description User that belongs to the team. Returned as an id by default; pass `?expand=user` to inline the full User object. */
6028
+ user: components["schemas"]["User"] | string | unknown;
6029
+ /** @description Team the user belongs to. Returned as an id by default; pass `?expand=team` to inline the full Team object. */
6030
+ team: components["schemas"]["Team"] | string | unknown;
6031
+ /** @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. */
6032
+ roles: (components["schemas"]["Role"] | string | unknown)[];
6033
+ /** @description Object is related with this account */
6034
+ account: string;
6035
+ /**
6036
+ * @description TeamMemberMetadata
6037
+ * @default {}
6038
+ */
6039
+ metadata: {
6040
+ [key: string]: unknown;
6041
+ };
6042
+ /** @description TeamMember creation date */
6043
+ createdAt: string;
6044
+ /** @description TeamMember updated date */
6045
+ updatedAt?: string;
6046
+ };
6047
+ };
6048
+ };
6049
+ };
6050
+ };
5638
6051
  "team/listMembers": {
5639
6052
  parameters: {
5640
6053
  query?: {
@@ -5967,12 +6380,12 @@ export interface operations {
5967
6380
  "api/list": {
5968
6381
  parameters: {
5969
6382
  query?: {
5970
- /** @description Start from this cursor */
6383
+ /** @description Number of items per page (max 200) */
6384
+ pageSize?: number;
6385
+ /** @description Cursor for next page */
5971
6386
  cursor?: string;
5972
- /** @description Start from this cursor */
6387
+ /** @description Cursor returned by the previous page */
5973
6388
  next?: string;
5974
- /** @description Size of the results array */
5975
- pageSize?: number;
5976
6389
  /** @description Filter using a FaableQL query */
5977
6390
  query?: string;
5978
6391
  /** @description Full-text search across: `name`, `description`, `identifier`, `slug`. */
@@ -5984,16 +6397,14 @@ export interface operations {
5984
6397
  };
5985
6398
  requestBody?: never;
5986
6399
  responses: {
5987
- /** @description PaginatedResponse */
6400
+ /** @description Default Response */
5988
6401
  200: {
5989
6402
  headers: {
5990
6403
  [name: string]: unknown;
5991
6404
  };
5992
6405
  content: {
5993
6406
  "application/json": {
5994
- /** @description next cursor */
5995
6407
  next: string | null;
5996
- /** @description List of results */
5997
6408
  results: components["schemas"]["Api"][];
5998
6409
  };
5999
6410
  };
@@ -6040,6 +6451,14 @@ export interface operations {
6040
6451
  allow_offline_access?: boolean;
6041
6452
  /** @description When true, skip the consent prompt for first-party clients. */
6042
6453
  skip_consent?: boolean;
6454
+ /** @description When true, access_tokens issued for this API carry a `teams` claim with the subject team slugs. */
6455
+ include_teams_in_access_token?: boolean;
6456
+ /** @description When true, access_tokens issued for this API carry a `roles` claim with the subject role names. */
6457
+ include_roles_in_access_token?: boolean;
6458
+ /** @description When true, id_tokens issued together with an access_token for this API carry a `teams` claim with the subject team slugs. */
6459
+ include_teams_in_id_token?: boolean;
6460
+ /** @description When true, id_tokens issued together with an access_token for this API carry a `roles` claim with the subject role names. */
6461
+ include_roles_in_id_token?: boolean;
6043
6462
  };
6044
6463
  };
6045
6464
  };
@@ -6081,6 +6500,14 @@ export interface operations {
6081
6500
  allow_offline_access: boolean;
6082
6501
  /** @description When true, the consent prompt is skipped for first-party clients (clients owned by the same tenant as the API). */
6083
6502
  skip_consent: boolean;
6503
+ /** @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. */
6504
+ include_teams_in_access_token: boolean;
6505
+ /** @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. */
6506
+ include_roles_in_access_token: boolean;
6507
+ /** @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. */
6508
+ include_teams_in_id_token: boolean;
6509
+ /** @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`. */
6510
+ include_roles_in_id_token: boolean;
6084
6511
  /** @description Object is related with this account */
6085
6512
  account: string;
6086
6513
  /**
@@ -6147,6 +6574,14 @@ export interface operations {
6147
6574
  allow_offline_access: boolean;
6148
6575
  /** @description When true, the consent prompt is skipped for first-party clients (clients owned by the same tenant as the API). */
6149
6576
  skip_consent: boolean;
6577
+ /** @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. */
6578
+ include_teams_in_access_token: boolean;
6579
+ /** @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. */
6580
+ include_roles_in_access_token: boolean;
6581
+ /** @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. */
6582
+ include_teams_in_id_token: boolean;
6583
+ /** @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`. */
6584
+ include_roles_in_id_token: boolean;
6150
6585
  /** @description Object is related with this account */
6151
6586
  account: string;
6152
6587
  /**
@@ -6196,6 +6631,14 @@ export interface operations {
6196
6631
  allow_offline_access?: boolean;
6197
6632
  /** @description When true, skip the consent prompt for first-party clients. */
6198
6633
  skip_consent?: boolean;
6634
+ /** @description When true, access_tokens issued for this API carry a `teams` claim with the subject team slugs. */
6635
+ include_teams_in_access_token?: boolean;
6636
+ /** @description When true, access_tokens issued for this API carry a `roles` claim with the subject role names. */
6637
+ include_roles_in_access_token?: boolean;
6638
+ /** @description When true, id_tokens issued together with an access_token for this API carry a `teams` claim with the subject team slugs. */
6639
+ include_teams_in_id_token?: boolean;
6640
+ /** @description When true, id_tokens issued together with an access_token for this API carry a `roles` claim with the subject role names. */
6641
+ include_roles_in_id_token?: boolean;
6199
6642
  };
6200
6643
  };
6201
6644
  };
@@ -6237,6 +6680,14 @@ export interface operations {
6237
6680
  allow_offline_access: boolean;
6238
6681
  /** @description When true, the consent prompt is skipped for first-party clients (clients owned by the same tenant as the API). */
6239
6682
  skip_consent: boolean;
6683
+ /** @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. */
6684
+ include_teams_in_access_token: boolean;
6685
+ /** @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. */
6686
+ include_roles_in_access_token: boolean;
6687
+ /** @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. */
6688
+ include_teams_in_id_token: boolean;
6689
+ /** @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`. */
6690
+ include_roles_in_id_token: boolean;
6240
6691
  /** @description Object is related with this account */
6241
6692
  account: string;
6242
6693
  /**
@@ -6255,7 +6706,7 @@ export interface operations {
6255
6706
  };
6256
6707
  };
6257
6708
  };
6258
- "api/remove": {
6709
+ "api/delete": {
6259
6710
  parameters: {
6260
6711
  query?: never;
6261
6712
  header?: never;
@@ -6266,12 +6717,66 @@ export interface operations {
6266
6717
  };
6267
6718
  requestBody?: never;
6268
6719
  responses: {
6269
- /** @description Default Response */
6720
+ /** @description Api */
6270
6721
  200: {
6271
6722
  headers: {
6272
6723
  [name: string]: unknown;
6273
6724
  };
6274
- content?: never;
6725
+ content: {
6726
+ "application/json": {
6727
+ /** @description Api ID */
6728
+ id: string;
6729
+ /**
6730
+ * @description Human-readable name for the API. Shown in the dashboard and consent prompts.
6731
+ * @example My Backend API
6732
+ */
6733
+ name: string;
6734
+ /** @description URL-safe identifier auto-derived from `name`. Unique within the tenant. */
6735
+ slug: string;
6736
+ /**
6737
+ * @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.
6738
+ * @example https://api.faable.com
6739
+ */
6740
+ identifier: string;
6741
+ /** @description Optional human-readable description of the API. */
6742
+ description?: string;
6743
+ /** @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. */
6744
+ permissions: components["schemas"]["Permission"][];
6745
+ /** @description JWA algorithm used to sign access_tokens issued for this API. Currently only RS256 (the account keystore default) is implemented. */
6746
+ signing_alg: "RS256";
6747
+ /** @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. */
6748
+ token_dialect: "access_token" | "access_token_authz";
6749
+ /** @description Access_token lifetime in seconds. Default 86400 (24h). Applied at token issuance time (overrides the generic default). */
6750
+ token_lifetime: number;
6751
+ /** @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. */
6752
+ enforce_policies: boolean;
6753
+ /** @description When true, the API is eligible to be the target of a `refresh_token` (i.e. clients can request `offline_access` against it). */
6754
+ allow_offline_access: boolean;
6755
+ /** @description When true, the consent prompt is skipped for first-party clients (clients owned by the same tenant as the API). */
6756
+ skip_consent: boolean;
6757
+ /** @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. */
6758
+ include_teams_in_access_token: boolean;
6759
+ /** @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. */
6760
+ include_roles_in_access_token: boolean;
6761
+ /** @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. */
6762
+ include_teams_in_id_token: boolean;
6763
+ /** @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`. */
6764
+ include_roles_in_id_token: boolean;
6765
+ /** @description Object is related with this account */
6766
+ account: string;
6767
+ /**
6768
+ * @description ApiMetadata
6769
+ * @default {}
6770
+ */
6771
+ metadata: {
6772
+ [key: string]: unknown;
6773
+ };
6774
+ /** @description Api creation date */
6775
+ createdAt: string;
6776
+ /** @description Api updated date */
6777
+ updatedAt?: string;
6778
+ };
6779
+ };
6275
6780
  };
6276
6781
  };
6277
6782
  };
@@ -6340,12 +6845,12 @@ export interface operations {
6340
6845
  "action/list": {
6341
6846
  parameters: {
6342
6847
  query?: {
6343
- /** @description Start from this cursor */
6848
+ /** @description Number of items per page (max 200) */
6849
+ pageSize?: number;
6850
+ /** @description Cursor for next page */
6344
6851
  cursor?: string;
6345
- /** @description Start from this cursor */
6852
+ /** @description Cursor returned by the previous page */
6346
6853
  next?: string;
6347
- /** @description Size of the results array */
6348
- pageSize?: number;
6349
6854
  /** @description Filter using a FaableQL query */
6350
6855
  query?: string;
6351
6856
  };
@@ -6355,16 +6860,14 @@ export interface operations {
6355
6860
  };
6356
6861
  requestBody?: never;
6357
6862
  responses: {
6358
- /** @description PaginatedResponse */
6863
+ /** @description Default Response */
6359
6864
  200: {
6360
6865
  headers: {
6361
6866
  [name: string]: unknown;
6362
6867
  };
6363
6868
  content: {
6364
6869
  "application/json": {
6365
- /** @description next cursor */
6366
6870
  next: string | null;
6367
- /** @description List of results */
6368
6871
  results: components["schemas"]["Action"][];
6369
6872
  };
6370
6873
  };
@@ -6506,7 +7009,7 @@ export interface operations {
6506
7009
  };
6507
7010
  };
6508
7011
  };
6509
- "action/remove": {
7012
+ "action/delete": {
6510
7013
  parameters: {
6511
7014
  query?: never;
6512
7015
  header?: never;
@@ -6517,24 +7020,62 @@ export interface operations {
6517
7020
  };
6518
7021
  requestBody?: never;
6519
7022
  responses: {
6520
- /** @description Default Response */
7023
+ /** @description Action */
6521
7024
  200: {
6522
7025
  headers: {
6523
7026
  [name: string]: unknown;
6524
7027
  };
6525
- content?: never;
7028
+ content: {
7029
+ "application/json": {
7030
+ /** @description Action ID */
7031
+ id: string;
7032
+ /** @description Action Name */
7033
+ name: string;
7034
+ /**
7035
+ * @description Trigger event name
7036
+ * @default post-login
7037
+ * @enum {unknown}
7038
+ */
7039
+ trigger: "continue" | "post-login";
7040
+ /** @description JavaScript Code to execute */
7041
+ code: string;
7042
+ /**
7043
+ * @description Is this action active?
7044
+ * @default true
7045
+ */
7046
+ enabled: boolean;
7047
+ /**
7048
+ * @description Execution order
7049
+ * @default 0
7050
+ */
7051
+ order: number;
7052
+ /** @description Object is related with this account */
7053
+ account: string;
7054
+ /**
7055
+ * @description ActionMetadata
7056
+ * @default {}
7057
+ */
7058
+ metadata: {
7059
+ [key: string]: unknown;
7060
+ };
7061
+ /** @description Action creation date */
7062
+ createdAt: string;
7063
+ /** @description Action updated date */
7064
+ updatedAt?: string;
7065
+ };
7066
+ };
6526
7067
  };
6527
7068
  };
6528
7069
  };
6529
7070
  "notificationsubscription/list": {
6530
7071
  parameters: {
6531
7072
  query?: {
6532
- /** @description Start from this cursor */
7073
+ /** @description Number of items per page (max 200) */
7074
+ pageSize?: number;
7075
+ /** @description Cursor for next page */
6533
7076
  cursor?: string;
6534
- /** @description Start from this cursor */
7077
+ /** @description Cursor returned by the previous page */
6535
7078
  next?: string;
6536
- /** @description Size of the results array */
6537
- pageSize?: number;
6538
7079
  /** @description Filter using a FaableQL query */
6539
7080
  query?: string;
6540
7081
  };
@@ -6544,16 +7085,14 @@ export interface operations {
6544
7085
  };
6545
7086
  requestBody?: never;
6546
7087
  responses: {
6547
- /** @description PaginatedResponse */
7088
+ /** @description Default Response */
6548
7089
  200: {
6549
7090
  headers: {
6550
7091
  [name: string]: unknown;
6551
7092
  };
6552
7093
  content: {
6553
7094
  "application/json": {
6554
- /** @description next cursor */
6555
7095
  next: string | null;
6556
- /** @description List of results */
6557
7096
  results: components["schemas"]["NotificationSubscription"][];
6558
7097
  };
6559
7098
  };
@@ -6860,7 +7399,7 @@ export interface operations {
6860
7399
  };
6861
7400
  };
6862
7401
  };
6863
- "notificationsubscription/remove": {
7402
+ "notificationsubscription/delete": {
6864
7403
  parameters: {
6865
7404
  query?: never;
6866
7405
  header?: never;
@@ -6871,24 +7410,80 @@ export interface operations {
6871
7410
  };
6872
7411
  requestBody?: never;
6873
7412
  responses: {
6874
- /** @description Default Response */
7413
+ /** @description NotificationSubscription */
6875
7414
  200: {
6876
7415
  headers: {
6877
7416
  [name: string]: unknown;
6878
7417
  };
6879
- content?: never;
7418
+ content: {
7419
+ "application/json": {
7420
+ /** @description NotificationSubscriptionEmail ID */
7421
+ id: string;
7422
+ events: string[];
7423
+ /** @enum {string} */
7424
+ channel: "email";
7425
+ /** @description Whether the subscription is active */
7426
+ active: boolean;
7427
+ config: {
7428
+ recipients: string[];
7429
+ };
7430
+ /** @description Object is related with this account */
7431
+ account: string;
7432
+ /**
7433
+ * @description NotificationSubscriptionEmailMetadata
7434
+ * @default {}
7435
+ */
7436
+ metadata: {
7437
+ [key: string]: unknown;
7438
+ };
7439
+ /** @description NotificationSubscriptionEmail creation date */
7440
+ createdAt: string;
7441
+ /** @description NotificationSubscriptionEmail updated date */
7442
+ updatedAt?: string;
7443
+ } | {
7444
+ /** @description NotificationSubscriptionWebhook ID */
7445
+ id: string;
7446
+ events: string[];
7447
+ /** @enum {string} */
7448
+ channel: "webhook";
7449
+ /** @description Whether the subscription is active */
7450
+ active: boolean;
7451
+ config: {
7452
+ /**
7453
+ * Format: uri
7454
+ * @description Webhook URL
7455
+ */
7456
+ url: string;
7457
+ /** @description Secret used to sign the webhook payload */
7458
+ secret: string;
7459
+ };
7460
+ /** @description Object is related with this account */
7461
+ account: string;
7462
+ /**
7463
+ * @description NotificationSubscriptionWebhookMetadata
7464
+ * @default {}
7465
+ */
7466
+ metadata: {
7467
+ [key: string]: unknown;
7468
+ };
7469
+ /** @description NotificationSubscriptionWebhook creation date */
7470
+ createdAt: string;
7471
+ /** @description NotificationSubscriptionWebhook updated date */
7472
+ updatedAt?: string;
7473
+ };
7474
+ };
6880
7475
  };
6881
7476
  };
6882
7477
  };
6883
7478
  "log/list": {
6884
7479
  parameters: {
6885
7480
  query?: {
6886
- /** @description Start from this cursor */
7481
+ /** @description Number of items per page (max 200) */
7482
+ pageSize?: number;
7483
+ /** @description Cursor for next page */
6887
7484
  cursor?: string;
6888
- /** @description Start from this cursor */
7485
+ /** @description Cursor returned by the previous page */
6889
7486
  next?: string;
6890
- /** @description Size of the results array */
6891
- pageSize?: number;
6892
7487
  /** @description Filter using a FaableQL query */
6893
7488
  query?: string;
6894
7489
  /** @description Expand id-only fields in the response. Pass one path per entry (e.g. `?expand=user`). */
@@ -6902,16 +7497,14 @@ export interface operations {
6902
7497
  };
6903
7498
  requestBody?: never;
6904
7499
  responses: {
6905
- /** @description PaginatedResponse */
7500
+ /** @description Default Response */
6906
7501
  200: {
6907
7502
  headers: {
6908
7503
  [name: string]: unknown;
6909
7504
  };
6910
7505
  content: {
6911
7506
  "application/json": {
6912
- /** @description next cursor */
6913
7507
  next: string | null;
6914
- /** @description List of results */
6915
7508
  results: components["schemas"]["Log"][];
6916
7509
  };
6917
7510
  };
@@ -7001,12 +7594,12 @@ export interface operations {
7001
7594
  "customdomain/list": {
7002
7595
  parameters: {
7003
7596
  query?: {
7004
- /** @description Start from this cursor */
7597
+ /** @description Number of items per page (max 200) */
7598
+ pageSize?: number;
7599
+ /** @description Cursor for next page */
7005
7600
  cursor?: string;
7006
- /** @description Start from this cursor */
7601
+ /** @description Cursor returned by the previous page */
7007
7602
  next?: string;
7008
- /** @description Size of the results array */
7009
- pageSize?: number;
7010
7603
  /** @description Filter using a FaableQL query */
7011
7604
  query?: string;
7012
7605
  /** @description Full-text search across: `domain`. */
@@ -7018,16 +7611,14 @@ export interface operations {
7018
7611
  };
7019
7612
  requestBody?: never;
7020
7613
  responses: {
7021
- /** @description PaginatedResponse */
7614
+ /** @description Default Response */
7022
7615
  200: {
7023
7616
  headers: {
7024
7617
  [name: string]: unknown;
7025
7618
  };
7026
7619
  content: {
7027
7620
  "application/json": {
7028
- /** @description next cursor */
7029
7621
  next: string | null;
7030
- /** @description List of results */
7031
7622
  results: components["schemas"]["Customdomain"][];
7032
7623
  };
7033
7624
  };
@@ -7145,7 +7736,7 @@ export interface operations {
7145
7736
  };
7146
7737
  };
7147
7738
  };
7148
- "customdomain/remove": {
7739
+ "customdomain/delete": {
7149
7740
  parameters: {
7150
7741
  query?: never;
7151
7742
  header?: never;
@@ -7156,12 +7747,43 @@ export interface operations {
7156
7747
  };
7157
7748
  requestBody?: never;
7158
7749
  responses: {
7159
- /** @description Default Response */
7750
+ /** @description Customdomain */
7160
7751
  200: {
7161
7752
  headers: {
7162
7753
  [name: string]: unknown;
7163
7754
  };
7164
- content?: never;
7755
+ content: {
7756
+ "application/json": {
7757
+ /** @description Customdomain ID */
7758
+ id: string;
7759
+ domain: string;
7760
+ token: string;
7761
+ /** @enum {unknown} */
7762
+ status: "PENDING" | "VERIFYING" | "ACTIVE" | "FAILED" | "DEGRADED";
7763
+ attempts: number;
7764
+ /** Format: date-time */
7765
+ nextCheck?: string;
7766
+ /** Format: date-time */
7767
+ lastCheck?: string;
7768
+ /** @description User feedback error from last check */
7769
+ errorLog?: string;
7770
+ /** Format: date-time */
7771
+ verifiedAt?: string;
7772
+ /** @description Object is related with this account */
7773
+ account: string;
7774
+ /**
7775
+ * @description CustomdomainMetadata
7776
+ * @default {}
7777
+ */
7778
+ metadata: {
7779
+ [key: string]: unknown;
7780
+ };
7781
+ /** @description Customdomain creation date */
7782
+ createdAt: string;
7783
+ /** @description Customdomain updated date */
7784
+ updatedAt?: string;
7785
+ };
7786
+ };
7165
7787
  };
7166
7788
  };
7167
7789
  };
@@ -7389,8 +8011,10 @@ export interface operations {
7389
8011
  /** @description OIDC §3.1.2.1 — maximum allowable elapsed time in seconds since the last End-User authentication. If exceeded, the OP re-authenticates and `auth_time` is REQUIRED in the resulting id_token. */
7390
8012
  max_age?: number;
7391
8013
  prompt?: string;
7392
- /** @description Resource Indicator (RFC 8707). Identifier of the Api the client wants to access. Persisted in the auth state so the token issued at /oauth/token targets the matching Api resource and its `aud` claim is set to this value. */
8014
+ /** @description Auth0-compatible alias for `resource` (RFC 8707). When both are sent they must match. Identifier of the Api the client wants to access; persisted in the auth state so the token issued at /oauth/token targets the matching Api resource. */
7393
8015
  audience?: string;
8016
+ /** @description RFC 8707 Resource Indicator. MUST be an absolute URI without fragment. When matched against a registered Api in the tenant the issued access_token gets `aud = <api.identifier>`. */
8017
+ resource?: string;
7394
8018
  };
7395
8019
  header?: never;
7396
8020
  path?: never;
@@ -7424,8 +8048,10 @@ export interface operations {
7424
8048
  subject_token_type?: string;
7425
8049
  /** @description The device code returned by the authorization server. */
7426
8050
  device_code?: string;
7427
- /** @description Identifier of the API the client wants to access. Matched against `Api.identifier` in the tenant. */
8051
+ /** @description Auth0-compatible alias for `resource` (RFC 8707). When both are provided they must match. */
7428
8052
  audience?: string;
8053
+ /** @description RFC 8707 Resource Indicator. Absolute URI of the target Api, no fragment. Matched against `Api.identifier` in the tenant. */
8054
+ resource?: string;
7429
8055
  };
7430
8056
  header?: never;
7431
8057
  path?: never;
@@ -7468,8 +8094,10 @@ export interface operations {
7468
8094
  subject_token_type?: string;
7469
8095
  /** @description The device code returned by the authorization server. */
7470
8096
  device_code?: string;
7471
- /** @description Identifier of the API the client wants to access. Matched against `Api.identifier` in the tenant. */
8097
+ /** @description Auth0-compatible alias for `resource` (RFC 8707). When both are provided they must match. */
7472
8098
  audience?: string;
8099
+ /** @description RFC 8707 Resource Indicator. Absolute URI of the target Api, no fragment. Matched against `Api.identifier` in the tenant. */
8100
+ resource?: string;
7473
8101
  };
7474
8102
  header?: never;
7475
8103
  path?: never;
@@ -7492,8 +8120,10 @@ export interface operations {
7492
8120
  subject_token_type?: string;
7493
8121
  /** @description The device code returned by the authorization server. */
7494
8122
  device_code?: string;
7495
- /** @description Identifier of the API the client wants to access. Matched against `Api.identifier` in the tenant. */
8123
+ /** @description Auth0-compatible alias for `resource` (RFC 8707). When both are provided they must match. */
7496
8124
  audience?: string;
8125
+ /** @description RFC 8707 Resource Indicator. Absolute URI of the target Api, no fragment. Matched against `Api.identifier` in the tenant. */
8126
+ resource?: string;
7497
8127
  } & {
7498
8128
  [key: string]: unknown;
7499
8129
  };
@@ -7923,8 +8553,10 @@ export interface operations {
7923
8553
  /** @description OIDC §3.1.2.1 — maximum allowable elapsed time in seconds since the last End-User authentication. If exceeded, the OP re-authenticates and `auth_time` is REQUIRED in the resulting id_token. */
7924
8554
  max_age?: number;
7925
8555
  prompt?: string;
7926
- /** @description Resource Indicator (RFC 8707). Identifier of the Api the client wants to access. Persisted in the auth state so the token issued at /oauth/token targets the matching Api resource and its `aud` claim is set to this value. */
8556
+ /** @description Auth0-compatible alias for `resource` (RFC 8707). When both are sent they must match. Identifier of the Api the client wants to access; persisted in the auth state so the token issued at /oauth/token targets the matching Api resource. */
7927
8557
  audience?: string;
8558
+ /** @description RFC 8707 Resource Indicator. MUST be an absolute URI without fragment. When matched against a registered Api in the tenant the issued access_token gets `aud = <api.identifier>`. */
8559
+ resource?: string;
7928
8560
  };
7929
8561
  };
7930
8562
  };