JimO

Looking for options for a multistep signing process

0 votes
Greetings I'm building an app for a customer using ESignLive. person1 fills in a couple Textbox fields with numbers and signs a document (there is only one place for that person to sign). The document is still open (not complete yet). 2 Months later person1 signs the document again in a different location (again there is only one place that person to sign) associated with the signature is a Label that contains the sum of the number fields in the first signing. I'm able to do this if the user is an account owner, but not if they are an invited signer. How can I do this for an invited user? Thanks Jim

Reply to: Looking for options for a multistep signing process

0 votes
Hey Jim, How are you able to do this with the account owner? Once a document has been signed once, no modifications can be made. Even if the account owner is the only signer, the document still cannot be modified. Are you meaning as account owner you know not to sign the document for 2 months? Or am I missing some trick to make this work? :) The only thing I could think of to suggest would be to turn off "auto-complete" on the transaction, send it to the signer with a single document with one signature. After they have signed, you would make the package a draft again, add a different document with the second signature, and resend at the 2 months later date. The signer would then be able to sign this second document. Please let me know how you're handling this with the account owner and if the option I gave above would be an option.

- Michael

Director, Partner and Developer Technologies, OneSpan

Facebook - Twitter - LinkedIn


Reply to: Looking for options for a multistep signing process

0 votes
Hi Michael Thanks for the quick reply. I use a direct REST call to update a label after user1 has signed. Note, the label that I update is tied to a signature for the account owner not user1. Here's the code private void SignMe(string PackID, string DocID, string approvalID, string fieldsID, string LabelText) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://sandbox.e-signlive.com/api/packages/" + PackID + "/documents/" + DocID + "/approvals/" + approvalID + "/fields/" + fieldsID); request.Method = "POST"; request.Accept = "application/json; esl-api-version=10.6"; request.ContentType = "application/json"; request.Headers["Authorization"] = "Basic " + API_KEY; using (var streamWriter = new StreamWriter(request.GetRequestStream())) { string json = "{\"id\":\"" + fieldsID + "\",\"value\":\"" + LabelText + "\"}"; streamWriter.Write(json); streamWriter.Flush(); streamWriter.Close(); } using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { using (StreamReader sr = new StreamReader(response.GetResponseStream())) { if (sr.ReadToEnd() == "") { p("Update Worked", false); } } } } If I can't have a non Account owner update a label after a signature has occured, can I instead, have a Account owner have a signature field signed programmatically? That would also solve my problem Thanks again, Jim

Reply to: Looking for options for a multistep signing process

0 votes
So, you don't need the signer to sign again, two months later? As for having a package owner having a signature that will be signed automatically, yes, this can be done. All you have to do is send a POST request sent to:
https://sandbox.esignlive.com/api/packages/{PACKAGE_ID}/documents/signed_documents
with a payload like this:
{"documents":[{"status":"","signedHash":null,"approvals":[{"signed":null,"accepted":null,"role":"f9873b25-68f6-445f-bef0-336aa6b69c03","id":"fdd486dc-de7b-42c8-b870-c18aa143617d","data":null,"fields":[],"name":"fdd486dc-de7b-42c8-b870-c18aa143617d"}],"pages":[{"height":1030.0,"width":796.0,"left":0.0,"id":"","top":0.0,"index":0,"version":0},{"height":1030.0,"width":796.0,"left":0.0,"id":"","top":0.0,"index":1,"version":0}],"external":null,"extract":false,"id":"default-consent","data":null,"fields":[],"index":0,"description":"Must be accepted and agreed to before starting the signing process.","name":"Electronic Disclosures and Signatures Consent","size":0},{"status":"","signedHash":null,"approvals":[{"signed":null,"accepted":null,"role":"f9873b25-68f6-445f-bef0-336aa6b69c03","id":"sTVAYm21r00S","data":null,"fields":[{"height":44.298797607421875,"subtype":"FULLNAME","binding":null,"extractAnchor":null,"validation":null,"width":227.18150329589844,"left":148.97479248046875,"top":163.47889709472656,"extract":false,"id":"PlPfA1je4BkP","page":0,"data":null,"type":"SIGNATURE","value":"","name":"sTVAYm21r00S"}],"name":"sTVAYm21r00S"}],"pages":[{"height":1030.0,"width":796.0,"left":0.0,"id":"","top":0.0,"index":0,"version":0}],"external":null,"extract":false,"id":"ffe1ffa9495b510d","data":null,"fields":[],"index":1,"description":"","name":"sampleAgreement","size":5734}]}
This is essentially just the document portion of the package JSON with only the approvals and fields of the package owner.

