at.inlay.component

inlay.at

Schema Diff

+9 -12

From

CID
bafyreicl425kwjr...
Indexed At
2026-03-19 20:26 UTC
View this version

To

CID
bafyreid76brwsr2...
Indexed At
2026-03-27 06:44 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

2 breaking changes, 2 non-breaking changes.

Breaking Changes (2)
  • RemovedVertex RemovedVertex { vertex_id: "at.inlay.component:body.type" }
  • RemovedEdge RemovedEdge { src: "at.inlay.component:body", tgt: "at.inlay.component:body.type", kind: "prop", name: Some("type") }
Non-Breaking Changes (2)
  • AddedVertex AddedVertex { vertex_id: "at.inlay.component#bodyExternal.personalized" }
  • AddedEdge AddedEdge { src: "at.inlay.component#bodyExternal", tgt: "at.inlay.component#bodyExternal.personalized", kind: "prop", name: Some("personalized") }

Migration Guidance

Removed Elements

  • RemovedVertex { vertex_id: "at.inlay.component:body.type" }

Added Elements

  • AddedVertex { vertex_id: "at.inlay.component#bodyExternal.personalized" }

Additional Notes

  • Breaking: RemovedEdge { src: "at.inlay.component:body", tgt: "at.inlay.component:body.type", kind: "prop", name: Some("type") }
  • Non-breaking: AddedEdge { src: "at.inlay.component#bodyExternal", tgt: "at.inlay.component#bodyExternal.personalized", kind: "prop", name: Some("personalized") }
