{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "additionalProperties": false,
    "id": "http://localhost:3000/schemas/authorize-request.json#",
    "properties": {
        "client_id": {
            "description": "The OAuth 2.0 client identifier, obtained at registration.",
            "type": "string"
        },
        "code_challenge": {
            "description": "The code challenge, computed from the code verifier using a transform",
            "type": "string"
        },
        "code_challenge_method": {
            "description": "The code transform, defaults to plain if not specified. The supported methods are S256 (recommended) and plain.",
            "type": "string"
        },
        "nonce": {
            "description": "Opaque value, e.g. a random string, used to associate a client session with an ID Token, and to mitigate replay attacks. Use of this parameter is required in the implicit flow.",
            "type": "string"
        },
        "redirect_uri": {
            "_format": "uri",
            "description": "The redirection URI to which the response will be sent. It must exactly match one of the registered redirection URIs for the client.",
            "type": "string"
        },
        "response_type": {
            "description": "The OAuth 2.0 response type. For clients using the OAuth code flow it should be set to code. For clients using the implicit flow it should be set to id_token or token id_token.",
            "enum": [
                "code",
                "token",
                "id_token"
            ],
            "type": "string"
        },
        "scope": {
            "description": "Space separated list of the requested scope values. Must include at least the openid value.",
            "items": {
                "enum": [
                    "openid",
                    "profile",
                    "email",
                    "address",
                    "phone"
                ],
                "type": "string"
            },
            "type": "array"
        },
        "state": {
            "description": "Opaque value, e.g. a random string, used to maintain state between the request and the callback. Use of this parameter is not required but highly recommended.",
            "type": "string"
        }
    },
    "required": [
        "response_type",
        "scope",
        "client_id",
        "redirect_uri"
    ],
    "title": "introspect",
    "type": "object"
}