Welcome to the eSignLive
Developer Community!

The place for developers to find information and get started with the world’s leading electronic signature solution.

Get Started!

Most recent code share

See All Code Share

Extracted Field Example

lmudgett

Submitted Sep 29 2016

This samples shows how to use extracted fields with eSignLive. Features: Binding a signature date to a form field called Date Binding a textbox to a form field called Title The user can enter the desired value in the Title textbox  

extraction

Java

PDF Form

2 views 0 downloads

Create and Send a Package in Go (REST API)

harishaidary

Submitted Sep 21 2016

Example code shows how to create and send a package in Go. 

create

eSignLive

package

REST

16 views 1 downloads

Upcoming events and webinars

See All events

From the blog

eSignLive How To: Create and Send A Package with REST in Go

Go (or golang) is an open-source general purpose programming language created by Google. Go’s native concurrency features are well suited for web applications (e.g. APIs, Web servers, etc.). Go offers many advantages over other general-purpose programming languages. For one, the … Continued

eSignLive How To: Create and Send A Package with REST in Perl

Sep 07, 2016 by Haris Haidary
Perl is a general purpose programming language that was originally intended for text manipulation. These days, however, it used in a wide variety of applications, such as web development. Over the years, it gained popularity amongst developers due to its … Continued

Learn more

eSignLive How To: Create and Send A Package with REST in Ruby

Aug 31, 2016 by Haris Haidary
Ruby On Rails is a web application development framework written in the Ruby language. It is designed to make web applications developing easier by allowing you to write less code while accomplishing more than many other languages and frameworks. Ruby … Continued

Learn more

Additional Resources

SDK

Integrating eSignLive into your application is easier with the eSignLive SDKs. Available for Java and .NET.

Browse SDK

Guides

In this section, you will find tutorial style guides to get you started on the right track. Whether you are a new or experienced developer, you’re sure to find what you need to make integrating eSignLive into your solution a breeze.

View guides

Documentation

Find release notes for eSignLive and documentation for eSignLive’s Java/.NET SDKs and REST API.

Explore

Legality Information

Are e-Signatures legally binding, just like a signature on a piece of paper? Find out the answer to this and more legal info behind e-Signatures in our FAQs.

Read our Legality Information

eSignLive Sandbox

A Sandbox account give you access to a fully functioning, watermarked version of eSignLive to do your integration development and testing.

Go to Sandbox

eSignLive Production

Once you have completed your integration development and testing with the Sandbox and have purchased a license, you will be ready to migrate to the Production version of the world’s leading e-signature solution.

Go to eSignLive

Forum

most recent

FULLNAME signature block format changing between English and French
Hello, I am not sure if this is an issue with the APEX SDK, REST API, or bug in eSignLive. We are using the APEX SDK to create the package + documents in one call from a custom Salesforce page. Our signature blocks are built in 2 parts: a FULLNAME signature, and an input LABEL with a timestamp of the signature. The FULLNAME signature block in English shows up correctly when someone signs, with the "E-SIGNED by FirstName LastName" text followed by the timestamp; however, if that exact same document is signed in french, we see 2 timestamps: the input LABEL's timestamp is generate normally, but the FULLNAME signature block will also generate one. I've looked around in the documentation but I couldn't find any attribute pointing to the format of the FULLNAME signature block. How do we show or hide the timestamp on the FULLNAME signature ? Here is the JSON for the English signature block:
"fields": [
        {
          "id": "Qcewbi73sEw3",
          "subtype": "LABEL",
          "extract": false,
          "page": 7,
          "top": 421.1999816894531,
          "data": null,
          "height": 19.5,
          "binding": "{approval.signed}",
          "extractAnchor": null,
          "left": 219.6999969482422,
          "validation": null,
          "width": 149.5,
          "type": "INPUT",
          "value": "yyyy-MM-dd HH:mm:ss 'GMT'",
          "name": ""
        },
        {
          "id": "oE6fluyq0VMD",
          "subtype": "FULLNAME",
          "extract": false,
          "page": 7,
          "top": 377.7969055175781,
          "data": null,
          "height": 40.29999923706055,
          "binding": null,
          "extractAnchor": null,
          "left": 220.67498779296875,
          "validation": null,
          "width": 175.5,
          "type": "SIGNATURE",
          "value": "",
          "name": "70bXnSFLVL4L"
        }
      ],
