Maddy

What changes are needed in code to allow for upload of multiple documents/pdf

0 votes
Hi Team, We are able to successfully upload a single document while creating a package . What all changes do we need to make to the code to allow upload of multiple documents? can you also provide me sample json for multiple upload As per or client requirement we need to create package and simultaniously upload multiple pdf's , but as of now the code that is provided on your website under https://www.silanis.com/blog/esignlive-for-new-users-create-and-send-a-package-using-rest-with-java/ accepts olny one pdf upload. Could you let me know the changes to be made and also let me know whether in same request you will accept json i have attached here .

Reply to: What changes are needed in code to allow for upload of multiple documents/pdf

0 votes
Hi Maddy, Below you will find a sample code on how to create and send a package with multiple documents with REST in Java. From the link you provided, only a few extra lines of code are needed.
package com.esignlive.example;
 
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;
 
public class createWithMultipleDocumentsREST {
      
     
    public static void main(String[] args) throws MalformedURLException, IOException {
         
        String requestURL = "https://sandbox.esignlive.com/api";
        String apiKey = "your_api_key";
        String charset = "UTF-8";
        File uploadFile1 = new File("DOCUMENT_FILE_PATH"); //first pdf
        File uploadFile2 = new File("DOCUMENT_FILE_PATH"); //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\":\"[email protected]\", \"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\":\"[email protected]\", \"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\" }";
        
        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 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());
    }
}
As for JSON payload, you only need to modify the "documents" property:
\"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\"
        		}]
Haris Haidary OneSpan Technical Consultant

Reply to: What changes are needed in code to allow for upload of multiple documents/pdf

0 votes
Hi Haris, Thanks for your support it worked. Further questions i have is on json part basically. If you can provide me sample json for specifying inperson = true /false per signer and how to state document signer mapping in json ? Eg:-If there are 3 signers and 4 pdf(1,2,3,4).Signer 2 has to sign (1,4 ) where can this be specified while sending json to Silanis? I need json for this complete scenario so that it will make everything work. Note:I tried creating one for above from my account , but its give bad request when triggered.Looking forward for help from you Regards Madhavi

Reply to: What changes are needed in code to allow for upload of multiple documents/pdf

0 votes
Hey Madhavi, Unfortunately, in-person signing is on an account level. Therefore, you can't set in-person signing to a specific signer. With regards to "mapping" signers to different documents, the JSON would look something like this:
"{
        		\"roles\":[
        		{
        			\"locked\":false,
        			\"emailMessage\":
        			{
        				\"content\":\"\"
        			},
        			\"attachmentRequirements\":[],
        			\"reassign\":false,
        			\"specialTypes\":[],
        			\"id\":\"Signer1\",
        			\"data\":null,
        			\"type\":\"SIGNER\",
        			\"index\":0,
        			\"signers\":[
        			{
        				\"auth\":
        				{
        					\"challenges\":[],
        					\"scheme\":\"NONE\"
        				},
        				\"company\":\"\",
        				\"firstName\":\"John\",
        				\"lastName\":\"Doe\",
        				\"phone\":\"\",
        				\"email\":\"[email protected]\",
        				\"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\":\"\"
        		},
        		{
        			\"locked\":false,
        			\"emailMessage\":
        			{
        				\"content\":\"\"
        			},
        			\"attachmentRequirements\":[],
        			\"reassign\":false,
        			\"specialTypes\":[],
        			\"id\":\"Signer2\",
        			\"data\":null,
        			\"type\":\"SIGNER\",
        			\"index\":0,
        			\"signers\":[
        			{
        				\"auth\":
        				{
        					\"challenges\":[],
        					\"scheme\":\"NONE\"
        				},
        				\"company\":\"\",
        				\"firstName\":\"Mary\",
        				\"lastName\":\"Doe\",
        				\"phone\":\"\",
        				\"email\":\"[email protected]\",
        				\"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\":\"\"
        		}],
        		\"documents\":[
        		{
        			\"approvals\":[
        			{
        				\"role\":\"Signer1\",
        				\"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\":\"\"
        			}],
        			\"name\": \"sampleAgreement\"
        		},
        		{
        			\"approvals\":[
        			{
        				\"role\":\"Signer2\",
        				\"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\":\"\"
        			}],
        			\"name\": \"myDocument\"
        		}],
        		\"name\": \"Test Package REST\",
        		\"type\":\"PACKAGE\",
        		\"language\":\"en\",
        		\"emailMessage\":\"\",
        		\"description\":\"New Package\",
        		\"autoComplete\":true,
        		\"status\":\"SENT\"
        	}"
In this case, John Doe's signature is required for the "sampleAgreement" document and Mary Doe's signature is required for the "myDocument" document. Hope this helps. Let me know if you run into any issues.
Haris Haidary OneSpan Technical Consultant

