{
  "type": "object",
  "properties": {
    "safeName": {
      "type": "string"
    },
    "transposed": {
      "type": "boolean"
    },
    "dynamicHeight": {
      "type": "boolean"
    },
    "showTitle": {
      "type": "boolean"
    },
    "showTotals": {
      "type": "boolean"
    },
    "updateFrequency": {
      "type": "number"
    },
    "hiddenColumns": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "onlyShownColumns": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "itemsPerPage": {
      "type": "number"
    },
    "overrideLoadingConfig": {
      "$ref": "#/definitions/LoadingConfig"
    },
    "overriddenColumnValues": {
      "$ref": "#/definitions/OverriddenColumnValues"
    },
    "filter": {
      "type": [
        "null",
        "string"
      ]
    },
    "defaultFilter": {
      "type": "string"
    },
    "optionalFilters": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/OptionalFilter"
      }
    },
    "onFetchError": {
      "type": "object"
    },
    "exactDateFrom": {
      "type": "string",
      "format": "date-time"
    },
    "exactDateTo": {
      "type": "string",
      "format": "date-time"
    },
    "hideDates": {
      "type": "boolean"
    },
    "showFilter": {
      "type": "boolean"
    },
    "useExternalFilterEndpoint": {
      "type": "boolean"
    },
    "allowAddEntry": {
      "type": "boolean"
    },
    "allowRowEdit": {
      "type": "boolean"
    },
    "foreignKeyWrap": {
      "type": "boolean"
    },
    "hideHeader": {
      "type": "boolean"
    },
    "hidePagination": {
      "type": "boolean"
    },
    "defaultSorting": {
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "defaultSortingAttribute": {
      "type": "string"
    },
    "isColumnsSortable": {
      "type": "boolean"
    },
    "maxAge": {
      "type": "number"
    },
    "onFilterChange": {
      "type": "object"
    },
    "rowSize": {
      "enum": [
        "LARGE",
        "MEDIUM",
        "SMALL"
      ],
      "type": "string"
    },
    "textAlign": {
      "enum": [
        "center",
        "end",
        "start"
      ],
      "type": "string"
    },
    "fontSize": {
      "type": "number"
    },
    "id": {
      "type": "string"
    },
    "reportOptions": {
      "$ref": "#/definitions/ReportOptions"
    },
    "reportMode": {
      "type": "boolean"
    },
    "stateCb": {
      "type": "object"
    },
    "calendarType": {
      "const": "CALENDAR_445",
      "type": "string"
    },
    "from": {
      "type": "string"
    },
    "to": {
      "type": "string"
    },
    "referenceTime": {
      "type": "string"
    },
    "instantFrom": {
      "$ref": "#/definitions/JSJoda.Instant"
    },
    "instantTo": {
      "$ref": "#/definitions/JSJoda.Instant"
    },
    "instantReferenceTime": {
      "$ref": "#/definitions/JSJoda.Instant"
    },
    "editColumnLocation": {
      "enum": [
        "BACK",
        "FRONT"
      ],
      "type": "string"
    },
    "disableRowDuplicate": {
      "type": "boolean"
    },
    "disableRowRemove": {
      "type": "boolean"
    }
  },
  "required": [
    "safeName"
  ],
  "definitions": {
    "LoadingConfig": {
      "type": "object",
      "properties": {
        "loadingType": {
          "enum": [
            "EVERYTHING",
            "FIXED_PERIOD",
            "RANGE"
          ],
          "type": "string"
        },
        "loadingConfig": {
          "$ref": "#/definitions/IPeriodLoadingConfig"
        }
      }
    },
    "IPeriodLoadingConfig": {
      "type": "object",
      "properties": {
        "defaultConfigUnit": {
          "enum": [
            "DAYS",
            "HALFHOUR",
            "HOURS",
            "MILLIS",
            "MINUTES",
            "MONTHS",
            "SECONDS",
            "WEEKS",
            "YEARS"
          ],
          "type": "string"
        },
        "truncateStartUnit": {
          "enum": [
            "DAYS",
            "HALFHOUR",
            "HOURS",
            "MILLIS",
            "MINUTES",
            "MONTHS",
            "SECONDS",
            "WEEKS",
            "YEARS"
          ],
          "type": "string"
        },
        "periodUnit": {
          "enum": [
            "DAYS",
            "HALFHOUR",
            "HOURS",
            "MILLIS",
            "MINUTES",
            "MONTHS",
            "SECONDS",
            "WEEKS",
            "YEARS"
          ],
          "type": "string"
        },
        "period": {
          "type": "number"
        },
        "offsetUnit": {
          "enum": [
            "DAYS",
            "HALFHOUR",
            "HOURS",
            "MILLIS",
            "MINUTES",
            "MONTHS",
            "SECONDS",
            "WEEKS",
            "YEARS"
          ],
          "type": "string"
        },
        "offset": {
          "type": "number"
        }
      }
    },
    "OverriddenColumnValues": {
      "type": "object",
      "properties": {
        "selectedColumnsToOverride": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SelectedColumnToOverride"
          }
        },
        "overrideColumnValues": {
          "type": "boolean"
        }
      },
      "required": [
        "overrideColumnValues",
        "selectedColumnsToOverride"
      ]
    },
    "SelectedColumnToOverride": {
      "type": "object",
      "properties": {
        "columnTitle": {
          "type": "string"
        },
        "defaultValue": {
          "type": "string"
        }
      },
      "required": [
        "columnTitle",
        "defaultValue"
      ]
    },
    "OptionalFilter": {
      "type": "object",
      "properties": {
        "filter": {
          "type": "string"
        },
        "label": {
          "type": "string"
        }
      },
      "required": [
        "filter",
        "label"
      ]
    },
    "ReportOptions": {
      "type": "object",
      "properties": {
        "splitAfter": {
          "type": "number"
        },
        "fontSize": {
          "type": "string"
        }
      }
    },
    "JSJoda.Instant": {
      "type": "object"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}