org.passingreads.book.event

passingreads.org

Schema Diff

+99 -5

From

CID
bafyreibt4hy7osw...
Indexed At
2026-05-20 06:06 UTC
View this version

To

CID
bafyreihmn6sjqcd...
Indexed At
2026-09-10 16:07 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

5 breaking changes, 55 non-breaking changes.

Breaking Changes (5)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "org.passingreads.book.event#giftAcceptance", src: "org.passingreads.book.event#giftAcceptance", tgt: "org.passingreads.book.event#giftAcceptance.gift", kind: "prop", name: Some("gift") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "org.passingreads.book.event#checkin", src: "org.passingreads.book.event#checkin", tgt: "org.passingreads.book.event#checkin.location", kind: "prop", name: Some("location") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "org.passingreads.book.event#gift", src: "org.passingreads.book.event#gift", tgt: "org.passingreads.book.event#gift.recipient", kind: "prop", name: Some("recipient") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "org.passingreads.book.event#drop", src: "org.passingreads.book.event#drop", tgt: "org.passingreads.book.event#drop.location", kind: "prop", name: Some("location") }
  • RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "org.passingreads.book.event:body", src: "org.passingreads.book.event:body", tgt: "org.passingreads.book.event:body.location", kind: "prop", name: Some("location") }
