Live data from Hacker News

Lessons from Failed DocuSign Integration

profsmallpine.com

41–50 of 85 posts

Re: Lessons from Failed DocuSign Integration

#41
post #37
post #33

Earlier quoted context omitted.

>The problem is that on page refresh, that constraint is lost Why can't you put this constraint in a session and pass it back in on refresh?

View 1 is on the DS domain. We have no control once the user is in there aside from giving the redirect URL.

This is the point where someone is extremely confused but I'm not sure which one of us it is.

My understanding is that you have a page at the end of some process for the user to sign a document. The first time the user goes to the page they see the screen to sign something (View 1). They refresh the screen. Now they see some dashboard like screen where they can see everything (View 2).

Is that not right?

Re: Lessons from Failed DocuSign Integration

#42
post #36
post #34

Earlier quoted context omitted.

If View 1 comes from you why can't you give it back to the user on refresh?

Even if they added this feature, the API bug would still remain (it would just be covered up by the UI). A sophisticated enough client user would still have access to the all data associated to the API user.

>Even if they added this feature, the API bug would still remain (it would just be covered up by the UI).

It's not really a bug though. It sounds like DS shows a dashboard for the user absent an instruction to show a different page. That's a reasonable default.

>A sophisticated enough client user would still have access to the all data associated to the API user.

If you use one account to access an API then of course it's your responsibility to control access. How would the API provider be able to do that?

Re: Lessons from Failed DocuSign Integration

#43
post #16

