Как применить шаблон к документу с помощью Docusign REST API

В настоящее время я работаю с docusign rest API и мне интересно, есть ли у кого-нибудь пример того, как я могу добавить документы и шаблоны в один конверт. У меня есть доступ к нужным идентификаторам шаблонов, и я использовал составные шаблоны для создания конверта с несколькими документами с соответствующими шаблонами. Я делаю это ТОЛЬКО используя идентификатор шаблона, хотя. Сейчас я пытаюсь выяснить, как добавить документ в составной шаблон. Если документ содержит шаблон (у меня есть доступ к идентификаторам шаблона, если он есть), он должен применить шаблон к этому документу.

Могу ли я применить шаблоны к документу через API остальных? Если так, у кого-нибудь есть пример?

1 ответ

Решение

Вот несколько примеров, которые показывают, как можно использовать составные шаблоны для объединения информации из шаблона (ов) с информацией, указанной в самом запросе API.

Пример № 1:

В следующем примере запроса создается конверт, в котором шаблон используется для определения тегов и ролей получателей для конверта, но информация о документе и получателе предоставляется в самом запросе API.

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

{
    "emailBlurb":"Test Email Body",
    "emailSubject": "Test Email Subject",
    "status" : "sent",
    "compositeTemplates": [
    {
        "serverTemplates": [
        {
            "sequence" : 1,
            "templateId": "TEMPLATE_ID"
        }],
        "inlineTemplates": [
        {
            "sequence" : 2,
            "recipients": {
                "signers" : [{
                    "email": "bettysemail@outlook.com",
                    "name": "Betty Adamson",
                    "recipientId": "1",
                    "roleName": "RoleOne"
                }]
            }
        }],
        "document": {
            "documentId": 1,
            "name": "test1.pdf"
        }
    }]
}

--MY_BOUNDARY
Content-Type: application/pdf
Content-Disposition: file; filename="TestDocAPI.pdf"; documentid="1"

<document bytes removed>

--MY_BOUNDARY--

Как показано выше, для предоставления документа (-ов) через сам запрос API необходимо отправить запрос, состоящий из нескольких частей, где первая часть представляет полный JSON для запроса, а каждая последующая часть запроса представляет содержимое один документ, на который есть ссылка в JSON. Если ваш JSON ссылается на несколько документов, ваш запрос будет содержать дополнительную / отдельную часть для каждого документа.

Составные шаблоны являются мощными в том смысле, что они дают вам большую гибкость в плане объединения информации из шаблонов с информацией (документами, получателями), предоставляемой посредством самого запроса API во время выполнения. Приведенный выше пример очень прост (один шаблон, один документ, один получатель), но его можно легко расширить для случаев, когда вы хотите объединить несколько шаблонов / документов / получателей.

(Пример запроса на стр. 26-27 REST API Guide показывает базовый формат, который требуется при отправке запроса из нескольких частей: http://www.docusign.com/sites/default/files/REST_API_Guide_v2.pdf.)

Пример № 2:

Далее, давайте предположим, что вы хотите включить в конверт все документы, которые определены в шаблоне, но вы также хотите включить два дополнительных документа (не определенных шаблоном) в конверт. В следующем примере запроса создается конверт с двумя документами, указанными как часть запроса API (CustomerAgreement.pdf и Invoice.pdf), и всеми документами, определенными шаблоном, на который ссылается 3-я структура составного шаблона. Пара общих замечаний:

  • Документы будут отображаться в конверте в порядке, указанном в запросе JSON. В этом примере это означает, что порядок документов: 1) CustomerAgreement.pdf (задан через запрос API в первой структуре составного шаблона), 2) Invoice.pdf (задан через запрос API во второй структуре составного шаблона) и 3) все документы, указанные в шаблоне, на который есть ссылка в третьей структуре составного шаблона.

  • Хотя каждая отдельная структура составного шаблона должна указывать информацию о получателе, DocuSign будет сопоставлять / объединять любую идентичную информацию о получателе при формировании коллекции получателей для конверта. В этом примере у получающегося Конверта есть только один получатель: Эбби Эбботт.

Поскольку мы задаем два документа через запрос API, запрос состоит из ТРИ частей: 1) JSON, 2) содержимое первого документа, 3) содержимое второго документа.

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"
        }
    },
    {
        "inlineTemplates": [
        {
            "sequence" : 2,
            "recipients": {
                "signers" : [{
                    "email": "abbysemail@outlook.com",
                    "name": "Abby Abbott",
                    "recipientId": "1"
                }]
            }
        }],
        "document": {
            "documentId": 2,
            "name": "Invoice",
            "fileExtension": "pdf"
        }
    },
    {
        "serverTemplates": [
        {
            "sequence" : 1,
            "templateId": "TEMPLATE_ID"
        }],
        "inlineTemplates": [
        {
            "sequence" : 2,
            "recipients": {
                "signers" : [{
                    "email": "abbysemail@outlook.com",
                    "name": "Abby Abbott",
                    "recipientId": "1",
                    "roleName": "Initiator",
                    "routingOrder":"1"
                }
                ]
            }
        }]
    }]
}

--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--
Другие вопросы по тегам