Sample code for 30+ languages & platforms
Delphi DLL

Datev - Get a List of Clients

See more Datev Examples

Demonstrates how to get a list of clients in the accounting:clients Datev API.

Chilkat Delphi DLL Downloads

Delphi DLL
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Http, JsonArray, HttpResponse, JsonObject;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Boolean;
http: HCkHttp;
queryParams: HCkJsonObject;
resp: HCkHttpResponse;
jarr: HCkJsonArray;
json: HCkJsonObject;
client_number: Integer;
consultant_number: Integer;
id: PWideChar;
name: PWideChar;
j: Integer;
count_j: Integer;
k: Integer;
count_k: Integer;
strVal: PWideChar;
i: Integer;
count_i: Integer;

begin
success := False;

http := CkHttp_Create();

// Implements the following CURL command:

// curl --request GET \
//   --url "https://accounting-clients.api.datev.de/platform/v2/clients?filter=REPLACE_THIS_VALUE&skip=REPLACE_THIS_VALUE&top=REPLACE_THIS_VALUE" \
//   --header "Authorization: Bearer REPLACE_BEARER_TOKEN" \
//   --header "X-Datev-Client-ID: clientId" \
//   --header "accept: application/json;charset=utf-8"

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

queryParams := CkJsonObject_Create();
// ignore = queryParams.UpdateString("filter","REPLACE_THIS_VALUE");
// ignore = queryParams.UpdateString("skip","REPLACE_THIS_VALUE");
// ignore = queryParams.UpdateString("top","REPLACE_THIS_VALUE");

// Adds the "Authorization: Bearer REPLACE_BEARER_TOKEN" header.
CkHttp_putAuthToken(http,'REPLACE_BEARER_TOKEN');
CkHttp_SetRequestHeader(http,'accept','application/json;charset=utf-8');
CkHttp_SetRequestHeader(http,'X-Datev-Client-ID','DATEV_CLIENT_ID');

resp := CkHttpResponse_Create();
success := CkHttp_HttpParams(http,'GET','https://accounting-clients.api.datev.de/platform-sandbox/v2/clients',queryParams,resp);
if (success = False) then
  begin
    Memo1.Lines.Add(CkHttp__lastErrorText(http));
    Exit;
  end;

Memo1.Lines.Add(IntToStr(CkHttpResponse_getStatusCode(resp)));
Memo1.Lines.Add(CkHttpResponse__bodyStr(resp));

jarr := CkJsonArray_Create();

// Insert code here to load the above JSON array into the jarr object.
CkJsonArray_Load(jarr,CkHttpResponse__bodyStr(resp));

i := 0;
count_i := CkJsonArray_getSize(jarr);
while i < count_i do
  begin
    json := CkJsonArray_ObjectAt(jarr,i);
    client_number := CkJsonObject_IntOf(json,'client_number');
    consultant_number := CkJsonObject_IntOf(json,'consultant_number');
    id := CkJsonObject__stringOf(json,'id');
    name := CkJsonObject__stringOf(json,'name');
    j := 0;
    count_j := CkJsonObject_SizeOfArray(json,'services');
    while j < count_j do
      begin
        CkJsonObject_putJ(json,j);
        name := CkJsonObject__stringOf(json,'services[j].name');
        k := 0;
        count_k := CkJsonObject_SizeOfArray(json,'services[j].scopes');
        while k < count_k do
          begin
            CkJsonObject_putK(json,k);
            strVal := CkJsonObject__stringOf(json,'services[j].scopes[k]');
            k := k + 1;
          end;

        j := j + 1;
      end;

    CkJsonObject_Dispose(json);
    i := i + 1;
  end;

CkHttp_Dispose(http);
CkJsonObject_Dispose(queryParams);
CkHttpResponse_Dispose(resp);
CkJsonArray_Dispose(jarr);

end;