{
  "$schema": "http://json-schema.org/draft-07/schema",
  "$id": "https://schemas.antora.org/site-manifest/1-0-0/draft-01",
  "title": "Antora Site Manifest",
  "description": "A manifest of referencable resources and their metadata in a site published by Antora.",
  "type": "object",
  "required": [ "$id", "generated", "components" ],
  "properties": {
    "$id": {
      "type": "string",
      "const": "https://schemas.antora.org/site-manifest/1-0-0/draft-01",
      "description": "The version of the schema for this site manifest data."
    },
    "generated": {
      "type": "string",
      "format": "date-time",
      "default": "1970-01-01T00:00:00Z",
      "description": "The date this site manifest was generated."
    },
    "url": {
      "type": "string",
      "format": "uri",
      "description": "The URL of the site to which this manifest corresponds."
    },
    "components": {
      "type": "object",
      "description": "The documentation components in the site.",
      "patternProperties": {
        "^.+$": {
          "type": "object",
          "description": "The properties of a documentation component whose name matches the key.",
          "required": [ "title", "latest", "versions" ],
          "properties": {
            "title": {
              "type": "string",
              "description": "The displayable title of this component."
            },
            "latest": {
              "type": "string",
              "description": "The name of the latest version."
            },
            "versions": {
              "type": "object",
              "description": "The versions of this documentation component.",
              "patternProperties": {
                "^.*$": {
                  "type": "object",
                  "description": "The properties of a version in this component whose name matches the key.",
                  "required": [ "prerelease", "url", "pages" ],
                  "properties": {
                    "prerelease": {
                      "type": "boolean",
                      "default": false,
                      "description": "Indicates whether this version is a prerelease."
                    },
                    "displayVersion": {
                      "type": "string",
                      "description": "The displayable title of this version."
                    },
                    "url": {
                      "type": "string",
                      "format": "uri-reference",
                      "description": "The start URL for this version."
                    },
                    "pages": {
                      "type": "array",
                      "description": "The publishable pages in this version.",
                      "uniqueItems": true,
                      "items": {
                        "type": "object",
                        "description": "The properties of a page.",
                        "required": [ "module", "path", "url", "title" ],
                        "properties": {
                          "module": {
                            "type": "string",
                            "default": "ROOT",
                            "description": "The module of this page."
                          },
                          "path": {
                            "type": "string",
                            "description": "The family-relative source path of this page."
                          },
                          "url": {
                            "type": "string",
                            "format": "uri-reference",
                            "description": "The URL of this page."
                          },
                          "title": {
                            "type": "string",
                            "default": "Untitled",
                            "description": "The title of this page."
                          },
                          "xreftext": {
                            "type": "string",
                            "description": "The text to use in an xref to this page, if it differs from the title."
                          },
                          "alias": {
                            "type": "object",
                            "description": "Indicates that this entry is an alias to another page.",
                            "required": [ "ref", "url" ],
                            "properties": {
                              "ref": {
                                "type": "string",
                                "description": "The resource reference of the target page."
                              },
                              "url": {
                                "type": "string",
                                "format": "uri-reference",
                                "description": "The URL of the target page."
                              }
                            },
                            "additionalProperties": false
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": false
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
