【问题标题】:How do I apply a template to a document using Docusign REST API如何使用 Docusign REST API 将模板应用于文档
【发布时间】:2013-11-17 17:47:50
【问题描述】:

我目前正在使用 docusign rest API,我想知道是否有人有我如何在一个信封中添加文档和模板的示例。我可以访问我需要的模板 ID,并且我使用复合模板创建了一个包含多个文档和相应模板的信封。不过,我只使用模板 ID 执行此操作。现在我正在尝试弄清楚如何将文档添加到复合模板中。如果文档包含模板(如果有模板,我可以访问模板 ID),它应该将模板应用于该文档。

我可以通过 REST API 将模板应用到文档吗?如果有,有没有人举个例子?

【问题讨论】:

    标签: templates docusignapi envelope


    【解决方案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 请求本身提供的信息(文档、收件人)相结合方面为您提供了极大的灵活性。上面的示例非常简单(一个模板、一个文档、一个收件人)——但它可以很容易地扩展到您想要组合多个模板/文档/收件人的情况。

    (REST API 指南第 26-27 页上的示例请求显示了发送多部分请求时所需的基本格式:http://www.docusign.com/sites/default/files/REST_API_Guide_v2.pdf。)

    示例 #2:

    接下来,我们假设您希望在信封中包含模板中定义的所有文档,但您还希望在信封中包含两个额外的文档(未由模板定义)。以下示例请求创建一个信封,其中包含 2 个文档,这些文档被指定为 API 请求的一部分(CustomerAgreement.pdf 和 Invoice.pdf),以及由第 3 个复合模板结构中引用的模板定义的所有文档。一些一般性说明:

    • 文档将按照它们出现的顺序出现在信封中 在 JSON 请求中指定。在此示例中,这意味着文档顺序为:1) CustomerAgreement.pdf(通过第一个复合模板结构中的 API 请求指定),2) Invoice.pdf(通过第二个复合模板结构中的 API 请求指定)和 3 ) 在第三个复合模板结构中引用的模板指定的所有文档。

    • 虽然每个单独的复合模板结构都必须指定收件人信息——DocuSign 将在形成信封的收件人集合时匹配/合并任何相同的收件人信息。在此示例中,生成的信封只有一个收件人:Abby Abbott。

    因为我们通过 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--
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-11
      • 1970-01-01
      • 2018-02-27
      • 1970-01-01
      相关资源
      最近更新 更多