{
  "id": "page.json",
  "$schema": "http://json-schema.org/draft-04/schema",
  "title": "Page",
  "description": "A page of content",
  "type": [
    "object"
  ],
  "properties": {
    "id": {
      "$ref": "base.json#/definitions/uuid"
    },
    "path": {
      "description": "Path of the page on the site",
      "type": "string",
      "example": "index.html"
    },
    "type": {
      "description": "Page type",
      "type": "string",
      "example": "feeda"
    },
    "siteUrl": {
      "$ref": "base.json#/definitions/url"
    },
    "siteId": {
      "$ref": "base.json#/definitions/uuid"
    },
    "number": {
      "description": "How many items fit on the page",
      "type": "integer"
    },
    "ordered": {
      "type": "boolean",
      "description": "If content must be rendered in order or not",
      "example": false
    },
    "format": {
      "type": "string",
      "description": "Expected format for the page output",
      "example": "html"
    },
    "site": {
      "description": "Site this page belongs to",
      "example": "the-domains/the-grid",
      "$ref": "base.json#/definitions/site"
    },
    "items": {
      "description": "Content items in the page",
      "type": "array",
      "minItems": 1,
      "uniqueItems": true,
      "items": {
        "$ref": "item.json"
      }
    },
    "created_at": {
      "type": "string",
      "format": "date-time"
    },
    "updated_at": {
      "oneOf": [
        {
          "type": "null"
        },
        {
          "type": "string",
          "format": "date-time"
        }
      ]
    },
    "config": {
      "$ref": "siteconfig.json"
    },
    "style": {
      "description": "Style used for rendering the site",
      "example": "the-composer",
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "base.json#/definitions/url"
        }
      ]
    },
    "theme": {
      "description": "Family of design systems the style is part of",
      "example": "flowerflip"
    },
    "title": {
      "description": "Page title",
      "type": "string",
      "example": "Home"
    },
    "navigable": {
      "description": "Whether page appears in navigation",
      "type": "boolean"
    },
    "navigation": {
      "description": "Main navigation entries",
      "type": "array",
      "minItems": 0,
      "uniqueItems": true,
      "items": {
        "type": "object",
        "properties": {
          "href": {
            "type": "string",
            "example": "index.html"
          },
          "title": {
            "type": "string",
            "example": "Home"
          },
          "rel": {
            "type": "string",
            "example": "home"
          },
          "type": {
            "type": "string",
            "example": "MainPage"
          }
        }
      }
    },
    "links": {
      "description": "Secondary navigation entries",
      "type": "array",
      "minItems": 0,
      "uniqueItems": true,
      "items": {
        "type": "object",
        "properties": {
          "href": {
            "type": "string",
            "example": "rss.html"
          },
          "title": {
            "type": "string",
            "example": "RSS feed"
          },
          "rel": {
            "type": "string",
            "example": "alternate"
          },
          "type": {
            "type": "string",
            "example": "application/rss+xml"
          }
        }
      }
    }
  },
  "required": [
    "site",
    "path",
    "items",
    "config"
  ]
}