social.dracome.work.defs

dracome.social

Schema Diff

+2 -0

From

CID
bafyreifstcjvio4...
Indexed At
2026-10-14 19:42 UTC
View this version

To

CID
bafyreianppxlnol...
Indexed At
2026-10-14 19:54 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

2 breaking changes, 0 non-breaking changes.

Breaking Changes (2)
  • ConstraintAdded ConstraintAdded { vertex_id: "social.dracome.work.defs#editionFormat", sort: "maxLength", value: "64" }
  • ConstraintAdded ConstraintAdded { vertex_id: "social.dracome.work.defs#workType", sort: "maxLength", value: "64" }

Migration Guidance

Constraint Changes

  • ConstraintAdded ConstraintAdded { vertex_id: "social.dracome.work.defs#workType", sort: "maxLength", value: "64" }
  • ConstraintAdded ConstraintAdded { vertex_id: "social.dracome.work.defs#editionFormat", sort: "maxLength", value: "64" }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "catalogIdentifier": {
5 5
      "description": "A single external identifier for a work or edition, such as an ISBN or an Open Library key.",
6 6
      "properties": {
7 7
        "scheme": {
8 8
          "description": "The identifier scheme: `isbn-10` (ISBN-10), `isbn-13` (ISBN-13), `ol-work` (Open Library work key, e.g. OL12345W), `ol-edition` (Open Library edition key, e.g. OL12345M), `bookhive` (BookHive proprietary ID), `dnb` (German National Library ID), `gnd` (GND authority record number), `viaf` (VIAF ID), `wikidata` (Wikidata entity), `oclc` (OCLC WorldCat ID).",
9 9
          "knownValues": [
10 10
            "isbn-10",
11 11
            "isbn-13",
12 12
            "ol-work",
13 13
            "ol-edition",
14 14
            "bookhive",
15 15
            "dnb",
16 16
            "gnd",
17 17
            "viaf",
18 18
            "wikidata",
19 19
            "oclc"
20 20
          ],
21 21
          "maxLength": 64,
22 22
          "type": "string"
23 23
        },
24 24
        "value": {
25 25
          "description": "The identifier value itself, formatted according to scheme (for example the raw ISBN digits, or an Open Library key such as OL12345W).",
26 26
          "maxLength": 256,
27 27
          "type": "string"
28 28
        }
29 29
      },
30 30
      "required": [
31 31
        "scheme",
32 32
        "value"
33 33
      ],
34 34
      "type": "object"
35 35
    },
36 36
    "catalogRef": {
37 37
      "description": "A portable reference to a work or edition in the Dracome catalog, intended to remain resolvable outside of Dracome's own systems.",
38 38
      "properties": {
39 39
        "dracomeKey": {
40 40
          "description": "Optional proprietary Dracome catalog key for this work or edition. Dracome's own systems use it both for internal lookups and as the identifier accepted by Dracome's XRPC API calls; it is not a portable identifier, so consumers outside Dracome's own systems should resolve via identifiers instead.",
41 41
          "maxLength": 128,
42 42
          "type": "string"
43 43
        },
44 44
        "identifiers": {
45 45
          "description": "External identifiers (ISBNs, Open Library keys, etc.) that let any client resolve this work or edition without depending on Dracome-specific data.",
46 46
          "items": {
47 47
            "ref": "#catalogIdentifier",
48 48
            "type": "ref"
49 49
          },
50 50
          "maxLength": 16,
51 51
          "type": "array"
52 52
        },
53 53
        "uri": {
54 54
          "description": "Optional canonical URI for this work or edition. Runtime validation MUST restrict this to https:// or at:// values.",
55 55
          "format": "uri",
56 56
          "type": "string"
57 57
        }
58 58
      },
59 59
      "type": "object"
60 60
    },
61 61
    "catalogSnapshot": {
62 62
      "description": "A portable, identity-oriented snapshot of combined work-and-edition catalog metadata, captured at record write time. Alongside the record's target, it lets any AT Protocol consumer independently resolve this work or edition without depending on Dracome as a central catalog authority. Work-scoped fields are always present at the top level; edition-scoped fields are grouped under the nested `edition` sub-object, which is always present.",
63 63
      "properties": {
64 64
        "contributors": {
65 65
          "description": "Ordered list of contributors (authors, translators, illustrators, etc.) credited on the work or edition. May be empty when the work has no credited contributor.",
66 66
          "items": {
67 67
            "ref": "#snapshotContributor",
68 68
            "type": "ref"
69 69
          },
70 70
          "maxLength": 32,
71 71
          "type": "array"
72 72
        },
73 73
        "edition": {
74 74
          "description": "Edition-scoped metadata of the targeted edition. Always present.",
75 75
          "ref": "#catalogSnapshotEdition",
76 76
          "type": "ref"
77 77
        },
78 78
        "subtitle": {
79 79
          "description": "Secondary title of the work, present only when the work has one, sourced from the work's own canonical subtitle.",
80 80
          "maxLength": 1024,
81 81
          "type": "string"
82 82
        },
83 83
        "title": {
84 84
          "description": "Primary title of the work, sourced from the work's own canonical title.",
85 85
          "maxLength": 1024,
86 86
          "type": "string"
87 87
        },
88 88
        "workType": {
89 89
          "description": "Structural content form of the referenced work (novel, poetry, comic, manga, audio_drama, or non_fiction).",
90 90
          "ref": "#workType",
91 91
          "type": "ref"
92 92
        }
93 93
      },
94 94
      "required": [
95 95
        "workType",
96 96
        "title",
97 97
        "contributors",
98 98
        "edition"
99 99
      ],
100 100
      "type": "object"
101 101
    },