And here is the french version:
"fields": [
        {
          "id": "ApiJNMpaSTIS",
          "subtype": "LABEL",
          "data": null,
          "page": 5,
          "top": 911.2999877929688,
          "height": 19.5,
          "binding": "{approval.signed}",
          "extractAnchor": null,
          "validation": null,
          "width": 149.5,
          "left": 74.0999984741211,
          "extract": false,
          "type": "INPUT",
          "value": "yyyy-MM-dd HH:mm:ss 'GMT'",
          "name": ""
        },
        {
          "id": "XCWgppSjKb4K",
          "subtype": "FULLNAME",
          "data": null,
          "page": 5,
          "top": 866.492919921875,
          "height": 40.29999923706055,
          "binding": null,
          "extractAnchor": null,
          "validation": null,
          "width": 175.5,
          "left": 75.07499694824219,
          "extract": false,
          "type": "SIGNATURE",
          "value": "",
          "name": "K2Di8CLiaVc8"
        }
      ],
I have also attached screenshots of the signature blocks if that helps. Thanks in advance
Reply
Is it possible to navigate the user to a different page after opt-out
1. Is it possible to show user a custom popup after clicking on OPT-OUT button? I would like to display a popup window with a confirmation to the user, that he is discontinuing the esign ceremony process with OK and Cancel button. Clicking on OK button, I would like user to be navigated to a different page and clicking on Cancel page, user needs to be on the same page. 2. Is is possible to navigate the user a different page after choosing to OPT-OUT? Thanks, Ram
Reply
Error retrieving Designer view with sender account in package
I'm trying to load the classic Ui designer view in an iFrame. I have changed the way I'm creating the package to include a sender account. Below is the code I'm using to create the sender account and the package.
  string senderAccount = companyId.ToString() + "SENDER" + updateApproval.createUserId.ToString() + "@esl.boardbookit.com";
 AccountMember member = AccountMemberBuilder.NewAccountMember(senderAccount)
                        .WithFirstName(companyUserProfileModel.firstName)
                        .WithLastName(companyUserProfileModel.lastName)
                        .WithCompany(companyUserProfileModel.companyName)
                        .WithStatus(SenderStatus.ACTIVE)
                        .Build();

              Sender    senderMember = eslClient.AccountService.InviteUser(member);
 DocumentPackage newPackage = PackageBuilder
                    .NewPackageNamed(updateApproval.name)
                    .WithSenderInfo(SenderInfoBuilder.NewSenderInfo(senderMember.Email))
                    .WithSettings(DocumentPackageSettingsBuilder.NewDocumentPackageSettings()
                            .WithoutInPerson()
                            .WithoutLanguageDropDown()
                            .HideOwnerInPersonDropDown()
                            .WithoutWatermark()
                            .WithoutDocumentToolbarDownloadButton()
                            .WithoutDialogOnComplete()
                            .WithoutOptOut()
                            .WithoutOptOutOther()
                            .WithoutLanguageDropDown()
                            .WithCeremonyLayoutSettings(CeremonyLayoutSettingsBuilder.NewCeremonyLayoutSettings()
                                    .WithoutNavigator()
                                    .WithoutGlobalNavigation()
                                    .WithoutBreadCrumbs()
                                    .WithoutSessionBar()
                                    .WithProgressBar()
                                    .WithoutTitle()
                                    .WithIFrame()
                                    .WithoutGlobalConfirmButton()
                                    .WithoutGlobalDownloadButton()
                                    .WithoutGlobalSaveAsLayoutButton()
                                    ))
                            .WithAttributes(new DocumentPackageAttributesBuilder().WithAttribute("declined", false))
                    .Build();

                PackageId package = eslClient.CreatePackage(newPackage);
