#### [Abblix\.Oidc\.Server\.Mvc](https://www.abblix.com/en/docs/api/abblix-oidc-server-mvc 'index')
### [Abblix\.Oidc\.Server\.Mvc\.Model](https://www.abblix.com/en/docs/api/abblix-oidc-server-mvc/Abblix.Oidc.Server.Mvc.Model 'Abblix\.Oidc\.Server\.Mvc\.Model')

## EndSessionRequest Class

The transport\-bound counterpart of [EndSessionRequest](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Model.EndSessionRequest 'Abblix\.Oidc\.Server\.Model\.EndSessionRequest') for the RP\-initiated
logout endpoint, reachable via GET and POST\. The bound properties, model binders resolved from
the core wire\-format markers and the projection back onto the core model are generated from
the core type; the cross\-property validation below stays hand\-written because it spans
several parameters at once\.

```csharp
public record EndSessionRequest : System.ComponentModel.DataAnnotations.IValidatableObject, System.IEquatable<Abblix.Oidc.Server.Mvc.Model.EndSessionRequest>
```

Inheritance [System\.Object](https://learn.microsoft.com/en-us/dotnet/api/system.object 'System\.Object') → EndSessionRequest

Implements [System\.ComponentModel\.DataAnnotations\.IValidatableObject](https://learn.microsoft.com/en-us/dotnet/api/system.componentmodel.dataannotations.ivalidatableobject 'System\.ComponentModel\.DataAnnotations\.IValidatableObject'), [System\.IEquatable&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.iequatable-1 'System\.IEquatable\`1')[EndSessionRequest](https://www.abblix.com/en/docs/api/abblix-oidc-server-mvc/Abblix.Oidc.Server.Mvc.Model.EndSessionRequest 'Abblix\.Oidc\.Server\.Mvc\.Model\.EndSessionRequest')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.iequatable-1 'System\.IEquatable\`1')
### Properties

## EndSessionRequest\.ClientId Property {#Abblix.Oidc.Server.Mvc.Model.EndSessionRequest.ClientId}

The `client_id` of the relying party initiating the logout, allowing the OP to validate
[PostLogoutRedirectUri](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Model.EndSessionRequest#Abblix.Oidc.Server.Model.EndSessionRequest.PostLogoutRedirectUri 'Abblix\.Oidc\.Server\.Model\.EndSessionRequest\.PostLogoutRedirectUri') against the URIs registered for that client\.

```csharp
public string? ClientId { get; init; }
```

#### Property Value
[System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String')

## EndSessionRequest\.Confirmed Property {#Abblix.Oidc.Server.Mvc.Model.EndSessionRequest.Confirmed}

Carries the End\-User's answer to the logout confirmation prompt that the OP is required to display
per OIDC RP\-Initiated Logout 1\.0 §2 \("the OP SHOULD ask the End\-User whether to log out \.\.\. MUST ask \.\.\.
if an id\_token\_hint was not provided"\)\. When `true`, the user has explicitly approved logout in
the interactive UI; when `null` or `false`, the request is treated as not\-yet\-confirmed and
the OP renders the confirmation screen\. Encoded via the [Confirmed](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Model.EndSessionRequest.Parameters#Abblix.Oidc.Server.Model.EndSessionRequest.Parameters.Confirmed 'Abblix\.Oidc\.Server\.Model\.EndSessionRequest\.Parameters\.Confirmed') form field
rather than a wire parameter defined by the specification\.

```csharp
public System.Nullable<bool> Confirmed { get; init; }
```

#### Property Value
[System\.Nullable&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.nullable-1 'System\.Nullable\`1')[System\.Boolean](https://learn.microsoft.com/en-us/dotnet/api/system.boolean 'System\.Boolean')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.nullable-1 'System\.Nullable\`1')

## EndSessionRequest\.IdTokenHint Property {#Abblix.Oidc.Server.Mvc.Model.EndSessionRequest.IdTokenHint}

The `id_token_hint`: a previously issued ID Token whose subject identifies the end\-user whose
session should be terminated\. Recommended by RP\-Initiated Logout to authenticate the logout request
and to scope which session is logged out\.

```csharp
public string? IdTokenHint { get; init; }
```

#### Property Value
[System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String')

## EndSessionRequest\.LogoutHint Property {#Abblix.Oidc.Server.Mvc.Model.EndSessionRequest.LogoutHint}

The `logout_hint`: an opaque hint about the end\-user's login identifier \(such as username or email\)
the OpenID Provider may use to identify the session to terminate when an ID Token hint is unavailable\.

```csharp
public string? LogoutHint { get; init; }
```

#### Property Value
[System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String')

## EndSessionRequest\.PostLogoutRedirectUri Property {#Abblix.Oidc.Server.Mvc.Model.EndSessionRequest.PostLogoutRedirectUri}

The `post_logout_redirect_uri`: an absolute URI, pre\-registered with the OP, to which the
user agent is redirected once logout completes\.

```csharp
public System.Uri? PostLogoutRedirectUri { get; init; }
```

#### Property Value
[System\.Uri](https://learn.microsoft.com/en-us/dotnet/api/system.uri 'System\.Uri')

## EndSessionRequest\.State Property {#Abblix.Oidc.Server.Mvc.Model.EndSessionRequest.State}

The opaque `state` value returned unchanged when the user agent is sent back to
[PostLogoutRedirectUri](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Model.EndSessionRequest#Abblix.Oidc.Server.Model.EndSessionRequest.PostLogoutRedirectUri 'Abblix\.Oidc\.Server\.Model\.EndSessionRequest\.PostLogoutRedirectUri'), used by the relying party to correlate request and callback\.

```csharp
public string? State { get; init; }
```

#### Property Value
[System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String')

## EndSessionRequest\.UiLocales Property {#Abblix.Oidc.Server.Mvc.Model.EndSessionRequest.UiLocales}

The `ui_locales` preference list of BCP 47 language tags hinting how the logout confirmation
page should be localized\.

```csharp
public System.Collections.Generic.IEnumerable<System.Globalization.CultureInfo>? UiLocales { get; init; }
```

#### Property Value
[System\.Collections\.Generic\.IEnumerable&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ienumerable-1 'System\.Collections\.Generic\.IEnumerable\`1')[System\.Globalization\.CultureInfo](https://learn.microsoft.com/en-us/dotnet/api/system.globalization.cultureinfo 'System\.Globalization\.CultureInfo')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ienumerable-1 'System\.Collections\.Generic\.IEnumerable\`1')
### Methods

## EndSessionRequest\.Map\(\) Method {#Abblix.Oidc.Server.Mvc.Model.EndSessionRequest.Map()}

Projects the transport\-bound model onto its core counterpart, copying every bound
parameter so the core pipeline operates on a transport\-agnostic shape\.

```csharp
public Abblix.Oidc.Server.Model.EndSessionRequest Map();
```

#### Returns
[EndSessionRequest](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Model.EndSessionRequest 'Abblix\.Oidc\.Server\.Model\.EndSessionRequest')

## EndSessionRequest\.Validate\(ValidationContext\) Method {#Abblix.Oidc.Server.Mvc.Model.EndSessionRequest.Validate(System.ComponentModel.DataAnnotations.ValidationContext)}

Validates the end session request according to OIDC RP\-Initiated Logout 1\.0 specification\.
This method is called AFTER all properties are bound, ensuring cross\-property validation works correctly\.
Per OIDC specification:
\- When post\_logout\_redirect\_uri is used without id\_token\_hint, client\_id identifies the client
\- When id\_token\_hint is provided, the OP can extract client identity from the token
\- When neither are provided, the OP uses session cookies to identify the user

```csharp
public System.Collections.Generic.IEnumerable<System.ComponentModel.DataAnnotations.ValidationResult> Validate(System.ComponentModel.DataAnnotations.ValidationContext validationContext);
```
#### Parameters

###### `validationContext` [System\.ComponentModel\.DataAnnotations\.ValidationContext](https://learn.microsoft.com/en-us/dotnet/api/system.componentmodel.dataannotations.validationcontext 'System\.ComponentModel\.DataAnnotations\.ValidationContext') {#Abblix.Oidc.Server.Mvc.Model.EndSessionRequest.Validate(System.ComponentModel.DataAnnotations.ValidationContext).validationContext}

The validation context\.

Implements [Validate\(ValidationContext\)](https://learn.microsoft.com/en-us/dotnet/api/system.componentmodel.dataannotations.ivalidatableobject.validate#system-componentmodel-dataannotations-ivalidatableobject-validate(system-componentmodel-dataannotations-validationcontext) 'System\.ComponentModel\.DataAnnotations\.IValidatableObject\.Validate\(System\.ComponentModel\.DataAnnotations\.ValidationContext\)')

#### Returns
[System\.Collections\.Generic\.IEnumerable&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ienumerable-1 'System\.Collections\.Generic\.IEnumerable\`1')[System\.ComponentModel\.DataAnnotations\.ValidationResult](https://learn.microsoft.com/en-us/dotnet/api/system.componentmodel.dataannotations.validationresult 'System\.ComponentModel\.DataAnnotations\.ValidationResult')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ienumerable-1 'System\.Collections\.Generic\.IEnumerable\`1')  
A collection of validation results\.
### Operators

## EndSessionRequest\.implicit operator EndSessionRequest\(EndSessionRequest\) Operator {#Abblix.Oidc.Server.Mvc.Model.EndSessionRequest.op_ImplicitAbblix.Oidc.Server.Model.EndSessionRequest(Abblix.Oidc.Server.Mvc.Model.EndSessionRequest)}

Implicit form of [Map\(\)](https://www.abblix.com/en/docs/api/abblix-oidc-server-mvc/Abblix.Oidc.Server.Mvc.Model.EndSessionRequest#Abblix.Oidc.Server.Mvc.Model.EndSessionRequest.Map() 'Abblix\.Oidc\.Server\.Mvc\.Model\.EndSessionRequest\.Map\(\)'), letting a bound model flow into any
core\-typed parameter or variable without an explicit call\.

```csharp
public static Abblix.Oidc.Server.Model.EndSessionRequest implicit operator Abblix.Oidc.Server.Model.EndSessionRequest(Abblix.Oidc.Server.Mvc.Model.EndSessionRequest request);
```
#### Parameters

###### `request` [EndSessionRequest](https://www.abblix.com/en/docs/api/abblix-oidc-server-mvc/Abblix.Oidc.Server.Mvc.Model.EndSessionRequest 'Abblix\.Oidc\.Server\.Mvc\.Model\.EndSessionRequest') {#Abblix.Oidc.Server.Mvc.Model.EndSessionRequest.op_ImplicitAbblix.Oidc.Server.Model.EndSessionRequest(Abblix.Oidc.Server.Mvc.Model.EndSessionRequest).request}

#### Returns
[EndSessionRequest](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Model.EndSessionRequest 'Abblix\.Oidc\.Server\.Model\.EndSessionRequest')
