{
    "title": "Preset",
    "description": "Associates an icon, form fields, and other UI with a set of OSM tags",
    "type": "object",
    "properties": {
        "name": {
            "description": "The English name for the feature",
            "type": "string",
            "required": true
        },
        "geometry": {
            "description": "Valid geometry types for the feature",
            "type": "array",
            "minItems": 1,
            "uniqueItems": true,
            "items": {
                "type": "string",
                "enum": ["point", "vertex", "line", "area", "relation"]
            },
            "required": true
        },
        "tags": {
            "description": "Tags that must be present for the preset to match",
            "type": "object",
            "additionalProperties": {
                "type": "string"
            },
            "required": true
        },
        "addTags": {
            "description": "Tags that are added when changing to the preset (default is the same value as 'tags')",
            "type": "object",
            "additionalProperties": {
                "type": "string"
            }
        },
        "removeTags": {
            "description": "Tags that are removed when changing to another preset (default is the same value as 'tags')",
            "type": "object",
            "additionalProperties": {
                "type": "string"
            }
        },
        "fields": {
            "description": "Form fields that are displayed for the preset",
            "type": "array",
            "items": {
                "type": "string"
            }
        },
        "icon": {
            "description": "Name of preset icon which represents this preset",
            "type": "string"
        },
        "terms": {
            "description": "English synonyms or related terms",
            "type": "array",
            "items": {
                "type": "string"
            }
        },
        "searchable": {
            "description": "Whether or not the preset will be suggested via search",
            "type": "boolean",
            "default": true
        },
        "matchScore": {
            "description": "The quality score this preset will receive when being compared with other matches (higher is better)",
            "type": "number",
            "default": 1.0
        },
        "reference": {
            "description": "Taginfo documentation parameters (to be used when a preset manages multiple tags)",
            "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
        }
    },
    "additionalProperties": false
}