Maybe the goal here wasn't to be technical (although I'm not sure why given it's an article about docusign api integration) but this is a WHOOOOOLE lot of text with basically nothing worth reading. >I was annoyed that they didn’t provide a secret key to authorize API requests Yeah... they don't do that for a reason. They appear to support a fully fledged OAuth implementation ( https://developers.docusign.com/esign-re…

OAuth is going to be hard to use if you don’t create an account though, there’s no way for DS to know what scopes to restrict the user to, it sounds like that was the core issue that broke their workflow.

I think it is very unclear what is real and not real. OP is mostly passing blame to DocuSign without achieving full understanding themselves. That is more an indictment on OP than DocuSign even if there is some actual session security problem with DocuSign (likely from the deprecated API).

Re: Lessons from Failed DocuSign Integration

#44
post #14

I was on this project and can speak a bit more on the technical details here. A couple of high level goals: 1. We wanted to use their embedded flows, to keep the experience within our application as much as possible. 2. We wanted to avoid having to create a DS user for every user in our application that turned on this feature. We were looking for using 1 “API user” to make requests, handling data scoping ourselves wi…

In my experience, most APIs requires a 1-on-1 association between the application's user and the API user (if some information about the user, and associated records, are stored in the external service).

Re: Lessons from Failed DocuSign Integration

#45
We tried something similar years ago with DocuSign, and needed the ability to sign in person with two different people, one acting as a witness, with a potential third person being remote via email. It was not supported at all. Built our own internal system to handle esignatures, worked great, never looked back.

Re: Lessons from Failed DocuSign Integration

#46
I've been working a lot on a project recently with a fair bit of Docusign integration.

Some notes:

* Their API documentation really is garbage. If you're signed in to your developer account, you get access to marginally better documentation. This makes it hard to abuse Google to find things you're looking for. Specifically, the documentation is incomplete and difficult to navigate, largely because they appear to have relied on Swagger to generate the whole mess.

* Their support sucks, and exists mostly to try to get you to pay for their team to write code for you to interact with their code, rather than fixing their documentation.

* The API has some warts. I wouldn't care about the warts so much if the documentation compensated for it, but it doesn't, so I've burned lots and lots (and lots) of hours trying to figure out the weird bits. For example:

> You specify the difference between an "embedded" and "remote" recipient by setting a clientUserId attribute;

> But, if you specify both a clientUserId and a client name attribute, then the API call to createRecipientView will probably return a "User not found" error (see for example https://stackoverflow.com/questions/20500630/unknown-envelop...

> You send an envelope not with an API call like sendEnvelope, but by setting the envelope status to "sent";

> Exceptions thrown during the authentication process by default set the Exception's error message to "Error connecting to the API...". Guess how much fun that was to debug?

* And their library for PHP is really a steaming pile. It's just a wrapper around curl, auto-generated by Swagger. It pretty much demands a wrapper around their library to be able to work with it effectively and compensate for all the warty bits.

I haven't quite got to the point of hating Docusign, but I don't love them, and wouldn't recommend them to other developers. I did find HelloSign early on in this project, and their API documentation (https://app.hellosign.com/api/documentation) is everything that I wish Docusign's was, and they clearly make a much greater effort to be attractive to developers.

I'd love to link some of the Docusign support articles and such I've filed under my "docusign_sucks" tag, but you need to be signed in to your Docusign developer account to view them...

Re: Lessons from Failed DocuSign Integration

#47
post #43
post #16

Earlier quoted context omitted.

OAuth is going to be hard to use if you don’t create an account though, there’s no way for DS to know what scopes to restrict the user to, it sounds like that was the core issue that broke their workflow.

I think it is very unclear what is real and not real. OP is mostly passing blame to DocuSign without achieving full understanding themselves. That is more an indictment on OP than DocuSign even if there is some actual session security problem with DocuSign (likely from the deprecated API).

Yeah and it sounds like they were trying to do something that makes no sense for DocuSign to support: use a single account to sign all users’ documents.

DocuSign has a legal obligation here to prove authenticity, how are they ever going to be able to do that if everything is behind a single account?

They support oauth and that makes sense and should be the way to do it.

Re: Lessons from Failed DocuSign Integration

#48
FWIW, I've developed a lot of this sort of tool. For some reason, Adobe E-sign services (formerly known as EchoSign) rarely comes up, but it's actually quite good and cost-effective to develop with.

Docusign is indeed pretty terrible as an API, but it does have the benefit that users have heard of it so it has a certain institutional credibility - which is usually important if you're developing the sort of app that needs an e-signature process. On that front, all of our clients were very comfortable with Adobe as a secure service provider - it was something we publicized, in fact.

I've played a bit with Hellosign. While I've heard they have a nice API, they don't have the institutional credibility that Docusign and EchoSign have. Also, their pricing was way, way higher than EchoSign's, in my experience. I'd love to learn more about them, though.

Re: Lessons from Failed DocuSign Integration

#49
post #41
post #37

Earlier quoted context omitted.

View 1 is on the DS domain. We have no control once the user is in there aside from giving the redirect URL.

This is the point where someone is extremely confused but I'm not sure which one of us it is. My understanding is that you have a page at the end of some process for the user to sign a document. The first time the user goes to the page they see the screen to sign something (View 1). They refresh the screen. Now they see some dashboard like screen where they can see everything (View 2). Is that not right?

1. We want the application user to sign a contract.

2. We request an embedded signing url from DS (we provide authentication creds, as well as redirect url as params - what we get back is a "special" url on DS. E.g. it is docusign.com/blahblahblah)

3. We redirect the user to the special DS url.

4. If the user signs, or refuses to sign or w/e, the user will get redirected back to our application via the redirect url we provided in our request on step #2. If the user instead decides to refresh the page, they for some reason are broken out of the signing page, and can now do whatever they want in the account as they are logged into DS's site for some reason.

Re: Lessons from Failed DocuSign Integration

#50
post #34
post #31

Earlier quoted context omitted.

View 1 comes from us (see my reply to your comment below). As for your 2nd question - that is the crux of the problem we had.

If View 1 comes from you why can't you give it back to the user on refresh?

From my understanding, thier application redirects to a webpage that DocuSign owns (which ideally redirects back to the original website). Once the user is on some DocuSign.com webpage, you have no control at all over what happens.

After you click on a search result and are served a webpage not owned by Google, Google can't control what happens if you press the refresh button.

Post reply on HN