Dart Requires Chilkat v11.0.0+
Dart
Send DocuSign XML Request
See more HTTP Misc Examples
Demonstrates how to send a DocuSign XML request.Chilkat Dart Downloads
import 'package:chilkat/chilkat.dart';
void main() {
// This requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
final req = CkHttpRequest();
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';
final xmlCred = CkXml();
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..
final xml = CkXml();
xml.tag = '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.emitXmlDecl = false;
print(xml.getXml());
xml.emitCompact = 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');
final http = CkHttp();
http.sessionLogFilename = 'qa_output/log.txt';
final resp = CkHttpResponse();
try {
http.httpSReq('na2.docusign.net', 443, true, req, resp);
} on ChilkatException catch (e) {
print(e.lastErrorText);
return;
}
if (resp.statusCode != 201) {
print(resp.bodyStr);
print('Response status code: ${resp.statusCode}');
print('Failed.');
return;
}
// Examine the response..
xml.loadXml(resp.bodyStr);
final envelopeId = xml.getChildContent('envelopeId');
print('envelopeId = $envelopeId');
final status = xml.getChildContent('status');
print('status = $status');
final statusDateTime = xml.getChildContent('statusDateTime');
print('statusDateTime = $statusDateTime');
final uri = xml.getChildContent('uri');
print('uri = $uri');
}