space.highport.sites.defs

lexicons.highport.space

Schema Diff

+14 -14

From

CID
bafyreig2azc6rnz...
Indexed At
2026-09-15 14:11 UTC
View this version

To

CID
bafyreienlmjm6gg...
Indexed At
2026-09-17 17:52 UTC
View this version

Compatibility Analysis

Backward Compatible

No changes detected.

1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "access": {
5 -
      "description": "Which parts of a site require a signed-in reader, and which readers count. Absent means none of it: the domain's owner budget decides every path, which is the arrangement almost every site wants. This is content policy rather than a billing arrangement — it says which parts of a publication are premium and to whom, it survives moving to another host, and a reader of the record can see it without asking the host.",
5 +
      "description": "Which parts of a site require a signed-in reader, and which readers qualify. Absent means nothing is gated and the owner budget decides every path, which suits most sites. This is content policy, not billing: it lives in the record, so it moves with the site and anyone can read it.",
6 6
      "properties": {
7 7
        "audience": {
8 8
          "closed": true,
9 -
          "description": "Who the paths in requireAuth are for. Absent means any signed-in reader, which is what requireAuth alone has always meant. Meaningful only alongside requireAuth: an audience with nothing gated narrows a gate that is not there. The union is closed because a host that cannot evaluate an audience must refuse the record rather than serve it to everybody — an unrecognized audience that fell open would be a gate quietly removed by a schema it did not understand.",
9 +
          "description": "Who the requireAuth paths are for. Absent means any signed-in reader. Only meaningful alongside requireAuth. The union is closed so that a host which does not recognize an audience rejects the record instead of opening the gate to everyone.",
10 10
          "refs": [
11 11
            "space.highport.sites.defs#spaceMembers"
12 12
          ],
13 13
          "type": "union"
14 14
        },
15 15
        "requireAuth": {
16 -
          "description": "Path prefixes that always require a signed-in reader and always bill that reader, whatever the owner budget says and whether or not it is spent. Matched against the normalized request path, so a prefix covers everything beneath it. A prefix of \"/\" is the whole site and says the same thing as an owner budget of zero.",
16 +
          "description": "Path prefixes that always require a signed-in reader and always bill that reader, whatever the owner budget says. Matched against the normalized request path, so a prefix covers everything under it. \"/\" gates the whole site, the same as an owner budget of zero.",
17 17
          "items": {
18 18
            "maxLength": 1024,
19 19
            "type": "string"
20 20
          },
21 21
          "maxLength": 64,
22 22
          "type": "array"
23 23
        }
24 24
      },
25 25
      "type": "object"
26 26
    },
27 27
    "manifest": {
28 -
      "description": "A path-keyed bundle of resources — bard's camelCase subset of a MASL bundle-mode document. The inline source of a site, or the content of a tile.",
28 +
      "description": "A bundle of resources keyed by path, using bard's camelCase subset of a MASL bundle-mode document. It is a site's inline source or a tile's content.",
29 29
      "properties": {
30 30
        "name": {
31 -
          "description": "Bundle name. Required when the manifest is a tile's content; optional for an inline site source.",
31 +
          "description": "Bundle name. Required for tile content, optional for an inline site source.",
32 32
          "maxGraphemes": 100,
33 33
          "maxLength": 1000,
34 34
          "type": "string"
35 35
        },
36 36
        "resources": {
37 -
          "description": "Map of absolute request path (beginning with '/') to space.highport.sites.defs#resource. Lexicon has no map type. A '/' entry is required for tile content and recommended for sites.",
37 +
          "description": "Map of absolute request path (starting with '/') to space.highport.sites.defs#resource, since Lexicon has no map type. Tile content must have a '/' entry, and sites should.",
38 38
          "type": "unknown"
39 39
        }
40 40
      },
41 41
      "required": [
42 42
        "resources"
43 43
      ],
44 44
      "type": "object"
45 45
    },
