Invalid Content Type in docusign - docusignapi

I have created a template via the DocuSign UI; that template contains some tabs for various roles.
I want to send a document via DocuSign REST API, in which the template (only the tabs e.g. signHere, initiateHere, Title etc) will apply.
I haven't added any recipient on the template. What I want to use from that template are only the tabs.
My JSON
{
"emailBlurb":"Test Email Body",
"emailSubject": "Test Email Subject",
"status" : "sent",
"compositeTemplates": [
{
"serverTemplates": [
{
"sequence" : 1,
"templateId": "c9e5adfa-d708-4467-a0ea-c615fa429a0f"
}],
"inlineTemplates": [
{
"sequence" : 2,
"recipients": {
"signers" : [{
"email": "nalam#relisource.com",
"name": "Noor",
"recipientId": "1",
"roleName": "Applicant"
}]
}
}],
"document": {
"documentId": 1,
"name": "test1.pdf",
"documentBase64":"Base64streamhere"
}
}]
}
It gives me the following error.
{
"errorCode": "INVALID_CONTENT_TYPE",
"message": "Content Type specified is not supported."
}
I am using POSTMAN. What is the problem here ?

Your documentBase64 attribute doesn't look right. Perhaps an error in copying it? Also, setting the fileExtension is highly recommended:
It should be
"document": {
...
"documentBase64": "Base64EncodedString",
"fileExtension": "pdf"
}
I suggest you use API request logging to see exactly what Postman is sending.
Template document substitution
If you're trying to substitute a document at runtime for the document in a server template, see the answers to this SO question for additional tips.

