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

## UpdateClientRequestValidator Class

Validates an RFC 7592 §2\.2 update request: authenticates the registration access token and
confirms the client exists, then validates the supplied replacement metadata via the
update\-specific keyed [IRegisterClientRequestValidator](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegisterClientRequestValidator 'Abblix\.Oidc\.Server\.Endpoints\.DynamicClientManagement\.Interfaces\.IRegisterClientRequestValidator')\. Also enforces the
RFC 7592 §2\.2 rule that the request body's `client_id` must match the authenticated client\.

```csharp
public class UpdateClientRequestValidator : Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IUpdateClientRequestValidator
```

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

Implements [IUpdateClientRequestValidator](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IUpdateClientRequestValidator 'Abblix\.Oidc\.Server\.Endpoints\.DynamicClientManagement\.Interfaces\.IUpdateClientRequestValidator')
### Constructors

## UpdateClientRequestValidator\(IClientRequestValidator, IRegisterClientRequestValidator\) Constructor {#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.UpdateClientRequestValidator.UpdateClientRequestValidator(Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IClientRequestValidator,Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegisterClientRequestValidator)}

Validates an RFC 7592 §2\.2 update request: authenticates the registration access token and
confirms the client exists, then validates the supplied replacement metadata via the
update\-specific keyed [IRegisterClientRequestValidator](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegisterClientRequestValidator 'Abblix\.Oidc\.Server\.Endpoints\.DynamicClientManagement\.Interfaces\.IRegisterClientRequestValidator')\. Also enforces the
RFC 7592 §2\.2 rule that the request body's `client_id` must match the authenticated client\.

```csharp
public UpdateClientRequestValidator(Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IClientRequestValidator clientRequestValidator, Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegisterClientRequestValidator registrationRequestValidator);
```
#### Parameters

###### `clientRequestValidator` [IClientRequestValidator](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IClientRequestValidator 'Abblix\.Oidc\.Server\.Endpoints\.DynamicClientManagement\.Interfaces\.IClientRequestValidator') {#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.UpdateClientRequestValidator.UpdateClientRequestValidator(Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IClientRequestValidator,Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegisterClientRequestValidator).clientRequestValidator}

Validator for the registration access token\.

###### `registrationRequestValidator` [IRegisterClientRequestValidator](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegisterClientRequestValidator 'Abblix\.Oidc\.Server\.Endpoints\.DynamicClientManagement\.Interfaces\.IRegisterClientRequestValidator') {#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.UpdateClientRequestValidator.UpdateClientRequestValidator(Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IClientRequestValidator,Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegisterClientRequestValidator).registrationRequestValidator}

Update\-flow metadata validator
            \(keyed by [RegistrationKey](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.DynamicClientManagement.UpdateClientRequestValidator#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.UpdateClientRequestValidator.RegistrationKey 'Abblix\.Oidc\.Server\.Endpoints\.DynamicClientManagement\.UpdateClientRequestValidator\.RegistrationKey')\)\.
### Fields

## UpdateClientRequestValidator\.RegistrationKey Field {#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.UpdateClientRequestValidator.RegistrationKey}

DI service key under which the update\-specific
[IRegisterClientRequestValidator](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegisterClientRequestValidator 'Abblix\.Oidc\.Server\.Endpoints\.DynamicClientManagement\.Interfaces\.IRegisterClientRequestValidator') is registered, allowing the same
validator interface to be used for both register and update flows\.

```csharp
public const string RegistrationKey = "UpdateClientRequestValidator";
```

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

## UpdateClientRequestValidator\.ValidateAsync\(UpdateClientRequest\) Method {#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.UpdateClientRequestValidator.ValidateAsync(Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.UpdateClientRequest)}

Validates an update client request asynchronously\.

```csharp
public System.Threading.Tasks.Task<Abblix.Utils.Result<Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.ValidUpdateClientRequest,Abblix.Oidc.Server.Common.OidcError>> ValidateAsync(Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.UpdateClientRequest request);
```
#### Parameters

###### `request` [UpdateClientRequest](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.UpdateClientRequest 'Abblix\.Oidc\.Server\.Endpoints\.DynamicClientManagement\.Interfaces\.UpdateClientRequest') {#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.UpdateClientRequestValidator.ValidateAsync(Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.UpdateClientRequest).request}

The update client request to validate\.

Implements [ValidateAsync\(UpdateClientRequest\)](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IUpdateClientRequestValidator#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IUpdateClientRequestValidator.ValidateAsync(Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.UpdateClientRequest) 'Abblix\.Oidc\.Server\.Endpoints\.DynamicClientManagement\.Interfaces\.IUpdateClientRequestValidator\.ValidateAsync\(Abblix\.Oidc\.Server\.Endpoints\.DynamicClientManagement\.Interfaces\.UpdateClientRequest\)')

#### Returns
[System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[Abblix\.Utils\.Result&lt;](https://learn.microsoft.com/en-us/dotnet/api/abblix.utils.result-2 'Abblix\.Utils\.Result\`2')[ValidUpdateClientRequest](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.ValidUpdateClientRequest 'Abblix\.Oidc\.Server\.Endpoints\.DynamicClientManagement\.Interfaces\.ValidUpdateClientRequest')[,](https://learn.microsoft.com/en-us/dotnet/api/abblix.utils.result-2 'Abblix\.Utils\.Result\`2')[OidcError](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.OidcError 'Abblix\.Oidc\.Server\.Common\.OidcError')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/abblix.utils.result-2 'Abblix\.Utils\.Result\`2')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')  
A task representing the validation result\.
