{
    "$id": "dictionaryTermBankV3",
    "$schema": "http://json-schema.org/draft-07/schema#",
    "definitions": {
        "structuredContent": {
            "oneOf": [
                {
                    "type": "string",
                    "description": "Represents a text node."
                },
                {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/structuredContent",
                        "description": "An array of child content."
                    }
                },
                {
                    "type": "object",
                    "oneOf": [
                        {
                            "type": "object",
                            "description": "Empty tags.",
                            "required": [
                                "tag"
                            ],
                            "additionalProperties": false,
                            "properties": {
                                "tag": {
                                    "type": "string",
                                    "const": "br"
                                },
                                "data": {
                                    "$ref": "#/definitions/structuredContentData"
                                }
                            }
                        },
                        {
                            "type": "object",
                            "description": "Generic container tags.",
                            "required": [
                                "tag"
                            ],
                            "additionalProperties": false,
                            "properties": {
                                "tag": {
                                    "type": "string",
                                    "enum": ["ruby", "rt", "rp", "table", "thead", "tbody", "tfoot", "tr"]
                                },
                                "content": {
                                    "$ref": "#/definitions/structuredContent"
                                },
                                "data": {
                                    "$ref": "#/definitions/structuredContentData"
                                },
                                "lang": {
                                    "type": "string",
                                    "description": "Defines the language of an element in the format defined by RFC 5646."
                                }
                            }
                        },
                        {
                            "type": "object",
                            "description": "Table tags.",
                            "required": [
                                "tag"
                            ],
                            "additionalProperties": false,
                            "properties": {
                                "tag": {
                                    "type": "string",
                                    "enum": ["td", "th"]
                                },
                                "content": {
                                    "$ref": "#/definitions/structuredContent"
                                },
                                "data": {
                                    "$ref": "#/definitions/structuredContentData"
                                },
                                "colSpan": {
                                    "type": "integer",
                                    "minimum": 1
                                },
                                "rowSpan": {
                                    "type": "integer",
                                    "minimum": 1
                                },
                                "style": {
                                    "$ref": "#/definitions/structuredContentStyle"
                                },
                                "lang": {
                                    "type": "string",
                                    "description": "Defines the language of an element in the format defined by RFC 5646."
                                }
                            }
                        },
                        {
                            "type": "object",
                            "description": "Container tags supporting configurable styles.",
                            "required": [
                                "tag"
                            ],
                            "additionalProperties": false,
                            "properties": {
                                "tag": {
                                    "type": "string",
                                    "enum": ["span", "div", "ol", "ul", "li", "details", "summary"]
                                },
                                "content": {
                                    "$ref": "#/definitions/structuredContent"
                                },
                                "data": {
                                    "$ref": "#/definitions/structuredContentData"
                                },
                                "style": {
                                    "$ref": "#/definitions/structuredContentStyle"
                                },
                                "title": {
                                    "type": "string",
                                    "description": "Hover text for the element."
                                },
                                "open": {
                                    "type": "boolean",
                                    "description": "Whether or not the details element is open by default."
                                },
                                "lang": {
                                    "type": "string",
                                    "description": "Defines the language of an element in the format defined by RFC 5646."
                                }
                            }
                        },
                        {
                            "type": "object",
                            "description": "Image tag.",
                            "required": [
                                "tag",
                                "path"
                            ],
                            "additionalProperties": false,
                            "properties": {
                                "tag": {
                                    "type": "string",
                                    "const": "img"
                                },
                                "data": {
                                    "$ref": "#/definitions/structuredContentData"
                                },
                                "path": {
                                    "type": "string",
                                    "description": "Path to the image file in the archive."
                                },
                                "width": {
                                    "type": "number",
                                    "description": "Preferred width of the image.",
                                    "minimum": 0
                                },
                                "height": {
                                    "type": "number",
                                    "description": "Preferred height of the image.",
                                    "minimum": 0
                                },
                                "title": {
                                    "type": "string",
                                    "description": "Hover text for the image."
                                },
                                "alt": {
                                    "type": "string",
                                    "description": "Alt text for the image."
                                },
                                "description": {
                                    "type": "string",
                                    "description": "Description of the image."
                                },
                                "pixelated": {
                                    "type": "boolean",
                                    "description": "Whether or not the image should appear pixelated at sizes larger than the image's native resolution.",
                                    "default": false
                                },
                                "imageRendering": {
                                    "type": "string",
                                    "description": "Controls how the image is rendered. The value of this field supersedes the pixelated field.",
                                    "enum": ["auto", "pixelated", "crisp-edges"],
                                    "default": "auto"
                                },
                                "appearance": {
                                    "type": "string",
                                    "description": "Controls the appearance of the image. The \"monochrome\" value will mask the opaque parts of the image using the current text color.",
                                    "enum": ["auto", "monochrome"],
                                    "default": "auto"
                                },
                                "background": {
                                    "type": "boolean",
                                    "description": "Whether or not a background color is displayed behind the image.",
                                    "default": true
                                },
                                "collapsed": {
                                    "type": "boolean",
                                    "description": "Whether or not the image is collapsed by default.",
                                    "default": false
                                },
                                "collapsible": {
                                    "type": "boolean",
                                    "description": "Whether or not the image can be collapsed.",
                                    "default": false
                                },
                                "verticalAlign": {
                                    "type": "string",
                                    "description": "The vertical alignment of the image.",
                                    "enum": ["baseline", "sub", "super", "text-top", "text-bottom", "middle", "top", "bottom"]
                                },
                                "border": {
                                    "type": "string",
                                    "description": "Shorthand for border width, style, and color."
                                },
                                "borderRadius": {
                                    "type": "string",
                                    "description": "Roundness of the corners of the image's outer border edge."
                                },
                                "sizeUnits": {
                                    "type": "string",
                                    "description": "The units for the width and height.",
                                    "enum": ["px", "em"]
                                }
                            }
                        },
                        {
                            "type": "object",
                            "description": "Link tag.",
                            "required": [
                                "tag",
                                "href"
                            ],
                            "additionalProperties": false,
                            "properties": {
                                "tag": {
                                    "type": "string",
                                    "const": "a"
                                },
                                "content": {
                                    "$ref": "#/definitions/structuredContent"
                                },
                                "href": {
                                    "type": "string",
                                    "description": "The URL for the link. URLs starting with a ? are treated as internal links to other dictionary content.",
                                    "pattern": "^(?:https?:|\\?)[\\w\\W]*"
                                },
                                "lang": {
                                    "type": "string",
                                    "description": "Defines the language of an element in the format defined by RFC 5646."
                                }
                            }
                        }
                    ]
                }
            ]
        },
        "structuredContentData": {
            "type": "object",
            "description": "Generic data attributes that should be added to the element.",
            "additionalProperties": {
                "type": "string"
            }
        },
        "structuredContentStyle": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "fontStyle": {
                    "type": "string",
                    "enum": ["normal", "italic"],
                    "default": "normal"
                },
                "fontWeight": {
                    "type": "string",
                    "enum": ["normal", "bold"],
                    "default": "normal"
                },
                "fontSize": {
                    "type": "string",
                    "default": "medium"
                },
                "color": {
                    "type": "string"
                },
                "background": {
                    "type": "string"
                },
                "backgroundColor": {
                    "type": "string"
                },
                "textDecorationLine": {
                    "oneOf": [
                        {
                            "type": "string",
                            "enum": ["none", "underline", "overline", "line-through"],
                            "default": "none"
                        },
                        {
                            "type": "array",
                            "items": {
                                "type": "string",
                                "enum": ["underline", "overline", "line-through"],
                                "default": "none"
                            }
                        }
                    ]
                },
                "textDecorationStyle": {
                    "type": "string",
                    "enum": ["solid", "double", "dotted", "dashed", "wavy"],
                    "default": "solid"
                },
                "textDecorationColor": {
                    "type": "string"
                },
                "borderColor": {
                    "type": "string"
                },
                "borderStyle": {
                    "type": "string"
                },
                "borderRadius": {
                    "type": "string"
                },
                "borderWidth": {
                    "type": "string"
                },
                "clipPath": {
                    "type": "string"
                },
                "verticalAlign": {
                    "type": "string",
                    "enum": ["baseline", "sub", "super", "text-top", "text-bottom", "middle", "top", "bottom"],
                    "default": "baseline"
                },
                "textAlign": {
                    "type": "string",
                    "enum": ["start", "end", "left", "right", "center", "justify", "justify-all", "match-parent"],
                    "default": "start"
                },
                "textEmphasis": {
                    "type": "string"
                },
                "textShadow": {
                    "type": "string"
                },
                "margin": {
                    "type": "string"
                },
                "marginTop": {
                    "type": ["number", "string"],
                    "default": 0
                },
                "marginLeft": {
                    "type": ["number", "string"],
                    "default": 0
                },
                "marginRight": {
                    "type": ["number", "string"],
                    "default": 0
                },
                "marginBottom": {
                    "type": ["number", "string"],
                    "default": 0
                },
                "padding": {
                    "type": "string"
                },
                "paddingTop": {
                    "type": "string"
                },
                "paddingLeft": {
                    "type": "string"
                },
                "paddingRight": {
                    "type": "string"
                },
                "paddingBottom": {
                    "type": "string"
                },
                "wordBreak": {
                    "type": "string",
                    "enum": ["normal", "break-all", "keep-all"],
                    "default": "normal"
                },
                "whiteSpace": {
                    "type": "string",
                    "default": "normal"
                },
                "cursor": {
                    "type": "string",
                    "default": "auto"
                },
                "listStyleType": {
                    "type": "string",
                    "default": "disc"
                }
            }
        }
    },
    "type": "array",
    "description": "Data file containing term information.",
    "items": {
        "type": "array",
        "description": "Information about a single term.",
        "minItems": 8,
        "maxItems": 8,
        "additionalItems": false,
        "items": [
            {
                "type": "string",
                "description": "The text for the term."
            },
            {
                "type": "string",
                "description": "Reading of the term, or an empty string if the reading is the same as the term."
            },
            {
                "type": ["string", "null"],
                "description": "String of space-separated tags for the definition. An empty string is treated as no tags."
            },
            {
                "type": "string",
                "description": "String of space-separated rule identifiers for the definition which is used to validate deinflection. An empty string should be used for words which aren't inflected."
            },
            {
                "type": "number",
                "description": "Score used to determine popularity. Negative values are more rare and positive values are more frequent. This score is also used to sort search results."
            },
            {
                "type": "array",
                "description": "Array of definitions for the term.",
                "items": {
                    "oneOf": [
                        {
                            "type": "string",
                            "description": "Single definition for the term."
                        },
                        {
                            "type": "object",
                            "description": "Single detailed definition for the term.",
                            "required": [
                                "type"
                            ],
                            "properties": {
                                "type": {
                                    "type": "string",
                                    "description": "The type of the data for this definition.",
                                    "enum": ["text", "image", "structured-content"]
                                }
                            },
                            "oneOf": [
                                {
                                    "required": [
                                        "type",
                                        "text"
                                    ],
                                    "additionalProperties": false,
                                    "properties": {
                                        "type": {
                                            "type": "string",
                                            "const": "text"
                                        },
                                        "text": {
                                            "type": "string",
                                            "description": "Single definition for the term."
                                        }
                                    }
                                },
                                {
                                    "required": [
                                        "type",
                                        "content"
                                    ],
                                    "additionalProperties": false,
                                    "properties": {
                                        "type": {
                                            "type": "string",
                                            "const": "structured-content"
                                        },
                                        "content": {
                                            "$ref": "#/definitions/structuredContent",
                                            "description": "Single definition for the term using a structured content object."
                                        }
                                    }
                                },
                                {
                                    "required": [
                                        "type",
                                        "path"
                                    ],
                                    "additionalProperties": false,
                                    "properties": {
                                        "type": {
                                            "type": "string",
                                            "const": "image"
                                        },
                                        "path": {
                                            "type": "string",
                                            "description": "Path to the image file in the archive."
                                        },
                                        "width": {
                                            "type": "integer",
                                            "description": "Preferred width of the image.",
                                            "minimum": 1
                                        },
                                        "height": {
                                            "type": "integer",
                                            "description": "Preferred height of the image.",
                                            "minimum": 1
                                        },
                                        "title": {
                                            "type": "string",
                                            "description": "Hover text for the image."
                                        },
                                        "alt": {
                                            "type": "string",
                                            "description": "Alt text for the image."
                                        },
                                        "description": {
                                            "type": "string",
                                            "description": "Description of the image."
                                        },
                                        "pixelated": {
                                            "type": "boolean",
                                            "description": "Whether or not the image should appear pixelated at sizes larger than the image's native resolution.",
                                            "default": false
                                        },
                                        "imageRendering": {
                                            "type": "string",
                                            "description": "Controls how the image is rendered. The value of this field supersedes the pixelated field.",
                                            "enum": ["auto", "pixelated", "crisp-edges"],
                                            "default": "auto"
                                        },
                                        "appearance": {
                                            "type": "string",
                                            "description": "Controls the appearance of the image. The \"monochrome\" value will mask the opaque parts of the image using the current text color.",
                                            "enum": ["auto", "monochrome"],
                                            "default": "auto"
                                        },
                                        "background": {
                                            "type": "boolean",
                                            "description": "Whether or not a background color is displayed behind the image.",
                                            "default": true
                                        },
                                        "collapsed": {
                                            "type": "boolean",
                                            "description": "Whether or not the image is collapsed by default.",
                                            "default": false
                                        },
                                        "collapsible": {
                                            "type": "boolean",
                                            "description": "Whether or not the image can be collapsed.",
                                            "default": true
                                        }
                                    }
                                }
                            ]
                        },
                        {
                            "type": "array",
                            "description": "Deinflection of the term to an uninflected term.",
                            "minItems": 2,
                            "maxItems": 2,
                            "items": [
                                {
                                    "type": "string",
                                    "description": "The uninflected term."
                                },
                                {
                                    "type": "array",
                                    "description": "A chain of inflection rules that produced the inflected term",
                                    "items": {
                                        "type": "string",
                                        "description": "A single inflection rule."
                                    }
                                }
                            ]
                        }
                    ]
                }
            },
            {
                "type": "integer",
                "description": "Sequence number for the term. Terms with the same sequence number can be shown together when the \"resultOutputMode\" option is set to \"merge\"."
            },
            {
                "type": "string",
                "description": "String of space-separated tags for the term. An empty string is treated as no tags."
            }
        ]
    }
}
