net.wireservice.content

wireservice.net

Schema Diff

+5 -0

From

CID
bafyreidka24ieeg...
Indexed At
2026-10-12 21:12 UTC
View this version

To

CID
bafyreic6cz454vt...
Indexed At
2026-10-12 22:50 UTC
View this version

Compatibility Analysis

Backward Compatible

Backward compatible. 2 non-breaking changes.

Non-Breaking Changes (2)
  • AddedVertex AddedVertex { vertex_id: "net.wireservice.content#documentLayout.minimumColumnWidth" }
  • AddedEdge AddedEdge { src: "net.wireservice.content#documentLayout", tgt: "net.wireservice.content#documentLayout.minimumColumnWidth", kind: "prop", name: Some("minimumColumnWidth") }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "net.wireservice.content#documentLayout.minimumColumnWidth" }

Additional Notes

  • Non-breaking: AddedEdge { src: "net.wireservice.content#documentLayout", tgt: "net.wireservice.content#documentLayout.minimumColumnWidth", kind: "prop", name: Some("minimumColumnWidth") }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "border": {
5 5
      "description": "Border definition. The stroke property defines the line style; the boolean flags control which sides are drawn (all true by default when omitted).",
6 6
      "properties": {
7 7
        "bottom": {
8 8
          "type": "boolean"
9 9
        },
10 10
        "left": {
11 11
          "type": "boolean"
12 12
        },
13 13
        "right": {
14 14
          "type": "boolean"
15 15
        },
16 16
        "stroke": {
17 17
          "ref": "net.wireservice.defs#strokeStyle",
18 18
          "type": "ref"
19 19
        },
20 20
        "top": {
21 21
          "type": "boolean"
22 22
        }
23 23
      },
24 24
      "type": "object"
25 25
    },
26 26
    "componentLayoutValues": {
27 27
      "description": "The actual layout values: column placement, margins, padding, alignment, sizing. Used as the values payload for both namedComponentLayout (defaults) and conditionalComponentLayout (overrides).",
28 28
      "properties": {
29 29
        "columnSpan": {
30 30
          "description": "Number of columns this component spans.",
31 31
          "minimum": 1,
32 32
          "type": "integer"
33 33
        },
34 34
        "columnStart": {
35 35
          "description": "Starting column index (zero-based).",
36 36
          "minimum": 0,
37 37
          "type": "integer"
38 38
        },
39 39
        "horizontalContentAlignment": {
40 40
          "knownValues": [
41 41
            "left",
42 42
            "center",
43 43
            "right"
44 44
          ],
45 45
          "maxLength": 64,
46 46
          "type": "string"
47 47
        },
48 48
        "ignoreDocumentGutter": {
49 49
          "description": "Which sides should ignore the document gutter.",
50 50
          "knownValues": [
51 51
            "none",
52 52
            "left",
53 53
            "right",
54 54
            "both"
55 55
          ],
56 56
          "maxLength": 64,
57 57
          "type": "string"
58 58
        },
59 59
        "ignoreDocumentMargin": {
60 60
          "description": "Which sides should ignore the document margin.",
61 61
          "knownValues": [
62 62
            "none",
63 63
            "left",
64 64
            "right",
65 65
            "both"
66 66
          ],
67 67
          "maxLength": 64,
68 68
          "type": "string"
69 69
        },
70 70
        "margin": {
71 71
          "ref": "net.wireservice.defs#margin",
72 72
          "type": "ref"
73 73
        },
74 74
        "maximumContentWidth": {
75 75
          "ref": "net.wireservice.defs#measurement",
76 76
          "type": "ref"
77 77
        },
78 78
        "minimumHeight": {
79 79
          "ref": "net.wireservice.defs#measurement",
80 80
          "type": "ref"
81 81
        },
82 82
        "padding": {
83 83
          "ref": "net.wireservice.defs#padding",
84 84
          "type": "ref"
85 85
        }
86 86
      },
87 87
      "type": "object"
88 88
    },
