at.inlay.component

inlay.at

Schema Diff

+77 -90

From

CID
bafyreie34glisqg...
Indexed At
2026-02-18 18:28 UTC
View this version

To

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

Compatibility Analysis

Breaking Changes Detected

37 breaking changes, 20 non-breaking changes.

Breaking Changes (37)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "at.inlay.component#viewPrimitive", src: "at.inlay.component#viewPrimitive", tgt: "at.inlay.component#viewPrimitive.type", kind: "prop", name: Some("type") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "at.inlay.component#view", src: "at.inlay.component#view", tgt: "at.inlay.component#view.prop", kind: "prop", name: Some("prop") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "at.inlay.component#view", src: "at.inlay.component#view", tgt: "at.inlay.component#view.accepts", kind: "prop", name: Some("accepts") }
  • RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "at.inlay.component#acceptsEntry", src: "at.inlay.component#acceptsEntry", tgt: "at.inlay.component#acceptsEntry.prop", kind: "prop", name: Some("prop") }
  • RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "at.inlay.component#acceptsEntry", src: "at.inlay.component#acceptsEntry", tgt: "at.inlay.component#acceptsEntry.type", kind: "prop", name: Some("type") }
  • RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "at.inlay.component:body", src: "at.inlay.component:body", tgt: "at.inlay.component:body.type", kind: "prop", name: Some("type") }
  • RemovedVertex RemovedVertex { vertex_id: "at.inlay.component#acceptsEntry" }
  • RemovedVertex RemovedVertex { vertex_id: "at.inlay.component#acceptsEntry.collection" }
  • RemovedVertex RemovedVertex { vertex_id: "at.inlay.component#acceptsEntry.format" }
  • RemovedVertex RemovedVertex { vertex_id: "at.inlay.component#acceptsEntry.prop" }
  • RemovedVertex RemovedVertex { vertex_id: "at.inlay.component#acceptsEntry.type" }
  • RemovedVertex RemovedVertex { vertex_id: "at.inlay.component#viewCollection" }
  • RemovedVertex RemovedVertex { vertex_id: "at.inlay.component#viewCollection.collection" }
  • RemovedVertex RemovedVertex { vertex_id: "at.inlay.component#viewIdentity" }
  • RemovedVertex RemovedVertex { vertex_id: "at.inlay.component:body.accepts" }
  • RemovedVertex RemovedVertex { vertex_id: "at.inlay.component:body.accepts:items" }
  • RemovedVertex RemovedVertex { vertex_id: "at.inlay.component:body.type" }
  • RemovedVertex RemovedVertex { vertex_id: "at.inlay.component:body.view:items" }
  • RemovedVertex RemovedVertex { vertex_id: "at.inlay.component:body.view:items:variant0" }
  • RemovedVertex RemovedVertex { vertex_id: "at.inlay.component:body.view:items:variant1" }
  • RemovedVertex RemovedVertex { vertex_id: "at.inlay.component:body.view:items:variant2" }
  • RemovedEdge RemovedEdge { src: "at.inlay.component#acceptsEntry", tgt: "at.inlay.component#acceptsEntry.collection", kind: "prop", name: Some("collection") }
  • RemovedEdge RemovedEdge { src: "at.inlay.component#acceptsEntry", tgt: "at.inlay.component#acceptsEntry.format", kind: "prop", name: Some("format") }
  • RemovedEdge RemovedEdge { src: "at.inlay.component#viewCollection", tgt: "at.inlay.component#viewCollection.collection", kind: "prop", name: Some("collection") }
  • RemovedEdge RemovedEdge { src: "at.inlay.component:body", tgt: "at.inlay.component:body.accepts", kind: "prop", name: Some("accepts") }
  • RemovedEdge RemovedEdge { src: "at.inlay.component:body.accepts", tgt: "at.inlay.component:body.accepts:items", kind: "items", name: None }
  • RemovedEdge RemovedEdge { src: "at.inlay.component:body.accepts:items", tgt: "at.inlay.component#acceptsEntry", kind: "ref", name: None }
  • RemovedEdge RemovedEdge { src: "at.inlay.component:body.view", tgt: "at.inlay.component:body.view:items", kind: "items", name: None }
  • RemovedEdge RemovedEdge { src: "at.inlay.component:body.view:items", tgt: "at.inlay.component:body.view:items:variant0", kind: "variant", name: Some("#viewRecord") }
  • RemovedEdge RemovedEdge { src: "at.inlay.component:body.view:items", tgt: "at.inlay.component:body.view:items:variant1", kind: "variant", name: Some("#viewCollection") }
  • RemovedEdge RemovedEdge { src: "at.inlay.component:body.view:items", tgt: "at.inlay.component:body.view:items:variant2", kind: "variant", name: Some("#viewIdentity") }
  • RemovedEdge RemovedEdge { src: "at.inlay.component:body.view:items:variant0", tgt: "at.inlay.component#viewRecord", kind: "ref", name: None }
  • RemovedEdge RemovedEdge { src: "at.inlay.component:body.view:items:variant1", tgt: "at.inlay.component#viewCollection", kind: "ref", name: None }
  • RemovedEdge RemovedEdge { src: "at.inlay.component:body.view:items:variant2", tgt: "at.inlay.component#viewIdentity", kind: "ref", name: None }
  • KindChanged KindChanged { vertex_id: "at.inlay.component:body.view", old_kind: "array", new_kind: "ref" }
  • ConstraintTightened ConstraintTightened { vertex_id: "at.inlay.component:body.imports:items", sort: "format", old_value: "at-uri", new_value: "did" }
  • ConstraintAdded ConstraintAdded { vertex_id: "at.inlay.component:body.view", sort: "ref", value: "#view" }
