space.highport.sites.defs
Schema Diff
+6 -1
Compatibility Analysis
Backward Compatible
Backward compatible. 2 non-breaking changes.
Non-Breaking Changes (2)
- AddedVertex AddedVertex { vertex_id: "space.highport.sites.defs#wellKnown.standardSitePublication" }
- AddedEdge AddedEdge { src: "space.highport.sites.defs#wellKnown", tgt: "space.highport.sites.defs#wellKnown.standardSitePublication", kind: "prop", name: Some("standardSitePublication") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "space.highport.sites.defs#wellKnown.standardSitePublication" }
Additional Notes
- Non-breaking: AddedEdge { src: "space.highport.sites.defs#wellKnown", tgt: "space.highport.sites.defs#wellKnown.standardSitePublication", kind: "prop", name: Some("standardSitePublication") }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"access": {
5
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.",
6
6
"properties": {
7
7
"audience": {
8
8
"closed": true,
9
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.",
10
10
"refs": [
11
11
"space.highport.sites.defs#spaceMembers"
12
12
],
13
13
"type": "union"
14
14
},
15
15
"requireAuth": {
16
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.",
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
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.",
29
29
"properties": {
30
30
"name": {
31
31
"description": "Bundle name. Required when the manifest is a tile's 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
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.",
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
49
"description": "The request path to match, optionally including a query string. Matching is exact.",
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
64
"description": "Destination path. Must be an absolute path on this site that exists as a manifest key.",
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
76
"description": "A single addressable resource within a manifest.",
77
77
"properties": {
78
78
"contentEncoding": {
79
79
"description": "Declares the stored blob is already encoded with this algorithm; the origin serves it as-is 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
89
"description": "Serve the asset with this content type 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
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.",
114
114
"properties": {},
115
115
"type": "object"
116
116
},
117
117
"wellKnown": {
118
-
"description": "Controls the responses bard synthesizes under /.well-known/. Every field defaults to true; the object exists only to turn things off.",
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.",
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
+
},
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.",
130
+
"format": "at-uri",
131
+
"type": "string"
127
132
}
128
133
},
129
134
"type": "object"
130
135
}
131
136
},
132
137
"id": "space.highport.sites.defs",
133
138
"lexicon": 1
134
139
}