{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "definitions": {
        "domain": {
            "type": "string",
            "description": "A complete domain name, used by this app (as installed by this tenant), with optional wildcard, e.g. https://*.myapp.com. If the wildcard * is used, it must be followed by a dot."
        }
    },
    "properties": {
        "landingPage": {
            "type": "string",
            "format": "uri",
            "description": "a (probably tenant-specific) url of the landing page for this app. The landing page is where the user is led to after clicking [open] in the UI."
        },
        "settingsPage": {
            "type": "string",
            "format": "uri",
            "description": "a url of a settings page for this app. The setup page is where the user is led to after clicking [settings] in the UI. After setup is complete the app should redirect the user back to the passed in relayPage."
        },
        "setupRequired": {
            "type": "boolean",
            "description": "true if the app is unusable or degraded due to lack of some setup. When true, this causes the setup required indicator to appear next to the app in the UI. When true, the app should provide a value for settingsPage."
        },
        "domainsUsed": {
            "type": "array",
            "description": "An array of domains that your app uses. The tenant's IT team can view this, rolled up with all other installed apps, in order to add to Trusted Sites in bulk.",
            "items": {
                "$ref": "#/definitions/domain"
            }
        }
    },
    "additionalProperties": false,
    "required": [
        "setupRequired"
    ]
}