com.suibari.nagi.registerPushSubscription

suibari.com

Schema Diff

+27 -13

From

CID
bafyreihdcjgzvcx...
Indexed At
2026-07-22 10:50 UTC
View this version

To

CID
bafyreib7kzcxdr6...
Indexed At
2026-08-22 09:06 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

8 breaking changes, 8 non-breaking changes.

Breaking Changes (8)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "com.suibari.nagi.registerPushSubscription#pushKeys", src: "com.suibari.nagi.registerPushSubscription#pushKeys", tgt: "com.suibari.nagi.registerPushSubscription#pushKeys.p256dh", kind: "prop", name: Some("p256dh") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "com.suibari.nagi.registerPushSubscription#pushKeys", src: "com.suibari.nagi.registerPushSubscription#pushKeys", tgt: "com.suibari.nagi.registerPushSubscription#pushKeys.auth", kind: "prop", name: Some("auth") }
  • RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "com.suibari.nagi.registerPushSubscription:input.keys", src: "com.suibari.nagi.registerPushSubscription:input.keys", tgt: "com.suibari.nagi.registerPushSubscription:input.keys.auth", kind: "prop", name: Some("auth") }
  • RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "com.suibari.nagi.registerPushSubscription:input.keys", src: "com.suibari.nagi.registerPushSubscription:input.keys", tgt: "com.suibari.nagi.registerPushSubscription:input.keys.p256dh", kind: "prop", name: Some("p256dh") }
  • RemovedVertex RemovedVertex { vertex_id: "com.suibari.nagi.registerPushSubscription:input.keys.auth" }
  • RemovedVertex RemovedVertex { vertex_id: "com.suibari.nagi.registerPushSubscription:input.keys.p256dh" }
  • KindChanged KindChanged { vertex_id: "com.suibari.nagi.registerPushSubscription:input.keys", old_kind: "object", new_kind: "ref" }
  • ConstraintAdded ConstraintAdded { vertex_id: "com.suibari.nagi.registerPushSubscription:input.keys", sort: "ref", value: "#pushKeys" }
Non-Breaking Changes (8)
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.registerPushSubscription#pushKeys" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.registerPushSubscription#pushKeys.auth" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.registerPushSubscription#pushKeys.p256dh" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.registerPushSubscription:input.capability" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.registerPushSubscription:input.installationId" }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.registerPushSubscription:input", tgt: "com.suibari.nagi.registerPushSubscription:input.capability", kind: "prop", name: Some("capability") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.registerPushSubscription:input", tgt: "com.suibari.nagi.registerPushSubscription:input.installationId", kind: "prop", name: Some("installationId") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.registerPushSubscription:input.keys", tgt: "com.suibari.nagi.registerPushSubscription#pushKeys", kind: "ref", name: None }

Migration Guidance

Removed Elements

  • RemovedVertex { vertex_id: "com.suibari.nagi.registerPushSubscription:input.keys.auth" }
  • RemovedVertex { vertex_id: "com.suibari.nagi.registerPushSubscription:input.keys.p256dh" }

Added Elements

  • AddedVertex { vertex_id: "com.suibari.nagi.registerPushSubscription#pushKeys" }
  • AddedVertex { vertex_id: "com.suibari.nagi.registerPushSubscription#pushKeys.auth" }
  • AddedVertex { vertex_id: "com.suibari.nagi.registerPushSubscription#pushKeys.p256dh" }
  • AddedVertex { vertex_id: "com.suibari.nagi.registerPushSubscription:input.capability" }
  • AddedVertex { vertex_id: "com.suibari.nagi.registerPushSubscription:input.installationId" }

