space.highport.defs

lexicons.highport.space

Schema Diff

+131 -27

From

CID
bafyreidatnjlok7...
Indexed At
2026-09-11 04:09 UTC
View this version

To

CID
bafyreie2t2jgjgm...
Indexed At
2026-09-18 15:13 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

5 breaking changes, 33 non-breaking changes.

Breaking Changes (5)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "space.highport.defs#delegationView", src: "space.highport.defs#delegationView", tgt: "space.highport.defs#delegationView.certMode", kind: "prop", name: Some("certMode") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "space.highport.defs#defaultTileView", src: "space.highport.defs#defaultTileView", tgt: "space.highport.defs#defaultTileView.uri", kind: "prop", name: Some("uri") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "space.highport.defs#defaultTileView", src: "space.highport.defs#defaultTileView", tgt: "space.highport.defs#defaultTileView.cid", kind: "prop", name: Some("cid") }
  • ConstraintTightened ConstraintTightened { vertex_id: "space.highport.defs#verificationCheck.name", sort: "knownValues", old_value: "[\"ownership\",\"traffic\",\"conflict\"]", new_value: "[\"ownership\",\"traffic\",\"conflict\",\"certificate\"]" }
  • ConstraintTightened ConstraintTightened { vertex_id: "space.highport.defs#edgeReachStatus", sort: "knownValues", old_value: "[\"unknown\",\"routed\",\"foreign\",\"unreachable\"]", new_value: "[\"unknown\",\"routed\",\"foreign\",\"unreachable\",\"other-deployment\",\"unproven\"]" }
Non-Breaking Changes (33)
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#defaultTileView" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#defaultTileView.appliedTo" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#defaultTileView.cid" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#defaultTileView.name" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#defaultTileView.setAt" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#defaultTileView.uri" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#delegationState" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#delegationView" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#delegationView.certMode" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#delegationView.challengeTarget" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#delegationView.defaultTile" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#delegationView.grantedAt" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#delegationView.maxNames" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#delegationView.probeHostname" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#delegationView.state" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#delegationView.wildcardObservedAt" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#domainView.delegatedBase" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#domainView.delegation" }
  • AddedEdge AddedEdge { src: "space.highport.defs#defaultTileView", tgt: "space.highport.defs#defaultTileView.appliedTo", kind: "prop", name: Some("appliedTo") }
  • AddedEdge AddedEdge { src: "space.highport.defs#defaultTileView", tgt: "space.highport.defs#defaultTileView.name", kind: "prop", name: Some("name") }
  • AddedEdge AddedEdge { src: "space.highport.defs#defaultTileView", tgt: "space.highport.defs#defaultTileView.setAt", kind: "prop", name: Some("setAt") }
  • AddedEdge AddedEdge { src: "space.highport.defs#delegationView", tgt: "space.highport.defs#delegationView.challengeTarget", kind: "prop", name: Some("challengeTarget") }
  • AddedEdge AddedEdge { src: "space.highport.defs#delegationView", tgt: "space.highport.defs#delegationView.defaultTile", kind: "prop", name: Some("defaultTile") }
  • AddedEdge AddedEdge { src: "space.highport.defs#delegationView", tgt: "space.highport.defs#delegationView.grantedAt", kind: "prop", name: Some("grantedAt") }
  • AddedEdge AddedEdge { src: "space.highport.defs#delegationView", tgt: "space.highport.defs#delegationView.maxNames", kind: "prop", name: Some("maxNames") }
  • AddedEdge AddedEdge { src: "space.highport.defs#delegationView", tgt: "space.highport.defs#delegationView.probeHostname", kind: "prop", name: Some("probeHostname") }
  • AddedEdge AddedEdge { src: "space.highport.defs#delegationView", tgt: "space.highport.defs#delegationView.state", kind: "prop", name: Some("state") }
  • AddedEdge AddedEdge { src: "space.highport.defs#delegationView", tgt: "space.highport.defs#delegationView.wildcardObservedAt", kind: "prop", name: Some("wildcardObservedAt") }
  • AddedEdge AddedEdge { src: "space.highport.defs#delegationView.defaultTile", tgt: "space.highport.defs#defaultTileView", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "space.highport.defs#delegationView.state", tgt: "space.highport.defs#delegationState", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "space.highport.defs#domainView", tgt: "space.highport.defs#domainView.delegatedBase", kind: "prop", name: Some("delegatedBase") }
  • AddedEdge AddedEdge { src: "space.highport.defs#domainView", tgt: "space.highport.defs#domainView.delegation", kind: "prop", name: Some("delegation") }
  • AddedEdge AddedEdge { src: "space.highport.defs#domainView.delegation", tgt: "space.highport.defs#delegationView", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "space.highport.defs#defaultTileView" }
  • AddedVertex { vertex_id: "space.highport.defs#defaultTileView.appliedTo" }
  • AddedVertex { vertex_id: "space.highport.defs#defaultTileView.cid" }
  • AddedVertex { vertex_id: "space.highport.defs#defaultTileView.name" }
  • AddedVertex { vertex_id: "space.highport.defs#defaultTileView.setAt" }
  • AddedVertex { vertex_id: "space.highport.defs#defaultTileView.uri" }
  • AddedVertex { vertex_id: "space.highport.defs#delegationState" }
  • AddedVertex { vertex_id: "space.highport.defs#delegationView" }
  • AddedVertex { vertex_id: "space.highport.defs#delegationView.certMode" }
  • AddedVertex { vertex_id: "space.highport.defs#delegationView.challengeTarget" }
  • AddedVertex { vertex_id: "space.highport.defs#delegationView.defaultTile" }
  • AddedVertex { vertex_id: "space.highport.defs#delegationView.grantedAt" }
  • AddedVertex { vertex_id: "space.highport.defs#delegationView.maxNames" }
  • AddedVertex { vertex_id: "space.highport.defs#delegationView.probeHostname" }
  • AddedVertex { vertex_id: "space.highport.defs#delegationView.state" }
  • AddedVertex { vertex_id: "space.highport.defs#delegationView.wildcardObservedAt" }
  • AddedVertex { vertex_id: "space.highport.defs#domainView.delegatedBase" }
  • AddedVertex { vertex_id: "space.highport.defs#domainView.delegation" }

