'''JSON schema definition included within the package code'''

usj_schema = {
  "$schema": "http://json-schema.org/draft-07/schema",
  "$id": "https://github.com/usfm-bible/tcdocs/blob/main/grammar/usj.js",
  "title": "Unified Scripture JSON",
  "description": "The JSON varient of USFM and USX data models",
  "type": "object",
  "$defs": {
  	"markerObject": {
      "type": "object",
      "properties": {
        "type": {
        	"description": "The kind/category of node or element this is,"+\
          "corresponding the USFM marker and USX node",
        	"type": "string"
        },
        "marker": {
          "description": "The corresponding marker in USFM or style in USX",
          "type": "string"
        },
        "content": {
          "type": "array",
          "items": {
            "anyOf":[
              {"type": "string"},
              {"$ref": "#/$defs/markerObject"}
            ]
          }
        },
        "sid": {
          "description": "Indicates the Book-chapter-verse value in the paragraph based structure",
          "type": "string"
        },
        "number": {
          "description": "Chapter number or verse number",
          "type": "string"
        },
        "code": {
          "description": "The 3-letter book code in id element",
          "pattern": "^[0-9A-Z]{3}$",
          "type": "string"
        },
        "altnumber": {
          "description": "Alternate chapter number or verse number",
          "type": "string"
        },
        "pubnumber": {
          "description": "Published character of chapter or verse",
          "type": "string"
        },
        "caller": {
          "description": "Caller character for footnotes and cross-refs",
          "type": "string"
        },
        "align": {
          "description": "Alignment of table cells",
          "type": "string"
        },
        "category": {
          "description": "Category of extended study bible sections",
          "type": "string"
        }
      },
      "required": ["type"]
    }
   },
  "properties": {
    "type": {
      "description": "The kind of node/element/marker this is",
      "type": "string"
    },
    "version": {
      "description": "The USJ spec version",
      "type": "string"
    },
    "content": {
      "description": "The JSON representation of scripture contents from USFM/USX",
      "type": "array",
      "items":{
        "anyOf":[
          {"type": "string"},
          {"$ref": "#/$defs/markerObject"}
        ]
      }
    }
  },
  "required": ["type", "version", "content"]
}
