Sample code for 30+ languages & platforms
Visual FoxPro

Send DocuSign XML Request

See more HTTP Misc Examples

Demonstrates how to send a DocuSign XML request.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loReq
LOCAL loXmlCred
LOCAL loXml
LOCAL loHttp
LOCAL loResp
LOCAL lcEnvelopeId
LOCAL lcStatus
LOCAL lcStatusDateTime
LOCAL lcUri

lnSuccess = 0

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

loReq = CreateObject('Chilkat.HttpRequest')

loReq.HttpVerb = "POST"

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

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

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

loXmlCred = CreateObject('Chilkat.Xml')
loXmlCred.Tag = "DocuSignCredentials"
loXmlCred.UpdateChildContent("Username","YOUR_DOCUSIGN_USERNAME")
loXmlCred.UpdateChildContent("Password","YOUR_DOCUSIGN_PASSWORD")
loXmlCred.UpdateChildContent("IntegratorKey","ABCD-12345678-1234-AAAA-BBBB-abcdabcdabcd")
loXmlCred.EmitXmlDecl = 0
loXmlCred.EmitCompact = 1
loReq.AddHeader("X-DocuSign-Authentication",loXmlCred.GetXml())

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

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

? loXml.GetXml()

loXml.EmitCompact = 1

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

loHttp = CreateObject('Chilkat.Http')

loHttp.SessionLogFilename = "qa_output/log.txt"

loResp = CreateObject('Chilkat.HttpResponse')
lnSuccess = loHttp.HttpSReq("na2.docusign.net",443,1,loReq,loResp)
IF (lnSuccess = 0) THEN
    ? loHttp.LastErrorText
    RELEASE loReq
    RELEASE loXmlCred
    RELEASE loXml
    RELEASE loHttp
    RELEASE loResp
    CANCEL
ENDIF

IF (loResp.StatusCode <> 201) THEN
    ? loResp.BodyStr
    ? "Response status code: " + STR(loResp.StatusCode)
    ? "Failed."
    RELEASE loReq
    RELEASE loXmlCred
    RELEASE loXml
    RELEASE loHttp
    RELEASE loResp
    CANCEL
ENDIF

* Examine the response..
loXml.LoadXml(loResp.BodyStr)
lcEnvelopeId = loXml.GetChildContent("envelopeId")
? "envelopeId = " + lcEnvelopeId
lcStatus = loXml.GetChildContent("status")
? "status = " + lcStatus
lcStatusDateTime = loXml.GetChildContent("statusDateTime")
? "statusDateTime = " + lcStatusDateTime
lcUri = loXml.GetChildContent("uri")
? "uri = " + lcUri

RELEASE loReq
RELEASE loXmlCred
RELEASE loXml
RELEASE loHttp
RELEASE loResp