com.dryan.timeline.entry

dryan.com

Schema Diff

+32 -0

From

CID
bafyreiahblktx2l...
Indexed At
2026-09-23 15:24 UTC
View this version

To

CID
bafyreifggkkkhrt...
Indexed At
2026-10-13 01:18 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

9 breaking changes, 26 non-breaking changes.

Breaking Changes (9)
  • RemovedEdge RemovedEdge { src: "com.dryan.timeline.entry.detail", tgt: "com.dryan.timeline.entry.detail:variant5", kind: "variant", name: Some("#activity") }
  • RemovedEdge RemovedEdge { src: "com.dryan.timeline.entry.detail", tgt: "com.dryan.timeline.entry.detail:variant6", kind: "variant", name: Some("#code") }
  • RemovedEdge RemovedEdge { src: "com.dryan.timeline.entry.detail", tgt: "com.dryan.timeline.entry.detail:variant7", kind: "variant", name: Some("#game") }
  • RemovedEdge RemovedEdge { src: "com.dryan.timeline.entry.detail", tgt: "com.dryan.timeline.entry.detail:variant8", kind: "variant", name: Some("#achievement") }
  • RemovedEdge RemovedEdge { src: "com.dryan.timeline.entry.detail:variant5", tgt: "com.dryan.timeline.entry#activity", kind: "ref", name: None }
  • RemovedEdge RemovedEdge { src: "com.dryan.timeline.entry.detail:variant6", tgt: "com.dryan.timeline.entry#code", kind: "ref", name: None }
  • RemovedEdge RemovedEdge { src: "com.dryan.timeline.entry.detail:variant7", tgt: "com.dryan.timeline.entry#game", kind: "ref", name: None }
  • RemovedEdge RemovedEdge { src: "com.dryan.timeline.entry.detail:variant8", tgt: "com.dryan.timeline.entry#achievement", kind: "ref", name: None }
  • ConstraintTightened ConstraintTightened { vertex_id: "com.dryan.timeline.entry.entryType", sort: "knownValues", old_value: "[\"article\",\"photo\",\"book\",\"video\",\"link\",\"activity.walk\",\"activity.hike\",\"activity.cycle\",\"activity.kayak\",\"activity.other\",\"code\",\"game\",\"game.achievement\"]", new_value: "[\"article\",\"photo\",\"book\",\"video\",\"link\",\"movie\",\"activity.walk\",\"activity.hike\",\"activity.cycle\",\"activity.kayak\",\"activity.other\",\"code\",\"game\",\"game.achievement\"]" }