Constraint Changes

  • ConstraintAdded ConstraintAdded { vertex_id: "com.suibari.nagi.registerPushSubscription:input.keys", sort: "ref", value: "#pushKeys" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "com.suibari.nagi.registerPushSubscription#pushKeys", src: "com.suibari.nagi.registerPushSubscription#pushKeys", tgt: "com.suibari.nagi.registerPushSubscription#pushKeys.p256dh", kind: "prop", name: Some("p256dh") }
  • Breaking: RequiredEdgeAdded { vertex_id: "com.suibari.nagi.registerPushSubscription#pushKeys", src: "com.suibari.nagi.registerPushSubscription#pushKeys", tgt: "com.suibari.nagi.registerPushSubscription#pushKeys.auth", kind: "prop", name: Some("auth") }
  • Breaking: RequiredEdgeRemoved { vertex_id: "com.suibari.nagi.registerPushSubscription:input.keys", src: "com.suibari.nagi.registerPushSubscription:input.keys", tgt: "com.suibari.nagi.registerPushSubscription:input.keys.auth", kind: "prop", name: Some("auth") }
  • Breaking: RequiredEdgeRemoved { vertex_id: "com.suibari.nagi.registerPushSubscription:input.keys", src: "com.suibari.nagi.registerPushSubscription:input.keys", tgt: "com.suibari.nagi.registerPushSubscription:input.keys.p256dh", kind: "prop", name: Some("p256dh") }
  • Breaking: KindChanged { vertex_id: "com.suibari.nagi.registerPushSubscription:input.keys", old_kind: "object", new_kind: "ref" }
  • Non-breaking: AddedEdge { src: "com.suibari.nagi.registerPushSubscription:input", tgt: "com.suibari.nagi.registerPushSubscription:input.capability", kind: "prop", name: Some("capability") }
  • Non-breaking: AddedEdge { src: "com.suibari.nagi.registerPushSubscription:input", tgt: "com.suibari.nagi.registerPushSubscription:input.installationId", kind: "prop", name: Some("installationId") }
  • Non-breaking: AddedEdge { src: "com.suibari.nagi.registerPushSubscription:input.keys", tgt: "com.suibari.nagi.registerPushSubscription#pushKeys", kind: "ref", name: None }
1 1
{
2 2
  "id": "com.suibari.nagi.registerPushSubscription",
3 3
  "defs": {
4 4
    "main": {
5 5
      "type": "procedure",
6 6
      "input": {
7 7
        "schema": {
8 8
          "type": "object",
9 9
          "required": [
10 10
            "endpoint",
11 11
            "keys"
12 12
          ],
13 13
          "properties": {
14 14
            "keys": {
15 -
              "type": "object",
16 -
              "required": [
17 -
                "p256dh",
18 -
                "auth"
19 -
              ],
20 -
              "properties": {
21 -
                "auth": {
22 -
                  "type": "string"
23 -
                },
24 -
                "p256dh": {
25 -
                  "type": "string"
26 -
                }
27 -
              }
15 +
              "ref": "#pushKeys",
16 +
              "type": "ref"
28 17
            },
29 18
            "endpoint": {
30 19
              "type": "string",
31 20
              "format": "uri"
21 +
            },
22 +
            "capability": {
23 +
              "type": "string",
24 +
              "maxLength": 128,
25 +
              "minLength": 32
26 +
            },
27 +
            "installationId": {
28 +
              "type": "string",
29 +
              "maxLength": 36,
30 +
              "minLength": 36
32 31
            }
33 32
          }
34 33
        },
35 34
        "encoding": "application/json"
36 35
      },
37 36
      "errors": [
38 37
        {
39 38
          "name": "AuthRequired"
40 39
        }
41 40
      ],
42 41
      "output": {
43 42
        "schema": {
44 43
          "type": "object",
45 44
          "required": [
46 45
            "registered"
47 46
          ],
48 47
          "properties": {
49 48
            "registered": {
50 49
              "type": "boolean"
51 50
            }
52 51
          }
53 52
        },
54 53
        "encoding": "application/json"
55 54
      }
55 +
    },
56 +
    "pushKeys": {
57 +
      "type": "object",
58 +
      "required": [
59 +
        "p256dh",
60 +
        "auth"
61 +
      ],
62 +
      "properties": {
63 +
        "auth": {
64 +
          "type": "string"
65 +
        },
66 +
        "p256dh": {
67 +
          "type": "string"
68 +
        }
69 +
      }
56 70
    }
57 71
  },
58 72
  "$type": "com.atproto.lexicon.schema",
59 73
  "lexicon": 1
60 74
}

Compare Other Versions

Lexicon Garden

@