#### [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')

## UpdateClientRequestProcessor Class

Processes requests to update existing client configurations per RFC 7592 Section 2\.2\.
Updates client metadata while preserving credentials and system\-managed fields\.

```csharp
public class UpdateClientRequestProcessor : Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IUpdateClientRequestProcessor
```

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

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

## UpdateClientRequestProcessor\(IClientInfoManager, IRegistrationAccessTokenService, IRegistrationAccessTokenStore, ITokenIdGenerator, TimeProvider\) Constructor {#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.UpdateClientRequestProcessor.UpdateClientRequestProcessor(Abblix.Oidc.Server.Features.ClientInformation.IClientInfoManager,Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenService,Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenStore,Abblix.Oidc.Server.Features.RandomGenerators.ITokenIdGenerator,System.TimeProvider)}

Processes requests to update existing client configurations per RFC 7592 Section 2\.2\.
Updates client metadata while preserving credentials and system\-managed fields\.

```csharp
public UpdateClientRequestProcessor(Abblix.Oidc.Server.Features.ClientInformation.IClientInfoManager clientInfoManager, Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenService registrationAccessTokenService, Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenStore registrationAccessTokenStore, Abblix.Oidc.Server.Features.RandomGenerators.ITokenIdGenerator tokenIdGenerator, System.TimeProvider clock);
```
#### Parameters

###### `clientInfoManager` [IClientInfoManager](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.ClientInformation.IClientInfoManager 'Abblix\.Oidc\.Server\.Features\.ClientInformation\.IClientInfoManager') {#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.UpdateClientRequestProcessor.UpdateClientRequestProcessor(Abblix.Oidc.Server.Features.ClientInformation.IClientInfoManager,Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenService,Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenStore,Abblix.Oidc.Server.Features.RandomGenerators.ITokenIdGenerator,System.TimeProvider).clientInfoManager}

###### `registrationAccessTokenService` [IRegistrationAccessTokenService](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenService 'Abblix\.Oidc\.Server\.Endpoints\.DynamicClientManagement\.Interfaces\.IRegistrationAccessTokenService') {#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.UpdateClientRequestProcessor.UpdateClientRequestProcessor(Abblix.Oidc.Server.Features.ClientInformation.IClientInfoManager,Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenService,Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenStore,Abblix.Oidc.Server.Features.RandomGenerators.ITokenIdGenerator,System.TimeProvider).registrationAccessTokenService}

###### `registrationAccessTokenStore` [IRegistrationAccessTokenStore](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenStore 'Abblix\.Oidc\.Server\.Endpoints\.DynamicClientManagement\.Interfaces\.IRegistrationAccessTokenStore') {#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.UpdateClientRequestProcessor.UpdateClientRequestProcessor(Abblix.Oidc.Server.Features.ClientInformation.IClientInfoManager,Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenService,Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenStore,Abblix.Oidc.Server.Features.RandomGenerators.ITokenIdGenerator,System.TimeProvider).registrationAccessTokenStore}

###### `tokenIdGenerator` [ITokenIdGenerator](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.RandomGenerators.ITokenIdGenerator 'Abblix\.Oidc\.Server\.Features\.RandomGenerators\.ITokenIdGenerator') {#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.UpdateClientRequestProcessor.UpdateClientRequestProcessor(Abblix.Oidc.Server.Features.ClientInformation.IClientInfoManager,Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenService,Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenStore,Abblix.Oidc.Server.Features.RandomGenerators.ITokenIdGenerator,System.TimeProvider).tokenIdGenerator}

###### `clock` [System\.TimeProvider](https://learn.microsoft.com/en-us/dotnet/api/system.timeprovider 'System\.TimeProvider') {#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.UpdateClientRequestProcessor.UpdateClientRequestProcessor(Abblix.Oidc.Server.Features.ClientInformation.IClientInfoManager,Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenService,Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.IRegistrationAccessTokenStore,Abblix.Oidc.Server.Features.RandomGenerators.ITokenIdGenerator,System.TimeProvider).clock}
### Methods

## UpdateClientRequestProcessor\.ProcessAsync\(ValidUpdateClientRequest\) Method {#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.UpdateClientRequestProcessor.ProcessAsync(Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.ValidUpdateClientRequest)}

Processes a valid update client request, updating client metadata and returning updated configuration\.

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

###### `request` [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') {#Abblix.Oidc.Server.Endpoints.DynamicClientManagement.UpdateClientRequestProcessor.ProcessAsync(Abblix.Oidc.Server.Endpoints.DynamicClientManagement.Interfaces.ValidUpdateClientRequest).request}

The validated update request containing new client metadata\.

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

#### 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')[ReadClientSuccessfulResponse](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Model.ReadClientSuccessfulResponse 'Abblix\.Oidc\.Server\.Model\.ReadClientSuccessfulResponse')[,](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 that results in updated client configuration or an error response\.

### Remarks
Per RFC 7592:
\- All client metadata can be updated except client\_id, client\_secret, and issuance timestamps
\- Omitted fields are treated as null/empty
\- A new registration\_access\_token may be issued
\- Client secrets cannot be updated via this endpoint \(they're stored as hashes\)
