space.highport.defs

lexicons.highport.space

Schema Diff

+228 -10

From

CID
bafyreifor3cvx55...
Indexed At
2026-09-01 13:02 UTC
View this version

To

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

Compatibility Analysis

Breaking Changes Detected

12 breaking changes, 61 non-breaking changes.

Breaking Changes (12)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "space.highport.defs#malwareFinding", src: "space.highport.defs#malwareFinding", tgt: "space.highport.defs#malwareFinding.id", kind: "prop", name: Some("id") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "space.highport.defs#malwareFinding", src: "space.highport.defs#malwareFinding", tgt: "space.highport.defs#malwareFinding.cid", kind: "prop", name: Some("cid") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "space.highport.defs#malwareFinding", src: "space.highport.defs#malwareFinding", tgt: "space.highport.defs#malwareFinding.source", kind: "prop", name: Some("source") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "space.highport.defs#malwareFinding", src: "space.highport.defs#malwareFinding", tgt: "space.highport.defs#malwareFinding.foundAt", kind: "prop", name: Some("foundAt") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "space.highport.defs#malwareFinding", src: "space.highport.defs#malwareFinding", tgt: "space.highport.defs#malwareFinding.signature", kind: "prop", name: Some("signature") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "space.highport.defs#malwareFinding", src: "space.highport.defs#malwareFinding", tgt: "space.highport.defs#malwareFinding.class", kind: "prop", name: Some("class") }
  • 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#edgeReachability", src: "space.highport.defs#edgeReachability", tgt: "space.highport.defs#edgeReachability.domain", kind: "prop", name: Some("domain") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "space.highport.defs#edgeReachability", src: "space.highport.defs#edgeReachability", tgt: "space.highport.defs#edgeReachability.status", kind: "prop", name: Some("status") }
  • 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\"]" }
Non-Breaking Changes (61)
  • 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" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#edgeReachStatus" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#edgeReachability" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#edgeReachability.checkedAt" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#edgeReachability.detail" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#edgeReachability.domain" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#edgeReachability.status" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#malwareFinding" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#malwareFinding.cid" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#malwareFinding.class" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#malwareFinding.did" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#malwareFinding.domain" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#malwareFinding.foundAt" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#malwareFinding.id" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#malwareFinding.path" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#malwareFinding.quarantinedAt" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#malwareFinding.signature" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#malwareFinding.source" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#malwareFinding.uri" }
  • AddedVertex AddedVertex { vertex_id: "space.highport.defs#tileView.handle" }
  • 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 }
  • AddedEdge AddedEdge { src: "space.highport.defs#edgeReachability", tgt: "space.highport.defs#edgeReachability.checkedAt", kind: "prop", name: Some("checkedAt") }
  • AddedEdge AddedEdge { src: "space.highport.defs#edgeReachability", tgt: "space.highport.defs#edgeReachability.detail", kind: "prop", name: Some("detail") }
  • AddedEdge AddedEdge { src: "space.highport.defs#edgeReachability.status", tgt: "space.highport.defs#edgeReachStatus", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "space.highport.defs#malwareFinding", tgt: "space.highport.defs#malwareFinding.did", kind: "prop", name: Some("did") }
  • AddedEdge AddedEdge { src: "space.highport.defs#malwareFinding", tgt: "space.highport.defs#malwareFinding.domain", kind: "prop", name: Some("domain") }
  • AddedEdge AddedEdge { src: "space.highport.defs#malwareFinding", tgt: "space.highport.defs#malwareFinding.path", kind: "prop", name: Some("path") }
  • AddedEdge AddedEdge { src: "space.highport.defs#malwareFinding", tgt: "space.highport.defs#malwareFinding.quarantinedAt", kind: "prop", name: Some("quarantinedAt") }
  • AddedEdge AddedEdge { src: "space.highport.defs#malwareFinding", tgt: "space.highport.defs#malwareFinding.uri", kind: "prop", name: Some("uri") }
  • AddedEdge AddedEdge { src: "space.highport.defs#tileView", tgt: "space.highport.defs#tileView.handle", kind: "prop", name: Some("handle") }

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" }
  • AddedVertex { vertex_id: "space.highport.defs#edgeReachStatus" }
  • AddedVertex { vertex_id: "space.highport.defs#edgeReachability" }
  • AddedVertex { vertex_id: "space.highport.defs#edgeReachability.checkedAt" }
  • AddedVertex { vertex_id: "space.highport.defs#edgeReachability.detail" }
  • AddedVertex { vertex_id: "space.highport.defs#edgeReachability.domain" }
  • AddedVertex { vertex_id: "space.highport.defs#edgeReachability.status" }
  • AddedVertex { vertex_id: "space.highport.defs#malwareFinding" }
  • AddedVertex { vertex_id: "space.highport.defs#malwareFinding.cid" }
  • AddedVertex { vertex_id: "space.highport.defs#malwareFinding.class" }
  • AddedVertex { vertex_id: "space.highport.defs#malwareFinding.did" }
  • AddedVertex { vertex_id: "space.highport.defs#malwareFinding.domain" }
  • AddedVertex { vertex_id: "space.highport.defs#malwareFinding.foundAt" }
  • AddedVertex { vertex_id: "space.highport.defs#malwareFinding.id" }
  • AddedVertex { vertex_id: "space.highport.defs#malwareFinding.path" }
  • AddedVertex { vertex_id: "space.highport.defs#malwareFinding.quarantinedAt" }
  • AddedVertex { vertex_id: "space.highport.defs#malwareFinding.signature" }
  • AddedVertex { vertex_id: "space.highport.defs#malwareFinding.source" }
  • AddedVertex { vertex_id: "space.highport.defs#malwareFinding.uri" }
  • AddedVertex { vertex_id: "space.highport.defs#tileView.handle" }

