{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "definitions": {
    "empty": {
      "type": "string",
      "pattern": "^\\s+$"
    }
  },
  "title": "specification",
  "description": "A specification of files or folders in the $HOME folder for a program\nhttps://github.com/b3nj5m1n/xdg-ninja",
  "type": "object",
  "required": ["name", "files"],
  "properties": {
    "name": {
      "title": "name",
      "description": "A program name\nRestrictions:\n- can't contain just spaces\nhttps://github.com/b3nj5m1n/xdg-ninja",
      "type": "string",
      "minLength": 1,
      "not": {
        "$ref": "#/definitions/empty"
      },
      "examples": ["abook"]
    },
    "files": {
      "title": "files",
      "description": "Files and folders for a program\nhttps://github.com/b3nj5m1n/xdg-ninja",
      "type": "array",
      "uniqueItems": true,
      "minItems": 1,
      "items": {
        "description": "A file or a folder for a program\nhttps://github.com/b3nj5m1n/xdg-ninja",
        "type": "object",
        "required": ["path", "movable", "help"],
        "properties": {
          "path": {
            "title": "path",
            "description": "A path to a file or a folder\nRestrictions:\n- can't contain just spaces\nhttps://github.com/b3nj5m1n/xdg-ninja",
            "type": "string",
            "minLength": 1,
            "not": {
              "$ref": "#/definitions/empty"
            },
            "examples": ["$HOME/.abook"]
          },
          "movable": {
            "title": "movable",
            "description": "Whether a file or a folder is movable to a place other than $HOME\nhttps://github.com/b3nj5m1n/xdg-ninja",
            "type": "boolean"
          },
          "help": {
            "title": "help",
            "description": "A help message for a user in markdown\nRestrictions:\n- can't contain just spaces\nhttps://github.com/b3nj5m1n/xdg-ninja",
            "type": "string",
            "minLength": 1,
            "not": {
              "$ref": "#/definitions/empty"
            },
            "examples": [
              "Alias abook to use custom locations for configuration and data:\n\n```bash\nalias abook=abook --config \"$XDG_CONFIG_HOME\"/abook/abookrc --datafile \"$XDG_DATA_HOME\"/abook/addressbook\n```\n"
            ]
          }
        }
      }
    }
  }
}
