{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "extends": "./schema-definitions.json#",
  "required": ["tcpv4-port", "zodb-dict"],
  "properties": {
    "tcpv4-port": {
      "allOf": [{
        "$ref": "#/definitions/tcpv4port"
      }, {
        "description": "Start allocating ports at this value, going upward"
      }]
    },
    "backup": {
      "description": "Controls ZODB backup generation and retention (disabled if null)",
      "default": {},
      "properties": {
        "periodicity": {
          "description": "When to backup, specified in the same format as for systemd.time(7) calendar events (years & seconds not supported, DoW & DoM can not be combined)",
          "default": "daily",
          "type": "string",
        },
        "zodb-dict": {
          "description": "Maps an export identifier to the path it must be backed up into",
          "default": {},
          "patternProperties": {
            ".*": {
              "description": "'%(backup)s' is expanded to partition's ZODB backup path (typically 'srv/backup/zodb'), and %(name)s with the export id",
              "default": "%(backup)s/%(name)s",
              "type": "string"
            }
          },
          "type": "object"
        },
        "tidstorage-timestamp-path": {
          "description": "Path to backup timestamp file, occurrences of '%(backup)s' being eplaced with the path to partition's srv/backup/tidstorage directory",
          "default": "%(backup)s/repozo_tidstorage_timestamp.log",
          "type": "string"
        }
      },
      "type": ["object", "null"]
    },
    "zodb-dict": {
      "description": "Maps an export identifier to its settings",
      "patternProperties": {
        ".*": {
          "properties": {
            "storage-family": {
              "description": "Opaque name used to regroup/separate mountpoints under different ZEO processes (must be valid as a file name and as a ConfigParser section name)",
              "default": "default",
              "pattern": "^[^<>:\"/\\|?*\\]\\[ ]*$",
              "type": "string"
            },
            "mount-point": {
              "description": "Traversal path export should be mounted at (opaque to this software type)",
              "default": "/",
              "type": "string"
            },
            "cache-size": {
              "description": "Client-side cache size in object count (opaque to this software type)",
              "default": -1,
              "type": "integer"
            },
            "storage-dict": {
              "default": {},
              "properties": {
                "path": {
                  "description": "FileStorage file path, '%(zodb)s' occurrences are replaced with the path to partition's srv/zodb directory, and %(name)s with the export id",
                  "default": "%(zodb)s/%(name)s.fs",
                  "type": "string"
                },
                "client": {
                  "description": "Client-side settings for this mountpoint",
                  "default": {},
                  "patternProperties": {
                    ".*": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    }
  }
}