- Michael

Director, Partner and Developer Technologies, OneSpan

Facebook - Twitter - LinkedIn


Reply to: Looking for options for a multistep signing process

0 votes
Thanks Michael Yes I do need the signer to sign again 2 months later, but I'm using UpdateSigner to handle that, and it is working OK. Does the REST call above also work on Sandbox-E-SignLive.com as well? Thanks, Jim

Reply to: Looking for options for a multistep signing process

0 votes
Yep. It will work on the new sandbox, at least. I think the e-signlive sandbox was also going to be updated with this feature, but I have not tested it. Obviously that exact payload will not work as you'll need to get your package JSON and pass in the documents section for your package. Let me know if you have issues or if you're using sandbox.e-signlive.com and it doesn't work for you there.

- Michael

Director, Partner and Developer Technologies, OneSpan

Facebook - Twitter - LinkedIn


Reply to: Looking for options for a multistep signing process

0 votes
Hi Michael Thanks again for the quick responses Both https://sandbox.e-signlive.com and https://sandbox.esignlive.com are running version are running "sdk": ".NET v11.0", so I assume this should work there, but I can't seem to programmatically sign a document with REST. Here is my JSON package
{"documents":[{"status":"","approvals":[{"signed":null,"accepted":null,"role":"a6bb49aa-565b-4b76-81ba-53310e769d2f","id":"MySiggy0","data":null,"fields":[{"subtype":"LABEL","height":29.999969482421875,"extractAnchor":null,"left":615.0000610351562,"top":780,"validation":null,"width":80.00004577636719,"extract":false,"binding":"{approval.signed}","page":0,"id":"TmSq3op92qsX","data":null,"type":"INPUT","value":"yyyy-MM-dd","name":""},{"subtype":"LABEL","height":29.999969482421875,"extractAnchor":null,"left":515.0001831054688,"top":710.0001831054688,"validation":null,"width":39.99995803833008,"extract":false,"binding":null,"page":0,"id":"Col3","data":null,"type":"INPUT","value":"","name":""},{"subtype":"FULLNAME","height":39.99995803833008,"extractAnchor":null,"left":261.9993896484375,"top":759.9994506835938,"validation":null,"width":199.99978637695312,"extract":false,"binding":null,"page":0,"id":"koRZAMyptYIC","data":null,"type":"SIGNATURE","value":"","name":"koRZAMyptYIC"}],"name":""}],"pages":[{"height":1030,"left":0,"width":796,"top":0,"id":"e1a1acd27a3ce9dc_1.png","index":0,"version":748099},{"height":1030,"left":0,"width":796,"top":0,"id":"e1a1acd27a3ce9dc_2.png","index":1,"version":748100},{"height":1030,"left":0,"width":796,"top":0,"id":"e1a1acd27a3ce9dc_3.png","index":2,"version":748101},{"height":1030,"left":0,"width":796,"top":0,"id":"e1a1acd27a3ce9dc_4.png","index":3,"version":748102},{"height":1030,"left":0,"width":796,"top":0,"id":"e1a1acd27a3ce9dc_5.png","index":4,"version":748103},{"height":1030,"left":0,"width":796,"top":0,"id":"e1a1acd27a3ce9dc_6.png","index":5,"version":748104},{"height":1030,"left":0,"width":796,"top":0,"id":"e1a1acd27a3ce9dc_7.png","index":6,"version":748105},{"height":1030,"left":0,"width":796,"top":0,"id":"e1a1acd27a3ce9dc_8.png","index":7,"version":748106},{"height":1030,"left":0,"width":796,"top":0,"id":"e1a1acd27a3ce9dc_9.png","index":8,"version":748107},{"height":1030,"left":0,"width":796,"top":0,"id":"e1a1acd27a3ce9dc_10.png","index":9,"version":748108},{"height":1030,"left":0,"width":796,"top":0,"id":"e1a1acd27a3ce9dc_11.png","index":10,"version":748109},{"height":1030,"left":0,"width":796,"top":0,"id":"e1a1acd27a3ce9dc_12.png","index":11,"version":748110},{"height":1030,"left":0,"width":796,"top":0,"id":"e1a1acd27a3ce9dc_13.png","index":12,"version":748111},{"height":1030,"left":0,"width":796,"top":0,"id":"e1a1acd27a3ce9dc_14.png","index":13,"version":748112},{"height":1030,"left":0,"width":796,"top":0,"id":"146349bb607a57db_15.png","index":14,"version":723824},{"height":1030,"left":0,"width":796,"top":0,"id":"146349bb607a57db_16.png","index":15,"version":723825},{"height":1030,"left":0,"width":796,"top":0,"id":"146349bb607a57db_17.png","index":16,"version":723826},{"height":1030,"left":0,"width":796,"top":0,"id":"146349bb607a57db_18.png","index":17,"version":723827},{"height":1030,"left":0,"width":796,"top":0,"id":"146349bb607a57db_19.png","index":18,"version":723828}],"external":null,"extract":false,"description":"","id":"c9425617034d9442","data":null,"index":0,"fields":[],"name":"CD-430Lianna1","size":609752}]}
Here's my call, where jgot is the JSON shown above
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://sandbox.e-signlive.com/api/packages/e8ff205f-d582-4136-95cb-8d80076ade26/documents/signed_documents");
request.Method = "POST";
request.Accept = "application/json; esl-api-version=10.6";
request.ContentType = "application/json";
request.Headers["Authorization"] = "Basic " + API_KEY;
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
    streamWriter.Write(jgot);
    streamWriter.Flush();
    streamWriter.Close();
}
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
    using (StreamReader sr = new StreamReader(response.GetResponseStream()))
    {
        if (sr.ReadToEnd() == "")
        {
            p("Update Worked", false);
        }
    }
}
I get this error: "The remote server returned an error: (400) Bad Request."