Constraint Changes

  • ConstraintTightened ConstraintTightened { vertex_id: "space.highport.defs#edgeReachStatus", sort: "knownValues", old_value: "[\"unknown\",\"routed\",\"foreign\",\"unreachable\"]", new_value: "[\"unknown\",\"routed\",\"foreign\",\"unreachable\",\"other-deployment\",\"unproven\"]" }
  • ConstraintTightened ConstraintTightened { vertex_id: "space.highport.defs#verificationCheck.name", sort: "knownValues", old_value: "[\"ownership\",\"traffic\",\"conflict\"]", new_value: "[\"ownership\",\"traffic\",\"conflict\",\"certificate\"]" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "space.highport.defs#delegationView", src: "space.highport.defs#delegationView", tgt: "space.highport.defs#delegationView.certMode", kind: "prop", name: Some("certMode") }
  • Breaking: RequiredEdgeAdded { vertex_id: "space.highport.defs#defaultTileView", src: "space.highport.defs#defaultTileView", tgt: "space.highport.defs#defaultTileView.uri", kind: "prop", name: Some("uri") }
  • Breaking: RequiredEdgeAdded { vertex_id: "space.highport.defs#defaultTileView", src: "space.highport.defs#defaultTileView", tgt: "space.highport.defs#defaultTileView.cid", kind: "prop", name: Some("cid") }
  • Non-breaking: AddedEdge { src: "space.highport.defs#defaultTileView", tgt: "space.highport.defs#defaultTileView.appliedTo", kind: "prop", name: Some("appliedTo") }
  • Non-breaking: AddedEdge { src: "space.highport.defs#defaultTileView", tgt: "space.highport.defs#defaultTileView.name", kind: "prop", name: Some("name") }
  • Non-breaking: AddedEdge { src: "space.highport.defs#defaultTileView", tgt: "space.highport.defs#defaultTileView.setAt", kind: "prop", name: Some("setAt") }
  • Non-breaking: AddedEdge { src: "space.highport.defs#delegationView", tgt: "space.highport.defs#delegationView.challengeTarget", kind: "prop", name: Some("challengeTarget") }
  • Non-breaking: AddedEdge { src: "space.highport.defs#delegationView", tgt: "space.highport.defs#delegationView.defaultTile", kind: "prop", name: Some("defaultTile") }
  • Non-breaking: AddedEdge { src: "space.highport.defs#delegationView", tgt: "space.highport.defs#delegationView.grantedAt", kind: "prop", name: Some("grantedAt") }
  • Non-breaking: AddedEdge { src: "space.highport.defs#delegationView", tgt: "space.highport.defs#delegationView.maxNames", kind: "prop", name: Some("maxNames") }
  • Non-breaking: AddedEdge { src: "space.highport.defs#delegationView", tgt: "space.highport.defs#delegationView.probeHostname", kind: "prop", name: Some("probeHostname") }
  • Non-breaking: AddedEdge { src: "space.highport.defs#delegationView", tgt: "space.highport.defs#delegationView.state", kind: "prop", name: Some("state") }
  • Non-breaking: AddedEdge { src: "space.highport.defs#delegationView", tgt: "space.highport.defs#delegationView.wildcardObservedAt", kind: "prop", name: Some("wildcardObservedAt") }
  • Non-breaking: AddedEdge { src: "space.highport.defs#delegationView.defaultTile", tgt: "space.highport.defs#defaultTileView", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "space.highport.defs#delegationView.state", tgt: "space.highport.defs#delegationState", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "space.highport.defs#domainView", tgt: "space.highport.defs#domainView.delegatedBase", kind: "prop", name: Some("delegatedBase") }
  • Non-breaking: AddedEdge { src: "space.highport.defs#domainView", tgt: "space.highport.defs#domainView.delegation", kind: "prop", name: Some("delegation") }
  • Non-breaking: AddedEdge { src: "space.highport.defs#domainView.delegation", tgt: "space.highport.defs#delegationView", kind: "ref", name: None }
