ai.newnal.illi.account.exchangeCode
Schema Diff
+1 -1
Compatibility Analysis
Backward Compatible
No changes detected.
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"main": {
5
-
"description": "Exchange the one-time code from a client=native sign-in (delivered to the app at …/native/callback?code=…, 60 s, single use) for a session token, sent afterwards as Authorization: Bearer on every call and on /events (D-45). The code is bound to the code_challenge the app sent when it started the sign-in; codeVerifier proves it is the same app (D-76, PKCE-style S256), which stops a code obtained for another account from being injected into the app.",
5
+
"description": "Exchange the one-time code from a client=native sign-in (delivered to the app at …/native/callback?code=…, 60 s, single use) for a session token, sent afterwards as Authorization: Bearer on every call and on /events. The code is bound to the code_challenge the app sent when it started the sign-in; codeVerifier proves it is the same app (PKCE-style S256), which stops a code obtained for another account from being injected into the app.",
6
6
"errors": [
7
7
{
8
8
"name": "InvalidCode"
9
9
},
10
10
{
11
11
"name": "RateLimitExceeded"
12
12
}
13
13
],
14
14
"input": {
15
15
"encoding": "application/json",
16
16
"schema": {
17
17
"properties": {
18
18
"code": {
19
19
"maxLength": 128,
20
20
"type": "string"
21
21
},
22
22
"codeVerifier": {
23
23
"description": "The random secret (RFC 7636 code verifier: 43-128 characters of A-Z a-z 0-9 - . _ ~) whose base64url(SHA-256) the app sent as code_challenge to /oauth/login or account.parent.startOAuth.",
24
24
"maxLength": 128,
25
25
"minLength": 43,
26
26
"type": "string"
27
27
}
28
28
},
29
29
"required": [
30
30
"code",
31
31
"codeVerifier"
32
32
],
33
33
"type": "object"
34
34
}
35
35
},
36
36
"output": {
37
37
"encoding": "application/json",
38
38
"schema": {
39
39
"properties": {
40
40
"app": {
41
41
"knownValues": [
42
42
"family",
43
43
"device"
44
44
],
45
45
"type": "string"
46
46
},
47
47
"did": {
48
48
"format": "did",
49
49
"type": "string"
50
50
},
51
51
"expiresAt": {
52
52
"format": "datetime",
53
53
"type": "string"
54
54
},
55
55
"token": {
56
56
"type": "string"
57
57
}
58
58
},
59
59
"required": [
60
60
"token",
61
61
"did",
62
62
"app",
63
63
"expiresAt"
64
64
],
65
65
"type": "object"
66
66
}
67
67
},
68
68
"type": "procedure"
69
69
}
70
70
},
71
71
"id": "ai.newnal.illi.account.exchangeCode",
72
72
"lexicon": 1
73
73
}