DocUsign REST API를 사용하여 문서에 템플릿을 적용하려면 어떻게합니까?
-
21-12-2019 - |
문제
현재 DocUsign REST API로 작업하고 있으며 누구든지 누구나 한 봉투에 문서 및 템플릿을 추가 할 수있는 방법을 보여주는 것입니다.나는 템플릿 ID가 필요한 템플릿 ID에 액세스 할 수 있으며 복합 템플릿을 사용하여 해당 템플릿이있는 여러 문서가있는 봉투를 만들었습니다.템플릿 ID를 사용 하여이 작업을 수행하고 있습니다.이제 복합 템플릿에 문서를 추가하는 방법을 알아 내려고합니다.문서에 템플릿이 포함되어있는 경우 (하나의 템플릿 ID에 액세스 할 수 있습니다) 해당 문서에 템플릿을 적용해야합니다.
REST API를 통해 템플릿을 문서에 적용 할 수 있습니까?그렇다면 누구에게도 예제가 있습니까?
해결책
여기에는 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 안내서의 P26-27의 예제 요청은 다중 파트 요청을 보낼 때 필요한 기본 형식을 보여줍니다. http://www.docusign.com/sites/default/files/rest_api_guide_v2.pdf .)
예제 # 2 :
다음으로 템플리트에 정의 된 모든 문서를 봉투에 포함 시키려고 가정하지만 봉투에 두 개의 추가 문서 (템플릿에 의해 정의되지 않음)를 포함하고자합니다. 다음 예제 요청은 API 요청 (CustomerAgreement.pdf 및 invoice.pdf)의 일부로 지정된 2 개의 문서와 3RD 복합 템플릿 구조에서 참조하는 템플릿에 의해 정의 된 모든 문서가있는 봉투를 만듭니다. 몇 가지 일반 메모 :
-
문서가 봉투에 나타납니다. JSON 요청에 명시되어 있습니다. 이 예에서는 문서 순서가 1) CustomerAgreement.pdf (첫 번째 복합 템플릿 구조에서 API 요청을 통해 지정), 2) invoice.pdf (두 번째 복합 템플릿 구조에서 API 요청을 통해 지정됨), 3 ) 세 번째 복합 템플릿 구조에서 참조하는 템플릿이 지정한 모든 문서입니다.
-
개별 복합 템플릿 구조가 수신자 정보를 지정해야하지만 봉투에 대한받는 사람 컬렉션을 형성 할 때 동일한받는 사람 정보를 일치시켜 / 병합합니다. 이 예에서 결과 봉투에는 하나의 수신자 만 있습니다. 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--
.