blue.morgen.feed.subscription
Schema Diff
+46 -16
Compatibility Analysis
Breaking Changes Detected
7 breaking changes, 13 non-breaking changes.
Breaking Changes (7)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "blue.morgen.feed.subscription#rssFeed", src: "blue.morgen.feed.subscription#rssFeed", tgt: "blue.morgen.feed.subscription#rssFeed.feedUrl", kind: "prop", name: Some("feedUrl") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "blue.morgen.feed.subscription#standardPublication", src: "blue.morgen.feed.subscription#standardPublication", tgt: "blue.morgen.feed.subscription#standardPublication.publication", kind: "prop", name: Some("publication") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "blue.morgen.feed.subscription:body", src: "blue.morgen.feed.subscription:body", tgt: "blue.morgen.feed.subscription:body.source", kind: "prop", name: Some("source") }
- RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "blue.morgen.feed.subscription:body", src: "blue.morgen.feed.subscription:body", tgt: "blue.morgen.feed.subscription:body.feedUrl", kind: "prop", name: Some("feedUrl") }
- RemovedVertex RemovedVertex { vertex_id: "blue.morgen.feed.subscription:body.feedUrl" }
- RemovedVertex RemovedVertex { vertex_id: "blue.morgen.feed.subscription:body.siteUrl" }
- RemovedEdge RemovedEdge { src: "blue.morgen.feed.subscription:body", tgt: "blue.morgen.feed.subscription:body.siteUrl", kind: "prop", name: Some("siteUrl") }
Non-Breaking Changes (13)
- AddedVertex AddedVertex { vertex_id: "blue.morgen.feed.subscription#rssFeed" }
- AddedVertex AddedVertex { vertex_id: "blue.morgen.feed.subscription#rssFeed.feedUrl" }
- AddedVertex AddedVertex { vertex_id: "blue.morgen.feed.subscription#rssFeed.siteUrl" }
- AddedVertex AddedVertex { vertex_id: "blue.morgen.feed.subscription#standardPublication" }
- AddedVertex AddedVertex { vertex_id: "blue.morgen.feed.subscription#standardPublication.publication" }
- AddedVertex AddedVertex { vertex_id: "blue.morgen.feed.subscription:body.source" }
- AddedVertex AddedVertex { vertex_id: "blue.morgen.feed.subscription:body.source:variant0" }
- AddedVertex AddedVertex { vertex_id: "blue.morgen.feed.subscription:body.source:variant1" }
- AddedEdge AddedEdge { src: "blue.morgen.feed.subscription#rssFeed", tgt: "blue.morgen.feed.subscription#rssFeed.siteUrl", kind: "prop", name: Some("siteUrl") }
- AddedEdge AddedEdge { src: "blue.morgen.feed.subscription:body.source", tgt: "blue.morgen.feed.subscription:body.source:variant0", kind: "variant", name: Some("#rssFeed") }
- AddedEdge AddedEdge { src: "blue.morgen.feed.subscription:body.source", tgt: "blue.morgen.feed.subscription:body.source:variant1", kind: "variant", name: Some("#standardPublication") }
- AddedEdge AddedEdge { src: "blue.morgen.feed.subscription:body.source:variant0", tgt: "blue.morgen.feed.subscription#rssFeed", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "blue.morgen.feed.subscription:body.source:variant1", tgt: "blue.morgen.feed.subscription#standardPublication", kind: "ref", name: None }
Migration Guidance
Removed Elements
RemovedVertex { vertex_id: "blue.morgen.feed.subscription:body.feedUrl" }RemovedVertex { vertex_id: "blue.morgen.feed.subscription:body.siteUrl" }
Added Elements
AddedVertex { vertex_id: "blue.morgen.feed.subscription#rssFeed" }AddedVertex { vertex_id: "blue.morgen.feed.subscription#rssFeed.feedUrl" }AddedVertex { vertex_id: "blue.morgen.feed.subscription#rssFeed.siteUrl" }AddedVertex { vertex_id: "blue.morgen.feed.subscription#standardPublication" }AddedVertex { vertex_id: "blue.morgen.feed.subscription#standardPublication.publication" }AddedVertex { vertex_id: "blue.morgen.feed.subscription:body.source" }AddedVertex { vertex_id: "blue.morgen.feed.subscription:body.source:variant0" }AddedVertex { vertex_id: "blue.morgen.feed.subscription:body.source:variant1" }
Additional Notes
- Breaking: RequiredEdgeAdded { vertex_id: "blue.morgen.feed.subscription#rssFeed", src: "blue.morgen.feed.subscription#rssFeed", tgt: "blue.morgen.feed.subscription#rssFeed.feedUrl", kind: "prop", name: Some("feedUrl") }
- Breaking: RequiredEdgeAdded { vertex_id: "blue.morgen.feed.subscription:body", src: "blue.morgen.feed.subscription:body", tgt: "blue.morgen.feed.subscription:body.source", kind: "prop", name: Some("source") }
- Breaking: RequiredEdgeAdded { vertex_id: "blue.morgen.feed.subscription#standardPublication", src: "blue.morgen.feed.subscription#standardPublication", tgt: "blue.morgen.feed.subscription#standardPublication.publication", kind: "prop", name: Some("publication") }
- Breaking: RequiredEdgeRemoved { vertex_id: "blue.morgen.feed.subscription:body", src: "blue.morgen.feed.subscription:body", tgt: "blue.morgen.feed.subscription:body.feedUrl", kind: "prop", name: Some("feedUrl") }
- Breaking: RemovedEdge { src: "blue.morgen.feed.subscription:body", tgt: "blue.morgen.feed.subscription:body.siteUrl", kind: "prop", name: Some("siteUrl") }
- Non-breaking: AddedEdge { src: "blue.morgen.feed.subscription#rssFeed", tgt: "blue.morgen.feed.subscription#rssFeed.siteUrl", kind: "prop", name: Some("siteUrl") }
- Non-breaking: AddedEdge { src: "blue.morgen.feed.subscription:body.source", tgt: "blue.morgen.feed.subscription:body.source:variant0", kind: "variant", name: Some("#rssFeed") }
- Non-breaking: AddedEdge { src: "blue.morgen.feed.subscription:body.source", tgt: "blue.morgen.feed.subscription:body.source:variant1", kind: "variant", name: Some("#standardPublication") }
- Non-breaking: AddedEdge { src: "blue.morgen.feed.subscription:body.source:variant0", tgt: "blue.morgen.feed.subscription#rssFeed", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "blue.morgen.feed.subscription:body.source:variant1", tgt: "blue.morgen.feed.subscription#standardPublication", kind: "ref", name: None }
1
1
{
2
2
"id": "blue.morgen.feed.subscription",
3
3
"defs": {
4
4
"main": {
5
5
"key": "tid",
6
6
"type": "record",
7
7
"record": {
8
8
"type": "object",
9
9
"required": [
10
-
"feedUrl",
10
+
"source",
11
11
"createdAt"
12
12
],
13
13
"properties": {
14
14
"tags": {
15
15
"type": "array",
16
16
"items": {
17
17
"type": "string",
18
18
"maxLength": 640,
19
19
"maxGraphemes": 64
20
20
},
21
21
"maxLength": 10,
22
22
"description": "Free-form, user-defined tags. No controlled vocabulary."
23
23
},
24
24
"title": {
25
25
"type": "string",
26
26
"maxLength": 1280,
27
-
"description": "Display title. Auto-prefilled from the feed, user-editable.",
27
+
"description": "Display title. Auto-prefilled from the source, user-editable.",
28
28
"maxGraphemes": 128
29
29
},
30
-
"feedUrl": {
31
-
"type": "string",
32
-
"format": "uri",
33
-
"maxLength": 2048,
34
-
"description": "URL of the RSS/Atom feed."
30
+
"source": {
31
+
"refs": [
32
+
"#rssFeed",
33
+
"#standardPublication"
34
+
],
35
+
"type": "union",
36
+
"description": "Identity of the subscribed source. Open union; readers tolerate unknown variants."
35
37
},
36
38
"primary": {
37
39
"type": "boolean",
38
-
"description": "Whether the feed receives special treatment in the digest."
39
-
},
40
-
"siteUrl": {
41
-
"type": "string",
42
-
"format": "uri",
43
-
"maxLength": 2048,
44
-
"description": "Human-facing site URL associated with the feed."
40
+
"description": "Whether the source receives special treatment in the digest."
45
41
},
46
42
"createdAt": {
47
43
"type": "string",
48
44
"format": "datetime"
49
45
}
50
46
}
51
47
},
52
-
"description": "A subscription to an RSS/Atom feed."
48
+
"description": "A subscription to a content source, identified by the source union: an RSS/Atom feed or a Standardfeed publication."
49
+
},
50
+
"rssFeed": {
51
+
"type": "object",
52
+
"required": [
53
+
"feedUrl"
54
+
],
55
+
"properties": {
56
+
"feedUrl": {
57
+
"type": "string",
58
+
"format": "uri",
59
+
"maxLength": 2048,
60
+
"description": "URL of the RSS/Atom feed."
61
+
},
62
+
"siteUrl": {
63
+
"type": "string",
64
+
"format": "uri",
65
+
"maxLength": 2048,
66
+
"description": "Human-facing site URL associated with the feed."
67
+
}
68
+
}
69
+
},
70
+
"standardPublication": {
71
+
"type": "object",
72
+
"required": [
73
+
"publication"
74
+
],
75
+
"properties": {
76
+
"publication": {
77
+
"type": "string",
78
+
"format": "at-uri",
79
+
"description": "AT-URI of the site.standard.publication record. This subscription is a metadata sidecar; the paired site.standard.graph.subscription record is the existence authority."
80
+
}
81
+
}
53
82
}
54
83
},
55
84
"$type": "com.atproto.lexicon.schema",
56
-
"lexicon": 1
85
+
"lexicon": 1,
86
+
"revision": 2
57
87
}