org.passingreads.book.registration

passingreads.org

Schema Diff

+10 -16

From

CID
bafyreieaworcc24...
Indexed At
2026-04-06 07:09 UTC
View this version

To

CID
bafyreigsr5tbqgf...
Indexed At
2026-04-29 04:17 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

6 breaking changes, 4 non-breaking changes.

Breaking Changes (6)
  • RemovedVertex RemovedVertex { vertex_id: "org.passingreads.book.registration:body.bookPub" }
  • RemovedVertex RemovedVertex { vertex_id: "org.passingreads.book.registration:body.bookSig" }
  • RemovedVertex RemovedVertex { vertex_id: "org.passingreads.book.registration:body.did" }
  • RemovedEdge RemovedEdge { src: "org.passingreads.book.registration:body", tgt: "org.passingreads.book.registration:body.bookPub", kind: "prop", name: Some("bookPub") }
  • RemovedEdge RemovedEdge { src: "org.passingreads.book.registration:body", tgt: "org.passingreads.book.registration:body.bookSig", kind: "prop", name: Some("bookSig") }
  • RemovedEdge RemovedEdge { src: "org.passingreads.book.registration:body", tgt: "org.passingreads.book.registration:body.did", kind: "prop", name: Some("did") }
Non-Breaking Changes (4)
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.registration:body.signatures" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.registration:body.signatures:items" }
  • AddedEdge AddedEdge { src: "org.passingreads.book.registration:body", tgt: "org.passingreads.book.registration:body.signatures", kind: "prop", name: Some("signatures") }
  • AddedEdge AddedEdge { src: "org.passingreads.book.registration:body.signatures", tgt: "org.passingreads.book.registration:body.signatures:items", kind: "items", name: None }

Migration Guidance

Removed Elements

  • RemovedVertex { vertex_id: "org.passingreads.book.registration:body.bookPub" }
  • RemovedVertex { vertex_id: "org.passingreads.book.registration:body.bookSig" }
  • RemovedVertex { vertex_id: "org.passingreads.book.registration:body.did" }

Added Elements

  • AddedVertex { vertex_id: "org.passingreads.book.registration:body.signatures" }
  • AddedVertex { vertex_id: "org.passingreads.book.registration:body.signatures:items" }

Additional Notes

  • Breaking: RemovedEdge { src: "org.passingreads.book.registration:body", tgt: "org.passingreads.book.registration:body.bookPub", kind: "prop", name: Some("bookPub") }
  • Breaking: RemovedEdge { src: "org.passingreads.book.registration:body", tgt: "org.passingreads.book.registration:body.bookSig", kind: "prop", name: Some("bookSig") }
  • Breaking: RemovedEdge { src: "org.passingreads.book.registration:body", tgt: "org.passingreads.book.registration:body.did", kind: "prop", name: Some("did") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.registration:body", tgt: "org.passingreads.book.registration:body.signatures", kind: "prop", name: Some("signatures") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.registration:body.signatures", tgt: "org.passingreads.book.registration:body.signatures:items", kind: "items", name: None }
1 1
{
2 2
  "id": "org.passingreads.book.registration",
3 3
  "defs": {
4 4
    "main": {
5 5
      "key": "any",
6 6
      "type": "record",
7 7
      "record": {
8 8
        "type": "object",
9 9
        "required": [
10 -
          "did",
11 10
          "bookId",
12 11
          "title",
13 12
          "authors",
14 13
          "publicationId",
15 -
          "bookPub",
16 -
          "bookSig",
14 +
          "signatures",
17 15
          "occurredAt"
18 16
        ],
19 17
        "properties": {
20 -
          "did": {
21 -
            "type": "string",
22 -
            "format": "did",
23 -
            "description": "The DID of the person who registered the book. Included here, so it's verifiable with the bookSig."
24 -
          },
25 18
          "cover": {
26 19
            "type": "blob",
27 20
            "accept": [
28 21
              "image/png",
29 22
              "image/jpeg"
30 23
            ],
31 24
            "maxSize": 1000000,
32 25
            "description": "Cover image of the book"
33 26
          },
34 27
          "title": {
35 28
            "type": "string",
36 29
            "maxLength": 512,
37 30
            "minLength": 1,
38 31
            "description": "The title of the book"
39 32
          },
40 33
          "bookId": {
41 34
            "type": "string",
42 35
            "description": "The book's ID (as defined on its QR Code)"
43 36
          },
44 37
          "authors": {
45 38
            "type": "array",
46 39
            "items": {
47 40
              "type": "string",
48 41
              "maxLength": 512,
49 42
              "minLength": 1
50 43
            },
51 44
            "description": "Authors of this book, in order of credit. An empty array implies a book of anonymous or unknown authorship."
52 45
          },
53 -
          "bookPub": {
54 -
            "type": "bytes",
55 -
            "description": "The MultiFormat public key of the book."
56 -
          },
57 -
          "bookSig": {
58 -
            "type": "bytes",
59 -
            "description": "The MultiFormat signature of this record, without this attribute, as created by the private key associated with the book."
60 -
          },
61 46
          "occurredAt": {
62 47
            "type": "string",
63 48
            "format": "datetime"
64 49
          },
50 +
          "signatures": {
51 +
            "type": "array",
52 +
            "items": {
53 +
              "ref": "org.passingreads.signature.book#main",
54 +
              "type": "ref"
55 +
            },
56 +
            "minLength": 1,
57 +
            "description": "Inline attestations binding this record to the book's keypair."
58 +
          },
65 59
          "aspectRatio": {
66 60
            "ref": "org.passingreads.defs#aspectRatio",
67 61
            "type": "ref",
68 62
            "description": "Aspect ratio of the cover image"
69 63
          },
70 64
          "publicationId": {
71 65
            "type": "string",
72 66
            "description": "The book's Open Library Edition ID"
73 67
          }
74 68
        }
75 69
      },
76 70
      "description": "A book that has been registered on PassingReads"
77 71
    }
78 72
  },
79 73
  "$type": "com.atproto.lexicon.schema",
80 74
  "lexicon": 1
81 75
}

Compare Other Versions

Lexicon Garden

@