如何将服务器模板应用于 DocuSign API 中的信封文档?
How do I apply a server template to envelope document in DocuSign API?
我有一个客户登录他们的 DS 帐户,上传一个 17 页的 PDF,单击旁边的操作 link 并选择 "Apply Template"。该模板包含选项卡和角色。他们在 DS UI 中填写角色,然后单击发送。我正在尝试通过 API.
重建该过程
我发现这看起来应该适合我的场景:How do I apply a template to a document using Docusign REST API
我收到的是一个 34 页的信封:原始的 17 页上传 PDF 和模板中的 17 页。正在添加与应用模板。
该模板确实将其文档拆分出来(例如,一个 4 页的文档有两个选项卡,一个 1 页的文档有 1 个选项卡,等等。总共 17 页)。它在 UI 中运行良好,所以不确定这是否会影响任何内容。
如何上传 PDF 并将模板应用到文档中?
这是我的请求负载:
POST https://demo.docusign.net/restapi/v2/accounts/ACCTNMBR/envelopes HTTP/1.1
Accept: application/json
Content-Type: multipart/form-data; boundary=myboundary
--myboundary
Content-Type: application/json
Content-Disposition: form-data
{
"emailBlurb": "Test Envelope Blurb",
"emailSubject": "Test Envelope Subject",
"status": "created",
"signingLocation": "Online",
"compositeTemplates": [
{
"document": {
"documentId": 1,
"name": "UPLOADED.pdf"
},
"inlineTemplates": [{
"sequence": "1",
"recipients": {
"signers": [{
"email": "jane.doe@example.com",
"name": "Jane Doe",
"recipientId": "1",
"roleName": "Signer1",
"clientUserId": "123"
}]
}
}]
},
{
"serverTemplates": [{
"sequence": "1",
"templateId": "TEMPLATE_ID"
}]
}]
}
--myboundary
Content-Type: application/pdf
Content-Disposition: file; filename="UPLOADED.pdf"; documentid=1
PDF_BYTES_HERE
--myboundary--
您发布的请求正在创建两个复合模板。第一个包含您上传的 PDF 并定义您的签名者,而第二个提取您的服务器端模板的内容。解决方案是只定义一个复合模板。这将导致您上传的 PDF、内联模板和服务器端模板全部合并。例如:
POST https://demo.docusign.net/restapi/v2/accounts/ACCTNMBR/envelopes HTTP/1.1
Accept: application/json
Content-Type: multipart/form-data; boundary=myboundary
--myboundary
Content-Type: application/json
Content-Disposition: form-data
{
"emailBlurb": "Test Envelope Blurb",
"emailSubject": "Test Envelope Subject",
"status": "created",
"signingLocation": "Online",
"compositeTemplates": [
{
"document": {
"documentId": 1,
"name": "UPLOADED.pdf"
},
"inlineTemplates": [{
"sequence": "1",
"recipients": {
"signers": [{
"email": "jane.doe@example.com",
"name": "Jane Doe",
"recipientId": "1",
"roleName": "Signer1",
"clientUserId": "123"
}]
}
}],
"serverTemplates": [{
"sequence": "2",
"templateId": "TEMPLATE_ID"
}]
}]
}
--myboundary
Content-Type: application/pdf
Content-Disposition: file; filename="UPLOADED.pdf"; documentid=1
PDF_BYTES_HERE
--myboundary--
不过有几点需要注意:
- 第一个文档获胜 - 较低序列模板提供文档。
- 最后 recipients/tabs 获胜 - 更高序列模板覆盖 recipients/tabs。
- 如果您的服务器端模板有多个文档,那么您可能需要上传多个文档。如果您打算上传一个 PDF,那么您的服务器端模板也应该有一个文档。
最终的答案是用草稿形式的上传文档创建一个信封。然后将模板应用于信封文档而不是信封本身或使用复合模板。
POST https://demo.docusign.net/restapi/v2/accounts/ACCTNMBR/envelopes/ENVELOPEID/documents/1/templates HTTP/1.1
Accept: application/json
Content-Type: application/json
{
"documentTemplates": [{
"documentId": "1",
"templateId": "TEMPLATE_ID",
"documentStartPage": "1",
"documentEndPage": "15"
}]
}
我有一个客户登录他们的 DS 帐户,上传一个 17 页的 PDF,单击旁边的操作 link 并选择 "Apply Template"。该模板包含选项卡和角色。他们在 DS UI 中填写角色,然后单击发送。我正在尝试通过 API.
重建该过程我发现这看起来应该适合我的场景:How do I apply a template to a document using Docusign REST API
我收到的是一个 34 页的信封:原始的 17 页上传 PDF 和模板中的 17 页。正在添加与应用模板。
该模板确实将其文档拆分出来(例如,一个 4 页的文档有两个选项卡,一个 1 页的文档有 1 个选项卡,等等。总共 17 页)。它在 UI 中运行良好,所以不确定这是否会影响任何内容。
如何上传 PDF 并将模板应用到文档中?
这是我的请求负载:
POST https://demo.docusign.net/restapi/v2/accounts/ACCTNMBR/envelopes HTTP/1.1
Accept: application/json
Content-Type: multipart/form-data; boundary=myboundary
--myboundary
Content-Type: application/json
Content-Disposition: form-data
{
"emailBlurb": "Test Envelope Blurb",
"emailSubject": "Test Envelope Subject",
"status": "created",
"signingLocation": "Online",
"compositeTemplates": [
{
"document": {
"documentId": 1,
"name": "UPLOADED.pdf"
},
"inlineTemplates": [{
"sequence": "1",
"recipients": {
"signers": [{
"email": "jane.doe@example.com",
"name": "Jane Doe",
"recipientId": "1",
"roleName": "Signer1",
"clientUserId": "123"
}]
}
}]
},
{
"serverTemplates": [{
"sequence": "1",
"templateId": "TEMPLATE_ID"
}]
}]
}
--myboundary
Content-Type: application/pdf
Content-Disposition: file; filename="UPLOADED.pdf"; documentid=1
PDF_BYTES_HERE
--myboundary--
您发布的请求正在创建两个复合模板。第一个包含您上传的 PDF 并定义您的签名者,而第二个提取您的服务器端模板的内容。解决方案是只定义一个复合模板。这将导致您上传的 PDF、内联模板和服务器端模板全部合并。例如:
POST https://demo.docusign.net/restapi/v2/accounts/ACCTNMBR/envelopes HTTP/1.1
Accept: application/json
Content-Type: multipart/form-data; boundary=myboundary
--myboundary
Content-Type: application/json
Content-Disposition: form-data
{
"emailBlurb": "Test Envelope Blurb",
"emailSubject": "Test Envelope Subject",
"status": "created",
"signingLocation": "Online",
"compositeTemplates": [
{
"document": {
"documentId": 1,
"name": "UPLOADED.pdf"
},
"inlineTemplates": [{
"sequence": "1",
"recipients": {
"signers": [{
"email": "jane.doe@example.com",
"name": "Jane Doe",
"recipientId": "1",
"roleName": "Signer1",
"clientUserId": "123"
}]
}
}],
"serverTemplates": [{
"sequence": "2",
"templateId": "TEMPLATE_ID"
}]
}]
}
--myboundary
Content-Type: application/pdf
Content-Disposition: file; filename="UPLOADED.pdf"; documentid=1
PDF_BYTES_HERE
--myboundary--
不过有几点需要注意:
- 第一个文档获胜 - 较低序列模板提供文档。
- 最后 recipients/tabs 获胜 - 更高序列模板覆盖 recipients/tabs。
- 如果您的服务器端模板有多个文档,那么您可能需要上传多个文档。如果您打算上传一个 PDF,那么您的服务器端模板也应该有一个文档。
最终的答案是用草稿形式的上传文档创建一个信封。然后将模板应用于信封文档而不是信封本身或使用复合模板。
POST https://demo.docusign.net/restapi/v2/accounts/ACCTNMBR/envelopes/ENVELOPEID/documents/1/templates HTTP/1.1
Accept: application/json
Content-Type: application/json
{
"documentTemplates": [{
"documentId": "1",
"templateId": "TEMPLATE_ID",
"documentStartPage": "1",
"documentEndPage": "15"
}]
}