@faable/auth-sdk 2.7.19 → 2.7.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/FaableAuthApi.d.ts +4 -0
- package/dist/api/generated-client.d.ts +8 -0
- package/dist/api/types.d.ts +252 -1
- package/dist/version.js +2 -2
- package/package.json +1 -1
- package/spec/openapi.json +607 -1
package/dist/FaableAuthApi.d.ts
CHANGED
|
@@ -794,6 +794,7 @@ export declare class FaableAuthApi extends GeneratedFaableAuthApi {
|
|
|
794
794
|
visible?: ("email" | "sms" | "whatsapp" | "factor")[] | undefined;
|
|
795
795
|
} | undefined;
|
|
796
796
|
login_flow?: string | null | undefined;
|
|
797
|
+
default_audience?: string | null | undefined;
|
|
797
798
|
account: string;
|
|
798
799
|
metadata: {
|
|
799
800
|
[key: string]: unknown;
|
|
@@ -854,6 +855,7 @@ export declare class FaableAuthApi extends GeneratedFaableAuthApi {
|
|
|
854
855
|
visible?: ("email" | "sms" | "whatsapp" | "factor")[] | undefined;
|
|
855
856
|
} | undefined;
|
|
856
857
|
login_flow?: string | null | undefined;
|
|
858
|
+
default_audience?: string | null | undefined;
|
|
857
859
|
account: string;
|
|
858
860
|
metadata: {
|
|
859
861
|
[key: string]: unknown;
|
|
@@ -917,6 +919,7 @@ export declare class FaableAuthApi extends GeneratedFaableAuthApi {
|
|
|
917
919
|
visible?: ("email" | "sms" | "whatsapp" | "factor")[] | undefined;
|
|
918
920
|
} | undefined;
|
|
919
921
|
login_flow?: string | null | undefined;
|
|
922
|
+
default_audience?: string | null | undefined;
|
|
920
923
|
account: string;
|
|
921
924
|
metadata: {
|
|
922
925
|
[key: string]: unknown;
|
|
@@ -979,6 +982,7 @@ export declare class FaableAuthApi extends GeneratedFaableAuthApi {
|
|
|
979
982
|
visible?: ("email" | "sms" | "whatsapp" | "factor")[] | undefined;
|
|
980
983
|
} | undefined;
|
|
981
984
|
login_flow?: string | null | undefined;
|
|
985
|
+
default_audience?: string | null | undefined;
|
|
982
986
|
account: string;
|
|
983
987
|
metadata: {
|
|
984
988
|
[key: string]: unknown;
|
|
@@ -1241,6 +1241,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
|
|
|
1241
1241
|
visible?: ("email" | "sms" | "whatsapp" | "factor")[] | undefined;
|
|
1242
1242
|
} | undefined;
|
|
1243
1243
|
login_flow?: string | null | undefined;
|
|
1244
|
+
default_audience?: string | null | undefined;
|
|
1244
1245
|
account: string;
|
|
1245
1246
|
metadata: {
|
|
1246
1247
|
[key: string]: unknown;
|
|
@@ -1317,6 +1318,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
|
|
|
1317
1318
|
visible?: ("email" | "sms" | "whatsapp" | "factor")[] | undefined;
|
|
1318
1319
|
} | undefined;
|
|
1319
1320
|
login_flow?: string | null | undefined;
|
|
1321
|
+
default_audience?: string | null | undefined;
|
|
1320
1322
|
account: string;
|
|
1321
1323
|
metadata: {
|
|
1322
1324
|
[key: string]: unknown;
|
|
@@ -1394,6 +1396,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
|
|
|
1394
1396
|
visible?: ("email" | "sms" | "whatsapp" | "factor")[] | undefined;
|
|
1395
1397
|
} | undefined;
|
|
1396
1398
|
login_flow?: string | null | undefined;
|
|
1399
|
+
default_audience?: string | null | undefined;
|
|
1397
1400
|
account: string;
|
|
1398
1401
|
metadata: {
|
|
1399
1402
|
[key: string]: unknown;
|
|
@@ -1472,6 +1475,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
|
|
|
1472
1475
|
visible?: ("email" | "sms" | "whatsapp" | "factor")[] | undefined;
|
|
1473
1476
|
} | undefined;
|
|
1474
1477
|
login_flow?: string | null | undefined;
|
|
1478
|
+
default_audience?: string | null | undefined;
|
|
1475
1479
|
account: string;
|
|
1476
1480
|
metadata: {
|
|
1477
1481
|
[key: string]: unknown;
|
|
@@ -1532,6 +1536,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
|
|
|
1532
1536
|
visible?: ("email" | "sms" | "whatsapp" | "factor")[] | undefined;
|
|
1533
1537
|
} | undefined;
|
|
1534
1538
|
login_flow?: string | null | undefined;
|
|
1539
|
+
default_audience?: string | null | undefined;
|
|
1535
1540
|
account: string;
|
|
1536
1541
|
metadata: {
|
|
1537
1542
|
[key: string]: unknown;
|
|
@@ -1595,6 +1600,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
|
|
|
1595
1600
|
visible?: ("email" | "sms" | "whatsapp" | "factor")[] | undefined;
|
|
1596
1601
|
} | undefined;
|
|
1597
1602
|
login_flow?: string | null | undefined;
|
|
1603
|
+
default_audience?: string | null | undefined;
|
|
1598
1604
|
account: string;
|
|
1599
1605
|
metadata: {
|
|
1600
1606
|
[key: string]: unknown;
|
|
@@ -1674,6 +1680,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
|
|
|
1674
1680
|
visible?: ("email" | "sms" | "whatsapp" | "factor")[] | undefined;
|
|
1675
1681
|
} | undefined;
|
|
1676
1682
|
login_flow?: string | null | undefined;
|
|
1683
|
+
default_audience?: string | null | undefined;
|
|
1677
1684
|
account: string;
|
|
1678
1685
|
metadata: {
|
|
1679
1686
|
[key: string]: unknown;
|
|
@@ -1751,6 +1758,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
|
|
|
1751
1758
|
visible?: ("email" | "sms" | "whatsapp" | "factor")[] | undefined;
|
|
1752
1759
|
} | undefined;
|
|
1753
1760
|
login_flow?: string | null | undefined;
|
|
1761
|
+
default_audience?: string | null | undefined;
|
|
1754
1762
|
account: string;
|
|
1755
1763
|
metadata: {
|
|
1756
1764
|
[key: string]: unknown;
|
package/dist/api/types.d.ts
CHANGED
|
@@ -3665,7 +3665,11 @@ export interface paths {
|
|
|
3665
3665
|
delete?: never;
|
|
3666
3666
|
options?: never;
|
|
3667
3667
|
head?: never;
|
|
3668
|
-
|
|
3668
|
+
/**
|
|
3669
|
+
* Update current User profile
|
|
3670
|
+
* @description Updates the profile of the User behind the current session or bearer token. Only `name`, `company_name` and `country_iso` can be changed; `company_name` is merged into `user_metadata` without touching its other keys. A Bearer token must belong to this Account.
|
|
3671
|
+
*/
|
|
3672
|
+
patch: operations["session/me_update"];
|
|
3669
3673
|
trace?: never;
|
|
3670
3674
|
};
|
|
3671
3675
|
"/logout": {
|
|
@@ -4546,6 +4550,8 @@ export interface components {
|
|
|
4546
4550
|
};
|
|
4547
4551
|
/** @description A login flow bound to this client (`loginflow_xxx`), overriding the account's. Absent = inherit. */
|
|
4548
4552
|
login_flow?: string | null;
|
|
4553
|
+
/** @description Audience used when a client_credentials token request sends none (e.g. `faable:management:<account_id>`). An explicit `audience` in the request wins. Absent = `${iss}/userinfo`. */
|
|
4554
|
+
default_audience?: string | null;
|
|
4549
4555
|
/** @description Object is related with this account */
|
|
4550
4556
|
account: string;
|
|
4551
4557
|
/**
|
|
@@ -4657,6 +4663,8 @@ export interface components {
|
|
|
4657
4663
|
visible?: ("email" | "sms" | "whatsapp" | "factor")[];
|
|
4658
4664
|
} | null;
|
|
4659
4665
|
login_flow?: string | null;
|
|
4666
|
+
/** @description Audience a client_credentials token request gets when it sends none. An explicit `audience` wins. `null` removes it. */
|
|
4667
|
+
default_audience?: string | null;
|
|
4660
4668
|
/**
|
|
4661
4669
|
* @description Free-form client metadata. Replaces the whole object — send the full merged value, not a partial delta.
|
|
4662
4670
|
* @default {}
|
|
@@ -9522,6 +9530,8 @@ export interface operations {
|
|
|
9522
9530
|
};
|
|
9523
9531
|
/** @description A login flow bound to this client (`loginflow_xxx`), overriding the account's. Absent = inherit. */
|
|
9524
9532
|
login_flow?: string | null;
|
|
9533
|
+
/** @description Audience used when a client_credentials token request sends none (e.g. `faable:management:<account_id>`). An explicit `audience` in the request wins. Absent = `${iss}/userinfo`. */
|
|
9534
|
+
default_audience?: string | null;
|
|
9525
9535
|
/** @description Object is related with this account */
|
|
9526
9536
|
account: string;
|
|
9527
9537
|
/**
|
|
@@ -9716,6 +9726,8 @@ export interface operations {
|
|
|
9716
9726
|
};
|
|
9717
9727
|
/** @description A login flow bound to this client (`loginflow_xxx`), overriding the account's. Absent = inherit. */
|
|
9718
9728
|
login_flow?: string | null;
|
|
9729
|
+
/** @description Audience used when a client_credentials token request sends none (e.g. `faable:management:<account_id>`). An explicit `audience` in the request wins. Absent = `${iss}/userinfo`. */
|
|
9730
|
+
default_audience?: string | null;
|
|
9719
9731
|
/** @description Object is related with this account */
|
|
9720
9732
|
account: string;
|
|
9721
9733
|
/**
|
|
@@ -9907,6 +9919,8 @@ export interface operations {
|
|
|
9907
9919
|
visible?: ("email" | "sms" | "whatsapp" | "factor")[];
|
|
9908
9920
|
} | null;
|
|
9909
9921
|
login_flow?: string | null;
|
|
9922
|
+
/** @description Audience a client_credentials token request gets when it sends none. An explicit `audience` wins. `null` removes it. */
|
|
9923
|
+
default_audience?: string | null;
|
|
9910
9924
|
/**
|
|
9911
9925
|
* @description Free-form client metadata. Replaces the whole object — send the full merged value, not a partial delta.
|
|
9912
9926
|
* @default {}
|
|
@@ -10001,6 +10015,8 @@ export interface operations {
|
|
|
10001
10015
|
};
|
|
10002
10016
|
/** @description A login flow bound to this client (`loginflow_xxx`), overriding the account's. Absent = inherit. */
|
|
10003
10017
|
login_flow?: string | null;
|
|
10018
|
+
/** @description Audience used when a client_credentials token request sends none (e.g. `faable:management:<account_id>`). An explicit `audience` in the request wins. Absent = `${iss}/userinfo`. */
|
|
10019
|
+
default_audience?: string | null;
|
|
10004
10020
|
/** @description Object is related with this account */
|
|
10005
10021
|
account: string;
|
|
10006
10022
|
/**
|
|
@@ -10201,6 +10217,8 @@ export interface operations {
|
|
|
10201
10217
|
};
|
|
10202
10218
|
/** @description A login flow bound to this client (`loginflow_xxx`), overriding the account's. Absent = inherit. */
|
|
10203
10219
|
login_flow?: string | null;
|
|
10220
|
+
/** @description Audience used when a client_credentials token request sends none (e.g. `faable:management:<account_id>`). An explicit `audience` in the request wins. Absent = `${iss}/userinfo`. */
|
|
10221
|
+
default_audience?: string | null;
|
|
10204
10222
|
/** @description Object is related with this account */
|
|
10205
10223
|
account: string;
|
|
10206
10224
|
/**
|
|
@@ -10399,6 +10417,8 @@ export interface operations {
|
|
|
10399
10417
|
};
|
|
10400
10418
|
/** @description A login flow bound to this client (`loginflow_xxx`), overriding the account's. Absent = inherit. */
|
|
10401
10419
|
login_flow?: string | null;
|
|
10420
|
+
/** @description Audience used when a client_credentials token request sends none (e.g. `faable:management:<account_id>`). An explicit `audience` in the request wins. Absent = `${iss}/userinfo`. */
|
|
10421
|
+
default_audience?: string | null;
|
|
10402
10422
|
/** @description Object is related with this account */
|
|
10403
10423
|
account: string;
|
|
10404
10424
|
/**
|
|
@@ -24053,6 +24073,237 @@ export interface operations {
|
|
|
24053
24073
|
};
|
|
24054
24074
|
};
|
|
24055
24075
|
};
|
|
24076
|
+
"session/me_update": {
|
|
24077
|
+
parameters: {
|
|
24078
|
+
query?: never;
|
|
24079
|
+
header?: never;
|
|
24080
|
+
path?: never;
|
|
24081
|
+
cookie?: never;
|
|
24082
|
+
};
|
|
24083
|
+
/** @description Profile fields the current User may edit on themselves. `company_name` is stored in `user_metadata`, merged with whatever else is there. */
|
|
24084
|
+
requestBody: {
|
|
24085
|
+
content: {
|
|
24086
|
+
"application/json": {
|
|
24087
|
+
name?: string;
|
|
24088
|
+
company_name?: string;
|
|
24089
|
+
country_iso?: string;
|
|
24090
|
+
};
|
|
24091
|
+
};
|
|
24092
|
+
};
|
|
24093
|
+
responses: {
|
|
24094
|
+
/** @description The current User. With a Bearer access token the response also carries the token's custom claims (e.g. `ciapol.com/station_id`) as top-level properties; profile fields always win over a same-named claim. */
|
|
24095
|
+
200: {
|
|
24096
|
+
headers: {
|
|
24097
|
+
[name: string]: unknown;
|
|
24098
|
+
};
|
|
24099
|
+
content: {
|
|
24100
|
+
"application/json": {
|
|
24101
|
+
/** @description User ID */
|
|
24102
|
+
id: string;
|
|
24103
|
+
/** @description User name */
|
|
24104
|
+
name?: string | null;
|
|
24105
|
+
/** @description unique username for this user */
|
|
24106
|
+
username?: string | null;
|
|
24107
|
+
/** @description Given name */
|
|
24108
|
+
given_name?: string | null;
|
|
24109
|
+
/** @description Family name */
|
|
24110
|
+
family_name?: string | null;
|
|
24111
|
+
/** @description Middle name (OIDC §5.1) */
|
|
24112
|
+
middle_name?: string | null;
|
|
24113
|
+
/** @description Casual name. Distinct from given_name (e.g. "Mike" vs "Michael"). OIDC §5.1 */
|
|
24114
|
+
nickname?: string | null;
|
|
24115
|
+
/** @description User email */
|
|
24116
|
+
email?: string | null;
|
|
24117
|
+
/**
|
|
24118
|
+
* @description true if email is verified
|
|
24119
|
+
* @default false
|
|
24120
|
+
*/
|
|
24121
|
+
email_verified: boolean;
|
|
24122
|
+
/** @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. `password_reset` — user completed the recovery link that was emailed to them (the `email` channel only). `null` — the field was cleared (admin un-verified the email). */
|
|
24123
|
+
email_verified_method?: "manual" | "verification_flow" | "passwordless_otp" | "team_invite" | "email_change" | "federated" | "sms_otp" | "password_reset" | null;
|
|
24124
|
+
/** @description ISO 8601 timestamp of when `email_verified` was last flipped to true. */
|
|
24125
|
+
email_verified_at?: string | null;
|
|
24126
|
+
/** @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. */
|
|
24127
|
+
email_change_locked_at?: string | null;
|
|
24128
|
+
/** @description ISO 8601 timestamp of the last Postmark hard bounce / spam complaint for this address. When set, the email is treated as undeliverable and no further emails are sent to the user until the address changes. */
|
|
24129
|
+
email_bounced_at?: string | null;
|
|
24130
|
+
/** @description ISO 8601 timestamp of the built-in welcome email send. Set once by the platform; guarantees at most one welcome per user. */
|
|
24131
|
+
welcome_sent_at?: string | null;
|
|
24132
|
+
/** @description ISO 8601 timestamp of the last time the hosted "create a passkey" offer was shown to this user after a login. Drives the snooze in `login_methods.passkey_promotion_snooze_days`. */
|
|
24133
|
+
passkey_prompted_at?: string | null;
|
|
24134
|
+
/** @description How many times the passkey offer has been shown to this user. Capped by `login_methods.passkey_promotion_max_prompts`; reset by an administrator through `POST /user/:id/passkey-prompt/reset`. */
|
|
24135
|
+
passkey_prompt_count?: number;
|
|
24136
|
+
/** @description ISO 8601 timestamp of the last time the user chose "Not now" on the passkey offer, as opposed to closing the tab. */
|
|
24137
|
+
passkey_prompt_dismissed_at?: string | null;
|
|
24138
|
+
/** @description contact phone number */
|
|
24139
|
+
phone?: string | null;
|
|
24140
|
+
/** @description Whether `phone` is a valid E.164 number. Calculated on read, never stored: new writes are rejected unless they normalise, so a `false` here is a legacy row that no SMS can reach — fix the number, or set the account default country and write it again. */
|
|
24141
|
+
phone_e164?: boolean;
|
|
24142
|
+
/** @description phone is verified */
|
|
24143
|
+
phone_verified: boolean;
|
|
24144
|
+
/** @description How `phone_verified` was last set. Same enum as `email_verified_method`, plus `sms_otp` — the user typed a code sent by SMS (`POST /user/:id/verify-phone/start`). */
|
|
24145
|
+
phone_verified_method?: "manual" | "verification_flow" | "passwordless_otp" | "team_invite" | "email_change" | "federated" | "sms_otp" | "password_reset" | null;
|
|
24146
|
+
/** @description ISO 8601 timestamp of when `phone_verified` was last flipped to true. */
|
|
24147
|
+
phone_verified_at?: string | null;
|
|
24148
|
+
/** @description country iso code */
|
|
24149
|
+
country_iso?: string | null;
|
|
24150
|
+
/** @description user birth_date */
|
|
24151
|
+
birth_date?: string | null;
|
|
24152
|
+
/** @description User gender (free-form, OIDC §5.1) */
|
|
24153
|
+
gender?: string | null;
|
|
24154
|
+
/** @description IANA time-zone name (e.g. "Europe/Madrid"). OIDC §5.1 — used for the `zoneinfo` claim. */
|
|
24155
|
+
zoneinfo?: string | null;
|
|
24156
|
+
/** @description user main language */
|
|
24157
|
+
locale?: string | null;
|
|
24158
|
+
/** @description customer region */
|
|
24159
|
+
region?: string | null;
|
|
24160
|
+
/** @description URL of the User's personal Web page or blog (OIDC §5.1) */
|
|
24161
|
+
website?: string | null;
|
|
24162
|
+
address?: {
|
|
24163
|
+
/** @description Full mailing address, formatted for display (may contain newlines) */
|
|
24164
|
+
formatted?: string | null;
|
|
24165
|
+
street_address?: string | null;
|
|
24166
|
+
/** @description City or locality */
|
|
24167
|
+
locality?: string | null;
|
|
24168
|
+
/** @description State, province, or region */
|
|
24169
|
+
region?: string | null;
|
|
24170
|
+
postal_code?: string | null;
|
|
24171
|
+
/** @description Country name */
|
|
24172
|
+
country?: string | null;
|
|
24173
|
+
} | null;
|
|
24174
|
+
/** @description User picture url */
|
|
24175
|
+
picture?: string | null;
|
|
24176
|
+
/** @description Total number of logins this user has performed. */
|
|
24177
|
+
logins_count: number;
|
|
24178
|
+
/** @description Last IP address from which this user logged in */
|
|
24179
|
+
last_ip?: string | null;
|
|
24180
|
+
/** @description Last date and time this user logged in (ISO_8601 format) */
|
|
24181
|
+
last_login?: string | null;
|
|
24182
|
+
/** @description Primary Accept-Language subtag seen at this user's FIRST login (e.g. "zh"). Written once and never updated, so a later login whose language differs is visible as `event.stats.language_changed` in actions — a cross-session signal no single request can produce. */
|
|
24183
|
+
first_language?: string | null;
|
|
24184
|
+
/**
|
|
24185
|
+
* @description true while the user is suspended. A suspended user is rejected at every login flow, token grant, session use and management-API call.
|
|
24186
|
+
* @default false
|
|
24187
|
+
*/
|
|
24188
|
+
suspended: boolean;
|
|
24189
|
+
/** @description ISO 8601 timestamp of when `suspended` was last flipped to true. */
|
|
24190
|
+
suspended_at?: string | null;
|
|
24191
|
+
/** @description Free-form reason recorded when the user was suspended (e.g. "abuse: RCE payload"). */
|
|
24192
|
+
suspended_reason?: string | null;
|
|
24193
|
+
/**
|
|
24194
|
+
* @description User Metadata
|
|
24195
|
+
* @default {}
|
|
24196
|
+
*/
|
|
24197
|
+
user_metadata: {
|
|
24198
|
+
[key: string]: unknown;
|
|
24199
|
+
};
|
|
24200
|
+
/**
|
|
24201
|
+
* @description App Metadata
|
|
24202
|
+
* @default {}
|
|
24203
|
+
*/
|
|
24204
|
+
app_metadata: {
|
|
24205
|
+
[key: string]: unknown;
|
|
24206
|
+
};
|
|
24207
|
+
/** @description Object is related with this account */
|
|
24208
|
+
account: string;
|
|
24209
|
+
/**
|
|
24210
|
+
* @description UserMetadata
|
|
24211
|
+
* @default {}
|
|
24212
|
+
*/
|
|
24213
|
+
metadata: {
|
|
24214
|
+
[key: string]: unknown;
|
|
24215
|
+
};
|
|
24216
|
+
/** @description User creation date */
|
|
24217
|
+
createdAt: string;
|
|
24218
|
+
/** @description User updated date */
|
|
24219
|
+
updatedAt?: string;
|
|
24220
|
+
} & {
|
|
24221
|
+
[key: string]: unknown;
|
|
24222
|
+
};
|
|
24223
|
+
};
|
|
24224
|
+
};
|
|
24225
|
+
/**
|
|
24226
|
+
* @description `bad_request` — The request is malformed. `message` says what is wrong.
|
|
24227
|
+
*
|
|
24228
|
+
* `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
|
|
24229
|
+
*/
|
|
24230
|
+
400: {
|
|
24231
|
+
headers: {
|
|
24232
|
+
[name: string]: unknown;
|
|
24233
|
+
};
|
|
24234
|
+
content: {
|
|
24235
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
24236
|
+
/** @enum {string} */
|
|
24237
|
+
error_code?: "bad_request" | "validation_error";
|
|
24238
|
+
};
|
|
24239
|
+
};
|
|
24240
|
+
};
|
|
24241
|
+
/**
|
|
24242
|
+
* @description `mfa_pending` — A second-factor challenge is pending; answer it before continuing.
|
|
24243
|
+
*
|
|
24244
|
+
* `not_logged_in` — There is no signed-in session for this request.
|
|
24245
|
+
*/
|
|
24246
|
+
401: {
|
|
24247
|
+
headers: {
|
|
24248
|
+
[name: string]: unknown;
|
|
24249
|
+
};
|
|
24250
|
+
content: {
|
|
24251
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
24252
|
+
/** @enum {string} */
|
|
24253
|
+
error_code?: "mfa_pending" | "not_logged_in";
|
|
24254
|
+
};
|
|
24255
|
+
};
|
|
24256
|
+
};
|
|
24257
|
+
/** @description `forbidden` — The credentials are valid but do not allow this operation. */
|
|
24258
|
+
403: {
|
|
24259
|
+
headers: {
|
|
24260
|
+
[name: string]: unknown;
|
|
24261
|
+
};
|
|
24262
|
+
content: {
|
|
24263
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
24264
|
+
/** @enum {string} */
|
|
24265
|
+
error_code?: "forbidden";
|
|
24266
|
+
};
|
|
24267
|
+
};
|
|
24268
|
+
};
|
|
24269
|
+
/** @description `account_not_found` — No Auth Account matches the request (domain, header or token). */
|
|
24270
|
+
404: {
|
|
24271
|
+
headers: {
|
|
24272
|
+
[name: string]: unknown;
|
|
24273
|
+
};
|
|
24274
|
+
content: {
|
|
24275
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
24276
|
+
/** @enum {string} */
|
|
24277
|
+
error_code?: "account_not_found";
|
|
24278
|
+
};
|
|
24279
|
+
};
|
|
24280
|
+
};
|
|
24281
|
+
/** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
|
|
24282
|
+
429: {
|
|
24283
|
+
headers: {
|
|
24284
|
+
[name: string]: unknown;
|
|
24285
|
+
};
|
|
24286
|
+
content: {
|
|
24287
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
24288
|
+
/** @enum {string} */
|
|
24289
|
+
error_code?: "too_many_requests";
|
|
24290
|
+
};
|
|
24291
|
+
};
|
|
24292
|
+
};
|
|
24293
|
+
/** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
|
|
24294
|
+
500: {
|
|
24295
|
+
headers: {
|
|
24296
|
+
[name: string]: unknown;
|
|
24297
|
+
};
|
|
24298
|
+
content: {
|
|
24299
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
24300
|
+
/** @enum {string} */
|
|
24301
|
+
error_code?: "internal_error";
|
|
24302
|
+
};
|
|
24303
|
+
};
|
|
24304
|
+
};
|
|
24305
|
+
};
|
|
24306
|
+
};
|
|
24056
24307
|
"session/logout": {
|
|
24057
24308
|
parameters: {
|
|
24058
24309
|
query?: {
|
package/dist/version.js
CHANGED
|
@@ -9,13 +9,13 @@
|
|
|
9
9
|
// login pages could not import the SDK at all. Same pattern as auth-js.
|
|
10
10
|
//
|
|
11
11
|
// The sentinels MUST stay byte-identical to the `from` values in `.releaserc`.
|
|
12
|
-
export const version = "2.7.
|
|
12
|
+
export const version = "2.7.21";
|
|
13
13
|
// Short git SHA of the released commit. The version dates a build; this names
|
|
14
14
|
// the exact tree, so a canonical log line or an audit entry leads straight to
|
|
15
15
|
// `git show <sha>`. Deliberately NOT hex: an unreleased build (dev, a local
|
|
16
16
|
// link) cannot be mistaken for a real commit — auth only records values that
|
|
17
17
|
// look like a SHA, and this one never will.
|
|
18
|
-
export const commit = "
|
|
18
|
+
export const commit = "eda9c4d";
|
|
19
19
|
// What this SDK writes in `x-faable-client`. Exported for a consumer that
|
|
20
20
|
// builds a strategy on its own (outside `FaableAuthApi`) and still wants the
|
|
21
21
|
// token request attributed — a bare `authClientCredentials` stamps only what
|
package/package.json
CHANGED
package/spec/openapi.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"info": {
|
|
4
4
|
"title": "@faablecloud/auth",
|
|
5
5
|
"description": "Auth Platform made by Faable. Manage Users and Roles",
|
|
6
|
-
"version": "2.
|
|
6
|
+
"version": "2.31.0",
|
|
7
7
|
"license": {
|
|
8
8
|
"name": "private",
|
|
9
9
|
"url": "https://faable.com/docs/platform/privacy-policy"
|
|
@@ -1657,6 +1657,11 @@
|
|
|
1657
1657
|
],
|
|
1658
1658
|
"description": "A login flow bound to this client (`loginflow_xxx`), overriding the account's. Absent = inherit."
|
|
1659
1659
|
},
|
|
1660
|
+
"default_audience": {
|
|
1661
|
+
"type": "string",
|
|
1662
|
+
"description": "Audience used when a client_credentials token request sends none (e.g. `faable:management:<account_id>`). An explicit `audience` in the request wins. Absent = `${iss}/userinfo`.",
|
|
1663
|
+
"nullable": true
|
|
1664
|
+
},
|
|
1660
1665
|
"account": {
|
|
1661
1666
|
"type": "string",
|
|
1662
1667
|
"description": "Object is related with this account"
|
|
@@ -2131,6 +2136,12 @@
|
|
|
2131
2136
|
}
|
|
2132
2137
|
]
|
|
2133
2138
|
},
|
|
2139
|
+
"default_audience": {
|
|
2140
|
+
"type": "string",
|
|
2141
|
+
"minLength": 1,
|
|
2142
|
+
"description": "Audience a client_credentials token request gets when it sends none. An explicit `audience` wins. `null` removes it.",
|
|
2143
|
+
"nullable": true
|
|
2144
|
+
},
|
|
2134
2145
|
"metadata": {
|
|
2135
2146
|
"type": "object",
|
|
2136
2147
|
"properties": {},
|
|
@@ -15735,6 +15746,11 @@
|
|
|
15735
15746
|
],
|
|
15736
15747
|
"description": "A login flow bound to this client (`loginflow_xxx`), overriding the account's. Absent = inherit."
|
|
15737
15748
|
},
|
|
15749
|
+
"default_audience": {
|
|
15750
|
+
"type": "string",
|
|
15751
|
+
"description": "Audience used when a client_credentials token request sends none (e.g. `faable:management:<account_id>`). An explicit `audience` in the request wins. Absent = `${iss}/userinfo`.",
|
|
15752
|
+
"nullable": true
|
|
15753
|
+
},
|
|
15738
15754
|
"account": {
|
|
15739
15755
|
"type": "string",
|
|
15740
15756
|
"description": "Object is related with this account"
|
|
@@ -16342,6 +16358,11 @@
|
|
|
16342
16358
|
],
|
|
16343
16359
|
"description": "A login flow bound to this client (`loginflow_xxx`), overriding the account's. Absent = inherit."
|
|
16344
16360
|
},
|
|
16361
|
+
"default_audience": {
|
|
16362
|
+
"type": "string",
|
|
16363
|
+
"description": "Audience used when a client_credentials token request sends none (e.g. `faable:management:<account_id>`). An explicit `audience` in the request wins. Absent = `${iss}/userinfo`.",
|
|
16364
|
+
"nullable": true
|
|
16365
|
+
},
|
|
16345
16366
|
"account": {
|
|
16346
16367
|
"type": "string",
|
|
16347
16368
|
"description": "Object is related with this account"
|
|
@@ -16934,6 +16955,12 @@
|
|
|
16934
16955
|
}
|
|
16935
16956
|
]
|
|
16936
16957
|
},
|
|
16958
|
+
"default_audience": {
|
|
16959
|
+
"type": "string",
|
|
16960
|
+
"minLength": 1,
|
|
16961
|
+
"description": "Audience a client_credentials token request gets when it sends none. An explicit `audience` wins. `null` removes it.",
|
|
16962
|
+
"nullable": true
|
|
16963
|
+
},
|
|
16937
16964
|
"metadata": {
|
|
16938
16965
|
"type": "object",
|
|
16939
16966
|
"properties": {},
|
|
@@ -17367,6 +17394,11 @@
|
|
|
17367
17394
|
],
|
|
17368
17395
|
"description": "A login flow bound to this client (`loginflow_xxx`), overriding the account's. Absent = inherit."
|
|
17369
17396
|
},
|
|
17397
|
+
"default_audience": {
|
|
17398
|
+
"type": "string",
|
|
17399
|
+
"description": "Audience used when a client_credentials token request sends none (e.g. `faable:management:<account_id>`). An explicit `audience` in the request wins. Absent = `${iss}/userinfo`.",
|
|
17400
|
+
"nullable": true
|
|
17401
|
+
},
|
|
17370
17402
|
"account": {
|
|
17371
17403
|
"type": "string",
|
|
17372
17404
|
"description": "Object is related with this account"
|
|
@@ -17974,6 +18006,11 @@
|
|
|
17974
18006
|
],
|
|
17975
18007
|
"description": "A login flow bound to this client (`loginflow_xxx`), overriding the account's. Absent = inherit."
|
|
17976
18008
|
},
|
|
18009
|
+
"default_audience": {
|
|
18010
|
+
"type": "string",
|
|
18011
|
+
"description": "Audience used when a client_credentials token request sends none (e.g. `faable:management:<account_id>`). An explicit `audience` in the request wins. Absent = `${iss}/userinfo`.",
|
|
18012
|
+
"nullable": true
|
|
18013
|
+
},
|
|
17977
18014
|
"account": {
|
|
17978
18015
|
"type": "string",
|
|
17979
18016
|
"description": "Object is related with this account"
|
|
@@ -18582,6 +18619,11 @@
|
|
|
18582
18619
|
],
|
|
18583
18620
|
"description": "A login flow bound to this client (`loginflow_xxx`), overriding the account's. Absent = inherit."
|
|
18584
18621
|
},
|
|
18622
|
+
"default_audience": {
|
|
18623
|
+
"type": "string",
|
|
18624
|
+
"description": "Audience used when a client_credentials token request sends none (e.g. `faable:management:<account_id>`). An explicit `audience` in the request wins. Absent = `${iss}/userinfo`.",
|
|
18625
|
+
"nullable": true
|
|
18626
|
+
},
|
|
18585
18627
|
"account": {
|
|
18586
18628
|
"type": "string",
|
|
18587
18629
|
"description": "Object is related with this account"
|
|
@@ -53031,6 +53073,570 @@
|
|
|
53031
53073
|
}
|
|
53032
53074
|
}
|
|
53033
53075
|
}
|
|
53076
|
+
},
|
|
53077
|
+
"patch": {
|
|
53078
|
+
"operationId": "session/me_update",
|
|
53079
|
+
"summary": "Update current User profile",
|
|
53080
|
+
"tags": [
|
|
53081
|
+
"session"
|
|
53082
|
+
],
|
|
53083
|
+
"description": "Updates the profile of the User behind the current session or bearer token. Only `name`, `company_name` and `country_iso` can be changed; `company_name` is merged into `user_metadata` without touching its other keys. A Bearer token must belong to this Account.",
|
|
53084
|
+
"requestBody": {
|
|
53085
|
+
"required": true,
|
|
53086
|
+
"content": {
|
|
53087
|
+
"application/json": {
|
|
53088
|
+
"schema": {
|
|
53089
|
+
"type": "object",
|
|
53090
|
+
"properties": {
|
|
53091
|
+
"name": {
|
|
53092
|
+
"type": "string",
|
|
53093
|
+
"minLength": 1,
|
|
53094
|
+
"maxLength": 100
|
|
53095
|
+
},
|
|
53096
|
+
"company_name": {
|
|
53097
|
+
"type": "string",
|
|
53098
|
+
"maxLength": 100
|
|
53099
|
+
},
|
|
53100
|
+
"country_iso": {
|
|
53101
|
+
"type": "string",
|
|
53102
|
+
"maxLength": 3
|
|
53103
|
+
}
|
|
53104
|
+
},
|
|
53105
|
+
"additionalProperties": false,
|
|
53106
|
+
"description": "Profile fields the current User may edit on themselves. `company_name` is stored in `user_metadata`, merged with whatever else is there."
|
|
53107
|
+
}
|
|
53108
|
+
}
|
|
53109
|
+
},
|
|
53110
|
+
"description": "Profile fields the current User may edit on themselves. `company_name` is stored in `user_metadata`, merged with whatever else is there."
|
|
53111
|
+
},
|
|
53112
|
+
"responses": {
|
|
53113
|
+
"200": {
|
|
53114
|
+
"description": "The current User. With a Bearer access token the response also carries the token's custom claims (e.g. `ciapol.com/station_id`) as top-level properties; profile fields always win over a same-named claim.",
|
|
53115
|
+
"content": {
|
|
53116
|
+
"application/json": {
|
|
53117
|
+
"schema": {
|
|
53118
|
+
"type": "object",
|
|
53119
|
+
"required": [
|
|
53120
|
+
"id",
|
|
53121
|
+
"email_verified",
|
|
53122
|
+
"phone_verified",
|
|
53123
|
+
"logins_count",
|
|
53124
|
+
"user_metadata",
|
|
53125
|
+
"app_metadata",
|
|
53126
|
+
"account",
|
|
53127
|
+
"createdAt"
|
|
53128
|
+
],
|
|
53129
|
+
"properties": {
|
|
53130
|
+
"id": {
|
|
53131
|
+
"type": "string",
|
|
53132
|
+
"description": "User ID"
|
|
53133
|
+
},
|
|
53134
|
+
"name": {
|
|
53135
|
+
"type": "string",
|
|
53136
|
+
"description": "User name",
|
|
53137
|
+
"nullable": true
|
|
53138
|
+
},
|
|
53139
|
+
"username": {
|
|
53140
|
+
"type": "string",
|
|
53141
|
+
"description": "unique username for this user",
|
|
53142
|
+
"nullable": true
|
|
53143
|
+
},
|
|
53144
|
+
"given_name": {
|
|
53145
|
+
"type": "string",
|
|
53146
|
+
"description": "Given name",
|
|
53147
|
+
"nullable": true
|
|
53148
|
+
},
|
|
53149
|
+
"family_name": {
|
|
53150
|
+
"type": "string",
|
|
53151
|
+
"description": "Family name",
|
|
53152
|
+
"nullable": true
|
|
53153
|
+
},
|
|
53154
|
+
"middle_name": {
|
|
53155
|
+
"type": "string",
|
|
53156
|
+
"description": "Middle name (OIDC §5.1)",
|
|
53157
|
+
"nullable": true
|
|
53158
|
+
},
|
|
53159
|
+
"nickname": {
|
|
53160
|
+
"type": "string",
|
|
53161
|
+
"description": "Casual name. Distinct from given_name (e.g. \"Mike\" vs \"Michael\"). OIDC §5.1",
|
|
53162
|
+
"nullable": true
|
|
53163
|
+
},
|
|
53164
|
+
"email": {
|
|
53165
|
+
"type": "string",
|
|
53166
|
+
"description": "User email",
|
|
53167
|
+
"nullable": true
|
|
53168
|
+
},
|
|
53169
|
+
"email_verified": {
|
|
53170
|
+
"type": "boolean",
|
|
53171
|
+
"description": "true if email is verified",
|
|
53172
|
+
"default": false
|
|
53173
|
+
},
|
|
53174
|
+
"email_verified_method": {
|
|
53175
|
+
"anyOf": [
|
|
53176
|
+
{
|
|
53177
|
+
"type": "string",
|
|
53178
|
+
"enum": [
|
|
53179
|
+
"manual"
|
|
53180
|
+
]
|
|
53181
|
+
},
|
|
53182
|
+
{
|
|
53183
|
+
"type": "string",
|
|
53184
|
+
"enum": [
|
|
53185
|
+
"verification_flow"
|
|
53186
|
+
]
|
|
53187
|
+
},
|
|
53188
|
+
{
|
|
53189
|
+
"type": "string",
|
|
53190
|
+
"enum": [
|
|
53191
|
+
"passwordless_otp"
|
|
53192
|
+
]
|
|
53193
|
+
},
|
|
53194
|
+
{
|
|
53195
|
+
"type": "string",
|
|
53196
|
+
"enum": [
|
|
53197
|
+
"team_invite"
|
|
53198
|
+
]
|
|
53199
|
+
},
|
|
53200
|
+
{
|
|
53201
|
+
"type": "string",
|
|
53202
|
+
"enum": [
|
|
53203
|
+
"email_change"
|
|
53204
|
+
]
|
|
53205
|
+
},
|
|
53206
|
+
{
|
|
53207
|
+
"type": "string",
|
|
53208
|
+
"enum": [
|
|
53209
|
+
"federated"
|
|
53210
|
+
]
|
|
53211
|
+
},
|
|
53212
|
+
{
|
|
53213
|
+
"type": "string",
|
|
53214
|
+
"enum": [
|
|
53215
|
+
"sms_otp"
|
|
53216
|
+
]
|
|
53217
|
+
},
|
|
53218
|
+
{
|
|
53219
|
+
"type": "string",
|
|
53220
|
+
"enum": [
|
|
53221
|
+
"password_reset"
|
|
53222
|
+
]
|
|
53223
|
+
},
|
|
53224
|
+
{
|
|
53225
|
+
"type": "null"
|
|
53226
|
+
}
|
|
53227
|
+
],
|
|
53228
|
+
"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. `password_reset` — user completed the recovery link that was emailed to them (the `email` channel only). `null` — the field was cleared (admin un-verified the email)."
|
|
53229
|
+
},
|
|
53230
|
+
"email_verified_at": {
|
|
53231
|
+
"type": "string",
|
|
53232
|
+
"description": "ISO 8601 timestamp of when `email_verified` was last flipped to true.",
|
|
53233
|
+
"nullable": true
|
|
53234
|
+
},
|
|
53235
|
+
"email_change_locked_at": {
|
|
53236
|
+
"type": "string",
|
|
53237
|
+
"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.",
|
|
53238
|
+
"nullable": true
|
|
53239
|
+
},
|
|
53240
|
+
"email_bounced_at": {
|
|
53241
|
+
"type": "string",
|
|
53242
|
+
"description": "ISO 8601 timestamp of the last Postmark hard bounce / spam complaint for this address. When set, the email is treated as undeliverable and no further emails are sent to the user until the address changes.",
|
|
53243
|
+
"nullable": true
|
|
53244
|
+
},
|
|
53245
|
+
"welcome_sent_at": {
|
|
53246
|
+
"type": "string",
|
|
53247
|
+
"description": "ISO 8601 timestamp of the built-in welcome email send. Set once by the platform; guarantees at most one welcome per user.",
|
|
53248
|
+
"nullable": true
|
|
53249
|
+
},
|
|
53250
|
+
"passkey_prompted_at": {
|
|
53251
|
+
"type": "string",
|
|
53252
|
+
"description": "ISO 8601 timestamp of the last time the hosted \"create a passkey\" offer was shown to this user after a login. Drives the snooze in `login_methods.passkey_promotion_snooze_days`.",
|
|
53253
|
+
"nullable": true
|
|
53254
|
+
},
|
|
53255
|
+
"passkey_prompt_count": {
|
|
53256
|
+
"type": "integer",
|
|
53257
|
+
"description": "How many times the passkey offer has been shown to this user. Capped by `login_methods.passkey_promotion_max_prompts`; reset by an administrator through `POST /user/:id/passkey-prompt/reset`."
|
|
53258
|
+
},
|
|
53259
|
+
"passkey_prompt_dismissed_at": {
|
|
53260
|
+
"type": "string",
|
|
53261
|
+
"description": "ISO 8601 timestamp of the last time the user chose \"Not now\" on the passkey offer, as opposed to closing the tab.",
|
|
53262
|
+
"nullable": true
|
|
53263
|
+
},
|
|
53264
|
+
"phone": {
|
|
53265
|
+
"type": "string",
|
|
53266
|
+
"description": "contact phone number",
|
|
53267
|
+
"nullable": true
|
|
53268
|
+
},
|
|
53269
|
+
"phone_e164": {
|
|
53270
|
+
"type": "boolean",
|
|
53271
|
+
"description": "Whether `phone` is a valid E.164 number. Calculated on read, never stored: new writes are rejected unless they normalise, so a `false` here is a legacy row that no SMS can reach — fix the number, or set the account default country and write it again."
|
|
53272
|
+
},
|
|
53273
|
+
"phone_verified": {
|
|
53274
|
+
"type": "boolean",
|
|
53275
|
+
"description": "phone is verified"
|
|
53276
|
+
},
|
|
53277
|
+
"phone_verified_method": {
|
|
53278
|
+
"anyOf": [
|
|
53279
|
+
{
|
|
53280
|
+
"type": "string",
|
|
53281
|
+
"enum": [
|
|
53282
|
+
"manual"
|
|
53283
|
+
]
|
|
53284
|
+
},
|
|
53285
|
+
{
|
|
53286
|
+
"type": "string",
|
|
53287
|
+
"enum": [
|
|
53288
|
+
"verification_flow"
|
|
53289
|
+
]
|
|
53290
|
+
},
|
|
53291
|
+
{
|
|
53292
|
+
"type": "string",
|
|
53293
|
+
"enum": [
|
|
53294
|
+
"passwordless_otp"
|
|
53295
|
+
]
|
|
53296
|
+
},
|
|
53297
|
+
{
|
|
53298
|
+
"type": "string",
|
|
53299
|
+
"enum": [
|
|
53300
|
+
"team_invite"
|
|
53301
|
+
]
|
|
53302
|
+
},
|
|
53303
|
+
{
|
|
53304
|
+
"type": "string",
|
|
53305
|
+
"enum": [
|
|
53306
|
+
"email_change"
|
|
53307
|
+
]
|
|
53308
|
+
},
|
|
53309
|
+
{
|
|
53310
|
+
"type": "string",
|
|
53311
|
+
"enum": [
|
|
53312
|
+
"federated"
|
|
53313
|
+
]
|
|
53314
|
+
},
|
|
53315
|
+
{
|
|
53316
|
+
"type": "string",
|
|
53317
|
+
"enum": [
|
|
53318
|
+
"sms_otp"
|
|
53319
|
+
]
|
|
53320
|
+
},
|
|
53321
|
+
{
|
|
53322
|
+
"type": "string",
|
|
53323
|
+
"enum": [
|
|
53324
|
+
"password_reset"
|
|
53325
|
+
]
|
|
53326
|
+
},
|
|
53327
|
+
{
|
|
53328
|
+
"type": "null"
|
|
53329
|
+
}
|
|
53330
|
+
],
|
|
53331
|
+
"description": "How `phone_verified` was last set. Same enum as `email_verified_method`, plus `sms_otp` — the user typed a code sent by SMS (`POST /user/:id/verify-phone/start`)."
|
|
53332
|
+
},
|
|
53333
|
+
"phone_verified_at": {
|
|
53334
|
+
"type": "string",
|
|
53335
|
+
"description": "ISO 8601 timestamp of when `phone_verified` was last flipped to true.",
|
|
53336
|
+
"nullable": true
|
|
53337
|
+
},
|
|
53338
|
+
"country_iso": {
|
|
53339
|
+
"type": "string",
|
|
53340
|
+
"description": "country iso code",
|
|
53341
|
+
"nullable": true
|
|
53342
|
+
},
|
|
53343
|
+
"birth_date": {
|
|
53344
|
+
"type": "string",
|
|
53345
|
+
"description": "user birth_date",
|
|
53346
|
+
"nullable": true
|
|
53347
|
+
},
|
|
53348
|
+
"gender": {
|
|
53349
|
+
"type": "string",
|
|
53350
|
+
"description": "User gender (free-form, OIDC §5.1)",
|
|
53351
|
+
"nullable": true
|
|
53352
|
+
},
|
|
53353
|
+
"zoneinfo": {
|
|
53354
|
+
"type": "string",
|
|
53355
|
+
"description": "IANA time-zone name (e.g. \"Europe/Madrid\"). OIDC §5.1 — used for the `zoneinfo` claim.",
|
|
53356
|
+
"nullable": true
|
|
53357
|
+
},
|
|
53358
|
+
"locale": {
|
|
53359
|
+
"type": "string",
|
|
53360
|
+
"description": "user main language",
|
|
53361
|
+
"nullable": true
|
|
53362
|
+
},
|
|
53363
|
+
"region": {
|
|
53364
|
+
"type": "string",
|
|
53365
|
+
"description": "customer region",
|
|
53366
|
+
"nullable": true
|
|
53367
|
+
},
|
|
53368
|
+
"website": {
|
|
53369
|
+
"type": "string",
|
|
53370
|
+
"description": "URL of the User's personal Web page or blog (OIDC §5.1)",
|
|
53371
|
+
"nullable": true
|
|
53372
|
+
},
|
|
53373
|
+
"address": {
|
|
53374
|
+
"type": "object",
|
|
53375
|
+
"properties": {
|
|
53376
|
+
"formatted": {
|
|
53377
|
+
"type": "string",
|
|
53378
|
+
"description": "Full mailing address, formatted for display (may contain newlines)",
|
|
53379
|
+
"nullable": true
|
|
53380
|
+
},
|
|
53381
|
+
"street_address": {
|
|
53382
|
+
"type": "string",
|
|
53383
|
+
"nullable": true
|
|
53384
|
+
},
|
|
53385
|
+
"locality": {
|
|
53386
|
+
"type": "string",
|
|
53387
|
+
"description": "City or locality",
|
|
53388
|
+
"nullable": true
|
|
53389
|
+
},
|
|
53390
|
+
"region": {
|
|
53391
|
+
"type": "string",
|
|
53392
|
+
"description": "State, province, or region",
|
|
53393
|
+
"nullable": true
|
|
53394
|
+
},
|
|
53395
|
+
"postal_code": {
|
|
53396
|
+
"type": "string",
|
|
53397
|
+
"nullable": true
|
|
53398
|
+
},
|
|
53399
|
+
"country": {
|
|
53400
|
+
"type": "string",
|
|
53401
|
+
"description": "Country name",
|
|
53402
|
+
"nullable": true
|
|
53403
|
+
}
|
|
53404
|
+
},
|
|
53405
|
+
"additionalProperties": false,
|
|
53406
|
+
"nullable": true
|
|
53407
|
+
},
|
|
53408
|
+
"picture": {
|
|
53409
|
+
"type": "string",
|
|
53410
|
+
"description": "User picture url",
|
|
53411
|
+
"nullable": true
|
|
53412
|
+
},
|
|
53413
|
+
"logins_count": {
|
|
53414
|
+
"type": "number",
|
|
53415
|
+
"description": "Total number of logins this user has performed."
|
|
53416
|
+
},
|
|
53417
|
+
"last_ip": {
|
|
53418
|
+
"type": "string",
|
|
53419
|
+
"description": "Last IP address from which this user logged in",
|
|
53420
|
+
"nullable": true
|
|
53421
|
+
},
|
|
53422
|
+
"last_login": {
|
|
53423
|
+
"type": "string",
|
|
53424
|
+
"description": "Last date and time this user logged in (ISO_8601 format)",
|
|
53425
|
+
"nullable": true
|
|
53426
|
+
},
|
|
53427
|
+
"first_language": {
|
|
53428
|
+
"type": "string",
|
|
53429
|
+
"description": "Primary Accept-Language subtag seen at this user's FIRST login (e.g. \"zh\"). Written once and never updated, so a later login whose language differs is visible as `event.stats.language_changed` in actions — a cross-session signal no single request can produce.",
|
|
53430
|
+
"nullable": true
|
|
53431
|
+
},
|
|
53432
|
+
"suspended": {
|
|
53433
|
+
"type": "boolean",
|
|
53434
|
+
"description": "true while the user is suspended. A suspended user is rejected at every login flow, token grant, session use and management-API call.",
|
|
53435
|
+
"default": false
|
|
53436
|
+
},
|
|
53437
|
+
"suspended_at": {
|
|
53438
|
+
"type": "string",
|
|
53439
|
+
"description": "ISO 8601 timestamp of when `suspended` was last flipped to true.",
|
|
53440
|
+
"nullable": true
|
|
53441
|
+
},
|
|
53442
|
+
"suspended_reason": {
|
|
53443
|
+
"type": "string",
|
|
53444
|
+
"description": "Free-form reason recorded when the user was suspended (e.g. \"abuse: RCE payload\").",
|
|
53445
|
+
"nullable": true
|
|
53446
|
+
},
|
|
53447
|
+
"user_metadata": {
|
|
53448
|
+
"type": "object",
|
|
53449
|
+
"properties": {},
|
|
53450
|
+
"additionalProperties": true,
|
|
53451
|
+
"description": "User Metadata",
|
|
53452
|
+
"default": {}
|
|
53453
|
+
},
|
|
53454
|
+
"app_metadata": {
|
|
53455
|
+
"type": "object",
|
|
53456
|
+
"properties": {},
|
|
53457
|
+
"additionalProperties": true,
|
|
53458
|
+
"description": "App Metadata",
|
|
53459
|
+
"default": {}
|
|
53460
|
+
},
|
|
53461
|
+
"account": {
|
|
53462
|
+
"type": "string",
|
|
53463
|
+
"description": "Object is related with this account"
|
|
53464
|
+
},
|
|
53465
|
+
"metadata": {
|
|
53466
|
+
"type": "object",
|
|
53467
|
+
"properties": {},
|
|
53468
|
+
"additionalProperties": true,
|
|
53469
|
+
"description": "UserMetadata",
|
|
53470
|
+
"default": {}
|
|
53471
|
+
},
|
|
53472
|
+
"createdAt": {
|
|
53473
|
+
"type": "string",
|
|
53474
|
+
"description": "User creation date"
|
|
53475
|
+
},
|
|
53476
|
+
"updatedAt": {
|
|
53477
|
+
"type": "string",
|
|
53478
|
+
"description": "User updated date"
|
|
53479
|
+
}
|
|
53480
|
+
},
|
|
53481
|
+
"additionalProperties": true,
|
|
53482
|
+
"description": "The current User. With a Bearer access token the response also carries the token's custom claims (e.g. `ciapol.com/station_id`) as top-level properties; profile fields always win over a same-named claim."
|
|
53483
|
+
}
|
|
53484
|
+
}
|
|
53485
|
+
}
|
|
53486
|
+
},
|
|
53487
|
+
"400": {
|
|
53488
|
+
"description": "`bad_request` — The request is malformed. `message` says what is wrong.\n\n`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
|
|
53489
|
+
"content": {
|
|
53490
|
+
"application/json": {
|
|
53491
|
+
"schema": {
|
|
53492
|
+
"allOf": [
|
|
53493
|
+
{
|
|
53494
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
53495
|
+
},
|
|
53496
|
+
{
|
|
53497
|
+
"type": "object",
|
|
53498
|
+
"properties": {
|
|
53499
|
+
"error_code": {
|
|
53500
|
+
"type": "string",
|
|
53501
|
+
"enum": [
|
|
53502
|
+
"bad_request",
|
|
53503
|
+
"validation_error"
|
|
53504
|
+
]
|
|
53505
|
+
}
|
|
53506
|
+
}
|
|
53507
|
+
}
|
|
53508
|
+
]
|
|
53509
|
+
}
|
|
53510
|
+
}
|
|
53511
|
+
}
|
|
53512
|
+
},
|
|
53513
|
+
"401": {
|
|
53514
|
+
"description": "`mfa_pending` — A second-factor challenge is pending; answer it before continuing.\n\n`not_logged_in` — There is no signed-in session for this request.",
|
|
53515
|
+
"content": {
|
|
53516
|
+
"application/json": {
|
|
53517
|
+
"schema": {
|
|
53518
|
+
"allOf": [
|
|
53519
|
+
{
|
|
53520
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
53521
|
+
},
|
|
53522
|
+
{
|
|
53523
|
+
"type": "object",
|
|
53524
|
+
"properties": {
|
|
53525
|
+
"error_code": {
|
|
53526
|
+
"type": "string",
|
|
53527
|
+
"enum": [
|
|
53528
|
+
"mfa_pending",
|
|
53529
|
+
"not_logged_in"
|
|
53530
|
+
]
|
|
53531
|
+
}
|
|
53532
|
+
}
|
|
53533
|
+
}
|
|
53534
|
+
]
|
|
53535
|
+
}
|
|
53536
|
+
}
|
|
53537
|
+
}
|
|
53538
|
+
},
|
|
53539
|
+
"403": {
|
|
53540
|
+
"description": "`forbidden` — The credentials are valid but do not allow this operation.",
|
|
53541
|
+
"content": {
|
|
53542
|
+
"application/json": {
|
|
53543
|
+
"schema": {
|
|
53544
|
+
"allOf": [
|
|
53545
|
+
{
|
|
53546
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
53547
|
+
},
|
|
53548
|
+
{
|
|
53549
|
+
"type": "object",
|
|
53550
|
+
"properties": {
|
|
53551
|
+
"error_code": {
|
|
53552
|
+
"type": "string",
|
|
53553
|
+
"enum": [
|
|
53554
|
+
"forbidden"
|
|
53555
|
+
]
|
|
53556
|
+
}
|
|
53557
|
+
}
|
|
53558
|
+
}
|
|
53559
|
+
]
|
|
53560
|
+
}
|
|
53561
|
+
}
|
|
53562
|
+
}
|
|
53563
|
+
},
|
|
53564
|
+
"404": {
|
|
53565
|
+
"description": "`account_not_found` — No Auth Account matches the request (domain, header or token).",
|
|
53566
|
+
"content": {
|
|
53567
|
+
"application/json": {
|
|
53568
|
+
"schema": {
|
|
53569
|
+
"allOf": [
|
|
53570
|
+
{
|
|
53571
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
53572
|
+
},
|
|
53573
|
+
{
|
|
53574
|
+
"type": "object",
|
|
53575
|
+
"properties": {
|
|
53576
|
+
"error_code": {
|
|
53577
|
+
"type": "string",
|
|
53578
|
+
"enum": [
|
|
53579
|
+
"account_not_found"
|
|
53580
|
+
]
|
|
53581
|
+
}
|
|
53582
|
+
}
|
|
53583
|
+
}
|
|
53584
|
+
]
|
|
53585
|
+
}
|
|
53586
|
+
}
|
|
53587
|
+
}
|
|
53588
|
+
},
|
|
53589
|
+
"429": {
|
|
53590
|
+
"description": "`too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header.",
|
|
53591
|
+
"content": {
|
|
53592
|
+
"application/json": {
|
|
53593
|
+
"schema": {
|
|
53594
|
+
"allOf": [
|
|
53595
|
+
{
|
|
53596
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
53597
|
+
},
|
|
53598
|
+
{
|
|
53599
|
+
"type": "object",
|
|
53600
|
+
"properties": {
|
|
53601
|
+
"error_code": {
|
|
53602
|
+
"type": "string",
|
|
53603
|
+
"enum": [
|
|
53604
|
+
"too_many_requests"
|
|
53605
|
+
]
|
|
53606
|
+
}
|
|
53607
|
+
}
|
|
53608
|
+
}
|
|
53609
|
+
]
|
|
53610
|
+
}
|
|
53611
|
+
}
|
|
53612
|
+
}
|
|
53613
|
+
},
|
|
53614
|
+
"500": {
|
|
53615
|
+
"description": "`internal_error` — Unexpected server error. Retry later; the request id is logged.",
|
|
53616
|
+
"content": {
|
|
53617
|
+
"application/json": {
|
|
53618
|
+
"schema": {
|
|
53619
|
+
"allOf": [
|
|
53620
|
+
{
|
|
53621
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
53622
|
+
},
|
|
53623
|
+
{
|
|
53624
|
+
"type": "object",
|
|
53625
|
+
"properties": {
|
|
53626
|
+
"error_code": {
|
|
53627
|
+
"type": "string",
|
|
53628
|
+
"enum": [
|
|
53629
|
+
"internal_error"
|
|
53630
|
+
]
|
|
53631
|
+
}
|
|
53632
|
+
}
|
|
53633
|
+
}
|
|
53634
|
+
]
|
|
53635
|
+
}
|
|
53636
|
+
}
|
|
53637
|
+
}
|
|
53638
|
+
}
|
|
53639
|
+
}
|
|
53034
53640
|
}
|
|
53035
53641
|
},
|
|
53036
53642
|
"/logout": {
|