public async Task <ResponseContentModel> InvokeEndpoint(Endpoint endpoint,
                                                                TestEnvironment testEnvironment,
                                                                Hashtable queryParams,
                                                                Hashtable pathParams,
                                                                Hashtable headerParams,
                                                                IGetAuthorisationHeaderStrategy authStrategy,
                                                                object requestBody,
                                                                bool attemptDeserializeErrorContent = false)
        {
            var queryDict  = queryParams.AsStringStringDictionary();
            var pathDict   = pathParams.AsStringStringDictionary();
            var headerDict = headerParams.AsStringStringDictionary();

            _parameterCheckService.CheckRequiredParametersPresent(endpoint,
                                                                  queryDict,
                                                                  pathDict,
                                                                  headerDict);

            using (var request = await _createMessageService.CreateMessage(endpoint,
                                                                           testEnvironment,
                                                                           queryDict,
                                                                           pathDict,
                                                                           headerDict,
                                                                           authStrategy,
                                                                           requestBody))
            {
                var responseModel = await _apiResponseService.ReturnContent(request,
                                                                            endpoint.SuccessResponseBody?.Type,
                                                                            attemptDeserializeErrorContent?
                                                                            typeof(object) :
                                                                            null);

                _responseRecorder.RecordIfRequired(responseModel);

                return(responseModel);
            }
        }