forked from
nekomimi.pet/wisp.place-monorepo
Monorepo for Wisp.place. A static site hosting service built on top of the AT Protocol.
1{
2 "lexicon": 1,
3 "id": "place.wisp.fs",
4 "defs": {
5 "main": {
6 "type": "record",
7 "description": "Virtual filesystem manifest for a Wisp site",
8 "record": {
9 "type": "object",
10 "required": ["site", "root", "createdAt"],
11 "properties": {
12 "site": { "type": "string" },
13 "root": { "type": "ref", "ref": "#directory" },
14 "fileCount": { "type": "integer", "minimum": 0, "maximum": 1000 },
15 "createdAt": { "type": "string", "format": "datetime" }
16 }
17 }
18 },
19 "file": {
20 "type": "object",
21 "required": ["type", "blob"],
22 "properties": {
23 "type": { "type": "string", "const": "file" },
24 "blob": { "type": "blob", "accept": ["*/*"], "maxSize": 1000000, "description": "Content blob ref" },
25 "encoding": { "type": "string", "enum": ["gzip"], "description": "Content encoding (e.g., gzip for compressed files)" },
26 "mimeType": { "type": "string", "description": "Original MIME type before compression" },
27 "base64": { "type": "boolean", "description": "True if blob content is base64-encoded (used to bypass PDS content sniffing)" }
28 }
29 },
30 "directory": {
31 "type": "object",
32 "required": ["type", "entries"],
33 "properties": {
34 "type": { "type": "string", "const": "directory" },
35 "entries": {
36 "type": "array",
37 "maxLength": 500,
38 "items": { "type": "ref", "ref": "#entry" }
39 }
40 }
41 },
42 "entry": {
43 "type": "object",
44 "required": ["name", "node"],
45 "properties": {
46 "name": { "type": "string", "maxLength": 255 },
47 "node": { "type": "union", "refs": ["#file", "#directory"] }
48 }
49 }
50 }
51}