From
bafyreieq3xoevfamgrjddfojzigpx7dzwzuqb43lka6whr7qlvhzu22h7i
indexed 2026-09-01 18:32 UTC
View this version
To
bafyreibbfuhz5p3vcnsfazfu6corblr67sq6bdgd6eaftplub74xctqhme
indexed 2026-09-09 15:42 UTC
View this version
Compatibility
breaking 3 breaking changes, 2 non-breaking changes.
Breaking changes (3)
- RemovedVertex RemovedVertex { vertex_id: "live.voxport.podcast.series" }
- RemovedEdge RemovedEdge { src: "live.voxport.podcast.feed:body.series", tgt: "live.voxport.podcast.series", kind: "ref", name: None }
- ConstraintTightened ConstraintTightened { vertex_id: "live.voxport.podcast.feed:body.series", sort: "ref", old_value: "live.voxport.podcast.series", new_value: "live.voxport.podcast.series#seriesRef" }
Non-breaking changes (2)
- AddedVertex AddedVertex { vertex_id: "live.voxport.podcast.series#seriesRef" }
- AddedEdge AddedEdge { src: "live.voxport.podcast.feed:body.series", tgt: "live.voxport.podcast.series#seriesRef", kind: "ref", name: None }
Migration guidance
Removed
RemovedVertex { vertex_id: "live.voxport.podcast.series" }
Added
AddedVertex { vertex_id: "live.voxport.podcast.series#seriesRef" }
Constraint changes
- ConstraintTightened ConstraintTightened { vertex_id: "live.voxport.podcast.feed:body.series", sort: "ref", old_value: "live.voxport.podcast.series", new_value: "live.voxport.podcast.series#seriesRef" }
Notes
- Breaking: RemovedEdge { src: "live.voxport.podcast.feed:body.series", tgt: "live.voxport.podcast.series", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "live.voxport.podcast.feed:body.series", tgt: "live.voxport.podcast.series#seriesRef", kind: "ref", name: None }
Changes
11
{22
"$type": "com.atproto.lexicon.schema",33
"defs": {44
"main": {55
"description": "RSS feed configuration for a podcast series",66
"key": "tid",77
"record": {88
"properties": {99
"createdAt": {1010
"format": "datetime",1111
"type": "string"1212
},1313
"customRssElements": {1414
"description": "Custom XML elements to inject into RSS",1515
"maxLength": 10000,1616
"type": "string"1717
},1818
"distribution": {1919
"description": "Platform distribution settings",2020
"items": {2121
"ref": "#platformDistribution",2222
"type": "ref"2323
},2424
"type": "array"2525
},2626
"format": {2727
"default": "rss2",2828
"description": "Feed format type",2929
"knownValues": [3030
"rss2",3131
"atom",3232
"json"3333
],3434
"maxLength": 16,3535
"type": "string"3636
},3737
"includeEpisodes": {3838
"default": 50,3939
"description": "Number of episodes to include (0 = all)",4040
"minimum": 0,4141
"type": "integer"4242
},4343
"series": {44
"description": "Reference to parent series",45
"ref": "live.voxport.podcast.series",44
"description": "Reference to parent series (uri + optional cid)",45
"ref": "live.voxport.podcast.series#seriesRef",4646
"type": "ref"4747
},4848
"slug": {4949
"default": "feed.xml",5050
"description": "URL slug for feed (e.g., 'feed.xml')",5151
"maxLength": 64,5252
"type": "string"5353
},5454
"updatedAt": {5555
"format": "datetime",5656
"type": "string"5757
}5858
},5959
"required": [6060
"series",6161
"format",6262
"createdAt"6363
],6464
"type": "object"6565
},6666
"type": "record"6767
},6868
"platformDistribution": {6969
"properties": {7070
"enabled": {7171
"default": true,7272
"type": "boolean"7373
},7474
"externalId": {7575
"description": "Platform's ID for this series (e.g., Apple Podcasts ID)",7676
"maxLength": 256,7777
"type": "string"7878
},7979
"platform": {8080
"knownValues": [8181
"apple",8282
"spotify",8383
"youtube",8484
"google",8585
"overcast",8686
"pocketcasts"8787
],8888
"maxLength": 32,8989
"type": "string"9090
},9191
"submissionStatus": {9292
"default": "not_submitted",9393
"knownValues": [9494
"not_submitted",9595
"pending",9696
"approved",9797
"rejected"9898
],9999
"maxLength": 32,100100
"type": "string"101101
}102102
},103103
"type": "object"104104
}105105
},106106
"description": "RSS feed configuration for a podcast series",107107
"id": "live.voxport.podcast.feed",108108
"lexicon": 1109109
}