com.suibari.nagi.registerPushSubscription
Schema Diff
+27 -13
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
}