public async Task <List <AssetPairContract> > BatchUpdate(
            [FromBody] AssetPairUpdateRequest[] assetPairsUpdateRequest)
        {
            foreach (var assetPairUpdateRequest in assetPairsUpdateRequest)
            {
                await ValidatePairUpdate(assetPairUpdateRequest);

                if (assetPairUpdateRequest.IsFrozen == false)
                {
                    assetPairUpdateRequest.FreezeInfo = new FreezeInfoContract();
                }
            }
            await ValidateUnique(assetPairsUpdateRequest);

            var updated = await _assetPairsRepository.UpdateBatchAsync(assetPairsUpdateRequest.ToList());

            if (updated == null)
            {
                throw new ArgumentException("Batch update failed", nameof(assetPairsUpdateRequest));
            }

            var updatedContracts = updated.Select(x => _convertService.Convert <IAssetPair, AssetPairContract>(x)).ToList();

            await _eventSender.SendSettingsChangedEvent($"{Request.Path}", SettingsChangedSourceType.AssetPair);

            foreach (var updatedContract in updatedContracts)
            {
                await _cqrsMessageSender.SendAssetPairChangedEvent(new AssetPairChangedEvent
                {
                    OperationId = Guid.NewGuid().ToString("N"),
                    AssetPair   = updatedContract,
                });
            }

            return(updatedContracts);
        }