From
bafyreicfwz2dwiuigb6ngtksgenacn2if7uegf44vzet7wvaonrpv6r4cq
indexed 2026-06-21 18:48 UTC
View this version
To
bafyreig6u4qzsdphybct6qqveulcoyn5ir4w3ucypopj4kr43dlw2jwzt4
indexed 2026-07-26 16:24 UTC
View this version
Compatibility
breaking 6 breaking changes, 7 non-breaking changes.
Breaking changes (6)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "place.pod.show:body", src: "place.pod.show:body", tgt: "place.pod.show:body.language", kind: "prop", name: Some("language") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "place.pod.show:body", src: "place.pod.show:body", tgt: "place.pod.show:body.website", kind: "prop", name: Some("website") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "place.pod.show:body", src: "place.pod.show:body", tgt: "place.pod.show:body.categories", kind: "prop", name: Some("categories") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "place.pod.show:body", src: "place.pod.show:body", tgt: "place.pod.show:body.feedUrl", kind: "prop", name: Some("feedUrl") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "place.pod.show:body", src: "place.pod.show:body", tgt: "place.pod.show:body.explicit", kind: "prop", name: Some("explicit") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "place.pod.show:body", src: "place.pod.show:body", tgt: "place.pod.show:body.coverImageUrl", kind: "prop", name: Some("coverImageUrl") }
Non-breaking changes (7)
- AddedVertex AddedVertex { vertex_id: "place.pod.show:body.feedUrl" }
- AddedVertex AddedVertex { vertex_id: "place.pod.show:body.medium" }
- AddedVertex AddedVertex { vertex_id: "place.pod.show:body.podcastGuid" }
- AddedVertex AddedVertex { vertex_id: "place.pod.show:body.type" }
- AddedEdge AddedEdge { src: "place.pod.show:body", tgt: "place.pod.show:body.medium", kind: "prop", name: Some("medium") }
- AddedEdge AddedEdge { src: "place.pod.show:body", tgt: "place.pod.show:body.podcastGuid", kind: "prop", name: Some("podcastGuid") }
- AddedEdge AddedEdge { src: "place.pod.show:body", tgt: "place.pod.show:body.type", kind: "prop", name: Some("type") }
Migration guidance
Added
AddedVertex { vertex_id: "place.pod.show:body.feedUrl" }AddedVertex { vertex_id: "place.pod.show:body.medium" }AddedVertex { vertex_id: "place.pod.show:body.podcastGuid" }AddedVertex { vertex_id: "place.pod.show:body.type" }
Notes
- Breaking: RequiredEdgeAdded { vertex_id: "place.pod.show:body", src: "place.pod.show:body", tgt: "place.pod.show:body.language", kind: "prop", name: Some("language") }
- Breaking: RequiredEdgeAdded { vertex_id: "place.pod.show:body", src: "place.pod.show:body", tgt: "place.pod.show:body.website", kind: "prop", name: Some("website") }
- Breaking: RequiredEdgeAdded { vertex_id: "place.pod.show:body", src: "place.pod.show:body", tgt: "place.pod.show:body.categories", kind: "prop", name: Some("categories") }
- Breaking: RequiredEdgeAdded { vertex_id: "place.pod.show:body", src: "place.pod.show:body", tgt: "place.pod.show:body.feedUrl", kind: "prop", name: Some("feedUrl") }
- Breaking: RequiredEdgeAdded { vertex_id: "place.pod.show:body", src: "place.pod.show:body", tgt: "place.pod.show:body.explicit", kind: "prop", name: Some("explicit") }
- Breaking: RequiredEdgeAdded { vertex_id: "place.pod.show:body", src: "place.pod.show:body", tgt: "place.pod.show:body.coverImageUrl", kind: "prop", name: Some("coverImageUrl") }
- Non-breaking: AddedEdge { src: "place.pod.show:body", tgt: "place.pod.show:body.medium", kind: "prop", name: Some("medium") }
- Non-breaking: AddedEdge { src: "place.pod.show:body", tgt: "place.pod.show:body.podcastGuid", kind: "prop", name: Some("podcastGuid") }
- Non-breaking: AddedEdge { src: "place.pod.show:body", tgt: "place.pod.show:body.type", kind: "prop", name: Some("type") }
Changes
11
{22
"$type": "com.atproto.lexicon.schema",33
"defs": {44
"main": {55
"description": "A podcast show or channel.",66
"key": "tid",77
"record": {88
"properties": {99
"author": {1010
"description": "Name of the show's author or primary creator.",1111
"maxLength": 100,1212
"type": "string"1313
},1414
"categories": {15
"description": "List of content categories or genres. Use standard values where possible.",15
"description": "Apple Podcasts categories, ordered by priority, with optional subcategories.",1616
"items": {1717
"maxLength": 50,1818
"type": "string"1919
},2020
"type": "array"2121
},2222
"copyright": {2323
"description": "Copyright notice or license identifier.",2424
"maxLength": 500,2525
"type": "string"2626
},2727
"coverImageUrl": {28
"description": "URL of the show's primary cover artwork. Should be square and at least 1400x1400px.",28
"description": "Apple-compatible show artwork URL: JPEG or PNG, 1400x1400 to 3000x3000 pixels.",2929
"format": "uri",3030
"maxLength": 2048,3131
"type": "string"3232
},3333
"createdAt": {3434
"description": "ISO 8601 timestamp of when the show record was created.",3535
"format": "datetime",3636
"type": "string"3737
},3838
"description": {3939
"description": "A short summary describing the show's content, format, and purpose.",4040
"maxGraphemes": 2000,4141
"type": "string"4242
},4343
"episodeType": {4444
"description": "Default episode type for the show. Common values: full, trailer, bonus.",4545
"knownValues": [4646
"full",4747
"trailer",4848
"bonus"4949
],5050
"maxLength": 20,5151
"type": "string"5252
},5353
"explicit": {54
"description": "Whether the show typically contains explicit content. Defaults to false if omitted.",54
"description": "Whether the show contains explicit content.",5555
"type": "boolean"5656
},57
"feedUrl": {58
"description": "Canonical public RSS feed URL, used for atom:link rel=\"self\".",59
"format": "uri",60
"maxLength": 2048,61
"type": "string"62
},5763
"language": {58
"description": "Primary language of the show content, formatted as an IETF language tag (e.g. en-US).",64
"description": "Primary language in ISO 639 format (for example, en-us).",5965
"maxLength": 10,6066
"type": "string"6167
},6268
"locked": {63
"description": "Whether the show record is locked from edits. Defaults to false.",69
"description": "Whether the show record is locked from edits.",6470
"type": "boolean"6571
},72
"medium": {73
"description": "Podcasting 2.0 medium, normally podcast; other media types are optional.",74
"maxLength": 50,75
"type": "string"76
},6677
"ownerEmail": {6778
"description": "Contact email for the show owner.",6879
"maxLength": 320,6980
"type": "string"7081
},7182
"ownerName": {7283
"description": "Legal or business owner name. Useful for copyright and licensing.",7384
"maxLength": 200,7485
"type": "string"7586
},7687
"people": {7788
"description": "List of people involved in the show (hosts, producers, editors, etc.).",7889
"items": {7990
"maxLength": 100,8091
"type": "string"8192
},8293
"type": "array"8394
},95
"podcastGuid": {96
"description": "Stable podcast:guid value preserved across feed-host migrations.",97
"maxLength": 255,98
"type": "string"99
},84100
"title": {85101
"description": "The display name of the podcast show. Keep under 100 characters for directory compatibility.",86102
"maxLength": 100,87103
"type": "string"88104
},105
"type": {106
"description": "Apple show type. Serial shows must identify themselves as serial.",107
"knownValues": [108
"episodic",109
"serial"110
],111
"maxLength": 20,112
"type": "string"113
},89114
"website": {90
"description": "Official website URL for the show. Should use HTTPS.",115
"description": "Public website URL for the show, used as the RSS channel link.",91116
"format": "uri",92117
"maxLength": 2048,93118
"type": "string"94119
}95120
},96121
"required": [97122
"title",98123
"description",99
"createdAt"124
"createdAt",125
"feedUrl",126
"website",127
"language",128
"categories",129
"explicit",130
"coverImageUrl"100131
],101132
"type": "object"102133
},103134
"type": "record"104135
}105136
},106137
"description": "A podcast show or channel.",107138
"id": "place.pod.show",108139
"lexicon": 1109140
}