102 102
    "catalogSnapshotEdition": {
103 103
      "description": "Edition-scoped metadata nested inside #catalogSnapshot. All fields are independently optional.",
104 104
      "properties": {
105 105
        "durationSeconds": {
106 106
          "description": "Total duration in seconds for audiobook editions, captured at record write time. Only populated when the edition's format is audiobook; pageCount and durationSeconds are never both set on the same snapshot.",
107 107
          "minimum": 0,
108 108
          "type": "integer"
109 109
        },
110 110
        "format": {
111 111
          "description": "Physical or media format of the specific edition, if known.",
112 112
          "ref": "#editionFormat",
113 113
          "type": "ref"
114 114
        },
115 115
        "language": {
116 116
          "description": "ISO 639-1 or BCP 47 language code for the edition language.",
117 117
          "format": "language",
118 118
          "type": "string"
119 119
        },
120 120
        "pageCount": {
121 121
          "description": "Number of pages in the specific edition, if known. Not populated when the edition's format is audiobook; see durationSeconds.",
122 122
          "minimum": 1,
123 123
          "type": "integer"
124 124
        },
125 125
        "publicationYear": {
126 126
          "description": "Year the specific edition was published. This is the edition's publication year, not necessarily the original work's first publication year.",
127 127
          "type": "integer"
128 128
        },
129 129
        "publisherName": {
130 130
          "description": "Name of the publisher of the specific edition, if known.",
131 131
          "maxLength": 512,
132 132
          "type": "string"
133 133
        },
134 134
        "subtitle": {
135 135
          "description": "Secondary title of the specific edition, present only when the edition has one. When present, this is authoritative for display over the top-level work subtitle.",
136 136
          "maxLength": 1024,
137 137
          "type": "string"
138 138
        },
139 139
        "title": {
140 140
          "description": "Primary title of the specific edition, present only when it is captured independently of the work's canonical title — for example a translated edition's title. When present, this is authoritative for display over the top-level work title.",
141 141
          "maxLength": 1024,
142 142
          "type": "string"
143 143
        }
144 144
      },
145 145
      "type": "object"
146 146
    },
147 147
    "catalogTarget": {
148 148
      "description": "Exact target identity for an edition-scoped record. Carries the edition and its parent work; there is no work-only target.",
149 149
      "properties": {
150 150
        "edition": {
151 151
          "description": "The specific edition being targeted. Always present.",
152 152
          "ref": "#catalogRef",
153 153
          "type": "ref"
154 154
        },
155 155
        "work": {
156 156
          "description": "The work being targeted by this record. Always present.",
157 157
          "ref": "#catalogRef",
158 158
          "type": "ref"
159 159
        }
160 160
      },
161 161
      "required": [
162 162
        "work",
163 163
        "edition"
164 164
      ],
165 165
      "type": "object"
166 166
    },
167 167
    "editionFormat": {
168 168
      "description": "Physical or media format of a specific edition. The set of known values is derived from the Dracome catalog's own normalized edition-format values and may grow; consumers MUST tolerate unknown values.",
169 169
      "knownValues": [
170 170
        "paperback",
171 171
        "hardcover",
172 172
        "ebook",
173 173
        "audiobook",
174 174
        "board_book",
175 175
        "spiral_bound",
176 176
        "library_binding",
177 177
        "pamphlet"
178 178
      ],
179 +
      "maxLength": 64,
179 180
      "type": "string"
180 181
    },
181 182
    "snapshotContributor": {
182 183
      "description": "A person credited on a work or edition. The role and display name are always present. The profile reference is optional, carrying the AT-URI of that person's contributor profile when one exists and is known.",
183 184
      "properties": {
184 185
        "contributor": {
185 186
          "description": "Optional reference to this person's contributor profile, when such a profile is known to exist on their PDS.",
186 187
          "ref": "social.dracome.contributor.defs#contributorProfileRef",
187 188
          "type": "ref"
188 189
        },
189 190
        "name": {
190 191
          "description": "Display name of the credited person, in natural reading order (given name(s) before family name, e.g. 'Jane Doe', not library-cataloging-style 'Doe, Jane').",
191 192
          "maxLength": 256,
192 193
          "type": "string"
193 194
        },
194 195
        "role": {
195 196
          "description": "The role this person held in creating this work or edition (e.g. author, translator, illustrator).",
196 197
          "ref": "social.dracome.contributor.defs#contributorRole",
197 198
          "type": "ref"
198 199
        }
199 200
      },
200 201
      "required": [
201 202
        "name",
202 203
        "role"
203 204
      ],
204 205
      "type": "object"
205 206
    },
206 207
    "workType": {
207 208
      "description": "Structural content form of the work (not its distribution format).",
208 209
      "knownValues": [
209 210
        "novel",
210 211
        "poetry",
211 212
        "comic",
212 213
        "manga",
213 214
        "audio_drama",
214 215
        "non_fiction"
215 216
      ],
217 +
      "maxLength": 64,
216 218
      "type": "string"
217 219
    }
218 220
  },
219 221
  "id": "social.dracome.work.defs",
220 222
  "lexicon": 1
221 223
}

Compare Other Versions

Lexicon Garden

@