How to ask fopr the RecipientView - docusignapi

I want to get a specific recipient view from an enveloppe. Here is the data I have for the recipient from an API call:
[#<DocuSign_eSign::Signer:0x0055e9239b8388 #creation_reason="sender", #email="email#qsdqsd.com",
#is_bulk_recipient="false",
#name="fake name",
#note="",
#recipient_id="1",
#recipient_id_guid="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", #recipient_supplies_tabs="true", #require_id_lookup="false", #role_name="customer",
#routing_order="1",
#status="sent",
#user_id="XXXXXXXXX-XXX-XXXX-XXXXXXXXXXXXXXXXXX">]>
And here is my current request payload.
recipient_view_request={
"user_id": user_id_from_previous_request,
"userName": unrelated_name,
'email': unrelated_email,
"returnUrl": return_url,
"authenticationMethod": "email"
}
The link that is returned is for the wrong user, allowing to sign as this incorrect user. It ignore the user_id param. How do I make a request with the correct user ?

I don't see you setting clientuserid for the recipient, RecipientView can only be generated for embeddedrecipients. You need to set clientUserId for the recipient for whom you want to do embedded signing. You can find embedded signing examples at https://docs.docusign.com/esign/guide/usage/embedded_signing.html also you can check embedded signing example at https://www.docusign.com/developer-center/api-overview, check section [2] Create Envelope with an Embedded Recipient and [3] Create Recipient View (Embedded Signing)

Related

Confused on how to use accesscode

I'm trying to figure out how to use the access code for a signer. In the api there is the accesscode field and a addaccesscodetoemail field. If I want the signer to see the accesscode in the email, do I just set that value to the accesscode and then set addaccesscodetoemail = true?
Yes, If you want the signer to see the accesscode in the email, then you just set that value to the accesscode and then set addaccesscodetoemail = true and signer will see the accesscode in the email itself. But it is not a good practice as it defeats the purpose of using the accesscode. Ideally, you should set accesscode via API and then communicate accesscode to the signer via another channel (not by sending the accesscode in an envelope notification email).
DocuSign's Access code authentication is similar to sms authentication except that for access code it's up to the sender to determine how to actually get the code over to the recipient.
They can send their own SMS outside of DocuSign platform with the code, they can send their own custom email, call the person, etc - but the bottom line is that DocuSign will not include the code in the system generated email.
To configure an access code for a recipient you have to set it on the specific type of recipient, in this case signer for example:
"recipients":
{
"signers": [
{
"email": "test_1#email.com",
"name": "Name 1",
"accessCode": "1234",
...

C# Docusign API - Getting Remote Signing View URL

After running the console app, our users get an email with the signing link to Docusign making them remote signers.
What I want to be able to do is get those links from their emails.
I did some research and this is what each url is made of
https://demo.docusign.net/Member/EmailStart.aspx?
a=65d11cf7-d3b7-49a1-8000-6192b6227d71& <<< Unique Activity ID? Always different in all URLs
acct=a0e816ac-3919-475e-a826-34c2c33f90e7& <<< Some kind of role ID (stays same between envelopes and users of the same role, I have it
for my roles..just don't know how to get it programmatically
er=62378ec0-39ce-495e-84e4-e0e598fab3cc& <<<< envelopesApi.ListRecipients(.....) .Signers[n].RecipientIdGuid, able to get it
espei=30cec285-39cd-45a3-bb8e-7bd0560dcd80 <<<< ENVELOPE ID, able to get it
The first parameter is the main focus of my question - it is a total mistery what is it and how to get it
The second parameter looks like a role_id, but I don't know how to get it other than hard-coding values for each of my roles
The other two parameters aren't a concern.
Does anybody know how to get ahold of the first two parameters using the C# Docusign API?
Or even better, is there a way to get the recipients signing url links using the same API?
To obtain the signing URL you will have to set the recipient as an embedded recipient.
After the envelope is created, use the createRecipient:EnvelopeViews api to retrieve the Signing URL.
You have to set the recipient clientUserId parameter to mark a recipient as an embedded recipient.
Request
{
"userName": "name",
"email": "examble#email.com",
"clientUserId": "clientUserId",
"authenticationMethod": "email",
"returnUrl": "your app url"
}

Embedded Docusign Signing URL - using document visibility to only show 1 document in the envelope

I am creating an envelope via the Docusign Rest API. this envelope has 2 inline templates each have their own roles and do not share any tabs. I have a custom workflow that requires the user to fill in each document separately so i use the (/views/reciepients) endpoint to get a signing url.
The first signer sees the first (and only the first) document correctly, it is filled in and completed. Then i want to show the second document from the envelope in an iframe to a user. When i get the signing URL for the second recipient (signer) it also includes the first document all filled out.
I have document visibility set up on the account.
I have read the documentation a few times and there is one confusing, under "Post Recipient View" there is a field "userName" which is not mentioned when creating the recipient or in the response from the recipient end point. I assume this is the "name" field.
to make it a bit easier to read i have put all the API requests into paste bin.
Generate Envelope with 2 templates and 2 signers.
Request = http://pastebin.com/e98Dwaj8
Get First signing URL using /envelope/xxxx/views/recipient
Request =
{
"returnUrl": "http:\/\/local.example.com\/return.html",
"authenticationMethod": "none",
"email": "role1#example.com",
"userName": "TestFirstName TestSurname",
"clientUserId": "1"
}
Get recipients for envelope after first signer has completed
Response = http://pastebin.com/9VmGsE3p
Get second signing url (this shows both documents when visited)
Request =
{
"returnUrl": "http:\/\/local.example.com\/return.html",
"authenticationMethod": "none",
"email": "test#example.com",
"userName": "TestFirstName TestSurname1",
"clientUserId": "2"
}
Is there a way i can show the second signer only the second document?
Is it possible or will the completed document always show? does the /views/recipient url only hide documents in "draft" or "sent" and always shows "completed"?
note: this is a follow up to Docusign signing url - Showing document 1 of a composite template but that question was answered and solved the original issue so i thought it best to open a new more specific question.
In order for certain signers to only see certain documents, you will want to investigate the Document Visibility feature and settings. There is some starting documentation available at: https://support.docusign.com/guides/cdse-user-guide-advanced-sending-using-document-visibility-in-a-template
In short, signers can only see documents in an envelope for which they have at least 1 tab assigned. This is honored during the signing ceremony as well as any view of the completed document.
Regarding your last question, you should only be able to start a POST /recipient/view (signing ceremony) for an envelope which has been SENT. If you perform this action against an envelope which is completed it will start the signing session in a read only viewing mode (since the transaction is complete).
Is the 2nd signer a member on the sending account? If so, they would be able to see all documents in the envelope based on "Must sign to view unless Sender Account". This setting essentially means internal signers that have memberships on the same account as the Sender can see everything.

Post Recipient View Without Their Credentials

I'm trying to receive the Recipient Url for embedded signing within our application.
I won't have the user's credentials, and all my API calls are going through as a Ds administrator account.
When I execute the following I get an error message:
{
"errorCode": "ACCOUNT_NOT_AUTHORIZED_FOR_ENVELOPE",
"message": "This account is not authorized to access the requested envelope."
}
If I execute this against envelopes that are assigned to me it works fine but not other users. I should also point out we are not currently making use of clientUserId when creating recipients. Only a small portion will need embedded signing.
It was my understanding an administrative account would be able to retrieve the url needed to begin the embeded signing process. Is this not correct?
Also under what circumstances would email and userName not be the same? Aren't usernames always email addresses?
Request :
POST https://demo.docusign.net/restapi/v2/accounts/244043/envelopes/41d02a5f-13f8-4fb5-897d-142e1c653645/views/recipient
X-DocuSign-Authentication: <DocuSignCredentials><Username>blah</Username><Password>blah2</Password><IntegratorKey>blah3</IntegratorKey></DocuSignCredentials>
Content-Type: application/json
{
"returnUrl": "http://www.[somedomain].com",
"email" : "someguy#gmail.com",
"userName" : "someguy#gmail.com",
"authenticationMethod" : "email"
}
EDIT:
Additionally if I try the following for my request :
{
"returnUrl": "http://www.[mydomain].com",
"userId" : "xxxxx-xxx-xxxx-xxx-xxxxxxxxxx",
"authenticationMethod" : "email"
}
I receive :
{
errorCode: "INVALID_USERID"
message: "Invalid UserId. UserId specified in request does not match authenticated user."
}
In addition to the issues in Luis Scott's answer, you're missing one of the required parameters for the Recipient View method --
clientUserId A sender created value that shows [that] the recipient is embedded (captive). Maximum of 100 characters.
Create a value for the clientUserId and include it for the signer when you create the transaction (when you send the signing request).
Then include it when you want the Recipient View. It's a security measure to ensure that it is ok for your web app to authenticate the signer.
Only include the clientUserId for signers where you can authenticate them yourself and you plan to offer them the embedded signing view.
1) Please ensure the user being used for the API calls has the "Account-Wide Rights" setting enabled under preferences -> users -> permissions.
2) The Username field should be the recipients full name that was provided during envelope creation. So it would be "Some Guy" IMO using your sample above.

DocuSign API - Embedded Recipients

I would like to create envelopes for embedded/captive recipients using SOAP based API calls and generate a token with which a recipient can sign the envelope right after it gets created.
I have followed your documentation but am not able to create token(s) for the embedded signer(s). I am able to create an envelope but while creating the tokens, I get an error
"Invalid Signature Credentials".
According to your documentation, while creating an envelope with captive recipient,I need to pass in clientuserid for the recipient. I need to use the same clientuserid for the same recipient each time.
It looks like, I might have created an envelope with a captive recipient before but I am not using the right combination..Recipient name, email address and clientuserid every time I am creating an envelope with captive recipient(s).
1) Is there a way to reassign the clientuserid to the recipient?
2) Is there a way to retrieve the clientuserid for the recipient?
3) From the DocuSign account, how do we check if an envelope has been created with a captive recipient(s)?
4) Do we have to turn any setting on from our DocuSign account to create envelopes with captive recipients?
1) You might be able to use the Recipient Correction call to update the clientUserId for a given recipient, but if that does not work you can always remove the recipient from the envelope, then re-add as an Embedded recipient.
2) To retrieve the clientUserId value and other information for your recipients you need to make the following API call:
Get Envelope Recipient Status
URI:
/accounts/{accountId}/envelopes/{envelopeId}/recipients
Method:
GET
Sample Response:
{
"recipientCount":"String content",
"signers":[{
"deliveredDateTime": "String content",
"recipientAuthenticationStatus":{
"(authentication status result)":
"eventTimestamp":"String content"
"status":"String content"
}
},
"recipientId": "String content",
"clientUserId": "String content",
"requireIdLookup": "String content",
"roleName":"String content",
"routingOrder": "String content",
"signedDateTime": "String content",
"status": "String content",
"email": "String content",
"name": "String content" }]
}]
}
3) I'm not sure if you can check through the DocuSign Console, the API call described above will indicate if a given recipient is captive or not. If the have a clientUserId value defined, they are embedded - otherwise they are a remote signer.
4) Yes, this is a feature that you're API integration would need to include in its account plan. Talk to your DocuSign account manager for more information.

Resources