{
  "$defs": {
    "page": {
      "additionalProperties": false,
      "description": "Page metadata",
      "properties": {
        "forcedOverlay": {
          "default": false,
          "description": "Override overlay autodetection",
          "type": "boolean"
        },
        "hidden": {
          "default": false,
          "description": "Flag indicating the page should normally be skipped",
          "type": "boolean"
        },
        "idx": {
          "description": "0-based PDF page index",
          "minimum": 0,
          "type": "integer"
        },
        "label": {
          "description": "PDF page label",
          "type": "string"
        },
        "note": {
          "$comment": "The interpretation depends on disableMarkdown 1 level up",
          "description": "User notes, either in plain text or Markdown",
          "oneOf": [
            {
              "contentMediaType": "text/plain",
              "type": "string"
            },
            {
              "contentMediaType": "text/markdown",
              "type": "string"
            }
          ]
        },
        "overlay": {
          "description": "Overlay index having the same label, 0-based",
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "idx",
        "label",
        "overlay"
      ],
      "type": "object"
    }
  },
  "$id": "https://pdfpc.github.io/schema/pdfpc/2",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false,
  "description": "Metadata about a presentation used by pdfpc",
  "properties": {
    "beamerNotePosition": {
      "default": "none",
      "description": "Position of Beamer notes",
      "enum": [
        "none",
        "top",
        "bottom",
        "right",
        "left"
      ],
      "type": "string"
    },
    "defaultTransition": {
      "$comment": "A proper regex pattern would be kilometer long...",
      "default": "replace",
      "description": "Default slide transition",
      "examples": [
        "push",
        "dissolve:1.5",
        "wipe:1:90",
        "split:1:0:vertical:outward"
      ],
      "type": "string"
    },
    "disableMarkdown": {
      "default": false,
      "description": "Interpret notes as plain text",
      "type": "boolean"
    },
    "duration": {
      "description": "Duration of the presentation, in minutes",
      "minimum": 1,
      "type": "integer"
    },
    "endSlide": {
      "description": "User-defined last slide, 0-based",
      "minimum": 0,
      "type": "integer"
    },
    "endTime": {
      "description": "Intended end time, in the HH:MM format",
      "pattern": "^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$",
      "type": "string"
    },
    "lastMinutes": {
      "default": 5,
      "description": "Number of last minutes when the timer color changes",
      "minimum": 1,
      "type": "integer"
    },
    "noteFontSize": {
      "default": 20,
      "description": "Font size used to display slide notes",
      "minimum": 1,
      "type": "integer"
    },
    "pages": {
      "description": "Array of pages; only user-modified ones need to be listed",
      "items": {
        "$ref": "#/$defs/page"
      },
      "minItems": 0,
      "type": "array",
      "uniqueItems": true
    },
    "pdfpcFormat": {
      "const": 2,
      "description": "Version number of this format, currently 2",
      "type": "integer"
    },
    "savedSlide": {
      "description": "Bookmarked slide, 0-based",
      "minimum": 0,
      "type": "integer"
    },
    "startTime": {
      "description": "Intended start time, in the HH:MM format",
      "pattern": "^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$",
      "type": "string"
    }
  },
  "required": [
    "pdfpcFormat"
  ],
  "title": "pdfpc",
  "type": "object"
}