What you want here is the serverTemplate to be in sequence with the inlineTemplate so they need to have the same sequence number. Also you need another inline template to hold your document object. Something like this:
{
"emailBlurb":"Test Email Body",
"emailSubject": "Test Email Subject",
"status" : "sent",
"compositeTemplates": [
{
"serverTemplates": [
{
"sequence" : 1,
"templateId": "c9e5adfa-d708-4467-a0ea-c615fa429a0f"
}],
"inlineTemplates": [
{
"sequence" : 1,
"recipients": {
"signers" : [{
"email": "nalam#relisource.com",
"name": "Noor",
"recipientId": "1",
"roleName": "Applicant"
}]
}
}],
"inlineTemplates": [
{
"sequence" : 2
"document": {
"documentId": 1,
"name": "test1.pdf",
"documentBase64":"Base64streamhere"
}
}
}]
}

Related

Attach document to existing template docusign Rest API

I am able to send a POST request to send an existing template for signing. What I'm trying to do now is attach a PDF to the signature template. The attached PDF does not need to be signed / is not a template. It is just a PDF copy of a document as an appendix to the contract.
The request is going through ok, but I'm getting the error: "TAB_PAGENUMBER_IS_NOT_IN_DOCUMENT",\r\n "message": "The pagenumber specified in the tab element is not in the document that the tab refers to. Tab on Page 8 of Document 1 for Recipient 1"
JSON:
{
"emailSubject": "Please sign this document set",
"templateId": "xxxxxxx",
"templateRoles": [
{
"email": "email#example.com",
"roleName": "Buyer",
"name": "Buyer Name"
}
],
"documents": [
{
"signerMustAcknowledge": "no_interaction",
"order": "asc",
"name": "MyCompany Quote",
"includeInDownload": true,
"documentId": "2",
"documentBase64": "<base64string>",
"display": "inline"
},
],
"status": "sent"
}
How to attach a document to an online template?
The error you are seeing is because DocuSign will try to replace the document in the template with the file you are providing.
You should be able to add this additional document by using composite templates instead. https://developers.docusign.com/docs/esign-rest-api/how-to/request-signature-composite-template-embedded/
Here is a sample:
{
"compositeTemplates": [
{
"compositeTemplateId": "1",
"inlineTemplates": [
{
"recipients": {
"signers": [
{
"email": "email#example.com",
"roleName": "Buyer",
"name": "Buyer Name"
}
]
},
"sequence": "1"
}
],
"serverTemplates": [
{
"sequence": "1",
"templateId": "xxxxxxx"
}
]
},
{
"compositeTemplateId": "2",
"document": {
"documentBase64": "<base64string>",
"documentId": "2",
"fileExtension": "pdf",
"name": "MyCompany Quote"
},
"inlineTemplates": [
{
"sequence": "1"
}
]
}
],
"emailSubject": "Please sign this document set",
"status": "sent"
}
The first composite template is used to populate your existing template with the signers information. The second composite template is where you add the additional document you want your users to sign. You can also include additional tabs inside the inlineTemplates if they are needed in the future

Docusign API - Create envelope, apply template, prefill values

Many questions address portions of my request, but I cannot seem to make a complete solution work. I have created a template on my site (it has various text fields, initial fields, and signature block). Single recipient, using anchor tags for the fields. When I take a .docx file, create an envelope via the api, I want to apply the template previously mentioned, and then prefill 4 text fields on the document/template.
Anchor tags are not placing the fields appropriately.
Any advise/suggestions?
Working request call is:
{
"documents":
[
{
"documentBase64":"<BASE64STREAM>",
"documentId":"3",
"fileExtension":"docx",
"name":"10001000_20170803_FILE"
}
],
"emailSubject": "TEST - Group Audit - 10001000",
"templateId": "TEMPLATE_ID",
"templateRoles" :
[
{
"email": "JDOE#email.com",
"name": "JOHN DOE",
"roleName": "signer1",
"tabs":
{
"textTabs":
[
{
"documentId": "3",
"recipientId": "1",
"tabLabel": "groupname",
"value": "TEST GROUP ONE"
},
{
"documentId": "3",
"recipientId": "1",
"tabLabel": "groupnumber",
"value": "10001000"
},
{
"documentId": "3",
"recipientId": "1",
"tabLabel": "txt",
"value": "my#email.com"
},
{
"documentId": "3",
"recipientId": "1",
"tabLabel": "fein",
"value": "870142380"
},
{
"documentId": "3",
"recipientId": "1",
"tabLabel": "physicaladdress",
"value": "1 STREET WAY, , MY CITY, CA, 98001"
}
]
}
}
],
"status":"sent"
}
Based on the information you've provided, I understand your scenario to be as follows:
You've created a template via the DocuSign UI; that template contains a 'placeholder' document (which you will replace at run-time via your Create/Send Envlope API call) and defines the recipient(s) and tabs for that document.
When you create/send the envelope via API, you want to specify the document as part of the API request (i.e., to be used instead of the 'placeholder' document that the DocuSign template contains) and also auto-populate some of the tabs that the template defines.
If that's an accurate description of what you're trying to achieve, then you need to use Composite Templates in the API request structure. Here's an example of a Create/Send Envelope JSON request that uses composite templates (and contains data based upon the information you provided in your question):
{
"compositeTemplates": [
{
"serverTemplates": [
{
"sequence": "1",
"templateId": "TEMPLATE_ID"
}
],
"inlineTemplates": [
{
"sequence": "2",
"recipients": {
"signers": [
{
"name": "JOHN DOE",
"email": "JDOE#email.com",
"roleName": "signer1",
"tabs":
{
"textTabs":[
{
"tabLabel" : "groupname",
"value" : "TEST GROUP ONE"
},
{
"tabLabel" : "groupnumber",
"value" : "10001000"
},
{
"tabLabel" : "txt",
"value" : "my#email.com"
},
{
"tabLabel" : "fein",
"value" : "870142380"
},
{
"tabLabel" : "physicaladdress",
"value" : "1 STREET WAY, , MY CITY, CA, 98001"
}
]
}
}
]
}
}
],
"document": {
"documentId": "3",
"name": "10001000_20170803_FILE.docx",
"fileExtension": "docx",
"documentBase64": "BASE64STREAM"
}
}
],
"status": "sent",
"emailSubject": "TEST - Group Audit - 10001000"
}

DocuSign TAB_REFERS_TO_MISSING_DOCUMENT but document is attached (REST API)

I'm using the DocuSign REST API to create an envelope from a template. My code works with single document templates or templates with multiple documents where only one document has tabs. If there are tabs on both documents I receive a 400 response with error code TAB_REFERS_TO_MISSING_DOCUMENT.
The response I receive is:
{
"error": "invalid HTTP response",
"message": {
"errorCode": "TAB_REFERS_TO_MISSING_DOCUMENT",
"message": "The DocumentId specified in the tab element does not refer to a document in this envelope. Tab refers to DocumentId 45159457 which is not present."
},
"status": 400,
"url": "https://demo.docusign.net/restapi/v2/accounts/2826983/envelopes/"
}
My request is as follows:
{
"status": "sent",
"templateId": "bb283bfb-4049-431d-942a-9a485e4ebb41",
"emailSubject": "[[Signer UserName]], please sign this document",
"documents": [
{
"documentId": "27069418",
"documentBase64": "...",
"name": "name.pdf"
},
{
"documentId": "45159457",
"documentBase64": "...",
"name": "secondName.pdf"
}
]
}
From what I've seen people receive this request when they submit invalid documentId's like 1 but the document that's "missing" is clearly attached. Am I missing something?
The final and working JSON request looks like so:
{
"status": "sent",
"emailSubject": "...",
"compositeTemplates": [{
"serverTemplates": [{
"sequence": 2,
"templateId": "..."
}],
"inlineTemplates": [{
"sequence": 1,
"documents": [{
"documentId": "...",
"name": "...",
"documentBase64": "..."
}, {
"documentId": "...",
"name": "...",
"documentBase64": "..."
}]
}]
}]
}
You can overcome the error using composite Templates. Specifying the new documents in an inlineTemplate with lower sequence number("sequence": "1") will ensure the inlineTemplate documents will replace the server template documents.
Here is a sample CreateEnvelope request.
{
"emailSubject": "[[Signer UserName]], please sign this document",
"status": "sent",
"compositeTemplates": [
{
"inlineTemplates": [
{
"sequence": "1",
"documents": [
{
"documentId": "27069418",
"name": "name.pdf",
"documentBase64": ""
},
{
"documentId": "45159457",
"name": "secondName.pdf",
"documentBase64": ""
}
]
}
],
"serverTemplates": [
{
"sequence": "2",
"templateId": "bb283bfb-4049-431d-942a-9a485e4ebb41"
}
]
}
]
}
To replace the document(s) in a template you must use composite templates instructions in your Envelopes: create call.
In your use case, you want to composite together the template and then a new document "in front" of the existing document in the template.
"Compositing templates" is like compositing together multiple pieces of film to produce a final print.

Adding documents when using a template

I have created a template in my DocuSign account. As the UI requires, I have uploaded a document.
I have been trying to create a transaction using this template, however, I need to add documents to this transaction, on top of the ones provided in the template.
Looking at the DocuSign Template documentation, it doesn't seem possible as it is mentioned : To apply a template to an envelope you must set the templateId and templateRoles properties in your envelope definition. Since the template contains document(s) already you do not need to configure the documents node.
Am I missing something ?
You can use composite templates and specify a new document in addition to the documents present in the server template.
{
"compositeTemplates": [
{
"compositeTemplateId": "1",
"serverTemplates": [
{
"sequence": "1",
"templateId": "<Specify the server template Id here>"
}
],
"inlineTemplates": [
{
"sequence": "1",
"recipients": {
"signers": [
{
"name": "Recipient One",
"email": "recipientone#foo.com",
"roleName": "Signer", //This is the role name in the server template
"recipientId": "1"
}
]
}
}
]
},
{
"compositeTemplateId": "2",
"inlineTemplates": [
{
"sequence": "2"
}
],
"document": {
"documentId": "3", //Make sure this documentId is different from the document's present in the server template.
"name": "DocumentThree",
"fileExtension": "txt",
"documentBase64": "RG9jIFRXTyBUV08gVFdP"
}
}
],
"emailSubject": "Adding a new doc with composite templates",
"status": "created"
}

Docusign error TAB_REFERS_TO_MISSING_DOCUMENT

This should be pretty simple. I have one composite template with 1 server template and 1 inline template with one signer. This is what the request looks like:
{
"compositeTemplates": [
{
"serverTemplates": [
{
"sequence": "1",
"templateId": "c6dc72a6-51ae-47c3-a55a-7923a247f97c "
}
],
"inlineTemplates": [
{
"sequence": "2",
"recipients": {
"signers": [
{
"name": "Kathy Keaton",
"email": "KathyKeaton1#outlook.com",
"recipientId": "1",
"routingOrder": "1",
"roleName": "##Buyer1"
}
]
}
}
],
"document": {
"documentId": "1",
"name": "Doc1ForBigTest.docx",
"fileExtension": "docx",
"documentBase64": [bytearray]
}
}
],
"status": "sent",
"emailSubject": "Please sign the following document at 10:21 AM"
}
I want to use my copy of this particular document instead of the one in the template, but I get the TAB error mentioned above. What am I doing wrong? Thanks for any help.
You will need to download your template and look at the documentId references. It is likely that at some point the Web interface was used to update the document in the template, causing the new document to be added and the old one deleted. This involved updating the tab documentId references to be updated to "2" or higher. Now, when you substitute your document, you are specifying documentId="1" and DocuSign doesn't find a document with ID of "2" to put the tabs on.

Resources