Добавление документов в конверты с использованием составных шаблонов в DocuSign
Я пытаюсь добавить документы в составной шаблон, используя API docusign, и документы не загружаются в конверт, как я ожидал. В настоящее время мой код работает с тестовым JSON, где я добавляю документы без использования составных шаблонов, и он работает отлично. Похоже, что составные шаблоны пропускают прямо над документами. Вот как я это создаю:
{
"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"
}
]
}
}
]
}
]
}
Это небольшой тест, который я делаю, поэтому я понимаю, что это нецелесообразно. Но я пытаюсь понять, почему это не добавит документы в конверт. Запрос ниже делает то, что я пытаюсь сделать выше.
{
"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"
}
]
}
}
Кто-нибудь знает, почему мой конверт для составного шаблона не загружает документы?
Заранее спасибо!
ОБНОВЛЕНИЕ:
Вот мой запрос для составного шаблона:
--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--
Я настроил свой документ, чтобы использовать name и fileDxtension, поэтому я исключил расширение.pdf для fileName, так как это, кажется, еще один способ реализации этого. Я попробовал это в обоих направлениях и не повезло.
1 ответ
В запросе JSON, который вы разместили, вы указываете " документы " (множественное число) как коллекцию / массив объектов документа - что не правильно. Каждый элемент Composite Template в массиве CompositeTemplates может содержать не более одного документа. Это означает, что синтаксис JSON для указания документа в составном шаблоне выглядит следующим образом:
"document": {
"documentId": 1,
"name": "test1.pdf"
}
то есть документ является единичным, и это объект (а не массив объектов). Полный синтаксис запроса JSON-запроса "составные шаблоны" показан в ответе на предыдущий вопрос:
Как применить шаблон к документу с помощью Docusign REST API.
RE "ОБНОВЛЕНИЕ" на ваш вопрос:
В части JSON запроса, который вы разместили в разделе "ОБНОВЛЕНИЕ", я заметил, что вы включили документ в объект получателей (который содержится в объекте inlineTemplates) - это не правильное расположение для документа. Сравните вашу структуру JSON со следующей (правильной) структурой и соответствующим образом скорректируйте свой запрос. По сути, документ должен быть одноранговым узлом inlineTemplates - не находиться внутри inlineTemplates.
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--