{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "id": "https://cavedb.ru/schemas/v1/cave.json",
  "title": "Пещера",
  "description": "Карточка пещеры",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "Название"
  ],
  "properties": {
    "Доступ": {
      "$ref": "#/definitions/Доступ"
    },
    "Название": {
      "$ref": "#/definitions/Название"
    },
    "КадастровыйНомер": {
      "$ref": "#/definitions/КадастровыйНомер"
    },
    "АдминистративноеПоложение": {
      "$ref": "adm-location.json#/"
    },
    "СпелеоПоложение": {
      "$ref": "speleo-location.json#/"
    },
    "Морфометрия": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "Длина": {
          "description": "Метров",
          "$ref": "#/definitions/ЧислоБольшеНуля"
        },
        "ПроективнаяДлина": {
          "description": "Метров",
          "$ref": "#/definitions/ЧислоБольшеНуля"
        },
        "Глубина": {
          "description": "Метров",
          "$ref": "#/definitions/ЧислоБольшеИлиРавноНулю"
        },
        "Амплитуда": {
          "description": "Метров",
          "$ref": "#/definitions/ЧислоБольшеИлиРавноНулю"
        },
        "Площадь": {
          "description": "Метров квадратных",
          "$ref": "#/definitions/ЧислоБольшеНуля"
        },
        "Объем": {
          "description": "Метров кубических",
          "$ref": "#/definitions/ЧислоБольшеНуля"
        },
        "Примечания": {
          "type": "string"
        }
      }
    },
    "Вход": {
      "type": "array",
      "minItems": 2,
      "uniqueItems": true,
      "items": {
        "$ref": "#/definitions/Вход"
      }
    }
  },
  "patternProperties": {
    "^ОписаниеВхода[1-9]?$": {
      "type": "string"
    },
    "^КакДобраться[1-9]?$": {
      "type": "string"
    },
    "^Координаты[1-9]?$": {
      "$ref": "#/definitions/Координаты"
    },
    "^КраткоеОписание[1-9]?$": {
      "type": "string"
    },
    "^Геология[1-9]?$": {
      "type": "string"
    },
    "^Морфология[1-9]?$": {
      "type": "string"
    },
    "^Гидрология[1-9]?$": {
      "type": "string"
    },
    "^Климат[1-9]?$": {
      "type": "string"
    },
    "^СнежныеЛедяныеОтложения[1-9]?$": {
      "type": "string"
    },
    "^ВторичныеОтложения[1-9]?$": {
      "type": "string"
    },
    "^Биота[1-9]?$": {
      "type": "string"
    },
    "^Палеонтология[1-9]?$": {
      "type": "string"
    },
    "^Археология[1-9]?$": {
      "type": "string"
    },
    "^ИсторияОткрытияИсследования[1-9]?$": {
      "type": "string"
    },
    "^ПерспективыИсследования[1-9]?$": {
      "type": "string"
    },
    "^ОрганизацииГруппыВедущиеИсследования[1-9]?$": {
      "type": "string"
    },
    "^ХозяйственноеИспользование[1-9]?$": {
      "type": "string"
    },
    "^КультовоеИспользование[1-9]?$": {
      "type": "string"
    },
    "^ЭкологическоеСостояние[1-9]?$": {
      "type": "string"
    },
    "^Посещаемость[1-9]?$": {
      "type": "string"
    },
    "^СоциальноЭкономическаяНаучнаяЦенность[1-9]?$": {
      "type": "string"
    },
    "^ОхранныйСтатус[1-9]?$": {
      "type": "string"
    },
    "^СпортивноТехническоеОписание[1-9]?$": {
      "type": "string"
    },
    "^ИспользованныеИсточники[1-9]?$": {
      "type": "string"
    },
    "^Примечания[1-9]?$": {
      "type": "string"
    }
  },
  "dependencies": {
    "Вход": {
      "patternProperties": {
        "^ОписаниеВхода[1-9]?$": {
          "type": "null"
        },
        "^КакДобраться[1-9]?$": {
          "type": "null"
        },
        "^Координаты[1-9]?$": {
          "type": "null"
        }
      }
    }
  },
  "definitions": {
    "Доступ": {
      "descrtiption": "Уровень доступа",
      "type": "integer",
      "minimum": 0,
      "maximum": 9
    },
    "Название": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "title": "Список альтернативных названией",
          "description": "Первое название считается основным",
          "type": "array",
          "minItems": 1,
          "uniqueItems": true,
          "items": {
            "type": "string"
          }
        }
      ]
    },
    "КадастровыйНомер": {
      "oneOf": [
        {
          "$ref": "cadastre.json#/"
        },
        {
          "type": "array",
          "minItems": 1,
          "uniqueItems": true,
          "items": {
            "$ref": "cadastre.json#/"
          }
        }
      ]
    },
    "ЦелоеБольшеИлиРавноНулю": {
      "type": "integer",
      "minimum": 0
    },
    "ЦелоеБольшеНуля": {
      "type": "integer",
      "minimum": 0,
      "exclusiveMinimum": true
    },
    "ЧислоБольшеИлиРавноНулю": {
      "type": "number",
      "minimum": 0
    },
    "ЧислоБольшеНуля": {
      "type": "number",
      "minimum": 0,
      "exclusiveMinimum": true
    },
    "Координаты": {
      "oneOf": [
        {
          "$ref": "location.json#/"
        },
        {
          "type": "array",
          "minItems": 1,
          "uniqueItems": true,
          "items": {
            "$ref": "location.json#/"
          }
        }
      ]
    },
    "Вход": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "Название"
      ],
      "properties": {
        "Название": {
          "$ref": "#/definitions/Название"
        },
        "КадастровыйНомер": {
          "$ref": "#/definitions/КадастровыйНомер"
        },
        "АдминистративноеПоложение": {
          "$ref": "adm-location.json#/"
        },
        "Глубина": {
          "description": "Метров",
          "$ref": "#/definitions/ЦелоеБольшеНуля"
        }
      },
      "patternProperties": {
        "^ОписаниеВхода[1-9]?$": {
          "type": "string"
        },
        "^КакДобраться[1-9]?$": {
          "type": "string"
        },
        "^Координаты[1-9]?$": {
          "$ref": "#/definitions/Координаты"
        }
      }
    }
  }
}