Using the docusign api c# access code for authentication of signer - docusignapi

Using the sample C# send document API call, how can I send a data element located in my system, such as zip code or last 4 of ssn, to be enable this as an access code to view the document? This way I know that the person signing has another level of authentication tat ties back to the signer.

Have you read through the DocuSign API documentation yet? Just add the accessCode property to your signer JSON object and give it a value. Basically, something like this:
"recipients":
{
"signers": [
{
"email": "test_1#email.com",
"name": "Name 1",
"accessCode": "1234",
...
Description from API docs:
"This Optional element specifies the access code a recipient has to enter to validate their identity. This can be a maximum of 50 characters."

Related

DocuSign: template sign position issue when establishing routing order

My question is related to a specific REST operation for sending an Envelope using a Template where there are at least 2 roles defined as Signers (Signer1, Signer2)
The template is defined as follows: there is a document uploaded, 2 roles as signers (with no routing order, no email, no name) and the position of the Sign for each signer.
I have tried from the API explorer, and this is the JSON request:
{
"emailSubject": "template to sign",
"status": "sent",
"templateId": "xxxxx",
"templateRoles": [
{
"email": "email1#gmail.com",
"name": "signer1",
"roleName": "Signer1",
"routingOrder": "1"
},
{
"email": "email2#gmail.com",
"name": "signer2",
"roleName": "Signer2",
"routingOrder": "2"
}
]}
All works fine except for the possition of the sign for Signer2. It should only appear the square of the sign in the document. However, It behaves like this role does not exist, and all objects for signing are available to this user.
If this same Envelope is sent without the routing order for neither of both signers, the position of the sign works as defined in the template for both signers, i.e. it works as expected.
I don't know if it is a bug, or something I am doing wrong or didn't understand well, but the tests have been executed using the Docusign API explorer.
Thanks in advance.
Updated answer
You can update the routing order but you must:
Use the composite templates API feature to do so.
Tell DocuSign that you're changing the routing order from the template's original routing by setting a query parameter.
Full details in this answer.
Original answer
First, try using the template for an envelope from the DocuSign webtool.
My guess from your question is that the template is not set up the way you want it.
When you use the tagger window of the web tool for your template, check that you're creating the signing tabs for the two different roles. There's a dropdown chooser for each role in the tagger window. See the screenshot. It sets the owner for the document tabs (fields) shown on the screen
Once the envelope (driven by the template) is working well from the DocuSign web tool, switch to using the API.

DocuSign API - Retrieve Envelope JSON for Envelope Sent via Admin Page

I'm using the Envelopes: create API in the sandbox to send signing requests successfully. I'm now working on one that involves DocuSign Templates and two template roles, so that each recipient should only complete their own fields for name, date and signature.
This is working fine when using the DocuSign Admin webpage to send these, but with my API request, the first recipient/role can fill in all fields for both recipients.
I'm obviously doing something wrong here and was wondering if I can somehow view/retrieve the JSON data for the envelopes that are not sent via the API but using the DocuSign admin webpage.
For example I'm after the following data so I can compare this to my request:
{
"accountId": "301424",
"emailSubject": "API Example - Populating Data in Templates",
"templateId": "44D9E888-3D86-4186-8EE9-7071BC87A0DA",
"templateRoles": [{
"email": "john.doe#email.com",
"name": "John Doe",
"roleName": "Customer",
"tabs": {
"textTabs": [{
"tabLabel": "CustomerAddress",
"value": "123 Main St. San Francisco, CA 94105"
},
{
"tabLabel": "CustomerSSN",
"value": "12-345-6789"
}]
}
}],
"status": "sent"
}
Is it possible, knowing the Envelope ID, to retrieve the JSON that was used to generate the Envelope/signing request?
You can see the requests that the DocuSign web tool made to create your envelope by using the API request logging feature. However, the web tool often uses multiple API calls to create an envelope. You can do the same, or coalesce the multiple calls into one.
If you ask a new question and supply the JSON that you're using, we may be able to spot your mistake directly.
For example, are you using two different email addresses for your two template roles in your test?
Do you have the tabs/fields set so they can only be modified by the specific recipient?
Are you creating the template programmatically or are you using the DocuSign web tool to create the template?

Actual signing flow is not what configured in template

We have a template has the following signing flow:
flow we want
Below is how we send the parameters:
{
"emailSubject": "Test company - Custom Rates Letter",
"emailBlurb": null,
"status": "sent",
"templateRoles": [
{
"roleName": "Paticipant B",
"name": "Paticipant B",
"email": "paticipantB#example.com"
},
{
"email": "paticipantA#example.com",
"name": "Paticipant A",
"roleName": "Paticipant A"
}
],
"templateId": "xxxxxxx-yyyy-zzzz-aaaaa-bbbbbbbbb"
}
However, the actual flow we get is not what we configured in the template. It's as followed:
flow we actually get
We want participant A to receive 3 copies: (1) the original unsigned contract (2) the contract signed only by participant B (3) the contract signed by all parties. However, participant A only receives (1) and is not able to receive (2) and (3).
I have tried many other parameters but all don't work. Could you give me some help on this? We want the actual flow to be the same as the flow configured in template. Thanks.
DocuSign does not support this type of workflow, i.e putting same roleName at different places. You need to have different roleName (eg, Participant A1, Participant A2 etc) in your Workflow, then pass same Recipient Name/Email for each roleName.
Or if you want to put same recipient multiple times in the workflow just for notification, then I would request you to consider using DocuSign Connect, once you receive an XML message from DocuSign on your subscribed event then send an email from your Email Server to the concerned person with the notification details.

How do I set the ttl on a docusign envelope URL?

I've been working on a docusign API for embedded signing, it's working great, yay. We have a version of events where we send a second docusign link via email to a second signer, and that works awesome..... within 5 minutes of sending it. I can't find a parameter to send with the API call to set the length of time it's valid to the 72 hours the business wants. What is the parameter I can change in the API call, or better yet a configuration for the account to set it appropriately?
As the other answers say, the embedded signing TTL is fixed at 5 minutes. Here's how to handle your scenario:
Provide your signers with a URL to your application. The URL will need to include enough state so your app, when it receives URL, can determine who is the signer, what is the envelope id, whether the 72 hours has expired, etc.
Or the URL could be a ref id in your database. The your database record would hold all of the relevant information about the envelope and signer.
When the signer uses the URL, your app will be called. Your app will then look up and check the info. If all is ok, your app requests an embedded signing URL from DocuSign and then re-directs the signer to that URL. The signer then signs.
Note the "checking" issue I mention above. It is vital that you protect against people either accidentally or purposefully spoofing your system. Eg, don't use just a database record ID since someone could try random record IDs or increment a good one by one. Instead, require the URL to include both the record ID and some information on the record that can't be guessed.
Or use a random GUID as the URL's parameter and then search for it in your database.
In any case, the key is to request the embedded signing URL just before you redirect the signer to it.
For embedded signing, as mentioned here, URL tokens are only valid for 5 minutes.
It all lies in how you configure each signer : embedded vs remote. And the main toggle to do this is the ClientUserId property : As explained here, A non-null ClientUserId implies that user is Embedded. Hence, to set up your co-signer for remote signing, you will need to specify a ClientUserId = "".
You can set the notification property in your Envelope:Create api call to set the TTL for an evelope.
The TTL for an embedded signing is 5 minutes.
You can only generate recipient signing links for envelopes that are in sent status. Also note that signing links expire after 300 seconds (5 mins) and are one-time use only, meaning you need to generate a new signing token each time the recipient wants to access the envelope.
Here is a sample Request, that has an embedded and remote recipient with envelope expiration set to 72 hours.
{
"status": "sent",
"notification": {
"expirations": {
"expireAfter": 3, //Envelope Expires after 3 days (72 hours).
"expireEnabled": true
},
"useAccountDefaults": false
},
"recipients": {
"signers": [
{
"email": "signer#foo.com",
"name": "signer one",
"recipientId": 1,
"clientUserId": 1234 //This is the embedded recipient. Does not receive an email.
},
{
"email": "cosigner#foo.com",
"name": "Co Signer",
"recipientId": 2 //This is the remote recipeint. Receives an email.
}
]
},
"emailSubject": "Envelope with an embedded recipient and remote recipient",
"documents": [
{
"documentId": "1",
"name": "Agreement",
"fileExtension": "pdf",
"documentBase64": "[Document base64 bytes go here]"
}
]
}

Global tabs for document templates

Is there a way to assign tabs to a document, without having a recipient declared?
Situation: We want to have a template for an employee application, and then use the API to fill the fields, assign the recipients, and embed for signing.
When I create the template with no recipient, it doesn't allow me to place any tags. Given that I don't know the recipient until the time I call the API, does that mean I can't place the tabs until then? I really don't want to have to place 50 tabs dynamically.
Thanks in advance.
Chase
DocuSign tabs are always with respect to a given recipient, never the document itself, however I believe you can still accomplish this workflow. If you create a Template through the DocuSign Console you can add a template role without providing any recipient info (i.e. name or email) at that time. Afterwards when you reference this template through a signature request API call you can then supply the actual recipient names and emails in the request and map them to your already configured envelope tabs through the
roleName
property for each recipient.
The very first DocuSign API Walkthrough has code that demonstrates how to do this with just one role, but note that this is just an example and you can have multiple roles.
DocuSign API Walkthroughs
From a high level these are the steps you want to take:
Create a template in the DocuSign Console.
Add document(s), then add at least one recipient but only fill in the role field.
Now on your document you'll see that you can add whatever tabs you want to the envelope, under that role.
Save the template.
Make an API call for requesting a signature, which references the templateId and has the roleName parameter present for your recipient(s). This roleName value should match the role that you saved with the template in step 2.
If you named the role Signer1 for instance, your request body (in JSON format) might look like this:
{
"accountId": "123456",
"emailSubject": "DocuSign API Call - Signature Request from Template",
"emailBlurb": "Sample email body",
"templateId": "B977F511-CAB0-...................",
"templateRoles": [
{
"roleName": "Signer1",
"email": "test#docusign.com",
"name": "John Doe"
}
],
"status": "sent"
}

Resources