private async Task <RequestTokenResponse> CreateAuthenticationTokenAsync(string apiJwtToken)
        {
            var requestTokenRequest = await CreateAuthenticationTokenRequestAsync(apiJwtToken);

            var equiasConfiguration = new EquiasConfiguration(await GetEquiasDomainAsync(apiJwtToken));

            return(await equiasAuthenticationService.EboGetAuthenticationToken(requestTokenRequest, equiasConfiguration));
        }
        public async Task <EboGetTradeStatusResponse> TradeStatusAsync(IEnumerable <TradeKey> tradeKeys, string apiJwtToken)
        {
            var enumerable           = tradeKeys.ToList();
            var tradeIds             = enumerable.Select(t => EquiasService.MapTradeId(t.TradeReference, t.TradeLeg)).ToList();
            var equiasConfiguration  = new EquiasConfiguration(await GetEquiasDomainAsync(apiJwtToken));
            var requestTokenResponse = await CreateAuthenticationTokenAsync(apiJwtToken);

            logger.LogInformation("Attempting to get trade status for trades {TradeIds}", TradeCubeJsonSerializer.Serialize(tradeIds));

            return(tradeIds.Any()
                ? await equiasService.EboGetTradeStatus(tradeIds, requestTokenResponse, equiasConfiguration)
                : new EboGetTradeStatusResponse());
        }
        public async Task <EboTradeResponse> CancelTradeAsync(string tradeReference, int tradeLeg, string apiJwtToken)
        {
            var equiasConfiguration  = new EquiasConfiguration(await GetEquiasDomainAsync(apiJwtToken));
            var requestTokenResponse = await CreateAuthenticationTokenAsync(apiJwtToken);

            var cancelTrade = new CancelTrade {
                TradeId = EquiasService.MapTradeId(tradeReference, tradeLeg)
            };
            var eboTradeResponse = await equiasService.CancelTrade(cancelTrade, requestTokenResponse, equiasConfiguration);

            var tradeDataObject = await GetTradeAsync(tradeReference, tradeLeg, apiJwtToken);

            var addTradePostSubmission = SetTradePostSubmission(eboTradeResponse, tradeDataObject);
            var savePostSubmissionAdd  = await SaveTradeAsync(addTradePostSubmission, apiJwtToken);

            logger.LogInformation("Cancel Trade updated (EboSubmissionStatus={EboSubmissionStatus}), result: {Status}",
                                  tradeDataObject.External.Equias.EboSubmissionStatus,
                                  savePostSubmissionAdd.Status);

            return(eboTradeResponse);
        }