Sample code for 30+ languages & platforms
Chilkat2-Python

Send DocuSign XML Request

See more HTTP Misc Examples

Demonstrates how to send a DocuSign XML request.

Chilkat Chilkat2-Python Downloads

Chilkat2-Python
import sys
import chilkat2

success = False

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

req = chilkat2.HttpRequest()

req.HttpVerb = "POST"

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

req.AddHeader("Accept","application/xml")

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

xmlCred = chilkat2.Xml()
xmlCred.Tag = "DocuSignCredentials"
xmlCred.UpdateChildContent("Username","YOUR_DOCUSIGN_USERNAME")
xmlCred.UpdateChildContent("Password","YOUR_DOCUSIGN_PASSWORD")
xmlCred.UpdateChildContent("IntegratorKey","ABCD-12345678-1234-AAAA-BBBB-abcdabcdabcd")
xmlCred.EmitXmlDecl = False
xmlCred.EmitCompact = True
req.AddHeader("X-DocuSign-Authentication",xmlCred.GetXml())

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

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

print(xml.GetXml())

xml.EmitCompact = True

req.AddStringForUpload2("","",xml.GetXml(),"utf-8","application/xml")
req.AddFileForUpload2("","qa_data/pdf/signatureForm.pdf","application/pdf")
req.AddSubHeader(1,"Content-Disposition","file; filename=\"signatureForm.pdf\";documentid=1")

http = chilkat2.Http()

http.SessionLogFilename = "qa_output/log.txt"

resp = chilkat2.HttpResponse()
success = http.HttpSReq("na2.docusign.net",443,True,req,resp)
if (success == False):
    print(http.LastErrorText)
    sys.exit()

if (resp.StatusCode != 201):
    print(resp.BodyStr)
    print("Response status code: " + str(resp.StatusCode))
    print("Failed.")
    sys.exit()

# Examine the response..
xml.LoadXml(resp.BodyStr)
envelopeId = xml.GetChildContent("envelopeId")
print("envelopeId = " + envelopeId)
status = xml.GetChildContent("status")
print("status = " + status)
statusDateTime = xml.GetChildContent("statusDateTime")
print("statusDateTime = " + statusDateTime)
uri = xml.GetChildContent("uri")
print("uri = " + uri)