{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "additionalProperties": {
        "type": "object",
        "properties": {
            "description": {
                "type": [
                    "string",
                    "null"
                ]
            },
            "options": {
                "type": "object",
                "additionalProperties": {
                    "$ref": "#/definitions/option"
                }
            },
            "renamed": {
                "type": "object",
                "properties": {
                    "previous_name": {"type": "string"},
                    "version": {"type": "string"}
                }
            }
        },
        "required": [
            "description",
            "options"
        ],
        "additionalProperties": false
    },
    "definitions": {
        "option": {
            "type": "object",
            "properties": {
                "description": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Description of the option."
                },
                "version_added": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "When set to a version string, signals that this option has been added in the version specified."
                },
                "version_deprecated": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "When set to a version string, this option is deprecated as of this version, and will be removed in the future."
                },
                "deprecation_reason": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "The reason why this option is deprecated."
                },
                "type": {
                    "type": "string",
                    "enum": [
                        "string",
                        "boolean",
                        "integer",
                        "float"
                    ],
                    "description": "Type of the option - string, boolean, integer or float."
                },
                "example": {
                    "type": [
                        "string",
                        "null",
                        "number"
                    ],
                    "description": "Example value for the option."
                },
                "default": {
                    "type": [
                        "string",
                        "null",
                        "number"
                    ],
                    "description": "Default value for the option."
                },
                "sensitive": {
                    "type": "boolean",
                    "description": "When true, this option is sensitive and can be specified using AIRFLOW__{section}___{name}__SECRET or AIRFLOW__{section}___{name}_CMD environment variables. See: airflow.configuration.AirflowConfigParser.sensitive_config_values"
                },
                "is_template": {
                    "type": "boolean",
                    "description": "When true, the {VARS} have no special meaning there  - they won't be expanded with env vars/local/global variables.",
                    "default": false
                }
            },
            "required": [
                "description",
                "version_added",
                "type",
                "example",
                "default"
            ],
            "additional_properties": false
        }
    }
}
