net.wireservice.component.embed
Schema Diff
+47 -2
Compatibility Analysis
Backward Compatible
Backward compatible. 16 non-breaking changes.
Non-Breaking Changes (16)
- AddedVertex AddedVertex { vertex_id: "com.atproto.repo.strongRef" }
- AddedVertex AddedVertex { vertex_id: "net.wireservice.component.embed.authorName" }
- AddedVertex AddedVertex { vertex_id: "net.wireservice.component.embed.description" }
- AddedVertex AddedVertex { vertex_id: "net.wireservice.component.embed.providerName" }
- AddedVertex AddedVertex { vertex_id: "net.wireservice.component.embed.publishedAt" }
- AddedVertex AddedVertex { vertex_id: "net.wireservice.component.embed.record" }
- AddedVertex AddedVertex { vertex_id: "net.wireservice.component.embed.thumbnail" }
- AddedVertex AddedVertex { vertex_id: "net.wireservice.component.embed.title" }
- AddedEdge AddedEdge { src: "net.wireservice.component.embed", tgt: "net.wireservice.component.embed.authorName", kind: "prop", name: Some("authorName") }
- AddedEdge AddedEdge { src: "net.wireservice.component.embed", tgt: "net.wireservice.component.embed.description", kind: "prop", name: Some("description") }
- AddedEdge AddedEdge { src: "net.wireservice.component.embed", tgt: "net.wireservice.component.embed.providerName", kind: "prop", name: Some("providerName") }
- AddedEdge AddedEdge { src: "net.wireservice.component.embed", tgt: "net.wireservice.component.embed.publishedAt", kind: "prop", name: Some("publishedAt") }
- AddedEdge AddedEdge { src: "net.wireservice.component.embed", tgt: "net.wireservice.component.embed.record", kind: "prop", name: Some("record") }
- AddedEdge AddedEdge { src: "net.wireservice.component.embed", tgt: "net.wireservice.component.embed.thumbnail", kind: "prop", name: Some("thumbnail") }
- AddedEdge AddedEdge { src: "net.wireservice.component.embed", tgt: "net.wireservice.component.embed.title", kind: "prop", name: Some("title") }
- AddedEdge AddedEdge { src: "net.wireservice.component.embed.record", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "com.atproto.repo.strongRef" }AddedVertex { vertex_id: "net.wireservice.component.embed.authorName" }AddedVertex { vertex_id: "net.wireservice.component.embed.description" }AddedVertex { vertex_id: "net.wireservice.component.embed.providerName" }AddedVertex { vertex_id: "net.wireservice.component.embed.publishedAt" }AddedVertex { vertex_id: "net.wireservice.component.embed.record" }AddedVertex { vertex_id: "net.wireservice.component.embed.thumbnail" }AddedVertex { vertex_id: "net.wireservice.component.embed.title" }
Additional Notes
- Non-breaking: AddedEdge { src: "net.wireservice.component.embed", tgt: "net.wireservice.component.embed.authorName", kind: "prop", name: Some("authorName") }
- Non-breaking: AddedEdge { src: "net.wireservice.component.embed", tgt: "net.wireservice.component.embed.description", kind: "prop", name: Some("description") }
- Non-breaking: AddedEdge { src: "net.wireservice.component.embed", tgt: "net.wireservice.component.embed.providerName", kind: "prop", name: Some("providerName") }
- Non-breaking: AddedEdge { src: "net.wireservice.component.embed", tgt: "net.wireservice.component.embed.publishedAt", kind: "prop", name: Some("publishedAt") }
- Non-breaking: AddedEdge { src: "net.wireservice.component.embed", tgt: "net.wireservice.component.embed.record", kind: "prop", name: Some("record") }
- Non-breaking: AddedEdge { src: "net.wireservice.component.embed", tgt: "net.wireservice.component.embed.thumbnail", kind: "prop", name: Some("thumbnail") }
- Non-breaking: AddedEdge { src: "net.wireservice.component.embed", tgt: "net.wireservice.component.embed.title", kind: "prop", name: Some("title") }
- Non-breaking: AddedEdge { src: "net.wireservice.component.embed.record", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"main": {
5
-
"description": "Embed component. Embeds external web content such as social media posts or web videos.",
5
+
"description": "Embed component: external content (a web page, video, or social post) or an ATProto record, with a snapshot of its metadata taken when it was embedded. Renderers show the snapshot as a card and MAY upgrade it to an interactive player they recognize from the URL or record; the lexicon names no providers.",
6
6
"properties": {
7
7
"accessibilityCaption": {
8
8
"maxGraphemes": 2000,
9
9
"maxLength": 20000,
10
10
"type": "string"
11
11
},
12
12
"aspectRatio": {
13
13
"description": "Aspect ratio for the embed frame, primarily for web video embeds.",
14
14
"ref": "net.wireservice.defs#aspectRatio",
15
15
"type": "ref"
16
16
},
17
+
"authorName": {
18
+
"description": "Snapshot: who made it.",
19
+
"maxGraphemes": 200,
20
+
"maxLength": 2000,
21
+
"type": "string"
22
+
},
17
23
"caption": {
18
24
"description": "Visible caption as an array of text runs with optional formatting marks.",
19
25
"items": {
20
26
"ref": "net.wireservice.defs#textRun",
21
27
"type": "ref"
22
28
},
23
29
"type": "array"
24
30
},
31
+
"description": {
32
+
"description": "Snapshot: a summary or excerpt (for a social post, its text).",
33
+
"maxGraphemes": 1000,
34
+
"maxLength": 10000,
35
+
"type": "string"
36
+
},
25
37
"explicitContent": {
26
38
"type": "boolean"
27
39
},
28
40
"hidden": {
29
41
"type": "boolean"
30
42
},
31
43
"identifier": {
32
44
"maxLength": 256,
33
45
"type": "string"
34
46
},
35
47
"layout": {
36
48
"maxLength": 256,
37
49
"type": "string"
38
50
},
51
+
"providerName": {
52
+
"description": "Snapshot: the site or service it came from.",
53
+
"maxGraphemes": 100,
54
+
"maxLength": 1000,
55
+
"type": "string"
56
+
},
57
+
"publishedAt": {
58
+
"description": "Snapshot: when the embedded content was published.",
59
+
"format": "datetime",
60
+
"type": "string"
61
+
},
62
+
"record": {
63
+
"description": "The embedded ATProto record, when there is one (e.g. a Bluesky post). Lets renderers that understand the record type show it natively.",
64
+
"ref": "com.atproto.repo.strongRef",
65
+
"type": "ref"
66
+
},
39
67
"role": {
40
-
"description": "Type of embedded content.",
68
+
"description": "Deprecated. Renderers choose presentation from the URL or record; providers are not enumerated here.",
41
69
"knownValues": [
42
70
"web-video",
43
71
"tweet",
44
72
"instagram",
45
73
"facebook-post",
46
74
"tiktok"
47
75
],
48
76
"maxLength": 64,
49
77
"type": "string"
50
78
},
51
79
"style": {
52
80
"maxLength": 256,
53
81
"type": "string"
54
82
},
83
+
"thumbnail": {
84
+
"accept": [
85
+
"image/jpeg",
86
+
"image/png",
87
+
"image/webp",
88
+
"image/gif"
89
+
],
90
+
"description": "Snapshot: a preview image, copied so the embed survives the original going away.",
91
+
"maxSize": 1000000,
92
+
"type": "blob"
93
+
},
94
+
"title": {
95
+
"description": "Snapshot: the embedded content’s title.",
96
+
"maxGraphemes": 300,
97
+
"maxLength": 3000,
98
+
"type": "string"
99
+
},
55
100
"url": {
56
101
"description": "URL of the content to embed.",
57
102
"format": "uri",
58
103
"type": "string"
59
104
}
60
105
},
61
106
"required": [
62
107
"url"
63
108
],
64
109
"type": "object"
65
110
}
66
111
},
67
112
"id": "net.wireservice.component.embed",
68
113
"lexicon": 1
69
114
}