space.highport.defs

lexicons.highport.space

Schema Diff

+224 -11

From

CID
bafyreig7c6k3lc7...
Indexed At
2026-09-04 22:52 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, 59 non-breaking changes.

Breaking Changes (12)
  • 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") }
  • 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#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") }
  • 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 (59)
  • 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" }
  • 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") }

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

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#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") }
  • 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#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") }
  • 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") }
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
    },
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 +
    },
616 746
    "spaceSyncState": {
617 747
      "type": "string",
618 748
      "knownValues": [
619 749
        "connecting",
620 750
        "syncing",
621 751
        "synced",
622 752
        "credential-expired",
623 753
        "registration-lapsed",
624 754
        "app-not-allowed",
625 755
        "authority-unreachable",
626 756
        "deleted",
627 757
        "disconnected"
628 758
      ]
629 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 +
    },
630 814
    "validationError": {
631 815
      "type": "object",
632 816
      "required": [
633 817
        "name",
634 818
        "message"
635 819
      ],
636 820
      "properties": {
637 821
        "name": {
638 822
          "type": "string",
639 -
          "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."
640 824
        },
641 825
        "path": {
642 826
          "type": "string",
643 -
          "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."
644 828
        },
645 829
        "message": {
646 830
          "type": "string"
647 831
        }
648 832
      }
649 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 +
    },
650 862
    "verificationView": {
651 863
      "type": "object",
652 864
      "required": [
653 865
        "status",
654 866
        "checks"
655 867
      ],
656 868
      "properties": {
657 869
        "checks": {
658 870
          "type": "array",
659 871
          "items": {
660 872
            "ref": "#verificationCheck",
661 873
            "type": "ref"
662 874
          }
663 875
        },
664 876
        "status": {
665 877
          "ref": "#domainStatus",
666 878
          "type": "ref"
667 879
        },
668 880
        "lastCheckedAt": {
669 881
          "type": "string",
670 882
          "format": "datetime"
671 883
        }
672 884
      }
673 885
    },
674 886
    "preparationStatus": {
675 887
      "type": "object",
676 888
      "required": [
677 889
        "state",
678 890
        "cid",
679 891
        "fetched",
680 892
        "pending",
681 893
        "failed"
682 894
      ],
683 895
      "properties": {
684 896
        "cid": {
685 897
          "type": "string",
686 898
          "format": "cid"
687 899
        },
688 900
        "state": {
689 901
          "type": "string",
690 902
          "knownValues": [
691 903
            "preparing",
692 904
            "pending-publication",
693 905
            "expired"
694 906
          ]
695 907
        },
696 908
        "failed": {
697 909
          "type": "array",
698 910
          "items": {
699 911
            "ref": "#blobFailure",
700 912
            "type": "ref"
701 913
          }
702 914
        },
703 915
        "fetched": {
704 916
          "type": "integer"
705 917
        },
706 918
        "pending": {
707 919
          "type": "integer"
708 920
        },
709 921
        "expiresAt": {
710 922
          "type": "string",
711 923
          "format": "datetime"
712 924
        }
713 925
      }
714 926
    },
715 927
    "verificationCheck": {
716 928
      "type": "object",
717 929
      "required": [
718 930
        "name",
719 931
        "passed",
720 932
        "checkedAt"
721 933
      ],
722 934
      "properties": {
723 935
        "name": {
724 936
          "type": "string",
725 937
          "knownValues": [
726 938
            "ownership",
727 939
            "traffic",
728 -
            "conflict"
940 +
            "conflict",
941 +
            "certificate"
729 942
          ]
730 943
        },
731 944
        "detail": {
732 945
          "type": "string"
733 946
        },
734 947
        "passed": {
735 948
          "type": "boolean"
736 949
        },
737 950
        "checkedAt": {
738 951
          "type": "string",
739 952
          "format": "datetime"
740 953
        }
741 954
      }
742 955
    }
743 956
  },
744 957
  "$type": "com.atproto.lexicon.schema",
745 958
  "lexicon": 1
746 959
}

Compare Other Versions

Lexicon Garden

@