garden.lexicon.nourishing-earthworm.crepeWatch

tyler.fun

Schema Diff

+43 -3

From

CID
bafyreiaa3dr6rro...
Indexed At
2026-09-29 05:09 UTC
View this version

To

CID
bafyreifmpc4avso...
Indexed At
2026-10-02 22:49 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

3 breaking changes, 13 non-breaking changes.

Breaking Changes (3)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "garden.lexicon.nourishing-earthworm.crepeWatch#place", src: "garden.lexicon.nourishing-earthworm.crepeWatch#place", tgt: "garden.lexicon.nourishing-earthworm.crepeWatch#place.name", kind: "prop", name: Some("name") }
  • RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "garden.lexicon.nourishing-earthworm.crepeWatch:body", src: "garden.lexicon.nourishing-earthworm.crepeWatch:body", tgt: "garden.lexicon.nourishing-earthworm.crepeWatch:body.watchedAt", kind: "prop", name: Some("watchedAt") }
  • ConstraintTightened ConstraintTightened { vertex_id: "garden.lexicon.nourishing-earthworm.crepeWatch:body.source", sort: "knownValues", old_value: "[\"crepe\",\"plex\",\"popfeed\"]", new_value: "[\"crepe\",\"plex\",\"popfeed\",\"letterboxd\"]" }
Non-Breaking Changes (13)
  • AddedVertex AddedVertex { vertex_id: "garden.lexicon.nourishing-earthworm.crepeWatch#place" }
  • AddedVertex AddedVertex { vertex_id: "garden.lexicon.nourishing-earthworm.crepeWatch#place.address" }
  • AddedVertex AddedVertex { vertex_id: "garden.lexicon.nourishing-earthworm.crepeWatch#place.fsqPlaceId" }
  • AddedVertex AddedVertex { vertex_id: "garden.lexicon.nourishing-earthworm.crepeWatch#place.latitude" }
  • AddedVertex AddedVertex { vertex_id: "garden.lexicon.nourishing-earthworm.crepeWatch#place.longitude" }
  • AddedVertex AddedVertex { vertex_id: "garden.lexicon.nourishing-earthworm.crepeWatch#place.name" }
  • AddedVertex AddedVertex { vertex_id: "garden.lexicon.nourishing-earthworm.crepeWatch:body.place" }
  • AddedEdge AddedEdge { src: "garden.lexicon.nourishing-earthworm.crepeWatch#place", tgt: "garden.lexicon.nourishing-earthworm.crepeWatch#place.address", kind: "prop", name: Some("address") }
  • AddedEdge AddedEdge { src: "garden.lexicon.nourishing-earthworm.crepeWatch#place", tgt: "garden.lexicon.nourishing-earthworm.crepeWatch#place.fsqPlaceId", kind: "prop", name: Some("fsqPlaceId") }
  • AddedEdge AddedEdge { src: "garden.lexicon.nourishing-earthworm.crepeWatch#place", tgt: "garden.lexicon.nourishing-earthworm.crepeWatch#place.latitude", kind: "prop", name: Some("latitude") }
  • AddedEdge AddedEdge { src: "garden.lexicon.nourishing-earthworm.crepeWatch#place", tgt: "garden.lexicon.nourishing-earthworm.crepeWatch#place.longitude", kind: "prop", name: Some("longitude") }
  • AddedEdge AddedEdge { src: "garden.lexicon.nourishing-earthworm.crepeWatch:body", tgt: "garden.lexicon.nourishing-earthworm.crepeWatch:body.place", kind: "prop", name: Some("place") }
  • AddedEdge AddedEdge { src: "garden.lexicon.nourishing-earthworm.crepeWatch:body.place", tgt: "garden.lexicon.nourishing-earthworm.crepeWatch#place", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "garden.lexicon.nourishing-earthworm.crepeWatch#place" }
  • AddedVertex { vertex_id: "garden.lexicon.nourishing-earthworm.crepeWatch#place.address" }
  • AddedVertex { vertex_id: "garden.lexicon.nourishing-earthworm.crepeWatch#place.fsqPlaceId" }
  • AddedVertex { vertex_id: "garden.lexicon.nourishing-earthworm.crepeWatch#place.latitude" }
  • AddedVertex { vertex_id: "garden.lexicon.nourishing-earthworm.crepeWatch#place.longitude" }
  • AddedVertex { vertex_id: "garden.lexicon.nourishing-earthworm.crepeWatch#place.name" }
  • AddedVertex { vertex_id: "garden.lexicon.nourishing-earthworm.crepeWatch:body.place" }

