{
    "$schema": "http://json-schema.org/draft-04/schema",
    "additionalProperties": false,
    "anyOf": [
        {
            "required": [
                "id",
                "layerType",
                "title",
                "url"
            ]
        },
        {
            "required": [
                "id",
                "layerType",
                "path",
                "title"
            ]
        }
    ],
    "description": "Keyhole Markup Language (KML) is an XML-based format for storing geographic data and associated content and is an official Open Geospatial Consortium (OGC) standard. KML is a common format for sharing geographic data with non-GIS users as it can be easily delivered on the Internet.",
    "esriDocumentation": {
        "examples": [
            {
                "code": {
                    "operationalLayers": [
                        {
                            "id": "87a5bcad920440f293a36ff3fea1a4f8",
                            "layerType": "KML",
                            "path": "file:../commondata/kml/paris.kml",
                            "title": "Paris",
                            "visibility": true
                        }
                    ]
                },
                "title": "KML Layer"
            }
        ]
    },
    "properties": {
        "id": {
            "description": "A unique identifying string for the layer.",
            "type": "string"
        },
        "itemId": {
            "description": "A string containing the item ID of the service if it's registered on ArcGIS Online or your organization's portal.",
            "type": "string"
        },
        "layerType": {
            "description": "String indicating the layer type.",
            "enum": [
                "KML"
            ],
            "type": "string"
        },
        "listMode": {
            "description": "To show or hide the sublayer in the layer list.",
            "enum": [
                "hide",
                "show"
            ],
            "type": "string"
        },
        "maxScale": {
            "description": "A number representing the maximum scale at which the layer will be visible. The number is the scale's denominator.",
            "minimum": 0,
            "type": "number"
        },
        "minScale": {
            "description": "A number representing the minimum scale at which the layer will be visible. The number is the scale's denominator.",
            "minimum": 0,
            "type": "number"
        },
        "opacity": {
            "default": 1,
            "description": "The degree of transparency applied to the layer on the client side, where 0 is full transparency and 1 is no transparency.",
            "maximum": 1,
            "minimum": 0,
            "type": "number"
        },
        "path": {
            "description": "For offline data, a path to a KML file. A URI format is used, starting with `file:` followed by a file system path with an extension of `.kml` or `.kmz`.  A relative path must be from the file which defines the layer. For example `file:../commondata/kml/paris.kml`.",
            "pattern": "^file:.+\\.km[lz]$",
            "type": "string"
        },
        "refreshInterval": {
            "description": "Refresh interval of the layer in minutes. Non-zero value indicates automatic layer refresh at the specified interval. Value of 0 indicates auto refresh is not enabled.",
            "type": "number"
        },
        "showLegend": {
            "default": true,
            "description": "Indicates whether to allow scene authors the ability to control what layers should be shown in a client's legend.",
            "type": "boolean"
        },
        "title": {
            "description": "A user-friendly string title for the layer that can be used in a table of contents.",
            "type": "string"
        },
        "url": {
            "_format": "uri",
            "description": "The URL to the layer.",
            "type": "string"
        },
        "visibility": {
            "default": true,
            "description": "Boolean property determining whether the layer is initially visible in the web scene.",
            "type": "boolean"
        },
        "visibleFolders": {
            "description": "Array of numeric IDs of folders that will be made visible.",
            "items": {
                "type": "integer"
            },
            "type": "array",
            "_uniqueItems": true
        }
    },
    "title": "KML Layer (KML)",
    "type": "object"
}