json_schema: {
      "$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"
  }