Reply to: What changes are needed in code to allow for upload of multiple documents/pdf

0 votes
HI Haris, I am posting the json which is getting generated from our EApp .This json has all fields that are their in your json for multipart file upload . Only difference is fields are up and down , but in same block. Could you let me know is your json structure fixed and do we need to have exactly same structure? Are any fields and their position in json fixed and we need to pass them at same place ?What are those? Could you check below json and tell me whats going wrong in this json as it gives bad request. { "name" : "TestingEbix Package", "type" : "PACKAGE", "status" : "SENT", "language" : "en", "roles" : [ { "signers" : [ { "language" : "en", "delivery" : { "email" : "true", "download" : "true", "provider" : "false" }, "auth" : { "scheme" : "NONE", "challenges" : [ ] }, "company" : "Silanis", "firstName" : "venkatesh", "lastName" : "dhon", "email" : "[email protected]", "professionalIdentityFields" : [ ], "userCustomFields" : [ ], "specialTypes" : [ ], "phone" : "", "title" : "", "name" : "" } ], "locked" : "false", "reassign" : "false", "id" : "Sender", "name" : "Sender", "type" : "SIGNER", "index" : "0", "attachmentRequirements" : [ ], "specialTypes" : [ ], "emailMessage" : { "content" : "" } }, { "signers" : [ { "language" : "en", "delivery" : { "email" : "true", "download" : "true", "provider" : "false" }, "auth" : { "scheme" : "NONE", "challenges" : [ ] }, "company" : "Silanis", "firstName" : "venkatesh", "lastName" : "dhon", "email" : "[email protected]", "professionalIdentityFields" : [ ], "userCustomFields" : [ ], "specialTypes" : [ ], "phone" : "", "title" : "", "name" : "" } ], "locked" : "false", "reassign" : "false", "id" : "Sender", "name" : "Sender", "type" : "SIGNER", "index" : "0", "attachmentRequirements" : [ ], "specialTypes" : [ ], "emailMessage" : { "content" : "" } } ], "description" : "New Package", "autoComplete" : "true", "documents" : [ { "approvals" : [ { "fields" : [ { "extract" : "false", "page" : "0", "subtype" : "FULLNAME", "width" : "200", "left" : "175", "top" : "165", "height" : "50", "type" : "SIGNATURE", "value" : "" } ], "role" : "Signer", "name" : "" }, { "fields" : [ { "extract" : "false", "page" : "0", "subtype" : "FULLNAME", "width" : "200", "top" : "165", "height" : "50", "type" : "SIGNATURE", "left" : "550", "value" : "" } ], "role" : "Sender", "name" : "" } ], "name" : "WMA010_Signature_Pages_2015" }, { "approvals" : [ { "fields" : [ { "extract" : "false", "page" : "0", "subtype" : "FULLNAME", "width" : "200", "left" : "175", "top" : "165", "height" : "50", "type" : "SIGNATURE", "value" : "" } ], "role" : "Signer", "name" : "" }, { "fields" : [ { "extract" : "false", "page" : "0", "subtype" : "FULLNAME", "width" : "200", "top" : "165", "height" : "50", "type" : "SIGNATURE", "left" : "550", "value" : "" } ], "role" : "Sender", "name" : "" } ], "name" : "WMA010_Signature_Pages" }, { "approvals" : [ { "fields" : [ { "extract" : "false", "page" : "0", "subtype" : "FULLNAME", "width" : "200", "left" : "175", "height" : "50", "type" : "SIGNATURE", "value" : "" } ], "role" : "Signer", "name" : "" }, { "fields" : [ { "extract" : "false", "page" : "0", "subtype" : "FULLNAME", "width" : "200", "height" : "50", "type" : "SIGNATURE", "left" : "550", "value" : "" } ], "role" : "Sender", "name" : "" } ], "name" : "WMA100_Policy_Transfer_Disclosure_Agreement_2015" } ], "emailMessage" : "" }

Reply to: What changes are needed in code to allow for upload of multiple documents/pdf

0 votes
The structure of the json properties is definitely not fixed. You can put them anywhere you want as long as it is consistent with our API. By looking at your json, it looks like you set the same "id" to different signers. Try putting different "id" for each sender and see if that works. Also, can you post the error you are getting?
Haris Haidary OneSpan Technical Consultant

Reply to: What changes are needed in code to allow for upload of multiple documents/pdf

