public Stream GetSignedDocuments(string envelopeId)
        {
            var uriTemplate = SignatureApiUriTemplates.BuildUriTemplate(SignatureApiUriTemplates.GetSignedEnvelopeDocuments);
            var parameters  = new NameValueCollection
            {
                { "userId", UserId },
                { "envelopeId", envelopeId }
            };

            var template = new UriTemplate(uriTemplate);

            Uri    url       = template.BindByName(new Uri(BaseAddress), parameters);
            string signedUrl = UrlSignature.Sign(url.AbsoluteUri, PrivateKey);

            var request = new HttpRequestMessage {
                Method = "GET", Uri = new Uri(signedUrl)
            };

            HttpContent content = request.Content;

            _client.DefaultHeaders.ContentLength = (content != null && content.HasLength() ? new long?(content.GetLength()) : null);

            OnSendingRequest(request);

            return(_client.Send(request).Content.ReadAsStream());
        }
        public SignatureEnvelopeResourcesResponse GetEnvelopeResources()
        {
            var template   = SignatureApiUriTemplates.BuildUriTemplate(SignatureApiUriTemplates.GetEnvelopeRecources);
            var parameters = new NameValueCollection
            {
                { "userId", UserId }
            };
            var response = SubmitRequest <SignatureEnvelopeResourcesResponse>(template, parameters);

            return(response);
        }
        public SignatureSignatureResponse DeleteSignature(string signatureId)
        {
            var template   = SignatureApiUriTemplates.BuildUriTemplate(SignatureApiUriTemplates.DeleteSignature);
            var parameters = new NameValueCollection
            {
                { "userId", UserId },
                { "signatureId", signatureId }
            };
            var response = SubmitRequest <SignatureSignatureResponse>(template, parameters, "DELETE", HttpContent.CreateEmpty());

            return(response);
        }
        public SignatureEnvelopesResponse GetRecipientEnvelopes(string statusId)
        {
            var template   = SignatureApiUriTemplates.BuildUriTemplate(SignatureApiUriTemplates.GetRecipientEnvelopes);
            var parameters = new NameValueCollection
            {
                { "userId", UserId },
                { "statusId", statusId }
            };

            var response = SubmitRequest <SignatureEnvelopesResponse>(template, parameters);

            return(response);
        }
        public SignatureEnvelopeResponse SendEnvelope(string envelopeId)
        {
            var template   = SignatureApiUriTemplates.BuildUriTemplate(SignatureApiUriTemplates.SendEnvelope);
            var parameters = new NameValueCollection
            {
                { "userId", UserId },
                { "envelopeId", envelopeId }
            };

            var response = SubmitRequest <SignatureEnvelopeResponse>(template, parameters, "PUT", HttpContent.CreateEmpty());

            return(response);
        }
        public SignatureStatusResponse DeleteSignatureTemplateField(string templateId, string fieldId)
        {
            var template   = SignatureApiUriTemplates.BuildUriTemplate(SignatureApiUriTemplates.TemplateField);
            var parameters = new NameValueCollection
            {
                { "userId", UserId },
                { "templateId", templateId },
                { "fieldId", fieldId }
            };
            var response = SubmitRequest <SignatureStatusResponse>(template, parameters, "DELETE", HttpContent.CreateEmpty());

            return(response);
        }
        public SignatureTemplateDocumentsResponse GetTemplateDocuments(string templateId)
        {
            var template   = SignatureApiUriTemplates.BuildUriTemplate(SignatureApiUriTemplates.GetTemplateDocuments);
            var parameters = new NameValueCollection
            {
                { "userId", UserId },
                { "templateId", templateId }
            };

            var response = SubmitRequest <SignatureTemplateDocumentsResponse>(template, parameters);

            return(response);
        }
        public SignatureContactsImportResponse ImportContacts(SignatureContactSettings[] settings)
        {
            var template   = SignatureApiUriTemplates.BuildUriTemplate(SignatureApiUriTemplates.ImportContacts);
            var parameters = new NameValueCollection
            {
                { "userId", UserId }
            };

            using (var content = HttpContentNetExtensions.CreateJsonNetDataContract(settings))
            {
                var response = SubmitRequest <SignatureContactsImportResponse>(template, parameters, "POST", content);
                return(response);
            }
        }
        public SignatureStatusResponse DeleteEnvelopeDocument(string envelopeId, string documentId)
        {
            var template   = SignatureApiUriTemplates.BuildUriTemplate(SignatureApiUriTemplates.EnvelopeDocument);
            var parameters = new NameValueCollection
            {
                { "userId", UserId },
                { "envelopeId", envelopeId },
                { "documentId", documentId },
            };

            var response = SubmitRequest <SignatureStatusResponse>(template, parameters, "DELETE", HttpContent.CreateEmpty());

            return(response);
        }
        public SignatureSignatureResponse CreateSignatureAddimage(string signatureId, string dataFrom, string type)
        {
            var template   = SignatureApiUriTemplates.BuildUriTemplate(SignatureApiUriTemplates.AddSignatureImage);
            var parameters = new NameValueCollection
            {
                { "userId", UserId },
                { "signatureId", signatureId },
                { "dataFrom", dataFrom },
                { "type", type }
            };
            var response = SubmitRequest <SignatureSignatureResponse>(template, parameters, "POST", HttpContent.CreateEmpty());

            return(response);
        }
        public SignatureTemplatesResponse GetTemplates(string page, string count)
        {
            var template   = SignatureApiUriTemplates.BuildUriTemplate(SignatureApiUriTemplates.GetTemplates);
            var parameters = new NameValueCollection
            {
                { "userId", UserId },
                { "page", page },
                { "count", count }
            };

            var response = SubmitRequest <SignatureTemplatesResponse>(template, parameters);

            return(response);
        }
        public SignatureTemplateResponse RenameTemplate(string templateId, string name)
        {
            var template   = SignatureApiUriTemplates.BuildUriTemplate(SignatureApiUriTemplates.RenameTemplate);
            var parameters = new NameValueCollection
            {
                { "userId", UserId },
                { "templateId", templateId },
                { "name", name }
            };

            var response = SubmitRequest <SignatureTemplateResponse>(template, parameters, "PUT", HttpContent.CreateEmpty());

            return(response);
        }
        public SignatureEnvelopeDocumentResponse GetEnvelopeDocument(string envelopeId, string documentId)
        {
            var template   = SignatureApiUriTemplates.BuildUriTemplate(SignatureApiUriTemplates.EnvelopeDocument);
            var parameters = new NameValueCollection
            {
                { "userId", UserId },
                { "envelopeId", envelopeId },
                { "documentId", documentId },
            };

            var response = SubmitRequest <SignatureEnvelopeDocumentResponse>(template, parameters);

            return(response);
        }
        public ViewDocumentResponse ViewTemplateDocument(string fileId, string templateId)
        {
            var template   = SignatureApiUriTemplates.BuildUriTemplate(SignatureApiUriTemplates.SignatureTemplateDocumentThumbnails);
            var parameters = new NameValueCollection
            {
                { "userId", UserId },
                { "fileId", fileId },
                { "templateId", templateId }
            };

            var response = SubmitRequest <ViewDocumentResponse>(template, parameters, "POST", HttpContent.CreateEmpty());

            return(response);
        }
        public SignatureStatusResponse DeleteEnvelopeFieldLocation(string envelopeId, string fieldId, string locationId)
        {
            var template   = SignatureApiUriTemplates.BuildUriTemplate(SignatureApiUriTemplates.EnvelopeFieldLocation);
            var parameters = new NameValueCollection
            {
                { "envelopeId", envelopeId },
                { "fieldId", fieldId },
                { "locationId", locationId },
                { "userId", UserId }
            };
            var response = SubmitRequest <SignatureStatusResponse>(template, parameters, "DELETE", HttpContent.CreateEmpty());

            return(response);
        }
        public SignatureTemplateFieldsResponse GetSignatureTemplateFields(string templateId, string documentId, string recipientId)
        {
            var template   = SignatureApiUriTemplates.BuildUriTemplate(SignatureApiUriTemplates.GetTemplateFields);
            var parameters = new NameValueCollection
            {
                { "userId", UserId },
                { "templateId", templateId },
                { "documentId", documentId },
                { "recipientId", recipientId },
            };
            var response = SubmitRequest <SignatureTemplateFieldsResponse>(template, parameters);

            return(response);
        }
        public SignatureFieldsResponse GetFieldsList(string fieldId)
        {
            var template = SignatureApiUriTemplates.BuildUriTemplate(SignatureApiUriTemplates.GetFields);

            var parameters = new NameValueCollection
            {
                { "userId", UserId },
                { "fieldId", fieldId }
            };

            var response = SubmitRequest <SignatureFieldsResponse>(template, parameters);

            return(response);
        }
        public SignatureTemplateDocumentResponse AddTemplateDocument(string templateId, string documentId, decimal order)
        {
            var template   = SignatureApiUriTemplates.BuildUriTemplate(SignatureApiUriTemplates.AddTemplateDocument);
            var parameters = new NameValueCollection
            {
                { "userId", UserId },
                { "templateId", templateId },
                { "documentId", documentId },
                { "order", order.ToString(CultureInfo.InvariantCulture) },
            };

            var response = SubmitRequest <SignatureTemplateDocumentResponse>(template, parameters, "POST", HttpContent.CreateEmpty());

            return(response);
        }
        public SignatureEnvelopeFieldResponse UpdateSignatureTemplateField(string templateId, string documentId, string fieldId, SignatureEnvelopeFieldSettings fieldSettings)
        {
            var template   = SignatureApiUriTemplates.BuildUriTemplate(SignatureApiUriTemplates.ModifyTemplateField);
            var parameters = new NameValueCollection
            {
                { "userId", UserId },
                { "templateId", templateId },
                { "documentId", documentId },
                { "fieldId", fieldId }
            };
            var content  = HttpContentNetExtensions.CreateJsonNetDataContract(fieldSettings);
            var response = SubmitRequest <SignatureEnvelopeFieldResponse>(template, parameters, "PUT", content);

            return(response);
        }
        public SignatureSignatureResponse ModifySignature(string signatureId, SignatureSignatureSettings settings)
        {
            var template   = SignatureApiUriTemplates.BuildUriTemplate(SignatureApiUriTemplates.ModifySignature);
            var parameters = new NameValueCollection
            {
                { "userId", UserId },
                { "signatureId", signatureId }
            };

            using (var content = HttpContentNetExtensions.CreateJsonNetDataContract(settings))
            {
                var response = SubmitRequest <SignatureSignatureResponse>(template, parameters, "POST", content);
                return(response);
            }
        }
        public SignatureContactsResponse GetContacts(string page, string count, string firstName, string lastName, string email)
        {
            var template   = SignatureApiUriTemplates.BuildUriTemplate(SignatureApiUriTemplates.GetContacts);
            var parameters = new NameValueCollection
            {
                { "userId", UserId },
                { "page", page },
                { "count", count },
                { "firstName", firstName },
                { "lastName", lastName },
                { "email", email }
            };
            var response = SubmitRequest <SignatureContactsResponse>(template, parameters);

            return(response);
        }
        public SignatureTemplateRecipientResponse UpdateTemplateRecipient(string templateId, string recipientId, string nickname, string roleId, decimal order)
        {
            var template   = SignatureApiUriTemplates.BuildUriTemplate(SignatureApiUriTemplates.ModifyTemplateRecipient);
            var parameters = new NameValueCollection
            {
                { "userId", UserId },
                { "templateId", templateId },
                { "recipientId", recipientId },
                { "nickname", nickname },
                { "roleId", roleId },
                { "order", order.ToString(CultureInfo.InvariantCulture) },
            };

            var response = SubmitRequest <SignatureTemplateRecipientResponse>(template, parameters, "PUT", HttpContent.CreateEmpty());

            return(response);
        }
        public SignatureTemplateFieldResponse ModifySignatureTemplateFieldLocation(string templateId, string documentId, string recipientId, string fieldId, string locationId, SignatureTemplateFieldLocationSettings settings)
        {
            var template   = SignatureApiUriTemplates.BuildUriTemplate(SignatureApiUriTemplates.TemplateFieldLocationModify);
            var parameters = new NameValueCollection
            {
                { "userId", UserId },
                { "templateId", templateId },
                { "documentId", documentId },
                { "recipientId", recipientId },
                { "fieldId", fieldId },
                { "locationId", locationId }
            };
            var content  = HttpContentNetExtensions.CreateJsonNetDataContract(settings);
            var response = SubmitRequest <SignatureTemplateFieldResponse>(template, parameters, "PUT", content);

            return(response);
        }
        public SignatureEnvelopeRecipientResponse AddEnvelopeRecipient(string envelopeId, string recipientEmail, string recipientFirstName, string recipientLastName, string roleId, decimal order)
        {
            var template   = SignatureApiUriTemplates.BuildUriTemplate(SignatureApiUriTemplates.AddEnvelopeRecipient);
            var parameters = new NameValueCollection
            {
                { "userId", UserId },
                { "envelopeId", envelopeId },
                { "recipientEmail", recipientEmail },
                { "recipientFirstName", recipientFirstName },
                { "recipientLastName", recipientLastName },
                { "roleId", roleId },
                { "order", order.ToString(CultureInfo.InvariantCulture) },
            };

            var response = SubmitRequest <SignatureEnvelopeRecipientResponse>(template, parameters, "POST", HttpContent.CreateEmpty());

            return(response);
        }
        /// <summary>
        /// Returns a list of all envelopes documents.
        /// </summary>
        public SignatureEnvelopesResponse GetEnvelopes(string statusId, string page, string count, string documentId, string recipientEmail, string date)
        {
            var template   = SignatureApiUriTemplates.BuildUriTemplate(SignatureApiUriTemplates.GetEnvelopes);
            var parameters = new NameValueCollection
            {
                { "userId", UserId },
                { "statusId", statusId },
                { "page", page },
                { "count", count },
                { "documentId", documentId },
                { "recipientEmail", recipientEmail },
                { "date", date }
            };

            var response = SubmitRequest <SignatureEnvelopesResponse>(template, parameters);

            return(response);
        }
        public SignatureEnvelopeFieldResponse FillEnvelopeField(string envelopeId, string documentId, string recipientId, string fieldId, string data, string signatureId)
        {
            var template   = SignatureApiUriTemplates.BuildUriTemplate(SignatureApiUriTemplates.FillEnvelopeField);
            var parameters = new NameValueCollection
            {
                { "userId", UserId },
                { "envelopeId", envelopeId },
                { "documentId", documentId },
                { "recipientId", recipientId },
                { "fieldId", fieldId },
                { "signatureId", signatureId }
            };


            var response = SubmitRequest <SignatureEnvelopeFieldResponse>(template, parameters, "PUT", HttpContent.Create(data ?? String.Empty));

            return(response);
        }