We have an application that we currently open the DocuSign console in an IFrame. The issue is that currently we are having to open a new tab, log on to DocuSign and then the user can see the console in the Iframe with documents. What is the most common way people are using to automatically logon to DocuSign through their applications ? I see an SSO documentation but it says that it looks at the persons email domain to authenticate them.... our users will have many different email domains.
Your application can use the API to get the console view for the user. The session will correspond to the user credentials in your API request and will skip the logon step. From that API call you get a URL back that you can embed in the iFrame. E.g.: POST to https://demo.docusign.net/restapi/v2/accounts/55555/views/console and you get back a URL like this:
{
"url": "https://demo.docusign.net/Member/StartInSession.aspx?StartConsole=1&t=00000000-0000-0000-0000-000000000000&accountid=00000000-0000-0000-0000-000000000000"
}
Edit: If you need the "sending view" (sometimes called "the tagger") for an envelope then you can POST using a URL like this:
https://{server}/restapi/{apiVersion}/accounts/{accountId}/envelopes/{envelopeId}/views/sender
e.g.
https://demo.docusign.net/restapi/v2/accounts/12345/envelopes/f6e755d3-bbcf-44e5-b276-8ae626f97220/views/sender
Related
I've signed up for a developer account with Docusign. We have about 15 users that access a Windows Forms page from another program where they fill out the proper information and click a button that calls a NET Core Web API which creates an envelope and sends to the signer. Those 15 users don't have accounts in Docusign and don't need them to. I want to use one admin or service account that will send and receive the emails, but I can't figure out how to do this.
I used my name for the developer account and now all my (test) Docusign emails show they are from me and once the signer signs, my email receives the signed documents. I've tried creating another "Admin" account, but I don't see any way to associate that user as an "API User". When I try using that user's GUID as the ImpersonatedUserID, my RequestJWTUserToken request comes back with "consent_required". But, when I go to the link I just get an error with "The client id provided is not registered with Docusign".
Everything in the Web API is working perfectly except for the emails showing they are from me and then the signed docs coming back to my email. This should be an easy thing to change the user, but apparently it's not, or I just can't figure it out.
You were on your way to fix this, but didn't follow through.
Create new user (you did it)
Find the new userId (you did)
Update JRequestJWTUserToken (you did)
Consent error - expected, the new user did not consent.
Obtain consent. You need to have a URL built correctly like this to do this:
https://account-d.docusign.com/oauth/auth?response_type=code&scope=signature%20impersonation&client_id=7c2b8d7e-xxxx-xxxx-xxxx-cda8a50dd73f&redirect_uri=http://example.com/callback/
Once you do 5, you need to log in with the same new user account you created (you may be automatically logged in with your original developer account, so log out) and provide consent.
Then step 4 will work just fine.
https://developers.docusign.com/platform/auth/consent/obtaining-individual-consent/
Is there any way to display all the documents/envelopes which are needed to be signed by the user in our app? or list all the links of these envelopes in our app so that when the user clicks it will take to Docusign UI same as how it works with email
enter image description here
Yes, you can, but there are some things to consider.
First, you will need to make API calls to find all the envelopes that needed to be signed by the user.
From the Java SDK use the ListStatusChanges method to do that.
Then, for each envelope you found in the right status, you will want to generate a URL using the embedded signing feature.
However, don't do that when the page loads! These URLs expire after 2 min and so what you want is to generate them when the user clicks and redirect to the generated URL dynamically, or you'll have issues with the app.
I'm using DocuSign's REST API to create envelopes in embedded signing mode. With the function CreateRecipientView i get only a temporary link. But i would prefer to get an permanent link like in the notification mail. How can i get this link/URL?
Getting permanent signing links is not possible using the DocuSign rest API.
For remote signers, only the signer can receive the signing link through email. No one else will have access to the signing URL.
Setting permanent signing/access link is possible with "embeddedRecipientStartURL" by using a captive recipient aka "clientUserId" and your own URL endpoint whereby you authenticate your users and determine if they can access the envelope via a Request Recipient View.
Documentation here.
You can also request emails be sent per captive recipients as well as many other "Portal" centric options that put you in full control of the user experience.
To give your signers permanent links, your application creates the links by itself. Eg myapp.myserver.com/signing_links/95a086f7-a76e-40ec-938e-987be996d220
The number should be a guid, not a database record key. This is needed to prevent someone from guessing what one of these permanent links is, so they can't read (or sign!) someone else's documents.
When someone opens their browser to go to one of the signer links, your application looks up the guid in the your app's database. The database record will include the DocuSign envelope_id and the recipient_id that the link represents.
Next your app uses that data to request an embedded recipient view link from DocuSign. Then (if you get a good response back from DocuSign), your app redirects the user's browser to the signing page on DocuSign.
(You'd get back an error from DocuSign if the recipient had already signed, or the envelope had been voided, etc.)
Guess what? The above is more or less how DocuSign gives out the "permanent" links in its emails--those links always redirect to one of the 5-minutes-only signing ceremony links.
Remember that you need to authenticate the signers, or include additional authentication options in your envelope, since you don't know who is going to end up pressing one of your app's signer links.
Setting vs Getting permanent signing/access link is possible with "embeddedRecipientStartURL" by using a captive recipient aka "clientUserId" and your own URL endpoint whereby you authenticate your users and determine if they can access the envelope via a Request Recipient View.
https://www.docusign.com/p/RESTAPIGuide/RESTAPIGuide.htm#REST%20API%20References/Recipients/Signers%20Recipient.htm
You can also request emails be sent per captive recipients as well as many other "Portal" centric options that put you in full control of the user experience.
So Net/Net, LarryK and CodingDawg are correct, each from a specific view. It ultimately is up to you to decide which way works best for your application and users.
I'm using the REST Docusign API v2 and I have some problems (seems a Docusign bug, but I'm unsure).
I have a website that has a button to view a Docusign document previously sent by us, this button creates an URL and performs the "Post Sender View" resource call, which states:
Post Sender View
This provides a URL to start the sending view of the DocuSign UI. This is a one-time use login token that allows the user to be placed into the DocuSign sending view.
Upon sending completion, the user is returned to the return URL provided by the API application.
The idea of this process is to show the Docusign GUI to view to document and perform some basic operations.
This is done correctly, but the problem I have, in such Docusign view there is a button, it says "Other actions" and after clicking on it, the option "Clone" is presented.
When clicking on "Clone", the session is expired, so the user is unable to perform any action. The message is:
Session Ended
Your session has expired due to an extended period of inactivity. To restart the DocuSign session click the link in the email that initiated the session.
For help: support#docusign.com
So, the point here would be: is there some fix for this? I'm doing something wrong?
I know the documentation says "This is a one-time use login token that allows the user to be placed into the DocuSign sending view"; but, if you decode to click the "Close" button, the session remains open and the user is able to work as usual.
Many thanks in advance.
At my company, we are implementing some parts of DocuSign, and have run across a scenario we believe the REST API does not support.
There are times where user's in our system change email addresses. We want to push this change to DocuSign for the user, without the user ever requiring to log in to DocuSign and manually change their email address via the console. This, of course, changes the username the user authenticates with on the login page of DocuSign.
Is it possible, using the DocuSign REST API, to change a user's email address (which in effect changes their login name do DocuSign)?
The DocuSign system does not support changing the email address through the API (REST or SOAP). This is mainly due to security restrictions - unfortunately your users will need to manually go into the DocuSign Console and go to Preferences to change their email address.
One thing that might make this process a little smoother is to automatically open the Console for your users when they request to change their email address. You can open the Console in an embedded iFrame in your site or app and from there they can change their account info. You would just need the user's credentials (along with the integrator key of the integration) and you can open the console for them.
The third API Walkthrough - Embedded DocuSign Console - illustrates exactly how to do this in 6 different languages (PHP, Java, Javascript, Python, C#, and Objective-C). You just need to make the following call from your environment, with just your accountId in the body of the POST request:
Method
POST
URI
/accounts/{accountId}/views/console
BODY
{
"accountId": "XXXXXX"
}