live.voxport.podcast.feed

voxport.live

Schema Diff

+2 -2

From

CID
bafyreieq3xoevfa...
Indexed At
2026-09-01 18:32 UTC
View this version

To

CID
bafyreibbfuhz5p3...
Indexed At
2026-09-09 15:42 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

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 Elements

  • RemovedVertex { vertex_id: "live.voxport.podcast.series" }

Added Elements

  • 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" }

Additional 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 }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "main": {
5 5
      "description": "RSS feed configuration for a podcast series",
6 6
      "key": "tid",
7 7
      "record": {
8 8
        "properties": {
9 9
          "createdAt": {
10 10
            "format": "datetime",
11 11
            "type": "string"
12 12
          },
13 13
          "customRssElements": {
14 14
            "description": "Custom XML elements to inject into RSS",
15 15
            "maxLength": 10000,
16 16
            "type": "string"
17 17
          },
18 18
          "distribution": {
19 19
            "description": "Platform distribution settings",
20 20
            "items": {
21 21
              "ref": "#platformDistribution",
22 22
              "type": "ref"
23 23
            },
24 24
            "type": "array"
25 25
          },
26 26
          "format": {
27 27
            "default": "rss2",
28 28
            "description": "Feed format type",
29 29
            "knownValues": [
30 30
              "rss2",
31 31
              "atom",
32 32
              "json"
33 33
            ],
34 34
            "maxLength": 16,
35 35
            "type": "string"
36 36
          },
37 37
          "includeEpisodes": {
38 38
            "default": 50,
39 39
            "description": "Number of episodes to include (0 = all)",
40 40
            "minimum": 0,
41 41
            "type": "integer"
42 42
          },
43 43
          "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",
46 46
            "type": "ref"
47 47
          },
48 48
          "slug": {
49 49
            "default": "feed.xml",
50 50
            "description": "URL slug for feed (e.g., 'feed.xml')",
51 51
            "maxLength": 64,
52 52
            "type": "string"
53 53
          },
54 54
          "updatedAt": {
55 55
            "format": "datetime",
56 56
            "type": "string"
57 57
          }
58 58
        },
59 59
        "required": [
60 60
          "series",
61 61
          "format",
62 62
          "createdAt"
63 63
        ],
64 64
        "type": "object"
65 65
      },
66 66
      "type": "record"
67 67
    },
68 68
    "platformDistribution": {
69 69
      "properties": {
70 70
        "enabled": {
71 71
          "default": true,
72 72
          "type": "boolean"
73 73
        },
74 74
        "externalId": {
75 75
          "description": "Platform's ID for this series (e.g., Apple Podcasts ID)",
76 76
          "maxLength": 256,
77 77
          "type": "string"
78 78
        },
79 79
        "platform": {
80 80
          "knownValues": [
81 81
            "apple",
82 82
            "spotify",
83 83
            "youtube",
84 84
            "google",
85 85
            "overcast",
86 86
            "pocketcasts"
87 87
          ],
88 88
          "maxLength": 32,
89 89
          "type": "string"
90 90
        },
91 91
        "submissionStatus": {
92 92
          "default": "not_submitted",
93 93
          "knownValues": [
94 94
            "not_submitted",
95 95
            "pending",
96 96
            "approved",
97 97
            "rejected"
98 98
          ],
99 99
          "maxLength": 32,
100 100
          "type": "string"
101 101
        }
102 102
      },
103 103
      "type": "object"
104 104
    }
105 105
  },
106 106
  "description": "RSS feed configuration for a podcast series",
107 107
  "id": "live.voxport.podcast.feed",
108 108
  "lexicon": 1
109 109
}

Compare Other Versions

Lexicon Garden

@