Zig Requires Chilkat v11.0.0+
Zig
DocuSign Create Empty Envelope Draft
See more DocuSign Examples
Creates an empty envelope draft. The JSON response includes the envelope ID which can be used to add documents, recipients, etc. until the envelope is ready to send.Chilkat Zig Downloads
const std = @import("std");
const chilkat = @import("chilkat");
pub fn main(init: std.process.Init) !void {
const alloc = init.arena.allocator();
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
const http = try chilkat.Http.init();
defer http.deinit();
// Load a previously obtained OAuth2 access token.
const json_token = try chilkat.JsonObject.init();
defer json_token.deinit();
json_token.loadFile("qa_data/tokens/docusign.json") catch {
std.debug.print("{s}\n", .{try json_token.getLastErrorText(alloc)});
return;
};
// Adds the "Authorization: Bearer eyJ0eXAi.....UE8Kl_V8KroQ" header.
http.setAuthToken(try json_token.stringOf(alloc, "access_token"));
// Send the following request.
// Make sure to use your own account ID (obtained from Get Docusign User Account Information)
// POST https://demo.docusign.net/restapi/v2.1/accounts/7f3f65ed-5e87-418d-94c1-92499ddc8252/envelopes HTTP/1.1
// Accept: application/json
// Cache-Control: no-cache
// Authorization: Bearer eyJ0eX...
// Content-Length: ...
// Content-Type: application/json
//
// {
// "emailSubject": "Sign for Project XYZ Approval"
// }
const json = try chilkat.JsonObject.init();
defer json.deinit();
json.updateString("emailSubject", "Sign for Project XYZ Approval") catch {};
http.setRequestHeader("Cache-Control", "no-cache");
http.setRequestHeader("Accept", "application/json");
// Use your own account ID here.
http.setUrlVar("accountId", "7f3f65ed-5e87-418d-94c1-92499ddc8252") catch {};
const resp = try chilkat.HttpResponse.init();
defer resp.deinit();
http.httpJson("POST", "https://demo.docusign.net/restapi/v2.1/accounts/{$accountId}/envelopes", json, "application/json", resp) catch {
std.debug.print("{s}\n", .{try http.getLastErrorText(alloc)});
return;
};
const j_resp = try chilkat.JsonObject.init();
defer j_resp.deinit();
j_resp.load(try resp.getBodyStr(alloc)) catch {};
j_resp.setEmitCompact(false);
std.debug.print("Response Body:\n", .{});
std.debug.print("{s}\n", .{try j_resp.emit(alloc)});
// If you get a 401 response status code, it's likely you need to refresh the DocuSign OAuth2 token).
const resp_status_code = resp.getStatusCode();
std.debug.print("Response Status Code = {d}\n", .{resp_status_code});
if (resp_status_code >= 400) {
std.debug.print("Response Header:\n", .{});
std.debug.print("{s}\n", .{try resp.getHeader(alloc)});
std.debug.print("Failed.\n", .{});
return;
}
// Sample JSON response:
// (Sample code for parsing the JSON response is shown below)
// {
// "envelopeId": "4943126a-a6e0-40ca-8707-50f22bf3888c",
// "uri": "/envelopes/4943126a-a6e0-40ca-8707-50f22bf3888c",
// "statusDateTime": "2021-01-23T20:21:42.1400000Z",
// "status": "created"
// }
// Sample code for parsing the JSON response...
// Use the following online tool to generate parsing code from sample JSON:
// Generate Parsing Code from JSON
_ = try j_resp.stringOf(alloc, "envelopeId");
_ = try j_resp.stringOf(alloc, "uri");
_ = try j_resp.stringOf(alloc, "statusDateTime");
_ = try j_resp.stringOf(alloc, "status");
}