{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "description": "A version and its associated data",
  "properties": {
    "arguments": {
      "properties": {
        "game": {
          "type": "array"
        },
        "jvm": {
          "type": "array"
        }
      },
      "required": [
        "game"
      ],
      "type": "object"
    },
    "assetIndex": {
      "properties": {
        "id": {
          "minLength": 1,
          "type": "string"
        },
        "sha1": {
          "pattern": "^[0-9a-f]{40}$",
          "type": "string"
        },
        "size": {
          "minimum": 0,
          "type": "number"
        },
        "totalSize": {
          "minimum": 0,
          "type": "number"
        },
        "url": {
          "format": "uri-reference",
          "type": "string"
        }
      },
      "required": [
        "id",
        "sha1",
        "size",
        "totalSize",
        "url"
      ],
      "type": "object"
    },
    "assets": {
      "minLength": 1,
      "type": "string"
    },
    "clientJsonVersion": {
      "minimum": 0,
      "type": "number"
    },
    "complianceLevel": {
      "minimum": 0,
      "type": "number"
    },
    "downloads": {
      "items": {
        "properties": {
          "sha1": {
            "pattern": "^[0-9a-f]{40}$",
            "type": "string"
          },
          "size": {
            "minimum": 0,
            "type": "number"
          },
          "url": {
            "format": "uri-reference",
            "type": "string"
          }
        },
        "required": [
          "sha1",
          "size",
          "url"
        ],
        "type": "object"
      },
      "type": "object"
    },
    "id": {
      "minLength": 1,
      "type": "string"
    },
    "javaVersion": {
      "properties": {
        "component": {
          "enum": [
            "java-runtime-alpha",
            "java-runtime-beta",
            "java-runtime-delta",
            "java-runtime-epsilon",
            "java-runtime-gamma",
            "jre-legacy"
          ],
          "type": "string"
        },
        "majorVersion": {
          "minimum": 5,
          "type": "number"
        },
        "minVersion": {
          "minimum": 5,
          "type": "number"
        }
      },
      "required": [
        "component",
        "majorVersion",
        "minVersion"
      ],
      "type": "object"
    },
    "libraries": {
      "items": {
        "properties": {
          "downloads": {
            "properties": {
              "artifact": {
                "properties": {
                  "path": {
                    "minLength": 1,
                    "type": "string"
                  },
                  "sha1": {
                    "minLength": 1,
                    "type": "string"
                  },
                  "size": {
                    "type": "number"
                  },
                  "url": {
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "path",
                  "sha1",
                  "size",
                  "url"
                ],
                "type": "object"
              }
            },
            "type": "object"
          },
          "name": {
            "minLength": 1,
            "type": "string"
          },
          "rules": {
            "items": {
              "properties": {
                "action": {
                  "minLength": 1,
                  "type": "string"
                },
                "os": {
                  "properties": {
                    "name": {
                      "minLength": 1,
                      "type": "string"
                    }
                  },
                  "required": [
                    "name"
                  ],
                  "type": "object"
                }
              },
              "required": [
                "action"
              ]
            },
            "minItems": 1,
            "type": "array",
            "uniqueItems": true
          }
        },
        "required": [
          "name"
        ]
      },
      "type": "array"
    },
    "logging": {
      "items": {
        "properties": {
          "argument": {
            "minLength": 1,
            "type": "string"
          },
          "file": {
            "properties": {
              "id": {
                "minLength": 1,
                "type": "string"
              },
              "sha1": {
                "minLength": 1,
                "type": "string"
              },
              "size": {
                "type": "number"
              },
              "url": {
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "id",
              "sha1",
              "size",
              "url"
            ],
            "type": "object"
          },
          "type": {
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "argument",
          "file",
          "type"
        ],
        "type": "object"
      },
      "required": [
        "client"
      ]
    },
    "mainClass": {
      "minLength": 1,
      "type": [
        "string",
        "null"
      ]
    },
    "phase": {
      "enum": [
        "pre-classic",
        "classic",
        "indev",
        "infdev",
        "alpha",
        "beta",
        "post-1.0",
        "oddballs"
      ],
      "type": "string"
    },
    "releaseTime": {
      "format": "date-time",
      "type": "string"
    },
    "time": {
      "format": "date-time",
      "type": "string"
    },
    "type": {
      "enum": [
        "release",
        "snapshot",
        "april-fools",
        "special"
      ],
      "type": "string"
    }
  },
  "required": [
    "arguments",
    "assetIndex",
    "assets",
    "complianceLevel",
    "downloads",
    "id",
    "javaVersion",
    "libraries",
    "mainClass",
    "releaseTime",
    "time",
    "type",
    "phase",
    "clientJsonVersion"
  ],
  "type": "object"
}
