Rust Requires Chilkat v11.0.0+
Rust
Send DocuSign XML Request
See more HTTP Misc Examples
Demonstrates how to send a DocuSign XML request.Chilkat Rust Downloads
// This requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
let req = chilkat::HttpRequest::new();
req.set_http_verb("POST");
// Replace "12999999" with your own account number. (12999999 is a ficticious account number)
req.set_path("/restapi/v2/accounts/12999999/envelopes");
req.add_header("Accept", "application/xml");
// Don't worry about the boundary string. Chilkat will automatically generate one and include it.
req.set_content_type("multipart/form-data");
let xml_cred = chilkat::Xml::new();
xml_cred.set_tag("DocuSignCredentials");
xml_cred.update_child_content("Username", "YOUR_DOCUSIGN_USERNAME");
xml_cred.update_child_content("Password", "YOUR_DOCUSIGN_PASSWORD");
xml_cred.update_child_content("IntegratorKey", "ABCD-12345678-1234-AAAA-BBBB-abcdabcdabcd");
xml_cred.set_emit_xml_decl(false);
xml_cred.set_emit_compact(true);
req.add_header("X-DocuSign-Authentication", &xml_cred.get_xml().unwrap_or_default());
// Don't worry about Host or Content-Length headers, Chilkat automatically adds them...
// Build the XML for the 1st body part..
let xml = chilkat::Xml::new();
xml.set_tag("envelopeDefinition");
let _ = xml.add_attribute("xmlns", "http://www.docusign.com/restapi");
xml.update_child_content("emailSubject", "Signature Request: Test Test:001019:033611");
xml.update_child_content("status", "sent");
xml.update_child_content("documents|document|documentId", "1");
xml.update_child_content("documents|document|name", "001019_TestTest_RetailDeals_163357");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner|hostEmail", "admin@chilkatsoft.com");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner|hostName", "Chilkat Admin");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner|signerName", "Test Test");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner|recipientId", "1");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner|routingOrder", "1");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner|signerEmail", "test@tyest.com");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere|anchorIgnoreIfNotPresent", "True");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere|anchorString", "\\SDP");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere|optional", "False");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[1]|anchorIgnoreIfNotPresent", "True");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[1]|anchorString", "\\OSDP");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[1]|optional", "True");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[2]|anchorIgnoreIfNotPresent", "True");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[2]|anchorString", "\\OPSSDP");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[2]|optional", "True");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[2]|scaleValue", "0.7");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[3]|anchorIgnoreIfNotPresent", "True");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[3]|anchorString", "\\PSSDP");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[3]|optional", "False");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[3]|scaleValue", "0.7");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere|anchorIgnoreIfNotPresent", "True");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere|anchorString", "\\IDP");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere|optional", "False");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[1]|anchorIgnoreIfNotPresent", "True");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[1]|anchorString", "\\OIDP");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[1]|optional", "True");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[2]|anchorIgnoreIfNotPresent", "True");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[2]|anchorString", "\\OPSIDP");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[2]|optional", "True");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[2]|scaleValue", "0.5");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[3]|anchorIgnoreIfNotPresent", "True");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[3]|anchorString", "\\PSIDP");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[3]|optional", "False");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[3]|scaleValue", "0.5");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner[1]|hostEmail", "admin@chilkatsoft.com");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner[1]|hostName", "Chilkat Admin");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner[1]|signerName", "Dealer Representative");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner[1]|recipientId", "2");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner[1]|routingOrder", "2");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner[1]|tabs|signHereTabs|signHere|anchorIgnoreIfNotPresent", "True");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner[1]|tabs|signHereTabs|signHere|anchorString", "\\DSDP");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner[1]|tabs|signHereTabs|signHere|optional", "False");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner[1]|tabs|signHereTabs|signHere[1]|anchorIgnoreIfNotPresent", "True");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner[1]|tabs|signHereTabs|signHere[1]|anchorString", "\\DOSDP");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner[1]|tabs|signHereTabs|signHere[1]|optional", "True");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner[1]|tabs|initialHereTabs|initialHere|anchorIgnoreIfNotPresent", "True");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner[1]|tabs|initialHereTabs|initialHere|anchorString", "\\DIDP");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner[1]|tabs|initialHereTabs|initialHere|optional", "False");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner[1]|tabs|initialHereTabs|initialHere[1]|anchorIgnoreIfNotPresent", "True");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner[1]|tabs|initialHereTabs|initialHere[1]|anchorString", "\\DOIDP");
xml.update_child_content("recipients|inPersonSigners|inPersonSigner[1]|tabs|initialHereTabs|initialHere[1]|optional", "True");
xml.set_emit_xml_decl(false);
println!("{}", xml.get_xml().unwrap_or_default());
xml.set_emit_compact(true);
let _ = req.add_string_for_upload2("", "", &xml.get_xml().unwrap_or_default(), "utf-8", "application/xml");
let _ = req.add_file_for_upload2("", "qa_data/pdf/signatureForm.pdf", "application/pdf");
let _ = req.add_sub_header(1, "Content-Disposition", "file; filename=\"signatureForm.pdf\";documentid=1");
let http = chilkat::Http::new();
http.set_session_log_filename("qa_output/log.txt");
let resp = chilkat::HttpResponse::new();
if http.http_s_req("na2.docusign.net", 443, true, &req, &resp).is_err() {
println!("{}", http.last_error_text());
return;
}
if resp.status_code() != 201 {
println!("{}", resp.body_str());
println!("Response status code: {}", resp.status_code());
println!("Failed.");
return;
}
// Examine the response..
let _ = xml.load_xml(&resp.body_str());
let envelope_id = xml.get_child_content("envelopeId").unwrap_or_default();
println!("envelopeId = {}", envelope_id);
let status = xml.get_child_content("status").unwrap_or_default();
println!("status = {}", status);
let status_date_time = xml.get_child_content("statusDateTime").unwrap_or_default();
println!("statusDateTime = {}", status_date_time);
let uri = xml.get_child_content("uri").unwrap_or_default();
println!("uri = {}", uri);