{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "additionalProperties": false,
    "definitions": {
        "image": {
            "additionalProperties": false,
            "properties": {
                "platform": {
                    "$ref": "#/definitions/platform"
                },
                "purpose": {
                    "default": "any",
                    "enum": [
                        "any",
                        "any badge",
                        "badge",
                        "badge any",
                        "maskable"
                    ],
                    "type": "string"
                },
                "sizes": {
                    "description": "The sizes member is a string consisting of an unordered set of unique space-separated tokens which are ASCII case-insensitive that represents the dimensions of an image for visual media.",
                    "oneOf": [
                        {
                            "pattern": "^[0-9 x]+$",
                            "type": "string"
                        },
                        {
                            "enum": [
                                "any"
                            ]
                        }
                    ]
                },
                "src": {
                    "description": "The src member of an image is a URL from which a user agent can fetch the icon's data.",
                    "type": "string"
                },
                "type": {
                    "description": "The type member of an image is a hint as to the media type of the image.",
                    "pattern": "^[\\sa-z0-9\\-+;\\.=\\/]+$",
                    "type": "string"
                }
            },
            "required": [
                "src"
            ],
            "type": "object"
        },
        "platform": {
            "description": "The platform it is associated to.",
            "enum": [
                "itunes",
                "play",
                "windows"
            ]
        },
        "related_application": {
            "additionalProperties": false,
            "properties": {
                "fingerprints": {
                    "description": "An array of fingerprint objects used for verifying the application.",
                    "items": {
                        "additionalProperties": false,
                        "properties": {
                            "type": {
                                "type": "string"
                            },
                            "value": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "type",
                            "value"
                        ],
                        "type": "object"
                    },
                    "type": "array"
                },
                "id": {
                    "description": "Information additional to the URL or instead of the URL, depending on the platform.",
                    "type": "string"
                },
                "min_version": {
                    "description": "Information about the minimum version of an application related to this web app.",
                    "type": "string"
                },
                "platform": {
                    "$ref": "#/definitions/platform"
                },
                "url": {
                    "description": "The URL where the application can be found.",
                    "format": "uri",
                    "type": "string"
                }
            },
            "oneOf": [
                {
                    "required": [
                        "id",
                        "platform"
                    ]
                },
                {
                    "required": [
                        "id",
                        "platform",
                        "url"
                    ]
                },
                {
                    "required": [
                        "platform",
                        "url"
                    ]
                }
            ],
            "type": "object"
        }
    },
    "patternProperties": {
        "(gcm)_.*": {
            "description": "Vendor prefixes for known proprietary extensions"
        }
    },
    "properties": {
        "background_color": {
            "description": "The background_color member describes the expected background color of the web application.",
            "type": "string"
        },
        "categories": {
            "description": "Describes the expected application categories to which the web application belongs.",
            "items": {
                "enum": [
                    "books",
                    "business",
                    "education",
                    "entertainment",
                    "finance",
                    "fitness",
                    "food",
                    "games",
                    "government",
                    "health",
                    "kids",
                    "lifestyle",
                    "magazines",
                    "medical",
                    "music",
                    "navigation",
                    "news",
                    "personalization",
                    "photo",
                    "politics",
                    "productivity",
                    "security",
                    "shopping",
                    "social",
                    "sports",
                    "travel",
                    "utilities",
                    "weather"
                ]
            },
            "type": "array"
        },
        "description": {
            "description": "Description of the purpose of the web application",
            "type": "string"
        },
        "dir": {
            "default": "auto",
            "description": "The base direction of the manifest.",
            "enum": [
                "auto",
                "ltr",
                "rtl"
            ]
        },
        "display": {
            "default": "browser",
            "description": "The item represents the developer's preferred display mode for the web application.",
            "enum": [
                "browser",
                "fullscreen",
                "minimal-ui",
                "standalone"
            ]
        },
        "iarc_rating_id": {
            "description": "Represents an ID value of the IARC rating of the web application. It is intended to be used to determine which ages the web application is appropriate for.",
            "type": "string"
        },
        "icons": {
            "description": "The icons member is an array of icon objects that can serve as iconic representations of the web application in various contexts.",
            "items": {
                "$ref": "#/definitions/image"
            },
            "type": "array"
        },
        "lang": {
            "description": "The primary language for the values of the manifest.",
            "type": "string"
        },
        "name": {
            "description": "The name of the web application.",
            "type": "string"
        },
        "orientation": {
            "description": "The orientation member is a string that serves as the default orientation for all  top-level browsing contexts of the web application.",
            "enum": [
                "any",
                "landscape",
                "landscape-primary",
                "landscape-secondary",
                "natural",
                "portrait",
                "portrait-primary",
                "portrait-secondary"
            ]
        },
        "prefer_related_applications": {
            "default": false,
            "description": "Boolean value that is used as a hint for the user agent to say that related applications should be preferred over the web application.",
            "type": "boolean"
        },
        "related_applications": {
            "description": "Array of application accessible to the underlying application platform that has a relationship with the web application.",
            "items": {
                "$ref": "#/definitions/related_application"
            },
            "type": "array"
        },
        "scope": {
            "description": "A string that represents the navigation scope of this web application's application context.",
            "type": "string"
        },
        "screenshots": {
            "description": "The screenshots member is an array of image objects represent the web application in common usage scenarios.",
            "items": {
                "$ref": "#/definitions/image"
            },
            "type": "array"
        },
        "serviceworker": {
            "additionalProperties": false,
            "description": "The service worker of the web application.",
            "properties": {
                "scope": {
                    "description": "The service worker's associated scope URL.",
                    "type": "string"
                },
                "src": {
                    "description": "URL representing a service worker.",
                    "type": "string"
                },
                "type": {
                    "default": "classic",
                    "description": "The service worker's worker type.",
                    "enum": [
                        "classic",
                        "module"
                    ]
                },
                "update_via_cache": {
                    "default": "imports",
                    "description": "Determines whether the user agent cache should be used when fetching the service worker.",
                    "enum": [
                        "all",
                        "imports",
                        "none"
                    ]
                }
            },
            "type": "object"
        },
        "short_name": {
            "description": "A string that represents a short version of the name of the web application.",
            "type": "string"
        },
        "start_url": {
            "description": "Represents the URL that the developer would prefer the user agent load when the user launches the web application.",
            "type": "string"
        },
        "theme_color": {
            "description": "The theme_color member serves as the default theme color for an application context.",
            "type": "string"
        }
    },
    "title": "JSON schema for Web Application manifest files",
    "type": "object"
}