{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://archival.dev/schemas/archival.schema.json",
"title": "Archival manifest",
"description": "Site-level configuration for an archival site, read from archival.toml at the site root.",
"type": "object",
"additionalProperties": false,
"properties": {
"upload_prefix": {
"description": "this string is appended to all upload paths, used for differentiating sites using the same uploads_url",
"type": "string"
},
"uploads_url": {
"description": "the host url of the CDN used for uploads",
"type": "string"
},
"archival_version": {
"description": "an optional version string to indicate the minimum version of archival this site is compatible with",
"type": "string"
},
"prebuild": {
"description": "a list of shell commands to run before building this site",
"type": "array",
"items": {
"type": "string"
}
},
"site_url": {
"description": "a url that will be available to this site's liquid files as site_url, which can also be used by the archival editor",
"type": "string"
},
"site_name": {
"description": "a name for this site, used by the archival editor and other machine readers of this manifest",
"type": "string"
},
"object_file": {
"description": "the file that archival uses to read the objects schema for this site",
"type": "string",
"default": "archival_objects.toml"
},
"pages": {
"description": "the folder that archival looks for page liquid files in",
"type": "string",
"default": "pages"
},
"objects": {
"description": "the folder that archival looks for object toml files in",
"type": "string",
"default": "objects"
},
"schemas_dir": {
"description": "the folder that the archival schemas command generates schemas into",
"type": "string",
"default": "schemas"
},
"build_dir": {
"description": "the folder that archival builds your site into",
"type": "string",
"default": "dist"
},
"static_dir": {
"description": "the static dir that is copied directly to your build dir",
"type": "string",
"default": "public"
},
"layout_dir": {
"description": "the folder that archival reads layouts from",
"type": "string",
"default": "layout"
},
"metadata": {
"description": "arbitrary string metadata about this site, used by the archival editor and other machine readers of this manifest",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"editor_types": {
"description": "a dictionary of custom-defined editor types, keyed by the type name used in archival_objects.toml",
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/editorType"
}
}
},
"definitions": {
"editorType": {
"type": "object",
"additionalProperties": false,
"required": ["type"],
"properties": {
"type": {
"description": "the type that this custom type is backed with. May be a built-in archival type, or the name of another editor type defined in this manifest.",
"anyOf": [
{
"$ref": "#/definitions/archivalFieldType"
},
{
"type": "string"
}
]
},
"editor_url": {
"description": "a URL to load a custom editor from. If unspecified, will use the underlying type's editor",
"type": "string"
},
"validate": {
"description": "a list of validations to run on fields of this type",
"type": "array",
"items": {
"anyOf": [
{
"description": "a regular expression to run on this field's string representation",
"type": "string"
},
{
"description": "a regular expression to run on a path inside a nested field (meta, upload, video, audio or image)",
"type": "object",
"additionalProperties": false,
"required": ["path", "validate"],
"properties": {
"path": {
"description": "a path inside a nested field to validate",
"type": "string"
},
"validate": {
"description": "a regular expression to run on this field at the specified path",
"type": "string"
}
}
}
]
}
}
}
},
"archivalFieldType": {
"type": "string",
"enum": [
"string",
"number",
"boolean",
"date",
"markdown",
"image",
"video",
"audio",
"upload",
"meta",
"secret"
]
}
}
}