Non-Breaking Changes (20)
  • AddedVertex AddedVertex { vertex_id: "at.inlay.component#bodyExternal.personalized" }
  • AddedVertex AddedVertex { vertex_id: "at.inlay.component#view" }
  • AddedVertex AddedVertex { vertex_id: "at.inlay.component#view.accepts" }
  • AddedVertex AddedVertex { vertex_id: "at.inlay.component#view.accepts:items" }
  • AddedVertex AddedVertex { vertex_id: "at.inlay.component#view.accepts:items:variant0" }
  • AddedVertex AddedVertex { vertex_id: "at.inlay.component#view.accepts:items:variant1" }
  • AddedVertex AddedVertex { vertex_id: "at.inlay.component#view.prop" }
  • AddedVertex AddedVertex { vertex_id: "at.inlay.component#viewPrimitive" }
  • AddedVertex AddedVertex { vertex_id: "at.inlay.component#viewPrimitive.format" }
  • AddedVertex AddedVertex { vertex_id: "at.inlay.component#viewPrimitive.type" }
  • AddedVertex AddedVertex { vertex_id: "at.inlay.component#viewRecord.rkey" }
  • AddedEdge AddedEdge { src: "at.inlay.component#bodyExternal", tgt: "at.inlay.component#bodyExternal.personalized", kind: "prop", name: Some("personalized") }
  • AddedEdge AddedEdge { src: "at.inlay.component#view.accepts", tgt: "at.inlay.component#view.accepts:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "at.inlay.component#view.accepts:items", tgt: "at.inlay.component#view.accepts:items:variant0", kind: "variant", name: Some("#viewRecord") }
  • AddedEdge AddedEdge { src: "at.inlay.component#view.accepts:items", tgt: "at.inlay.component#view.accepts:items:variant1", kind: "variant", name: Some("#viewPrimitive") }
  • AddedEdge AddedEdge { src: "at.inlay.component#view.accepts:items:variant0", tgt: "at.inlay.component#viewRecord", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "at.inlay.component#view.accepts:items:variant1", tgt: "at.inlay.component#viewPrimitive", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "at.inlay.component#viewPrimitive", tgt: "at.inlay.component#viewPrimitive.format", kind: "prop", name: Some("format") }
  • AddedEdge AddedEdge { src: "at.inlay.component#viewRecord", tgt: "at.inlay.component#viewRecord.rkey", kind: "prop", name: Some("rkey") }
  • AddedEdge AddedEdge { src: "at.inlay.component:body.view", tgt: "at.inlay.component#view", kind: "ref", name: None }

Migration Guidance

Removed Elements

  • RemovedVertex { vertex_id: "at.inlay.component#acceptsEntry" }
  • RemovedVertex { vertex_id: "at.inlay.component#acceptsEntry.collection" }
  • RemovedVertex { vertex_id: "at.inlay.component#acceptsEntry.format" }
  • RemovedVertex { vertex_id: "at.inlay.component#acceptsEntry.prop" }
  • RemovedVertex { vertex_id: "at.inlay.component#acceptsEntry.type" }
  • RemovedVertex { vertex_id: "at.inlay.component#viewCollection" }
  • RemovedVertex { vertex_id: "at.inlay.component#viewCollection.collection" }
  • RemovedVertex { vertex_id: "at.inlay.component#viewIdentity" }
  • RemovedVertex { vertex_id: "at.inlay.component:body.accepts" }
  • RemovedVertex { vertex_id: "at.inlay.component:body.accepts:items" }
  • RemovedVertex { vertex_id: "at.inlay.component:body.type" }
  • RemovedVertex { vertex_id: "at.inlay.component:body.view:items" }
  • RemovedVertex { vertex_id: "at.inlay.component:body.view:items:variant0" }
  • RemovedVertex { vertex_id: "at.inlay.component:body.view:items:variant1" }
  • RemovedVertex { vertex_id: "at.inlay.component:body.view:items:variant2" }

Added Elements

  • AddedVertex { vertex_id: "at.inlay.component#bodyExternal.personalized" }
  • AddedVertex { vertex_id: "at.inlay.component#view" }
  • AddedVertex { vertex_id: "at.inlay.component#view.accepts" }
  • AddedVertex { vertex_id: "at.inlay.component#view.accepts:items" }
  • AddedVertex { vertex_id: "at.inlay.component#view.accepts:items:variant0" }
  • AddedVertex { vertex_id: "at.inlay.component#view.accepts:items:variant1" }
  • AddedVertex { vertex_id: "at.inlay.component#view.prop" }
  • AddedVertex { vertex_id: "at.inlay.component#viewPrimitive" }
  • AddedVertex { vertex_id: "at.inlay.component#viewPrimitive.format" }
  • AddedVertex { vertex_id: "at.inlay.component#viewPrimitive.type" }
  • AddedVertex { vertex_id: "at.inlay.component#viewRecord.rkey" }

Constraint Changes

  • ConstraintTightened ConstraintTightened { vertex_id: "at.inlay.component:body.imports:items", sort: "format", old_value: "at-uri", new_value: "did" }
  • ConstraintAdded ConstraintAdded { vertex_id: "at.inlay.component:body.view", sort: "ref", value: "#view" }

Additional Notes

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

Compare Other Versions

Lexicon Garden

@