parts.page.mention.search
Schema Diff
+67 -0
Compatibility Analysis
Breaking Changes Detected
1 breaking change, 23 non-breaking changes.
Breaking Changes (1)
- ConstraintAdded ConstraintAdded { vertex_id: "parts.page.mention.search#subscopeInfo.label", sort: "maxLength", value: "100" }
Non-Breaking Changes (23)
- AddedVertex AddedVertex { vertex_id: "parts.page.mention.search#aspectRatio" }
- AddedVertex AddedVertex { vertex_id: "parts.page.mention.search#aspectRatio.height" }
- AddedVertex AddedVertex { vertex_id: "parts.page.mention.search#aspectRatio.width" }
- AddedVertex AddedVertex { vertex_id: "parts.page.mention.search#embedInfo.aspectRatio" }
- AddedVertex AddedVertex { vertex_id: "parts.page.mention.search#mentionLabel" }
- AddedVertex AddedVertex { vertex_id: "parts.page.mention.search#mentionLabel.text" }
- AddedVertex AddedVertex { vertex_id: "parts.page.mention.search#result.description" }
- AddedVertex AddedVertex { vertex_id: "parts.page.mention.search#result.labels" }
- AddedVertex AddedVertex { vertex_id: "parts.page.mention.search#result.labels:items" }
- AddedVertex AddedVertex { vertex_id: "parts.page.mention.search#result.subscope" }
- AddedVertex AddedVertex { vertex_id: "parts.page.mention.search#subscopeInfo" }
- AddedVertex AddedVertex { vertex_id: "parts.page.mention.search#subscopeInfo.label" }
- AddedVertex AddedVertex { vertex_id: "parts.page.mention.search#subscopeInfo.scope" }
- AddedEdge AddedEdge { src: "parts.page.mention.search#aspectRatio", tgt: "parts.page.mention.search#aspectRatio.height", kind: "prop", name: Some("height") }
- AddedEdge AddedEdge { src: "parts.page.mention.search#aspectRatio", tgt: "parts.page.mention.search#aspectRatio.width", kind: "prop", name: Some("width") }
- AddedEdge AddedEdge { src: "parts.page.mention.search#embedInfo", tgt: "parts.page.mention.search#embedInfo.aspectRatio", kind: "prop", name: Some("aspectRatio") }
- AddedEdge AddedEdge { src: "parts.page.mention.search#mentionLabel", tgt: "parts.page.mention.search#mentionLabel.text", kind: "prop", name: Some("text") }
- AddedEdge AddedEdge { src: "parts.page.mention.search#result", tgt: "parts.page.mention.search#result.description", kind: "prop", name: Some("description") }
- AddedEdge AddedEdge { src: "parts.page.mention.search#result", tgt: "parts.page.mention.search#result.labels", kind: "prop", name: Some("labels") }
- AddedEdge AddedEdge { src: "parts.page.mention.search#result", tgt: "parts.page.mention.search#result.subscope", kind: "prop", name: Some("subscope") }
- AddedEdge AddedEdge { src: "parts.page.mention.search#result.labels", tgt: "parts.page.mention.search#result.labels:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "parts.page.mention.search#subscopeInfo", tgt: "parts.page.mention.search#subscopeInfo.label", kind: "prop", name: Some("label") }
- AddedEdge AddedEdge { src: "parts.page.mention.search#subscopeInfo", tgt: "parts.page.mention.search#subscopeInfo.scope", kind: "prop", name: Some("scope") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "parts.page.mention.search#aspectRatio" }AddedVertex { vertex_id: "parts.page.mention.search#aspectRatio.height" }AddedVertex { vertex_id: "parts.page.mention.search#aspectRatio.width" }AddedVertex { vertex_id: "parts.page.mention.search#embedInfo.aspectRatio" }AddedVertex { vertex_id: "parts.page.mention.search#mentionLabel" }AddedVertex { vertex_id: "parts.page.mention.search#mentionLabel.text" }AddedVertex { vertex_id: "parts.page.mention.search#result.description" }AddedVertex { vertex_id: "parts.page.mention.search#result.labels" }AddedVertex { vertex_id: "parts.page.mention.search#result.labels:items" }AddedVertex { vertex_id: "parts.page.mention.search#result.subscope" }AddedVertex { vertex_id: "parts.page.mention.search#subscopeInfo" }AddedVertex { vertex_id: "parts.page.mention.search#subscopeInfo.label" }AddedVertex { vertex_id: "parts.page.mention.search#subscopeInfo.scope" }
Constraint Changes
- ConstraintAdded ConstraintAdded { vertex_id: "parts.page.mention.search#subscopeInfo.label", sort: "maxLength", value: "100" }
Additional Notes
- Non-breaking: AddedEdge { src: "parts.page.mention.search#aspectRatio", tgt: "parts.page.mention.search#aspectRatio.height", kind: "prop", name: Some("height") }
- Non-breaking: AddedEdge { src: "parts.page.mention.search#aspectRatio", tgt: "parts.page.mention.search#aspectRatio.width", kind: "prop", name: Some("width") }
- Non-breaking: AddedEdge { src: "parts.page.mention.search#embedInfo", tgt: "parts.page.mention.search#embedInfo.aspectRatio", kind: "prop", name: Some("aspectRatio") }
- Non-breaking: AddedEdge { src: "parts.page.mention.search#mentionLabel", tgt: "parts.page.mention.search#mentionLabel.text", kind: "prop", name: Some("text") }
- Non-breaking: AddedEdge { src: "parts.page.mention.search#result", tgt: "parts.page.mention.search#result.description", kind: "prop", name: Some("description") }
- Non-breaking: AddedEdge { src: "parts.page.mention.search#result", tgt: "parts.page.mention.search#result.labels", kind: "prop", name: Some("labels") }
- Non-breaking: AddedEdge { src: "parts.page.mention.search#result", tgt: "parts.page.mention.search#result.subscope", kind: "prop", name: Some("subscope") }
- Non-breaking: AddedEdge { src: "parts.page.mention.search#result.labels", tgt: "parts.page.mention.search#result.labels:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "parts.page.mention.search#subscopeInfo", tgt: "parts.page.mention.search#subscopeInfo.label", kind: "prop", name: Some("label") }
- Non-breaking: AddedEdge { src: "parts.page.mention.search#subscopeInfo", tgt: "parts.page.mention.search#subscopeInfo.scope", kind: "prop", name: Some("scope") }
1
1
{
2
2
"id": "parts.page.mention.search",
3
3
"defs": {
4
4
"main": {
5
5
"type": "query",
6
6
"output": {
7
7
"schema": {
8
8
"type": "object",
9
9
"required": [
10
10
"results"
11
11
],
12
12
"properties": {
13
13
"results": {
14
14
"type": "array",
15
15
"items": {
16
16
"ref": "#result",
17
17
"type": "ref"
18
18
},
19
19
"maxLength": 50
20
20
}
21
21
}
22
22
},
23
23
"encoding": "application/json"
24
24
},
25
25
"parameters": {
26
26
"type": "params",
27
27
"required": [
28
28
"service",
29
29
"search"
30
30
],
31
31
"properties": {
32
32
"limit": {
33
33
"type": "integer",
34
34
"default": 20,
35
35
"maximum": 50,
36
36
"minimum": 1,
37
37
"description": "Maximum number of results to return"
38
38
},
39
+
"scope": {
40
+
"type": "string",
41
+
"description": "Optional scope identifier to narrow results within a service, as returned by a previous result's subscope.scope field"
42
+
},
39
43
"search": {
40
44
"type": "string",
41
45
"description": "Search query string"
42
46
},
43
47
"service": {
44
48
"type": "string",
45
49
"format": "at-uri",
46
50
"description": "AT URI of the parts.page.mention.service record identifying which service to query"
47
51
}
48
52
}
49
53
},
50
54
"description": "Search a mention service for matching results. A single XRPC host can serve multiple mention services, distinguished by the service AT URI."
51
55
},
52
56
"result": {
53
57
"type": "object",
54
58
"required": [
55
59
"uri",
56
60
"name"
57
61
],
58
62
"properties": {
59
63
"uri": {
60
64
"type": "string",
61
65
"description": "Identifier for the mentioned entity"
62
66
},
63
67
"href": {
64
68
"type": "string",
65
69
"format": "uri",
66
70
"description": "Optional web URL for the mentioned entity"
67
71
},
68
72
"icon": {
69
73
"type": "string",
70
74
"format": "uri",
71
75
"description": "Optional icon URL for the mentioned entity, displayed next to the mention"
72
76
},
73
77
"name": {
74
78
"type": "string",
75
79
"description": "Display name for the mentioned entity"
76
80
},
77
81
"embed": {
78
82
"ref": "#embedInfo",
79
83
"type": "ref",
80
84
"description": "Optional embed info for creating an embed block instead of an inline mention"
85
+
},
86
+
"labels": {
87
+
"type": "array",
88
+
"items": {
89
+
"ref": "#mentionLabel",
90
+
"type": "ref"
91
+
},
92
+
"description": "A set of labels to be rendered with the mentionedEntity"
93
+
},
94
+
"subscope": {
95
+
"ref": "#subscopeInfo",
96
+
"type": "ref",
97
+
"description": "Optional subscope info indicating this result can be scoped into for further searching"
98
+
},
99
+
"description": {
100
+
"type": "string",
101
+
"description": "A description for the mentioned entity"
81
102
}
82
103
}
83
104
},
84
105
"embedInfo": {
85
106
"type": "object",
86
107
"required": [
87
108
"src"
88
109
],
89
110
"properties": {
90
111
"src": {
91
112
"type": "string",
92
113
"format": "uri",
93
114
"description": "Source URL for the iframe embed"
94
115
},
95
116
"width": {
96
117
"type": "integer",
97
118
"maximum": 3200,
98
119
"minimum": 16,
99
120
"description": "Default width of the embed in pixels"
100
121
},
101
122
"height": {
102
123
"type": "integer",
103
124
"maximum": 3200,
104
125
"minimum": 16,
105
126
"description": "Default height of the embed in pixels"
127
+
},
128
+
"aspectRatio": {
129
+
"ref": "#aspectRatio",
130
+
"type": "ref",
131
+
"description": "Aspect ratio of the embed. If provided, takes precedence over width/height for sizing."
132
+
}
133
+
}
134
+
},
135
+
"aspectRatio": {
136
+
"type": "object",
137
+
"required": [
138
+
"width",
139
+
"height"
140
+
],
141
+
"properties": {
142
+
"width": {
143
+
"type": "integer"
144
+
},
145
+
"height": {
146
+
"type": "integer"
147
+
}
148
+
}
149
+
},
150
+
"mentionLabel": {
151
+
"type": "object",
152
+
"properties": {
153
+
"text": {
154
+
"type": "string"
155
+
}
156
+
}
157
+
},
158
+
"subscopeInfo": {
159
+
"type": "object",
160
+
"required": [
161
+
"scope",
162
+
"label"
163
+
],
164
+
"properties": {
165
+
"label": {
166
+
"type": "string",
167
+
"maxLength": 100,
168
+
"description": "Display label for the scope-down button (e.g. 'Posts', 'Tracks')"
169
+
},
170
+
"scope": {
171
+
"type": "string",
172
+
"description": "Scope identifier passed back to the service in subsequent search queries"
106
173
}
107
174
}
108
175
}
109
176
},
110
177
"$type": "com.atproto.lexicon.schema",
111
178
"lexicon": 1
112
179
}