Constraint Changes

  • 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#edgeReachability", src: "space.highport.defs#edgeReachability", tgt: "space.highport.defs#edgeReachability.domain", kind: "prop", name: Some("domain") }
  • Breaking: RequiredEdgeAdded { vertex_id: "space.highport.defs#edgeReachability", src: "space.highport.defs#edgeReachability", tgt: "space.highport.defs#edgeReachability.status", kind: "prop", name: Some("status") }
  • 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") }
  • 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#malwareFinding", src: "space.highport.defs#malwareFinding", tgt: "space.highport.defs#malwareFinding.id", kind: "prop", name: Some("id") }
  • Breaking: RequiredEdgeAdded { vertex_id: "space.highport.defs#malwareFinding", src: "space.highport.defs#malwareFinding", tgt: "space.highport.defs#malwareFinding.cid", kind: "prop", name: Some("cid") }
  • Breaking: RequiredEdgeAdded { vertex_id: "space.highport.defs#malwareFinding", src: "space.highport.defs#malwareFinding", tgt: "space.highport.defs#malwareFinding.source", kind: "prop", name: Some("source") }
  • Breaking: RequiredEdgeAdded { vertex_id: "space.highport.defs#malwareFinding", src: "space.highport.defs#malwareFinding", tgt: "space.highport.defs#malwareFinding.foundAt", kind: "prop", name: Some("foundAt") }
  • Breaking: RequiredEdgeAdded { vertex_id: "space.highport.defs#malwareFinding", src: "space.highport.defs#malwareFinding", tgt: "space.highport.defs#malwareFinding.signature", kind: "prop", name: Some("signature") }
  • Breaking: RequiredEdgeAdded { vertex_id: "space.highport.defs#malwareFinding", src: "space.highport.defs#malwareFinding", tgt: "space.highport.defs#malwareFinding.class", kind: "prop", name: Some("class") }
  • 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 }
  • Non-breaking: AddedEdge { src: "space.highport.defs#edgeReachability", tgt: "space.highport.defs#edgeReachability.checkedAt", kind: "prop", name: Some("checkedAt") }
  • Non-breaking: AddedEdge { src: "space.highport.defs#edgeReachability", tgt: "space.highport.defs#edgeReachability.detail", kind: "prop", name: Some("detail") }
  • Non-breaking: AddedEdge { src: "space.highport.defs#edgeReachability.status", tgt: "space.highport.defs#edgeReachStatus", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "space.highport.defs#malwareFinding", tgt: "space.highport.defs#malwareFinding.did", kind: "prop", name: Some("did") }
  • Non-breaking: AddedEdge { src: "space.highport.defs#malwareFinding", tgt: "space.highport.defs#malwareFinding.domain", kind: "prop", name: Some("domain") }
  • Non-breaking: AddedEdge { src: "space.highport.defs#malwareFinding", tgt: "space.highport.defs#malwareFinding.path", kind: "prop", name: Some("path") }
  • Non-breaking: AddedEdge { src: "space.highport.defs#malwareFinding", tgt: "space.highport.defs#malwareFinding.quarantinedAt", kind: "prop", name: Some("quarantinedAt") }
  • Non-breaking: AddedEdge { src: "space.highport.defs#malwareFinding", tgt: "space.highport.defs#malwareFinding.uri", kind: "prop", name: Some("uri") }
  • Non-breaking: AddedEdge { src: "space.highport.defs#tileView", tgt: "space.highport.defs#tileView.handle", kind: "prop", name: Some("handle") }
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 +
        "handle": {
165 +
          "type": "string",
166 +
          "format": "handle",
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 +
        },