89 89
    "componentStyleValues": {
90 90
      "description": "The actual visual style values: background color, border, corner radius, opacity. Used as the values payload for both namedComponentStyle (defaults) and conditionalComponentStyle (overrides).",
91 91
      "properties": {
92 92
        "backgroundColor": {
93 93
          "description": "Background color as hex string (e.g., '#F7F7F7').",
94 94
          "maxLength": 64,
95 95
          "type": "string"
96 96
        },
97 97
        "border": {
98 98
          "ref": "#border",
99 99
          "type": "ref"
100 100
        },
101 101
        "cornerRadius": {
102 102
          "description": "Corner radius in points.",
103 103
          "minimum": 0,
104 104
          "type": "integer"
105 105
        },
106 106
        "opacity": {
107 107
          "description": "Opacity as integer 0-100 (100 = fully opaque).",
108 108
          "maximum": 100,
109 109
          "minimum": 0,
110 110
          "type": "integer"
111 111
        }
112 112
      },
113 113
      "type": "object"
114 114
    },
115 115
    "conditionalComponentLayout": {
116 116
      "description": "Conditional override for a named component layout. The values field carries the override payload; conditions describe when it applies.",
117 117
      "properties": {
118 118
        "conditions": {
119 119
          "description": "Conditions that trigger this override. Multiple conditions combine as OR (any match applies). Combine criteria within a single condition object for AND.",
120 120
          "items": {
121 121
            "ref": "net.wireservice.defs#condition",
122 122
            "type": "ref"
123 123
          },
124 124
          "type": "array"
125 125
        },
126 126
        "values": {
127 127
          "description": "Override values. Fields not set here keep the parent's defaults.",
128 128
          "ref": "#componentLayoutValues",
129 129
          "type": "ref"
130 130
        }
131 131
      },
132 132
      "required": [
133 133
        "conditions"
134 134
      ],
135 135
      "type": "object"
136 136
    },
137 137
    "conditionalComponentStyle": {
138 138
      "description": "Conditional override for a named component style. The values field carries the override payload; conditions describe when it applies.",
139 139
      "properties": {
140 140
        "conditions": {
141 141
          "description": "Conditions that trigger this override. Multiple conditions combine as OR (any match applies). Combine criteria within a single condition object for AND.",
142 142
          "items": {
143 143
            "ref": "net.wireservice.defs#condition",
144 144
            "type": "ref"
145 145
          },
146 146
          "type": "array"
147 147
        },
148 148
        "values": {
149 149
          "description": "Override values. Fields not set here keep the parent's defaults.",
150 150
          "ref": "#componentStyleValues",
151 151
          "type": "ref"
152 152
        }
153 153
      },
154 154
      "required": [
155 155
        "conditions"
156 156
      ],
157 157
      "type": "object"
158 158
    },
159 159
    "conditionalTextStyle": {
160 160
      "description": "Conditional override for a named text style. The values field carries the override payload; conditions describe when it applies.",
161 161
      "properties": {
162 162
        "conditions": {
163 163
          "description": "Conditions that trigger this override. Multiple conditions combine as OR (any match applies). Combine criteria within a single condition object for AND.",
164 164
          "items": {
165 165
            "ref": "net.wireservice.defs#condition",
166 166
            "type": "ref"
167 167
          },
168 168
          "type": "array"
169 169
        },
170 170
        "values": {
171 171
          "description": "Override values. Fields not set here keep the parent's defaults.",
172 172
          "ref": "#textStyleValues",
173 173
          "type": "ref"
174 174
        }
175 175
      },
176 176
      "required": [
177 177
        "conditions"
178 178
      ],
179 179
      "type": "object"
180 180
    },
181 181
    "correction": {
182 182
      "description": "A notice appended to an article after publication.",
183 183
      "properties": {
184 184
        "createdAt": {
185 185
          "format": "datetime",
186 186
          "type": "string"
187 187
        },
188 188
        "kind": {
189 189
          "knownValues": [
190 190
            "correction",
191 191
            "clarification",
192 192
            "update",
193 193
            "editorsNote"
194 194
          ],
195 195
          "maxLength": 64,
196 196
          "type": "string"
197 197
        },
198 198
        "text": {
199 199
          "description": "Notice text as an array of text runs with optional formatting marks.",
200 200
          "items": {
201 201
            "ref": "net.wireservice.defs#textRun",
202 202
            "type": "ref"
203 203
          },
204 204
          "type": "array"
205 205
        }
206 206
      },
207 207
      "required": [
208 208
        "kind",
209 209
        "text",
210 210
        "createdAt"
211 211
      ],
212 212
      "type": "object"
213 213
    },
