/// <summary>
        /// Creates and sends a new SignatureRequest with the submitted documents. If <see cref="NewSignatureRequest.FormFieldsPerDocument"/> is not specified,
        /// a signature page will be affixed where all signers will be required to add their signature, signifying their agreement to all contained documents.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException">request</exception>
        public Task <SignatureRequestResponse> SendSignatureRequestAsync(NewSignatureRequest request, CancellationToken cancellationToken)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            var content = new MultipartFormDataContent();

            content.AddRequest(_log, request);

            return(PostAsync <SignatureRequestResponse>($"{SignatureUrl}/send", content, cancellationToken));
        }
 /// <summary>
 /// Creates and sends a new SignatureRequest with the submitted documents. If <see cref="NewSignatureRequest.FormFieldsPerDocument"/> is not specified,
 /// a signature page will be affixed where all signers will be required to add their signature, signifying their agreement to all contained documents.
 /// </summary>
 /// <param name="request">The request.</param>
 /// <returns></returns>
 /// <exception cref="ArgumentNullException">request</exception>
 public Task <SignatureRequestResponse> SendSignatureRequestAsync(NewSignatureRequest request)
 {
     return(SendSignatureRequestAsync(request, CancellationToken.None));
 }
        public static void AddRequest(this MultipartFormDataContent content, IApiLog log, NewSignatureRequest request)
        {
            content.AddRequestBase(log, request);

            content.AddParameter(log, "client_id", request.ClientId);
            content.AddFiles(log, request.Files);
            content.AddParameter(log, "title", request.Title);

            int i = 0;

            foreach (var cc in request.CcEmailAddresses)
            {
                content.AddParameter(log, $"cc_email_addresses[{i++}]", cc);
            }

            if (request.UseTextTags)
            {
                content.AddParameter(log, "use_text_tags", "1");
            }
            if (request.HideTextTags)
            {
                content.AddParameter(log, "hide_text_tags", "1");
            }
            if (request.FormFieldsPerDocument.Count > 0)
            {
                content.AddParameter(log, "form_fields_per_document", JsonConvert.SerializeObject(request.FormFieldsPerDocument, HttpResponseExtensions.JsonSettings));
            }
        }