public async Task <OfflineResponse> ExecuteOffline(List <IFunction> content)
        {
            if (string.IsNullOrWhiteSpace(this.RequestConfig.PolicyId))
            {
                throw new ArgumentException("Required Policy ID not supplied in config for offline request");
            }

            if (
                this.ClientConfig.Logger != null &&
                (
                    !string.IsNullOrEmpty(this.ClientConfig.SessionId) ||
                    this.ClientConfig.Credentials.GetType() == typeof(SessionCredentials)
                )
                )
            {
                // Log warning if using session ID for offline execution
                this.ClientConfig.Logger.Warn("Offline execution sent to Intacct using Session-based credentials. Use Login-based credentials instead to avoid session timeouts.");
            }

            RequestBlock request = new RequestBlock(this.ClientConfig, this.RequestConfig, content);

            OfflineResponse response = new OfflineResponse(await Execute(request.WriteXml()).ConfigureAwait(false));

            return(response);
        }
        public async Task <OnlineResponse> ExecuteOnline(List <IFunction> content)
        {
            if (!string.IsNullOrEmpty(this.RequestConfig.PolicyId))
            {
                this.RequestConfig.PolicyId = "";
            }

            RequestBlock request = new RequestBlock(this.ClientConfig, this.RequestConfig, content);

            OnlineResponse response = new OnlineResponse(await Execute(request.WriteXml()).ConfigureAwait(false));

            return(response);
        }