164 169
        "params": {
165 170
          "type": "array",
166 171
          "items": {
167 172
            "ref": "space.highport.sites.tile#param",
168 173
            "type": "ref"
169 174
          }
170 175
        },
171 176
        "iconUrl": {
172 177
          "type": "string",
173 178
          "format": "uri",
174 179
          "description": "https://highport.space/xrpc/space.highport.sites.getTileIcon?cid={cid}; absent if the tile has no icon."
175 180
        },
176 181
        "indexedAt": {
177 182
          "type": "string",
178 183
          "format": "datetime"
179 184
        },
180 185
        "latestCid": {
181 186
          "type": "string",
182 187
          "format": "cid",
183 188
          "description": "The newest indexed version at this URI, when it differs from cid."
184 189
        },
185 190
        "entryCount": {
186 191
          "type": "integer"
187 192
        },
188 193
        "totalBytes": {
189 194
          "type": "integer"
190 195
        },
191 196
        "description": {
192 197
          "type": "string"
193 198
        }
194 199
      }
195 200
    },
196 201
    "spaceView": {
197 202
      "type": "object",
198 203
      "required": [
199 204
        "uri",
200 205
        "authority",
201 206
        "skey",
202 207
        "syncState",
203 208
        "connectedAt"
204 209
      ],
205 210
      "properties": {
206 211
        "uri": {
207 212
          "type": "string",
208 213
          "format": "at-uri"
209 214
        },
210 215
        "skey": {
211 216
          "type": "string"
212 217
        },
213 218
        "policy": {
214 219
          "type": "string",
215 220
          "knownValues": [
216 221
            "public",
217 222
            "member-list",
218 223
            "managing-app",
219 224
            "unknown"
220 225
          ]
221 226
        },
222 227
        "headRev": {
223 228
          "type": "string"
224 229
        },
225 230
        "appAccess": {
226 231
          "type": "string",
227 232
          "knownValues": [
228 233
            "open",
229 234
            "allow-list",
230 235
            "unknown"
231 236
          ]
232 237
        },
233 238
        "authority": {
234 239
          "type": "string",
235 240
          "format": "did"
236 241
        },
237 242
        "syncState": {
238 243
          "ref": "#spaceSyncState",
239 244
          "type": "ref"
240 245
        },
241 246
        "tileCount": {
242 247
          "type": "integer"
243 248
        },
244 249
        "connectedAt": {
245 250
          "type": "string",
246 251
          "format": "datetime"
247 252
        },
248 253
        "domainCount": {
249 254
          "type": "integer"
250 255
        },
251 256
        "lastCheckedAt": {
252 257
          "type": "string",
253 258
          "format": "datetime"
254 259
        },
255 260
        "lastNotifiedAt": {
256 261
          "type": "string",
257 262
          "format": "datetime"
258 263
        },
259 264
        "accessExpiresAt": {
260 265
          "type": "string",
261 266
          "format": "datetime",
262 -
          "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."
263 268
        },
264 269
        "accessGrantedBy": {
265 270
          "type": "string",
266 271
          "format": "did"
267 272
        },
268 273
        "queuedNotifications": {
269 274
          "type": "integer",
270 -
          "description": "Receipts waiting for a credential."
275 +
          "description": "Notification receipts waiting for a credential."
271 276
        },
272 277
        "registrationExpiresAt": {
273 278
          "type": "string",
274 279
          "format": "datetime"
275 280
        }
276 281
      }
277 282
    },