0 votes
Hi Hari, Thanks for your constant support , it helped us a lot to make ceremony work. Now on working json i have a question - \"signers\":[ { \"auth\": { \"challenges\":[], \"scheme\":\"NONE\" }, \"company\":\"\", \"firstName\":\"John\", \"lastName\":\"Doe\", \"phone\":\"\", \"email\":\"[email protected]\", In signer block is "email " mandatory? If i pass "email":"" ----fails (400 bad request) if i dot pass email at all ----fails (400 bad request) Co-operators requirement- As per our client requirement , we are supposed to pass mail id of signers who are supposed to sign "Remotely". We are not supposed to capture mail ids of signers signing "Inperson" IN such case json can have mail id for few signers only. Could you suggest how to create working json for this or can share a sample. Regards Madhavi

Reply to: What changes are needed in code to allow for upload of multiple documents/pdf

0 votes
Unfortunately, an email is required when creating packages. There is no work around for that.
Haris Haidary OneSpan Technical Consultant

Reply to: What changes are needed in code to allow for upload of multiple documents/pdf

0 votes
Hi Haris, Another question when we have multiple signers , how do we initiate request for session of each signer and open session for signer? I mean 1 have 3 signers- I made a request for session of 1st signer and accordingly i have opened browser for him to signatures, Now when do i request for 2nd signer ? Will you be sending immediate notification once 1st signer completes his signatures ? How will i know i have to initiate for 2nd and similarly for 3rd. Bse on frontend we cant make signers to wait for long as we have to handle this in background. Second question - if i want to refresh same browser with 2nd signers token , can we do that instead of opening multiple browsers one after another. Third question -If one signer completes his signatures will you show any pop up window that he has "completed his signatures" and then we can switch to another signer session in same window ?Is that feasible ? If yes whom do we request for this change at your end? Fourth question can i have multiple signer session windows opened simultaniously ?Does that cause 404/500 issue in any browser as other session is opened ?This is just for my knowledge about workflow. Kindly assist me with answers for above queries. Regards Madhavi

Reply to: What changes are needed in code to allow for upload of multiple documents/pdf

0 votes
1. You can create a session for each signer simultaneously. You do not have to wait for a signer to sign in order to create a new session. 2. Yes, you can. Keep in mind that signer tokens are only valid for 30 mins. 3. You will only be notified when document package signing is completed. You will not be notified if only one signer has signed your document. The only workaround I would have for you is to refresh the page and have a look at the progression bar. 4. You can have multiple sessions open at the same time. It will not cause any issues.
Haris Haidary OneSpan Technical Consultant

Reply to: What changes are needed in code to allow for upload of multiple documents/pdf

0 votes
Hi Hari, Below are questions on your response you have provided last- 1As part of cooperators implementation we need to show the status of each signer signing process on the scree (in progress/completed/......) during complete ceremony process. As per your last response if you say that you wont be sending status response as each signer completes his signature how do we achieve above ? We have to keep refreshing page to refresh status as and when per signer, and it would not be possible if you dont send response per signer. So, if you can accommodate this change at your end and can provide me one sample response , it would really help to achieve our client requirement. Moreover we dont want to open different browsers for signers , we want to refresh same browser and we cant achieve that in our code just seeing Silanis progress bar. So here also if we receive immediate notification with status , code implementation will be possible . Regards Madhavi

Reply to: What changes are needed in code to allow for upload of multiple documents/pdf

0 votes
When creating your package, you would have to enable "in-person" signing. Therefore, when you create your session, the eSignLive UI will take care of the rest (i.e. you won't have to refresh your browser). You can also retrieve the signing status of each signer. You would make a request to "https://sandbox.esignlive.com/api/packages/{your_package_id}/signingStatus?signer={signer_id}". You would have to keep track of this on your side.
Haris Haidary OneSpan Technical Consultant

Reply to: What changes are needed in code to allow for upload of multiple documents/pdf

0 votes
Hi Haris, Could you send me a json where in-person is enabled for multiple signers. We dont want to do it from my silanis account.As when in actual scenario json will be triggered from eapp which should have in-person tag. If you can provide sample json it will help. Also if you can tell me if we send inperson=true for 2,3 signers of a package , will silanis switch between the list of inperson signers or d we need to trigger request for each signer sessions and open /refresh browsers for them. Regards Madhavi

Reply to: What changes are needed in code to allow for upload of multiple documents/pdf

0 votes
As I mentioned before, you can't set in-person signing to individual signers. When in-person is enabled, all signers have to sign on the same device. When you create a session with in-person enabled, you don't have to refresh your browser. The eSignLive UI will take care of the signing ceremony. You will find a drop-down list to switch between the signers. Below is example of what you might expect when you enable in-person: in person signing example You can find an example of the JSON here.
Haris Haidary OneSpan Technical Consultant

Hello! Looks like you're enjoying the discussion, but haven't signed up for an account.

When you create an account, we remember exactly what you've read, so you always come right back where you left off