46 46
    "redirect": {
47 47
      "properties": {
48 48
        "from": {
49 -
          "description": "The request path to match, optionally including a query string. Matching is exact.",
49 +
          "description": "The request path to match, optionally with a query string. Must match exactly.",
50 50
          "maxLength": 2048,
51 51
          "type": "string"
52 52
        },
53 53
        "status": {
54 54
          "description": "Redirect status. Defaults to 302.",
55 55
          "knownValues": [
56 56
            301,
57 57
            302,
58 58
            307,
59 59
            308
60 60
          ],
61 61
          "type": "integer"
62 62
        },
63 63
        "to": {
64 -
          "description": "Destination path. Must be an absolute path on this site that exists as a manifest key.",
64 +
          "description": "Destination path. Must be an absolute path that exists as a manifest key on this site.",
65 65
          "maxLength": 2048,
66 66
          "type": "string"
67 67
        }
68 68
      },
69 69
      "required": [
70 70
        "from",
71 71
        "to"
72 72
      ],
73 73
      "type": "object"
74 74
    },
75 75
    "resource": {
76 -
      "description": "A single addressable resource within a manifest.",
76 +
      "description": "One addressable resource in a manifest.",
77 77
      "properties": {
78 78
        "contentEncoding": {
79 -
          "description": "Declares the stored blob is already encoded with this algorithm; the origin serves it as-is with a matching Content-Encoding header.",
79 +
          "description": "The encoding the stored blob already has. The origin serves it unchanged, with a matching Content-Encoding header.",
80 80
          "knownValues": [
81 81
            "gzip",
82 82
            "br",
83 83
            "zstd",
84 84
            "identity"
85 85
          ],
86 86
          "type": "string"
87 87
        },
88 88
        "contentType": {
89 -
          "description": "Serve the asset with this content type instead of the blob's mimeType.",
89 +
          "description": "Content type to serve instead of the blob's mimeType.",
90 90
          "maxLength": 255,
91 91
          "type": "string"
92 92
        },
93 93
        "src": {
94 94
          "description": "The blob holding this resource's bytes.",
95 95
          "type": "blob"
96 96
        },
97 97
        "status": {
98 98
          "description": "Response status. Defaults to 200 for manifest entries and 404 for the notFound resource.",
99 99
          "knownValues": [
100 100
            200,
101 101
            404,
102 102
            410
103 103
          ],
104 104
          "type": "integer"
105 105
        }
106 106
      },
107 107
      "required": [
108 108
        "src"
109 109
      ],
110 110
      "type": "object"
111 111
    },
112 112
    "spaceMembers": {
113 -
      "description": "The members of the space this site is held in, as its host answers for them. Valid only on a site served from a space; a site published to a repository has no space to ask about and the field is refused there rather than ignored. Carries no member list and names no identity: the space's own host is asked, and the answer is not part of the record.",
113 +
      "description": "The members of the space this site lives in, as the space's host reports them. Only valid on a site served from a space, and rejected (not ignored) anywhere else. The record lists no members; the space's host is asked.",
114 114
      "properties": {},
115 115
      "type": "object"
116 116
    },
117 117
    "wellKnown": {
118 -
      "description": "Controls the responses bard synthesizes under /.well-known/. The two flags default to true and exist only to turn things off; standardSitePublication is absent unless a publisher names one.",
118 +
      "description": "Controls the responses bard generates under /.well-known/. Both flags default to true and exist only to turn things off. standardSitePublication is absent unless the publisher sets it.",
119 119
      "properties": {
120 120
        "atproto": {
121 121
          "description": "Serve GET /.well-known/atproto-did with the site's owning DID. Default true.",
122 122
          "type": "boolean"
123 123
        },
124 124
        "rasl": {
125 125
          "description": "Serve GET /.well-known/rasl/{cid} for every CID this site references. Default true.",
126 126
          "type": "boolean"
127 127
        },
128 128
        "standardSitePublication": {
129 -
          "description": "Serve GET /.well-known/site.standard.publication with this AT-URI, so the domain proves a standard.site publication. It must name a site.standard.publication record in the site owner's own repository whose url host is this domain; bard checks both when it indexes the site record and refuses the record otherwise. A manifest entry at that path is refused while this is set.",
129 +
          "description": "Serve GET /.well-known/site.standard.publication with this AT-URI. It must name a site.standard.publication record in the site owner's repository whose url host is this domain, or the site record is rejected at indexing. While set, a manifest entry at that path is rejected.",
130 130
          "format": "at-uri",
131 131
          "type": "string"
132 132
        }
133 133
      },
134 134
      "type": "object"
135 135
    }
136 136
  },
137 137
  "id": "space.highport.sites.defs",
138 138
  "lexicon": 1
139 139
}

Compare Other Versions

Lexicon Garden

@