com.dryan.timeline.entry
Schema Diff
+32 -0
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
}