{
  "$id": "particle-validation.json",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "required": ["particles"],
  "additionalProperties": false,
  "properties": { "particles": { "$ref": "#/definitions/particles" } },
  "definitions": {
    "Parity": {
      "type": "object",
      "required": ["value"],
      "properties": {
        "value": { "enum": [-1, 1] },
        "additionalProperties": false
      }
    },
    "Particle": {
      "type": "object",
      "required": ["name", "pid", "mass", "spin"],
      "properties": {
        "name": { "type": "string" },
        "latex": { "type": "string" },
        "pid": { "type": "integer" },
        "mass": { "type": "number" },
        "width": { "type": "number" },
        "charge": { "type": "integer" },
        "spin": { "type": "number", "multipleOf": 0.5 },
        "parity": { "$ref": "#/definitions/Parity" },
        "c_parity": { "$ref": "#/definitions/Parity" },
        "g_parity": { "$ref": "#/definitions/Parity" },
        "strangeness": { "type": "integer" },
        "charmness": { "type": "integer" },
        "bottomness": { "type": "integer" },
        "topness": { "type": "integer" },
        "baryon_number": { "type": "integer" },
        "electron_lepton_number": { "type": "integer" },
        "muon_lepton_number": { "type": "integer" },
        "tau_lepton_number": { "type": "integer" },
        "isospin": {
          "type": "object",
          "required": ["magnitude", "projection"],
          "properties": {
            "magnitude": { "type": "number" },
            "projection": { "type": "number" }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    },
    "particles": {
      "type": "array",
      "items": { "$ref": "#/definitions/Particle" }
    }
  }
}
