Publisher Webservice APIPRO

Der speedata Webservice steht als Beta-Version zur Verfügung.

Der speedata Publisher kann auch ohne lokale Installation benutzt werden. Dafür steht unter https://api.speedata.de eine sogenannte Software-as-a-Service Lösung zur Verfügung, die über eine REST-Schnittstelle benutzt werden kann.

Damit die speedata Publisher API angesteuert werden kann, muss ein gültiges Pro-Paket vorliegen und ein API Schlüssel (token) im Download-Bereich erzeugt werden. Mit diesem Schlüssel kann man dann alle Funktionen ansprechen.

Authentifizierung

Alle Methoden, deren Pfad mit /v0 anfangen, müssen mit einem Benutzernamen authentifiziert werden:

curl -u "sdapi_...:" "https://api.speedata.de/v0/.."

Der Doppelpunkt bei -u trennt den Benutzernamen vom Passwort und ist nicht Teil des Benutzernamens.

Der Benutzername ist natürlich durch den eigenen Token zu ersetzen, der unter https://download.speedata.de/#account erzeugt werden muss.

Übersicht über die REST Methoden

Methode URL Kurzbeschreibung
GET /available Gib 200 zurück, um zu prüfen, ob der Server läuft.
GET /v0/versions Liste verfügbare Versionen auf.
POST /v0/publish Starte einen Publishing-Vorgang.
GET /v0/status/<id> Erhalte den Status eines Publishing-Laufs.
GET /v0/wait/<id> Warte auf die Fertigstellung des PDFs.
GET /v0/pdf/<id> Lade das PDF.

/available

Ohne Versionsnummer. Gibt den HTTP-Status 200 zurück.

/v0/versions

Liste alle verfügbare Versionen auf. Rückgabe ist ein JSON-Array in der Form ["1.3.12","1.4.1"] Die Version kann als Query-Parameter bei /v0/publish benutzt werden.

/v0/publish

Übergebe per POST ein JSON-Objekt nach https://api.speedata.de/v0/publish, um den Publishing-Prozess zu starten.

{
    "files": [
        {
            "filename": "layout.xml",
            "contents": "PExheW91dAog..."
        },
        {
            "filename": "data.xml",
            "contents": "PGRhdGE+CiAg..."
        }
    ]
}

Der Dateiinhalt ist mit base64 kodiert.

Die Antwort im Erfolgsfall ist eine Sitzungs-ID, zum Beispiel 340416874, die als JSON-Objekt kodiert ist: {"id":"340416874"}. Der Rückgabewert ist 201.

Als Query-Parameter version kann eine Versionsnummer (oder der String latest) übergeben werden, der die gewünschte speedata Publisher Version angibt. Die Voreinstellung ist immer die neuste Entwicklerversion. Beispiel: /v0/publish?version=1.2.43

/v0/status/<id>

Den Status eines PDF-Laufs abrufen. Die Rückgabe ist eine JSON-Datei mit dem folgenden Aufbau:

Feld Bedeutung
finished Ein Zeitstempel im Format 2019-12-05T13:27:29.450219694+01:00, sofern der Lauf beendet ist, ansonsten die Zeichenkette null.
errors Die Anzahl der Fehler aus dem Publishing-Lauf.
errormessages Ein Array mit Fehlermeldungen, falls vorhanden. Eine Fehlermeldung ist ein Dictionary mit dem Code als Schlüssel und der Meldung als Wert. Siehe das Beispiel.
{
    "finished": "2019-12-05T13:38:42.855821194+01:00",
    "errors": 1,
    "errormessages": [
        {
            "code": 1,
            "error": "[page 1] Image \"doesnotexist.pdf\" not found!"
        }
    ]
}

/v0/wait/<id>

Das Ergebnis ist dasselbe wie in /v0/status. Um auf die Fertigstellung des PDFs zu warten, kann man auch /v0/pdf/<id> aufrufen.

/v0/pdf/<id>

Führe einen Request auf https://api.speedata.de/v0/pdf/<id> aus und ersetze die <id> mit der ID aus `/v0/publish.

HTTP Status codes

Statuscode Bedeutung
200 Alles gut gelaufen
201 Der angeforderte Publishing-Lauf wurde gestartet
401 Nicht autorisiert: der API-Schlüssel ist falsch
404 API URL existiert nicht
422 Etwas ist falsch gelaufen

In den meisten Fehlerfällen wird ein JSON Objekt nach RFC 7807 gesendet mit den folgenden Feldern:

Feld Bedeutung
type Eine eindeutige URI des Fehlers
title Kurzbeschreibung
detail Eine detaillierte Beschreibung des Problems
instance Der Request-Pfad
requestid Eine eindeutige ID für die Fehlersuche

Beispiel:

{
    "detail":"You have provided an incorrect authentication token",
    "instance":"/v0/publish",
    "title":"Not authorized",
    "type":"urn:de:speedata:api:v0:unauthorized",
    "requestid": "1234",
}

Bibliothek für die Programmiersprache Go

Die API ist bewusst klein gehalten, damit Anwendungen schnell erstellt werden können, die die API benutzen. Für die Programmiersprache Go gibt es eine Bibliothek, die den Umgang mit der API erleichtert.

Die Dokumentation ist auf Go dev zu finden, das Repository liegt auf GitHub unter https://github.com/speedata/publisher-api.