Constraint Changes

  • ConstraintTightened ConstraintTightened { vertex_id: "garden.lexicon.nourishing-earthworm.crepeWatch:body.source", sort: "knownValues", old_value: "[\"crepe\",\"plex\",\"popfeed\"]", new_value: "[\"crepe\",\"plex\",\"popfeed\",\"letterboxd\"]" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "garden.lexicon.nourishing-earthworm.crepeWatch#place", src: "garden.lexicon.nourishing-earthworm.crepeWatch#place", tgt: "garden.lexicon.nourishing-earthworm.crepeWatch#place.name", kind: "prop", name: Some("name") }
  • Breaking: RequiredEdgeRemoved { vertex_id: "garden.lexicon.nourishing-earthworm.crepeWatch:body", src: "garden.lexicon.nourishing-earthworm.crepeWatch:body", tgt: "garden.lexicon.nourishing-earthworm.crepeWatch:body.watchedAt", kind: "prop", name: Some("watchedAt") }
  • Non-breaking: AddedEdge { src: "garden.lexicon.nourishing-earthworm.crepeWatch#place", tgt: "garden.lexicon.nourishing-earthworm.crepeWatch#place.address", kind: "prop", name: Some("address") }
  • Non-breaking: AddedEdge { src: "garden.lexicon.nourishing-earthworm.crepeWatch#place", tgt: "garden.lexicon.nourishing-earthworm.crepeWatch#place.fsqPlaceId", kind: "prop", name: Some("fsqPlaceId") }
  • Non-breaking: AddedEdge { src: "garden.lexicon.nourishing-earthworm.crepeWatch#place", tgt: "garden.lexicon.nourishing-earthworm.crepeWatch#place.latitude", kind: "prop", name: Some("latitude") }
  • Non-breaking: AddedEdge { src: "garden.lexicon.nourishing-earthworm.crepeWatch#place", tgt: "garden.lexicon.nourishing-earthworm.crepeWatch#place.longitude", kind: "prop", name: Some("longitude") }
  • Non-breaking: AddedEdge { src: "garden.lexicon.nourishing-earthworm.crepeWatch:body", tgt: "garden.lexicon.nourishing-earthworm.crepeWatch:body.place", kind: "prop", name: Some("place") }
  • Non-breaking: AddedEdge { src: "garden.lexicon.nourishing-earthworm.crepeWatch:body.place", tgt: "garden.lexicon.nourishing-earthworm.crepeWatch#place", kind: "ref", name: None }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "main": {
5 5
      "description": "One viewing of a movie, or of a TV show, season or episode, in crepe's private diary. A watch with no rating and no review text is a plain play (for example an episode Plex reported) and stays out of the diary log.",
6 6
      "key": "tid",
7 7
      "record": {
8 8
        "properties": {
9 9
          "containsSpoilers": {
10 10
            "type": "boolean"
11 11
          },
12 12
          "createdAt": {
13 13
            "description": "When this record was created (not the watch time).",
14 14
            "format": "datetime",
15 15
            "type": "string"
16 16
          },
17 17
          "episodeNumber": {
18 18
            "description": "Required for episode watches.",
19 19
            "minimum": 0,
20 20
            "type": "integer"
21 21
          },
22 22
          "episodeTitle": {
23 23
            "maxLength": 1000,
24 24
            "type": "string"
25 25
          },
26 26
          "episodeTmdbId": {
27 27
            "description": "The episode's own TMDB id, when known.",
28 28
            "maxLength": 32,
29 29
            "type": "string"
30 30
          },
31 31
          "genres": {
32 32
            "items": {
33 33
              "maxLength": 100,
34 34
              "type": "string"
35 35
            },
36 36
            "maxLength": 20,
37 37
            "type": "array"
38 38
          },
39 39
          "imdbId": {
40 40
            "maxLength": 32,
41 41
            "type": "string"
42 42
          },
43 43
          "kind": {
44 44
            "description": "What was watched.",
45 45
            "knownValues": [
46 46
              "movie",
47 47
              "show",
48 48
              "season",
49 49
              "episode"
50 50
            ],
51 51
            "type": "string"
52 52
          },
53 53
          "mainCredit": {
54 54
            "maxLength": 300,
55 55
            "type": "string"
56 56
          },
57 57
          "mainCreditRole": {
58 58
            "knownValues": [
59 59
              "director",
60 60
              "creator"
61 61
            ],
62 62
            "type": "string"
63 63
          },
64 +
          "place": {
65 +
            "description": "Where it was watched: a movie theater from the Foursquare places catalog, or any place of the user's own (\"Steve's house\").",
66 +
            "ref": "#place",
67 +
            "type": "ref"
68 +
          },
64 69
          "rating": {
65 70
            "description": "Half stars out of five, times two. Absent means unrated.",
66 71
            "maximum": 10,
67 72
            "minimum": 1,
68 73
            "type": "integer"
69 74
          },
70 75
          "releaseDate": {
71 76
            "description": "Snapshot, YYYY-MM-DD.",
72 77
            "maxLength": 32,
73 78
            "type": "string"
74 79
          },
75 80
          "rewatch": {
81 +
            "description": "deprecated 2026-09-29: derived by readers, no longer written",
76 82
            "type": "boolean"
77 83
          },
78 84
          "seasonNumber": {
79 85
            "description": "Required for season and episode watches.",
80 86
            "minimum": 0,
81 87
            "type": "integer"
82 88
          },
83 89
          "source": {
84 90
            "description": "Where this watch was first recorded.",
85 91
            "knownValues": [
86 92
              "crepe",
87 93
              "plex",
88 -
              "popfeed"
94 +
              "popfeed",
95 +
              "letterboxd"
89 96
            ],
90 97
            "type": "string"
91 98
          },
92 99
          "stamps": {
93 100
            "description": "Map of field group name to hybrid logical clock stamp, for field-level last-write-wins merge between devices and the sync server.",
94 101
            "type": "unknown"
95 102
          },
96 103
          "tags": {
97 104
            "items": {
98 105
              "maxGraphemes": 64,
99 106
              "maxLength": 640,
100 107
              "type": "string"
101 108
            },
102 109
            "maxLength": 50,
103 110
            "type": "array"
104 111
          },
105 112
          "text": {
106 113
            "description": "Review text, plain.",
107 114
            "maxGraphemes": 10000,
108 115
            "maxLength": 100000,
109 116
            "type": "string"
110 117
          },
111 118
          "title": {
112 119
            "description": "Snapshot of the movie or show title, for offline display.",
113 120
            "maxLength": 1000,
114 121
            "type": "string"
115 122
          },
116 123
          "tmdbId": {
117 124
            "description": "TMDB id of the movie, or of the show for show, season and episode watches. Never an episode's own id.",
118 125
            "maxLength": 32,
119 126
            "type": "string"
120 127
          },
121 128
          "updatedAt": {
122 129
            "format": "datetime",
123 130
            "type": "string"
124 131
          },
125 132
          "watchedAt": {
126 -
            "description": "When it was watched.",
133 +
            "description": "When it was watched. Absent for a watch logged without a date.",
127 134
            "format": "datetime",
128 135
            "type": "string"
129 136
          }
130 137
        },
131 138
        "required": [
132 139
          "kind",
133 140
          "tmdbId",
134 -
          "watchedAt",
135 141
          "createdAt",
136 142
          "updatedAt"
137 143
        ],
138 144
        "type": "object"
139 145
      },
140 146
      "type": "record"
147 +
    },
