io.atcr.hold.captain

seamark.cr View official

Schema Diff

+13 -5

From

CID
bafyreibg3cq5gxh...
Indexed At
2026-02-18 19:28 UTC
View this version

To

CID
bafyreicyz353qop...
Indexed At
2026-03-19 20:28 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

2 breaking changes, 6 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 (6)
  • AddedVertex AddedVertex { vertex_id: "io.atcr.hold.captain:body.successor" }
  • AddedVertex AddedVertex { vertex_id: "io.atcr.hold.captain:body.supporterBadgeTiers" }
  • AddedVertex AddedVertex { vertex_id: "io.atcr.hold.captain:body.supporterBadgeTiers:items" }
  • AddedEdge AddedEdge { src: "io.atcr.hold.captain:body", tgt: "io.atcr.hold.captain:body.successor", kind: "prop", name: Some("successor") }
  • AddedEdge AddedEdge { src: "io.atcr.hold.captain:body", tgt: "io.atcr.hold.captain:body.supporterBadgeTiers", kind: "prop", name: Some("supporterBadgeTiers") }
  • AddedEdge AddedEdge { src: "io.atcr.hold.captain:body.supporterBadgeTiers", tgt: "io.atcr.hold.captain:body.supporterBadgeTiers:items", kind: "items", name: None }

Migration Guidance

Removed Elements

  • RemovedVertex { vertex_id: "io.atcr.hold.captain:body.provider" }

Added Elements

  • AddedVertex { vertex_id: "io.atcr.hold.captain:body.successor" }
  • AddedVertex { vertex_id: "io.atcr.hold.captain:body.supporterBadgeTiers" }
  • AddedVertex { vertex_id: "io.atcr.hold.captain:body.supporterBadgeTiers:items" }

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") }
  • Non-breaking: AddedEdge { src: "io.atcr.hold.captain:body", tgt: "io.atcr.hold.captain:body.supporterBadgeTiers", kind: "prop", name: Some("supporterBadgeTiers") }
  • Non-breaking: AddedEdge { src: "io.atcr.hold.captain:body.supporterBadgeTiers", tgt: "io.atcr.hold.captain:body.supporterBadgeTiers:items", kind: "items", name: None }
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 +
          },
41 +
          "supporterBadgeTiers": {
42 +
            "description": "Tier names that earn a supporter badge on user profiles",
43 +
            "items": {
44 +
              "maxLength": 64,
45 +
              "type": "string"
46 +
            },
47 +
            "type": "array"
40 48
          }
41 49
        },
42 50
        "required": [
43 51
          "owner",
44 52
          "public",
45 53
          "allowAllCrew",
46 54
          "enableBlueskyPosts",
47 55
          "deployedAt"
48 56
        ],
49 57
        "type": "object"
50 58
      },
51 59
      "type": "record"
52 60
    }
53 61
  },
54 62
  "id": "io.atcr.hold.captain",
55 63
  "lexicon": 1
56 64
}

Compare Other Versions

Lexicon Garden

@