Non-Breaking Changes (26)
  • AddedVertex AddedVertex { vertex_id: "com.dryan.timeline.entry#movie" }
  • AddedVertex AddedVertex { vertex_id: "com.dryan.timeline.entry#movie.letterboxdUrl" }
  • AddedVertex AddedVertex { vertex_id: "com.dryan.timeline.entry#movie.liked" }
  • AddedVertex AddedVertex { vertex_id: "com.dryan.timeline.entry#movie.posterUrl" }
  • AddedVertex AddedVertex { vertex_id: "com.dryan.timeline.entry#movie.rating" }
  • AddedVertex AddedVertex { vertex_id: "com.dryan.timeline.entry#movie.rewatch" }
  • AddedVertex AddedVertex { vertex_id: "com.dryan.timeline.entry#movie.tmdbId" }
  • AddedVertex AddedVertex { vertex_id: "com.dryan.timeline.entry#movie.year" }
  • AddedVertex AddedVertex { vertex_id: "com.dryan.timeline.entry.detail:variant9" }
  • AddedEdge AddedEdge { src: "com.dryan.timeline.entry#movie", tgt: "com.dryan.timeline.entry#movie.letterboxdUrl", kind: "prop", name: Some("letterboxdUrl") }
  • AddedEdge AddedEdge { src: "com.dryan.timeline.entry#movie", tgt: "com.dryan.timeline.entry#movie.liked", kind: "prop", name: Some("liked") }
  • AddedEdge AddedEdge { src: "com.dryan.timeline.entry#movie", tgt: "com.dryan.timeline.entry#movie.posterUrl", kind: "prop", name: Some("posterUrl") }
  • AddedEdge AddedEdge { src: "com.dryan.timeline.entry#movie", tgt: "com.dryan.timeline.entry#movie.rating", kind: "prop", name: Some("rating") }
  • AddedEdge AddedEdge { src: "com.dryan.timeline.entry#movie", tgt: "com.dryan.timeline.entry#movie.rewatch", kind: "prop", name: Some("rewatch") }
  • AddedEdge AddedEdge { src: "com.dryan.timeline.entry#movie", tgt: "com.dryan.timeline.entry#movie.tmdbId", kind: "prop", name: Some("tmdbId") }
  • AddedEdge AddedEdge { src: "com.dryan.timeline.entry#movie", tgt: "com.dryan.timeline.entry#movie.year", kind: "prop", name: Some("year") }
  • AddedEdge AddedEdge { src: "com.dryan.timeline.entry.detail", tgt: "com.dryan.timeline.entry.detail:variant5", kind: "variant", name: Some("#movie") }
  • AddedEdge AddedEdge { src: "com.dryan.timeline.entry.detail", tgt: "com.dryan.timeline.entry.detail:variant6", kind: "variant", name: Some("#activity") }
  • AddedEdge AddedEdge { src: "com.dryan.timeline.entry.detail", tgt: "com.dryan.timeline.entry.detail:variant7", kind: "variant", name: Some("#code") }
  • AddedEdge AddedEdge { src: "com.dryan.timeline.entry.detail", tgt: "com.dryan.timeline.entry.detail:variant8", kind: "variant", name: Some("#game") }
  • AddedEdge AddedEdge { src: "com.dryan.timeline.entry.detail", tgt: "com.dryan.timeline.entry.detail:variant9", kind: "variant", name: Some("#achievement") }
  • AddedEdge AddedEdge { src: "com.dryan.timeline.entry.detail:variant5", tgt: "com.dryan.timeline.entry#movie", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "com.dryan.timeline.entry.detail:variant6", tgt: "com.dryan.timeline.entry#activity", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "com.dryan.timeline.entry.detail:variant7", tgt: "com.dryan.timeline.entry#code", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "com.dryan.timeline.entry.detail:variant8", tgt: "com.dryan.timeline.entry#game", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "com.dryan.timeline.entry.detail:variant9", tgt: "com.dryan.timeline.entry#achievement", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "com.dryan.timeline.entry#movie" }
  • AddedVertex { vertex_id: "com.dryan.timeline.entry#movie.letterboxdUrl" }
  • AddedVertex { vertex_id: "com.dryan.timeline.entry#movie.liked" }
  • AddedVertex { vertex_id: "com.dryan.timeline.entry#movie.posterUrl" }
  • AddedVertex { vertex_id: "com.dryan.timeline.entry#movie.rating" }
  • AddedVertex { vertex_id: "com.dryan.timeline.entry#movie.rewatch" }
  • AddedVertex { vertex_id: "com.dryan.timeline.entry#movie.tmdbId" }
  • AddedVertex { vertex_id: "com.dryan.timeline.entry#movie.year" }
  • AddedVertex { vertex_id: "com.dryan.timeline.entry.detail:variant9" }

Constraint Changes

  • ConstraintTightened ConstraintTightened { vertex_id: "com.dryan.timeline.entry.entryType", sort: "knownValues", old_value: "[\"article\",\"photo\",\"book\",\"video\",\"link\",\"activity.walk\",\"activity.hike\",\"activity.cycle\",\"activity.kayak\",\"activity.other\",\"code\",\"game\",\"game.achievement\"]", new_value: "[\"article\",\"photo\",\"book\",\"video\",\"link\",\"movie\",\"activity.walk\",\"activity.hike\",\"activity.cycle\",\"activity.kayak\",\"activity.other\",\"code\",\"game\",\"game.achievement\"]" }

