# `oidcc_logout`
[🔗](https://github.com/erlef/oidcc/blob/ee3434ddec86c14471af8f8a8f159971e654da3c
/src/oidcc_logout.erl#L4)

Logout from the OpenID Provider.

# `error`
*since 3.0.0* 

```elixir
-type error() :: end_session_endpoint_not_supported.
```

# `initiate_url_opts`
*since 3.0.0* 

```elixir
-type initiate_url_opts() ::
          #{logout_hint => binary(),
            post_logout_redirect_uri => uri_string:uri_string(),
            state => binary(),
            ui_locales => binary(),
            extra_query_params => oidcc_http_util:query_params()}.
```

Configure Relaying Party initiated Logout URI.

See https://openid.net/specs/openid-connect-rpinitiated-1_0.html#RPLogout.

## Parameters

* `logout_hint` - logout_hint to pass to the provider
* `post_logout_redirect_uri` - Post Logout Redirect URI to pass to the provider
* `state` - state to pass to the provider
* `ui_locales` - UI locales to pass to the provider
* `extra_query_params` - extra query params to add to the URI

# `initiate_url`
*since 3.0.0* 

```elixir
-spec initiate_url(Token, ClientContext, Opts) -> {ok, uri_string:uri_string()} | {error, error()}
                      when
                          Token :: IdToken | oidcc_token:t() | undefined,
                          IdToken :: binary(),
                          ClientContext :: oidcc_client_context:t(),
                          Opts :: initiate_url_opts().
```

Initiate URI for Relaying Party initiated Logout.

See https://openid.net/specs/openid-connect-rpinitiated-1_0.html#RPLogout.

For a high level interface using `m:oidcc_provider_configuration_worker`
see `oidcc:initiate_logout_url/4`.

## Examples

```erlang
{ok, ClientContext} = oidcc_client_context:from_configuration_worker(
  provider_name,
  <<"client_id">>,
  unauthenticated
),

%% Get `Token` from `oidcc_token`

{ok, RedirectUri} =
  oidcc_logout:initiate_url(
    Token,
    ClientContext,
    #{post_logout_redirect_uri: <<"https://my.server/return">}
),

%% RedirectUri = https://my.provider/logout?id_token_hint=IDToken&client_id=ClientId&post_logout_redirect_uri=https%3A%2F%2Fmy.server%2Freturn
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