Reply to: Looking for options for a multistep signing process

0 votes
I'll work on making a simple example from start to finish for you.

- Michael

Director, Partner and Developer Technologies, OneSpan

Facebook - Twitter - LinkedIn


Reply to: Looking for options for a multistep signing process

0 votes
Hi Michael I was able to get the REST call to accept my JSON package. This works if I set the approvals to a blank array ("approvals":[]), which is how it is shown in rest_api_documents.pdf, but my document does not get signed. So if you can make a working example, that would be great Thanks Jim

Reply to: Looking for options for a multistep signing process

0 votes
Not a problem. I'll get that posted sometime this afternoon. :)

- Michael

Director, Partner and Developer Technologies, OneSpan

Facebook - Twitter - LinkedIn


Reply to: Looking for options for a multistep signing process

0 votes
Okay. It's so simple I don't even need to post an example. All you need to do to sign for the owner of the API_Key you're using with the REST API is to pass the document ID of the documents that you need signed by that signer. Example: I have two documents in my transaction. The consent form (owner doesn't have to complete this) and the signature document. All I have to do is pass the id of the signature document in the JSON payload:
"{"documents":[{"id":"3f0fa19bd43d67b0"}]}"
Update: Remember to replace the docId in the above code with your own. :) This goes as a POST request to:
"https://sandbox.esignlive.com/api/packages/" + myPackageId + "/documents/signed_documents"
Try that and let me know.

