Adicionando documentos a envelopes usando modelos compostos no DocuSign
-
27-12-2019 - |
Pergunta
Estou tentando adicionar documentos a um modelo composto usando a API docusign e os documentos não estão sendo carregados no envelope da maneira que eu esperava.Atualmente tenho meu código funcionando com um json de teste onde adiciono documentos sem usar templates compostos e funciona perfeitamente.Parece que os modelos compostos ignoram os documentos.Veja como estou criando:
{
"emailSubject": "Test Email Subject_FA",
"emailBlurb": "Test Email Body_FA",
"status": "created",
"compositeTemplates": [
{
"inlineTemplates": [
{
"sequence": "1",
"recipients": {
"signers": [
{
"email": "test1@yahoo.com",
"name": "test1",
"recipientId": "1",
"routingOrder": "1",
"roleName": "Client 1"
},
{
"email": "test2@gmail.com",
"name": "test2",
"recipientId": "2",
"routingOrder": "2",
"roleName": "Client 2"
}
],
"documents": [
{
"transformPdfFields": "false",
"name": "test0.pdf",
"documentId": "1"
}
]
}
}
]
},
{
"inlineTemplates": [
{
"sequence": "1",
"recipients": {
"signers": [
{
"email": "test1@yahoo.com",
"name": "test1",
"recipientId": "1",
"routingOrder": "1",
"roleName": "Client 1"
},
{
"email": "test2@gmail.com",
"name": "test2",
"recipientId": "2",
"routingOrder": "2",
"roleName": "Client 2"
}
],
"documents": [
{
"transformPdfFields": "false",
"name": "test1.pdf",
"documentId": "2"
}
]
}
}
]
}
]
}
Este é um pequeno teste que estou fazendo, então entendo que é impraticável.Mas o que estou tentando entender é por que isso não acrescentaria documentos ao envelope.A solicitação abaixo faz o que estou tentando fazer acima.
{
"emailSubject": "Test Email Subject_FA",
"emailBlurb": "Test Email Body_FA",
"status": "created",
"documents": [
{
"name": "test0.pdf",
"documentId": "1"
},
{
"name": "test1.pdf",
"documentId": "2"
},
{
"name": "test2.pdf",
"documentId": "3"
}
],
"recipients": {
"signers": [
{
"email": "test1@yahoo.com",
"name": "test1",
"recipientId": "1",
"clientUserId": "1",
"signerName": "test1",
"defaultRecipient": "true",
"defaultRecipientSpecified": "true",
"routingOrder": "1"
},
{
"email": "test2@gmail.com",
"name": "test2",
"recipientId": "2",
"clientUserId": "2",
"signerName": "test2",
"routingOrder": "2"
}
]
}
}
Alguém sabe por que meu envelope do modelo composto não carrega os documentos?
Agradeço antecipadamente!
ATUALIZAR:
Aqui está minha solicitação para o modelo composto:
--MY_BOUNDARY
Content-Type: application/json
Content-Disposition: form-data
{
"emailSubject": "Test Email Subject_FA",
"emailBlurb": "Test Email Body_FA",
"status" : "created",
"compositeTemplates": [
{
"inlineTemplates": [
{
"sequence": "1",
"recipients":
{
"signers": [
{
"email": "test1@yahoo.com",
"name": "test1",
"recipientId": "1"
},
{
"email": "test2@gmail.com",
"name": "test2",
"recipientId": "2"
}
],
"document":
{
"name": "test0",
"documentId": "1",
"fileExtension": "pdf"
}
}
}
]
},
{
"inlineTemplates": [
{
"sequence": "2",
"recipients": {
"signers": [
{
"email": "test1@yahoo.com",
"name": "test1",
"recipientId": "1"
},
{
"email": "test3@yahoo.com",
"name": "test3",
"recipientId": "2"
}
],
"document":
{
"name": "test1",
"documentId": "2",
"fileExtension": "pdf"
}
}
}
]
}
]
}
--MY_BOUNDARY
Content-Type: application/pdf
Content-Disposition: file; filename="test0.pdf"; documentid="1"
--MY_BOUNDARY
Content-Type: application/pdf
Content-Disposition: file; filename="test1.pdf"; documentid="2"
--MY_BOUNDARY--
Ajustei meu documento para usar name e fileDxtension, então deixei de fora a extensão .pdf no fileName, pois parece ser outro método de implementação.Já tentei das duas maneiras e não tive sorte.
Solução
Na solicitação JSON que você postou, você está especificando "documentos"(plural) como uma coleção/matriz de documento objetos - o que não está correto.Cada item do modelo composto dentro do modelos compostos array só pode conter, no máximo, um solteiro documento.Isso significa que a sintaxe JSON para especificar o documento em um modelo composto é a seguinte:
"document": {
"documentId": 1,
"name": "test1.pdf"
}
ou seja, documento é singular e é um objeto (não uma matriz de objetos).A sintaxe completa da solicitação JSON dos 'modelos compostos' é mostrada na resposta da sua pergunta anterior:
Como aplico um modelo a um documento usando Docusign REST API.
RE a "ATUALIZAÇÃO" da sua pergunta:
Na parte JSON da solicitação que você postou em "UPDATE", percebo que você incluiu documento dentro do destinatários objeto (que está contido no modelos embutidos objeto) - este não é o local correto para documento.Compare sua estrutura JSON com a estrutura a seguir (correta) e ajuste sua solicitação de acordo.Essencialmente, documento deve ser um par de modelos embutidos - não localizado dentro modelos embutidos.
POST https://demo.docusign.net/restapi/v2/accounts/ACCOUNTNBR/envelopes HTTP/1.1
X-DocuSign-Authentication: {"Username":"USERNAME","Password":"PASSWORD","IntegratorKey":"INTEGRATORKEY"}
Content-Type: multipart/form-data; boundary=MY_BOUNDARY
Accept: application/json
Host: demo.docusign.net
Content-Length: 162100
--MY_BOUNDARY
Content-Type: application/json
Content-Disposition: form-data
{
"status" : "sent",
"emailSubject" : "Test Envelope Subject",
"emailBlurb" : "Test Envelope Blurb",
"compositeTemplates": [
{
"inlineTemplates": [
{
"sequence" : 1,
"recipients": {
"signers" : [{
"email": "abbysemail@outlook.com",
"name": "Abby Abbott",
"recipientId": "1"
}]
}
}],
"document": {
"documentId": 1,
"name": "CustomerAgreement",
"fileExtension": "pdf"
}
}]
}
--MY_BOUNDARY
Content-Type: application/pdf
Content-Disposition: file; filename="CustomerAgreement.pdf"; documentid="1"
<document bytes removed>
--MY_BOUNDARY
Content-Type: application/pdf
Content-Disposition: file; filename="Invoice.pdf"; documentid="2"
<document bytes removed>
--MY_BOUNDARY--