{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "definitions": {
        "BaseFieldConfiguration": {
            "anyOf": [
                {
                    "$ref": "#/definitions/FieldConfigurationStringText"
                },
                {
                    "$ref": "#/definitions/FieldConfigurationStringSelect"
                },
                {
                    "$ref": "#/definitions/FieldConfigurationStringRadio"
                },
                {
                    "$ref": "#/definitions/FieldConfigurationNumberText"
                },
                {
                    "$ref": "#/definitions/FieldConfigurationNumberSelect"
                },
                {
                    "$ref": "#/definitions/FieldConfigurationNumberRadio"
                },
                {
                    "$ref": "#/definitions/FieldConfigurationBooleanSwitch"
                },
                {
                    "$ref": "#/definitions/FieldConfigurationBooleanCheckbox"
                },
                {
                    "$ref": "#/definitions/FieldConfigurationBooleanSelect"
                },
                {
                    "$ref": "#/definitions/FieldConfigurationBooleanRadio"
                },
                {
                    "$ref": "#/definitions/FieldConfigurationFile"
                },
                {
                    "$ref": "#/definitions/FieldConfigurationFiles"
                },
                {
                    "$ref": "#/definitions/FieldConfigurationHashIdSelect"
                }
            ]
        },
        "FieldConfigurationBooleanCheckbox": {
            "additionalProperties": false,
            "properties": {
                "hint": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/Translations"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "initialValue": {
                    "type": "boolean"
                },
                "inputType": {
                    "enum": [
                        "checkbox"
                    ],
                    "type": "string"
                },
                "key": {
                    "description": "key used to store the field value",
                    "pattern": "^[a-z][a-zA-Z\\d]*$",
                    "type": "string"
                },
                "name": {
                    "$ref": "#/definitions/StringOrTranslations",
                    "description": "name of the field to be shown in UI"
                },
                "showIf": {
                    "additionalProperties": false,
                    "description": "show this field in UI only if value of an earlier form field, identified by provided `key`, is\nequal to provided `value`",
                    "properties": {
                        "key": {
                            "type": "string"
                        },
                        "value": {
                            "type": [
                                "string",
                                "number",
                                "boolean"
                            ]
                        }
                    },
                    "required": [
                        "key",
                        "value"
                    ],
                    "type": "object"
                },
                "type": {
                    "enum": [
                        "boolean"
                    ],
                    "type": "string"
                }
            },
            "required": [
                "inputType",
                "key",
                "name",
                "type"
            ],
            "type": "object"
        },
        "FieldConfigurationBooleanRadio": {
            "additionalProperties": false,
            "properties": {
                "hint": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/Translations"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "initialValue": {
                    "type": "boolean"
                },
                "inputType": {
                    "enum": [
                        "radio"
                    ],
                    "type": "string"
                },
                "key": {
                    "description": "key used to store the field value",
                    "pattern": "^[a-z][a-zA-Z\\d]*$",
                    "type": "string"
                },
                "name": {
                    "$ref": "#/definitions/StringOrTranslations",
                    "description": "name of the field to be shown in UI"
                },
                "showIf": {
                    "additionalProperties": false,
                    "description": "show this field in UI only if value of an earlier form field, identified by provided `key`, is\nequal to provided `value`",
                    "properties": {
                        "key": {
                            "type": "string"
                        },
                        "value": {
                            "type": [
                                "string",
                                "number",
                                "boolean"
                            ]
                        }
                    },
                    "required": [
                        "key",
                        "value"
                    ],
                    "type": "object"
                },
                "type": {
                    "enum": [
                        "boolean"
                    ],
                    "type": "string"
                },
                "valueOptions": {
                    "items": {
                        "$ref": "#/definitions/ValueOption<boolean>"
                    },
                    "minItems": 1,
                    "type": "array"
                }
            },
            "required": [
                "inputType",
                "key",
                "name",
                "type",
                "valueOptions"
            ],
            "type": "object"
        },
        "FieldConfigurationBooleanSelect": {
            "additionalProperties": false,
            "properties": {
                "defaultValue": {
                    "type": "boolean"
                },
                "hint": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/Translations"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "inputType": {
                    "enum": [
                        "select"
                    ],
                    "type": "string"
                },
                "key": {
                    "description": "key used to store the field value",
                    "pattern": "^[a-z][a-zA-Z\\d]*$",
                    "type": "string"
                },
                "name": {
                    "$ref": "#/definitions/StringOrTranslations",
                    "description": "name of the field to be shown in UI"
                },
                "prefix": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/Translations"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "showIf": {
                    "additionalProperties": false,
                    "description": "show this field in UI only if value of an earlier form field, identified by provided `key`, is\nequal to provided `value`",
                    "properties": {
                        "key": {
                            "type": "string"
                        },
                        "value": {
                            "type": [
                                "string",
                                "number",
                                "boolean"
                            ]
                        }
                    },
                    "required": [
                        "key",
                        "value"
                    ],
                    "type": "object"
                },
                "suffix": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/Translations"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "type": {
                    "enum": [
                        "boolean"
                    ],
                    "type": "string"
                },
                "valueOptions": {
                    "items": {
                        "$ref": "#/definitions/ValueOption<boolean>"
                    },
                    "minItems": 1,
                    "type": "array"
                }
            },
            "required": [
                "inputType",
                "key",
                "name",
                "type",
                "valueOptions"
            ],
            "type": "object"
        },
        "FieldConfigurationBooleanSwitch": {
            "additionalProperties": false,
            "properties": {
                "hint": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/Translations"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "initialValue": {
                    "type": "boolean"
                },
                "inputType": {
                    "enum": [
                        "switch"
                    ],
                    "type": "string"
                },
                "key": {
                    "description": "key used to store the field value",
                    "pattern": "^[a-z][a-zA-Z\\d]*$",
                    "type": "string"
                },
                "name": {
                    "$ref": "#/definitions/StringOrTranslations",
                    "description": "name of the field to be shown in UI"
                },
                "showIf": {
                    "additionalProperties": false,
                    "description": "show this field in UI only if value of an earlier form field, identified by provided `key`, is\nequal to provided `value`",
                    "properties": {
                        "key": {
                            "type": "string"
                        },
                        "value": {
                            "type": [
                                "string",
                                "number",
                                "boolean"
                            ]
                        }
                    },
                    "required": [
                        "key",
                        "value"
                    ],
                    "type": "object"
                },
                "type": {
                    "enum": [
                        "boolean"
                    ],
                    "type": "string"
                }
            },
            "required": [
                "inputType",
                "key",
                "name",
                "type"
            ],
            "type": "object"
        },
        "FieldConfigurationFile": {
            "additionalProperties": false,
            "properties": {
                "hint": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/Translations"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "inputType": {
                    "enum": [
                        "file"
                    ],
                    "type": "string"
                },
                "key": {
                    "description": "key used to store the field value",
                    "pattern": "^[a-z][a-zA-Z\\d]*$",
                    "type": "string"
                },
                "name": {
                    "$ref": "#/definitions/StringOrTranslations",
                    "description": "name of the field to be shown in UI"
                },
                "showIf": {
                    "additionalProperties": false,
                    "description": "show this field in UI only if value of an earlier form field, identified by provided `key`, is\nequal to provided `value`",
                    "properties": {
                        "key": {
                            "type": "string"
                        },
                        "value": {
                            "type": [
                                "string",
                                "number",
                                "boolean"
                            ]
                        }
                    },
                    "required": [
                        "key",
                        "value"
                    ],
                    "type": "object"
                }
            },
            "required": [
                "inputType",
                "key",
                "name"
            ],
            "type": "object"
        },
        "FieldConfigurationFiles": {
            "additionalProperties": false,
            "properties": {
                "hint": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/Translations"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "inputType": {
                    "enum": [
                        "files"
                    ],
                    "type": "string"
                },
                "key": {
                    "description": "key used to store the field value",
                    "pattern": "^[a-z][a-zA-Z\\d]*$",
                    "type": "string"
                },
                "name": {
                    "$ref": "#/definitions/StringOrTranslations",
                    "description": "name of the field to be shown in UI"
                },
                "showIf": {
                    "additionalProperties": false,
                    "description": "show this field in UI only if value of an earlier form field, identified by provided `key`, is\nequal to provided `value`",
                    "properties": {
                        "key": {
                            "type": "string"
                        },
                        "value": {
                            "type": [
                                "string",
                                "number",
                                "boolean"
                            ]
                        }
                    },
                    "required": [
                        "key",
                        "value"
                    ],
                    "type": "object"
                }
            },
            "required": [
                "inputType",
                "key",
                "name"
            ],
            "type": "object"
        },
        "FieldConfigurationHashIdSelect": {
            "additionalProperties": false,
            "properties": {
                "hint": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/Translations"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "inputType": {
                    "enum": [
                        "pinGroupHashId",
                        "pinHashId"
                    ],
                    "type": "string"
                },
                "key": {
                    "description": "key used to store the field value",
                    "pattern": "^[a-z][a-zA-Z\\d]*$",
                    "type": "string"
                },
                "name": {
                    "$ref": "#/definitions/StringOrTranslations",
                    "description": "name of the field to be shown in UI"
                },
                "showIf": {
                    "additionalProperties": false,
                    "description": "show this field in UI only if value of an earlier form field, identified by provided `key`, is\nequal to provided `value`",
                    "properties": {
                        "key": {
                            "type": "string"
                        },
                        "value": {
                            "type": [
                                "string",
                                "number",
                                "boolean"
                            ]
                        }
                    },
                    "required": [
                        "key",
                        "value"
                    ],
                    "type": "object"
                },
                "type": {
                    "enum": [
                        "hashId"
                    ],
                    "type": "string"
                }
            },
            "required": [
                "inputType",
                "key",
                "name",
                "type"
            ],
            "type": "object"
        },
        "FieldConfigurationNumberRadio": {
            "additionalProperties": false,
            "properties": {
                "hint": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/Translations"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "initialValue": {
                    "type": "number"
                },
                "inputType": {
                    "enum": [
                        "radio"
                    ],
                    "type": "string"
                },
                "key": {
                    "description": "key used to store the field value",
                    "pattern": "^[a-z][a-zA-Z\\d]*$",
                    "type": "string"
                },
                "name": {
                    "$ref": "#/definitions/StringOrTranslations",
                    "description": "name of the field to be shown in UI"
                },
                "showIf": {
                    "additionalProperties": false,
                    "description": "show this field in UI only if value of an earlier form field, identified by provided `key`, is\nequal to provided `value`",
                    "properties": {
                        "key": {
                            "type": "string"
                        },
                        "value": {
                            "type": [
                                "string",
                                "number",
                                "boolean"
                            ]
                        }
                    },
                    "required": [
                        "key",
                        "value"
                    ],
                    "type": "object"
                },
                "type": {
                    "enum": [
                        "integer",
                        "number"
                    ],
                    "type": "string"
                },
                "valueOptions": {
                    "items": {
                        "$ref": "#/definitions/ValueOption<number>"
                    },
                    "minItems": 1,
                    "type": "array"
                }
            },
            "required": [
                "inputType",
                "key",
                "name",
                "type",
                "valueOptions"
            ],
            "type": "object"
        },
        "FieldConfigurationNumberSelect": {
            "additionalProperties": false,
            "properties": {
                "defaultValue": {
                    "type": "number"
                },
                "hint": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/Translations"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "inputType": {
                    "enum": [
                        "select"
                    ],
                    "type": "string"
                },
                "key": {
                    "description": "key used to store the field value",
                    "pattern": "^[a-z][a-zA-Z\\d]*$",
                    "type": "string"
                },
                "name": {
                    "$ref": "#/definitions/StringOrTranslations",
                    "description": "name of the field to be shown in UI"
                },
                "prefix": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/Translations"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "showIf": {
                    "additionalProperties": false,
                    "description": "show this field in UI only if value of an earlier form field, identified by provided `key`, is\nequal to provided `value`",
                    "properties": {
                        "key": {
                            "type": "string"
                        },
                        "value": {
                            "type": [
                                "string",
                                "number",
                                "boolean"
                            ]
                        }
                    },
                    "required": [
                        "key",
                        "value"
                    ],
                    "type": "object"
                },
                "suffix": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/Translations"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "type": {
                    "enum": [
                        "integer",
                        "number"
                    ],
                    "type": "string"
                },
                "valueOptions": {
                    "items": {
                        "$ref": "#/definitions/ValueOption<number>"
                    },
                    "minItems": 1,
                    "type": "array"
                }
            },
            "required": [
                "inputType",
                "key",
                "name",
                "type",
                "valueOptions"
            ],
            "type": "object"
        },
        "FieldConfigurationNumberText": {
            "additionalProperties": false,
            "properties": {
                "defaultValue": {
                    "type": "number"
                },
                "hint": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/Translations"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "inputType": {
                    "enum": [
                        "text"
                    ],
                    "type": "string"
                },
                "key": {
                    "description": "key used to store the field value",
                    "pattern": "^[a-z][a-zA-Z\\d]*$",
                    "type": "string"
                },
                "lowerbound": {
                    "type": "number"
                },
                "name": {
                    "$ref": "#/definitions/StringOrTranslations",
                    "description": "name of the field to be shown in UI"
                },
                "prefix": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/Translations"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "showIf": {
                    "additionalProperties": false,
                    "description": "show this field in UI only if value of an earlier form field, identified by provided `key`, is\nequal to provided `value`",
                    "properties": {
                        "key": {
                            "type": "string"
                        },
                        "value": {
                            "type": [
                                "string",
                                "number",
                                "boolean"
                            ]
                        }
                    },
                    "required": [
                        "key",
                        "value"
                    ],
                    "type": "object"
                },
                "suffix": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/Translations"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "type": {
                    "enum": [
                        "integer",
                        "number"
                    ],
                    "type": "string"
                },
                "upperbound": {
                    "type": "number"
                }
            },
            "required": [
                "inputType",
                "key",
                "name",
                "type"
            ],
            "type": "object"
        },
        "FieldConfigurationStringRadio": {
            "additionalProperties": false,
            "properties": {
                "hint": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/Translations"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "initialValue": {
                    "type": "string"
                },
                "inputType": {
                    "enum": [
                        "radio"
                    ],
                    "type": "string"
                },
                "key": {
                    "description": "key used to store the field value",
                    "pattern": "^[a-z][a-zA-Z\\d]*$",
                    "type": "string"
                },
                "name": {
                    "$ref": "#/definitions/StringOrTranslations",
                    "description": "name of the field to be shown in UI"
                },
                "showIf": {
                    "additionalProperties": false,
                    "description": "show this field in UI only if value of an earlier form field, identified by provided `key`, is\nequal to provided `value`",
                    "properties": {
                        "key": {
                            "type": "string"
                        },
                        "value": {
                            "type": [
                                "string",
                                "number",
                                "boolean"
                            ]
                        }
                    },
                    "required": [
                        "key",
                        "value"
                    ],
                    "type": "object"
                },
                "type": {
                    "enum": [
                        "string"
                    ],
                    "type": "string"
                },
                "valueOptions": {
                    "items": {
                        "$ref": "#/definitions/ValueOption<string>"
                    },
                    "minItems": 1,
                    "type": "array"
                }
            },
            "required": [
                "inputType",
                "key",
                "name",
                "type",
                "valueOptions"
            ],
            "type": "object"
        },
        "FieldConfigurationStringSelect": {
            "additionalProperties": false,
            "properties": {
                "defaultValue": {
                    "type": "string"
                },
                "hint": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/Translations"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "inputType": {
                    "enum": [
                        "select"
                    ],
                    "type": "string"
                },
                "key": {
                    "description": "key used to store the field value",
                    "pattern": "^[a-z][a-zA-Z\\d]*$",
                    "type": "string"
                },
                "name": {
                    "$ref": "#/definitions/StringOrTranslations",
                    "description": "name of the field to be shown in UI"
                },
                "prefix": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/Translations"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "showIf": {
                    "additionalProperties": false,
                    "description": "show this field in UI only if value of an earlier form field, identified by provided `key`, is\nequal to provided `value`",
                    "properties": {
                        "key": {
                            "type": "string"
                        },
                        "value": {
                            "type": [
                                "string",
                                "number",
                                "boolean"
                            ]
                        }
                    },
                    "required": [
                        "key",
                        "value"
                    ],
                    "type": "object"
                },
                "suffix": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/Translations"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "type": {
                    "enum": [
                        "string"
                    ],
                    "type": "string"
                },
                "valueOptions": {
                    "items": {
                        "$ref": "#/definitions/ValueOption<string>"
                    },
                    "minItems": 1,
                    "type": "array"
                }
            },
            "required": [
                "inputType",
                "key",
                "name",
                "type",
                "valueOptions"
            ],
            "type": "object"
        },
        "FieldConfigurationStringText": {
            "additionalProperties": false,
            "properties": {
                "defaultValue": {
                    "type": "string"
                },
                "hint": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/Translations"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "inputType": {
                    "enum": [
                        "text",
                        "textarea"
                    ],
                    "type": "string"
                },
                "key": {
                    "description": "key used to store the field value",
                    "pattern": "^[a-z][a-zA-Z\\d]*$",
                    "type": "string"
                },
                "name": {
                    "$ref": "#/definitions/StringOrTranslations",
                    "description": "name of the field to be shown in UI"
                },
                "prefix": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/Translations"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "regex": {
                    "type": "string"
                },
                "showIf": {
                    "additionalProperties": false,
                    "description": "show this field in UI only if value of an earlier form field, identified by provided `key`, is\nequal to provided `value`",
                    "properties": {
                        "key": {
                            "type": "string"
                        },
                        "value": {
                            "type": [
                                "string",
                                "number",
                                "boolean"
                            ]
                        }
                    },
                    "required": [
                        "key",
                        "value"
                    ],
                    "type": "object"
                },
                "suffix": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/Translations"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "type": {
                    "enum": [
                        "string"
                    ],
                    "type": "string"
                }
            },
            "required": [
                "inputType",
                "key",
                "name",
                "type"
            ],
            "type": "object"
        },
        "StringOrTranslations": {
            "anyOf": [
                {
                    "$ref": "#/definitions/Translations"
                },
                {
                    "type": "string"
                }
            ]
        },
        "Translations": {
            "additionalProperties": false,
            "properties": {
                "en": {
                    "type": "string"
                },
                "nl": {
                    "type": "string"
                }
            },
            "required": [
                "en"
            ],
            "type": "object"
        },
        "ValueOption<boolean>": {
            "additionalProperties": false,
            "properties": {
                "text": {
                    "$ref": "#/definitions/StringOrTranslations"
                },
                "value": {
                    "type": "boolean"
                }
            },
            "required": [
                "text",
                "value"
            ],
            "type": "object"
        },
        "ValueOption<number>": {
            "additionalProperties": false,
            "properties": {
                "text": {
                    "$ref": "#/definitions/StringOrTranslations"
                },
                "value": {
                    "type": "number"
                }
            },
            "required": [
                "text",
                "value"
            ],
            "type": "object"
        },
        "ValueOption<string>": {
            "additionalProperties": false,
            "properties": {
                "text": {
                    "$ref": "#/definitions/StringOrTranslations"
                },
                "value": {
                    "type": "string"
                }
            },
            "required": [
                "text",
                "value"
            ],
            "type": "object"
        }
    },
    "items": {
        "$ref": "#/definitions/BaseFieldConfiguration"
    },
    "type": "array"
}