214 214
    "documentLayout": {
215 215
      "description": "Document-level layout grid defining the column structure for component placement.",
216 216
      "properties": {
217 217
        "columns": {
218 218
          "description": "Number of columns in the layout grid.",
219 219
          "minimum": 1,
220 220
          "type": "integer"
221 221
        },
222 222
        "gutter": {
223 223
          "description": "Gutter width between columns in points.",
224 224
          "minimum": 0,
225 225
          "type": "integer"
226 226
        },
227 227
        "margin": {
228 228
          "description": "Document margin in points.",
229 229
          "minimum": 0,
230 230
          "type": "integer"
231 231
        },
232 +
        "minimumColumnWidth": {
233 +
          "description": "Narrowest a column may get, in points. Below the viewport width where columns would be narrower, the layout collapses to one column. Defaults to 40.",
234 +
          "minimum": 1,
235 +
          "type": "integer"
236 +
        },
232 237
        "width": {
233 238
          "description": "Maximum layout width in points.",
234 239
          "minimum": 1,
235 240
          "type": "integer"
236 241
        }
237 242
      },
238 243
      "required": [
239 244
        "columns",
240 245
        "width"
241 246
      ],
242 247
      "type": "object"
243 248
    },
244 249
    "main": {
245 250
      "description": "Apple News Format-derived rich article content for standard.site documents. Plugs into the open content union of site.standard.document.",
246 251
      "properties": {
247 252
        "blob": {
248 253
          "description": "External JSON blob containing the components array. Used when content exceeds the record size limit. Mutually exclusive with the inline components array.",
249 254
          "type": "blob"
250 255
        },
251 256
        "blobRefs": {
252 257
          "description": "Blob references used within content. Required in blob mode to prevent garbage collection of image and media blobs.",
253 258
          "items": {
254 259
            "type": "blob"
255 260
          },
256 261
          "type": "array"
257 262
        },
258 263
        "componentLayouts": {
259 264
          "description": "Named component layout definitions. Components reference these by name via their layout field.",
260 265
          "items": {
261 266
            "ref": "#namedComponentLayout",
262 267
            "type": "ref"
263 268
          },
264 269
          "type": "array"
265 270
        },
266 271
        "componentStyles": {
267 272
          "description": "Named component style definitions. Components reference these by name via their style field.",
268 273
          "items": {
269 274
            "ref": "#namedComponentStyle",
270 275
            "type": "ref"
271 276
          },
272 277
          "type": "array"
273 278
        },
274 279
        "componentTextStyles": {
275 280
          "description": "Named text style definitions. Text components reference these by name via their textStyle field.",
276 281
          "items": {
277 282
            "ref": "#namedTextStyle",
278 283
            "type": "ref"
279 284
          },
280 285
          "type": "array"
281 286
        },
282 287
        "components": {
283 288
          "description": "Inline component array. Used when content fits within the record size limit.",
284 289
          "items": {
285 290
            "closed": false,
286 291
            "refs": [
287 292
              "net.wireservice.component.body",
288 293
              "net.wireservice.component.heading",
289 294
              "net.wireservice.component.image",
290 295
              "net.wireservice.component.photo",
291 296
              "net.wireservice.component.video",
292 297
              "net.wireservice.component.audio",
293 298
              "net.wireservice.component.gallery",
294 299
              "net.wireservice.component.container",
295 300
              "net.wireservice.component.divider",
296 301
              "net.wireservice.component.quote",
297 302
              "net.wireservice.component.byline",
298 303
              "net.wireservice.component.embed",
299 304
              "net.wireservice.component.map",
300 305
              "net.wireservice.component.linkButton",
301 306
              "net.wireservice.component.adSlot"
302 307
            ],
303 308
            "type": "union"
304 309
          },
305 310
          "type": "array"
306 311
        },
307 312
        "corrections": {
308 313
          "description": "Published corrections, clarifications, and updates, oldest first. Entries are appended, never edited or removed.",
309 314
          "items": {
310 315
            "ref": "#correction",
311 316
            "type": "ref"
312 317
          },
313 318
          "type": "array"
314 319
        },
315 320
        "language": {
316 321
          "description": "BCP-47 language code for the article content.",
317 322
          "format": "language",
318 323
          "maxLength": 64,
319 324
          "type": "string"
320 325
        },
321 326
        "layout": {
322 327
          "description": "Document-level layout grid. Overrides the stylesheet's default grid if a stylesheet is referenced.",
323 328
          "ref": "#documentLayout",
324 329
          "type": "ref"
325 330
        },
326 331
        "stylesheet": {
327 332
          "description": "AT URI of a net.wireservice.stylesheet record providing default named layouts, styles, and text styles. Document-level componentLayouts/componentStyles/componentTextStyles entries with the same name override the stylesheet's.",
328 333
          "format": "at-uri",
329 334
          "type": "string"
330 335
        }
331 336
      },
332 337
      "type": "object"
333 338
    },
