{
    "title": "Field",
    "description": "A reusable form element for presets",
    "type": "object",
    "properties": {
        "key": {
            "description": "Tag key whose value is to be displayed",
            "type": "string"
        },
        "keys": {
            "description": "Tag keys whose value is to be displayed",
            "type": "array",
            "items": {
                "type": "string"
            }
        },
        "reference": {
            "description": "Taginfo documentation parameters (to be used when a field manages multiple tags)",
            "type": [
                {
                    "type": "object",
                    "properties": {
                        "key": {
                            "description": "For documentation of a key",
                            "type": "string",
                            "required": true
                        },
                        "value": {
                            "description": "For documentation of a tag (key and value)",
                            "type": "string"
                        }
                    },
                    "additionalProperties": false
                },
                {
                    "type": "object",
                    "properties": {
                        "rtype": {
                            "description": "For documentation of a relation type",
                            "type": "string"
                        }
                    },
                    "additionalProperties": false
                }
            ]
        },
        "type": {
            "description": "Type of field",
            "type": "string",
            "enum": [
                "access",
                "address",
                "check",
                "combo",
                "cycleway",
                "defaultCheck",
                "email",
                "lanes",
                "localized",
                "maxspeed",
                "multiCombo",
                "networkCombo",
                "number",
                "onewayCheck",
                "radio",
                "restrictions",
                "semiCombo",
                "structureRadio",
                "tel",
                "textarea",
                "text",
                "typeCombo",
                "url",
                "wikipedia"
            ],
            "required": true
        },
        "label": {
            "description": "English label for the field caption",
            "type": "string",
            "required": true
        },
        "geometry": {
            "description": "If specified, only show the field for this kind of geometry",
            "type": "string"
        },
        "default": {
            "description": "The default value for this field",
            "type": "string"
        },
        "options": {
            "description": "List of untranslatable string suggestions (combo type fields)",
            "type": "array",
            "items": {
                "type": "string"
            }
        },
        "universal": {
            "description": "If true, this field will appear in the Add Field list for all presets",
            "type": "boolean",
            "default": false
        },
        "icon": {
            "type": "string"
        },
        "placeholder": {
            "description": "Placeholder text for this field",
            "type": "string"
        },
        "strings": {
            "description": "Translatable strings options (combo type fields)",
            "type": "object"
        },
        "snake_case": {
            "description": "If true, replace spaces with underscores in the tag value (combo type fields)",
            "type": "boolean",
            "default": true
        },
        "caseSensitive": {
            "description": "If true, allow case sensitive field values (combo type fields)",
            "type": "boolean",
            "default": false
        }
    },
    "additionalProperties": false
}
