REST相当于CreateEnvelopeFromTemplates?

时间:2017-12-04 19:10:39

标签: docusignapi

SOAP方法CreateEnvelopeFromTemplates获取TemplateReference个对象列表,这些对象允许我在ECM系统中创建1-1文档到DocuSign模板的映射。到目前为止,这已经非常有效,并且允许我构建信封创建算法,而无需知道特定用例中涉及多少文档。

但是,SOAP不支持新的“付款”标签。在尝试为此API调用找到REST替换时,我无法找到创建信封的方法,其中每个文档都引用不同的模板。例如,envelopes: create方法仅允许在envelopeDefinition中使用一个templateID。有没有办法将我已构建的功能移植到REST?

奖金问题:为什么DocuSign后端在应用模板时会区分SOAP和REST创建的信封?我并不希望能够使用SOAP以编程方式在信封上创建付款标签,但是我很惊讶使用SOAP指定带有付款标签的模板会阻止这些标签工作。

这是我的SOAP调用,无功能引用带有非功能性付款标签的模板:

    <?xml version="1.0" encoding="utf-8"?>
<soap:Envelope 
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
        <CreateEnvelopeFromTemplates xmlns="http://www.docusign.net/API/3.0">
            <TemplateReferences>
                <TemplateReference>
                    <TemplateLocation>Server</TemplateLocation>
                    <Template>8E556CD1-D343-4C07-9401-D88B00A67671</Template>
                    <Document>
                        <ID>90267</ID>
                        <Name>DS - Template Mapping - 12/4/2017 John Payme2 (90267)</Name>
                        <PDFBytes>omitted</PDFBytes>
                        <FileExtension>pdf</FileExtension>
                    </Document>
                    <RoleAssignments>
                        <RoleAssignment>
                            <RoleName>Payer</RoleName>
                            <RecipientID>37974046</RecipientID>
                        </RoleAssignment>
                    </RoleAssignments>
                    <Sequence>1</Sequence>
                </TemplateReference>
            </TemplateReferences>
            <Recipients>
                <Recipient>
                    <ID>37974046</ID>
                    <UserName>John Payme2</UserName>
                    <Email>ANDREW.MORTON@HYLAND.COM</Email>
                    <Type>Signer</Type>
                    <AccessCode />
                    <RequireIDLookup>false</RequireIDLookup>
                    <RoutingOrder>1</RoutingOrder>
                    <Note/>
                    <RoleName>Payer</RoleName>
                </Recipient>
            </Recipients>
            <EnvelopeInformation>
                <AccountId>9cace92e-1384-4cf7-9b4c-a2bd70aab9a1</AccountId>
            </EnvelopeInformation>
            <ActivateEnvelope>true</ActivateEnvelope>
        </CreateEnvelopeFromTemplates>
    </soap:Body>
</soap:Envelope>

2 个答案:

答案 0 :(得分:2)

Ergin回复了您的主要qs,现在为了您的Bonus qs,如果您使用具有付款标签的模板,DocuSign仍然允许您使用SOAP API创建信封。我在使用SOAP API创建信封时没有遇到任何问题。我对它进行了测试,并在签名时获得了付款屏幕。请找到SOAP请求以使用付款模板创建信封。它使用不同的操作CreateEnvelopeFromTemplatesAndForms和CompositeTemplate设计模式。您只需设置在模板中设置的accountGuid,TemplateGuid和RoleName。

<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope">
  <SOAP-ENV:Body>
    <CreateEnvelopeFromTemplatesAndForms xmlns="http://www.docusign.net/API/3.0">
      <ActivateEnvelope>true</ActivateEnvelope>
      <EnvelopeInformation>
        <AccountId>{{accountId}}</AccountId>
        <Subject>Test SOAP Subject</Subject>
        <EmailBlurb>Test SOAP Body</EmailBlurb>
      </EnvelopeInformation>
      <CompositeTemplates>
        <CompositeTemplate>
          <ServerTemplates>
            <ServerTemplate>
              <Sequence>1</Sequence>
              <TemplateID>{{TemplateId}}</TemplateID>
            </ServerTemplate>
          </ServerTemplates>
          <InlineTemplates>
            <InlineTemplate>
              <Sequence>2</Sequence>
              <Envelope>
                <AccountId>{{accountId}}</AccountId>
                <Recipients>
                  <Recipient>
                    <ID>1</ID>
                    <RoleName>Signer1</RoleName>
                    <UserName>Signer 1</UserName>
                    <Email>email@gmail.com</Email>
                    <Type>Signer</Type>
                  </Recipient>
                </Recipients>
              </Envelope>
            </InlineTemplate>
          </InlineTemplates>
        </CompositeTemplate>
      </CompositeTemplates>
    </CreateEnvelopeFromTemplatesAndForms>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

答案 1 :(得分:1)

您正在寻找的内容在REST API中称为复合模板。复合模板是一个非常强大的功能,虽然它们可以非常快速地复杂化 - 使用CT可以执行诸如将模板和文档组合在同一个信封中,或组合多个模板等等。

复合模板上更好的资源之一是开发人员中心的模板上的功能页面,其中包含复合模板的部分: https://www.docusign.com/developer-center/explore/features/templates#composite

信封中有一节:创建API文档,讨论composite templates

示例用法:

以下是上述资源之一的快速示例,在此示例中,两个模板合并为一个信封:

{
    "emailSubject": "DocuSign API - Composite Templates",
    "emailBlurb": "Composite Templates Sample 1",
    "status": "sent",
    "compositeTemplates": [{
        "serverTemplates": [{
            "sequence": "1",
            "templateId": "55A80182-2E9F-435D-9B16-FD1E1C0F9D74"
        }],
        "inlineTemplates": [{
            "sequence": "1",
            "recipients": {
                "signers": [{
                    "email": "johndoe@email.com",
                    "name": "John Doe",
                    "recipientId": "1",
                    "roleName": "Buyer"
                }]
            }
        }]
    }, {
        "serverTemplates": [{
            "sequence": "2",
            "templateId": "44D9E888-3D86-4186-8EE9-7071BC87A0DA"
        }],
        "inlineTemplates": [{
            "sequence": "2",
            "recipients": {
                "signers": [{
                    "email": "sallydoe@email.com",
                    "name": "Sally Doe",
                    "recipientId": "1",
                    "roleName": "Seller"
                }]
            }
        }]
    }]
}