parts.page.mention.search

page.parts

Schema Diff

+67 -0

From

CID
bafyreigvmpjpf3e...
Indexed At
2026-03-28 18:39 UTC
View this version

To

CID
bafyreie6zl537fb...
Indexed At
2026-04-10 20:10 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

4 breaking changes, 22 non-breaking changes.

Breaking Changes (4)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "parts.page.mention.search#aspectRatio", src: "parts.page.mention.search#aspectRatio", tgt: "parts.page.mention.search#aspectRatio.height", kind: "prop", name: Some("height") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "parts.page.mention.search#aspectRatio", src: "parts.page.mention.search#aspectRatio", tgt: "parts.page.mention.search#aspectRatio.width", kind: "prop", name: Some("width") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "parts.page.mention.search#subscopeInfo", src: "parts.page.mention.search#subscopeInfo", tgt: "parts.page.mention.search#subscopeInfo.label", kind: "prop", name: Some("label") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "parts.page.mention.search#subscopeInfo", src: "parts.page.mention.search#subscopeInfo", tgt: "parts.page.mention.search#subscopeInfo.scope", kind: "prop", name: Some("scope") }
Non-Breaking Changes (22)
  • 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#embedInfo", tgt: "parts.page.mention.search#embedInfo.aspectRatio", kind: "prop", name: Some("aspectRatio") }
  • AddedEdge AddedEdge { src: "parts.page.mention.search#embedInfo.aspectRatio", tgt: "parts.page.mention.search#aspectRatio", kind: "ref", name: None }
  • 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#result.labels:items", tgt: "parts.page.mention.search#mentionLabel", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "parts.page.mention.search#result.subscope", tgt: "parts.page.mention.search#subscopeInfo", kind: "ref", name: None }

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

Additional Notes

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

Compare Other Versions

Lexicon Garden

@