Sample code for 30+ languages & platforms
Lua Requires Chilkat v11.0.0+

Send DocuSign XML Request

See more HTTP Misc Examples

Demonstrates how to send a DocuSign XML request.

Chilkat Lua Downloads

Lua
local chilkat = require("chilkat")

-- This requires the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.

local req = chilkat.HttpRequest.new()

req.http_verb = "POST"

-- Replace "12999999" with your own account number. (12999999 is a ficticious account number)
req.path = "/restapi/v2/accounts/12999999/envelopes"

req:add_header("Accept", "application/xml")

-- Don't worry about the boundary string.  Chilkat will automatically generate one and include it.
req.content_type = "multipart/form-data"

local xmlCred = chilkat.Xml.new()
xmlCred.tag = "DocuSignCredentials"
xmlCred:update_child_content("Username", "YOUR_DOCUSIGN_USERNAME")
xmlCred:update_child_content("Password", "YOUR_DOCUSIGN_PASSWORD")
xmlCred:update_child_content("IntegratorKey", "ABCD-12345678-1234-AAAA-BBBB-abcdabcdabcd")
xmlCred.emit_xml_decl = false
xmlCred.emit_compact = true
req:add_header("X-DocuSign-Authentication", xmlCred:get_xml())

-- Don't worry about Host or Content-Length headers, Chilkat automatically adds them...

-- Build the XML for the 1st body part..
local xml = chilkat.Xml.new()
xml.tag = "envelopeDefinition"
xml:add_attribute("xmlns", "http://www.docusign.com/restapi")
xml:update_child_content("emailSubject", "Signature Request: Test Test:001019:033611")
xml:update_child_content("status", "sent")
xml:update_child_content("documents|document|documentId", "1")
xml:update_child_content("documents|document|name", "001019_TestTest_RetailDeals_163357")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner|hostEmail", "admin@chilkatsoft.com")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner|hostName", "Chilkat Admin")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner|signerName", "Test  Test")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner|recipientId", "1")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner|routingOrder", "1")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner|signerEmail", "test@tyest.com")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere|anchorIgnoreIfNotPresent", "True")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere|anchorString", "\\SDP")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere|optional", "False")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[1]|anchorIgnoreIfNotPresent", "True")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[1]|anchorString", "\\OSDP")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[1]|optional", "True")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[2]|anchorIgnoreIfNotPresent", "True")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[2]|anchorString", "\\OPSSDP")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[2]|optional", "True")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[2]|scaleValue", "0.7")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[3]|anchorIgnoreIfNotPresent", "True")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[3]|anchorString", "\\PSSDP")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[3]|optional", "False")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[3]|scaleValue", "0.7")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere|anchorIgnoreIfNotPresent", "True")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere|anchorString", "\\IDP")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere|optional", "False")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[1]|anchorIgnoreIfNotPresent", "True")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[1]|anchorString", "\\OIDP")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[1]|optional", "True")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[2]|anchorIgnoreIfNotPresent", "True")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[2]|anchorString", "\\OPSIDP")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[2]|optional", "True")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[2]|scaleValue", "0.5")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[3]|anchorIgnoreIfNotPresent", "True")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[3]|anchorString", "\\PSIDP")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[3]|optional", "False")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[3]|scaleValue", "0.5")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner[1]|hostEmail", "admin@chilkatsoft.com")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner[1]|hostName", "Chilkat Admin")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner[1]|signerName", "Dealer Representative")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner[1]|recipientId", "2")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner[1]|routingOrder", "2")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner[1]|tabs|signHereTabs|signHere|anchorIgnoreIfNotPresent", "True")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner[1]|tabs|signHereTabs|signHere|anchorString", "\\DSDP")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner[1]|tabs|signHereTabs|signHere|optional", "False")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner[1]|tabs|signHereTabs|signHere[1]|anchorIgnoreIfNotPresent", "True")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner[1]|tabs|signHereTabs|signHere[1]|anchorString", "\\DOSDP")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner[1]|tabs|signHereTabs|signHere[1]|optional", "True")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner[1]|tabs|initialHereTabs|initialHere|anchorIgnoreIfNotPresent", "True")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner[1]|tabs|initialHereTabs|initialHere|anchorString", "\\DIDP")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner[1]|tabs|initialHereTabs|initialHere|optional", "False")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner[1]|tabs|initialHereTabs|initialHere[1]|anchorIgnoreIfNotPresent", "True")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner[1]|tabs|initialHereTabs|initialHere[1]|anchorString", "\\DOIDP")
xml:update_child_content("recipients|inPersonSigners|inPersonSigner[1]|tabs|initialHereTabs|initialHere[1]|optional", "True")
xml.emit_xml_decl = false

print(xml:get_xml())

xml.emit_compact = true

req:add_string_for_upload2("", "", xml:get_xml(), "utf-8", "application/xml")
req:add_file_for_upload2("", "qa_data/pdf/signatureForm.pdf", "application/pdf")
req:add_sub_header(1, "Content-Disposition", "file; filename=\"signatureForm.pdf\";documentid=1")

local http = chilkat.Http.new()

http.session_log_filename = "qa_output/log.txt"

local resp = chilkat.HttpResponse.new()
local success = http:http_sreq("na2.docusign.net", 443, true, req, resp)
if not success then
    print(http.last_error_text)
    return
end

if resp.status_code ~= 201 then
    print(resp.body_str)
    print("Response status code: " .. resp.status_code)
    print("Failed.")
    return
end

-- Examine the response..
xml:load_xml(resp.body_str)
local envelopeId = xml:get_child_content("envelopeId")
print("envelopeId = " .. envelopeId)
local status = xml:get_child_content("status")
print("status = " .. status)
local statusDateTime = xml:get_child_content("statusDateTime")
print("statusDateTime = " .. statusDateTime)
local uri = xml:get_child_content("uri")
print("uri = " .. uri)