148 +
    "place": {
149 +
      "properties": {
150 +
        "address": {
151 +
          "description": "One-line address snapshot, for display.",
152 +
          "maxGraphemes": 500,
153 +
          "maxLength": 5000,
154 +
          "type": "string"
155 +
        },
156 +
        "fsqPlaceId": {
157 +
          "description": "Foursquare OS Places id when the place came from the catalog. Absent for a place of the user's own.",
158 +
          "maxLength": 64,
159 +
          "type": "string"
160 +
        },
161 +
        "latitude": {
162 +
          "description": "Decimal degrees as a string, like community.lexicon.location.geo.",
163 +
          "maxLength": 32,
164 +
          "type": "string"
165 +
        },
166 +
        "longitude": {
167 +
          "maxLength": 32,
168 +
          "type": "string"
169 +
        },
170 +
        "name": {
171 +
          "description": "Display name. A theater's catalog name, or whatever the user typed.",
172 +
          "maxGraphemes": 300,
173 +
          "maxLength": 3000,
174 +
          "type": "string"
175 +
        }
176 +
      },
177 +
      "required": [
178 +
        "name"
179 +
      ],
180 +
      "type": "object"
141 181
    }
142 182
  },
143 183
  "id": "garden.lexicon.nourishing-earthworm.crepeWatch",
144 184
  "lexicon": 1
145 185
}

Compare Other Versions

Lexicon Garden

@