Additional Notes

  • Breaking: RemovedEdge { src: "com.dryan.timeline.entry.detail", tgt: "com.dryan.timeline.entry.detail:variant5", kind: "variant", name: Some("#activity") }
  • Breaking: RemovedEdge { src: "com.dryan.timeline.entry.detail", tgt: "com.dryan.timeline.entry.detail:variant6", kind: "variant", name: Some("#code") }
  • Breaking: RemovedEdge { src: "com.dryan.timeline.entry.detail", tgt: "com.dryan.timeline.entry.detail:variant7", kind: "variant", name: Some("#game") }
  • Breaking: RemovedEdge { src: "com.dryan.timeline.entry.detail", tgt: "com.dryan.timeline.entry.detail:variant8", kind: "variant", name: Some("#achievement") }
  • Breaking: RemovedEdge { src: "com.dryan.timeline.entry.detail:variant5", tgt: "com.dryan.timeline.entry#activity", kind: "ref", name: None }
  • Breaking: RemovedEdge { src: "com.dryan.timeline.entry.detail:variant6", tgt: "com.dryan.timeline.entry#code", kind: "ref", name: None }
  • Breaking: RemovedEdge { src: "com.dryan.timeline.entry.detail:variant7", tgt: "com.dryan.timeline.entry#game", kind: "ref", name: None }
  • Breaking: RemovedEdge { src: "com.dryan.timeline.entry.detail:variant8", tgt: "com.dryan.timeline.entry#achievement", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "com.dryan.timeline.entry#movie", tgt: "com.dryan.timeline.entry#movie.letterboxdUrl", kind: "prop", name: Some("letterboxdUrl") }
  • Non-breaking: AddedEdge { src: "com.dryan.timeline.entry#movie", tgt: "com.dryan.timeline.entry#movie.liked", kind: "prop", name: Some("liked") }
  • Non-breaking: AddedEdge { src: "com.dryan.timeline.entry#movie", tgt: "com.dryan.timeline.entry#movie.posterUrl", kind: "prop", name: Some("posterUrl") }
  • Non-breaking: AddedEdge { src: "com.dryan.timeline.entry#movie", tgt: "com.dryan.timeline.entry#movie.rating", kind: "prop", name: Some("rating") }
  • Non-breaking: AddedEdge { src: "com.dryan.timeline.entry#movie", tgt: "com.dryan.timeline.entry#movie.rewatch", kind: "prop", name: Some("rewatch") }
  • Non-breaking: AddedEdge { src: "com.dryan.timeline.entry#movie", tgt: "com.dryan.timeline.entry#movie.tmdbId", kind: "prop", name: Some("tmdbId") }
  • Non-breaking: AddedEdge { src: "com.dryan.timeline.entry#movie", tgt: "com.dryan.timeline.entry#movie.year", kind: "prop", name: Some("year") }
  • Non-breaking: AddedEdge { src: "com.dryan.timeline.entry.detail", tgt: "com.dryan.timeline.entry.detail:variant5", kind: "variant", name: Some("#movie") }
  • Non-breaking: AddedEdge { src: "com.dryan.timeline.entry.detail", tgt: "com.dryan.timeline.entry.detail:variant6", kind: "variant", name: Some("#activity") }
  • Non-breaking: AddedEdge { src: "com.dryan.timeline.entry.detail", tgt: "com.dryan.timeline.entry.detail:variant7", kind: "variant", name: Some("#code") }
  • Non-breaking: AddedEdge { src: "com.dryan.timeline.entry.detail", tgt: "com.dryan.timeline.entry.detail:variant8", kind: "variant", name: Some("#game") }
  • Non-breaking: AddedEdge { src: "com.dryan.timeline.entry.detail", tgt: "com.dryan.timeline.entry.detail:variant9", kind: "variant", name: Some("#achievement") }
  • Non-breaking: AddedEdge { src: "com.dryan.timeline.entry.detail:variant5", tgt: "com.dryan.timeline.entry#movie", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "com.dryan.timeline.entry.detail:variant6", tgt: "com.dryan.timeline.entry#activity", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "com.dryan.timeline.entry.detail:variant7", tgt: "com.dryan.timeline.entry#code", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "com.dryan.timeline.entry.detail:variant8", tgt: "com.dryan.timeline.entry#game", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "com.dryan.timeline.entry.detail:variant9", tgt: "com.dryan.timeline.entry#achievement", kind: "ref", name: None }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "achievement": {
5 5
      "properties": {
6 6
        "achievementId": {
7 7
          "type": "string"
8 8
        },
9 9
        "description": {
10 10
          "type": "string"
11 11
        },
12 12
        "game": {
13 13
          "type": "string"
14 14
        },
15 15
        "iconUrl": {
16 16
          "format": "uri",
17 17
          "type": "string"
18 18
        },
19 19
        "platform": {
20 20
          "knownValues": [
21 21
            "xbox"
22 22
          ],
23 23
          "type": "string"
24 24
        },
25 25
        "xboxTitleId": {
26 26
          "type": "integer"
27 27
        }
28 28
      },
29 29
      "required": [
30 30
        "game",
31 31
        "platform"
32 32
      ],
33 33
      "type": "object"
34 34
    },
