From
bafyreif7mhepie2ri6sbvsd5cvfuzhxyx4ybjgtemsrsl2tzxdb4qbp5sq
indexed 2026-07-06 07:13 UTC
View this version
To
bafyreie6u4btqoifkfm5sas6vza5pao6p674u7uq3so425mynnne63rysa
indexed 2026-08-30 02:51 UTC
View this version
Compatibility
breaking 7 breaking changes, 7 non-breaking changes.
Breaking changes (7)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "community.cheese.log:body", src: "community.cheese.log:body", tgt: "community.cheese.log:body.cheeses", kind: "prop", name: Some("cheeses") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "community.cheese.log:body", src: "community.cheese.log:body", tgt: "community.cheese.log:body.cheeseRefs", kind: "prop", name: Some("cheeseRefs") }
- RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "community.cheese.log:body", src: "community.cheese.log:body", tgt: "community.cheese.log:body.cheeseRef", kind: "prop", name: Some("cheeseRef") }
- RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "community.cheese.log:body", src: "community.cheese.log:body", tgt: "community.cheese.log:body.cheese", kind: "prop", name: Some("cheese") }
- RemovedVertex RemovedVertex { vertex_id: "community.cheese.log:body.cheese" }
- RemovedVertex RemovedVertex { vertex_id: "community.cheese.log:body.cheeseRef" }
- RemovedEdge RemovedEdge { src: "community.cheese.log:body.cheese", tgt: "community.cheese.log#cheese", kind: "ref", name: None }
Non-breaking changes (7)
- AddedVertex AddedVertex { vertex_id: "community.cheese.log:body.cheeseRefs" }
- AddedVertex AddedVertex { vertex_id: "community.cheese.log:body.cheeseRefs:items" }
- AddedVertex AddedVertex { vertex_id: "community.cheese.log:body.cheeses" }
- AddedVertex AddedVertex { vertex_id: "community.cheese.log:body.cheeses:items" }
- AddedEdge AddedEdge { src: "community.cheese.log:body.cheeseRefs", tgt: "community.cheese.log:body.cheeseRefs:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "community.cheese.log:body.cheeses", tgt: "community.cheese.log:body.cheeses:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "community.cheese.log:body.cheeses:items", tgt: "community.cheese.log#cheese", kind: "ref", name: None }
Migration guidance
Removed
RemovedVertex { vertex_id: "community.cheese.log:body.cheese" }RemovedVertex { vertex_id: "community.cheese.log:body.cheeseRef" }
Added
AddedVertex { vertex_id: "community.cheese.log:body.cheeseRefs" }AddedVertex { vertex_id: "community.cheese.log:body.cheeseRefs:items" }AddedVertex { vertex_id: "community.cheese.log:body.cheeses" }AddedVertex { vertex_id: "community.cheese.log:body.cheeses:items" }
Notes
- Breaking: RequiredEdgeAdded { vertex_id: "community.cheese.log:body", src: "community.cheese.log:body", tgt: "community.cheese.log:body.cheeses", kind: "prop", name: Some("cheeses") }
- Breaking: RequiredEdgeAdded { vertex_id: "community.cheese.log:body", src: "community.cheese.log:body", tgt: "community.cheese.log:body.cheeseRefs", kind: "prop", name: Some("cheeseRefs") }
- Breaking: RequiredEdgeRemoved { vertex_id: "community.cheese.log:body", src: "community.cheese.log:body", tgt: "community.cheese.log:body.cheeseRef", kind: "prop", name: Some("cheeseRef") }
- Breaking: RequiredEdgeRemoved { vertex_id: "community.cheese.log:body", src: "community.cheese.log:body", tgt: "community.cheese.log:body.cheese", kind: "prop", name: Some("cheese") }
- Breaking: RemovedEdge { src: "community.cheese.log:body.cheese", tgt: "community.cheese.log#cheese", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "community.cheese.log:body.cheeseRefs", tgt: "community.cheese.log:body.cheeseRefs:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "community.cheese.log:body.cheeses", tgt: "community.cheese.log:body.cheeses:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "community.cheese.log:body.cheeses:items", tgt: "community.cheese.log#cheese", kind: "ref", name: None }
Changes
11
{22
"$type": "com.atproto.lexicon.schema",33
"defs": {44
"cheese": {55
"description": "Cheese type fields embedded in a log entry",66
"properties": {77
"agedWeeks": {88
"description": "Typical aging time in weeks",99
"minimum": 0,1010
"type": "integer"1111
},1212
"aka": {1313
"description": "Also-known-as names for the cheese",1414
"items": {1515
"maxLength": 200,1616
"type": "string"1717
},1818
"maxLength": 20,1919
"type": "array"2020
},2121
"availableMonths": {2222
"description": "Months the cheese is available (1-12) if seasonal",2323
"items": {2424
"maximum": 12,2525
"minimum": 1,2626
"type": "integer"2727
},2828
"maxLength": 12,2929
"type": "array"3030
},3131
"description": {3232
"description": "General description of the cheese",3333
"maxLength": 5000,3434
"type": "string"3535
},3636
"link": {3737
"description": "Optional reference link about the cheese",3838
"format": "uri",3939
"maxLength": 500,4040
"type": "string"4141
},4242
"milk": {4343
"description": "Milk source (e.g., cow, goat, sheep, buffalo, mixed)",4444
"maxLength": 100,4545
"type": "string"4646
},4747
"name": {4848
"description": "Name of the cheese",4949
"maxLength": 200,5050
"type": "string"5151
},5252
"origin": {5353
"description": "Geographic and producer origin of the cheese",5454
"ref": "#origin",5555
"type": "ref"5656
},5757
"pasteurized": {5858
"description": "Whether the cheese is made from pasteurized milk",5959
"type": "boolean"6060
},6161
"rind": {6262
"description": "Rind type (e.g., washed, bloomy, natural)",6363
"maxLength": 100,6464
"type": "string"6565
},6666
"seasonal": {6767
"description": "Whether the cheese has restricted seasonal availability",6868
"type": "boolean"6969
},7070
"servingTempCelsius": {7171
"description": "Recommended serving temperature range in Celsius",7272
"ref": "#temperatureRange",7373
"type": "ref"7474
},7575
"tastingNotes": {7676
"description": "Tasting notes and flavor profile",7777
"maxLength": 2000,7878
"type": "string"7979
},8080
"texture": {8181
"description": "Texture classification",8282
"knownValues": [8383
"soft",8484
"semi-soft",8585
"semi-hard",8686
"hard",8787
"blue"8888
],8989
"maxLength": 50,9090
"type": "string"9191
}9292
},9393
"required": [9494
"name"9595
],9696
"type": "object"9797
},9898
"main": {99
"description": "A personal log entry about cheese",99
"description": "A personal log entry about one or more cheeses",100100
"key": "tid",101101
"record": {102102
"properties": {103103
"action": {104104
"description": "What the user did or wants to do with the cheese (e.g., ate, bought, wishlisted)",105105
"knownValues": [106106
"ate",107107
"bought",108108
"wishlisted"109109
],110110
"maxLength": 50,111111
"type": "string"112112
},113
"cheese": {114
"description": "Snapshot of the cheese type fields at the time of logging",115
"ref": "#cheese",116
"type": "ref"113
"cheeseRefs": {114
"description": "AT-URI references to the canonical cheese type records for this log entry (one or more)",115
"items": {116
"format": "at-uri",117
"type": "string"118
},119
"maxLength": 20,120
"minLength": 1,121
"type": "array"117122
},118
"cheeseRef": {119
"description": "AT-URI reference to the canonical cheese type record",120
"format": "at-uri",121
"type": "string"123
"cheeses": {124
"description": "Snapshots of the cheese type fields at the time of logging, aligned by index with cheeseRefs",125
"items": {126
"ref": "#cheese",127
"type": "ref"128
},129
"maxLength": 20,130
"minLength": 1,131
"type": "array"122132
},123133
"createdAt": {124134
"description": "Timestamp when the log was created",125135
"format": "datetime",126136
"type": "string"127137
},128138
"notes": {129139
"description": "Personal notes about the cheese",130140
"maxLength": 2000,131141
"type": "string"132142
},133143
"photos": {134144
"description": "Optional photos of the cheese",135145
"items": {136146
"ref": "#photo",137147
"type": "ref"138148
},139149
"maxLength": 4,140150
"type": "array"141151
}142152
},143153
"required": [144
"cheeseRef",145
"cheese",154
"cheeseRefs",155
"cheeses",146156
"action",147157
"createdAt"148158
],149159
"type": "object"150160
},151161
"type": "record"152162
},153163
"origin": {154164
"description": "Geographic and producer origin of a cheese",155165
"properties": {156166
"country": {157167
"maxLength": 100,158168
"type": "string"159169
},160170
"producer": {161171
"maxLength": 200,162172
"type": "string"163173
},164174
"region": {165175
"maxLength": 100,166176
"type": "string"167177
}168178
},169179
"type": "object"170180
},171181
"photo": {172182
"accept": [173183
"image/*"174184
],175185
"description": "A photo of the cheese",176186
"maxSize": 10000000,177187
"type": "blob"178188
},179189
"temperatureRange": {180190
"description": "A numeric range",181191
"properties": {182192
"max": {183193
"description": "Maximum value",184194
"type": "integer"185195
},186196
"min": {187197
"description": "Minimum value",188198
"type": "integer"189199
}190200
},191201
"required": [192202
"min",193203
"max"194204
],195205
"type": "object"196206
}197207
},198208
"description": "A cheese log: take notes on buying, eating, or wanting to do either of those things with cheese",199209
"id": "community.cheese.log",200210
"lexicon": 1201211
}