# BarPage v1

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "BarPage v1",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "v",
    "series_key",
    "meta",
    "i0",
    "n",
    "complete",
    "cols",
    "prev",
    "next"
  ],
  "properties": {
    "v": {
      "const": 1
    },
    "series_key": {
      "$ref": "#/$defs/sha256"
    },
    "meta": {
      "$ref": "#/$defs/meta"
    },
    "i0": {
      "type": "integer",
      "minimum": 0
    },
    "n": {
      "type": "integer",
      "minimum": 0,
      "maximum": 5000
    },
    "complete": {
      "type": "boolean"
    },
    "prev": {
      "type": [
        "string",
        "null"
      ]
    },
    "next": {
      "type": [
        "string",
        "null"
      ]
    },
    "cols": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "t_open",
        "t_close",
        "o",
        "h",
        "l",
        "c",
        "ro",
        "rh",
        "rl",
        "rc",
        "vol",
        "spread",
        "flags",
        "dir"
      ],
      "properties": {
        "t_open": {
          "$ref": "#/$defs/ms_array"
        },
        "t_close": {
          "$ref": "#/$defs/ms_array"
        },
        "o": {
          "$ref": "#/$defs/num_array"
        },
        "h": {
          "$ref": "#/$defs/num_array"
        },
        "l": {
          "$ref": "#/$defs/num_array"
        },
        "c": {
          "$ref": "#/$defs/num_array"
        },
        "ro": {
          "$ref": "#/$defs/num_array_or_null"
        },
        "rh": {
          "$ref": "#/$defs/num_array_or_null"
        },
        "rl": {
          "$ref": "#/$defs/num_array_or_null"
        },
        "rc": {
          "$ref": "#/$defs/num_array_or_null"
        },
        "vol": {
          "$ref": "#/$defs/num_array"
        },
        "spread": {
          "$ref": "#/$defs/num_array"
        },
        "flags": {
          "type": "array",
          "items": {
            "type": "integer",
            "minimum": 0,
            "maximum": 255
          }
        },
        "dir": {
          "type": "array",
          "items": {
            "enum": [
              -1,
              0,
              1
            ]
          }
        },
        "box": {
          "$ref": "#/$defs/num_array"
        },
        "thick": {
          "type": "array",
          "items": {
            "type": "boolean"
          }
        },
        "evt": {
          "type": "array",
          "items": {
            "enum": [
              0,
              1,
              2,
              3
            ]
          }
        },
        "col": {
          "type": "array",
          "items": {
            "type": "integer",
            "minimum": -1
          }
        },
        "boxes": {
          "type": "array",
          "items": {
            "type": "integer",
            "minimum": 0
          }
        }
      }
    }
  },
  "$defs": {
    "sha256": {
      "type": "string",
      "pattern": "^[0-9a-f]{64}$"
    },
    "ms_array": {
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": 0
      }
    },
    "num_array": {
      "type": "array",
      "items": {
        "type": [
          "number",
          "null"
        ]
      }
    },
    "num_array_or_null": {
      "oneOf": [
        {
          "type": "null"
        },
        {
          "$ref": "#/$defs/num_array"
        }
      ]
    },
    "meta": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "spec",
        "series_key",
        "forge_bars_version",
        "source",
        "built_from",
        "path_rule",
        "volume_kind",
        "resolved",
        "count",
        "first_time_open",
        "last_time_close",
        "warmup_bars",
        "warmup_real_span_ms",
        "bars_on_assumed_path",
        "multi_emit_events",
        "gap_bars",
        "filled_forward_bars"
      ],
      "properties": {
        "spec": {
          "$ref": "bar-spec.schema.json"
        },
        "series_key": {
          "$ref": "#/$defs/sha256"
        },
        "forge_bars_version": {
          "type": "string"
        },
        "source": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "kind",
            "id",
            "label"
          ],
          "properties": {
            "kind": {
              "enum": [
                "upload",
                "broker"
              ]
            },
            "id": {
              "type": "string",
              "minLength": 1
            },
            "label": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "built_from": {
          "enum": [
            "ticks",
            "m1_path"
          ]
        },
        "path_rule": {
          "enum": [
            "nearest_extreme_first",
            null
          ]
        },
        "volume_kind": {
          "enum": [
            "tick",
            "traded"
          ]
        },
        "volume_absent": {
          "const": true
        },
        "resolved": {
          "type": "object"
        },
        "count": {
          "type": "integer",
          "minimum": 0
        },
        "first_time_open": {
          "type": [
            "integer",
            "null"
          ]
        },
        "last_time_close": {
          "type": [
            "integer",
            "null"
          ]
        },
        "warmup_bars": {
          "type": "integer",
          "minimum": 0
        },
        "warmup_real_span_ms": {
          "type": "integer",
          "minimum": 0
        },
        "bars_on_assumed_path": {
          "type": "integer",
          "minimum": 0
        },
        "multi_emit_events": {
          "type": "integer",
          "minimum": 0
        },
        "gap_bars": {
          "type": "integer",
          "minimum": 0
        },
        "filled_forward_bars": {
          "type": "integer",
          "minimum": 0
        }
      }
    }
  }
}
```
