ai.newnal.illi.account.parent.startOAuth

illi-service.newnal.id

Schema Diff

+6 -0

From

CID
bafyreidffh33fz5...
Indexed At
2026-10-21 04:16 UTC
View this version

To

CID
bafyreiesxjdxszo...
Indexed At
2026-10-21 08:12 UTC
View this version

Compatibility Analysis

Backward Compatible

Backward compatible. 2 non-breaking changes.

Non-Breaking Changes (2)
  • AddedVertex AddedVertex { vertex_id: "ai.newnal.illi.account.parent.startOAuth:input.codeChallenge" }
  • AddedEdge AddedEdge { src: "ai.newnal.illi.account.parent.startOAuth:input", tgt: "ai.newnal.illi.account.parent.startOAuth:input.codeChallenge", kind: "prop", name: Some("codeChallenge") }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "ai.newnal.illi.account.parent.startOAuth:input.codeChallenge" }

Additional Notes

  • Non-breaking: AddedEdge { src: "ai.newnal.illi.account.parent.startOAuth:input", tgt: "ai.newnal.illi.account.parent.startOAuth:input.codeChallenge", kind: "prop", name: Some("codeChallenge") }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "main": {
5 5
      "description": "Start a parent's OAuth sign-in on the device through the PDN's own page (BFF), for an existing Newnal ID whose credentials are typed on the PDN page. Device-created accounts, and existing ones whose credentials the device app takes itself (D-73), sign in with account.parent.signIn instead (D-61, D-62). client=native ends with a one-time code on the device app's App Link for account.exchangeCode instead of a cookie (D-45).",
6 6
      "errors": [
7 7
        {
8 8
          "name": "ParentLimitReached"
9 9
        },
10 10
        {
11 11
          "name": "ParentAlreadyLinked"
12 12
        }
13 13
      ],
14 14
      "input": {
15 15
        "encoding": "application/json",
16 16
        "schema": {
17 17
          "properties": {
18 18
            "client": {
19 19
              "default": "web",
20 20
              "description": "web (default): the callback sets the device-app cookie. native: the callback redirects to the device app's App Link with a 60-second one-time code for account.exchangeCode.",
21 21
              "knownValues": [
22 22
                "web",
23 23
                "native"
24 24
              ],
25 25
              "type": "string"
26 26
            },
27 +
            "codeChallenge": {
28 +
              "description": "Required with client native (D-76): base64url(SHA-256(codeVerifier)) without padding. The one-time code the callback returns can only be exchanged with that verifier (account.exchangeCode).",
29 +
              "maxLength": 43,
30 +
              "minLength": 43,
31 +
              "type": "string"
32 +
            },
27 33
            "deviceId": {
28 34
              "maxLength": 64,
29 35
              "type": "string"
30 36
            },
31 37
            "mode": {
32 38
              "knownValues": [
33 39
                "create",
34 40
                "signIn"
35 41
              ],
36 42
              "type": "string"
37 43
            },
38 44
            "slot": {
39 45
              "maximum": 2,
40 46
              "minimum": 1,
41 47
              "type": "integer"
42 48
            }
43 49
          },
44 50
          "required": [
45 51
            "mode"
46 52
          ],
47 53
          "type": "object"
48 54
        }
49 55
      },
50 56
      "output": {
51 57
        "encoding": "application/json",
52 58
        "schema": {
53 59
          "properties": {
54 60
            "loginUrl": {
55 61
              "format": "uri",
56 62
              "type": "string"
57 63
            }
58 64
          },
59 65
          "required": [
60 66
            "loginUrl"
61 67
          ],
62 68
          "type": "object"
63 69
        }
64 70
      },
65 71
      "type": "procedure"
66 72
    }
67 73
  },
68 74
  "id": "ai.newnal.illi.account.parent.startOAuth",
69 75
  "lexicon": 1
70 76
}

Compare Other Versions

Lexicon Garden

@