zone.stratos.actor.enrollment
Schema Diff
+31 -2
Compatibility Analysis
Breaking Changes Detected
4 breaking changes, 6 non-breaking changes.
Breaking Changes (4)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "zone.stratos.actor.enrollment:body", src: "zone.stratos.actor.enrollment:body", tgt: "zone.stratos.actor.enrollment:body.attestation", kind: "prop", name: Some("attestation") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "zone.stratos.actor.enrollment:body", src: "zone.stratos.actor.enrollment:body", tgt: "zone.stratos.actor.enrollment:body.signingKey", kind: "prop", name: Some("signingKey") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "zone.stratos.actor.enrollment#serviceAttestation", src: "zone.stratos.actor.enrollment#serviceAttestation", tgt: "zone.stratos.actor.enrollment#serviceAttestation.sig", kind: "prop", name: Some("sig") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "zone.stratos.actor.enrollment#serviceAttestation", src: "zone.stratos.actor.enrollment#serviceAttestation", tgt: "zone.stratos.actor.enrollment#serviceAttestation.signingKey", kind: "prop", name: Some("signingKey") }
Non-Breaking Changes (6)
- AddedVertex AddedVertex { vertex_id: "zone.stratos.actor.enrollment#serviceAttestation" }
- AddedVertex AddedVertex { vertex_id: "zone.stratos.actor.enrollment#serviceAttestation.sig" }
- AddedVertex AddedVertex { vertex_id: "zone.stratos.actor.enrollment#serviceAttestation.signingKey" }
- AddedVertex AddedVertex { vertex_id: "zone.stratos.actor.enrollment:body.attestation" }
- AddedVertex AddedVertex { vertex_id: "zone.stratos.actor.enrollment:body.signingKey" }
- AddedEdge AddedEdge { src: "zone.stratos.actor.enrollment:body.attestation", tgt: "zone.stratos.actor.enrollment#serviceAttestation", kind: "ref", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "zone.stratos.actor.enrollment#serviceAttestation" }AddedVertex { vertex_id: "zone.stratos.actor.enrollment#serviceAttestation.sig" }AddedVertex { vertex_id: "zone.stratos.actor.enrollment#serviceAttestation.signingKey" }AddedVertex { vertex_id: "zone.stratos.actor.enrollment:body.attestation" }AddedVertex { vertex_id: "zone.stratos.actor.enrollment:body.signingKey" }
Additional Notes
- Breaking: RequiredEdgeAdded { vertex_id: "zone.stratos.actor.enrollment:body", src: "zone.stratos.actor.enrollment:body", tgt: "zone.stratos.actor.enrollment:body.attestation", kind: "prop", name: Some("attestation") }
- Breaking: RequiredEdgeAdded { vertex_id: "zone.stratos.actor.enrollment:body", src: "zone.stratos.actor.enrollment:body", tgt: "zone.stratos.actor.enrollment:body.signingKey", kind: "prop", name: Some("signingKey") }
- Breaking: RequiredEdgeAdded { vertex_id: "zone.stratos.actor.enrollment#serviceAttestation", src: "zone.stratos.actor.enrollment#serviceAttestation", tgt: "zone.stratos.actor.enrollment#serviceAttestation.sig", kind: "prop", name: Some("sig") }
- Breaking: RequiredEdgeAdded { vertex_id: "zone.stratos.actor.enrollment#serviceAttestation", src: "zone.stratos.actor.enrollment#serviceAttestation", tgt: "zone.stratos.actor.enrollment#serviceAttestation.signingKey", kind: "prop", name: Some("signingKey") }
- Non-breaking: AddedEdge { src: "zone.stratos.actor.enrollment:body.attestation", tgt: "zone.stratos.actor.enrollment#serviceAttestation", kind: "ref", name: None }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"main": {
5
-
"description": "A profile record indicating the user is enrolled in a Stratos service. Published to the user's PDS during OAuth enrollment for endpoint discovery by AppViews.",
6
-
"key": "literal:self",
5
+
"description": "A record indicating the user is enrolled in a Stratos service. Published to the user's PDS during OAuth enrollment for endpoint discovery by AppViews. Multiple enrollment records are supported — one per Stratos service.",
6
+
"key": "any",
7
7
"record": {
8
8
"properties": {
9
+
"attestation": {
10
+
"description": "Service attestation vouching for the user's enrollment, boundaries, and signing key.",
11
+
"ref": "#serviceAttestation",
12
+
"type": "ref"
13
+
},
9
14
"boundaries": {
10
15
"description": "List of boundaries the user has access to on this Stratos service.",
11
16
"items": {
12
17
"ref": "zone.stratos.boundary.defs#Domain",
13
18
"type": "ref"
14
19
},
15
20
"maxLength": 50,
16
21
"type": "array"
17
22
},
18
23
"createdAt": {
19
24
"description": "Timestamp when the enrollment was created.",
20
25
"format": "datetime",
21
26
"type": "string"
22
27
},
23
28
"service": {
24
29
"description": "The Stratos service endpoint URL where this user's private data is stored.",
25
30
"format": "uri",
26
31
"type": "string"
32
+
},
33
+
"signingKey": {
34
+
"description": "The user's P-256 public key as a did:key string, generated by the Stratos service for user-level record signing.",
35
+
"type": "string"
27
36
}
28
37
},
29
38
"required": [
30
39
"service",
40
+
"signingKey",
41
+
"attestation",
31
42
"createdAt"
32
43
],
33
44
"type": "object"
34
45
},
35
46
"type": "record"
47
+
},
48
+
"serviceAttestation": {
49
+
"description": "An attestation signed by the Stratos service key. The signed payload is DAG-CBOR encoded {boundaries, did, signingKey} with sorted keys.",
50
+
"properties": {
51
+
"sig": {
52
+
"description": "Raw signature bytes of the DAG-CBOR encoded attestation payload, signed by the service key.",
53
+
"type": "bytes"
54
+
},
55
+
"signingKey": {
56
+
"description": "The Stratos service's public key as a did:key string, used to verify the attestation signature.",
57
+
"type": "string"
58
+
}
59
+
},
60
+
"required": [
61
+
"sig",
62
+
"signingKey"
63
+
],
64
+
"type": "object"
36
65
}
37
66
},
38
67
"id": "zone.stratos.actor.enrollment",
39
68
"lexicon": 1
40
69
}