Sample code for 30+ languages & platforms
Go

Send DocuSign XML Request

See more HTTP Misc Examples

Demonstrates how to send a DocuSign XML request.

Chilkat Go Downloads

Go
    success := false

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

    req := chilkat.NewHttpRequest()

    req.SetHttpVerb("POST")

    // Replace "12999999" with your own account number. (12999999 is a ficticious account number)
    req.SetPath("/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.SetContentType("multipart/form-data")

    xmlCred := chilkat.NewXml()
    xmlCred.SetTag("DocuSignCredentials")
    xmlCred.UpdateChildContent("Username","YOUR_DOCUSIGN_USERNAME")
    xmlCred.UpdateChildContent("Password","YOUR_DOCUSIGN_PASSWORD")
    xmlCred.UpdateChildContent("IntegratorKey","ABCD-12345678-1234-AAAA-BBBB-abcdabcdabcd")
    xmlCred.SetEmitXmlDecl(false)
    xmlCred.SetEmitCompact(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 := chilkat.NewXml()
    xml.SetTag("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.SetEmitXmlDecl(false)

    fmt.Println(*xml.GetXml())

    xml.SetEmitCompact(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 := chilkat.NewHttp()

    http.SetSessionLogFilename("qa_output/log.txt")

    resp := chilkat.NewHttpResponse()
    success = http.HttpSReq("na2.docusign.net",443,true,req,resp)
    if success == false {
        fmt.Println(http.LastErrorText())
        req.DisposeHttpRequest()
        xmlCred.DisposeXml()
        xml.DisposeXml()
        http.DisposeHttp()
        resp.DisposeHttpResponse()
        return
    }

    if resp.StatusCode() != 201 {
        fmt.Println(resp.BodyStr())
        fmt.Println("Response status code: ", resp.StatusCode())
        fmt.Println("Failed.")
        req.DisposeHttpRequest()
        xmlCred.DisposeXml()
        xml.DisposeXml()
        http.DisposeHttp()
        resp.DisposeHttpResponse()
        return
    }

    // Examine the response..
    xml.LoadXml(resp.BodyStr())
    envelopeId := xml.GetChildContent("envelopeId")
    fmt.Println("envelopeId = ", *envelopeId)
    status := xml.GetChildContent("status")
    fmt.Println("status = ", *status)
    statusDateTime := xml.GetChildContent("statusDateTime")
    fmt.Println("statusDateTime = ", *statusDateTime)
    uri := xml.GetChildContent("uri")
    fmt.Println("uri = ", *uri)

    req.DisposeHttpRequest()
    xmlCred.DisposeXml()
    xml.DisposeXml()
    http.DisposeHttp()
    resp.DisposeHttpResponse()