35 35
    "activity": {
36 36
      "properties": {
37 37
        "averageHeartrate": {
38 38
          "description": "Beats per minute, decimal string.",
39 39
          "type": "string"
40 40
        },
41 41
        "averageSpeed": {
42 42
          "description": "Metres per second, decimal string.",
43 43
          "type": "string"
44 44
        },
45 45
        "bounds": {
46 46
          "ref": "#bounds",
47 47
          "type": "ref"
48 48
        },
49 49
        "distanceMeters": {
50 50
          "type": "integer"
51 51
        },
52 52
        "elapsedTimeSeconds": {
53 53
          "type": "integer"
54 54
        },
55 55
        "elevationGainMeters": {
56 56
          "type": "integer"
57 57
        },
58 58
        "elevationLossMeters": {
59 59
          "type": "integer"
60 60
        },
61 61
        "end": {
62 62
          "ref": "#point",
63 63
          "type": "ref"
64 64
        },
65 65
        "maxElevationMeters": {
66 66
          "type": "integer"
67 67
        },
68 68
        "maxHeartrate": {
69 69
          "description": "Beats per minute, decimal string.",
70 70
          "type": "string"
71 71
        },
72 72
        "maxSpeed": {
73 73
          "description": "Metres per second, decimal string.",
74 74
          "type": "string"
75 75
        },
76 76
        "minElevationMeters": {
77 77
          "type": "integer"
78 78
        },
79 79
        "movingTimeSeconds": {
80 80
          "type": "integer"
81 81
        },
82 82
        "polyline": {
83 83
          "description": "Google encoded polyline of the track.",
84 84
          "type": "string"
85 85
        },
86 86
        "source": {
87 87
          "description": "Where the track came from (Strava, AllTrails, onX...).",
88 88
          "type": "string"
89 89
        },
90 90
        "sourceId": {
91 91
          "description": "The activity's id at the source, e.g. the Strava activity id.",
92 92
          "type": "string"
93 93
        },
94 94
        "sourceUrl": {
95 95
          "format": "uri",
96 96
          "type": "string"
97 97
        },
98 98
        "sportType": {
99 99
          "type": "string"
100 100
        },
101 101
        "start": {
102 102
          "ref": "#point",
103 103
          "type": "ref"
104 104
        }
105 105
      },
106 106
      "type": "object"
107 107
    },
108 108
    "article": {
109 109
      "properties": {
110 110
        "crosspostedFrom": {
111 111
          "ref": "#crosspost",
112 112
          "type": "ref"
113 113
        },
114 114
        "description": {
115 115
          "type": "string"
116 116
        },
117 117
        "shareImage": {
118 118
          "description": "Filename of the article's share graphic on the site.",
119 119
          "type": "string"
120 120
        }
121 121
      },
122 122
      "type": "object"
123 123
    },
124 124
    "book": {
125 125
      "properties": {
126 126
        "amazonUrl": {
127 127
          "format": "uri",
128 128
          "type": "string"
129 129
        },
130 130
        "asin": {
131 131
          "type": "string"
132 132
        },
133 133
        "author": {
134 134
          "type": "string"
135 135
        },
136 136
        "bookshopOrgUrl": {
137 137
          "format": "uri",
138 138
          "type": "string"
139 139
        },
140 140
        "coverUrl": {
141 141
          "format": "uri",
142 142
          "type": "string"
143 143
        },
144 144
        "dateFinished": {
145 145
          "type": "string"
146 146
        },
147 147
        "dateStarted": {
148 148
          "type": "string"
149 149
        },
150 150
        "goodreadsId": {
151 151
          "type": "string"
152 152
        },
153 153
        "goodreadsUrl": {
154 154
          "format": "uri",
155 155
          "type": "string"
156 156
        },
157 157
        "isbn": {
158 158
          "type": "string"
159 159
        },
160 160
        "openLibraryUrl": {
161 161
          "format": "uri",
162 162
          "type": "string"
163 163
        },
164 164
        "reviewUrl": {
165 165
          "format": "uri",
166 166
          "type": "string"
167 167
        },
168 168
        "subtitle": {
169 169
          "type": "string"
170 170
        }
171 171
      },
172 172
      "type": "object"
173 173
    },
174 174
    "bounds": {
175 175
      "properties": {
176 176
        "maxLatitude": {
177 177
          "type": "string"
178 178
        },
179 179
        "maxLongitude": {
180 180
          "type": "string"
181 181
        },
182 182
        "minLatitude": {
183 183
          "type": "string"
184 184
        },
185 185
        "minLongitude": {
186 186
          "type": "string"
187 187
        }
188 188
      },
189 189
      "required": [
190 190
        "minLatitude",
191 191
        "maxLatitude",
192 192
        "minLongitude",
193 193
        "maxLongitude"
194 194
      ],
195 195
      "type": "object"
196 196
    },
