Monorepo for wisp.place. A static site hosting service built on top of the AT Protocol.
wisp.place
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": 1000000000, "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 "directory": {
30 "type": "object",
31 "required": ["type", "entries"],
32 "properties": {
33 "type": { "type": "string", "const": "directory" },
34 "entries": {
35 "type": "array",
36 "maxLength": 500,
37 "items": { "type": "ref", "ref": "#entry" }
38 }
39 }
40 },
41 "entry": {
42 "type": "object",
43 "required": ["name", "node"],
44 "properties": {
45 "name": { "type": "string", "maxLength": 255 },
46 "node": { "type": "union", "refs": ["#file", "#directory", "#subfs"] }
47 }
48 },
49 "subfs": {
50 "type": "object",
51 "required": ["type", "subject"],
52 "properties": {
53 "type": { "type": "string", "const": "subfs" },
54 "subject": { "type": "string", "format": "at-uri", "description": "AT-URI pointing to a place.wisp.subfs record containing this subtree." },
55 "flat": { "type": "boolean", "description": "If true, the subfs record's root entries are merged (flattened) into the parent directory, replacing the subfs entry. If false (default), the subfs entries are placed in a subdirectory with the subfs entry's name. Flat merging is useful for splitting large directories across multiple records while maintaining a flat structure." }
56 }
57 }
58 }
59}