Sample code for 30+ languages & platforms
Xojo Plugin

Send DocuSign XML Request

See more HTTP Misc Examples

Demonstrates how to send a DocuSign XML request.

Chilkat Xojo Plugin Downloads

Xojo Plugin
Dim success As Boolean
success = False

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

Dim req As New Chilkat.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"

Dim xmlCred As New Chilkat.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..
Dim xml As New Chilkat.Xml
xml.Tag = "envelopeDefinition"
success = 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

System.DebugLog(xml.GetXml())

xml.EmitCompact = True

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

Dim http As New Chilkat.Http

http.SessionLogFilename = "qa_output/log.txt"

Dim resp As New Chilkat.HttpResponse
success = http.HttpSReq("na2.docusign.net",443,True,req,resp)
If (success = False) Then
    System.DebugLog(http.LastErrorText)
    Return
End If

If (resp.StatusCode <> 201) Then
    System.DebugLog(resp.BodyStr)
    System.DebugLog("Response status code: " + Str(resp.StatusCode))
    System.DebugLog("Failed.")
    Return
End If

// Examine the response..
success = xml.LoadXml(resp.BodyStr)
Dim envelopeId As String
envelopeId = xml.GetChildContent("envelopeId")
System.DebugLog("envelopeId = " + envelopeId)
Dim status As String
status = xml.GetChildContent("status")
System.DebugLog("status = " + status)
Dim statusDateTime As String
statusDateTime = xml.GetChildContent("statusDateTime")
System.DebugLog("statusDateTime = " + statusDateTime)
Dim uri As String
uri = xml.GetChildContent("uri")
System.DebugLog("uri = " + uri)