{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://sakura2333.github.io/kancolle-data/schemas/development-special-rule.schema.json",
  "title": "KanColle Development Special Rule",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "schemaVersion",
    "claimType",
    "ruleKey",
    "selector",
    "source"
  ],
  "properties": {
    "schemaVersion": {
      "const": 1
    },
    "claimType": {
      "const": "development-special-rule"
    },
    "ruleKey": {
      "type": "string",
      "minLength": 1
    },
    "selector": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "secretaryTypes",
        "resourceTables",
        "shipIds",
        "shipClassIds",
        "excludeShipIds",
        "minimumResources"
      ],
      "properties": {
        "secretaryTypes": {
          "type": "array",
          "items": {
            "enum": [
              "gunfire",
              "torpedo",
              "carrier",
              "submarine"
            ]
          }
        },
        "resourceTables": {
          "type": "array",
          "items": {
            "enum": [
              "fuel-steel",
              "ammo",
              "bauxite"
            ]
          }
        },
        "shipIds": {
          "type": "array",
          "items": {
            "type": "integer",
            "minimum": 1
          }
        },
        "shipClassIds": {
          "type": "array",
          "items": {
            "type": "integer",
            "minimum": 1
          }
        },
        "excludeShipIds": {
          "type": "array",
          "items": {
            "type": "integer",
            "minimum": 1
          }
        },
        "minimumResources": {
          "type": [
            "array",
            "null"
          ],
          "minItems": 4,
          "maxItems": 4,
          "items": {
            "type": "integer",
            "minimum": 0
          }
        }
      }
    },
    "rateDelta": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "equipmentId",
          "deltaBp"
        ],
        "properties": {
          "equipmentId": {
            "type": "integer",
            "minimum": 1
          },
          "deltaBp": {
            "type": "integer",
            "minimum": -10000,
            "maximum": 10000,
            "not": {
              "const": 0
            }
          }
        }
      }
    },
    "source": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "sourceId",
        "url",
        "evidence"
      ],
      "properties": {
        "sourceId": {
          "const": "wikiwiki-development"
        },
        "url": {
          "type": "string"
        },
        "evidence": {
          "type": "string",
          "minLength": 1
        }
      }
    },
    "rateDirection": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "equipmentId",
          "direction"
        ],
        "properties": {
          "equipmentId": {
            "type": "integer",
            "minimum": 1
          },
          "direction": {
            "enum": [
              "increase",
              "decrease"
            ]
          }
        }
      }
    }
  },
  "oneOf": [
    {
      "required": [
        "rateDelta"
      ],
      "not": {
        "required": [
          "rateDirection"
        ]
      }
    },
    {
      "required": [
        "rateDirection"
      ],
      "not": {
        "required": [
          "rateDelta"
        ]
      }
    }
  ]
}