278 283
    "tlsStatus": {
279 284
      "type": "string",
280 285
      "knownValues": [
281 286
        "none",
282 287
        "pending",
283 288
        "issued",
284 289
        "renewing",
285 290
        "failed"
286 291
      ]
287 292
    },
288 293
    "domainView": {
289 294
      "type": "object",
290 295
      "required": [
291 296
        "domain",
292 297
        "did",
293 298
        "status",
294 299
        "createdAt"
295 300
      ],
296 301
      "properties": {
297 302
        "did": {
298 303
          "type": "string",
299 304
          "format": "did"
300 305
        },
301 306
        "tls": {
302 307
          "ref": "#tlsStatus",
303 308
          "type": "ref"
304 309
        },
305 310
        "space": {
306 311
          "type": "string",
307 312
          "format": "at-uri",
308 -
          "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."
309 314
        },
310 315
        "domain": {
311 316
          "type": "string"
312 317
        },
313 318
        "status": {
314 319
          "ref": "#domainStatus",
315 320
          "type": "ref"
316 321
        },
317 322
        "tileCid": {
318 323
          "type": "string",
319 324
          "format": "cid"
320 325
        },
321 326
        "tileUri": {
322 327
          "type": "string",
323 328
          "format": "at-uri"
324 329
        },
325 330
        "activeCid": {
326 331
          "type": "string",
327 332
          "format": "cid"
328 333
        },
329 334
        "activeRev": {
330 335
          "type": "string"
331 336
        },
332 337
        "activeUri": {
333 338
          "type": "string",
334 339
          "format": "at-uri"
335 340
        },
336 341
        "createdAt": {
337 342
          "type": "string",
338 343
          "format": "datetime"
339 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 +
        },
340 350
        "entryCount": {
341 351
          "type": "integer"
342 352
        },
343 353
        "pendingCid": {
344 354
          "type": "string",
345 355
          "format": "cid",
346 -
          "description": "A validated, prepared record awaiting its commit, if any."
356 +
          "description": "A validated record waiting to be committed, if there is one."
347 357
        },
348 358
        "sourceKind": {
349 359
          "type": "string",
350 360
          "knownValues": [
351 361
            "inline",
352 362
            "tile"
353 363
          ]
354 364
        },
355 365
        "totalBytes": {
356 366
          "type": "integer"
357 367
        },
358 368
        "verifiedAt": {
359 369
          "type": "string",
360 370
          "format": "datetime"
361 371
        },
362 372
        "activatedAt": {
363 373
          "type": "string",
364 374
          "format": "datetime"
365 375
        },
366 376
        "pendingState": {
367 377
          "type": "string",
368 378
          "knownValues": [
369 379
            "preparing",
370 380
            "pending-publication"
371 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."
372 386
        }
373 387
      }
374 388
    },
375 389
    "indexState": {
376 390
      "type": "string",
377 391
      "knownValues": [
378 392
        "preparing",
379 393
        "pending-publication",
380 394
        "expired",
381 395
        "queued",
382 396
        "fetching",
383 397
        "materializing",
384 398
        "active",
385 399
        "superseded",
386 400
        "rejected",
387 401
        "failed"
388 402
      ]
389 403
    },
390 404
    "spaceEvent": {
391 405
      "type": "object",
392 406
      "required": [
393 407
        "seq",
394 408
        "space",
395 409
        "kind",
396 410
        "at"
397 411
      ],
398 412
      "properties": {
399 413
        "at": {
400 414
          "type": "string",
401 415
          "format": "datetime"
402 416
        },
403 417
        "cid": {
404 418
          "type": "string",
405 419
          "format": "cid"
406 420
        },
407 421
        "seq": {
408 422
          "type": "integer"
409 423
        },
410 424
        "kind": {
411 425
          "type": "string",
412 426
          "knownValues": [
413 427
            "record.created",
414 428
            "record.updated",
415 429
            "record.deleted",
416 430
            "site.activated",
417 431
            "site.deactivated",
418 432
            "tile.ready",
419 433
            "tile.incomplete",
420 434
            "tile.deleted",
421 435
            "access.granted",
422 436
            "access.expired",
423 437
            "registration.renewed",
424 438
            "registration.lapsed",
425 439
            "app-not-allowed",
426 440
            "space.deleted"
427 441
          ]
428 442
        },
429 443
        "actor": {
430 444
          "type": "string",
431 445
          "format": "did"
432 446
        },
433 447
        "space": {
434 448
          "type": "string",
435 449
          "format": "at-uri"
436 450
        },
437 451
        "subject": {
438 452
          "type": "string"
439 453
        }
440 454
      }
441 455
    },
442 456
    "blobFailure": {
443 457
      "type": "object",
444 458
      "required": [
445 459
        "cid",
446 460
        "role",
447 461
        "sourceDid",
448 462
        "error"
449 463
      ],
450 464
      "properties": {
451 465
        "cid": {
452 466
          "type": "string",
453 467
          "format": "cid"
454 468
        },
455 469
        "role": {
456 470
          "type": "string",
457 471
          "knownValues": [
458 472
            "manifest",
459 473
            "tile",
460 474
            "parameter",
461 475
            "notFound"
462 476
          ]
463 477
        },
464 478
        "error": {
465 479
          "type": "string",
466 -
          "description": "BlobUnavailable, CidMismatch, FetchFailed."
480 +
          "description": "One of BlobUnavailable, CidMismatch or FetchFailed."
467 481
        },
468 482
        "sourceDid": {
469 483
          "type": "string",
470 484
          "format": "did"
471 485
        }
472 486
      }
473 487
    },
474 488
    "domainEvent": {
475 489
      "type": "object",
476 490
      "required": [
477 491
        "event",
478 492
        "createdAt"
479 493
      ],
480 494
      "properties": {
481 495
        "actor": {
482 496
          "type": "string"
483 497
        },
484 498
        "event": {
485 499
          "type": "string"
486 500
        },
487 501
        "detail": {
488 502
          "type": "unknown"
489 503
        },
490 504
        "createdAt": {
491 505
          "type": "string",
492 506
          "format": "datetime"
493 507
        }
494 508
      }
495 509
    },
496 510
    "missingBlob": {
497 511
      "type": "object",
498 512
      "required": [
499 513
        "cid",
500 514
        "role",
501 515
        "sourceDid"
502 516
      ],
503 517
      "properties": {
504 518
        "cid": {
505 519
          "type": "string",
506 520
          "format": "cid"
507 521
        },
508 522
        "role": {
509 523
          "type": "string",
510 524
          "knownValues": [
511 525
            "manifest",
512 526
            "tile",
513 527
            "parameter",
514 528
            "notFound"
515 529
          ]
516 530
        },
517 531
        "sourceDid": {
518 532
          "type": "string",
519 533
          "format": "did"
520 534
        }
521 535
      }
522 536
    },
523 537
    "domainStatus": {
524 538
      "type": "string",
525 539
      "knownValues": [
526 540
        "pending",
527 541
        "verifying",
528 542
        "verified",
529 543
        "active",
530 544
        "failed",
531 545
        "suspended",
532 546
        "released"
533 547
      ]
534 548
    },
535 549
    "denylistEntry": {
536 550
      "type": "object",
537 551
      "required": [
538 552
        "subject",
539 553
        "kind",
540 554
        "createdAt"
541 555
      ],
542 556
      "properties": {
543 557
        "kind": {
544 558
          "type": "string",
545 559
          "knownValues": [
546 560
            "domain",
547 561
            "did",
548 562
            "uri",
549 563
            "cid",
550 564
            "pattern",
551 565
            "space"
552 566
          ]
553 567
        },
554 568
        "actor": {
555 569
          "type": "string"
556 570
        },
557 571
        "reason": {
558 572
          "type": "string"
559 573
        },
560 574
        "subject": {
561 575
          "type": "string"
562 576
        },
563 577
        "createdAt": {
564 578
          "type": "string",
565 579
          "format": "datetime"
566 580
        }
567 581
      }
568 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 +
    },
569 633
    "dnsInstruction": {
570 634
      "type": "object",
571 635
      "required": [
572 636
        "type",
573 637
        "name",
574 638
        "value"
575 639
      ],
576 640
      "properties": {
577 641
        "ttl": {
578 642
          "type": "integer"
579 643
        },
580 644
        "name": {
581 645
          "type": "string",
582 646
          "description": "Fully-qualified record name."
583 647
        },
584 648
        "type": {
585 649
          "type": "string",
586 650
          "knownValues": [
587 651
            "TXT",
588 652
            "CNAME",
589 653
            "ALIAS",
590 654
            "ANAME",
591 655
            "A",
592 656
            "AAAA"
593 657
          ]
594 658
        },
595 659
        "value": {
596 660
          "type": "string"
597 661
        },
598 662
        "purpose": {
599 663
          "type": "string",
600 664
          "knownValues": [
601 665
            "ownership",
602 666
            "certificate",
603 667
            "traffic"
604 668
          ]
605 669
        },
606 670
        "required": {
607 671
          "type": "boolean"
608 672
        }
609 673
      }
610 674
    },
675 +
    "malwareFinding": {
676 +
      "type": "object",
677 +
      "required": [
678 +
        "id",
679 +
        "cid",
680 +
        "signature",
681 +
        "class",
682 +
        "source",
683 +
        "foundAt"
684 +
      ],
685 +
      "properties": {
686 +
        "id": {
687 +
          "type": "integer",
688 +
          "description": "The finding's ID. The matching denylist entry's reason refers to it."
689 +
        },
690 +
        "cid": {
691 +
          "type": "string",
692 +
          "description": "The content address, or `-` for a detection at upload, when nothing was stored."
693 +
        },
694 +
        "did": {
695 +
          "type": "string",
696 +
          "format": "did",
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."
698 +
        },
699 +
        "uri": {
700 +
          "type": "string",
701 +
          "format": "at-uri",
702 +
          "description": "The record that referenced the content."
703 +
        },
704 +
        "path": {
705 +
          "type": "string",
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."
707 +
        },
708 +
        "class": {
709 +
          "type": "string",
710 +
          "description": "`unwanted` is a PUA match. Under the default policy, the response stops short of the publishing identity.",
711 +
          "knownValues": [
712 +
            "malware",
713 +
            "unwanted"
714 +
          ]
715 +
        },
716 +
        "domain": {
717 +
          "type": "string",
718 +
          "description": "The hostname the content would have been served at."
719 +
        },
720 +
        "source": {
721 +
          "type": "string",
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.",
723 +
          "knownValues": [
724 +
            "fetch",
725 +
            "upload",
726 +
            "rescan",
727 +
            "admin"
728 +
          ]
729 +
        },
730 +
        "foundAt": {
731 +
          "type": "string",
732 +
          "format": "datetime"
733 +
        },
734 +
        "signature": {
735 +
          "type": "string",
736 +
          "description": "The signature name, exactly as the scanner reported it."
737 +
        },
738 +
        "quarantinedAt": {
739 +
          "type": "string",
740 +
          "format": "datetime",
741 +
          "description": "When the response finished. Absent while it is still underway: the content is denied but may still be served."
742 +
        }
743 +
      },
744 +
      "description": "One malware detection. It is recorded before anything is denied or deleted, because quarantine destroys the sample."
745 +
    },
611 746
    "spaceSyncState": {
612 747
      "type": "string",
613 748
      "knownValues": [
614 749
        "connecting",
615 750
        "syncing",
616 751
        "synced",
617 752
        "credential-expired",
618 753
        "registration-lapsed",
619 754
        "app-not-allowed",
620 755
        "authority-unreachable",
621 756
        "deleted",
622 757
        "disconnected"
623 758
      ]
624 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 +
    },
802 +
    "edgeReachStatus": {
803 +
      "type": "string",
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.",
805 +
      "knownValues": [
806 +
        "unknown",
807 +
        "routed",
808 +
        "foreign",
809 +
        "unreachable",
810 +
        "other-deployment",
811 +
        "unproven"
812 +
      ]
813 +
    },
625 814
    "validationError": {
626 815
      "type": "object",
627 816
      "required": [
628 817
        "name",
629 818
        "message"
630 819
      ],
631 820
      "properties": {
632 821
        "name": {
633 822
          "type": "string",
634 -
          "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."
635 824
        },
636 825
        "path": {
637 826
          "type": "string",
638 -
          "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."
639 828
        },
640 829
        "message": {
641 830
          "type": "string"
642 831
        }
643 832
      }
644 833
    },
834 +
    "edgeReachability": {
835 +
      "type": "object",
836 +
      "required": [
837 +
        "status",
838 +
        "domain"
839 +
      ],
840 +
      "properties": {
841 +
        "detail": {
842 +
          "type": "string",
843 +
          "description": "What answered, as a status line or a transport error. Meant for people; do not branch on it."
844 +
        },
845 +
        "domain": {
846 +
          "type": "string",
847 +
          "maxLength": 253,
848 +
          "description": "The hostname that was probed."
849 +
        },
850 +
        "status": {
851 +
          "ref": "#edgeReachStatus",
852 +
          "type": "ref"
853 +
        },
854 +
        "checkedAt": {
855 +
          "type": "string",
856 +
          "format": "datetime",
857 +
          "description": "When the probe was made. Absent when status is unknown."
858 +
        }
859 +
      },
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."
861 +
    },
645 862
    "verificationView": {
646 863
      "type": "object",
647 864
      "required": [
648 865
        "status",
649 866
        "checks"
650 867
      ],
651 868
      "properties": {
652 869
        "checks": {
653 870
          "type": "array",
654 871
          "items": {
655 872
            "ref": "#verificationCheck",
656 873
            "type": "ref"
657 874
          }
658 875
        },
659 876
        "status": {
660 877
          "ref": "#domainStatus",
661 878
          "type": "ref"
662 879
        },
663 880
        "lastCheckedAt": {
664 881
          "type": "string",
665 882
          "format": "datetime"
666 883
        }
667 884
      }
668 885
    },
669 886
    "preparationStatus": {
670 887
      "type": "object",
671 888
      "required": [
672 889
        "state",
673 890
        "cid",
674 891
        "fetched",
675 892
        "pending",
676 893
        "failed"
677 894
      ],
678 895
      "properties": {
679 896
        "cid": {
680 897
          "type": "string",
681 898
          "format": "cid"
682 899
        },
683 900
        "state": {
684 901
          "type": "string",
685 902
          "knownValues": [
686 903
            "preparing",
687 904
            "pending-publication",
688 905
            "expired"
689 906
          ]
690 907
        },
691 908
        "failed": {
692 909
          "type": "array",
693 910
          "items": {
694 911
            "ref": "#blobFailure",
695 912
            "type": "ref"
696 913
          }
697 914
        },
698 915
        "fetched": {
699 916
          "type": "integer"
700 917
        },
701 918
        "pending": {
702 919
          "type": "integer"
703 920
        },
704 921
        "expiresAt": {
705 922
          "type": "string",
706 923
          "format": "datetime"
707 924
        }
708 925
      }
709 926
    },
710 927
    "verificationCheck": {
711 928
      "type": "object",
712 929
      "required": [
713 930
        "name",
714 931
        "passed",
715 932
        "checkedAt"
716 933
      ],
717 934
      "properties": {
718 935
        "name": {
719 936
          "type": "string",
720 937
          "knownValues": [
721 938
            "ownership",
722 939
            "traffic",
723 -
            "conflict"
940 +
            "conflict",
941 +
            "certificate"
724 942
          ]
725 943
        },
726 944
        "detail": {
727 945
          "type": "string"
728 946
        },
729 947
        "passed": {
730 948
          "type": "boolean"
731 949
        },
732 950
        "checkedAt": {
733 951
          "type": "string",
734 952
          "format": "datetime"
735 953
        }
736 954
      }
737 955
    }
738 956
  },
739 957
  "$type": "com.atproto.lexicon.schema",
740 958
  "lexicon": 1
741 959
}

Compare Other Versions

Lexicon Garden

@