197 197
    "code": {
198 198
      "properties": {
199 199
        "action": {
200 200
          "type": "string"
201 201
        },
202 202
        "commitCount": {
203 203
          "type": "integer"
204 204
        },
205 205
        "commits": {
206 206
          "items": {
207 207
            "ref": "#commit",
208 208
            "type": "ref"
209 209
          },
210 210
          "type": "array"
211 211
        },
212 212
        "event": {
213 213
          "description": "GitHub event type (push, pull_request, issue_comment...).",
214 214
          "type": "string"
215 215
        },
216 216
        "githubEventId": {
217 217
          "type": "string"
218 218
        },
219 219
        "repo": {
220 220
          "description": "owner/name on GitHub.",
221 221
          "type": "string"
222 222
        },
223 223
        "url": {
224 224
          "format": "uri",
225 225
          "type": "string"
226 226
        }
227 227
      },
228 228
      "required": [
229 229
        "repo",
230 230
        "event"
231 231
      ],
232 232
      "type": "object"
233 233
    },
234 234
    "commit": {
235 235
      "properties": {
236 236
        "message": {
237 237
          "type": "string"
238 238
        },
239 239
        "sha": {
240 240
          "type": "string"
241 241
        }
242 242
      },
243 243
      "required": [
244 244
        "sha"
245 245
      ],
246 246
      "type": "object"
247 247
    },
248 248
    "crosspost": {
249 249
      "properties": {
250 250
        "name": {
251 251
          "type": "string"
252 252
        },
253 253
        "url": {
254 254
          "format": "uri",
255 255
          "type": "string"
256 256
        }
257 257
      },
258 258
      "required": [
259 259
        "url"
260 260
      ],
261 261
      "type": "object"
262 262
    },
263 263
    "game": {
264 264
      "properties": {
265 265
        "date": {
266 266
          "description": "YYYY-MM-DD of the session.",
267 267
          "type": "string"
268 268
        },
269 269
        "leagueId": {
270 270
          "description": "Hearthstone ranked league.",
271 271
          "type": "integer"
272 272
        },
273 273
        "legendRank": {
274 274
          "type": "integer"
275 275
        },
276 276
        "platform": {
277 277
          "knownValues": [
278 278
            "xbox",
279 279
            "hearthstone"
280 280
          ],
281 281
          "type": "string"
282 282
        },
283 283
        "starLevel": {
284 284
          "type": "integer"
285 285
        },
286 286
        "stars": {
287 287
          "type": "integer"
288 288
        },
289 289
        "titles": {
290 290
          "items": {
291 291
            "ref": "#gameTitle",
292 292
            "type": "ref"
293 293
          },
294 294
          "type": "array"
295 295
        }
296 296
      },
297 297
      "required": [
298 298
        "platform"
299 299
      ],
300 300
      "type": "object"
301 301
    },
302 302
    "gameTitle": {
303 303
      "properties": {
304 304
        "logoUrl": {
305 305
          "format": "uri",
306 306
          "type": "string"
307 307
        },
308 308
        "name": {
309 309
          "type": "string"
310 310
        }
311 311
      },
312 312
      "required": [
313 313
        "name"
314 314
      ],
315 315
      "type": "object"
316 316
    },
317 317
    "link": {
318 318
      "properties": {
319 319
        "note": {
320 320
          "type": "string"
321 321
        },
322 322
        "url": {
323 323
          "format": "uri",
324 324
          "type": "string"
325 325
        }
326 326
      },
327 327
      "required": [
328 328
        "url"
329 329
      ],
330 330
      "type": "object"
331 331
    },
