v5 Tutorial: Hello World
This tutorial shows how eSignAnyWhere can be implemented. This guide is intended to get to know the basics of a signature request workflow. After this guide you will be able to create envelopes and send them. For more information about the REST API you can also start with the Postman Tutorial. For more information about the XML configurations for the API please also have a look at our XML Guide.
eSignAnyWhere can be easily implemented. This tutorial shows you how to send your first envelope via api REST service of eSignAnyWhere. If you are using Postman for your REST calls please also have a look at the following Tutorial: Visit postman tutorial.
Please also see the developer mode for this tutorial: Visit developer mode.
For this tutorial you can use your desired programming language (with REST support) or any REST tool (e. g. Postman). Moreover you will need an active eSignAnyWhere account for the authorization. (Even a trial account will work).
If you want to use SOAP for your API calls you can use SoapUI. For this tool you can find a tutorial here: Visit SoapUI Sample. For SOAP you might be also interested in the envelope XML guide which explains you more about the XML configuration.
If you are using JAVA you may be interested in our Java Library.
The REST URI of eSignAnyWhere is: https://demo.esignanywhere.net/Api/v4.0/
here you can find the Swagger: https://demo.esignanywhere.net/Api
The SOAP endpoint of eSignAnyWhere is: https://demo.esignanywhere.net/api.asmx
What the tutorial is about
The tutorial will show you the following basic use-case:
First we will have an easy api call to start with and then we will implement the above shown use case. Basically you simply upload a document. After the upload you will receive a documentId, which you need for creating an envelope with a JSON configuration. This configuration contains information about the envelope itself, workflow steps, signer information, policies and many more. After the envelope is created successful the workflow starts automatically.
The eSignAnyWhere system will use callbacks (you can configure them in the envelope JSON configuration) to notify you if the envelope status has changed.
First we will have an easy api call to start with and then we will implement the above shown use case. Basically you simply upload a document. After the upload you will receive a documentId, which you need for creating an envelope with a JSON configuration. This configuration contains information about the envelope itself, workflow steps, signer information, policies and many more. After the envelope is created successful the workflow starts automatically.
The eSignAnyWhere system will use callbacks (you can configure them in the envelope JSON configuration) to notify you if the envelope status has changed.
Your first api call
First we will try the connection with a version request. You can find the endpoints in the next table:
REST | SOAP |
---|---|
https://demo.esignanywhere.net/Api/v4.0/version* | GetVersion_v1* |
*The version api call does not need an authorization.
The response should be like the following in REST:
{ "Success": true, "Version": "3.7.78.14788" }
and in SOAP:
Two ways of authorization
Almost all API calls are expecting an authorization. Therefore, your organization key and your email-address of a PowerUser is required or the apiToken. You can find the organization key in the Settings/Api Token and Apps in eSignAnyWhere. The email-address and the name of the PowerUser is used for sending the email.
You can either authorize with the
for the authorization. For more information about the two different authorizations please have a look at the v5 REST tutorial using Postman
Errors:
For REST you get a HTTP status for the calls (for example: 200 OK or 401 unauthorized).
Upload document
First we have to upload a document. This will return a documentId, to use the document for creating an envelope. Therefore, we will use the following endpoints:
REST | SOAP |
---|---|
https://demo.esignanywhere.net/Api/v4.0/sspfile/uploadtemporary | UploadTemporarySspFile_v1 |
For this tutorial we just use a simple PDF document. You can download it here or use your own document.
The response after a successfull upload of the file is the document id (SspFileId).
You need the document Id for creating your first envelope. After uploading the file it is just temporary on the server. After 10 minutes it will be deleted and you are not able to use it again. The moment you are creating an envelope with the file, it gets the time-to-live of the envelope. Attention: The returned file id is just for creating an envelope. Once the envelope is created, the file id becomes invalid, so for downloading a finished file, you have to retrieve the id from the envelope status with the following URI for REST: https://demo.esignanywhere.net/Api/v4.0/envelope/##envelopeId## (Replace the placeholder ##envelopeId## with your envelope id.
Get Workstep Configuration
This step is only optional! But required if you do not have a workstep configuration. A workstep configuration is a definition of a signing task for one recipient. So it contains information about signature fields on the document, form-fields, etc. With the new Developer-Feature of eSignAnyWhere 2.6 it is not required anymore.
A workstep configuration is required for each signing step in your workflow. If you have already your workstep configuration you can skip this step. Moreover you can generate a workstep configuration with the SIGNificant Workstep Designer (Note: Only for XML). The SIGNificant Workstep Designer allows you as a developer to configure a SignAnyWhere workstep, set signature fields and types and many more. You can also use the developer mode for JSON (REST) and SOAP(XML)
To receive an adhoc workstep configuration you can use the following endpoint:
REST | SOAP |
---|---|
https://demo.esignanywhere.net/Api/v4.0/envelope/prepare | GetAdHocWorkstepConfiguration_v1 |
You can find a sample configuration for this call in the next section
{ "SspFileIds": [ "##FileId##" ], "AdHocWorkstepConfiguration": { "WorkstepLabel": "string", "SmallTextZoomFactorPercent": 0, "WorkstepTimeToLiveInMinutes": 0, "FinishAction": { "ClientActions": [ { "RemoveDocumentFromRecentDocumentList": true, "CallClientActionOnlyAfterSuccessfulSync": true, "ClientName": "string", "CloseApp": true, "Action": "string" } ] }, "NoSequenceEnforced": true, "SigTemplate": { "Size": { "Height": 0, "Width": 0 }, "AllowedSignatureTypes": [ ] }, "ParseFormFields": { "MapRequiredFieldsToRequiredTask": true, "FormsGrouping": "PerPage", "ReturnSimplifiedConfig": true, "AddKeepExistingValueFlag": true, "ParseFormField": true }, "AdhocPolicies": { "AllowModificationsAfterSignature": true }, "ViewerPreferences": { "ShowPageNavigationBar": true, "ShowThumbnails": true, "SkipFinishConfirmDialog": true, "SkipDocumentDialog": true, "ShowImagesInFullWidth": true, "DisableGeolocation": true, "ShowDocumentDownloadDialogAfterAutomaticFinish": true, "AttachmentsMaxFileSize": 0, "SkipPreviewImageOnDisposableCertificate": true, "LoadCustomJs": true, "AllowCustomButtons": true, "GuidingBehavior": "GuideOnlyRequiredTasks", "FormFieldsGuidingBehavior": "AllowSubmitAlways", "ShowVersionNumber": true, "EnableWarningPopupOnLeave": true, "WarningPopupDisplayAfter": "FillOrSignField", "FinishWorkstepOnOpen": true, "AutoFinishAfterRequiredTasksDone": true, "GuidingBehaviorOnFinishedTask": "NoMove", "SkipThankYouDialog": true, "NativeAppsUrlScheme": "string", "DocumentViewingMode": "EndlessPaperAllDocuments", "ThumbnailMode": "ShowAllPages", "ShowTopBar": true, "DisplayRejectButtonInTopBar": true, "MultipleSignatureTypesAndBatchSigningSettings": { "IsUseBatchSigningCheckedByDefault": true, "IsRememberSignatureTypeCheckedByDefault": true, "IsRememberBatchSigningDecisionCheckedByDefault": true, "SkipMultipleSignatureTypesAndBatchSigningDialogIfBatchSigningPossible": true }, "VisibleAreaOptions": { "AllowedDomain": "string", "Enabled": true }, "ShowStartGuidingHint": true, "ShowStatusBar": true, "ShowZoomButtons": true, "ShowNoGeolocationWarning": true, "AutoStartGuiding": true, "ShowPageGap": true, "ShowPageNavigationButtons": true, "ShowFinishPossibleHint": true, "SkipRejectConfirmDialog": true, "BatchSigningType": "Basic", "BatchSigningDisableNextButtonUntilDialogScrolledToBottom": true }, "SignatureConfigurations": [ { "SpcId": "string", "PdfSignatureProperties": { "PdfAConformant": true, "PAdESPart4Compliant": true, "IncludeSigningCertificateChain": true, "SigningCertificateRevocationInformationIncludeMode": "DoNotInclude", "SignatureTimestampData": { "Uri": "string", "Username": "string", "Password": "string", "SignatureHashAlgorithm": "Sha1", "AuthenticationCertifiateDescriptor": { "Identifier": "string", "Type": "string" } }, "EnableEutlVerification": true, "EnableValidateSigningCertificateName": true, "SigningCertificateNameRegex": "string" }, "PdfSignatureCryptographicData": { "SignatureHashAlgorithm": "Sha1", "SigningCertificateDescriptor": { "Identifier": "string", "Type": "Sha1Thumbprint", "Csp": "Default" } }, "CertificateFilter": { "KeyUsages": [ "string" ], "ThumbPrints": [ "string" ], "RootThumbPrints": [ "string" ] } } ], "SigStringParsingConfiguration": { "SigStringsForParsings": [ { "StartPattern": "string", "EndPattern": "string", "ClearSigString": true, "SearchEntireWordOnly": true } ] }, "GeneralPolicies": { "AllowSaveDocument": true, "AllowSaveAuditTrail": true, "AllowRotatingPages": true, "AllowAppendFileToWorkstep": true, "AllowAppendTaskToWorkstep": true, "AllowEmailDocument": true, "AllowPrintDocument": true, "AllowFinishWorkstep": true, "AllowRejectWorkstep": true, "AllowRejectWorkstepDelegation": true, "AllowUndoLastAction": true, "AllowColorizePdfForms": true, "AllowAdhocPdfAttachments": true, "AllowAdhocSignatures": true, "AllowAdhocStampings": true, "AllowAdhocFreeHandAnnotations": true, "AllowAdhocTypewriterAnnotations": true, "AllowAdhocPictureAnnotations": true, "AllowAdhocPdfPageAppending": true, "AllowReloadOfFinishedWorkstep": true }, "FinalizeActions": { }, "TransactionCodeConfigurations": [ { "Id": "string", "HashAlgorithmIdentifier": "Sha1", "Texts": [ { "Language": "string", "Value": "string" } ] } ] }, "PrepareSendEnvelopeStepsDescriptor": { "ClearFieldMarkupString": true } }
Send envelope
For sending an envelope we are using the following endpoints:
REST | SOAP |
---|---|
https://demo.esignanywhere.net/Api/v4.0/envelope/send | SendEnvelope_v1 |
This call requires the authorization, the file id(s) and the envelope configuration. The envelope configuration defines the envelope and the steps in the workflow. For each signing step you need to define a workstep configuration, which defines what the signer has to do in his/her singing task.
You can finde a sample configuration for this call in the next section:
{ "SspFileIds": [ "##FileId##" ], "SendEnvelopeDescription": { "Name": "test", "EmailSubject": "Please sign the enclosed envelope", "EmailBody": "Dear #RecipientFirstName# #RecipientLastName#\n\n#PersonalMessage#\n\nPlease sign the envelope #EnvelopeName#\n\nEnvelope will expire at #ExpirationDate#", "DisplayedEmailSender": "", "EnableReminders": true, "FirstReminderDayAmount": 5, "RecurrentReminderDayAmount": 3, "BeforeExpirationDayAmount": 3, "DaysUntilExpire": 28, "CallbackUrl": "", "StatusUpdateCallbackUrl": "", "Steps": [ { "OrderIndex": 1, "Recipients": [ { "Email": "##EMAIL##", "FirstName": "##NAME##", "LastName": "##NAME##", "LanguageCode": "en", "EmailBodyExtra": "", "DisableEmail": false, "AddAndroidAppLink": false, "AddIosAppLink": false, "AddWindowsAppLink": false, "AllowDelegation": false, "AllowAccessFinishedWorkstep": false, "SkipExternalDataValidation": false, "AuthenticationMethods": [ { "Method": "Pin", "Parameter": "1234" } ] } ], "EmailBodyExtra": "", "RecipientType": "Signer", "WorkstepConfiguration": { "WorkstepLabel": "test", "SmallTextZoomFactorPercent": 100, "FinishAction": { "ServerActions": [], "ClientActions": [] }, "ReceiverInformation": { "UserInformation": { "FirstName": "##NAME##", "LastName": "##NAME##", "EMail": "##EMAIL##" }, "TransactionCodePushPluginData": [] }, "SenderInformation": { "UserInformation": { "FirstName": "##NAME##", "LastName": "##NAME##", "EMail": "##EMAIL##" } }, "TransactionCodeConfigurations": [ { "Id": "smsAuthTransactionCodeId", "HashAlgorithmIdentifier": "Sha256", "Texts": [ ] } ], "SignatureConfigurations": [], "ViewerPreferences": { "FinishWorkstepOnOpen": false, "VisibleAreaOptions": { "AllowedDomain": "*", "Enabled": false } }, "ResourceUris": { "SignatureImagesUri": "http://beta4.testlab.xyzmo.com//Resource/SignatureImages/?link=1agjn5MvqNpSt2jFiZQySxLEiAO~ecLOxKqy3soEHk2F4Dz1MPSYLxRkpA21XMkYY" }, "AuditingToolsConfiguration": { "WriteAuditTrail": false, "NotificationConfiguration": {} }, "Policy": { "GeneralPolicies": { "AllowSaveDocument": true, "AllowSaveAuditTrail": true, "AllowRotatingPages": false, "AllowEmailDocument": true, "AllowPrintDocument": true, "AllowFinishWorkstep": true, "AllowRejectWorkstep": true, "AllowRejectWorkstepDelegation": false, "AllowUndoLastAction": false, "AllowAdhocPdfAttachments": false, "AllowAdhocSignatures": false, "AllowAdhocStampings": false, "AllowAdhocFreeHandAnnotations": false, "AllowAdhocTypewriterAnnotations": false, "AllowAdhocPictureAnnotations": false, "AllowAdhocPdfPageAppending": false }, "WorkstepTasks": { "PictureAnnotationMinResolution": 0, "PictureAnnotationMaxResolution": 0, "PictureAnnotationColorDepth": "Color16M", "SequenceMode": "NoSequenceEnforced", "PositionUnits": "PdfUnits", "ReferenceCorner": "Lower_Left", "Tasks": [ { "Texts": [ { "Language": "*", "Value": "Signature Disclosure Text" }, { "Language": "en", "Value": "Signature Disclosure Text" } ], "Headings": [ { "Language": "*", "Value": "Signature Disclosure Subject" }, { "Language": "en", "Value": "Signature Disclosure Subject" } ], "IsRequired": false, "Id": "ra", "DisplayName": "ra", "DocRefNumber": 1, "DiscriminatorType": "Agreements" }, { "PositionPage": 1, "Position": { "PositionX": 63.0, "PositionY": 603.0 }, "Size": { "Height": 80.0, "Width": 190.0 }, "AdditionalParameters": [ { "Key": "enabled", "Value": "1" }, { "Key": "positioning", "Value": "onPage" }, { "Key": "req", "Value": "1" }, { "Key": "fd", "Value": "" }, { "Key": "fd_dateformat", "Value": "dd-MM-yyyy HH:mm:ss" }, { "Key": "fd_timezone", "Value": "datetimeutc" }, { "Key": "spcId", "Value": "tLevelId" } ], "AllowedSignatureTypes": [ { "AllowedCapturingMethod": "Click2Sign", "Id": "679dd763-6e25-4a68-929d-cb1ce13dac7e", "DiscriminatorType": "SigTypeClick2Sign", "Preferred": false, "StampImprintConfiguration": { "DisplayExtraInformation": true, "DisplayEmail": true, "DisplayIp": true, "DisplayName": true, "DisplaySignatureDate": true, "FontFamily": "Times New Roman", "FontSize": 11.0 } } ], "UseTimestamp": false, "IsRequired": true, "Id": "1#XyzmoDuplicateIdSeperator#Signature_a1e940eb-bcd5-2222-9777-f3570faedf3f", "DisplayName": "", "DocRefNumber": 1, "DiscriminatorType": "Signature" } ] } }, "Navigation": { "HyperLinks": [], "Links": [], "LinkTargets": [] } }, "DocumentOptions": [ { "DocumentReference": "1", "IsHidden": false } ], "UseDefaultAgreements": true }, { "OrderIndex": 2, "Recipients": [ { "Email": "##EMAIL##", "FirstName": "##NAME##", "LastName": "##NAME##", "LanguageCode": "en", "EmailBodyExtra": "", "DisableEmail": false, "AddAndroidAppLink": false, "AddIosAppLink": false, "AddWindowsAppLink": false, "AllowDelegation": false, "SkipExternalDataValidation": false, "AuthenticationMethods": [] } ], "EmailBodyExtra": "", "RecipientType": "Cc", "DocumentOptions": [], "UseDefaultAgreements": false } ], "AddFormFields": { "Forms": {} }, "OverrideFormFieldValues": { "Forms": {} }, "AttachSignedDocumentsToEnvelopeLog": false } }
This is the simplest form of a workstep configuration. With the Developer Feature of eSAW 2.6+ you can download the envelope JSON or the envelope XML including the workstep configuration of any envelope designed in eSAW UI. The second signer only receives a copy, so he/she does not need to have a workstep configuration.
If the creation of the envelope was successful, you will get the envelope id as response.
In REST:
{ "EnvelopeId": "56db6133-xxxx-xxxx-xxxx-xxxxxxxxxxxx" }
After the successful creation of the envelope, it is sent to the first recipient. The envelope id is used for managing the envelopes (send reminder, cancel delete, reject envelope,…).
Find the envelope
After sending the envelope you can use the following api call to search for the envelope:
REST | SOAP |
---|---|
https://demo.esignanywhere.net/Api/v4.0/envelope/find | FindEnvelopes_v1 or FindEnvelopes_v2 |
In the next section you can find a sample configuration which you need for the api call:
{ "StartDate": "2020-04-17T13:09:50.089Z", "EndDate": "2020-04-17T13:09:50.089Z", "SearchText": "string", "Status": "Draft", "InStatusSinceDays": 0, "Senders": [ "string" ], "Signers": [ "string" ], "Recipients": [ "string" ], "WaitingForRecipient": "string", "Bulk": "string" }
You can search for the following status:
REST | SOAP |
---|---|
Draft | Draft |
Canceled | Canceled |
Completed | Completed |
Expired | Expired |
Rejected | Rejected |
Template | Template |
Active | Active |
ExpiringSoon | ExpiringSoon |
WaitingForOthers | WaitingForOthers |
ActionRequired | |
Started | |
InProgress |
If you search for templates you will get the templateId which you need for the following api calls:
REST | SOAP |
---|---|
https://demo.esignanywhere.net/Api/v4.0/envelope/sendFromTemplate | CreateDraftFromTemplate_v1 |
https://demo.esignanywhere.net/Api/v4.0/envelope/createFromTemplate | SendEnvelopeFromTemplate_v1 |
https://demo.esignanywhere.net/Api//v4.0/envelope/{templateId}/copyFromTemplate | CopyDocumentFromTemplate_v1 |
For more information about the process of finding the template and send an envelope from the template please also have a look at the template use case.
If you have not finished the envelope then search for “Active” envelopes, if the envelope is already finished please search for “Completed” envelopes to find the envelope you have sent in the api call above.
As response from this api call you will get a list of all envelopes which fulfill the status.
Envelope Status & Callback
The envelope id can be used any time to receive the envelope status. Therefore, you simply call:
REST | SOAP |
---|---|
https://demo.esignanywhere.net/Api/v4.0/envelope/##envelopeId## | GetEnvelopeById_v1 |
You can find a sample response for this call in the next section:
{ "Status": "InProgress", "SendDate": "2023-04-03T07:21:13.697Z", "ExpirationDate": "2023-05-01T07:21:13.6962336Z", "ValidityFromCreationInDays": 28, "ExpirationInSecondsAfterSending": 2419200, "Bulks": [ { "Status": "InProgress", "Email": "", "LogDocumentId": "", "FinishedDocuments": [], "Steps": [ { "Id": "8d700260-2345-1234-1234-040618546ac8", "FirstName": "Jane", "LastName": "Doe", "OrderIndex": 1, "Email": "jane.doe@sample.com", "LanguageCode": "en", "Status": "NotSigned", "StatusReason": "", "RecipientType": "Signer", "WorkstepRedirectionUrl": "https://demo.esignanywhere.net/workstepredirector/sign?identifier=Bp~IrxSLSBnk9A1234LOsSiHpe6hO8mVHFu1234g80qCZJ9M1SxP12347kr33s0k~joCDCG6XAHeNA==", "AllowAccessFinishedWorkstep": true, "IsParallel": false, "WorkstepConfiguration": { "WorkstepLabel": "Test", "SmallTextZoomFactorPercent": 100, "FinishAction": { "ServerActions": [], "ClientActions": [] }, "ReceiverInformation": { "UserInformation": { "FirstName": "Jane", "LastName": "Doe", "EMail": "jane.doe@sample.com" }, "TransactionCodePushPluginData": [] }, "SenderInformation": { "UserInformation": { "FirstName": "John", "LastName": "Doe", "EMail": "john.doe@sample.com" } }, "TransactionCodeConfigurations": [], "SignatureConfigurations": [], "ViewerPreferences": { "FinishWorkstepOnOpen": false, "VisibleAreaOptions": { "AllowedDomain": "", "Enabled": false } }, "ResourceUris": { "SignatureImagesUri": "https://demo.esignanywhere.net/Resource/SignatureImages/?link=1Bp~IrxSLSB1234sSiHpe6hO8mVHFuA6lC1234V3RVuxhYT1XZYh" }, "AuditingToolsConfiguration": { "WriteAuditTrail": true }, "Policy": { "GeneralPolicies": { "AllowSaveDocument": true, "AllowSaveAuditTrail": true, "AllowRotatingPages": false, "AllowAppendFileToWorkstep": false, "AllowAppendTaskToWorkstep": false, "AllowEmailDocument": true, "AllowPrintDocument": true, "AllowFinishWorkstep": true, "AllowRejectWorkstep": true, "AllowRejectWorkstepDelegation": false, "AllowUndoLastAction": true, "AllowColorizePdfForms": false, "AllowAdhocPdfAttachments": false, "AllowAdhocSignatures": false, "AllowAdhocStampings": false, "AllowAdhocFreeHandAnnotations": false, "AllowAdhocTypewriterAnnotations": false, "AllowAdhocPictureAnnotations": false, "AllowAdhocPdfPageAppending": false, "AllowReloadOfFinishedWorkstep": true }, "WorkstepTasks": { "PictureAnnotationMinResolution": 0, "PictureAnnotationMaxResolution": 0, "PictureAnnotationColorDepth": "Color16M", "SequenceMode": "NoSequenceEnforced", "PositionUnits": "PdfUnits", "ReferenceCorner": "Lower_Left", "Tasks": [ { "Texts": [ { "Language": "en", "Value": "Agreement text" }, { "Language": "*", "Value": "Agreement text" } ], "Headings": [ { "Language": "en", "Value": "Agreement Subject" }, { "Language": "*", "Value": "Agreement Subject" } ], "IsRequired": false, "Id": "ra", "DisplayName": "ra", "DocRefNumber": 1, "DiscriminatorType": "Agreements" }, { "PositionPage": 1, "Position": { "PositionX": 100.0, "PositionY": 200.0 }, "Size": { "Height": 70.0, "Width": 100.0 }, "AdditionalParameters": [ { "Key": "enabled", "Value": "1" }, { "Key": "completed", "Value": "0" }, { "Key": "req", "Value": "1" }, { "Key": "fd", "Value": "" }, { "Key": "fd_dateformat", "Value": "dd-MM-yyyy HH:mm:ss" }, { "Key": "fd_timezone", "Value": "datetimeutc" } ], "AllowedSignatureTypes": [ { "AllowedCapturingMethod": "Click2Sign", "Ly": "default", "Id": "03923516-4d2b-460a-9950-29bc24083cec", "DiscriminatorType": "SigTypeClick2Sign", "Preferred": false, "StampImprintConfiguration": { "DisplayExtraInformation": true, "DisplayEmail": true, "DisplayIp": true, "DisplayName": true, "DisplaySignatureDate": true, "FontFamily": "Times New Roman", "FontSize": 11.0, "OverrideLegacyStampImprint": false, "DisplayTransactionId": false, "DisplayTransaktionToken": false, "DisplayPhoneNumber": false }, "SignaturePluginConfigurationId": "" } ], "UseTimestamp": false, "IsRequired": true, "Id": "1#XyzmoDuplicateIdSeperator#sample sig click2sign", "DisplayName": "Sign here", "DocRefNumber": 1, "DiscriminatorType": "Signature" } ] } }, "Navigation": { "HyperLinks": [], "Links": [], "LinkTargets": [] } } }, { "Id": "f43354e4-1234-1234-1234-f5a4cc9e0e9d", "FirstName": "John", "LastName": "Doe", "OrderIndex": 2, "Email": "john.doe@sample.com", "LanguageCode": "en", "Status": "NotSigned", "StatusReason": "", "RecipientType": "Cc", "WorkstepRedirectionUrl": "", "AllowAccessFinishedWorkstep": true, "IsParallel": false, "WorkstepConfiguration": { "SmallTextZoomFactorPercent": 100, "ViewerPreferences": {}, "Policy": { "GeneralPolicies": { "AllowRotatingPages": true, "AllowFinishWorkstep": true, "AllowUndoLastAction": true }, "WorkstepTasks": { "PictureAnnotationMinResolution": 0, "PictureAnnotationMaxResolution": 0, "PictureAnnotationColorDepth": "Color16M", "SequenceMode": "NoSequenceEnforced", "PositionUnits": "PdfUnits", "ReferenceCorner": "Lower_Left", "Tasks": [] } } } } ] } ], "Documents": [ { "PageSizesInPoints": [ { "Height": 841.8, "Width": 595.2 } ], "DocRefNumber": 1, "FileName": "Test.pdf", "FormFields": [] } ], "Id": "bb01a820-1234-1234-1234-b2d65b7492ed", "Bulk": "", "BasicOptions": { "Name": "Test", "EmailSubject": "Please sign the enclosed envelope", "EmailBody": "Dear #RecipientFirstName# #RecipientLastName#\n\n#PersonalMessage#\n\nPlease sign the envelope #EnvelopeName#\n\nEnvelope will expire at #ExpirationDate#", "EnableReminders": true, "FirstReminderDayAmount": 5, "RecurrentReminderDayAmount": 3, "BeforeExpirationDayAmount": 3 }, "LockFormFieldsAtEnvelopeFinish": false }
Callback
The configured callback URL is used to notify your system if the state of an envelope or workstep is changing.
So you can track the status of envelopes without polling the eSignAnyWhere server regulary.
Please note the following referring callbacks:
Only the envelope callback is fired, when the envelope is in a final state. The status update callback is fired by a sub-component and you may require to wait a post-processing time that the envelope reaches its final state. Therefore, please send back the HTTP 200 immediately!
If you are not returning the HTTP 200 immediately, eSignAnyWhere tries to recall the URL.
Attention: After some attempts the envelope will not be finished!
Due to these notes please send the message immediately after you receive the callback and before other callback-processing starts (e.g. download documents) to avoid a timeout of the callback!
Download a finished document
To download a finished document you simply call the function:
REST | SOAP |
---|---|
https://demo.esignanywhere.net/Api/v4.0/envelope/downloadCompletedDocument/##documentId## | DownloadCompletedDocument_v1 |
You have to use the envelope id and the document id to download the file from the server (Attention: just documents of finished envelopes can be downloaded and the document id is different from the uploaded-file-id!)
You can receive the document id from the response of the getEnvelope call.
Download respoonse in REST would be for example a 200 OK status.
Additional Information
Depending on the signature method used, it might be necessary or recommended to store additional documents beside the signed document, to ensure having the necessary evidence. For advanced electronic signatures, you might have to store also the audit trail document; and for Namirial Disposable Certificate, also the Certificate Request Form by which the signer requested issuance of the QEC. Those documents can be downloaded using the same method, just with the different file IDs.