1 1
{
2 2
  "id": "space.highport.defs",
3 3
  "defs": {
4 4
    "jobView": {
5 5
      "type": "object",
6 6
      "required": [
7 7
        "id",
8 8
        "uri",
9 9
        "action",
10 10
        "state",
11 11
        "attempts",
12 12
        "scheduledAt"
13 13
      ],
14 14
      "properties": {
15 15
        "id": {
16 16
          "type": "integer"
17 17
        },
18 18
        "uri": {
19 19
          "type": "string"
20 20
        },
21 21
        "state": {
22 22
          "type": "string"
23 23
        },
24 24
        "action": {
25 25
          "type": "string"
26 26
        },
27 27
        "attempts": {
28 28
          "type": "integer"
29 29
        },
30 30
        "lastError": {
31 31
          "type": "string"
32 32
        },
33 33
        "startedAt": {
34 34
          "type": "string",
35 35
          "format": "datetime"
36 36
        },
37 37
        "finishedAt": {
38 38
          "type": "string",
39 39
          "format": "datetime"
40 40
        },
41 41
        "scheduledAt": {
42 42
          "type": "string",
43 43
          "format": "datetime"
44 44
        }
45 45
      }
46 46
    },
47 47
    "tlsView": {
48 48
      "type": "object",
49 49
      "required": [
50 50
        "status"
51 51
      ],
52 52
      "properties": {
53 53
        "status": {
54 54
          "ref": "#tlsStatus",
55 55
          "type": "ref"
56 56
        },
57 57
        "issuedAt": {
58 58
          "type": "string",
59 59
          "format": "datetime"
60 60
        },
61 61
        "expiresAt": {
62 62
          "type": "string",
63 63
          "format": "datetime"
64 64
        },
65 65
        "lastError": {
66 66
          "type": "string"
67 67
        }
68 68
      }
69 69
    },
70 70
    "siteView": {
71 71
      "type": "object",
72 72
      "required": [
73 73
        "domain",
74 74
        "did",
75 75
        "uri",
76 76
        "cid",
77 77
        "rev",
78 78
        "activatedAt",
79 79
        "sourceKind"
80 80
      ],
81 81
      "properties": {
82 82
        "cid": {
83 83
          "type": "string",
84 84
          "format": "cid"
85 85
        },
86 86
        "did": {
87 87
          "type": "string",
88 88
          "format": "did"
89 89
        },
90 90
        "rev": {
91 91
          "type": "string"
92 92
        },
93 93
        "uri": {
94 94
          "type": "string",
95 95
          "format": "at-uri"
96 96
        },
97 97
        "tile": {
98 98
          "ref": "#tileView",
99 99
          "type": "ref"
100 100
        },
101 101
        "space": {
102 102
          "type": "string",
103 103
          "format": "at-uri",
104 -
          "description": "Present for a site published from a space; attribution survives the plane."
104 +
          "description": "Present for a site published from a space."
105 105
        },
106 106
        "domain": {
107 107
          "type": "string"
108 108
        },
109 109
        "sourceKind": {
110 110
          "type": "string",
111 111
          "knownValues": [
112 112
            "inline",
113 113
            "tile"
114 114
          ]
115 115
        },
116 116
        "activatedAt": {
117 117
          "type": "string",
118 118
          "format": "datetime"
119 119
        }
120 120
      }
121 121
    },
122 122
    "tileView": {
123 123
      "type": "object",
124 124
      "required": [
125 125
        "uri",
126 126
        "cid",
127 127
        "did",
128 128
        "name",
129 129
        "state",
130 130
        "indexedAt"
131 131
      ],
132 132
      "properties": {
133 133
        "cid": {
134 134
          "type": "string",
135 135
          "format": "cid"
136 136
        },
137 137
        "did": {
138 138
          "type": "string",
139 139
          "format": "did"
140 140
        },
141 141
        "uri": {
142 142
          "type": "string",
143 143
          "format": "at-uri"
144 144
        },
145 145
        "name": {
146 146
          "type": "string"
147 147
        },
148 148
        "space": {
149 149
          "type": "string",
150 150
          "format": "at-uri",
151 -
          "description": "Present for a space tile; never on the public surface."
151 +
          "description": "Present for a space tile. Never shown on the public surface."
152 152
        },
153 153
        "state": {
154 154
          "type": "string",
155 155
          "knownValues": [
156 156
            "indexing",
157 157
            "ready",
158 158
            "incomplete",
159 159
            "rejected",
160 160
            "suspended",
161 161
            "deleted"
162 162
          ]
163 163
        },
164 164
        "handle": {
165 165
          "type": "string",
166 166
          "format": "handle",
167 -
          "description": "The author's handle, present only when it resolves back to did. Absent is normal and not an error: a handle that has just changed, or one whose DNS is unreachable, is reported as absent rather than as a claim, and clients show did instead."
167 +
          "description": "The author's handle, present only if it resolves back to did. Often absent, for example right after a handle change or when DNS is unreachable. Show did instead."
168 168
        },
169 169
        "params": {
170 170
          "type": "array",
171 171
          "items": {
172 172
            "ref": "space.highport.sites.tile#param",
173 173
            "type": "ref"
174 174
          }
175 175
        },
176 176
        "iconUrl": {
177 177
          "type": "string",
178 178
          "format": "uri",
179 179
          "description": "https://highport.space/xrpc/space.highport.sites.getTileIcon?cid={cid}; absent if the tile has no icon."
180 180
        },
181 181
        "indexedAt": {
182 182
          "type": "string",
183 183
          "format": "datetime"
184 184
        },
185 185
        "latestCid": {
186 186
          "type": "string",
187 187
          "format": "cid",
188 188
          "description": "The newest indexed version at this URI, when it differs from cid."
189 189
        },
190 190
        "entryCount": {
191 191
          "type": "integer"
192 192
        },
193 193
        "totalBytes": {
194 194
          "type": "integer"
195 195
        },
196 196
        "description": {
197 197
          "type": "string"
198 198
        }
199 199
      }
200 200
    },
201 201
    "spaceView": {
202 202
      "type": "object",
203 203
      "required": [
204 204
        "uri",
205 205
        "authority",
206 206
        "skey",
207 207
        "syncState",
208 208
        "connectedAt"
209 209
      ],
210 210
      "properties": {
211 211
        "uri": {
212 212
          "type": "string",
213 213
          "format": "at-uri"
214 214
        },
215 215
        "skey": {
216 216
          "type": "string"
217 217
        },
218 218
        "policy": {
219 219
          "type": "string",
220 220
          "knownValues": [
221 221
            "public",
222 222
            "member-list",
223 223
            "managing-app",
224 224
            "unknown"
225 225
          ]
226 226
        },
227 227
        "headRev": {
228 228
          "type": "string"
229 229
        },
230 230
        "appAccess": {
231 231
          "type": "string",
232 232
          "knownValues": [
233 233
            "open",
234 234
            "allow-list",
235 235
            "unknown"
236 236
          ]
237 237
        },
238 238
        "authority": {
239 239
          "type": "string",
240 240
          "format": "did"
241 241
        },
242 242
        "syncState": {
243 243
          "ref": "#spaceSyncState",
244 244
          "type": "ref"
245 245
        },
246 246
        "tileCount": {
247 247
          "type": "integer"
248 248
        },
249 249
        "connectedAt": {
250 250
          "type": "string",
251 251
          "format": "datetime"
252 252
        },
253 253
        "domainCount": {
254 254
          "type": "integer"
255 255
        },
256 256
        "lastCheckedAt": {
257 257
          "type": "string",
258 258
          "format": "datetime"
259 259
        },
260 260
        "lastNotifiedAt": {
261 261
          "type": "string",
262 262
          "format": "datetime"
263 263
        },
264 264
        "accessExpiresAt": {
265 265
          "type": "string",
266 266
          "format": "datetime",
267 -
          "description": "When bard's current space credential expires; absent when bard holds none."
267 +
          "description": "When bard's current credential for the space expires. Absent if bard holds none."
268 268
        },
269 269
        "accessGrantedBy": {
270 270
          "type": "string",
271 271
          "format": "did"
272 272
        },
273 273
        "queuedNotifications": {
274 274
          "type": "integer",
275 -
          "description": "Receipts waiting for a credential."
275 +
          "description": "Notification receipts waiting for a credential."
276 276
        },
277 277
        "registrationExpiresAt": {
278 278
          "type": "string",
279 279
          "format": "datetime"
280 280
        }
281 281
      }
282 282
    },
283 283
    "tlsStatus": {
284 284
      "type": "string",
285 285
      "knownValues": [
286 286
        "none",
287 287
        "pending",
288 288
        "issued",
289 289
        "renewing",
290 290
        "failed"
291 291
      ]
292 292
    },
293 293
    "domainView": {
294 294
      "type": "object",
295 295
      "required": [
296 296
        "domain",
297 297
        "did",
298 298
        "status",
299 299
        "createdAt"
300 300
      ],
301 301
      "properties": {
302 302
        "did": {
303 303
          "type": "string",
304 304
          "format": "did"
305 305
        },
306 306
        "tls": {
307 307
          "ref": "#tlsStatus",
308 308
          "type": "ref"
309 309
        },
310 310
        "space": {
311 311
          "type": "string",
312 312
          "format": "at-uri",
313 -
          "description": "The space the domain is registered to; absent for a DID-registered domain. The serving record is the space authority's."
313 +
          "description": "The space the domain is registered to. Absent for a domain registered to a DID. The record served is the space authority's."
314 314
        },
315 315
        "domain": {
316 316
          "type": "string"
317 317
        },
318 318
        "status": {
319 319
          "ref": "#domainStatus",
320 320
          "type": "ref"
321 321
        },
322 322
        "tileCid": {
323 323
          "type": "string",
324 324
          "format": "cid"
325 325
        },
326 326
        "tileUri": {
327 327
          "type": "string",
328 328
          "format": "at-uri"
329 329
        },
330 330
        "activeCid": {
331 331
          "type": "string",
332 332
          "format": "cid"
333 333
        },
334 334
        "activeRev": {
335 335
          "type": "string"
336 336
        },
337 337
        "activeUri": {
338 338
          "type": "string",
339 339
          "format": "at-uri"
340 340
        },
341 341
        "createdAt": {
342 342
          "type": "string",
343 343
          "format": "datetime"
344 344
        },
345 +
        "delegation": {
346 +
          "ref": "#delegationView",
347 +
          "type": "ref",
348 +
          "description": "For a base: what its owner has enabled and granted. Absent on any other domain."
349 +
        },
345 350
        "entryCount": {
346 351
          "type": "integer"
347 352
        },
348 353
        "pendingCid": {
349 354
          "type": "string",
350 355
          "format": "cid",
351 -
          "description": "A validated, prepared record awaiting its commit, if any."
356 +
          "description": "A validated record waiting to be committed, if there is one."
352 357
        },
353 358
        "sourceKind": {
354 359
          "type": "string",
355 360
          "knownValues": [
356 361
            "inline",
357 362
            "tile"
358 363
          ]
359 364
        },
360 365
        "totalBytes": {
361 366
          "type": "integer"
362 367
        },
363 368
        "verifiedAt": {
364 369
          "type": "string",
365 370
          "format": "datetime"
366 371
        },
367 372
        "activatedAt": {
368 373
          "type": "string",
369 374
          "format": "datetime"
370 375
        },
371 376
        "pendingState": {
372 377
          "type": "string",
373 378
          "knownValues": [
374 379
            "preparing",
375 380
            "pending-publication"
376 381
          ]
382 +
        },
383 +
        "delegatedBase": {
384 +
          "type": "string",
385 +
          "description": "For a name reserved under a delegation base: that base. In this case did is the identity the name was reserved for, not the base's owner."
377 386
        }
378 387
      }
379 388
    },
380 389
    "indexState": {
381 390
      "type": "string",
382 391
      "knownValues": [
383 392
        "preparing",
384 393
        "pending-publication",
385 394
        "expired",
386 395
        "queued",
387 396
        "fetching",
388 397
        "materializing",
389 398
        "active",
390 399
        "superseded",
391 400
        "rejected",
392 401
        "failed"
393 402
      ]
394 403
    },
395 404
    "spaceEvent": {
396 405
      "type": "object",
397 406
      "required": [
398 407
        "seq",
399 408
        "space",
400 409
        "kind",
401 410
        "at"
402 411
      ],
403 412
      "properties": {
404 413
        "at": {
405 414
          "type": "string",
406 415
          "format": "datetime"
407 416
        },
408 417
        "cid": {
409 418
          "type": "string",
410 419
          "format": "cid"
411 420
        },
412 421
        "seq": {
413 422
          "type": "integer"
414 423
        },
415 424
        "kind": {
416 425
          "type": "string",
417 426
          "knownValues": [
418 427
            "record.created",
419 428
            "record.updated",
420 429
            "record.deleted",
421 430
            "site.activated",
422 431
            "site.deactivated",
423 432
            "tile.ready",
424 433
            "tile.incomplete",
425 434
            "tile.deleted",
426 435
            "access.granted",
427 436
            "access.expired",
428 437
            "registration.renewed",
429 438
            "registration.lapsed",
430 439
            "app-not-allowed",
431 440
            "space.deleted"
432 441
          ]
433 442
        },
434 443
        "actor": {
435 444
          "type": "string",
436 445
          "format": "did"
437 446
        },
438 447
        "space": {
439 448
          "type": "string",
440 449
          "format": "at-uri"
441 450
        },
442 451
        "subject": {
443 452
          "type": "string"
444 453
        }
445 454
      }
446 455
    },
447 456
    "blobFailure": {
448 457
      "type": "object",
449 458
      "required": [
450 459
        "cid",
451 460
        "role",
452 461
        "sourceDid",
453 462
        "error"
454 463
      ],
455 464
      "properties": {
456 465
        "cid": {
457 466
          "type": "string",
458 467
          "format": "cid"
459 468
        },
460 469
        "role": {
461 470
          "type": "string",
462 471
          "knownValues": [
463 472
            "manifest",
464 473
            "tile",
465 474
            "parameter",
466 475
            "notFound"
467 476
          ]
468 477
        },
469 478
        "error": {
470 479
          "type": "string",
471 -
          "description": "BlobUnavailable, CidMismatch, FetchFailed."
480 +
          "description": "One of BlobUnavailable, CidMismatch or FetchFailed."
472 481
        },
473 482
        "sourceDid": {
474 483
          "type": "string",
475 484
          "format": "did"
476 485
        }
477 486
      }
478 487
    },
479 488
    "domainEvent": {
480 489
      "type": "object",
481 490
      "required": [
482 491
        "event",
483 492
        "createdAt"
484 493
      ],
485 494
      "properties": {
486 495
        "actor": {
487 496
          "type": "string"
488 497
        },
489 498
        "event": {
490 499
          "type": "string"
491 500
        },
492 501
        "detail": {
493 502
          "type": "unknown"
494 503
        },
495 504
        "createdAt": {
496 505
          "type": "string",
497 506
          "format": "datetime"
498 507
        }
499 508
      }
500 509
    },
501 510
    "missingBlob": {
502 511
      "type": "object",
503 512
      "required": [
504 513
        "cid",
505 514
        "role",
506 515
        "sourceDid"
507 516
      ],
508 517
      "properties": {
509 518
        "cid": {
510 519
          "type": "string",
511 520
          "format": "cid"
512 521
        },
513 522
        "role": {
514 523
          "type": "string",
515 524
          "knownValues": [
516 525
            "manifest",
517 526
            "tile",
518 527
            "parameter",
519 528
            "notFound"
520 529
          ]
521 530
        },
522 531
        "sourceDid": {
523 532
          "type": "string",
524 533
          "format": "did"
525 534
        }
526 535
      }
527 536
    },
528 537
    "domainStatus": {
529 538
      "type": "string",
530 539
      "knownValues": [
531 540
        "pending",
532 541
        "verifying",
533 542
        "verified",
534 543
        "active",
535 544
        "failed",
536 545
        "suspended",
537 546
        "released"
538 547
      ]
539 548
    },
540 549
    "denylistEntry": {
541 550
      "type": "object",
542 551
      "required": [
543 552
        "subject",
544 553
        "kind",
545 554
        "createdAt"
546 555
      ],
547 556
      "properties": {
548 557
        "kind": {
549 558
          "type": "string",
550 559
          "knownValues": [
551 560
            "domain",
552 561
            "did",
553 562
            "uri",
554 563
            "cid",
555 564
            "pattern",
556 565
            "space"
557 566
          ]
558 567
        },
559 568
        "actor": {
560 569
          "type": "string"
561 570
        },
562 571
        "reason": {
563 572
          "type": "string"
564 573
        },
565 574
        "subject": {
566 575
          "type": "string"
567 576
        },
568 577
        "createdAt": {
569 578
          "type": "string",
570 579
          "format": "datetime"
571 580
        }
572 581
      }
573 582
    },
583 +
    "delegationView": {
584 +
      "type": "object",
585 +
      "required": [
586 +
        "certMode"
587 +
      ],
588 +
      "properties": {
589 +
        "state": {
590 +
          "ref": "#delegationState",
591 +
          "type": "ref",
592 +
          "description": "Absent if the base has not enabled delegation."
593 +
        },
594 +
        "certMode": {
595 +
          "type": "string",
596 +
          "description": "How names under the base get certificates. Every base starts as per-name.",
597 +
          "knownValues": [
598 +
            "per-name",
599 +
            "wildcard"
600 +
          ]
601 +
        },
602 +
        "maxNames": {
603 +
          "type": "integer",
604 +
          "description": "The most names the base can reserve."
605 +
        },
606 +
        "grantedAt": {
607 +
          "type": "string",
608 +
          "format": "datetime",
609 +
          "description": "When the live wildcard grant was made."
610 +
        },
611 +
        "defaultTile": {
612 +
          "ref": "#defaultTileView",
613 +
          "type": "ref",
614 +
          "description": "The tile served on names under this base whose subject has not published a site. Absent when the base has set none."
615 +
        },
616 +
        "probeHostname": {
617 +
          "type": "string",
618 +
          "maxLength": 253,
619 +
          "description": "A random name under the base, used to prove the wildcard routes."
620 +
        },
621 +
        "challengeTarget": {
622 +
          "type": "string",
623 +
          "description": "Where the base's _acme-challenge CNAME must point, exactly as the certificate issuer writes it. Present only while a wildcard grant is live."
624 +
        },
625 +
        "wildcardObservedAt": {
626 +
          "type": "string",
627 +
          "format": "datetime",
628 +
          "description": "When the base's wildcard certificate first appeared in certificate storage."
629 +
        }
630 +
      },
631 +
      "description": "What a base's owner has enabled and granted. Fields other than certMode are absent when they do not apply."
632 +
    },
574 633
    "dnsInstruction": {
575 634
      "type": "object",
576 635
      "required": [
577 636
        "type",
578 637
        "name",
579 638
        "value"
580 639
      ],
581 640
      "properties": {
582 641
        "ttl": {
583 642
          "type": "integer"
584 643
        },
585 644
        "name": {
586 645
          "type": "string",
587 646
          "description": "Fully-qualified record name."
588 647
        },
589 648
        "type": {
590 649
          "type": "string",
591 650
          "knownValues": [
592 651
            "TXT",
593 652
            "CNAME",
594 653
            "ALIAS",
595 654
            "ANAME",
596 655
            "A",
597 656
            "AAAA"
598 657
          ]
599 658
        },
600 659
        "value": {
601 660
          "type": "string"
602 661
        },
603 662
        "purpose": {
604 663
          "type": "string",
605 664
          "knownValues": [
606 665
            "ownership",
607 666
            "certificate",
608 667
            "traffic"
609 668
          ]
610 669
        },
611 670
        "required": {
612 671
          "type": "boolean"
613 672
        }
614 673
      }
615 674
    },
616 675
    "malwareFinding": {
617 676
      "type": "object",
618 677
      "required": [
619 678
        "id",
620 679
        "cid",
621 680
        "signature",
622 681
        "class",
623 682
        "source",
624 683
        "foundAt"
625 684
      ],
626 685
      "properties": {
627 686
        "id": {
628 687
          "type": "integer",
629 -
          "description": "The finding's row id, which the denylist entry's reason names."
688 +
          "description": "The finding's ID. The matching denylist entry's reason refers to it."
630 689
        },
631 690
        "cid": {
632 691
          "type": "string",
633 -
          "description": "The content address. `-` for a detection at upload, where nothing was stored."
692 +
          "description": "The content address, or `-` for a detection at upload, when nothing was stored."
634 693
        },
635 694
        "did": {
636 695
          "type": "string",
637 696
          "format": "did",
638 -
          "description": "The repository the bytes were fetched from โ€” for a tile resource the tile's author, not the site owner. Absent for content bard authored."
697 +
          "description": "The repository the bytes came from. For a tile resource, that is the tile's author, not the site owner. Absent for content bard authored."
639 698
        },
640 699
        "uri": {
641 700
          "type": "string",
642 701
          "format": "at-uri",
643 -
          "description": "The record that referenced it."
702 +
          "description": "The record that referenced the content."
644 703
        },
645 704
        "path": {
646 705
          "type": "string",
647 -
          "description": "The manifest key the bytes were mapped at โ€” the field that answers which file. Absent where there is no key: the notFound resource, an upload refused before any record referenced it, and a rescan, which starts from a CID."
706 +
          "description": "The manifest path the bytes were mapped to, which identifies the file. Absent when there is no path: the notFound resource, an upload refused before any record referenced it, or a rescan."
648 707
        },
649 708
        "class": {
650 709
          "type": "string",
651 -
          "description": "`unwanted` is a PUA match and stops short of the publishing identity under the default policy.",
710 +
          "description": "`unwanted` is a PUA match. Under the default policy, the response stops short of the publishing identity.",
652 711
          "knownValues": [
653 712
            "malware",
654 713
            "unwanted"
655 714
          ]
656 715
        },
657 716
        "domain": {
658 717
          "type": "string",
659 -
          "description": "The hostname it would have served at."
718 +
          "description": "The hostname the content would have been served at."
660 719
        },
661 720
        "source": {
662 721
          "type": "string",
663 -
          "description": "Where it was found. `rescan` means the content was clean when it arrived and a signature has caught up with it; `admin` means an operator asked about this CID rather than the sweep reaching it.",
722 +
          "description": "Where the detection happened. `rescan`: the content was clean on arrival and a newer signature caught it. `admin`: an operator asked for this CID to be scanned.",
664 723
          "knownValues": [
665 724
            "fetch",
666 725
            "upload",
667 726
            "rescan",
668 727
            "admin"
669 728
          ]
670 729
        },
671 730
        "foundAt": {
672 731
          "type": "string",
673 732
          "format": "datetime"
674 733
        },
675 734
        "signature": {
676 735
          "type": "string",
677 -
          "description": "The signature name, verbatim from the engine."
736 +
          "description": "The signature name, exactly as the scanner reported it."
678 737
        },
679 738
        "quarantinedAt": {
680 739
          "type": "string",
681 740
          "format": "datetime",
682 -
          "description": "When the response finished. Absent means it has not: the content is denied and may still be served."
741 +
          "description": "When the response finished. Absent while it is still underway: the content is denied but may still be served."
683 742
        }
684 743
      },
685 -
      "description": "One malware detection. Written before anything is denied or deleted, because the quarantine destroys the sample and nothing after that can re-derive why."
744 +
      "description": "One malware detection. It is recorded before anything is denied or deleted, because quarantine destroys the sample."
686 745
    },
687 746
    "spaceSyncState": {
688 747
      "type": "string",
689 748
      "knownValues": [
690 749
        "connecting",
691 750
        "syncing",
692 751
        "synced",
693 752
        "credential-expired",
694 753
        "registration-lapsed",
695 754
        "app-not-allowed",
696 755
        "authority-unreachable",
697 756
        "deleted",
698 757
        "disconnected"
699 758
      ]
700 759
    },
760 +
    "defaultTileView": {
761 +
      "type": "object",
762 +
      "required": [
763 +
        "uri",
764 +
        "cid"
765 +
      ],
766 +
      "properties": {
767 +
        "cid": {
768 +
          "type": "string",
769 +
          "format": "cid",
770 +
          "description": "The pinned version."
771 +
        },
772 +
        "uri": {
773 +
          "type": "string",
774 +
          "format": "at-uri",
775 +
          "description": "The tile record's AT-URI."
776 +
        },
777 +
        "name": {
778 +
          "type": "string",
779 +
          "description": "The tile's declared name, as it was when this was read."
780 +
        },
781 +
        "setAt": {
782 +
          "type": "string",
783 +
          "format": "datetime",
784 +
          "description": "When the base owner bound it."
785 +
        },
786 +
        "appliedTo": {
787 +
          "type": "integer",
788 +
          "description": "How many names under the base are serving it now. Names whose subject has published their own site are not counted."
789 +
        }
790 +
      },
791 +
      "description": "A base's default tile: what unclaimed names under it serve. The binding pins a CID, so a later version of the tile does not change what they serve."
792 +
    },
793 +
    "delegationState": {
794 +
      "type": "string",
795 +
      "description": "Where a base's delegation stands. probing: the wildcard has not been shown to route yet. enabled: it has. routing-lapsed: the wildcard stopped routing for longer than the grace period, and names under the base are suspended until it routes again.",
796 +
      "knownValues": [
797 +
        "probing",
798 +
        "enabled",
799 +
        "routing-lapsed"
800 +
      ]
801 +
    },
701 802
    "edgeReachStatus": {
702 803
      "type": "string",
703 -
      "description": "Whether bard's edge routes a serving hostname to bard. unknown means no probe has been made and must never be read as a fault; routed means the probe reached bard-origin; foreign means something else answered for the hostname; unreachable means nothing answered at all.",
804 +
      "description": "Whether bard's edge routes a serving hostname to this deployment. unknown: not probed yet, which is not a fault. routed: the probe reached this deployment's bard-origin. foreign: something else answered. unreachable: nothing answered. other-deployment: a different bard deployment answered. unproven: the answer looked like this deployment's but failed the reachability challenge, so something may be imitating it.",
704 805
      "knownValues": [
705 806
        "unknown",
706 807
        "routed",
707 808
        "foreign",
708 -
        "unreachable"
809 +
        "unreachable",
810 +
        "other-deployment",
811 +
        "unproven"
709 812
      ]
710 813
    },
711 814
    "validationError": {
712 815
      "type": "object",
713 816
      "required": [
714 817
        "name",
715 818
        "message"
716 819
      ],
717 820
      "properties": {
718 821
        "name": {
719 822
          "type": "string",
720 -
          "description": "A DESIGN.md ยง3.8 error name, e.g. DuplicatePath, RedirectTargetNotFound, ParameterTypeMismatch."
823 +
          "description": "A validation error name, such as DuplicatePath, RedirectTargetNotFound or ParameterTypeMismatch."
721 824
        },
722 825
        "path": {
723 826
          "type": "string",
724 -
          "description": "JSON Pointer into the record, when the error concerns one field or entry."
827 +
          "description": "JSON Pointer to the field or entry the error is about, if there is one."
725 828
        },
726 829
        "message": {
727 830
          "type": "string"
728 831
        }
729 832
      }
730 833
    },
731 834
    "edgeReachability": {
732 835
      "type": "object",
733 836
      "required": [
734 837
        "status",
735 838
        "domain"
736 839
      ],
737 840
      "properties": {
738 841
        "detail": {
739 842
          "type": "string",
740 -
          "description": "What answered, for a person: a status line, or a transport error. Diagnostic only; nothing branches on it."
843 +
          "description": "What answered, as a status line or a transport error. Meant for people; do not branch on it."
741 844
        },
742 845
        "domain": {
743 846
          "type": "string",
744 847
          "maxLength": 253,
745 -
          "description": "The hostname that was probed, so a reader is told which name is not arriving."
848 +
          "description": "The hostname that was probed."
746 849
        },
747 850
        "status": {
748 851
          "ref": "#edgeReachStatus",
749 852
          "type": "ref"
750 853
        },
751 854
        "checkedAt": {
752 855
          "type": "string",
753 856
          "format": "datetime",
754 857
          "description": "When the probe was made. Absent when status is unknown."
755 858
        }
756 859
      },
757 -
      "description": "What the deployment's own edge answered for a hostname, measured over the network rather than read from edge configuration. A site can be indexed and activated while the edge has nowhere to send its hostname, and this is the only field that says so."
860 +
      "description": "What this deployment's edge answered for a hostname, probed over the network. A site can be indexed and active while the edge has nowhere to send it, and only this field shows that."
758 861
    },
759 862
    "verificationView": {
760 863
      "type": "object",
761 864
      "required": [
762 865
        "status",
763 866
        "checks"
764 867
      ],
765 868
      "properties": {
766 869
        "checks": {
767 870
          "type": "array",
768 871
          "items": {
769 872
            "ref": "#verificationCheck",
770 873
            "type": "ref"
771 874
          }
772 875
        },
773 876
        "status": {
774 877
          "ref": "#domainStatus",
775 878
          "type": "ref"
776 879
        },
777 880
        "lastCheckedAt": {
778 881
          "type": "string",
779 882
          "format": "datetime"
780 883
        }
781 884
      }
782 885
    },
783 886
    "preparationStatus": {
784 887
      "type": "object",
785 888
      "required": [
786 889
        "state",
787 890
        "cid",
788 891
        "fetched",
789 892
        "pending",
790 893
        "failed"
791 894
      ],
792 895
      "properties": {
793 896
        "cid": {
794 897
          "type": "string",
795 898
          "format": "cid"
796 899
        },
797 900
        "state": {
798 901
          "type": "string",
799 902
          "knownValues": [
800 903
            "preparing",
801 904
            "pending-publication",
802 905
            "expired"
803 906
          ]
804 907
        },
805 908
        "failed": {
806 909
          "type": "array",
807 910
          "items": {
808 911
            "ref": "#blobFailure",
809 912
            "type": "ref"
810 913
          }
811 914
        },
812 915
        "fetched": {
813 916
          "type": "integer"
814 917
        },
815 918
        "pending": {
816 919
          "type": "integer"
817 920
        },
818 921
        "expiresAt": {
819 922
          "type": "string",
820 923
          "format": "datetime"
821 924
        }
822 925
      }
823 926
    },
824 927
    "verificationCheck": {
825 928
      "type": "object",
826 929
      "required": [
827 930
        "name",
828 931
        "passed",
829 932
        "checkedAt"
830 933
      ],
831 934
      "properties": {
832 935
        "name": {
833 936
          "type": "string",
834 937
          "knownValues": [
835 938
            "ownership",
836 939
            "traffic",
837 -
            "conflict"
940 +
            "conflict",
941 +
            "certificate"
838 942
          ]
839 943
        },
840 944
        "detail": {
841 945
          "type": "string"
842 946
        },
843 947
        "passed": {
844 948
          "type": "boolean"
845 949
        },
846 950
        "checkedAt": {
847 951
          "type": "string",
848 952
          "format": "datetime"
849 953
        }
850 954
      }
851 955
    }
852 956
  },
853 957
  "$type": "com.atproto.lexicon.schema",
854 958
  "lexicon": 1
855 959
}

Compare Other Versions

Lexicon Garden

@