332 332
    "main": {
333 333
      "properties": {
334 334
        "detail": {
335 335
          "refs": [
336 336
            "#article",
337 337
            "#photo",
338 338
            "#book",
339 339
            "#video",
340 340
            "#link",
341 +
            "#movie",
341 342
            "#activity",
342 343
            "#code",
343 344
            "#game",
344 345
            "#achievement"
345 346
          ],
346 347
          "type": "union"
347 348
        },
348 349
        "entryType": {
349 350
          "knownValues": [
350 351
            "article",
351 352
            "photo",
352 353
            "book",
353 354
            "video",
354 355
            "link",
356 +
            "movie",
355 357
            "activity.walk",
356 358
            "activity.hike",
357 359
            "activity.cycle",
358 360
            "activity.kayak",
359 361
            "activity.other",
360 362
            "code",
361 363
            "game",
362 364
            "game.achievement"
363 365
          ],
364 366
          "type": "string"
365 367
        },
366 368
        "localDate": {
367 369
          "description": "YYYY-MM-DD: the day the entry is filed under on the site.",
368 370
          "type": "string"
369 371
        },
370 372
        "timezone": {
371 373
          "description": "IANA zone the entry happened in; localDate is derived from publishedAt in this zone.",
372 374
          "type": "string"
373 375
        }
374 376
      },
375 377
      "required": [
376 378
        "entryType"
377 379
      ],
378 380
      "type": "object"
379 381
    },
382 +
    "movie": {
383 +
      "properties": {
384 +
        "letterboxdUrl": {
385 +
          "format": "uri",
386 +
          "type": "string"
387 +
        },
388 +
        "liked": {
389 +
          "type": "boolean"
390 +
        },
391 +
        "posterUrl": {
392 +
          "format": "uri",
393 +
          "type": "string"
394 +
        },
395 +
        "rating": {
396 +
          "description": "Star rating as a decimal string, absent when unrated.",
397 +
          "type": "string"
398 +
        },
399 +
        "rewatch": {
400 +
          "type": "boolean"
401 +
        },
402 +
        "tmdbId": {
403 +
          "description": "The Movie Database id.",
404 +
          "type": "string"
405 +
        },
406 +
        "year": {
407 +
          "type": "integer"
408 +
        }
409 +
      },
410 +
      "type": "object"
411 +
    },
380 412
    "photo": {
381 413
      "properties": {
382 414
        "altText": {
383 415
          "type": "string"
384 416
        },
385 417
        "contentHash": {
386 418
          "description": "sha256 fingerprint used for duplicate detection.",
387 419
          "type": "string"
388 420
        },
389 421
        "exif": {
390 422
          "description": "Camera and capture metadata as extracted at upload; non-integer numbers are decimal strings.",
391 423
          "type": "unknown"
392 424
        },
393 425
        "imageUrl": {
394 426
          "description": "Full-size delivery URL; coverImage on the document is the copy under atproto's blob cap.",
395 427
          "format": "uri",
396 428
          "type": "string"
397 429
        }
398 430
      },
399 431
      "type": "object"
400 432
    },
401 433
    "point": {
402 434
      "properties": {
403 435
        "latitude": {
404 436
          "description": "Decimal degrees as a string.",
405 437
          "type": "string"
406 438
        },
407 439
        "longitude": {
408 440
          "description": "Decimal degrees as a string.",
409 441
          "type": "string"
410 442
        }
411 443
      },
412 444
      "required": [
413 445
        "latitude",
414 446
        "longitude"
415 447
      ],
416 448
      "type": "object"
417 449
    },
418 450
    "video": {
419 451
      "properties": {
420 452
        "authorName": {
421 453
          "type": "string"
422 454
        },
423 455
        "authorUrl": {
424 456
          "format": "uri",
425 457
          "type": "string"
426 458
        },
427 459
        "durationSeconds": {
428 460
          "type": "integer"
429 461
        },
430 462
        "note": {
431 463
          "type": "string"
432 464
        },
433 465
        "provider": {
434 466
          "knownValues": [
435 467
            "youtube",
436 468
            "vimeo"
437 469
          ],
438 470
          "type": "string"
439 471
        },
440 472
        "thumbnailUrl": {
441 473
          "format": "uri",
442 474
          "type": "string"
443 475
        },
444 476
        "url": {
445 477
          "format": "uri",
446 478
          "type": "string"
447 479
        },
448 480
        "videoId": {
449 481
          "type": "string"
450 482
        }
451 483
      },
452 484
      "required": [
453 485
        "url"
454 486
      ],
455 487
      "type": "object"
456 488
    }
457 489
  },
458 490
  "description": "The dryan.com timeline's per-entry data, carried in the `content` open union of a site.standard.document record. The document holds what every entry shares (title, path, publishedAt, description, textContent, tags, coverImage); this holds the entry type, the day it belongs to, and the type-specific detail. atproto records cannot carry floats, so measurements that are not whole numbers (speeds, heart rates, coordinates) are decimal strings.",
459 491
  "id": "com.dryan.timeline.entry",
460 492
  "lexicon": 1
461 493
}

Compare Other Versions

Lexicon Garden

@