sudhangi

Get Signing Status

0 votes
Hi, I am trying to get the signing status of a package using the following SDK call: eslClient.getPackageService().getSigningStatus(packageId, signerId, documentId) What I noticed that this call has inconsistent behavior while returning package information. On some occasions even if a package is available in the Sent/Inbox status it comes back with a response(example): ERROR com.silanis.esl.sdk.internal.EslServerException: Could not retrieve signing status. Exception: HTTP GET on URI https://signer-sandbox-gov.esignlive.com/api/packages/HIi_1yNSjVtPQGH_Ck1QKEf1MgE%3D/signingStatus?signer=PNgcEUs2hTA2&document=50c7b9cf54176b9d7bc09c44012caa7355465bdb51ede264 resulted in response with status code: [404, Not Found]. Optional details: {"messageKey":"error.notFound.signerNotFound","technical":"Could not find the signer summary in the transaction summary 'HIi_1yNSjVtPQGH_Ck1QKEf1MgE=' with signer uid 'PNgcEUs2hTA2'","message":"The specified signer cannot be found.","code":404,"name":"Resource Not Found"} FYI: I get the signerID using the signer.getId() call Also whichever package I try to retrieve I make sure I use the sender's API Key to get it; so I technically have access to that package Any idea why this would happen? Thanks.

Approved Answer

Reply to: Get Signing Status

1 votes
Hi sudhangi, I would suggest using the following SDK call to retrieve signer ID:
List roles = eslClient.getPackageService().getRoles(new PackageId("your package ID"));
for (Role role : roles) {
	String signerId = role.getSigners().get(0).getId();
}
As you noticed, this result could be different from the result you get from signer.getId() call. This is because when applying signer.getId() call, it evaluates the Role ID, but the code above retrieves the Signer ID. When you assign the ID for signers mannually by SDK, the system would set them same. But by default, them are not. As I tested, most cases, using both of them in getSigningStatus() call works properly. But occasionally, which I believe is your case, could cause this 404 couldn't find signer issue. Hope this reply could help you!

Duo Liang OneSpan Evangelism and Partner Integrations Developer


Reply to: Get Signing Status

0 votes
Hi Duo Liang, we have the same problem with a package where the sender is also the signer (and the only signer): https://sandbox.esignlive.com/api/packages/LfOPVM92RVTYBSAulY62iyL5qWo= In this case the roleId doesn't work (i.e. result in a 404), but the signerId works. In a different package where there are two signers, one of which is also the sender it is possible to retrieve the status for all signers with their roleId and the signerId: https://sandbox.esignlive.com/api/packages/W9z9k0Huzd6PQE-lxuY8D9GuOmg= My question is, is this a bug? And if it is, when will it be fixed? Your solution using the packageService.getRoles() works, but that returns Api Signers instead of SDK Signers. Using the SignerConverter to convert the Api Signer to a SDK Signer introduces the problem again, because the signerId is overwritten with the roleId. Thanks in advance, regards, H.

Reply to: Get Signing Status

0 votes
Hi hmboonstra, Yes, I agree with you that the API signerId and SDK signerId they are different things. The SDK signerId is actually the Role Id in API payload.(As you can see from the source code of SignerConverter class:line 107) But I probably won't say this inconsistence is a bug as the Role Id in API payload also needs to be used in some scenarios. In this "Retrieve Signing Status" use case, I would suggest using the solution I provided above. And I noticed that there's no related clarification or explanation in our guidance. We would add something in the corresponding section asap. Thank you so much for your feedback and contribution to our community!

Duo Liang OneSpan Evangelism and Partner Integrations Developer


Reply to: Get Signing Status

0 votes
Hi Duo Liang, thank you for your explanation. I was confused by why the getSigningStatus mostly works with the roleId, but sometimes returns a 404. Its not a problem, we'll use the real signer id instead. It would be nice if the (Java) SDK version of the Signer class exposed this value, but its not a problem since the API version does have it :-) Thanks again, regards, H.

Reply to: Get Signing Status

0 votes
Hi Duo Liang, Thank you for your detailed explanation. The solution works for us. My only comment would be that it is very counter-intuitive to get signerID using the approach you suggested and the documentation does not do a good job at defining it either. Nonetheless your help is greatly appreciated. Best Regards.

Reply to: Get Signing Status

0 votes
Hi guys, I have found that everywhere in api call, if there's a {signerId}, it can be replaced by signer's email. That is to say, in "get signing status" case, no matter you are using sdk or api call, you can input email ( which is way easier for you to retrieve) other than the signerId (specially for sdk, it's more difficult to retrieve). Besides Check Signing Status, in other two use cases, signerId can also be replaced by signer's email, including: 1. Generate Authentication Token for a specific signer, guidance here 2. Bulk sign for a specific signer, guidance here Thanks so much for your comments and advice, I would update the corresponding guidance asap. Hope you find this reply helpful!

Duo Liang OneSpan Evangelism and Partner Integrations Developer


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