Xbase++ Requires Chilkat v11.0.0+
Xbase++
Send DocuSign XML Request
See more HTTP Misc Examples
Demonstrates how to send a DocuSign XML request.Chilkat Xbase++ Downloads
LOCAL nSuccess
LOCAL oReq
LOCAL oXmlCred
LOCAL oXml
LOCAL oHttp
LOCAL oResp
LOCAL cEnvelopeId
LOCAL cStatus
LOCAL cStatusDateTime
LOCAL cUri
nSuccess := 0
// This requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
oReq := CreateObject("Chilkat.HttpRequest")
oReq:HttpVerb := "POST"
// Replace "12999999" with your own account number. (12999999 is a ficticious account number)
oReq:Path := "/restapi/v2/accounts/12999999/envelopes"
oReq:AddHeader("Accept", "application/xml")
// Don't worry about the boundary string. Chilkat will automatically generate one and include it.
oReq:ContentType := "multipart/form-data"
oXmlCred := CreateObject("Chilkat.Xml")
oXmlCred:Tag := "DocuSignCredentials"
oXmlCred:UpdateChildContent("Username", "YOUR_DOCUSIGN_USERNAME")
oXmlCred:UpdateChildContent("Password", "YOUR_DOCUSIGN_PASSWORD")
oXmlCred:UpdateChildContent("IntegratorKey", "ABCD-12345678-1234-AAAA-BBBB-abcdabcdabcd")
oXmlCred:EmitXmlDecl := 0
oXmlCred:EmitCompact := 1
oReq:AddHeader("X-DocuSign-Authentication", oXmlCred:GetXml())
// Don't worry about Host or Content-Length headers, Chilkat automatically adds them...
// Build the XML for the 1st body part..
oXml := CreateObject("Chilkat.Xml")
oXml:Tag := "envelopeDefinition"
oXml:AddAttribute("xmlns", "http://www.docusign.com/restapi")
oXml:UpdateChildContent("emailSubject", "Signature Request: Test Test:001019:033611")
oXml:UpdateChildContent("status", "sent")
oXml:UpdateChildContent("documents|document|documentId", "1")
oXml:UpdateChildContent("documents|document|name", "001019_TestTest_RetailDeals_163357")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner|hostEmail", "admin@chilkatsoft.com")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner|hostName", "Chilkat Admin")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner|signerName", "Test Test")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner|recipientId", "1")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner|routingOrder", "1")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner|signerEmail", "test@tyest.com")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere|anchorIgnoreIfNotPresent", "True")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere|anchorString", "\SDP")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere|optional", "False")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[1]|anchorIgnoreIfNotPresent", "True")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[1]|anchorString", "\OSDP")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[1]|optional", "True")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[2]|anchorIgnoreIfNotPresent", "True")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[2]|anchorString", "\OPSSDP")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[2]|optional", "True")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[2]|scaleValue", "0.7")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[3]|anchorIgnoreIfNotPresent", "True")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[3]|anchorString", "\PSSDP")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[3]|optional", "False")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[3]|scaleValue", "0.7")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere|anchorIgnoreIfNotPresent", "True")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere|anchorString", "\IDP")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere|optional", "False")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[1]|anchorIgnoreIfNotPresent", "True")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[1]|anchorString", "\OIDP")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[1]|optional", "True")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[2]|anchorIgnoreIfNotPresent", "True")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[2]|anchorString", "\OPSIDP")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[2]|optional", "True")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[2]|scaleValue", "0.5")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[3]|anchorIgnoreIfNotPresent", "True")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[3]|anchorString", "\PSIDP")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[3]|optional", "False")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[3]|scaleValue", "0.5")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner[1]|hostEmail", "admin@chilkatsoft.com")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner[1]|hostName", "Chilkat Admin")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner[1]|signerName", "Dealer Representative")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner[1]|recipientId", "2")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner[1]|routingOrder", "2")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner[1]|tabs|signHereTabs|signHere|anchorIgnoreIfNotPresent", "True")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner[1]|tabs|signHereTabs|signHere|anchorString", "\DSDP")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner[1]|tabs|signHereTabs|signHere|optional", "False")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner[1]|tabs|signHereTabs|signHere[1]|anchorIgnoreIfNotPresent", "True")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner[1]|tabs|signHereTabs|signHere[1]|anchorString", "\DOSDP")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner[1]|tabs|signHereTabs|signHere[1]|optional", "True")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner[1]|tabs|initialHereTabs|initialHere|anchorIgnoreIfNotPresent", "True")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner[1]|tabs|initialHereTabs|initialHere|anchorString", "\DIDP")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner[1]|tabs|initialHereTabs|initialHere|optional", "False")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner[1]|tabs|initialHereTabs|initialHere[1]|anchorIgnoreIfNotPresent", "True")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner[1]|tabs|initialHereTabs|initialHere[1]|anchorString", "\DOIDP")
oXml:UpdateChildContent("recipients|inPersonSigners|inPersonSigner[1]|tabs|initialHereTabs|initialHere[1]|optional", "True")
oXml:EmitXmlDecl := 0
? oXml:GetXml()
oXml:EmitCompact := 1
oReq:AddStringForUpload2("", "", oXml:GetXml(), "utf-8", "application/xml")
oReq:AddFileForUpload2("", "qa_data/pdf/signatureForm.pdf", "application/pdf")
oReq:AddSubHeader(1, "Content-Disposition", 'file; filename="signatureForm.pdf";documentid=1')
oHttp := CreateObject("Chilkat.Http")
oHttp:SessionLogFilename := "qa_output/log.txt"
oResp := CreateObject("Chilkat.HttpResponse")
nSuccess := oHttp:HttpSReq("na2.docusign.net", 443, 1, oReq, oResp)
IF (nSuccess == 0)
? oHttp:LastErrorText
oReq:destroy()
oXmlCred:destroy()
oXml:destroy()
oHttp:destroy()
oResp:destroy()
RETURN
ENDIF
IF (oResp:StatusCode != 201)
? oResp:BodyStr
? "Response status code: " + Str(oResp:StatusCode)
? "Failed."
oReq:destroy()
oXmlCred:destroy()
oXml:destroy()
oHttp:destroy()
oResp:destroy()
RETURN
ENDIF
// Examine the response..
oXml:LoadXml(oResp:BodyStr)
cEnvelopeId := oXml:GetChildContent("envelopeId")
? "envelopeId = " + cEnvelopeId
cStatus := oXml:GetChildContent("status")
? "status = " + cStatus
cStatusDateTime := oXml:GetChildContent("statusDateTime")
? "statusDateTime = " + cStatusDateTime
cUri := oXml:GetChildContent("uri")
? "uri = " + cUri
oReq:destroy()
oXmlCred:destroy()
oXml:destroy()
oHttp:destroy()
oResp:destroy()