{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "directory": {
      "properties": {
        "entries": {
          "items": {
            "ref": "#entry",
            "type": "ref"
          },
          "maxLength": 500,
          "type": "array"
        },
        "type": {
          "const": "directory",
          "type": "string"
        }
      },
      "required": [
        "type",
        "entries"
      ],
      "type": "object"
    },
    "entry": {
      "properties": {
        "name": {
          "maxLength": 255,
          "type": "string"
        },
        "node": {
          "refs": [
            "#file",
            "#directory",
            "#subfs"
          ],
          "type": "union"
        }
      },
      "required": [
        "name",
        "node"
      ],
      "type": "object"
    },
    "file": {
      "properties": {
        "base64": {
          "description": "True if blob content is base64-encoded (used to bypass PDS content sniffing)",
          "type": "boolean"
        },
        "blob": {
          "accept": [
            "*/*"
          ],
          "description": "Content blob ref",
          "maxSize": 1000000000,
          "type": "blob"
        },
        "encoding": {
          "description": "Content encoding (e.g., gzip for compressed files)",
          "enum": [
            "gzip"
          ],
          "type": "string"
        },
        "mimeType": {
          "description": "Original MIME type before compression",
          "type": "string"
        },
        "type": {
          "const": "file",
          "type": "string"
        }
      },
      "required": [
        "type",
        "blob"
      ],
      "type": "object"
    },
    "main": {
      "description": "Virtual filesystem manifest for a Wisp site",
      "record": {
        "properties": {
          "createdAt": {
            "format": "datetime",
            "type": "string"
          },
          "fileCount": {
            "maximum": 1000,
            "minimum": 0,
            "type": "integer"
          },
          "root": {
            "ref": "#directory",
            "type": "ref"
          },
          "site": {
            "type": "string"
          }
        },
        "required": [
          "site",
          "root",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    },
    "subfs": {
      "properties": {
        "flat": {
          "description": "If true (default), the subfs record's root entries are merged (flattened) into the parent directory, replacing the subfs entry. If false, 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.",
          "type": "boolean"
        },
        "subject": {
          "description": "AT-URI pointing to a place.wisp.subfs record containing this subtree.",
          "format": "at-uri",
          "type": "string"
        },
        "type": {
          "const": "subfs",
          "type": "string"
        }
      },
      "required": [
        "type",
        "subject"
      ],
      "type": "object"
    }
  },
  "id": "place.wisp.fs",
  "lexicon": 1
}
