Sample code for 30+ languages & platforms
Zig Requires Chilkat v11.0.0+

Datev - Upload File (Transfer a file to DATEV data center)

See more Datev Examples

Demonstrates how to transfer a file to the DATEV data center.

Chilkat Zig Downloads

Zig
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();

    // Implements the following CURL command:

    // curl --request POST \
    //   --url "https://accounting-extf-files.api.datev.de/platform-sandbox/v3/clients/REPLACE_CLIENT-ID/extf-files/import" \
    //   --header "Authorization: Bearer REPLACE_BEARER_TOKEN" \
    //   --header "X-Datev-Client-ID: clientId" \
    //   --header "accept: application/json;charset=utf-8" \
    //   --header "content-type: application/octet-stream" \
    //   --header "Filename: EXTF_BS_20200101_1.csv" \
    //   --header "Reference-Id: Buchungsstapel_Verkäufe_2020_01_Nr_001" \
    //   --header "Client-Application-Version: 2.0c" \
    //   --data-binary "@REPLACE_BODY"

    // Use the following online tool to generate HTTP code from a CURL command
    // Convert a cURL Command to HTTP Source Code

    const bd_request_body = try chilkat.BinData.init();
    defer bd_request_body.deinit();
    bd_request_body.loadFile("c:/temp/EXTF_BS_20200101_1.csv") catch {
        std.debug.print("Failed to load the csv file.\n", .{});
        return;
    };

    http.setRequestHeader("accept", "application/json;charset=utf-8");
    http.setRequestHeader("X-Datev-Client-ID", "clientId");
    http.setRequestHeader("Client-Application-Version", "2.0c");
    http.setRequestHeader("Filename", "EXTF_BS_20200101_1.csv");
    http.setRequestHeader("Reference-Id", "Buchungsstapel_Verkäufe_2020_01_Nr_001");
    // Adds the "Authorization: Bearer REPLACE_BEARER_TOKEN" header.
    http.setAuthToken("REPLACE_BEARER_TOKEN");

    const resp = try chilkat.HttpResponse.init();
    defer resp.deinit();
    const url = "https://accounting-extf-files.api.datev.de/platform-sandbox/v3/clients/DATEV_USER_ID/extf-files/import";
    http.httpBd("POST", url, bd_request_body, "application/octet-stream", resp) catch {
        std.debug.print("{s}\n", .{try http.getLastErrorText(alloc)});
        return;
    };

    std.debug.print("{d}\n", .{resp.getStatusCode()});
    std.debug.print("{s}\n", .{try resp.getBodyStr(alloc)});
}