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 } 56 } 57 } 58}