Non-Breaking Changes (55)
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#checkin" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#checkin.location" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#checkin.location:variant0" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#checkin.location:variant1" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#drop" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#drop.location" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#drop.location:variant0" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#drop.location:variant1" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#find" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#find.location" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#find.location:variant0" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#find.location:variant1" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#gift" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#gift.location" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#gift.location:variant0" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#gift.location:variant1" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#gift.recipient" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#giftAcceptance" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#giftAcceptance.gift" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event:body.details" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event:body.details:variant0" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event:body.details:variant1" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event:body.details:variant2" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event:body.details:variant3" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event:body.details:variant4" }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#checkin.location", tgt: "org.passingreads.book.event#checkin.location:variant0", kind: "variant", name: Some("community.lexicon.location.hthree#main") }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#checkin.location", tgt: "org.passingreads.book.event#checkin.location:variant1", kind: "variant", name: Some("#osmLocation") }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#checkin.location:variant0", tgt: "community.lexicon.location.hthree#main", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#checkin.location:variant1", tgt: "org.passingreads.book.event#osmLocation", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#drop.location", tgt: "org.passingreads.book.event#drop.location:variant0", kind: "variant", name: Some("community.lexicon.location.hthree#main") }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#drop.location", tgt: "org.passingreads.book.event#drop.location:variant1", kind: "variant", name: Some("#osmLocation") }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#drop.location:variant0", tgt: "community.lexicon.location.hthree#main", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#drop.location:variant1", tgt: "org.passingreads.book.event#osmLocation", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#find", tgt: "org.passingreads.book.event#find.location", kind: "prop", name: Some("location") }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#find.location", tgt: "org.passingreads.book.event#find.location:variant0", kind: "variant", name: Some("community.lexicon.location.hthree#main") }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#find.location", tgt: "org.passingreads.book.event#find.location:variant1", kind: "variant", name: Some("#osmLocation") }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#find.location:variant0", tgt: "community.lexicon.location.hthree#main", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#find.location:variant1", tgt: "org.passingreads.book.event#osmLocation", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#gift", tgt: "org.passingreads.book.event#gift.location", kind: "prop", name: Some("location") }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#gift.location", tgt: "org.passingreads.book.event#gift.location:variant0", kind: "variant", name: Some("community.lexicon.location.hthree#main") }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#gift.location", tgt: "org.passingreads.book.event#gift.location:variant1", kind: "variant", name: Some("#osmLocation") }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#gift.location:variant0", tgt: "community.lexicon.location.hthree#main", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#gift.location:variant1", tgt: "org.passingreads.book.event#osmLocation", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#giftAcceptance.gift", tgt: "com.atproto.repo.strongRef#main", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event:body", tgt: "org.passingreads.book.event:body.details", kind: "prop", name: Some("details") }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event:body.details", tgt: "org.passingreads.book.event:body.details:variant0", kind: "variant", name: Some("#drop") }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event:body.details", tgt: "org.passingreads.book.event:body.details:variant1", kind: "variant", name: Some("#find") }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event:body.details", tgt: "org.passingreads.book.event:body.details:variant2", kind: "variant", name: Some("#checkin") }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event:body.details", tgt: "org.passingreads.book.event:body.details:variant3", kind: "variant", name: Some("#gift") }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event:body.details", tgt: "org.passingreads.book.event:body.details:variant4", kind: "variant", name: Some("#giftAcceptance") }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event:body.details:variant0", tgt: "org.passingreads.book.event#drop", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event:body.details:variant1", tgt: "org.passingreads.book.event#find", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event:body.details:variant2", tgt: "org.passingreads.book.event#checkin", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event:body.details:variant3", tgt: "org.passingreads.book.event#gift", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event:body.details:variant4", tgt: "org.passingreads.book.event#giftAcceptance", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "org.passingreads.book.event#checkin" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#checkin.location" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#checkin.location:variant0" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#checkin.location:variant1" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#drop" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#drop.location" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#drop.location:variant0" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#drop.location:variant1" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#find" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#find.location" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#find.location:variant0" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#find.location:variant1" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#gift" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#gift.location" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#gift.location:variant0" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#gift.location:variant1" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#gift.recipient" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#giftAcceptance" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#giftAcceptance.gift" }
  • AddedVertex { vertex_id: "org.passingreads.book.event:body.details" }
  • AddedVertex { vertex_id: "org.passingreads.book.event:body.details:variant0" }
  • AddedVertex { vertex_id: "org.passingreads.book.event:body.details:variant1" }
  • AddedVertex { vertex_id: "org.passingreads.book.event:body.details:variant2" }
  • AddedVertex { vertex_id: "org.passingreads.book.event:body.details:variant3" }
  • AddedVertex { vertex_id: "org.passingreads.book.event:body.details:variant4" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "org.passingreads.book.event#giftAcceptance", src: "org.passingreads.book.event#giftAcceptance", tgt: "org.passingreads.book.event#giftAcceptance.gift", kind: "prop", name: Some("gift") }
  • Breaking: RequiredEdgeAdded { vertex_id: "org.passingreads.book.event#checkin", src: "org.passingreads.book.event#checkin", tgt: "org.passingreads.book.event#checkin.location", kind: "prop", name: Some("location") }
  • Breaking: RequiredEdgeAdded { vertex_id: "org.passingreads.book.event#gift", src: "org.passingreads.book.event#gift", tgt: "org.passingreads.book.event#gift.recipient", kind: "prop", name: Some("recipient") }
  • Breaking: RequiredEdgeAdded { vertex_id: "org.passingreads.book.event#drop", src: "org.passingreads.book.event#drop", tgt: "org.passingreads.book.event#drop.location", kind: "prop", name: Some("location") }
  • Breaking: RequiredEdgeRemoved { vertex_id: "org.passingreads.book.event:body", src: "org.passingreads.book.event:body", tgt: "org.passingreads.book.event:body.location", kind: "prop", name: Some("location") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#checkin.location", tgt: "org.passingreads.book.event#checkin.location:variant0", kind: "variant", name: Some("community.lexicon.location.hthree#main") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#checkin.location", tgt: "org.passingreads.book.event#checkin.location:variant1", kind: "variant", name: Some("#osmLocation") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#checkin.location:variant0", tgt: "community.lexicon.location.hthree#main", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#checkin.location:variant1", tgt: "org.passingreads.book.event#osmLocation", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#drop.location", tgt: "org.passingreads.book.event#drop.location:variant0", kind: "variant", name: Some("community.lexicon.location.hthree#main") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#drop.location", tgt: "org.passingreads.book.event#drop.location:variant1", kind: "variant", name: Some("#osmLocation") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#drop.location:variant0", tgt: "community.lexicon.location.hthree#main", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#drop.location:variant1", tgt: "org.passingreads.book.event#osmLocation", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#find", tgt: "org.passingreads.book.event#find.location", kind: "prop", name: Some("location") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#find.location", tgt: "org.passingreads.book.event#find.location:variant0", kind: "variant", name: Some("community.lexicon.location.hthree#main") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#find.location", tgt: "org.passingreads.book.event#find.location:variant1", kind: "variant", name: Some("#osmLocation") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#find.location:variant0", tgt: "community.lexicon.location.hthree#main", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#find.location:variant1", tgt: "org.passingreads.book.event#osmLocation", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#gift", tgt: "org.passingreads.book.event#gift.location", kind: "prop", name: Some("location") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#gift.location", tgt: "org.passingreads.book.event#gift.location:variant0", kind: "variant", name: Some("community.lexicon.location.hthree#main") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#gift.location", tgt: "org.passingreads.book.event#gift.location:variant1", kind: "variant", name: Some("#osmLocation") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#gift.location:variant0", tgt: "community.lexicon.location.hthree#main", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#gift.location:variant1", tgt: "org.passingreads.book.event#osmLocation", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#giftAcceptance.gift", tgt: "com.atproto.repo.strongRef#main", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event:body", tgt: "org.passingreads.book.event:body.details", kind: "prop", name: Some("details") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event:body.details", tgt: "org.passingreads.book.event:body.details:variant0", kind: "variant", name: Some("#drop") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event:body.details", tgt: "org.passingreads.book.event:body.details:variant1", kind: "variant", name: Some("#find") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event:body.details", tgt: "org.passingreads.book.event:body.details:variant2", kind: "variant", name: Some("#checkin") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event:body.details", tgt: "org.passingreads.book.event:body.details:variant3", kind: "variant", name: Some("#gift") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event:body.details", tgt: "org.passingreads.book.event:body.details:variant4", kind: "variant", name: Some("#giftAcceptance") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event:body.details:variant0", tgt: "org.passingreads.book.event#drop", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event:body.details:variant1", tgt: "org.passingreads.book.event#find", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event:body.details:variant2", tgt: "org.passingreads.book.event#checkin", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event:body.details:variant3", tgt: "org.passingreads.book.event#gift", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event:body.details:variant4", tgt: "org.passingreads.book.event#giftAcceptance", kind: "ref", name: None }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 +
    "checkin": {
5 +
      "description": "The book has moved, but has not changed hands.",
6 +
      "properties": {
7 +
        "location": {
8 +
          "description": "Where the book is now (an h3 cell or an OSM place)",
9 +
          "refs": [
10 +
            "community.lexicon.location.hthree#main",
11 +
            "#osmLocation"
12 +
          ],
13 +
          "type": "union"
14 +
        }
15 +
      },
16 +
      "required": [
17 +
        "location"
18 +
      ],
19 +
      "type": "object"
20 +
    },
21 +
    "drop": {
22 +
      "description": "The book was left at a location for someone else to take.",
23 +
      "properties": {
24 +
        "location": {
25 +
          "description": "Where the book was left (an h3 cell or an OSM place)",
26 +
          "refs": [
27 +
            "community.lexicon.location.hthree#main",
28 +
            "#osmLocation"
29 +
          ],
30 +
          "type": "union"
31 +
        }
32 +
      },
33 +
      "required": [
34 +
        "location"
35 +
      ],
36 +
      "type": "object"
37 +
    },
38 +
    "find": {
39 +
      "description": "The book was picked up, and is now held by the actor.",
40 +
      "properties": {
41 +
        "location": {
42 +
          "description": "Where the book was picked up (an h3 cell or an OSM place), if the finder chose to record it",
43 +
          "refs": [
44 +
            "community.lexicon.location.hthree#main",
45 +
            "#osmLocation"
46 +
          ],
47 +
          "type": "union"
48 +
        }
49 +
      },
50 +
      "type": "object"
51 +
    },
52 +
    "gift": {
53 +
      "description": "The book was handed to a named person. It is theirs once they publish a #giftAcceptance.",
54 +
      "properties": {
55 +
        "location": {
56 +
          "description": "Where the handover happened, if the giver chose to record it.",
57 +
          "refs": [
58 +
            "community.lexicon.location.hthree#main",
59 +
            "#osmLocation"
60 +
          ],
61 +
          "type": "union"
62 +
        },
63 +
        "recipient": {
64 +
          "description": "The person the book was handed to, and the only one who may accept it.",
65 +
          "format": "did",
66 +
          "type": "string"
67 +
        }
68 +
      },
69 +
      "required": [
70 +
        "recipient"
71 +
      ],
72 +
      "type": "object"
73 +
    },
74 +
    "giftAcceptance": {
75 +
      "description": "The named recipient of a #gift has taken the book. Carries no signatures: the recipient need not hold the book's keypair, and the signed gift naming their repository is the authority instead.",
76 +
      "properties": {
77 +
        "gift": {
78 +
          "description": "The org.passingreads.book.event whose #gift is being accepted.",
79 +
          "ref": "com.atproto.repo.strongRef#main",
80 +
          "type": "ref"
81 +
        }
82 +
      },
83 +
      "required": [
84 +
        "gift"
85 +
      ],
86 +
      "type": "object"
87 +
    },
4 88
    "main": {
5 89
      "description": "The status of a book has changed.",
6 90
      "key": "tid",
7 91
      "record": {
8 92
        "properties": {
9 93
          "book": {
10 94
            "description": "The book that was dropped (a org.passingreads.book.registration)",
11 95
            "ref": "com.atproto.repo.strongRef#main",
12 96
            "type": "ref"
13 97
          },
98 +
          "details": {
99 +
            "description": "What happened to the book. Each member carries the fields that event type requires — notably whether a `location` is mandatory. Absent only on records written before this union existed, which carry `event` and a top-level `location` instead.",
100 +
            "refs": [
101 +
              "#drop",
102 +
              "#find",
103 +
              "#checkin",
104 +
              "#gift",
105 +
              "#giftAcceptance"
106 +
            ],
107 +
            "type": "union"
108 +
          },
14 109
          "event": {
15 -
            "description": "What event has occurred",
110 +
            "description": "DEPRECATED: superseded by `details`, and ignored whenever `details` is present. Retained so this lexicon still describes records written before the union existed.",
16 111
            "knownValues": [
17 112
              "org.passingreads.book.checkin",
18 113
              "org.passingreads.book.drop",
19 114
              "org.passingreads.book.find"
20 115
            ],
21 116
            "type": "string"
22 117
          },
23 118
          "location": {
24 -
            "description": "Where this event occurred (an h3 cell or an OSM place)",
119 +
            "description": "DEPRECATED: superseded by the `location` inside `details`, and ignored whenever `details` is present. Retained so this lexicon still describes records written before the union existed.",
25 120
            "refs": [
26 121
              "community.lexicon.location.hthree#main",
27 122
              "#osmLocation"
28 123
            ],
29 124
            "type": "union"
30 125
          },
31 126
          "occurredAt": {
32 127
            "description": "Client-declared timestamp of when the book was dropped",
33 128
            "format": "datetime",
34 129
            "type": "string"
35 130
          },
36 131
          "signatures": {
37 -
            "description": "Inline attestations binding this event to the book's keypair.",
132 +
            "description": "Inline attestations binding this event to the book's keypair. Empty only on a #giftAcceptance, whose authority is the referenced gift naming the accepting repository.",
38 133
            "items": {
39 134
              "ref": "org.passingreads.signature.book#main",
40 135
              "type": "ref"
41 136
            },
42 -
            "minLength": 1,
137 +
            "minLength": 0,
43 138
            "type": "array"
44 139
          }
45 140
        },
46 141
        "required": [
47 142
          "book",
48 -
          "location",
49 143
          "signatures",
50 144
          "occurredAt"
51 145
        ],
52 146
        "type": "object"
53 147
      },
54 148
      "type": "record"
55 149
    },
56 150
    "osmLocation": {
57 151
      "description": "A physical location from OpenStreetMap.",
58 152
      "properties": {
59 153
        "category": {
60 154
          "description": "The type of place (e.g., cafe, library, park).",
61 155
          "type": "string"
62 156
        },
63 157
        "name": {
64 158
          "description": "The name of the place from OpenStreetMap.",
65 159
          "type": "string"
66 160
        },
67 161
        "osmId": {
68 162
          "description": "The OpenStreetMap element ID in interoperable format: N (node), W (way), or R (relation) prefix followed by numeric ID. Example: N123456789",
69 163
          "type": "string"
70 164
        },
71 165
        "value": {
72 166
          "description": "The H3 cell index for proximity queries.",
73 167
          "type": "string"
74 168
        }
75 169
      },
76 170
      "required": [
77 171
        "osmId",
78 172
        "name",
79 173
        "value"
80 174
      ],
81 175
      "type": "object"
82 176
    }
83 177
  },
84 178
  "id": "org.passingreads.book.event",
85 179
  "lexicon": 1
86 180
}

Compare Other Versions

Lexicon Garden

@