DataFlex
DataFlex
DocuSign Add Recipients to a Draft Envelope
See more DocuSign Examples
Demonstrates how to add one or more recipients to a DocuSign draft envelope.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoHttp
Token Handle hoJsonToken
Handle hoJson
Integer i
Variant vSbJson
Handle hoSbJson
String sUrl
Variant vResp
Handle hoResp
Handle hoJResp
Integer iRespStatusCode
String sCreationReason
String sRequireUploadSignature
String sEmail
String sRecipientId
String sRequireIdLookup
String sRoutingOrder
String sStatus
String sCompletedCount
String sDeliveryMethod
String sRecipientType
String sRecipientCount
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)
// POST https://demo.docusign.net/restapi/v2.1/accounts/<account ID>/envelopes/<envelope ID>/recipients HTTP/1.1
// Accept: application/json
// Cache-Control: no-cache
// Authorization: Bearer eyJ0eX...
// Content-Length: ...
// Content-Type: application/json
//
// {
// "carbonCopies": [
// {
// "email": "support@chilkatsoft.com",
// "name": "Chilkat Support",
// "recipientId": "101",
// "tabs": {}
// }
// ],
// "signers": [
// {
// "email": "admin@chilkatsoft.com",
// "name": "Chilkat Admin",
// "recipientId": "1",
// "tabs": {
// "signHereTabs": [{
// "anchorString": "Please Sign Here",
// "anchorXOffset": "1",
// "anchorYOffset": "0",
// "anchorIgnoreIfNotPresent": "false",
// "anchorUnits": "inches"
// }]
// }
// },
// {
// "email": "matt@chilkat.io",
// "name": "Matt",
// "recipientId": "2",
// "tabs": {
// "signHereTabs": [{
// "anchorString": "Please Also Sign Here",
// "anchorXOffset": "1",
// "anchorYOffset": "0",
// "anchorIgnoreIfNotPresent": "false",
// "anchorUnits": "inches"
// }]
// }
// }
// ]
// }
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 "carbonCopies[i].email" "support@chilkatsoft.com" To iSuccess
Get ComUpdateString Of hoJson "carbonCopies[i].name" "Chilkat Support" To iSuccess
Get ComUpdateString Of hoJson "carbonCopies[i].recipientId" "101" To iSuccess
Get ComUpdateNewObject Of hoJson "carbonCopies[i].tabs" To iSuccess
Move 0 To i
Set ComI Of hoJson To i
Get ComUpdateString Of hoJson "signers[i].email" "admin@chilkatsoft.com" To iSuccess
Get ComUpdateString Of hoJson "signers[i].name" "Chilkat Admin" To iSuccess
Get ComUpdateString Of hoJson "signers[i].recipientId" "1" To iSuccess
Get ComUpdateString Of hoJson "signers[i].tabs.signHereTabs[0].anchorString" "Please Sign Here" To iSuccess
Get ComUpdateString Of hoJson "signers[i].tabs.signHereTabs[0].anchorXOffset" "1" To iSuccess
Get ComUpdateString Of hoJson "signers[i].tabs.signHereTabs[0].anchorYOffset" "0" To iSuccess
Get ComUpdateString Of hoJson "signers[i].tabs.signHereTabs[0].anchorIgnoreIfNotPresent" "false" To iSuccess
Get ComUpdateString Of hoJson "signers[i].tabs.signHereTabs[0].anchorUnits" "inches" To iSuccess
Move (i + 1) To i
Set ComI Of hoJson To i
Get ComUpdateString Of hoJson "signers[i].email" "matt@chilkat.io" To iSuccess
Get ComUpdateString Of hoJson "signers[i].name" "Matt" To iSuccess
Get ComUpdateString Of hoJson "signers[i].recipientId" "2" To iSuccess
Get ComUpdateString Of hoJson "signers[i].tabs.signHereTabs[0].anchorString" "Please Also Sign Here" To iSuccess
Get ComUpdateString Of hoJson "signers[i].tabs.signHereTabs[0].anchorXOffset" "1" To iSuccess
Get ComUpdateString Of hoJson "signers[i].tabs.signHereTabs[0].anchorYOffset" "0" To iSuccess
Get ComUpdateString Of hoJson "signers[i].tabs.signHereTabs[0].anchorIgnoreIfNotPresent" "false" To iSuccess
Get ComUpdateString Of hoJson "signers[i].tabs.signHereTabs[0].anchorUnits" "inches" 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 "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" "cee4191c-f94e-4089-9d7c-8033685cbc1a" To iSuccess
Move "https://demo.docusign.net/restapi/v2.1/accounts/{$accountId}/envelopes/{$envelopeId}/recipients" 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 "POST" 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)
// {
// "signers": [
// {
// "creationReason": "sender",
// "requireUploadSignature": "false",
// "email": "admin@chilkatsoft.com",
// "recipientId": "1",
// "requireIdLookup": "false",
// "routingOrder": "1",
// "status": "created",
// "completedCount": "0",
// "deliveryMethod": "email",
// "recipientType": "signer"
// },
// {
// "creationReason": "sender",
// "requireUploadSignature": "false",
// "email": "matt@chilkat.io",
// "recipientId": "2",
// "requireIdLookup": "false",
// "routingOrder": "1",
// "status": "created",
// "completedCount": "0",
// "deliveryMethod": "email",
// "recipientType": "signer"
// }
// ],
// "agents": [],
// "editors": [],
// "intermediaries": [],
// "carbonCopies": [
// {
// "email": "support@chilkatsoft.com",
// "recipientId": "101",
// "requireIdLookup": "false",
// "routingOrder": "1",
// "status": "created",
// "completedCount": "0",
// "deliveryMethod": "email",
// "recipientType": "carboncopy"
// }
// ],
// "certifiedDeliveries": [],
// "inPersonSigners": [],
// "seals": [],
// "witnesses": [],
// "recipientCount": "3"
// }
// 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 hoJson "recipientCount" To sRecipientCount
Move 0 To i
Get ComSizeOfArray Of hoJson "signers" To iCount_i
While (i < iCount_i)
Set ComI Of hoJson To i
Get ComStringOf Of hoJson "signers[i].creationReason" To sCreationReason
Get ComStringOf Of hoJson "signers[i].requireUploadSignature" To sRequireUploadSignature
Get ComStringOf Of hoJson "signers[i].email" To sEmail
Get ComStringOf Of hoJson "signers[i].recipientId" To sRecipientId
Get ComStringOf Of hoJson "signers[i].requireIdLookup" To sRequireIdLookup
Get ComStringOf Of hoJson "signers[i].routingOrder" To sRoutingOrder
Get ComStringOf Of hoJson "signers[i].status" To sStatus
Get ComStringOf Of hoJson "signers[i].completedCount" To sCompletedCount
Get ComStringOf Of hoJson "signers[i].deliveryMethod" To sDeliveryMethod
Get ComStringOf Of hoJson "signers[i].recipientType" To sRecipientType
Move (i + 1) To i
Loop
Move 0 To i
Get ComSizeOfArray Of hoJson "agents" To iCount_i
While (i < iCount_i)
Set ComI Of hoJson To i
// ...
Move (i + 1) To i
Loop
Move 0 To i
Get ComSizeOfArray Of hoJson "editors" To iCount_i
While (i < iCount_i)
Set ComI Of hoJson To i
// ...
Move (i + 1) To i
Loop
Move 0 To i
Get ComSizeOfArray Of hoJson "intermediaries" To iCount_i
While (i < iCount_i)
Set ComI Of hoJson To i
// ...
Move (i + 1) To i
Loop
Move 0 To i
Get ComSizeOfArray Of hoJson "carbonCopies" To iCount_i
While (i < iCount_i)
Set ComI Of hoJson To i
Get ComStringOf Of hoJson "carbonCopies[i].email" To sEmail
Get ComStringOf Of hoJson "carbonCopies[i].recipientId" To sRecipientId
Get ComStringOf Of hoJson "carbonCopies[i].requireIdLookup" To sRequireIdLookup
Get ComStringOf Of hoJson "carbonCopies[i].routingOrder" To sRoutingOrder
Get ComStringOf Of hoJson "carbonCopies[i].status" To sStatus
Get ComStringOf Of hoJson "carbonCopies[i].completedCount" To sCompletedCount
Get ComStringOf Of hoJson "carbonCopies[i].deliveryMethod" To sDeliveryMethod
Get ComStringOf Of hoJson "carbonCopies[i].recipientType" To sRecipientType
Move (i + 1) To i
Loop
Move 0 To i
Get ComSizeOfArray Of hoJson "certifiedDeliveries" To iCount_i
While (i < iCount_i)
Set ComI Of hoJson To i
// ...
Move (i + 1) To i
Loop
Move 0 To i
Get ComSizeOfArray Of hoJson "inPersonSigners" To iCount_i
While (i < iCount_i)
Set ComI Of hoJson To i
// ...
Move (i + 1) To i
Loop
Move 0 To i
Get ComSizeOfArray Of hoJson "seals" To iCount_i
While (i < iCount_i)
Set ComI Of hoJson To i
// ...
Move (i + 1) To i
Loop
Move 0 To i
Get ComSizeOfArray Of hoJson "witnesses" To iCount_i
While (i < iCount_i)
Set ComI Of hoJson To i
// ...
Move (i + 1) To i
Loop
// If the recipient already exists within the envelope, we would get
// a success (201) response status code, but errors within the JSON response, such as this:
// {
// "signers": [
// {
// "creationReason": "sender",
// "requireUploadSignature": "false",
// "email": "admin@chilkatsoft.com",
// "recipientId": "1",
// "requireIdLookup": "false",
// "routingOrder": "1",
// "status": "error",
// "completedCount": "0",
// "deliveryMethod": "email",
// "errorDetails": {
// "errorCode": "RECIPIENT_ALREADY_EXISTS_IN_ENVELOPE",
// "message": "This recipientId already exists."
// },
// "recipientType": "signer"
// },
// {
// "creationReason": "sender",
// "requireUploadSignature": "false",
// "email": "matt@chilkat.io",
// "recipientId": "2",
// "requireIdLookup": "false",
// "routingOrder": "1",
// "status": "error",
// "completedCount": "0",
// "deliveryMethod": "email",
// "errorDetails": {
// "errorCode": "RECIPIENT_ALREADY_EXISTS_IN_ENVELOPE",
// "message": "This recipientId already exists."
// },
// "recipientType": "signer"
// }
// ],
// "agents": [
// ],
// "editors": [
// ],
// "intermediaries": [
// ],
// "carbonCopies": [
// {
// "email": "support@chilkatsoft.com",
// "recipientId": "101",
// "requireIdLookup": "false",
// "routingOrder": "1",
// "status": "error",
// "completedCount": "0",
// "deliveryMethod": "email",
// "errorDetails": {
// "errorCode": "RECIPIENT_ALREADY_EXISTS_IN_ENVELOPE",
// "message": "This recipientId already exists."
// },
// "recipientType": "carboncopy"
// }
// ],
// "certifiedDeliveries": [
// ],
// "inPersonSigners": [
// ],
// "seals": [
// ],
// "witnesses": [
// ],
// "recipientCount": "3"
// }
//
End_Procedure