cloud.substratum.passport.receipt
Schema Diff
+5 -9
Compatibility Analysis
Breaking Changes Detected
4 breaking changes, 2 non-breaking changes.
Breaking Changes (4)
- RemovedVertex RemovedVertex { vertex_id: "cloud.substratum.passport.receipt.access_control" }
- RemovedVertex RemovedVertex { vertex_id: "cloud.substratum.passport.receipt.access_control:items" }
- RemovedEdge RemovedEdge { src: "cloud.substratum.passport.receipt", tgt: "cloud.substratum.passport.receipt.access_control", kind: "prop", name: Some("access_control") }
- RemovedEdge RemovedEdge { src: "cloud.substratum.passport.receipt.access_control", tgt: "cloud.substratum.passport.receipt.access_control:items", kind: "items", name: None }
Non-Breaking Changes (2)
- AddedVertex AddedVertex { vertex_id: "cloud.substratum.passport.receipt.aclCid" }
- AddedEdge AddedEdge { src: "cloud.substratum.passport.receipt", tgt: "cloud.substratum.passport.receipt.aclCid", kind: "prop", name: Some("aclCid") }
Migration Guidance
Removed Elements
RemovedVertex { vertex_id: "cloud.substratum.passport.receipt.access_control" }RemovedVertex { vertex_id: "cloud.substratum.passport.receipt.access_control:items" }
Added Elements
AddedVertex { vertex_id: "cloud.substratum.passport.receipt.aclCid" }
Additional Notes
- Breaking: RemovedEdge { src: "cloud.substratum.passport.receipt", tgt: "cloud.substratum.passport.receipt.access_control", kind: "prop", name: Some("access_control") }
- Breaking: RemovedEdge { src: "cloud.substratum.passport.receipt.access_control", tgt: "cloud.substratum.passport.receipt.access_control:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "cloud.substratum.passport.receipt", tgt: "cloud.substratum.passport.receipt.aclCid", kind: "prop", name: Some("aclCid") }
1
1
{
2
2
"id": "cloud.substratum.passport.receipt",
3
3
"defs": {
4
4
"main": {
5
5
"type": "object",
6
6
"required": [
7
7
"version",
8
8
"assetCid",
9
9
"ownerDid",
10
10
"timestamp"
11
11
],
12
12
"properties": {
13
+
"aclCid": {
14
+
"type": "string",
15
+
"description": "CID of the share-ACL block in the drive metadata file (ADR 91). Never the ACL itself."
16
+
},
13
17
"version": {
14
18
"type": "string",
15
19
"description": "Schema version (e.g., '1.0.0')"
16
20
},
17
21
"assetCid": {
18
22
"type": "string",
19
23
"description": "The IPFS Content Identifier of the underlying asset"
20
24
},
21
25
"metadata": {
22
26
"ref": "cloud.substratum.passport.assetMetadata#main",
23
27
"type": "ref"
24
28
},
25
29
"ownerDid": {
26
30
"type": "string",
27
31
"format": "did",
28
32
"description": "The DID of the user who owns the asset"
29
33
},
30
34
"timestamp": {
31
35
"type": "string",
32
36
"format": "datetime",
33
37
"description": "ISO 8601 timestamp of the upload"
34
-
},
35
-
"access_control": {
36
-
"type": "array",
37
-
"items": {
38
-
"type": "string",
39
-
"format": "did"
40
-
},
41
-
"description": "List of DIDs authorized to access this asset."
42
38
}
43
39
},
44
-
"description": "Cryptographic binding between an asset CID and its owner/Access Control."
40
+
"description": "Cryptographic provenance binding between an asset CID and its owner. No grantee DIDs are stored here (ADR 91); the share ACL lives in the encrypted-at-rest metadata file on the private Swarm blockstore, referenced by aclCid."
45
41
}
46
42
},
47
43
"$type": "com.atproto.lexicon.schema",
48
44
"lexicon": 1
49
45
}