picked 0.0.101 → 0.0.102-next.2
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/docs/reference/dashboard/workflow-test-runs.md +40 -17
- package/docs/reference/management-api/schema/action.md +67 -79
- package/docs/reference/management-api/schema/analytics-session.md +77 -94
- package/docs/reference/management-api/schema/analytics.md +16 -14
- package/docs/reference/management-api/schema/api-key.md +43 -51
- package/docs/reference/management-api/schema/auth.md +271 -404
- package/docs/reference/management-api/schema/cms-fields.md +348 -245
- package/docs/reference/management-api/schema/cms-models.md +369 -378
- package/docs/reference/management-api/schema/common.md +69 -130
- package/docs/reference/management-api/schema/condition.md +63 -74
- package/docs/reference/management-api/schema/design-system.md +59 -51
- package/docs/reference/management-api/schema/experience.md +388 -364
- package/docs/reference/management-api/schema/external-api.md +153 -171
- package/docs/reference/management-api/schema/feature.md +85 -103
- package/docs/reference/management-api/schema/feedback.md +27 -31
- package/docs/reference/management-api/schema/field.md +117 -135
- package/docs/reference/management-api/schema/index.md +184 -184
- package/docs/reference/management-api/schema/integration.md +72 -78
- package/docs/reference/management-api/schema/label.md +81 -137
- package/docs/reference/management-api/schema/lead.md +80 -119
- package/docs/reference/management-api/schema/mcp-server.md +73 -71
- package/docs/reference/management-api/schema/metric.md +6 -9
- package/docs/reference/management-api/schema/operation.md +17 -26
- package/docs/reference/management-api/schema/organization.md +198 -220
- package/docs/reference/management-api/schema/project.md +177 -186
- package/docs/reference/management-api/schema/report.md +69 -65
- package/docs/reference/management-api/schema/saved-view.md +71 -71
- package/docs/reference/management-api/schema/shopify.md +331 -204
- package/docs/reference/management-api/schema/step.md +72 -80
- package/docs/reference/management-api/schema/tenant-branding.md +48 -70
- package/docs/reference/management-api/schema/workbench.md +54 -66
- package/docs/reference/management-api/schema/workflow-run.md +66 -79
- package/docs/reference/management-api/schema/workflow.md +310 -353
- package/docs/reference/management-api/schema/workspace-version.md +212 -261
- package/docs/reference/management-api/schema/workspace.md +275 -328
- package/package.json +4 -4
|
@@ -6,13 +6,14 @@ generated: true
|
|
|
6
6
|
|
|
7
7
|
# Auth schema
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
See [Management API schema](/reference/management-api/schema) for every domain, the endpoint and authentication.
|
|
10
10
|
|
|
11
11
|
## Queries
|
|
12
12
|
|
|
13
13
|
### `user`
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
Reads the signed-in user. Null when the caller is an API key or the auth service rejects the token.
|
|
16
|
+
Exempt from the MFA policy, so a user the policy gates can read `mfa` and `mfaFactors`.
|
|
16
17
|
|
|
17
18
|
```graphql
|
|
18
19
|
user: User @auth(mfa: EXEMPT)
|
|
@@ -20,7 +21,8 @@ user: User @auth(mfa: EXEMPT)
|
|
|
20
21
|
|
|
21
22
|
### `viewerScopes`
|
|
22
23
|
|
|
23
|
-
|
|
24
|
+
Lists the scopes the caller holds outside any organisation, such as `ORGANIZATION_CREATE`. Empty
|
|
25
|
+
for an API key. `Organization.viewerScopes` lists the scopes held in one organisation.
|
|
24
26
|
|
|
25
27
|
```graphql
|
|
26
28
|
viewerScopes: [Scope!]! @auth
|
|
@@ -28,7 +30,8 @@ viewerScopes: [Scope!]! @auth
|
|
|
28
30
|
|
|
29
31
|
### `oauthConsentDetails`
|
|
30
32
|
|
|
31
|
-
|
|
33
|
+
Reads an OAuth authorisation request waiting for the signed-in user's consent. Reading a request
|
|
34
|
+
the user already consented to approves it.
|
|
32
35
|
|
|
33
36
|
```graphql
|
|
34
37
|
oauthConsentDetails(input: OAuthConsentDetailsInput!): OAuthConsentDetailsPayload! @auth(only: USER)
|
|
@@ -38,10 +41,9 @@ oauthConsentDetails(input: OAuthConsentDetailsInput!): OAuthConsentDetailsPayloa
|
|
|
38
41
|
|
|
39
42
|
### `sessionStart`
|
|
40
43
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
the caller makes too many requests, or when the project's email quota is spent.
|
|
44
|
+
Begins a sign-in from an email address alone: answers `PASSWORD`, or emails a sign-in code and
|
|
45
|
+
answers `EMAIL_CODE`. Never creates an account. Returns `RATE_LIMITED` past 10 requests a minute
|
|
46
|
+
from one IP address, or when the project's email quota is spent.
|
|
45
47
|
|
|
46
48
|
```graphql
|
|
47
49
|
sessionStart(input: SessionStartInput!): SessionStartPayload!
|
|
@@ -49,7 +51,7 @@ sessionStart(input: SessionStartInput!): SessionStartPayload!
|
|
|
49
51
|
|
|
50
52
|
### `sessionCreate`
|
|
51
53
|
|
|
52
|
-
|
|
54
|
+
Signs in with an email address and password and returns an `AAL1` session.
|
|
53
55
|
|
|
54
56
|
```graphql
|
|
55
57
|
sessionCreate(input: SessionCreateInput!): SessionCreatePayload!
|
|
@@ -57,7 +59,7 @@ sessionCreate(input: SessionCreateInput!): SessionCreatePayload!
|
|
|
57
59
|
|
|
58
60
|
### `sessionRefresh`
|
|
59
61
|
|
|
60
|
-
|
|
62
|
+
Exchanges a refresh token for a new session.
|
|
61
63
|
|
|
62
64
|
```graphql
|
|
63
65
|
sessionRefresh(input: SessionRefreshInput!): SessionRefreshPayload!
|
|
@@ -65,7 +67,9 @@ sessionRefresh(input: SessionRefreshInput!): SessionRefreshPayload!
|
|
|
65
67
|
|
|
66
68
|
### `accountCreate`
|
|
67
69
|
|
|
68
|
-
|
|
70
|
+
Registers an email address and emails it a confirmation code and link. The response does not
|
|
71
|
+
reveal whether the address has an account. Returns `RATE_LIMITED` when the project's email quota
|
|
72
|
+
is spent.
|
|
69
73
|
|
|
70
74
|
```graphql
|
|
71
75
|
accountCreate(input: AccountCreateInput!): AccountCreatePayload!
|
|
@@ -73,7 +77,7 @@ accountCreate(input: AccountCreateInput!): AccountCreatePayload!
|
|
|
73
77
|
|
|
74
78
|
### `accountVerifyEmail`
|
|
75
79
|
|
|
76
|
-
|
|
80
|
+
Verifies the six-digit code from a confirmation or sign-in email and creates a session.
|
|
77
81
|
|
|
78
82
|
```graphql
|
|
79
83
|
accountVerifyEmail(input: AccountVerifyEmailInput!): AccountVerifyEmailPayload!
|
|
@@ -81,7 +85,9 @@ accountVerifyEmail(input: AccountVerifyEmailInput!): AccountVerifyEmailPayload!
|
|
|
81
85
|
|
|
82
86
|
### `accountResendVerification`
|
|
83
87
|
|
|
84
|
-
|
|
88
|
+
Emails an existing account a new code and link: a confirmation, or a sign-in for a confirmed
|
|
89
|
+
account. An address with no account returns an error, so the response reveals whether an account
|
|
90
|
+
exists. An address emailed within the minimum send interval returns `RATE_LIMITED`.
|
|
85
91
|
|
|
86
92
|
```graphql
|
|
87
93
|
accountResendVerification(input: AccountResendVerificationInput!): AccountResendVerificationPayload!
|
|
@@ -89,7 +95,7 @@ accountResendVerification(input: AccountResendVerificationInput!): AccountResend
|
|
|
89
95
|
|
|
90
96
|
### `oauthAuthorize`
|
|
91
97
|
|
|
92
|
-
|
|
98
|
+
Creates the provider URL that starts a sign-in with an OAuth provider.
|
|
93
99
|
|
|
94
100
|
```graphql
|
|
95
101
|
oauthAuthorize(input: OAuthAuthorizeInput!): OAuthAuthorizePayload!
|
|
@@ -97,7 +103,7 @@ oauthAuthorize(input: OAuthAuthorizeInput!): OAuthAuthorizePayload!
|
|
|
97
103
|
|
|
98
104
|
### `oauthCallback`
|
|
99
105
|
|
|
100
|
-
|
|
106
|
+
Exchanges the authorisation code from an OAuth provider's redirect for a session.
|
|
101
107
|
|
|
102
108
|
```graphql
|
|
103
109
|
oauthCallback(input: OAuthCallbackInput!): OAuthCallbackPayload!
|
|
@@ -105,7 +111,7 @@ oauthCallback(input: OAuthCallbackInput!): OAuthCallbackPayload!
|
|
|
105
111
|
|
|
106
112
|
### `oauthConsentApprove`
|
|
107
113
|
|
|
108
|
-
|
|
114
|
+
Approves an OAuth authorisation request for the signed-in user.
|
|
109
115
|
|
|
110
116
|
```graphql
|
|
111
117
|
oauthConsentApprove(input: OAuthConsentApproveInput!): OAuthConsentActionPayload! @auth(only: USER)
|
|
@@ -113,7 +119,7 @@ oauthConsentApprove(input: OAuthConsentApproveInput!): OAuthConsentActionPayload
|
|
|
113
119
|
|
|
114
120
|
### `oauthConsentDeny`
|
|
115
121
|
|
|
116
|
-
|
|
122
|
+
Denies an OAuth authorisation request for the signed-in user.
|
|
117
123
|
|
|
118
124
|
```graphql
|
|
119
125
|
oauthConsentDeny(input: OAuthConsentDenyInput!): OAuthConsentActionPayload! @auth(only: USER)
|
|
@@ -121,8 +127,8 @@ oauthConsentDeny(input: OAuthConsentDenyInput!): OAuthConsentActionPayload! @aut
|
|
|
121
127
|
|
|
122
128
|
### `magicLinkSend`
|
|
123
129
|
|
|
124
|
-
|
|
125
|
-
|
|
130
|
+
Emails an existing account a sign-in code and link. Never creates an account, and answers
|
|
131
|
+
`success: true` for an address with no account.
|
|
126
132
|
|
|
127
133
|
```graphql
|
|
128
134
|
magicLinkSend(input: MagicLinkSendInput!): MagicLinkSendPayload!
|
|
@@ -130,7 +136,7 @@ magicLinkSend(input: MagicLinkSendInput!): MagicLinkSendPayload!
|
|
|
130
136
|
|
|
131
137
|
### `magicLinkVerify`
|
|
132
138
|
|
|
133
|
-
|
|
139
|
+
Verifies the six-digit code from a sign-in or confirmation email and creates a session.
|
|
134
140
|
|
|
135
141
|
```graphql
|
|
136
142
|
magicLinkVerify(input: MagicLinkVerifyInput!): MagicLinkVerifyPayload!
|
|
@@ -138,10 +144,9 @@ magicLinkVerify(input: MagicLinkVerifyInput!): MagicLinkVerifyPayload!
|
|
|
138
144
|
|
|
139
145
|
### `emailLinkVerify`
|
|
140
146
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
opens links before delivery would otherwise use it up.
|
|
147
|
+
Verifies the link from a password-reset, invitation, sign-in or confirmation email and creates a
|
|
148
|
+
session. The link works once: call this when the recipient confirms, never on opening the link,
|
|
149
|
+
which an email security scanner may do before delivery.
|
|
145
150
|
|
|
146
151
|
```graphql
|
|
147
152
|
emailLinkVerify(input: EmailLinkVerifyInput!): EmailLinkVerifyPayload!
|
|
@@ -149,7 +154,8 @@ emailLinkVerify(input: EmailLinkVerifyInput!): EmailLinkVerifyPayload!
|
|
|
149
154
|
|
|
150
155
|
### `passwordResetSend`
|
|
151
156
|
|
|
152
|
-
|
|
157
|
+
Sends a password-reset email. Returns `RATE_LIMITED` when the address was emailed within the
|
|
158
|
+
minimum send interval or the project's email quota is spent.
|
|
153
159
|
|
|
154
160
|
```graphql
|
|
155
161
|
passwordResetSend(input: PasswordResetSendInput!): PasswordResetSendPayload!
|
|
@@ -157,9 +163,9 @@ passwordResetSend(input: PasswordResetSendInput!): PasswordResetSendPayload!
|
|
|
157
163
|
|
|
158
164
|
### `passwordUpdate`
|
|
159
165
|
|
|
160
|
-
|
|
161
|
-
may set a password only while the user holds
|
|
162
|
-
otherwise
|
|
166
|
+
Sets the signed-in user's password without asking for the current one. Ends the user's other
|
|
167
|
+
sessions and keeps the caller's. An `AAL1` session may set a password only while the user holds
|
|
168
|
+
no verified factor, and otherwise gets `MFA_REQUIRED`.
|
|
163
169
|
|
|
164
170
|
```graphql
|
|
165
171
|
passwordUpdate(input: PasswordUpdateInput!): PasswordUpdatePayload! @auth(mfa: EXEMPT)
|
|
@@ -167,7 +173,9 @@ passwordUpdate(input: PasswordUpdateInput!): PasswordUpdatePayload! @auth(mfa: E
|
|
|
167
173
|
|
|
168
174
|
### `mfaFactorEnroll`
|
|
169
175
|
|
|
170
|
-
|
|
176
|
+
Enrols an authenticator app for the caller and returns its secret, once. First deletes the
|
|
177
|
+
caller's unverified factors, except the two newest enrolled in the last minute; one holding the
|
|
178
|
+
given `friendlyName` is deleted however new.
|
|
171
179
|
|
|
172
180
|
```graphql
|
|
173
181
|
mfaFactorEnroll(input: MfaFactorEnrollInput!): MfaFactorEnrollPayload! @auth(only: USER, mfa: EXEMPT)
|
|
@@ -175,7 +183,7 @@ mfaFactorEnroll(input: MfaFactorEnrollInput!): MfaFactorEnrollPayload! @auth(onl
|
|
|
175
183
|
|
|
176
184
|
### `mfaChallengeCreate`
|
|
177
185
|
|
|
178
|
-
|
|
186
|
+
Opens a challenge against one of the caller's factors.
|
|
179
187
|
|
|
180
188
|
```graphql
|
|
181
189
|
mfaChallengeCreate(input: MfaChallengeCreateInput!): MfaChallengeCreatePayload! @auth(only: USER, mfa: EXEMPT)
|
|
@@ -183,7 +191,9 @@ mfaChallengeCreate(input: MfaChallengeCreateInput!): MfaChallengeCreatePayload!
|
|
|
183
191
|
|
|
184
192
|
### `mfaChallengeVerify`
|
|
185
193
|
|
|
186
|
-
|
|
194
|
+
Verifies an authenticator code against a challenge and returns the caller's session at `AAL2`.
|
|
195
|
+
The user's other sessions keep their level. A wrong code returns `MFA_CHALLENGE_FAILED`, and an
|
|
196
|
+
expired challenge `TOKEN_EXPIRED`.
|
|
187
197
|
|
|
188
198
|
```graphql
|
|
189
199
|
mfaChallengeVerify(input: MfaChallengeVerifyInput!): MfaChallengeVerifyPayload! @auth(only: USER, mfa: EXEMPT)
|
|
@@ -191,7 +201,9 @@ mfaChallengeVerify(input: MfaChallengeVerifyInput!): MfaChallengeVerifyPayload!
|
|
|
191
201
|
|
|
192
202
|
### `mfaFactorUnenroll`
|
|
193
203
|
|
|
194
|
-
|
|
204
|
+
Removes one of the caller's factors. Removing a verified factor needs an `AAL2` session, and
|
|
205
|
+
otherwise returns `MFA_REQUIRED`. A user the MFA policy requires cannot remove their last verified
|
|
206
|
+
factor (`VALIDATION_ERROR`).
|
|
195
207
|
|
|
196
208
|
```graphql
|
|
197
209
|
mfaFactorUnenroll(input: MfaFactorUnenrollInput!): MfaFactorUnenrollPayload! @auth(only: USER, mfa: EXEMPT)
|
|
@@ -203,54 +215,37 @@ mfaFactorUnenroll(input: MfaFactorUnenrollInput!): MfaFactorUnenrollPayload! @au
|
|
|
203
215
|
|
|
204
216
|
```graphql
|
|
205
217
|
"""
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
thrown. Use these to drive client-side UX (e.g. show "invalid password"
|
|
209
|
-
vs "email not confirmed" messages) — do not parse the `message` string.
|
|
218
|
+
The code in `extensions.code` of an error an auth operation returns. Branch on the code, not on
|
|
219
|
+
the message.
|
|
210
220
|
"""
|
|
211
221
|
enum AuthErrorCode {
|
|
212
|
-
"""The
|
|
222
|
+
"""The email address or password is wrong."""
|
|
213
223
|
INVALID_CREDENTIALS
|
|
214
|
-
"""
|
|
215
|
-
The user's email address has not yet been confirmed via the verification link.
|
|
216
|
-
"""
|
|
224
|
+
"""The email address is not confirmed."""
|
|
217
225
|
EMAIL_NOT_CONFIRMED
|
|
218
|
-
"""No user
|
|
226
|
+
"""No user matches."""
|
|
219
227
|
USER_NOT_FOUND
|
|
220
|
-
"""A user with the
|
|
228
|
+
"""A user with the email address already exists."""
|
|
221
229
|
USER_ALREADY_EXISTS
|
|
222
|
-
"""
|
|
223
|
-
The provided password does not meet the strength requirements enforced by Supabase Auth.
|
|
224
|
-
"""
|
|
230
|
+
"""The password does not meet the strength rules."""
|
|
225
231
|
WEAK_PASSWORD
|
|
226
|
-
"""
|
|
227
|
-
The provided token is invalid (malformed, signature mismatch, or not issued by this server).
|
|
228
|
-
"""
|
|
232
|
+
"""The token or code is invalid."""
|
|
229
233
|
INVALID_TOKEN
|
|
230
|
-
"""The
|
|
234
|
+
"""The token, code or MFA challenge has expired."""
|
|
231
235
|
TOKEN_EXPIRED
|
|
232
|
-
"""
|
|
233
|
-
The MFA challenge verification failed (wrong code or rejected challenge).
|
|
234
|
-
"""
|
|
236
|
+
"""The authenticator code is wrong, or the challenge was rejected."""
|
|
235
237
|
MFA_CHALLENGE_FAILED
|
|
236
|
-
"""
|
|
237
|
-
The specified MFA factor was not found, or does not belong to the caller.
|
|
238
|
-
"""
|
|
238
|
+
"""No factor with the ID belongs to the caller."""
|
|
239
239
|
MFA_FACTOR_NOT_FOUND
|
|
240
240
|
"""
|
|
241
|
-
The
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
with `mfaChallengeVerify` and retry with the returned session.
|
|
241
|
+
The operation needs an `AAL2` session: the caller is staff, belongs to an organisation that
|
|
242
|
+
requires two-factor authentication, or is removing a verified factor or setting a password while
|
|
243
|
+
holding one. Verify a factor with `mfaChallengeVerify` and retry with the returned session.
|
|
245
244
|
"""
|
|
246
245
|
MFA_REQUIRED
|
|
247
|
-
"""
|
|
248
|
-
An error occurred while exchanging credentials with the upstream OAuth provider.
|
|
249
|
-
"""
|
|
246
|
+
"""The OAuth provider returned an error."""
|
|
250
247
|
OAUTH_PROVIDER_ERROR
|
|
251
|
-
"""
|
|
252
|
-
Too many requests; the operation has been rate-limited by Supabase Auth.
|
|
253
|
-
"""
|
|
248
|
+
"""Too many requests, or too many emails sent."""
|
|
254
249
|
RATE_LIMITED
|
|
255
250
|
}
|
|
256
251
|
```
|
|
@@ -259,20 +254,13 @@ enum AuthErrorCode {
|
|
|
259
254
|
|
|
260
255
|
```graphql
|
|
261
256
|
"""
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
`AAL1` means the session is authenticated with a single factor (password
|
|
266
|
-
or OAuth). `AAL2` means the session has additionally verified a TOTP
|
|
267
|
-
factor. The level is decoded from the session's access token; a call that
|
|
268
|
-
lifts a session from `AAL1` to `AAL2` goes through `mfaChallengeVerify`.
|
|
257
|
+
How many authentication factors a session has passed, as NIST 800-63 defines the levels. Read from
|
|
258
|
+
the session's access token.
|
|
269
259
|
"""
|
|
270
260
|
enum AuthenticatorAssuranceLevel {
|
|
271
|
-
"""
|
|
261
|
+
"""One factor: a password, an emailed code or an OAuth provider."""
|
|
272
262
|
AAL1
|
|
273
|
-
"""
|
|
274
|
-
Multi-factor authentication (a verified TOTP code on top of the first factor).
|
|
275
|
-
"""
|
|
263
|
+
"""Two factors: the first factor and a verified authenticator code."""
|
|
276
264
|
AAL2
|
|
277
265
|
}
|
|
278
266
|
```
|
|
@@ -280,15 +268,11 @@ enum AuthenticatorAssuranceLevel {
|
|
|
280
268
|
### `IdentityProvider`
|
|
281
269
|
|
|
282
270
|
```graphql
|
|
283
|
-
"""
|
|
284
|
-
Identity provider types — which upstream issued the credential the user
|
|
285
|
-
authenticated with. A `User` may have multiple `Identity` records (e.g.
|
|
286
|
-
linked Google + password).
|
|
287
|
-
"""
|
|
271
|
+
"""The provider that issued one of a user's identities."""
|
|
288
272
|
enum IdentityProvider {
|
|
289
|
-
"""Email
|
|
273
|
+
"""Email address."""
|
|
290
274
|
EMAIL
|
|
291
|
-
"""Google
|
|
275
|
+
"""Google."""
|
|
292
276
|
GOOGLE
|
|
293
277
|
}
|
|
294
278
|
```
|
|
@@ -296,12 +280,9 @@ enum IdentityProvider {
|
|
|
296
280
|
### `OAuthProvider`
|
|
297
281
|
|
|
298
282
|
```graphql
|
|
299
|
-
"""
|
|
300
|
-
OAuth providers supported for end-user authentication. Used by
|
|
301
|
-
`oauthAuthorize` to select the provider URL to redirect the user to.
|
|
302
|
-
"""
|
|
283
|
+
"""An OAuth provider a user can sign in with."""
|
|
303
284
|
enum OAuthProvider {
|
|
304
|
-
"""Google
|
|
285
|
+
"""Google."""
|
|
305
286
|
GOOGLE
|
|
306
287
|
}
|
|
307
288
|
```
|
|
@@ -309,12 +290,10 @@ enum OAuthProvider {
|
|
|
309
290
|
### `MfaFactorType`
|
|
310
291
|
|
|
311
292
|
```graphql
|
|
312
|
-
"""
|
|
313
|
-
MFA factor types. Time-based one-time passwords from an authenticator app are the only kind.
|
|
314
|
-
"""
|
|
293
|
+
"""The kind of an MFA factor."""
|
|
315
294
|
enum MfaFactorType {
|
|
316
295
|
"""
|
|
317
|
-
An authenticator app
|
|
296
|
+
An authenticator app that generates time-based one-time codes (RFC 6238).
|
|
318
297
|
"""
|
|
319
298
|
TOTP
|
|
320
299
|
}
|
|
@@ -324,16 +303,13 @@ enum MfaFactorType {
|
|
|
324
303
|
|
|
325
304
|
```graphql
|
|
326
305
|
"""
|
|
327
|
-
MFA factor
|
|
328
|
-
|
|
329
|
-
authenticator via `mfaChallengeVerify`, it transitions to `VERIFIED`.
|
|
306
|
+
Whether an MFA factor has been verified. A factor starts `UNVERIFIED` and becomes `VERIFIED` when
|
|
307
|
+
`mfaChallengeVerify` accepts a code from it.
|
|
330
308
|
"""
|
|
331
309
|
enum MfaFactorStatus {
|
|
332
|
-
"""
|
|
333
|
-
Factor has been enrolled but the user has not yet verified a delivered code.
|
|
334
|
-
"""
|
|
310
|
+
"""Enrolled, with no code verified yet."""
|
|
335
311
|
UNVERIFIED
|
|
336
|
-
"""
|
|
312
|
+
"""Verified and active."""
|
|
337
313
|
VERIFIED
|
|
338
314
|
}
|
|
339
315
|
```
|
|
@@ -341,15 +317,11 @@ enum MfaFactorStatus {
|
|
|
341
317
|
### `MfaState`
|
|
342
318
|
|
|
343
319
|
```graphql
|
|
344
|
-
"""
|
|
345
|
-
Whether a user has completed multi-factor authentication enrolment. `ENROLLED`
|
|
346
|
-
means at least one verified MFA factor exists for the user; `NOT_ENROLLED` means
|
|
347
|
-
none does. Shown beside a user in every dashboard list of users.
|
|
348
|
-
"""
|
|
320
|
+
"""Whether a user holds a verified MFA factor."""
|
|
349
321
|
enum MfaState {
|
|
350
|
-
"""The user holds at least one verified
|
|
322
|
+
"""The user holds at least one verified factor."""
|
|
351
323
|
ENROLLED
|
|
352
|
-
"""The user holds no verified
|
|
324
|
+
"""The user holds no verified factor."""
|
|
353
325
|
NOT_ENROLLED
|
|
354
326
|
}
|
|
355
327
|
```
|
|
@@ -358,26 +330,24 @@ enum MfaState {
|
|
|
358
330
|
|
|
359
331
|
```graphql
|
|
360
332
|
"""
|
|
361
|
-
|
|
362
|
-
identity-provider account. The same `User` may have several `Identity`
|
|
363
|
-
rows (e.g. a Google sign-in and a separately-enrolled email/password).
|
|
333
|
+
An account at an identity provider that a user signs in with. A user can have several.
|
|
364
334
|
"""
|
|
365
335
|
type Identity {
|
|
366
|
-
"""
|
|
336
|
+
"""The ID of the identity."""
|
|
367
337
|
id: ID!
|
|
368
|
-
"""The
|
|
338
|
+
"""The provider that issued the identity."""
|
|
369
339
|
provider: IdentityProvider!
|
|
370
|
-
"""
|
|
371
|
-
Email address associated with this identity, as reported by the provider.
|
|
372
|
-
"""
|
|
340
|
+
"""The email address the provider reports. Null when it reports none."""
|
|
373
341
|
email: String
|
|
374
342
|
"""
|
|
375
|
-
|
|
343
|
+
The claims and profile fields the provider reports. The shape depends on the provider.
|
|
376
344
|
"""
|
|
377
345
|
identityData: JSON
|
|
378
|
-
"""When
|
|
346
|
+
"""When the identity was created."""
|
|
379
347
|
createdAt: DateTime!
|
|
380
|
-
"""
|
|
348
|
+
"""
|
|
349
|
+
When the user last signed in with this identity. Null when they never have.
|
|
350
|
+
"""
|
|
381
351
|
lastSignInAt: DateTime
|
|
382
352
|
}
|
|
383
353
|
```
|
|
@@ -386,26 +356,21 @@ type Identity {
|
|
|
386
356
|
|
|
387
357
|
```graphql
|
|
388
358
|
"""
|
|
389
|
-
An
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
A user may have multiple enrolled factors; `mfaChallengeCreate` selects
|
|
393
|
-
which factor to challenge against. Unenrolment is via `mfaFactorUnenroll`;
|
|
394
|
-
removing a `VERIFIED` factor needs an `AAL2` session, and removing the last
|
|
395
|
-
one leaves an MFA-required user gated to setup on their next request.
|
|
359
|
+
An authenticator app a user has enrolled as a second factor. Removing a `VERIFIED` factor needs an
|
|
360
|
+
`AAL2` session, and a user the MFA policy requires cannot remove their last `VERIFIED` factor.
|
|
396
361
|
"""
|
|
397
362
|
type MfaFactor {
|
|
398
|
-
"""
|
|
363
|
+
"""The ID of the factor."""
|
|
399
364
|
id: ID!
|
|
400
|
-
"""The
|
|
365
|
+
"""The kind of factor."""
|
|
401
366
|
factorType: MfaFactorType!
|
|
367
|
+
"""Whether the factor has been verified."""
|
|
368
|
+
status: MfaFactorStatus!
|
|
402
369
|
"""
|
|
403
|
-
|
|
370
|
+
The name of the factor, shown on the account page. Null when none is set.
|
|
404
371
|
"""
|
|
405
|
-
status: MfaFactorStatus!
|
|
406
|
-
"""User-assigned name for this factor (e.g. "Work phone")."""
|
|
407
372
|
friendlyName: String
|
|
408
|
-
"""When
|
|
373
|
+
"""When the factor was enrolled."""
|
|
409
374
|
createdAt: DateTime!
|
|
410
375
|
}
|
|
411
376
|
```
|
|
@@ -414,15 +379,13 @@ type MfaFactor {
|
|
|
414
379
|
|
|
415
380
|
```graphql
|
|
416
381
|
"""
|
|
417
|
-
What an authenticator app needs to add a
|
|
418
|
-
|
|
382
|
+
What an authenticator app needs to add a new TOTP factor. Returned once, by `mfaFactorEnroll`; the
|
|
383
|
+
secret is never returned again.
|
|
419
384
|
"""
|
|
420
385
|
type MfaTotpEnrollment {
|
|
421
|
-
"""
|
|
422
|
-
SVG markup of the QR code that encodes `uri`, for scanning with an authenticator app.
|
|
423
|
-
"""
|
|
386
|
+
"""SVG markup of a QR code that encodes `uri`."""
|
|
424
387
|
qrCode: String!
|
|
425
|
-
"""The base32 secret, for
|
|
388
|
+
"""The base32 secret, for an authenticator that cannot scan."""
|
|
426
389
|
secret: String!
|
|
427
390
|
"""The `otpauth://` URI the QR code encodes."""
|
|
428
391
|
uri: String!
|
|
@@ -436,7 +399,7 @@ type MfaTotpEnrollment {
|
|
|
436
399
|
enum MfaRequirementReason {
|
|
437
400
|
"""The user is a super admin or a client manager."""
|
|
438
401
|
STAFF
|
|
439
|
-
"""The user belongs to an organisation
|
|
402
|
+
"""The user belongs to an organisation with `requireMfa` on."""
|
|
440
403
|
ORGANIZATION
|
|
441
404
|
}
|
|
442
405
|
```
|
|
@@ -444,22 +407,19 @@ enum MfaRequirementReason {
|
|
|
444
407
|
### `UserMfaStatus`
|
|
445
408
|
|
|
446
409
|
```graphql
|
|
447
|
-
"""
|
|
448
|
-
Where a user stands against the multi-factor authentication policy.
|
|
449
|
-
`required` and `reason` come from the policy (staff status and organisation
|
|
450
|
-
membership); `enrolled` is whether a `VERIFIED` TOTP factor exists;
|
|
451
|
-
`satisfied` is whether the requirement is met by the token this status was
|
|
452
|
-
read with: not required, or a session at `AAL2`.
|
|
453
|
-
"""
|
|
410
|
+
"""Where a user stands against the multi-factor authentication policy."""
|
|
454
411
|
type UserMfaStatus {
|
|
455
|
-
"""
|
|
412
|
+
"""
|
|
413
|
+
Whether the user must hold an `AAL2` session to use the fields the policy guards.
|
|
414
|
+
"""
|
|
456
415
|
required: Boolean!
|
|
457
|
-
"""Why the user is required
|
|
416
|
+
"""Why the user is required. Null when `required` is false."""
|
|
458
417
|
reason: MfaRequirementReason
|
|
459
|
-
"""Whether the user holds at least one `VERIFIED`
|
|
418
|
+
"""Whether the user holds at least one `VERIFIED` factor."""
|
|
460
419
|
enrolled: Boolean!
|
|
461
420
|
"""
|
|
462
|
-
Whether the
|
|
421
|
+
Whether the session this status was read with meets the requirement: the user is not required,
|
|
422
|
+
or the session is at `AAL2`.
|
|
463
423
|
"""
|
|
464
424
|
satisfied: Boolean!
|
|
465
425
|
}
|
|
@@ -469,62 +429,48 @@ type UserMfaStatus {
|
|
|
469
429
|
|
|
470
430
|
```graphql
|
|
471
431
|
"""
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
resolves to null.
|
|
475
|
-
|
|
476
|
-
Carries the user's identifiers, all linked identity providers, all
|
|
477
|
-
enrolled MFA factors, where the user stands against the MFA policy, and
|
|
478
|
-
convenience navigation into the user's pending invitations and joined
|
|
479
|
-
organisations. The `appMetadata` blob is server-managed and read-only;
|
|
480
|
-
`userMetadata` is user-editable.
|
|
481
|
-
|
|
482
|
-
The `user` query is exempt from the MFA policy so a gated user can read
|
|
483
|
-
their status; `invitations` and `organizations` are enforced fields, so
|
|
484
|
-
they error with `MFA_REQUIRED` for a user the policy gates.
|
|
432
|
+
A signed-in user. `invitations` and `organizations` return `MFA_REQUIRED` for a user the MFA
|
|
433
|
+
policy gates; the other fields stay readable.
|
|
485
434
|
"""
|
|
486
435
|
type User {
|
|
487
|
-
"""
|
|
436
|
+
"""The ID of the user."""
|
|
488
437
|
id: ID!
|
|
489
|
-
"""
|
|
490
|
-
User's primary email address. Null only for users created via certain admin paths without a confirmed email.
|
|
491
|
-
"""
|
|
438
|
+
"""The user's primary email address. Null when the account has none."""
|
|
492
439
|
email: String
|
|
493
|
-
"""When the user
|
|
440
|
+
"""When the user confirmed their email address. Null until confirmed."""
|
|
494
441
|
emailConfirmedAt: DateTime
|
|
495
|
-
"""
|
|
442
|
+
"""The user's phone number, in E.164 format. Null when none is set."""
|
|
496
443
|
phone: String
|
|
497
|
-
"""When the user
|
|
444
|
+
"""When the user confirmed their phone number. Null until confirmed."""
|
|
498
445
|
phoneConfirmedAt: DateTime
|
|
499
|
-
"""
|
|
446
|
+
"""The identities the user signs in with."""
|
|
500
447
|
identities: [Identity!]!
|
|
501
|
-
"""
|
|
448
|
+
"""The user's MFA factors, verified or not."""
|
|
502
449
|
mfaFactors: [MfaFactor!]!
|
|
503
|
-
"""Where
|
|
450
|
+
"""Where the user stands against the multi-factor authentication policy."""
|
|
504
451
|
mfa: UserMfaStatus!
|
|
505
452
|
"""
|
|
506
|
-
Whether
|
|
507
|
-
|
|
453
|
+
Whether the user has chosen a password. False for an account created by an emailed code, an
|
|
454
|
+
invitation or Google until `passwordUpdate` sets one.
|
|
508
455
|
"""
|
|
509
456
|
passwordSet: Boolean!
|
|
510
457
|
"""
|
|
511
|
-
|
|
458
|
+
Metadata the server manages, such as provider claims and role flags. The user cannot change it.
|
|
512
459
|
"""
|
|
513
460
|
appMetadata: JSON
|
|
514
|
-
"""
|
|
461
|
+
"""Metadata the user can change, such as a display name and preferences."""
|
|
515
462
|
userMetadata: JSON
|
|
516
|
-
"""When
|
|
463
|
+
"""When the user was created."""
|
|
517
464
|
createdAt: DateTime!
|
|
518
|
-
"""When
|
|
465
|
+
"""When the user last changed."""
|
|
519
466
|
updatedAt: DateTime!
|
|
520
467
|
"""
|
|
521
|
-
|
|
468
|
+
The pending organisation invitations addressed to the user's email address.
|
|
522
469
|
"""
|
|
523
470
|
invitations(first: Int, after: String): ViewerInvitationConnection! @auth
|
|
524
471
|
"""
|
|
525
|
-
|
|
526
|
-
(case-insensitive substring)
|
|
527
|
-
`reverse`. Held to the MFA policy.
|
|
472
|
+
The organisations the user belongs to; for a staff caller, every organisation. `search` filters
|
|
473
|
+
by name (case-insensitive substring); `sortKey` and `reverse` set the order.
|
|
528
474
|
"""
|
|
529
475
|
organizations(first: Int, after: String, search: String, sortKey: OrganizationSortKeys = NAME, reverse: Boolean = false): OrganizationConnection! @auth
|
|
530
476
|
}
|
|
@@ -534,32 +480,20 @@ type User {
|
|
|
534
480
|
|
|
535
481
|
```graphql
|
|
536
482
|
"""
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
`
|
|
540
|
-
|
|
541
|
-
Pass `accessToken` in the `Authorization: Bearer <token>` header on
|
|
542
|
-
subsequent requests. When `accessToken` is near expiry, exchange
|
|
543
|
-
`refreshToken` for a fresh session via `sessionRefresh`. Sessions also
|
|
544
|
-
carry the current authenticator assurance level, decoded from
|
|
545
|
-
`accessToken`, and `user.mfa` says whether that level is enough.
|
|
483
|
+
The result of a sign-in: an access token, a refresh token, and when the access token expires.
|
|
484
|
+
Send `accessToken` as `Authorization: Bearer <token>`; exchange `refreshToken` through
|
|
485
|
+
`sessionRefresh` for a new session before the access token expires.
|
|
546
486
|
"""
|
|
547
487
|
type Session {
|
|
548
|
-
"""
|
|
488
|
+
"""The access token (a JWT) that authenticates API requests."""
|
|
549
489
|
accessToken: String!
|
|
550
|
-
"""
|
|
551
|
-
Refresh token used to obtain a new access token. Single-use; rotates on every refresh.
|
|
552
|
-
"""
|
|
490
|
+
"""The refresh token. Single-use: `sessionRefresh` returns a new one."""
|
|
553
491
|
refreshToken: String!
|
|
554
|
-
"""
|
|
555
|
-
When the access token expires (Supabase Auth issues 1-hour tokens by default).
|
|
556
|
-
"""
|
|
492
|
+
"""When the access token expires."""
|
|
557
493
|
expiresAt: DateTime!
|
|
558
|
-
"""The
|
|
494
|
+
"""The signed-in user."""
|
|
559
495
|
user: User!
|
|
560
|
-
"""
|
|
561
|
-
Current authenticator assurance level of this session, decoded from `accessToken`.
|
|
562
|
-
"""
|
|
496
|
+
"""The session's assurance level, read from `accessToken`."""
|
|
563
497
|
aal: AuthenticatorAssuranceLevel!
|
|
564
498
|
}
|
|
565
499
|
```
|
|
@@ -567,18 +501,16 @@ type Session {
|
|
|
567
501
|
### `SessionStartMethod`
|
|
568
502
|
|
|
569
503
|
```graphql
|
|
570
|
-
"""
|
|
571
|
-
How the user finishes an email-first sign-in started by `sessionStart`.
|
|
572
|
-
"""
|
|
504
|
+
"""How a user finishes a sign-in that `sessionStart` began."""
|
|
573
505
|
enum SessionStartMethod {
|
|
574
506
|
"""
|
|
575
|
-
The account has
|
|
507
|
+
The account has a password: call `sessionCreate` with it. No email is sent.
|
|
576
508
|
"""
|
|
577
509
|
PASSWORD
|
|
578
510
|
"""
|
|
579
|
-
A
|
|
580
|
-
|
|
581
|
-
|
|
511
|
+
A six-digit code and a link were emailed to the address, if it has an account. Finish with
|
|
512
|
+
`magicLinkVerify` or the link. An address with no account also answers `EMAIL_CODE` and is sent
|
|
513
|
+
nothing.
|
|
582
514
|
"""
|
|
583
515
|
EMAIL_CODE
|
|
584
516
|
}
|
|
@@ -587,14 +519,12 @@ enum SessionStartMethod {
|
|
|
587
519
|
### `SessionStartInput`
|
|
588
520
|
|
|
589
521
|
```graphql
|
|
590
|
-
"""
|
|
591
|
-
Input for `sessionStart` — begin signing in with an email address alone.
|
|
592
|
-
"""
|
|
522
|
+
"""The input of `sessionStart`."""
|
|
593
523
|
input SessionStartInput {
|
|
594
|
-
"""
|
|
524
|
+
"""The email address to sign in with."""
|
|
595
525
|
email: String!
|
|
596
526
|
"""
|
|
597
|
-
URL the emailed
|
|
527
|
+
The URL the emailed link returns to. Must match a registered redirect URL.
|
|
598
528
|
"""
|
|
599
529
|
redirectUrl: String
|
|
600
530
|
}
|
|
@@ -604,12 +534,9 @@ input SessionStartInput {
|
|
|
604
534
|
|
|
605
535
|
```graphql
|
|
606
536
|
"""
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
address has set a password. An address without a password and an unknown address
|
|
611
|
-
both answer `EMAIL_CODE`, though the response time can differ because only a
|
|
612
|
-
registered address is sent an email.
|
|
537
|
+
The result of `sessionStart`. `method` reveals whether a registered address has a password. An
|
|
538
|
+
address without one and an unknown address both answer `EMAIL_CODE`, though the response time can
|
|
539
|
+
differ because only a registered address is emailed.
|
|
613
540
|
"""
|
|
614
541
|
type SessionStartPayload {
|
|
615
542
|
"""How the user finishes signing in."""
|
|
@@ -620,11 +547,11 @@ type SessionStartPayload {
|
|
|
620
547
|
### `SessionCreateInput`
|
|
621
548
|
|
|
622
549
|
```graphql
|
|
623
|
-
"""
|
|
550
|
+
"""The input of `sessionCreate`."""
|
|
624
551
|
input SessionCreateInput {
|
|
625
|
-
"""
|
|
552
|
+
"""The user's email address."""
|
|
626
553
|
email: String!
|
|
627
|
-
"""
|
|
554
|
+
"""The user's password."""
|
|
628
555
|
password: String!
|
|
629
556
|
}
|
|
630
557
|
```
|
|
@@ -633,15 +560,12 @@ input SessionCreateInput {
|
|
|
633
560
|
|
|
634
561
|
```graphql
|
|
635
562
|
"""
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
or `enrolled` is true, complete sign-in with `mfaChallengeCreate` and
|
|
640
|
-
`mfaChallengeVerify` (or `mfaFactorEnroll` first when nothing is enrolled)
|
|
641
|
-
before calling guarded fields.
|
|
563
|
+
The result of `sessionCreate`. The session is at `AAL1`: when `session.user.mfa.required` or
|
|
564
|
+
`enrolled` is true, finish with `mfaChallengeCreate` and `mfaChallengeVerify` (or `mfaFactorEnroll`
|
|
565
|
+
first when nothing is enrolled) before calling guarded fields.
|
|
642
566
|
"""
|
|
643
567
|
type SessionCreatePayload {
|
|
644
|
-
"""The
|
|
568
|
+
"""The new session."""
|
|
645
569
|
session: Session
|
|
646
570
|
}
|
|
647
571
|
```
|
|
@@ -649,11 +573,9 @@ type SessionCreatePayload {
|
|
|
649
573
|
### `SessionRefreshInput`
|
|
650
574
|
|
|
651
575
|
```graphql
|
|
652
|
-
"""
|
|
653
|
-
Input for `sessionRefresh` — exchange a refresh token for a fresh session.
|
|
654
|
-
"""
|
|
576
|
+
"""The input of `sessionRefresh`."""
|
|
655
577
|
input SessionRefreshInput {
|
|
656
|
-
"""
|
|
578
|
+
"""The refresh token of the current session."""
|
|
657
579
|
refreshToken: String!
|
|
658
580
|
}
|
|
659
581
|
```
|
|
@@ -661,11 +583,9 @@ input SessionRefreshInput {
|
|
|
661
583
|
### `SessionRefreshPayload`
|
|
662
584
|
|
|
663
585
|
```graphql
|
|
664
|
-
"""
|
|
586
|
+
"""The result of `sessionRefresh`."""
|
|
665
587
|
type SessionRefreshPayload {
|
|
666
|
-
"""
|
|
667
|
-
The refreshed session, with a new `accessToken` and rotated `refreshToken`.
|
|
668
|
-
"""
|
|
588
|
+
"""The new session, with a new `accessToken` and `refreshToken`."""
|
|
669
589
|
session: Session
|
|
670
590
|
}
|
|
671
591
|
```
|
|
@@ -674,21 +594,18 @@ type SessionRefreshPayload {
|
|
|
674
594
|
|
|
675
595
|
```graphql
|
|
676
596
|
"""
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
Registration collects no password. The API creates the account with a
|
|
680
|
-
password it generates and never returns, and the user chooses their own
|
|
681
|
-
password after confirming the address.
|
|
597
|
+
The input of `accountCreate`. Registration takes no password: the user sets one with
|
|
598
|
+
`passwordUpdate` after confirming the address.
|
|
682
599
|
"""
|
|
683
600
|
input AccountCreateInput {
|
|
684
|
-
"""
|
|
601
|
+
"""The email address to register."""
|
|
685
602
|
email: String!
|
|
686
603
|
"""
|
|
687
|
-
URL the confirmation link returns to. Must match a registered redirect URL;
|
|
688
|
-
|
|
604
|
+
The URL the confirmation link returns to. Must match a registered redirect URL; otherwise the
|
|
605
|
+
link returns to the site URL.
|
|
689
606
|
"""
|
|
690
607
|
redirectUrl: String
|
|
691
|
-
"""
|
|
608
|
+
"""Metadata to store in the user's `userMetadata`."""
|
|
692
609
|
metadata: JSON
|
|
693
610
|
}
|
|
694
611
|
```
|
|
@@ -697,20 +614,15 @@ input AccountCreateInput {
|
|
|
697
614
|
|
|
698
615
|
```graphql
|
|
699
616
|
"""
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
nothing about whether the address already has an account. A new or unconfirmed
|
|
704
|
-
address is emailed a confirmation code and link; an address that already
|
|
705
|
-
belongs to a confirmed account is emailed a magic-link sign-in instead. An
|
|
706
|
-
address emailed inside Supabase Auth's minimum send interval also returns
|
|
707
|
-
true — the previous email's code and link are still valid.
|
|
708
|
-
|
|
709
|
-
Registration completes when the user confirms the address and sets a password
|
|
710
|
-
through `passwordUpdate`.
|
|
617
|
+
The result of `accountCreate`. The payload is the same whether or not the address has an account:
|
|
618
|
+
a new or unconfirmed address is emailed a confirmation code and link, and a confirmed account a
|
|
619
|
+
sign-in code and link.
|
|
711
620
|
"""
|
|
712
621
|
type AccountCreatePayload {
|
|
713
|
-
"""
|
|
622
|
+
"""
|
|
623
|
+
Whether the request succeeded. Also true when the address was emailed within the minimum send
|
|
624
|
+
interval; the earlier email's code and link stay valid.
|
|
625
|
+
"""
|
|
714
626
|
success: Boolean!
|
|
715
627
|
}
|
|
716
628
|
```
|
|
@@ -718,13 +630,11 @@ type AccountCreatePayload {
|
|
|
718
630
|
### `AccountVerifyEmailInput`
|
|
719
631
|
|
|
720
632
|
```graphql
|
|
721
|
-
"""
|
|
722
|
-
Input for `accountVerifyEmail` — exchange a verification token for a session.
|
|
723
|
-
"""
|
|
633
|
+
"""The input of `accountVerifyEmail`."""
|
|
724
634
|
input AccountVerifyEmailInput {
|
|
725
|
-
"""
|
|
635
|
+
"""The email address the code was sent to."""
|
|
726
636
|
email: String!
|
|
727
|
-
"""
|
|
637
|
+
"""The six-digit code from the email."""
|
|
728
638
|
token: String!
|
|
729
639
|
}
|
|
730
640
|
```
|
|
@@ -732,9 +642,9 @@ input AccountVerifyEmailInput {
|
|
|
732
642
|
### `AccountVerifyEmailPayload`
|
|
733
643
|
|
|
734
644
|
```graphql
|
|
735
|
-
"""
|
|
645
|
+
"""The result of `accountVerifyEmail`."""
|
|
736
646
|
type AccountVerifyEmailPayload {
|
|
737
|
-
"""
|
|
647
|
+
"""The session for the confirmed user."""
|
|
738
648
|
session: Session
|
|
739
649
|
}
|
|
740
650
|
```
|
|
@@ -742,11 +652,9 @@ type AccountVerifyEmailPayload {
|
|
|
742
652
|
### `AccountResendVerificationInput`
|
|
743
653
|
|
|
744
654
|
```graphql
|
|
745
|
-
"""
|
|
746
|
-
Input for `accountResendVerification` — resend the verification email to the same address.
|
|
747
|
-
"""
|
|
655
|
+
"""The input of `accountResendVerification`."""
|
|
748
656
|
input AccountResendVerificationInput {
|
|
749
|
-
"""
|
|
657
|
+
"""The email address to send the code to."""
|
|
750
658
|
email: String!
|
|
751
659
|
}
|
|
752
660
|
```
|
|
@@ -754,9 +662,9 @@ input AccountResendVerificationInput {
|
|
|
754
662
|
### `AccountResendVerificationPayload`
|
|
755
663
|
|
|
756
664
|
```graphql
|
|
757
|
-
"""
|
|
665
|
+
"""The result of `accountResendVerification`."""
|
|
758
666
|
type AccountResendVerificationPayload {
|
|
759
|
-
"""Whether the
|
|
667
|
+
"""Whether the email was sent."""
|
|
760
668
|
success: Boolean!
|
|
761
669
|
}
|
|
762
670
|
```
|
|
@@ -764,21 +672,17 @@ type AccountResendVerificationPayload {
|
|
|
764
672
|
### `OAuthAuthorizeInput`
|
|
765
673
|
|
|
766
674
|
```graphql
|
|
767
|
-
"""
|
|
768
|
-
Input for `oauthAuthorize` — request the upstream provider's authorisation URL.
|
|
769
|
-
"""
|
|
675
|
+
"""The input of `oauthAuthorize`."""
|
|
770
676
|
input OAuthAuthorizeInput {
|
|
771
|
-
"""
|
|
677
|
+
"""The provider to sign in with."""
|
|
772
678
|
provider: OAuthProvider!
|
|
773
679
|
"""
|
|
774
|
-
URL the
|
|
775
|
-
|
|
776
|
-
|
|
680
|
+
The URL the provider returns the user to. Its host selects the tenant, and an unknown host
|
|
681
|
+
selects the default one. Outside `picked.app`, the user returns to the same path on the
|
|
682
|
+
dashboard's own origin.
|
|
777
683
|
"""
|
|
778
684
|
redirectUrl: String!
|
|
779
|
-
"""
|
|
780
|
-
Optional scopes to request from the provider, in addition to the defaults.
|
|
781
|
-
"""
|
|
685
|
+
"""Provider scopes to request in addition to the defaults."""
|
|
782
686
|
scopes: [String!]
|
|
783
687
|
}
|
|
784
688
|
```
|
|
@@ -786,9 +690,9 @@ input OAuthAuthorizeInput {
|
|
|
786
690
|
### `OAuthAuthorizePayload`
|
|
787
691
|
|
|
788
692
|
```graphql
|
|
789
|
-
"""
|
|
693
|
+
"""The result of `oauthAuthorize`."""
|
|
790
694
|
type OAuthAuthorizePayload {
|
|
791
|
-
"""URL to
|
|
695
|
+
"""The provider URL to send the user to."""
|
|
792
696
|
url: String
|
|
793
697
|
}
|
|
794
698
|
```
|
|
@@ -796,13 +700,11 @@ type OAuthAuthorizePayload {
|
|
|
796
700
|
### `OAuthCallbackInput`
|
|
797
701
|
|
|
798
702
|
```graphql
|
|
799
|
-
"""
|
|
800
|
-
Input for `oauthCallback` — exchange the provider's authorisation code for a session.
|
|
801
|
-
"""
|
|
703
|
+
"""The input of `oauthCallback`."""
|
|
802
704
|
input OAuthCallbackInput {
|
|
803
|
-
"""
|
|
705
|
+
"""The provider that issued the code."""
|
|
804
706
|
provider: OAuthProvider!
|
|
805
|
-
"""
|
|
707
|
+
"""The authorisation code from the provider's redirect."""
|
|
806
708
|
code: String!
|
|
807
709
|
}
|
|
808
710
|
```
|
|
@@ -810,9 +712,9 @@ input OAuthCallbackInput {
|
|
|
810
712
|
### `OAuthCallbackPayload`
|
|
811
713
|
|
|
812
714
|
```graphql
|
|
813
|
-
"""
|
|
715
|
+
"""The result of `oauthCallback`."""
|
|
814
716
|
type OAuthCallbackPayload {
|
|
815
|
-
"""
|
|
717
|
+
"""The session for the signed-in user."""
|
|
816
718
|
session: Session
|
|
817
719
|
}
|
|
818
720
|
```
|
|
@@ -820,17 +722,15 @@ type OAuthCallbackPayload {
|
|
|
820
722
|
### `OAuthConsentClient`
|
|
821
723
|
|
|
822
724
|
```graphql
|
|
823
|
-
"""
|
|
824
|
-
OAuth client info returned with an in-flight consent authorisation request.
|
|
825
|
-
"""
|
|
725
|
+
"""The OAuth client that asks for a user's consent."""
|
|
826
726
|
type OAuthConsentClient {
|
|
827
|
-
"""
|
|
727
|
+
"""The client ID."""
|
|
828
728
|
id: String!
|
|
829
|
-
"""
|
|
729
|
+
"""The client's display name."""
|
|
830
730
|
name: String!
|
|
831
|
-
"""
|
|
731
|
+
"""The client's homepage. Null when not set."""
|
|
832
732
|
uri: String
|
|
833
|
-
"""
|
|
733
|
+
"""The URL of the client's logo. Null when not set."""
|
|
834
734
|
logoUri: String
|
|
835
735
|
}
|
|
836
736
|
```
|
|
@@ -838,23 +738,19 @@ type OAuthConsentClient {
|
|
|
838
738
|
### `OAuthConsentDetails`
|
|
839
739
|
|
|
840
740
|
```graphql
|
|
841
|
-
"""
|
|
842
|
-
Details of an in-flight OAuth consent authorisation request. Returned by
|
|
843
|
-
`oauthConsentDetails` when the dashboard renders the consent prompt; the
|
|
844
|
-
client uses `oauthConsentApprove` or `oauthConsentDeny` to resolve it.
|
|
845
|
-
"""
|
|
741
|
+
"""An OAuth authorisation request waiting for the user's consent."""
|
|
846
742
|
type OAuthConsentDetails {
|
|
847
743
|
"""
|
|
848
|
-
|
|
744
|
+
The ID of the request, for `oauthConsentApprove` or `oauthConsentDeny`.
|
|
849
745
|
"""
|
|
850
746
|
authorizationId: String!
|
|
851
|
-
"""The
|
|
747
|
+
"""The client that asks for access."""
|
|
852
748
|
client: OAuthConsentClient!
|
|
853
|
-
"""
|
|
749
|
+
"""The signed-in user's email address."""
|
|
854
750
|
userEmail: String!
|
|
855
|
-
"""
|
|
751
|
+
"""The scopes the client asks for, separated by spaces."""
|
|
856
752
|
scope: String!
|
|
857
|
-
"""Always
|
|
753
|
+
"""Always null."""
|
|
858
754
|
redirectUrl: String @deprecated(reason: "Use OAuthConsentDetailsPayload.redirectUrl.")
|
|
859
755
|
}
|
|
860
756
|
```
|
|
@@ -862,9 +758,9 @@ type OAuthConsentDetails {
|
|
|
862
758
|
### `OAuthConsentDetailsInput`
|
|
863
759
|
|
|
864
760
|
```graphql
|
|
865
|
-
"""
|
|
761
|
+
"""The input of `oauthConsentDetails`."""
|
|
866
762
|
input OAuthConsentDetailsInput {
|
|
867
|
-
"""The `authorization_id` query parameter
|
|
763
|
+
"""The `authorization_id` query parameter of the consent URL."""
|
|
868
764
|
authorizationId: String!
|
|
869
765
|
}
|
|
870
766
|
```
|
|
@@ -873,22 +769,17 @@ input OAuthConsentDetailsInput {
|
|
|
873
769
|
|
|
874
770
|
```graphql
|
|
875
771
|
"""
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
consent prompt, then call `oauthConsentApprove` or `oauthConsentDeny`.
|
|
880
|
-
|
|
881
|
-
`redirectUrl` is set when the user has already consented to this client for
|
|
882
|
-
these scopes. Reading the authorisation approves it — the authorisation code is
|
|
883
|
-
already minted and the prompt must be skipped. Send the user to this URL.
|
|
772
|
+
The result of `oauthConsentDetails`. Exactly one field is set: `details` when the user has not
|
|
773
|
+
yet consented to the client for these scopes, and `redirectUrl` when they have. In that case the
|
|
774
|
+
read itself approves the request: skip the prompt and send the user to `redirectUrl`.
|
|
884
775
|
"""
|
|
885
776
|
type OAuthConsentDetailsPayload {
|
|
886
777
|
"""
|
|
887
|
-
|
|
778
|
+
The request to show on the consent prompt. Null when `redirectUrl` is set.
|
|
888
779
|
"""
|
|
889
780
|
details: OAuthConsentDetails
|
|
890
781
|
"""
|
|
891
|
-
Where to send the user when consent was already
|
|
782
|
+
Where to send the user when consent was already given. Null when `details` is set.
|
|
892
783
|
"""
|
|
893
784
|
redirectUrl: String
|
|
894
785
|
}
|
|
@@ -897,9 +788,9 @@ type OAuthConsentDetailsPayload {
|
|
|
897
788
|
### `OAuthConsentApproveInput`
|
|
898
789
|
|
|
899
790
|
```graphql
|
|
900
|
-
"""
|
|
791
|
+
"""The input of `oauthConsentApprove`."""
|
|
901
792
|
input OAuthConsentApproveInput {
|
|
902
|
-
"""The
|
|
793
|
+
"""The ID of the request to approve."""
|
|
903
794
|
authorizationId: String!
|
|
904
795
|
}
|
|
905
796
|
```
|
|
@@ -907,9 +798,9 @@ input OAuthConsentApproveInput {
|
|
|
907
798
|
### `OAuthConsentDenyInput`
|
|
908
799
|
|
|
909
800
|
```graphql
|
|
910
|
-
"""
|
|
801
|
+
"""The input of `oauthConsentDeny`."""
|
|
911
802
|
input OAuthConsentDenyInput {
|
|
912
|
-
"""The
|
|
803
|
+
"""The ID of the request to deny."""
|
|
913
804
|
authorizationId: String!
|
|
914
805
|
}
|
|
915
806
|
```
|
|
@@ -917,9 +808,9 @@ input OAuthConsentDenyInput {
|
|
|
917
808
|
### `OAuthConsentActionPayload`
|
|
918
809
|
|
|
919
810
|
```graphql
|
|
920
|
-
"""
|
|
811
|
+
"""The result of `oauthConsentApprove` and `oauthConsentDeny`."""
|
|
921
812
|
type OAuthConsentActionPayload {
|
|
922
|
-
"""
|
|
813
|
+
"""Where to send the user after the decision."""
|
|
923
814
|
redirectUrl: String!
|
|
924
815
|
}
|
|
925
816
|
```
|
|
@@ -927,14 +818,12 @@ type OAuthConsentActionPayload {
|
|
|
927
818
|
### `MagicLinkSendInput`
|
|
928
819
|
|
|
929
820
|
```graphql
|
|
930
|
-
"""
|
|
931
|
-
Input for `magicLinkSend` — send a one-time sign-in link to the given email.
|
|
932
|
-
"""
|
|
821
|
+
"""The input of `magicLinkSend`."""
|
|
933
822
|
input MagicLinkSendInput {
|
|
934
|
-
"""
|
|
823
|
+
"""The email address to send the code to."""
|
|
935
824
|
email: String!
|
|
936
825
|
"""
|
|
937
|
-
URL
|
|
826
|
+
The URL the emailed link returns to. Must match a registered redirect URL.
|
|
938
827
|
"""
|
|
939
828
|
redirectUrl: String
|
|
940
829
|
}
|
|
@@ -943,9 +832,12 @@ input MagicLinkSendInput {
|
|
|
943
832
|
### `MagicLinkSendPayload`
|
|
944
833
|
|
|
945
834
|
```graphql
|
|
946
|
-
"""
|
|
835
|
+
"""The result of `magicLinkSend`."""
|
|
947
836
|
type MagicLinkSendPayload {
|
|
948
|
-
"""
|
|
837
|
+
"""
|
|
838
|
+
Always true: an address with no account, or one emailed within the minimum send interval, also
|
|
839
|
+
answers true.
|
|
840
|
+
"""
|
|
949
841
|
success: Boolean!
|
|
950
842
|
}
|
|
951
843
|
```
|
|
@@ -953,13 +845,11 @@ type MagicLinkSendPayload {
|
|
|
953
845
|
### `MagicLinkVerifyInput`
|
|
954
846
|
|
|
955
847
|
```graphql
|
|
956
|
-
"""
|
|
957
|
-
Input for `magicLinkVerify` — exchange the magic-link token for a session.
|
|
958
|
-
"""
|
|
848
|
+
"""The input of `magicLinkVerify`."""
|
|
959
849
|
input MagicLinkVerifyInput {
|
|
960
|
-
"""
|
|
850
|
+
"""The email address the code was sent to."""
|
|
961
851
|
email: String!
|
|
962
|
-
"""
|
|
852
|
+
"""The six-digit code from the email."""
|
|
963
853
|
token: String!
|
|
964
854
|
}
|
|
965
855
|
```
|
|
@@ -967,9 +857,9 @@ input MagicLinkVerifyInput {
|
|
|
967
857
|
### `MagicLinkVerifyPayload`
|
|
968
858
|
|
|
969
859
|
```graphql
|
|
970
|
-
"""
|
|
860
|
+
"""The result of `magicLinkVerify`."""
|
|
971
861
|
type MagicLinkVerifyPayload {
|
|
972
|
-
"""
|
|
862
|
+
"""The session for the signed-in user."""
|
|
973
863
|
session: Session
|
|
974
864
|
}
|
|
975
865
|
```
|
|
@@ -977,9 +867,7 @@ type MagicLinkVerifyPayload {
|
|
|
977
867
|
### `EmailLinkType`
|
|
978
868
|
|
|
979
869
|
```graphql
|
|
980
|
-
"""
|
|
981
|
-
The emails whose link signs the recipient in through `emailLinkVerify`.
|
|
982
|
-
"""
|
|
870
|
+
"""The kind of email a link passed to `emailLinkVerify` came from."""
|
|
983
871
|
enum EmailLinkType {
|
|
984
872
|
"""A password-reset email."""
|
|
985
873
|
RECOVERY
|
|
@@ -995,13 +883,11 @@ enum EmailLinkType {
|
|
|
995
883
|
### `EmailLinkVerifyInput`
|
|
996
884
|
|
|
997
885
|
```graphql
|
|
998
|
-
"""
|
|
999
|
-
Input for `emailLinkVerify` — exchange the token hash from an emailed link for a session.
|
|
1000
|
-
"""
|
|
886
|
+
"""The input of `emailLinkVerify`."""
|
|
1001
887
|
input EmailLinkVerifyInput {
|
|
1002
|
-
"""The `token_hash`
|
|
888
|
+
"""The `token_hash` parameter of the emailed link."""
|
|
1003
889
|
tokenHash: String!
|
|
1004
|
-
"""
|
|
890
|
+
"""The kind of email the link came from."""
|
|
1005
891
|
type: EmailLinkType!
|
|
1006
892
|
}
|
|
1007
893
|
```
|
|
@@ -1009,9 +895,9 @@ input EmailLinkVerifyInput {
|
|
|
1009
895
|
### `EmailLinkVerifyPayload`
|
|
1010
896
|
|
|
1011
897
|
```graphql
|
|
1012
|
-
"""
|
|
898
|
+
"""The result of `emailLinkVerify`."""
|
|
1013
899
|
type EmailLinkVerifyPayload {
|
|
1014
|
-
"""
|
|
900
|
+
"""The session for the signed-in user."""
|
|
1015
901
|
session: Session
|
|
1016
902
|
}
|
|
1017
903
|
```
|
|
@@ -1019,13 +905,11 @@ type EmailLinkVerifyPayload {
|
|
|
1019
905
|
### `PasswordResetSendInput`
|
|
1020
906
|
|
|
1021
907
|
```graphql
|
|
1022
|
-
"""
|
|
1023
|
-
Input for `passwordResetSend` — send a password-reset email to the given address.
|
|
1024
|
-
"""
|
|
908
|
+
"""The input of `passwordResetSend`."""
|
|
1025
909
|
input PasswordResetSendInput {
|
|
1026
|
-
"""
|
|
910
|
+
"""The email address to send the reset email to."""
|
|
1027
911
|
email: String!
|
|
1028
|
-
"""URL to
|
|
912
|
+
"""The URL the reset link returns to, where the user sets a new password."""
|
|
1029
913
|
redirectUrl: String
|
|
1030
914
|
}
|
|
1031
915
|
```
|
|
@@ -1033,9 +917,9 @@ input PasswordResetSendInput {
|
|
|
1033
917
|
### `PasswordResetSendPayload`
|
|
1034
918
|
|
|
1035
919
|
```graphql
|
|
1036
|
-
"""
|
|
920
|
+
"""The result of `passwordResetSend`."""
|
|
1037
921
|
type PasswordResetSendPayload {
|
|
1038
|
-
"""Whether the
|
|
922
|
+
"""Whether the request succeeded."""
|
|
1039
923
|
success: Boolean!
|
|
1040
924
|
}
|
|
1041
925
|
```
|
|
@@ -1043,16 +927,9 @@ type PasswordResetSendPayload {
|
|
|
1043
927
|
### `PasswordUpdateInput`
|
|
1044
928
|
|
|
1045
929
|
```graphql
|
|
1046
|
-
"""
|
|
1047
|
-
Input for `passwordUpdate` — change the authenticated user's password.
|
|
1048
|
-
The current password is not required; the operation is gated by an
|
|
1049
|
-
authenticated session instead.
|
|
1050
|
-
|
|
1051
|
-
Updating the password ends every other active session for this user. The
|
|
1052
|
-
caller's own session stays valid at the assurance level it holds.
|
|
1053
|
-
"""
|
|
930
|
+
"""The input of `passwordUpdate`. Every field is required."""
|
|
1054
931
|
input PasswordUpdateInput {
|
|
1055
|
-
"""
|
|
932
|
+
"""The new password. Must meet the password strength rules."""
|
|
1056
933
|
newPassword: String!
|
|
1057
934
|
}
|
|
1058
935
|
```
|
|
@@ -1060,11 +937,11 @@ input PasswordUpdateInput {
|
|
|
1060
937
|
### `PasswordUpdatePayload`
|
|
1061
938
|
|
|
1062
939
|
```graphql
|
|
1063
|
-
"""
|
|
940
|
+
"""The result of `passwordUpdate`."""
|
|
1064
941
|
type PasswordUpdatePayload {
|
|
1065
|
-
"""Whether the password
|
|
942
|
+
"""Whether the password changed."""
|
|
1066
943
|
success: Boolean!
|
|
1067
|
-
"""
|
|
944
|
+
"""Always null; the caller's session stays valid."""
|
|
1068
945
|
session: Session
|
|
1069
946
|
}
|
|
1070
947
|
```
|
|
@@ -1072,16 +949,11 @@ type PasswordUpdatePayload {
|
|
|
1072
949
|
### `MfaFactorEnrollInput`
|
|
1073
950
|
|
|
1074
951
|
```graphql
|
|
1075
|
-
"""
|
|
1076
|
-
Input for `mfaFactorEnroll` — enrol an authenticator app. The caller's
|
|
1077
|
-
unverified TOTP factors are deleted first, except the two newest enrolled in the
|
|
1078
|
-
last minute, which setups open elsewhere may still be showing. An unverified
|
|
1079
|
-
factor that holds the `friendlyName` given is deleted however new it is.
|
|
1080
|
-
"""
|
|
952
|
+
"""The input of `mfaFactorEnroll`."""
|
|
1081
953
|
input MfaFactorEnrollInput {
|
|
1082
954
|
"""
|
|
1083
|
-
|
|
1084
|
-
|
|
955
|
+
The name of the factor, shown on the account page. Defaults to "Authenticator app", numbered
|
|
956
|
+
("Authenticator app 2", …) past the names the caller's factors hold.
|
|
1085
957
|
"""
|
|
1086
958
|
friendlyName: String
|
|
1087
959
|
}
|
|
@@ -1090,11 +962,15 @@ input MfaFactorEnrollInput {
|
|
|
1090
962
|
### `MfaFactorEnrollPayload`
|
|
1091
963
|
|
|
1092
964
|
```graphql
|
|
1093
|
-
"""
|
|
965
|
+
"""
|
|
966
|
+
The result of `mfaFactorEnroll`. `totp` carries the factor's secret, which is returned only here.
|
|
967
|
+
"""
|
|
1094
968
|
type MfaFactorEnrollPayload {
|
|
1095
|
-
"""
|
|
969
|
+
"""
|
|
970
|
+
The new factor, `UNVERIFIED` until `mfaChallengeVerify` accepts a code from it.
|
|
971
|
+
"""
|
|
1096
972
|
factor: MfaFactor!
|
|
1097
|
-
"""What
|
|
973
|
+
"""What an authenticator app needs to add the factor."""
|
|
1098
974
|
totp: MfaTotpEnrollment!
|
|
1099
975
|
}
|
|
1100
976
|
```
|
|
@@ -1102,11 +978,9 @@ type MfaFactorEnrollPayload {
|
|
|
1102
978
|
### `MfaChallengeCreateInput`
|
|
1103
979
|
|
|
1104
980
|
```graphql
|
|
1105
|
-
"""
|
|
1106
|
-
Input for `mfaChallengeCreate` — open a challenge against an enrolled factor.
|
|
1107
|
-
"""
|
|
981
|
+
"""The input of `mfaChallengeCreate`."""
|
|
1108
982
|
input MfaChallengeCreateInput {
|
|
1109
|
-
"""ID of the
|
|
983
|
+
"""The ID of the factor to challenge."""
|
|
1110
984
|
factorId: ID!
|
|
1111
985
|
}
|
|
1112
986
|
```
|
|
@@ -1114,9 +988,9 @@ input MfaChallengeCreateInput {
|
|
|
1114
988
|
### `MfaChallengeCreatePayload`
|
|
1115
989
|
|
|
1116
990
|
```graphql
|
|
1117
|
-
"""
|
|
991
|
+
"""The result of `mfaChallengeCreate`."""
|
|
1118
992
|
type MfaChallengeCreatePayload {
|
|
1119
|
-
"""ID of the
|
|
993
|
+
"""The ID of the challenge, for `mfaChallengeVerify`."""
|
|
1120
994
|
challengeId: ID!
|
|
1121
995
|
"""When the challenge stops accepting codes."""
|
|
1122
996
|
expiresAt: DateTime!
|
|
@@ -1126,15 +1000,13 @@ type MfaChallengeCreatePayload {
|
|
|
1126
1000
|
### `MfaChallengeVerifyInput`
|
|
1127
1001
|
|
|
1128
1002
|
```graphql
|
|
1129
|
-
"""
|
|
1130
|
-
Input for `mfaChallengeVerify` — submit the current code from the authenticator app.
|
|
1131
|
-
"""
|
|
1003
|
+
"""The input of `mfaChallengeVerify`."""
|
|
1132
1004
|
input MfaChallengeVerifyInput {
|
|
1133
|
-
"""ID of the
|
|
1005
|
+
"""The ID of the factor."""
|
|
1134
1006
|
factorId: ID!
|
|
1135
|
-
"""ID of the challenge
|
|
1007
|
+
"""The ID of the challenge."""
|
|
1136
1008
|
challengeId: ID!
|
|
1137
|
-
"""
|
|
1009
|
+
"""The six-digit code from the authenticator app."""
|
|
1138
1010
|
code: String!
|
|
1139
1011
|
}
|
|
1140
1012
|
```
|
|
@@ -1142,12 +1014,11 @@ input MfaChallengeVerifyInput {
|
|
|
1142
1014
|
### `MfaChallengeVerifyPayload`
|
|
1143
1015
|
|
|
1144
1016
|
```graphql
|
|
1145
|
-
"""
|
|
1146
|
-
Payload returned by `mfaChallengeVerify`. The returned session carries rotated
|
|
1147
|
-
tokens at `AAL2`; the user's other sessions are left alone.
|
|
1148
|
-
"""
|
|
1017
|
+
"""The result of `mfaChallengeVerify`."""
|
|
1149
1018
|
type MfaChallengeVerifyPayload {
|
|
1150
|
-
"""
|
|
1019
|
+
"""
|
|
1020
|
+
The caller's session at `AAL2`, with a new `accessToken` and `refreshToken`.
|
|
1021
|
+
"""
|
|
1151
1022
|
session: Session
|
|
1152
1023
|
}
|
|
1153
1024
|
```
|
|
@@ -1155,13 +1026,9 @@ type MfaChallengeVerifyPayload {
|
|
|
1155
1026
|
### `MfaFactorUnenrollInput`
|
|
1156
1027
|
|
|
1157
1028
|
```graphql
|
|
1158
|
-
"""
|
|
1159
|
-
Input for `mfaFactorUnenroll` — remove an enrolled MFA factor. Removing a
|
|
1160
|
-
`VERIFIED` factor needs an `AAL2` session; an `AAL1` session is refused with
|
|
1161
|
-
`MFA_REQUIRED`.
|
|
1162
|
-
"""
|
|
1029
|
+
"""The input of `mfaFactorUnenroll`."""
|
|
1163
1030
|
input MfaFactorUnenrollInput {
|
|
1164
|
-
"""ID of the
|
|
1031
|
+
"""The ID of the factor to remove."""
|
|
1165
1032
|
factorId: ID!
|
|
1166
1033
|
}
|
|
1167
1034
|
```
|
|
@@ -1169,9 +1036,9 @@ input MfaFactorUnenrollInput {
|
|
|
1169
1036
|
### `MfaFactorUnenrollPayload`
|
|
1170
1037
|
|
|
1171
1038
|
```graphql
|
|
1172
|
-
"""
|
|
1039
|
+
"""The result of `mfaFactorUnenroll`."""
|
|
1173
1040
|
type MfaFactorUnenrollPayload {
|
|
1174
|
-
"""Whether the factor was
|
|
1041
|
+
"""Whether the factor was removed."""
|
|
1175
1042
|
success: Boolean!
|
|
1176
1043
|
}
|
|
1177
1044
|
```
|