1 1
{
2 2
  "id": "at.inlay.component",
3 3
  "defs": {
4 4
    "main": {
5 -
      "key": "tid",
5 +
      "key": "nsid",
6 6
      "type": "record",
7 7
      "record": {
8 8
        "type": "object",
9 -
        "required": [
10 -
          "type"
11 -
        ],
9 +
        "required": [],
12 10
        "properties": {
13 11
          "via": {
14 12
            "refs": [
15 13
              "at.inlay.defs#viaValtown"
16 14
            ],
17 15
            "type": "union",
18 16
            "description": "Platform-managed deployment metadata"
19 17
          },
20 18
          "body": {
21 19
            "refs": [
22 20
              "#bodyExternal",
23 21
              "#bodyTemplate"
24 22
            ],
25 23
            "type": "union",
26 24
            "description": "How this component is rendered. Omit for primitives rendered by the host."
27 -
          },
28 -
          "type": {
29 -
            "type": "string",
30 -
            "format": "nsid",
31 -
            "description": "NSID this component implements (also the XRPC procedure)"
32 25
          },
33 26
          "view": {
34 27
            "ref": "#view",
35 28
            "type": "ref",
36 29
            "description": "What data this component views and which prop receives it"
37 30
          },
38 31
          "imports": {
39 32
            "type": "array",
40 33
            "items": {
41 34
              "type": "string",
42 -
              "format": "at-uri"
35 +
              "format": "did"
43 36
            },
44 -
            "description": "Ordered list of pack URIs (import stack). First pack that exports an NSID wins."
37 +
            "description": "Ordered list of DIDs (import stack). For each NSID, the first DID that has a component with that rkey wins."
45 38
          },
46 39
          "createdAt": {
47 40
            "type": "string",
48 41
            "format": "datetime"
49 42
          },
50 43
          "updatedAt": {
51 44
            "type": "string",
52 45
            "format": "datetime",
53 46
            "description": "Last update timestamp. Set by the publish flow to bust cached responses."
54 47
          },
55 48
          "description": {
56 49
            "type": "string",
57 50
            "maxLength": 10000,
58 51
            "maxGraphemes": 1000
59 52
          }
60 53
        }
61 54
      },
62 -
      "description": "Component record - declares an implementation of a type"
55 +
      "description": "Component record. The rkey is the type NSID this component implements."
63 56
    },
64 57
    "view": {
65 58
      "type": "object",
66 59
      "required": [
67 60
        "prop",
68 61
        "accepts"
69 62
      ],
70 63
      "properties": {
71 64
        "prop": {
72 65
          "type": "string",
73 66
          "maxLength": 256,
74 67
          "description": "Which component prop receives the view data."
75 68
        },
76 69
        "accepts": {
77 70
          "type": "array",
78 71
          "items": {
79 72
            "refs": [
80 73
              "#viewRecord",
81 74
              "#viewPrimitive"
82 75
            ],
83 76
            "type": "union"
84 77
          },
85 78
          "minLength": 1,
86 79
          "description": "Data types this view accepts."
87 80
        }
88 81
      },
89 82
      "description": "Declares what data this component views and which prop receives it."
90 83
    },
91 84
    "viewRecord": {
92 85
      "type": "object",
93 86
      "properties": {
94 87
        "rkey": {
95 88
          "type": "string",
96 89
          "maxLength": 512,
97 90
          "description": "The record key, baked from the collection's lexicon at authoring time. Presence enables DID expansion and identity page routing."
98 91
        },
99 92
        "collection": {
100 93
          "type": "string",
101 94
          "format": "nsid",
102 95
          "description": "The collection this component views. Omit for any-collection."
103 96
        }
104 97
      },
105 98
      "description": "View accepts individual records of a collection. Omit collection for a generic record view. When rkey is present, the component accepts bare DIDs (expanded to full AT URIs) and appears on identity pages."
106 99
    },
107 100
    "bodyExternal": {
108 101
      "type": "object",
109 102
      "required": [
110 103
        "did"
111 104
      ],
112 105
      "properties": {
113 106
        "did": {
114 107
          "type": "string",
115 108
          "format": "did",
116 109
          "description": "DID of the service hosting this component"
110 +
        },
111 +
        "personalized": {
112 +
          "type": "boolean",
113 +
          "description": "When true, host sends a signed JWT identifying the viewer with each call."
117 114
        }
118 115
      },
119 116
      "description": "Component rendered by calling a remote XRPC endpoint"
120 117
    },
121 118
    "bodyTemplate": {
122 119
      "type": "object",
123 120
      "required": [
124 121
        "node"
125 122
      ],
126 123
      "properties": {
127 124
        "node": {
128 125
          "type": "unknown",
129 126
          "description": "Serialized element tree with bindings"
130 127
        }
131 128
      },
132 129
      "description": "Component rendered by the host from a serialized element tree"
133 130
    },
134 131
    "viewPrimitive": {
135 132
      "type": "object",
136 133
      "required": [
137 134
        "type"
138 135
      ],
139 136
      "properties": {
140 137
        "type": {
141 138
          "type": "string",
142 139
          "maxLength": 128,
143 140
          "description": "Lexicon primitive type.",
144 141
          "knownValues": [
145 142
            "string",
146 143
            "integer",
147 144
            "boolean",
148 145
            "blob",
149 146
            "cid-link",
150 147
            "bytes"
151 148
          ]
152 149
        },
153 150
        "format": {
154 151
          "type": "string",
155 152
          "maxLength": 64,
156 153
          "description": "String format constraint. Only applies when type is 'string'.",
157 154
          "knownValues": [
158 155
            "at-uri",
159 156
            "did",
160 157
            "datetime",
161 158
            "uri",
162 159
            "handle",
163 160
            "at-identifier",
164 161
            "nsid",
165 162
            "cid",
166 163
            "language",
167 164
            "record-key",
168 165
            "tid"
169 166
          ]
170 167
        }
171 168
      },
172 169
      "description": "View accepts a primitive value type."
173 170
    }
174 171
  },
175 172
  "$type": "com.atproto.lexicon.schema",
176 173
  "lexicon": 1
177 174
}

Compare Other Versions

Lexicon Garden

@