{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "description": "Describes the header of the import",
    "type": "object",
    "required": [
        "expectedHeader",
        "fieldNames",
        "caseSensitive",
        "strict",
        "additionalColumns",
        "severity"
    ],
    "additionalProperties": false,
    "properties": {
        "expectedHeader": {
            "type": "array",
            "minItems": 1,
            "items": {
                "oneOf": [
                    {
                        "type": "string"
                    },
                    {
                        "type": "array",
                        "minItems": 1,
                        "items": {
                            "type": "string"
                        }
                    }
                ]
            },
            "_uniqueItems": true
        },
        "fieldNames": {
            "type": "array",
            "minItems": 1,
            "items": {
                "type": "string"
            },
            "_uniqueItems": true
        },
        "caseSensitive": {
            "type": "boolean"
        },
        "strict": {
            "$ref": "#/definitions/boolean"
        },
        "additionalColumns": {
            "$ref": "#/definitions/boolean"
        },
        "missingColumns": {
            "$ref": "#/definitions/boolean"
        },
        "mandatoryColumns": {
            "oneOf": [
                {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "array",
                                "minItems": 1,
                                "items": {
                                    "type": "string"
                                }
                            }
                        ]
                    },
                    "_uniqueItems": true
                },
                {
                    "type": "object",
                    "properties": {
                        "val": {
                            "type": "array",
                            "minItems": 1,
                            "items": {
                                "oneOf": [
                                    {
                                        "type": "string"
                                    },
                                    {
                                        "type": "array",
                                        "minItems": 1,
                                        "items": {
                                            "type": "string"
                                        }
                                    }
                                ]
                            },
                            "_uniqueItems": true
                        },
                        "severity": {
                            "$ref": "#/definitions/severity"
                        }
                    }
                }
            ]
        },
        "severity": {
            "$ref": "#/definitions/severity"
        }
    },
    "definitions": {
        "severity": {
            "type": "string",
            "enum": [
                "abort_file",
                "abort_scope",
                "skip_record",
                "skip_field"
            ]
        },
        "boolean": {
            "onOf": [
                {
                    "type": "boolean"
                },
                {
                    "type": "object",
                    "properties": {
                        "val": {
                            "type": "boolean"
                        },
                        "severity": {
                            "$ref": "#/definitions/severity"
                        }
                    }
                }
            ]
        }
    }
}