- Michael

Director, Partner and Developer Technologies, OneSpan

Facebook - Twitter - LinkedIn


Reply to: Looking for options for a multistep signing process

0 votes
Hi Michael This makes sense, but I was not able to make it work for me. Perhaps it is due to the fact that I'm using https://sandbox.e-signlive.com/api. I'll create an ID on https://sandbox.esignlive.com/api and try again. I'll tell you how it goes Thanks Jim

Reply to: Looking for options for a multistep signing process

0 votes
I can try quickly on e-signlive, if that would be easier. Update: You are correct. It does not sign the documents on e-signlive. I will do some testing on this.

- Michael

Director, Partner and Developer Technologies, OneSpan

Facebook - Twitter - LinkedIn


Reply to: Looking for options for a multistep signing process

0 votes
Just got confirmation that this is only on 11.0. Initially, it was going to be back ported to 10.13 (e-signlive), but a component needed on the back end was not there, so in the end, e-signlive will have to wait to be moved to 11.0, this summer. So, this should all work for you on esignlive when you create your account there.

- Michael

Director, Partner and Developer Technologies, OneSpan

Facebook - Twitter - LinkedIn


Reply to: Looking for options for a multistep signing process

0 votes
Hi Michael, thanks again for all your help. getting closer... Well, I got it to work, but only if no fields are associated with the signature. So if I comment it out (like below) it works, if the field is enabled I get "The remote server returned an error: (400) Bad Request". I need to have the label field there, since I use it to mark some status based on who signed already. Remember I add up two fields from another signer with REST programmatically. Is there anyway to make the autosign work with an associated label field? .WithSignature(SignatureBuilder.SignatureFor(Signer3.Email) .OnPage(0) .AtPosition(262, 760) .WithSize(200, 40) .WithId(sigID3) //.WithField(FieldBuilder.Label().WithId("Col3").AtPosition(515, 710).OnPage(0).WithSize(40, 30).Build()) )

Reply to: Looking for options for a multistep signing process

0 votes
So, you want to be able to place a value in the field and sign automatically? I'll give it a whirl and let you know. :)

- Michael

Director, Partner and Developer Technologies, OneSpan

Facebook - Twitter - LinkedIn


Reply to: Looking for options for a multistep signing process

0 votes
Okay. I was able to sign the document just fine with a label, but the label value I put in did not update. I will try to update the label value in a separate call, before signing, to see if that works.

- Michael

Director, Partner and Developer Technologies, OneSpan

Facebook - Twitter - LinkedIn


Reply to: Looking for options for a multistep signing process

0 votes
Got it, takes 2 REST calls in a row. Here's an example 1. Post this "{"id":"Col3","value":"23"}" to "https://sandbox.esignlive.com/api/packages/9x_4lJRqj3sYYAmHbeUJpI29Ulo=/documents/e7c74ecb53a8289b/approvals/MySiggy3/fields/Col3". 2. Post this "{"documents":[{"approvals":[{"id":"MySiggy3","fields":[{"id":"Col3","value":""}]}],"id":"e7c74ecb53a8289b"}]}" to "https://sandbox.esignlive.com/api/packages/9x_4lJRqj3sYYAmHbeUJpI29Ulo=/documents/signed_documents" The document is signed and the label is 23. It is weird that the second rest call needs the label information, yet does not update it. Thanks again Michael. I never would have got this to work without your help

Reply to: Looking for options for a multistep signing process

0 votes
Ha. I tried that same thing, yesterday and it wouldn't let me modify the document (error that said I couldn't modify document). I'll have to go back and try again. Maybe I had a mistake in my code somewhere. You're very welcome! I'm just glad you got it working! :) And yes, it is somewhat confusing that the approval info must be there if there is a field, but not if there isn't a field. It's a brand new feature, so there could be some updates to it as it matures.

- Michael

Director, Partner and Developer Technologies, OneSpan

Facebook - Twitter - LinkedIn


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