Verwendung

Die Appack Programmierschnittstelle ist technisch gesehen ein GraphQL Endpoint. Es werden demnach HTTP-POST Requests mit einem JSON Payload gemäß der GraphQL Spezifikation erwartet.

Der GraphQL Endpoint lautet: https://api.appack.de/graphql

Alle API-Aufrufe erfordern eine Authentifizierung per Bearer-Token, das im Header jedes Requests mitgesendet wird. Dieses Token muss dem JWT-Standard entsprechen und enthält Informationen über den Aufrufer, seine Berechtigungen, sowie die Gültigkeit des Tokens. Der initiale API-Token den Sie erhalten, dient zur Generierung eines Access-Token für API-Aufrufe.

Token-Typen

Token Beschreibung

API-Token

Das Token bleibt gültig, solange der API-Zugriff besteht – in der Regel, solange die App betrieben wird. Es enthält Informationen darüber, wer im Kontext welcher App welche Operationen ausführen darf.

Access Token

Wird zur Authentifizierung von API-Aufrufen verwendet und ist nur 1 Stunde gültig. Es enthält Informationen über Benutzer, App-Kontext und Berechtigungen zum Zeitpunkt der Token-Erstellung.

Beispiel: Access Token erzeugen

So erzeugen Sie mithilfe Ihres API-Tokens ein Access Token:

curl -g -X POST -H "Content-Type: application/json" \
 -H "Authorization: Bearer <API-Token>" \
-d '{"query":"{getToken}"}' \
https://api.appack.de/graphql | jq '.data.getToken'
fetch("https://api.appack.de/graphql", {
    method: 'POST',
    headers: {
        'Authorization': 'Bearer <API-Token>',
        'Content-Type': 'application/json',
        'Accept': 'application/json'
    },
    body: JSON.stringify({query: "{getToken}"})
}).then(r => r.json()).then(response => {
        console.log(response.data)
})
public class GraphQLFetcher {
    public static void main(String[] args) throws Exception {
        OkHttpClient client = new OkHttpClient();
        RequestBody body = RequestBody.create("{\"query\":\"{getToken}\"}", MediaType.get("application/json; charset=utf-8"));
        Request request = new Request.Builder()
                .url("https://api.appack.de/graphql")
                .post(body)
                .addHeader("Authorization", "Bearer <API-Token>")
                .addHeader("Accept", "application/json")
                .build();

        try (Response response = client.newCall(request).execute()) {
            if (response.body() != null) {
                System.out.println(response.body().string());
            }
        }
    }
}
<?php

$ch = curl_init("https://api.appack.de/graphql");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{ "query": "{getToken}" }');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer <API-Token>',
    'Content-Type: application/json',
    'Accept: application/json'
]);

echo json_decode(curl_exec($ch), true)['data'];
curl_close($ch);