DocUsign Rest APIを使用して文書にテンプレートを適用する方法
-
21-12-2019 - |
質問
私は現在Docusign Rest APIと協力していて、1つの封筒で文書やテンプレートを追加できる方法の例を持っているかどうか疑問に思います。私は必要なテンプレートIDにアクセスする必要があり、私は対応するテンプレートを持つ複数の文書を持つエンベロープを作成するためにコンポジットテンプレートを使用しました。私はテンプレートIDを使用してこれをやっています。これで、複合テンプレートにドキュメントを追加する方法を見つけようとしています。文書にテンプレートが含まれている場合(IDが1つ持てない場合はテンプレートIDにアクセスできます)それはその文書にテンプレートを適用する必要があります。
REST APIを介して文書にテンプレートを適用できますか?もしそうなら、誰かが例を持っていますか?
解決
これは、複合テンプレートを利用してテンプレートからの情報をAPIリクエスト自体を介して指定された情報をどのように組み合わせるかを示す例を示す例です。
次の要求例では、テンプレートを使用してエンベロープのタグと受信者の役割を定義するために使用される封筒を作成しますが、その文書および受信者情報は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リクエスト自体を介して提供された情報(文書、受信者)との情報を組み合わせるという点で、素晴らしい柔軟性を与えるという点で強力です。上記の例は非常に単純です(1つのテンプレート、1つの文書、1つの受信者) - しかし、複数のテンプレート/文書/受信者を組み合わせる場合に簡単に拡張できます。
(REST APIガイドのP26-27の要求の例は、マルチパート要求を送信するときに必要な基本形式を示しています。 http://www.docusign.com/sit :/default/files/rest_api_guide_v2.pdf 。)
次に、テンプレート内で定義されているすべての文書に含まれている封筒に含めるとしますが、封筒に2つの追加の文書(テンプレートで定義されていない)も含めたいとします。次の要求例では、API要求の一部(CustomerAgreement.pdfおよびInvoice.pdf)として指定されている2つの文書と、3番目の複合テンプレート構造で参照されているテンプレートによって定義されているすべての文書を作成します。一般的なノートの数:
-
文書は、封筒に表示されます。 JSON要求に指定されています。この例では、これは文書順序は以下のとおりです.1)CustomerAgreement.pdf(最初のコンポジットテンプレート構造でAPI要求を介して指定)、2)Invoice.pdf(2番目のコンポジットテンプレート構造でAPI要求を介して指定)、および3 )第3の複合テンプレート構造で参照されているテンプレートで指定されたすべての文書。
-
各個別の複合テンプレート構造は受信者情報を指定する必要がありますが、エンベロープの受信者コレクションを作成するときに、同じ受信者情報が一致/マージします。この例では、結果のエンベロープには、Abby Abbott。
の受信者は1つだけです。
API要求を介して2つの文書を指定しているため、リクエストには合計3つの部分があります.1)JSON、2)最初の文書の内容、3)2番目の文書の内容。
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--
.