Lua Requires Chilkat v11.0.0+
Lua
Send DocuSign XML Request
See more HTTP Misc Examples
Demonstrates how to send a DocuSign XML request.Chilkat Lua Downloads
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)