DataFlex
DataFlex
DocuSign Add Documents to a Draft Envelope
See more DocuSign Examples
Demonstrates how to add one or more additional documents to a DocuSign draft envelope.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoHttp
Handle hoJsonToken
Handle hoBd1
Handle hoBd2
Handle hoJson
Integer i
Variant vSbJson
Handle hoSbJson
String sUrl
Variant vResp
Handle hoResp
Handle hoJResp
Integer iRespStatusCode
String sDocumentId
String sDocumentIdGuid
String sName
String sV_type
String sUri
String sOrder
String sContainsPdfFormFields
String sTemplateRequired
String sAuthoritativeCopy
String sEnvelopeId
Integer iCount_i
String sTemp1
Move False To iSuccess
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Get Create (RefClass(cComChilkatHttp)) To hoHttp
If (Not(IsComObjectCreated(hoHttp))) Begin
Send CreateComObject of hoHttp
End
// Load a previously obtained OAuth2 access token.
Get Create (RefClass(cComChilkatJsonObject)) To hoJsonToken
If (Not(IsComObjectCreated(hoJsonToken))) Begin
Send CreateComObject of hoJsonToken
End
Get ComLoadFile Of hoJsonToken "qa_data/tokens/docusign.json" To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoJsonToken To sTemp1
Showln sTemp1
Procedure_Return
End
// Adds the "Authorization: Bearer eyJ0eXAi.....UE8Kl_V8KroQ" header.
Get ComStringOf Of hoJsonToken "access_token" To sTemp1
Set ComAuthToken Of hoHttp To sTemp1
// Send the following request.
// Make sure to use your own account ID (obtained from Get Docusign User Account Information)
// PUT https://demo.docusign.net/restapi/v2.1/accounts/<account ID>/envelopes/<envelope ID>/documents HTTP/1.1
// Expect: 100-continue
// Accept: application/json
// Cache-Control: no-cache
// Authorization: Bearer eyJ0eX...
// Content-Length: ...
// Content-Type: application/json
//
// {
// "documents": [
// {
// "documentId": "1",
// "name": "hello.pdf",
// "pages": "1",
// "documentBase64": "<insert base64 content here>"
// },
// {
// "documentId": "2",
// "name": "hello2.pdf",
// "pages": "1",
// "documentBase64": "<insert base64 content here>"
// }
// ]
// }
Get Create (RefClass(cComChilkatBinData)) To hoBd1
If (Not(IsComObjectCreated(hoBd1))) Begin
Send CreateComObject of hoBd1
End
Get ComLoadFile Of hoBd1 "qa_data/pdf/hello.pdf" To iSuccess
Get Create (RefClass(cComChilkatBinData)) To hoBd2
If (Not(IsComObjectCreated(hoBd2))) Begin
Send CreateComObject of hoBd2
End
Get ComLoadFile Of hoBd2 "qa_data/pdf/hello2.pdf" To iSuccess
Get Create (RefClass(cComChilkatJsonObject)) To hoJson
If (Not(IsComObjectCreated(hoJson))) Begin
Send CreateComObject of hoJson
End
Move 0 To i
Set ComI Of hoJson To i
Get ComUpdateString Of hoJson "documents[i].documentId" "1" To iSuccess
Get ComUpdateString Of hoJson "documents[i].name" "hello.pdf" To iSuccess
Get ComUpdateString Of hoJson "documents[i].pages" "1" To iSuccess
Get ComGetEncoded Of hoBd1 "base64" To sTemp1
Get ComUpdateString Of hoJson "documents[i].documentBase64" sTemp1 To iSuccess
Move (i + 1) To i
Set ComI Of hoJson To i
Get ComUpdateString Of hoJson "documents[i].documentId" "2" To iSuccess
Get ComUpdateString Of hoJson "documents[i].name" "hello2.pdf" To iSuccess
Get ComUpdateString Of hoJson "documents[i].pages" "1" To iSuccess
Get ComGetEncoded Of hoBd2 "base64" To sTemp1
Get ComUpdateString Of hoJson "documents[i].documentBase64" sTemp1 To iSuccess
Get Create (RefClass(cComChilkatStringBuilder)) To hoSbJson
If (Not(IsComObjectCreated(hoSbJson))) Begin
Send CreateComObject of hoSbJson
End
Set ComEmitCompact Of hoJson To False
Get pvComObject of hoSbJson to vSbJson
Get ComEmitSb Of hoJson vSbJson To iSuccess
Send ComSetRequestHeader To hoHttp "Expect" "100-continue"
Send ComSetRequestHeader To hoHttp "Cache-Control" "no-cache"
Send ComSetRequestHeader To hoHttp "Accept" "application/json"
// Use your own account ID here.
Get ComSetUrlVar Of hoHttp "accountId" "7f3f65ed-5e87-418d-94c1-92499ddc8252" To iSuccess
// Use the envelope ID returned by DocuSign when creating the draft envelope).
Get ComSetUrlVar Of hoHttp "envelopeId" "e01f2043-3850-4fcb-afd1-b1726216e099" To iSuccess
Move "https://demo.docusign.net/restapi/v2.1/accounts/{$accountId}/envelopes/{$envelopeId}/documents" To sUrl
Get Create (RefClass(cComChilkatHttpResponse)) To hoResp
If (Not(IsComObjectCreated(hoResp))) Begin
Send CreateComObject of hoResp
End
Get pvComObject of hoSbJson to vSbJson
Get pvComObject of hoResp to vResp
Get ComHttpSb Of hoHttp "PUT" sUrl vSbJson "utf-8" "application/json" vResp To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoHttp To sTemp1
Showln sTemp1
Procedure_Return
End
Get Create (RefClass(cComChilkatJsonObject)) To hoJResp
If (Not(IsComObjectCreated(hoJResp))) Begin
Send CreateComObject of hoJResp
End
Get ComBodyStr Of hoResp To sTemp1
Get ComLoad Of hoJResp sTemp1 To iSuccess
Set ComEmitCompact Of hoJResp To False
Showln "Response Body:"
Get ComEmit Of hoJResp To sTemp1
Showln sTemp1
// If you get a 401 response status code, it's likely you need to refresh the DocuSign OAuth2 token).
Get ComStatusCode Of hoResp To iRespStatusCode
Showln "Response Status Code = " iRespStatusCode
If (iRespStatusCode >= 400) Begin
Showln "Response Header:"
Get ComHeader Of hoResp To sTemp1
Showln sTemp1
Showln "Failed."
Procedure_Return
End
// Sample JSON response:
// (Sample code for parsing the JSON response is shown below)
// {
// "envelopeId": "da9fb811-e6a4-48c0-a9fb-81ed18b989af",
// "envelopeDocuments": [
// {
// "documentId": "1",
// "documentIdGuid": "38e919fc-0a77-4b0c-9da0-e3530f4e6fc7",
// "name": "hello.pdf",
// "type": "content",
// "uri": "/envelopes/da9fb811-e6a4-48c0-a9fb-81ed18b989af/documents/1",
// "order": "3",
// "containsPdfFormFields": "false",
// "templateRequired": "false",
// "authoritativeCopy": "false"
// },
// {
// "documentId": "2",
// "documentIdGuid": "2cbd0fcc-c1ca-4a3a-b8b5-fe252dd89731",
// "name": "hello2.pdf",
// "type": "content",
// "uri": "/envelopes/da9fb811-e6a4-48c0-a9fb-81ed18b989af/documents/2",
// "order": "4",
// "containsPdfFormFields": "false",
// "templateRequired": "false",
// "authoritativeCopy": "false"
// }
// ]
// }
// Sample code for parsing the JSON response...
// Use the following online tool to generate parsing code from sample JSON:
// Generate Parsing Code from JSON
Get ComStringOf Of hoJResp "envelopeId" To sEnvelopeId
Move 0 To i
Get ComSizeOfArray Of hoJResp "envelopeDocuments" To iCount_i
While (i < iCount_i)
Set ComI Of hoJResp To i
Get ComStringOf Of hoJResp "envelopeDocuments[i].documentId" To sDocumentId
Get ComStringOf Of hoJResp "envelopeDocuments[i].documentIdGuid" To sDocumentIdGuid
Get ComStringOf Of hoJResp "envelopeDocuments[i].name" To sName
Get ComStringOf Of hoJResp "envelopeDocuments[i].type" To sV_type
Get ComStringOf Of hoJResp "envelopeDocuments[i].uri" To sUri
Get ComStringOf Of hoJResp "envelopeDocuments[i].order" To sOrder
Get ComStringOf Of hoJResp "envelopeDocuments[i].containsPdfFormFields" To sContainsPdfFormFields
Get ComStringOf Of hoJResp "envelopeDocuments[i].templateRequired" To sTemplateRequired
Get ComStringOf Of hoJResp "envelopeDocuments[i].authoritativeCopy" To sAuthoritativeCopy
Move (i + 1) To i
Loop
End_Procedure