{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "PyGitWeb runtime settings persisted to ~/.pygitweb/settings.json (or PYGITWEB_SETTINGS_CONFIG).",
  "type": "object",
  "properties": {
    "PROJECTROOT": {
      "type": "string",
      "minLength": 1,
      "description": "Root filesystem path under which git repositories live."
    },
    "PROJECTS_LIST": {
      "type": "string",
      "description": "Path used for listing projects (often same as PROJECTROOT)."
    },
    "PROJECT_MAXDEPTH": {
      "type": "integer",
      "minimum": 0,
      "description": "Maximum directory depth when scanning for projects."
    },
    "SITE_NAME": {
      "type": "string",
      "minLength": 1,
      "description": "Site name shown in the web interface."
    },
    "EXPORT_OK": {
      "type": "string",
      "description": "If set, only repos with this file (or matching path) are listed."
    },
    "LIST_ALL": {
      "type": "boolean",
      "description": "When true, list all directories under project root without export_ok checks."
    },
    "STRICT_EXPORT": {
      "type": "boolean",
      "description": "When true, require export_ok (or path match) to list projects."
    },
    "GIT": {
      "type": "string",
      "minLength": 1,
      "description": "Path to the git executable."
    },
    "MAXLOAD": {
      "type": ["number", "null"],
      "description": "Max load average; 503 when exceeded. null to disable."
    },
    "AUTH": {
      "type": ["boolean", "null"],
      "description": "When true, authentication is enabled. null means default-on with a warning on first run."
    },
    "AUTH_CONFIG": {
      "type": "string",
      "description": "Path to the auth JSON file. Empty uses ~/.pygitweb/auth.json."
    },
    "SETTINGS_CONFIG": {
      "type": "string",
      "description": "Path to this settings JSON file. Empty uses ~/.pygitweb/settings.json."
    }
  },
  "required": [
    "PROJECTROOT",
    "PROJECTS_LIST",
    "PROJECT_MAXDEPTH",
    "SITE_NAME",
    "EXPORT_OK",
    "LIST_ALL",
    "STRICT_EXPORT",
    "GIT",
    "MAXLOAD",
    "AUTH",
    "AUTH_CONFIG",
    "SETTINGS_CONFIG"
  ]
}