When I go to create the designer url, I either get an error saying the package is not accessible or the screen shot attached about cookies. Can you tell me how to generate the designer URL in the classic view for the sender that created the package? This person needs to be able to modify the package in the designer view. I'm tried every combination of getting the authentication token and building the designer url via the sdk and manually, but still no luck. I'm using https://sandbox.e-signlive.com/api to access the classic UI in my URLs. Thank you, Colleen
Reply
single step package creation classissue with prod account
Hi Team , As suggested by you we are using single step package creation call where in package creation, doc upload and status sent happens at one go .For this we are using silanis provided java class. This is wrking perfectly fine in all environments but when we moved to production , its giving connection refused exception. We have whitelisted silanis IP's and when we try using POSTMAN it works but when we run same java class from our integration , its giving connection refused error. Even if we try as standalone class from eclipse it gives same error. Please help. we have to move to production resloving this issue and need your immediate help. Java class that we are using:- import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.nio.file.Files; import java.nio.file.Paths; public class MultipleDocumentUpload { public static void main(String[] args) throws MalformedURLException, IOException { //US Account //String requestURL = "https://sandbox.e-signlive.com/api"; //String apiKey = "V1pvdGNaTWI5endROmRZZXU1ajRQYVZJQQ=="; //Canada Account //String requestURL = "https://sandbox.e-signlive.ca/api"; //String apiKey = "Z2hiZ1k0WkVYendFOnpEVWlHN1JRWDc0MA=="; //Production Account String requestURL = "https://apps.e-signlive.ca/api"; String apiKey = "NDU1dGZmYmFmblFLOkJheEpiV0NqMzI4WQ=="; String charset = "UTF-8"; //File uploadFile1 = new File("D:/multipart/WMA010 Signature Pages.pdf"); //first pdf //File uploadFile2 = new File("D:/multipart/WMA010 Signature Pages - 2015.pdf"); //second pdf //File uploadFile3 = new File("D:/multipart/WMA100 Policy Transfer Disclosure Agreement - 2015.pdf"); //second pdf File uploadFile1 = new File("D:/multipart/WMA010.pdf"); //first pdf File uploadFile2 = new File("D:/multipart/LIF131-0.pdf"); //second pdf //File uploadFile3 = new File("D:/multipart/LUR332-0.pdf"); //second pdf //File uploadFile4 = new File("D:/multipart/LIF131-0.pdf"); //second pdf String boundary = Long.toHexString(System.currentTimeMillis()); // Generate a random value for the form boundary String CRLF = "\r\n"; // Line separator used in multipart/form-data. //String jsonContent = "{ \"roles\":[ { \"locked\":false, \"emailMessage\": { \"content\":\"\" }, \"attachmentRequirements\":[], \"reassign\":false, \"specialTypes\":[], \"id\":\"Sender\", \"data\":null, \"type\":\"SIGNER\", \"index\":0, \"signers\":[ { \"auth\": { \"challenges\":[], \"scheme\":\"NONE\" }, \"company\":\"Silanis\", \"firstName\":\"YOUR_FIRST_NAME\", \"lastName\":\"YOUR_LAST_NAME\", \"phone\":\"\", \"email\":\"your.email@example.com\", \"knowledgeBasedAuthentication\":null, \"language\":\"en\", \"title\":\"\", \"external\":null, \"professionalIdentityFields\":[], \"userCustomFields\":[], \"delivery\": { \"email\":true, \"provider\":false, \"download\":true }, \"group\":null, \"signature\":null, \"address\":null, \"data\":null, \"name\":\"\", \"specialTypes\":[] }], \"name\":\"Sender\" }, { \"locked\":false, \"emailMessage\": { \"content\":\"\" }, \"attachmentRequirements\":[], \"reassign\":false, \"specialTypes\":[], \"id\":\"Signer\", \"data\":null, \"type\":\"SIGNER\", \"index\":0, \"signers\":[ { \"auth\": { \"challenges\":[], \"scheme\":\"NONE\" }, \"company\":\"\", \"firstName\":\"SIGNER_FIRST_NAME\", \"lastName\":\"SIGNER_LAST_NAME\", \"phone\":\"\", \"email\":\"signer.email@example.com\", \"knowledgeBasedAuthentication\":null, \"language\":\"en\", \"title\":\"\", \"external\":null, \"professionalIdentityFields\":[], \"userCustomFields\":[], \"delivery\": { \"email\":false, \"provider\":false, \"download\":false }, \"group\":null, \"id\":\"Signer\", \"signature\":null, \"address\":null, \"data\":null, \"name\":\"\", \"specialTypes\":[] }], \"name\":\"Signer\" }], \"documents\":[ { \"approvals\":[ { \"role\":\"Signer\", \"signed\":null, \"accepted\":null, \"data\":null, \"fields\":[ { \"page\":0, \"subtype\":\"FULLNAME\", \"width\":200, \"binding\":null, \"extract\":false, \"extractAnchor\":null, \"left\":175, \"top\":165, \"validation\":null, \"height\":50, \"data\":null, \"type\":\"SIGNATURE\", \"value\":\"\" }], \"name\":\"\" }, { \"role\":\"Sender\", \"signed\":null, \"accepted\":null, \"data\":null, \"fields\":[ { \"page\":0, \"subtype\":\"FULLNAME\", \"width\":200, \"binding\":null, \"extract\":false, \"extractAnchor\":null, \"left\":550, \"top\":165, \"validation\":null, \"height\":50, \"data\":null, \"type\":\"SIGNATURE\", \"value\":\"\" }], \"name\":\"\" }], \"name\": \"sampleAgreement\" }, { \"approvals\":[ { \"role\":\"Signer\", \"signed\":null, \"accepted\":null, \"data\":null, \"fields\":[ { \"page\":0, \"subtype\":\"FULLNAME\", \"width\":200, \"binding\":null, \"extract\":false, \"extractAnchor\":null, \"left\":175, \"top\":165, \"validation\":null, \"height\":50, \"data\":null, \"type\":\"SIGNATURE\", \"value\":\"\" }], \"name\":\"\" }, { \"role\":\"Sender\", \"signed\":null, \"accepted\":null, \"data\":null, \"fields\":[ { \"page\":0, \"subtype\":\"FULLNAME\", \"width\":200, \"binding\":null, \"extract\":false, \"extractAnchor\":null, \"left\":550, \"top\":165, \"validation\":null, \"height\":50, \"data\":null, \"type\":\"SIGNATURE\", \"value\":\"\" }], \"name\":\"\" }], \"name\": \"myDocument\" }], \"name\": \"Test Package REST\", \"type\":\"PACKAGE\", \"language\":\"en\", \"emailMessage\":\"\", \"description\":\"New Package\", \"autoComplete\":true, \"status\":\"SENT\" }"; byte[] encoded = Files.readAllBytes(Paths.get("D:/multipart/silanis.json")); String jsonContent = new String(encoded, charset); URLConnection connection = new URL(requestURL + "/packages/").openConnection(); connection.setDoOutput(true); connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary); connection.setRequestProperty("Authorization", "Basic " + apiKey); connection.setRequestProperty("Accept", "application/json"); OutputStream output = connection.getOutputStream(); PrintWriter writer = new PrintWriter(new OutputStreamWriter(output, charset), true); try { // Add first pdf file. writer.append("--" + boundary).append(CRLF); writer.append("Content-Disposition: form-data; name=\"file\"; filename=\"" + uploadFile1.getName() + "\"").append(CRLF); writer.append("Content-Type: " + URLConnection.guessContentTypeFromName(uploadFile1.getName())).append(CRLF); writer.append("Content-Transfer-Encoding: application/pdf").append(CRLF); writer.append(CRLF).flush(); Files.copy(uploadFile1.toPath(), output); output.flush(); writer.append(CRLF).flush(); // Add second file. writer.append("--" + boundary).append(CRLF); writer.append("Content-Disposition: form-data; name=\"file\"; filename=\"" + uploadFile2.getName() + "\"").append(CRLF); writer.append("Content-Type: " + URLConnection.guessContentTypeFromName(uploadFile2.getName())).append(CRLF); writer.append("Content-Transfer-Encoding: application/pdf").append(CRLF); writer.append(CRLF).flush(); Files.copy(uploadFile2.toPath(), output); output.flush(); writer.append(CRLF).flush(); // Add third file. /*writer.append("--" + boundary).append(CRLF); writer.append("Content-Disposition: form-data; name=\"file\"; filename=\"" + uploadFile3.getName() + "\"").append(CRLF); writer.append("Content-Type: " + URLConnection.guessContentTypeFromName(uploadFile3.getName())).append(CRLF); writer.append("Content-Transfer-Encoding: application/pdf").append(CRLF); writer.append(CRLF).flush(); Files.copy(uploadFile3.toPath(), output); output.flush(); writer.append(CRLF).flush();*/ // Add third file. /*writer.append("--" + boundary).append(CRLF); writer.append("Content-Disposition: form-data; name=\"file\"; filename=\"" + uploadFile4.getName() + "\"").append(CRLF); writer.append("Content-Type: " + URLConnection.guessContentTypeFromName(uploadFile4.getName())).append(CRLF); writer.append("Content-Transfer-Encoding: application/pdf").append(CRLF); writer.append(CRLF).flush(); Files.copy(uploadFile4.toPath(), output); output.flush(); writer.append(CRLF).flush();*/ // add json payload writer.append("--" + boundary).append(CRLF); writer.append("Content-Disposition: form-data; name=\"payload\"").append(CRLF); writer.append("Content-Type: application/json; charset=" + charset).append(CRLF); writer.append(CRLF).append(jsonContent).append(CRLF).flush(); // End of multipart/form-data. writer.append("--" + boundary + "--").append(CRLF).flush(); } catch (IOException ex) { System.err.println(ex); } //get and write out response code int responseCode = ((HttpURLConnection) connection).getResponseCode(); System.out.println(responseCode); //get and write out response BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); //print result System.out.println(response.toString()); } } Regards Madhavi
Reply
Get PDF with curl returns nothing
I'm trying to get the pdf file via php using curl but I get nothing returned. When I do the same in Postman I get the PDF file. Here is my php code
$headers = array('Content-Type: application/json', 'Authorization: Basic '.$ApiKey, 'Accept: application/pdf', 'Connection: Keep-Alive');
$url = 'https://apps.e-signlive.com/api' . '/packages/'.$packageId.'/documents/'.$documentid.'/pdf';
$ch = curl_init();
$timeout = 60;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$data = curl_exec($ch);
curl_close($ch);
echo $data;
Can someone see something I missed? Thanks
Reply
Getting an exception using FULL_NAME + INITIALS signature styles in one document
I am using the Java SDK version 10.10.1 I am creating a package with one document. There is one Signer. This signer has a FULLNAME signature and an INITIALS signature. This is the sequence of my code: 1. Call to EslClient.createPackage() succeeds. 2. Use EslClient.getPackage using the package id that was returned from createPackage. 3. Make some settings changes to the package. 4. Call to EslClient.updatePackage which fails with this exception: com.silanis.esl.sdk.EslException: It is not allowed to use acceptance signature styles and other signature styles together in one document. at com.silanis.esl.sdk.EslClient.validateMixingSignatureAndAcceptance(EslClient.java:289) at com.silanis.esl.sdk.EslClient.validateSignatures(EslClient.java:276) at com.silanis.esl.sdk.EslClient.updatePackage(EslClient.java:231) I have added some debugging that checks the Signature styles in the package before calling createPackage() and after getPackage(). Before calling createPackage() the Signature styles are: FULL_NAME INITIALS After calling getPackage() the Signature styles are: ACCEPTANCE INITIALS
Reply

Partners big and small that integrate with eSignLive

See partner page