{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "$ref": "#/components/schemas/PkgQuerySetVM",
  "components": {
    "schemas": {
      "PkgQuerySetVM": {
        "required": [
          "key"
        ],
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "nullable": true
          },
          "key": {
            "minLength": 1,
            "type": "string"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "queries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PkgQueryVM"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PkgQueryVM": {
        "required": [
          "key"
        ],
        "type": "object",
        "properties": {
          "columns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PkgQueryColumnVM"
            },
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "key": {
            "minLength": 1,
            "type": "string"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "properties": {
            "$ref": "#/components/schemas/PkgQueryPropertyVM"
          },
          "statement": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PkgQueryPropertyVM": {
        "type": "object",
        "properties": {
          "temporaryTableName": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PkgQueryColumnVM": {
        "required": [
          "key"
        ],
        "type": "object",
        "properties": {
          "columnIndex": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "dataType": {
            "type": "string",
            "nullable": true
          },
          "expression": {
            "type": "string",
            "nullable": true
          },
          "isFromKey": {
            "type": "boolean",
            "nullable": true
          },
          "isKey": {
            "type": "boolean",
            "nullable": true
          },
          "isParentKey": {
            "type": "boolean",
            "nullable": true
          },
          "isRelationType": {
            "type": "boolean",
            "nullable": true
          },
          "isSortOrder": {
            "type": "boolean",
            "nullable": true
          },
          "isToKey": {
            "type": "boolean",
            "nullable": true
          },
          "key": {
            "minLength": 1,
            "type": "string"
          },
          "sourceDataType": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      }
    }
  }
}