io.atcr.hold.captain
Schema Diff
+5 -5
Compatibility Analysis
Breaking Changes Detected
2 breaking changes, 2 non-breaking changes.
Breaking Changes (2)
- RemovedVertex RemovedVertex { vertex_id: "io.atcr.hold.captain:body.provider" }
- RemovedEdge RemovedEdge { src: "io.atcr.hold.captain:body", tgt: "io.atcr.hold.captain:body.provider", kind: "prop", name: Some("provider") }
Non-Breaking Changes (2)
- AddedVertex AddedVertex { vertex_id: "io.atcr.hold.captain:body.successor" }
- AddedEdge AddedEdge { src: "io.atcr.hold.captain:body", tgt: "io.atcr.hold.captain:body.successor", kind: "prop", name: Some("successor") }
Migration Guidance
Removed Elements
RemovedVertex { vertex_id: "io.atcr.hold.captain:body.provider" }
Added Elements
AddedVertex { vertex_id: "io.atcr.hold.captain:body.successor" }
Additional Notes
- Breaking: RemovedEdge { src: "io.atcr.hold.captain:body", tgt: "io.atcr.hold.captain:body.provider", kind: "prop", name: Some("provider") }
- Non-breaking: AddedEdge { src: "io.atcr.hold.captain:body", tgt: "io.atcr.hold.captain:body.successor", kind: "prop", name: Some("successor") }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"main": {
5
5
"description": "Represents the hold's ownership and metadata. Stored as a singleton record at rkey 'self' in the hold's embedded PDS.",
6
6
"key": "literal:self",
7
7
"record": {
8
8
"properties": {
9
9
"allowAllCrew": {
10
10
"description": "Allow any authenticated user to register as crew",
11
11
"type": "boolean"
12
12
},
13
13
"deployedAt": {
14
14
"description": "RFC3339 timestamp of when the hold was deployed",
15
15
"format": "datetime",
16
16
"type": "string"
17
17
},
18
18
"enableBlueskyPosts": {
19
19
"description": "Enable Bluesky posts when manifests are pushed",
20
20
"type": "boolean"
21
21
},
22
22
"owner": {
23
23
"description": "DID of the hold owner",
24
24
"format": "did",
25
25
"type": "string"
26
26
},
27
-
"provider": {
28
-
"description": "Deployment provider (e.g., fly.io, aws, etc.)",
29
-
"maxLength": 64,
30
-
"type": "string"
31
-
},
32
27
"public": {
33
28
"description": "Whether this hold allows public blob reads (pulls) without authentication",
34
29
"type": "boolean"
35
30
},
36
31
"region": {
37
32
"description": "S3 region where blobs are stored",
38
33
"maxLength": 64,
39
34
"type": "string"
35
+
},
36
+
"successor": {
37
+
"description": "DID of successor hold for migration redirect",
38
+
"format": "did",
39
+
"type": "string"
40
40
}
41
41
},
42
42
"required": [
43
43
"owner",
44
44
"public",
45
45
"allowAllCrew",
46
46
"enableBlueskyPosts",
47
47
"deployedAt"
48
48
],
49
49
"type": "object"
50
50
},
51
51
"type": "record"
52
52
}
53
53
},
54
54
"id": "io.atcr.hold.captain",
55
55
"lexicon": 1
56
56
}