334 339
    "namedComponentLayout": {
335 340
      "description": "A named component layout definition controlling column placement, margins, and sizing. Components reference these by the name field.",
336 341
      "properties": {
337 342
        "conditional": {
338 343
          "description": "Conditional overrides. Each entry's values replace the layout's defaults when any of its conditions match the rendering context. Entries are evaluated in order; the first match wins.",
339 344
          "items": {
340 345
            "ref": "#conditionalComponentLayout",
341 346
            "type": "ref"
342 347
          },
343 348
          "type": "array"
344 349
        },
345 350
        "name": {
346 351
          "description": "Identifier for this layout, referenced by components.",
347 352
          "maxLength": 256,
348 353
          "type": "string"
349 354
        },
350 355
        "values": {
351 356
          "description": "Default layout values. Conditional entries can override individual fields.",
352 357
          "ref": "#componentLayoutValues",
353 358
          "type": "ref"
354 359
        }
355 360
      },
356 361
      "required": [
357 362
        "name"
358 363
      ],
359 364
      "type": "object"
360 365
    },
361 366
    "namedComponentStyle": {
362 367
      "description": "A named component style definition controlling visual appearance. Components reference these by the name field.",
363 368
      "properties": {
364 369
        "conditional": {
365 370
          "description": "Conditional overrides. Each entry's values replace the style's defaults when any of its conditions match the rendering context. Entries are evaluated in order; the first match wins.",
366 371
          "items": {
367 372
            "ref": "#conditionalComponentStyle",
368 373
            "type": "ref"
369 374
          },
370 375
          "type": "array"
371 376
        },
372 377
        "name": {
373 378
          "description": "Identifier for this style, referenced by components.",
374 379
          "maxLength": 256,
375 380
          "type": "string"
376 381
        },
377 382
        "values": {
378 383
          "description": "Default style values. Conditional entries can override individual fields.",
379 384
          "ref": "#componentStyleValues",
380 385
          "type": "ref"
381 386
        }
382 387
      },
383 388
      "required": [
384 389
        "name"
385 390
      ],
386 391
      "type": "object"
387 392
    },
388 393
    "namedTextStyle": {
389 394
      "description": "A named text style definition. Text components reference these by the name field.",
390 395
      "properties": {
391 396
        "conditional": {
392 397
          "description": "Conditional overrides. Each entry's values replace the text style's defaults when any of its conditions match the rendering context. Entries are evaluated in order; the first match wins.",
393 398
          "items": {
394 399
            "ref": "#conditionalTextStyle",
395 400
            "type": "ref"
396 401
          },
397 402
          "type": "array"
398 403
        },
399 404
        "name": {
400 405
          "description": "Identifier for this style, referenced by components.",
401 406
          "maxLength": 256,
402 407
          "type": "string"
403 408
        },
404 409
        "values": {
405 410
          "description": "Default text style values. Conditional entries can override individual fields.",
406 411
          "ref": "#textStyleValues",
407 412
          "type": "ref"
408 413
        }
409 414
      },
410 415
      "required": [
411 416
        "name"
412 417
      ],
413 418
      "type": "object"
414 419
    },
