From
bafyreibtgizzj26rducti7zuxydxr7um3ynd4zzrayp7abhwyojw6k6zau
indexed 2026-03-19 20:24 UTC
View this version
To
bafyreifjxxz4e5ebsd5yaxlks74vt7vs5op2e72caxpvcgegxxrxm4n45q
indexed 2026-10-31 17:04 UTC
View this version
Compatibility
breaking 1 breaking change, 50 non-breaking changes.
Breaking changes (1)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.grain.gallery.defs#crossPostInfo", src: "social.grain.gallery.defs#crossPostInfo", tgt: "social.grain.gallery.defs#crossPostInfo.url", kind: "prop", name: Some("url") }
Non-breaking changes (50)
- AddedVertex AddedVertex { vertex_id: "app.bsky.richtext.facet" }
- AddedVertex AddedVertex { vertex_id: "community.lexicon.location.address" }
- AddedVertex AddedVertex { vertex_id: "community.lexicon.location.hthree" }
- AddedVertex AddedVertex { vertex_id: "social.grain.gallery.defs#crossPostInfo" }
- AddedVertex AddedVertex { vertex_id: "social.grain.gallery.defs#crossPostInfo.url" }
- AddedVertex AddedVertex { vertex_id: "social.grain.gallery.defs#galleryView.address" }
- AddedVertex AddedVertex { vertex_id: "social.grain.gallery.defs#galleryView.cameras" }
- AddedVertex AddedVertex { vertex_id: "social.grain.gallery.defs#galleryView.cameras:items" }
- AddedVertex AddedVertex { vertex_id: "social.grain.gallery.defs#galleryView.commentCount" }
- AddedVertex AddedVertex { vertex_id: "social.grain.gallery.defs#galleryView.createdAt" }
- AddedVertex AddedVertex { vertex_id: "social.grain.gallery.defs#galleryView.crossPost" }
- AddedVertex AddedVertex { vertex_id: "social.grain.gallery.defs#galleryView.description" }
- AddedVertex AddedVertex { vertex_id: "social.grain.gallery.defs#galleryView.facets" }
- AddedVertex AddedVertex { vertex_id: "social.grain.gallery.defs#galleryView.facets:items" }
- AddedVertex AddedVertex { vertex_id: "social.grain.gallery.defs#galleryView.favCount" }
- AddedVertex AddedVertex { vertex_id: "social.grain.gallery.defs#galleryView.favedByFollowing" }
- AddedVertex AddedVertex { vertex_id: "social.grain.gallery.defs#galleryView.favedByFollowing:items" }
- AddedVertex AddedVertex { vertex_id: "social.grain.gallery.defs#galleryView.group" }
- AddedVertex AddedVertex { vertex_id: "social.grain.gallery.defs#galleryView.location" }
- AddedVertex AddedVertex { vertex_id: "social.grain.gallery.defs#galleryView.locationDisplay" }
- AddedVertex AddedVertex { vertex_id: "social.grain.gallery.defs#galleryView.title" }
- AddedVertex AddedVertex { vertex_id: "social.grain.gallery.defs#galleryView.viewer" }
- AddedVertex AddedVertex { vertex_id: "social.grain.gallery.defs#viewerState" }
- AddedVertex AddedVertex { vertex_id: "social.grain.gallery.defs#viewerState.fav" }
- AddedVertex AddedVertex { vertex_id: "social.grain.group.defs#groupRef" }
- AddedEdge AddedEdge { src: "social.grain.gallery.defs#galleryView", tgt: "social.grain.gallery.defs#galleryView.address", kind: "prop", name: Some("address") }
- AddedEdge AddedEdge { src: "social.grain.gallery.defs#galleryView", tgt: "social.grain.gallery.defs#galleryView.cameras", kind: "prop", name: Some("cameras") }
- AddedEdge AddedEdge { src: "social.grain.gallery.defs#galleryView", tgt: "social.grain.gallery.defs#galleryView.commentCount", kind: "prop", name: Some("commentCount") }
- AddedEdge AddedEdge { src: "social.grain.gallery.defs#galleryView", tgt: "social.grain.gallery.defs#galleryView.createdAt", kind: "prop", name: Some("createdAt") }
- AddedEdge AddedEdge { src: "social.grain.gallery.defs#galleryView", tgt: "social.grain.gallery.defs#galleryView.crossPost", kind: "prop", name: Some("crossPost") }
- AddedEdge AddedEdge { src: "social.grain.gallery.defs#galleryView", tgt: "social.grain.gallery.defs#galleryView.description", kind: "prop", name: Some("description") }
- AddedEdge AddedEdge { src: "social.grain.gallery.defs#galleryView", tgt: "social.grain.gallery.defs#galleryView.facets", kind: "prop", name: Some("facets") }
- AddedEdge AddedEdge { src: "social.grain.gallery.defs#galleryView", tgt: "social.grain.gallery.defs#galleryView.favCount", kind: "prop", name: Some("favCount") }
- AddedEdge AddedEdge { src: "social.grain.gallery.defs#galleryView", tgt: "social.grain.gallery.defs#galleryView.favedByFollowing", kind: "prop", name: Some("favedByFollowing") }
- AddedEdge AddedEdge { src: "social.grain.gallery.defs#galleryView", tgt: "social.grain.gallery.defs#galleryView.group", kind: "prop", name: Some("group") }
- AddedEdge AddedEdge { src: "social.grain.gallery.defs#galleryView", tgt: "social.grain.gallery.defs#galleryView.location", kind: "prop", name: Some("location") }
- AddedEdge AddedEdge { src: "social.grain.gallery.defs#galleryView", tgt: "social.grain.gallery.defs#galleryView.locationDisplay", kind: "prop", name: Some("locationDisplay") }
- AddedEdge AddedEdge { src: "social.grain.gallery.defs#galleryView", tgt: "social.grain.gallery.defs#galleryView.title", kind: "prop", name: Some("title") }
- AddedEdge AddedEdge { src: "social.grain.gallery.defs#galleryView", tgt: "social.grain.gallery.defs#galleryView.viewer", kind: "prop", name: Some("viewer") }
- AddedEdge AddedEdge { src: "social.grain.gallery.defs#galleryView.address", tgt: "community.lexicon.location.address", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "social.grain.gallery.defs#galleryView.cameras", tgt: "social.grain.gallery.defs#galleryView.cameras:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "social.grain.gallery.defs#galleryView.crossPost", tgt: "social.grain.gallery.defs#crossPostInfo", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "social.grain.gallery.defs#galleryView.facets", tgt: "social.grain.gallery.defs#galleryView.facets:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "social.grain.gallery.defs#galleryView.facets:items", tgt: "app.bsky.richtext.facet", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "social.grain.gallery.defs#galleryView.favedByFollowing", tgt: "social.grain.gallery.defs#galleryView.favedByFollowing:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "social.grain.gallery.defs#galleryView.favedByFollowing:items", tgt: "social.grain.actor.defs#profileView", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "social.grain.gallery.defs#galleryView.group", tgt: "social.grain.group.defs#groupRef", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "social.grain.gallery.defs#galleryView.location", tgt: "community.lexicon.location.hthree", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "social.grain.gallery.defs#galleryView.viewer", tgt: "social.grain.gallery.defs#viewerState", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "social.grain.gallery.defs#viewerState", tgt: "social.grain.gallery.defs#viewerState.fav", kind: "prop", name: Some("fav") }
Migration guidance
Added
AddedVertex { vertex_id: "app.bsky.richtext.facet" }AddedVertex { vertex_id: "community.lexicon.location.address" }AddedVertex { vertex_id: "community.lexicon.location.hthree" }AddedVertex { vertex_id: "social.grain.gallery.defs#crossPostInfo" }AddedVertex { vertex_id: "social.grain.gallery.defs#crossPostInfo.url" }AddedVertex { vertex_id: "social.grain.gallery.defs#galleryView.address" }AddedVertex { vertex_id: "social.grain.gallery.defs#galleryView.cameras" }AddedVertex { vertex_id: "social.grain.gallery.defs#galleryView.cameras:items" }AddedVertex { vertex_id: "social.grain.gallery.defs#galleryView.commentCount" }AddedVertex { vertex_id: "social.grain.gallery.defs#galleryView.createdAt" }AddedVertex { vertex_id: "social.grain.gallery.defs#galleryView.crossPost" }AddedVertex { vertex_id: "social.grain.gallery.defs#galleryView.description" }AddedVertex { vertex_id: "social.grain.gallery.defs#galleryView.facets" }AddedVertex { vertex_id: "social.grain.gallery.defs#galleryView.facets:items" }AddedVertex { vertex_id: "social.grain.gallery.defs#galleryView.favCount" }AddedVertex { vertex_id: "social.grain.gallery.defs#galleryView.favedByFollowing" }AddedVertex { vertex_id: "social.grain.gallery.defs#galleryView.favedByFollowing:items" }AddedVertex { vertex_id: "social.grain.gallery.defs#galleryView.group" }AddedVertex { vertex_id: "social.grain.gallery.defs#galleryView.location" }AddedVertex { vertex_id: "social.grain.gallery.defs#galleryView.locationDisplay" }AddedVertex { vertex_id: "social.grain.gallery.defs#galleryView.title" }AddedVertex { vertex_id: "social.grain.gallery.defs#galleryView.viewer" }AddedVertex { vertex_id: "social.grain.gallery.defs#viewerState" }AddedVertex { vertex_id: "social.grain.gallery.defs#viewerState.fav" }AddedVertex { vertex_id: "social.grain.group.defs#groupRef" }
Notes
- Breaking: RequiredEdgeAdded { vertex_id: "social.grain.gallery.defs#crossPostInfo", src: "social.grain.gallery.defs#crossPostInfo", tgt: "social.grain.gallery.defs#crossPostInfo.url", kind: "prop", name: Some("url") }
- Non-breaking: AddedEdge { src: "social.grain.gallery.defs#galleryView", tgt: "social.grain.gallery.defs#galleryView.address", kind: "prop", name: Some("address") }
- Non-breaking: AddedEdge { src: "social.grain.gallery.defs#galleryView", tgt: "social.grain.gallery.defs#galleryView.cameras", kind: "prop", name: Some("cameras") }
- Non-breaking: AddedEdge { src: "social.grain.gallery.defs#galleryView", tgt: "social.grain.gallery.defs#galleryView.commentCount", kind: "prop", name: Some("commentCount") }
- Non-breaking: AddedEdge { src: "social.grain.gallery.defs#galleryView", tgt: "social.grain.gallery.defs#galleryView.createdAt", kind: "prop", name: Some("createdAt") }
- Non-breaking: AddedEdge { src: "social.grain.gallery.defs#galleryView", tgt: "social.grain.gallery.defs#galleryView.crossPost", kind: "prop", name: Some("crossPost") }
- Non-breaking: AddedEdge { src: "social.grain.gallery.defs#galleryView", tgt: "social.grain.gallery.defs#galleryView.description", kind: "prop", name: Some("description") }
- Non-breaking: AddedEdge { src: "social.grain.gallery.defs#galleryView", tgt: "social.grain.gallery.defs#galleryView.facets", kind: "prop", name: Some("facets") }
- Non-breaking: AddedEdge { src: "social.grain.gallery.defs#galleryView", tgt: "social.grain.gallery.defs#galleryView.favCount", kind: "prop", name: Some("favCount") }
- Non-breaking: AddedEdge { src: "social.grain.gallery.defs#galleryView", tgt: "social.grain.gallery.defs#galleryView.favedByFollowing", kind: "prop", name: Some("favedByFollowing") }
- Non-breaking: AddedEdge { src: "social.grain.gallery.defs#galleryView", tgt: "social.grain.gallery.defs#galleryView.group", kind: "prop", name: Some("group") }
- Non-breaking: AddedEdge { src: "social.grain.gallery.defs#galleryView", tgt: "social.grain.gallery.defs#galleryView.location", kind: "prop", name: Some("location") }
- Non-breaking: AddedEdge { src: "social.grain.gallery.defs#galleryView", tgt: "social.grain.gallery.defs#galleryView.locationDisplay", kind: "prop", name: Some("locationDisplay") }
- Non-breaking: AddedEdge { src: "social.grain.gallery.defs#galleryView", tgt: "social.grain.gallery.defs#galleryView.title", kind: "prop", name: Some("title") }
- Non-breaking: AddedEdge { src: "social.grain.gallery.defs#galleryView", tgt: "social.grain.gallery.defs#galleryView.viewer", kind: "prop", name: Some("viewer") }
- Non-breaking: AddedEdge { src: "social.grain.gallery.defs#galleryView.address", tgt: "community.lexicon.location.address", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "social.grain.gallery.defs#galleryView.cameras", tgt: "social.grain.gallery.defs#galleryView.cameras:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "social.grain.gallery.defs#galleryView.crossPost", tgt: "social.grain.gallery.defs#crossPostInfo", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "social.grain.gallery.defs#galleryView.facets", tgt: "social.grain.gallery.defs#galleryView.facets:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "social.grain.gallery.defs#galleryView.facets:items", tgt: "app.bsky.richtext.facet", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "social.grain.gallery.defs#galleryView.favedByFollowing", tgt: "social.grain.gallery.defs#galleryView.favedByFollowing:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "social.grain.gallery.defs#galleryView.favedByFollowing:items", tgt: "social.grain.actor.defs#profileView", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "social.grain.gallery.defs#galleryView.group", tgt: "social.grain.group.defs#groupRef", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "social.grain.gallery.defs#galleryView.location", tgt: "community.lexicon.location.hthree", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "social.grain.gallery.defs#galleryView.viewer", tgt: "social.grain.gallery.defs#viewerState", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "social.grain.gallery.defs#viewerState", tgt: "social.grain.gallery.defs#viewerState.fav", kind: "prop", name: Some("fav") }
Changes
11
{22
"$type": "com.atproto.lexicon.schema",33
"defs": {4
"crossPostInfo": {5
"properties": {6
"url": {7
"description": "URL to the cross-posted Bluesky post.",8
"format": "uri",9
"type": "string"10
}11
},12
"required": [13
"url"14
],15
"type": "object"16
},417
"galleryView": {518
"properties": {19
"address": {20
"ref": "community.lexicon.location.address",21
"type": "ref"22
},23
"cameras": {24
"description": "List of camera make and models used in this gallery derived from EXIF data.",25
"items": {26
"type": "string"27
},28
"type": "array"29
},630
"cid": {731
"format": "cid",832
"type": "string"933
},34
"commentCount": {35
"type": "integer"36
},37
"createdAt": {38
"format": "datetime",39
"type": "string"40
},1041
"creator": {1142
"ref": "social.grain.actor.defs#profileView",1243
"type": "ref"1344
},45
"crossPost": {46
"ref": "#crossPostInfo",47
"type": "ref"48
},49
"description": {50
"type": "string"51
},52
"facets": {53
"description": "Annotations of description text (mentions, URLs, hashtags, etc)",54
"items": {55
"ref": "app.bsky.richtext.facet",56
"type": "ref"57
},58
"type": "array"59
},60
"favCount": {61
"type": "integer"62
},63
"favedByFollowing": {64
"description": "Profiles of accounts the viewer follows who favorited this gallery. Capped for display — see favCount for the total. Excludes the viewer.",65
"items": {66
"ref": "social.grain.actor.defs#profileView",67
"type": "ref"68
},69
"type": "array"70
},71
"group": {72
"description": "The group whose pool this gallery is in, if any.",73
"ref": "social.grain.group.defs#groupRef",74
"type": "ref"75
},1476
"indexedAt": {1577
"format": "datetime",1678
"type": "string"1779
},1880
"items": {1981
"items": {2082
"refs": [2183
"social.grain.photo.defs#photoView"2284
],2385
"type": "union"2486
},2587
"type": "array"2688
},2789
"labels": {2890
"items": {2991
"ref": "com.atproto.label.defs#label",3092
"type": "ref"3193
},3294
"type": "array"3395
},96
"location": {97
"ref": "community.lexicon.location.hthree",98
"type": "ref"99
},100
"locationDisplay": {101
"description": "Formatted location label for display.",102
"type": "string"103
},34104
"record": {35105
"type": "unknown"36106
},107
"title": {108
"type": "string"109
},37110
"uri": {38111
"format": "at-uri",39112
"type": "string"113
},114
"viewer": {115
"ref": "#viewerState",116
"type": "ref"40117
}41118
},42119
"required": [43120
"uri",44121
"cid",45122
"creator",46123
"record",47124
"indexedAt"48125
],49126
"type": "object"127
},128
"viewerState": {129
"description": "Metadata about the requesting account's relationship with the subject content. Only has meaningful content for authed requests.",130
"properties": {131
"fav": {132
"format": "at-uri",133
"type": "string"134
}135
},136
"type": "object"50137
}51138
},52139
"id": "social.grain.gallery.defs",53140
"lexicon": 154141
}