415 420
    "textStyleValues": {
416 421
      "description": "The actual text style values: font, size, color, alignment, spacing, decoration. Used as the values payload for both namedTextStyle (defaults) and conditionalTextStyle (overrides).",
417 422
      "properties": {
418 423
        "backgroundColor": {
419 424
          "description": "Text background color as hex string.",
420 425
          "maxLength": 64,
421 426
          "type": "string"
422 427
        },
423 428
        "firstLineIndent": {
424 429
          "description": "First line indent in points.",
425 430
          "minimum": 0,
426 431
          "type": "integer"
427 432
        },
428 433
        "fontFamily": {
429 434
          "description": "Font family name (e.g., 'Georgia', 'Helvetica Neue').",
430 435
          "maxLength": 256,
431 436
          "type": "string"
432 437
        },
433 438
        "fontName": {
434 439
          "description": "PostScript font name for precise font selection.",
435 440
          "maxLength": 256,
436 441
          "type": "string"
437 442
        },
438 443
        "fontSize": {
439 444
          "description": "Font size in points.",
440 445
          "maximum": 500,
441 446
          "minimum": 1,
442 447
          "type": "integer"
443 448
        },
444 449
        "fontStyle": {
445 450
          "knownValues": [
446 451
            "normal",
447 452
            "italic",
448 453
            "oblique"
449 454
          ],
450 455
          "maxLength": 64,
451 456
          "type": "string"
452 457
        },
453 458
        "fontWeight": {
454 459
          "description": "Font weight (100 = thin, 400 = normal, 700 = bold, 900 = black).",
455 460
          "maximum": 900,
456 461
          "minimum": 100,
457 462
          "type": "integer"
458 463
        },
459 464
        "hyphenation": {
460 465
          "description": "Whether to enable automatic hyphenation.",
461 466
          "type": "boolean"
462 467
        },
463 468
        "lineHeight": {
464 469
          "description": "Line height in points.",
465 470
          "minimum": 1,
466 471
          "type": "integer"
467 472
        },
468 473
        "paragraphSpacingAfter": {
469 474
          "description": "Space after paragraphs in points.",
470 475
          "minimum": 0,
471 476
          "type": "integer"
472 477
        },
473 478
        "paragraphSpacingBefore": {
474 479
          "description": "Space before paragraphs in points.",
475 480
          "minimum": 0,
476 481
          "type": "integer"
477 482
        },
478 483
        "strikethrough": {
479 484
          "description": "Whether text has strikethrough decoration.",
480 485
          "type": "boolean"
481 486
        },
482 487
        "textAlignment": {
483 488
          "knownValues": [
484 489
            "left",
485 490
            "center",
486 491
            "right",
487 492
            "justified",
488 493
            "none"
489 494
          ],
490 495
          "maxLength": 64,
491 496
          "type": "string"
492 497
        },
493 498
        "textColor": {
494 499
          "description": "Text color as hex string (e.g., '#333333').",
495 500
          "maxLength": 64,
496 501
          "type": "string"
497 502
        },
498 503
        "textTransform": {
499 504
          "knownValues": [
500 505
            "uppercase",
501 506
            "lowercase",
502 507
            "capitalize",
503 508
            "none"
504 509
          ],
505 510
          "maxLength": 64,
506 511
          "type": "string"
507 512
        },
508 513
        "tracking": {
509 514
          "description": "Letter spacing in hundredths of a point.",
510 515
          "type": "integer"
511 516
        },
512 517
        "underline": {
513 518
          "description": "Whether text has underline decoration.",
514 519
          "type": "boolean"
515 520
        },
516 521
        "verticalAlignment": {
517 522
          "knownValues": [
518 523
            "superscript",
519 524
            "subscript",
520 525
            "baseline"
521 526
          ],
522 527
          "maxLength": 64,
523 528
          "type": "string"
524 529
        }
525 530
      },
526 531
      "type": "object"
527 532
    }
528 533
  },
529 534
  "id": "net.wireservice.content",
530 535
  "lexicon": 1
531 536
}

Compare Other Versions

Lexicon Garden

@