WorkTime ProHandbuch
Zur Anwendung

Einstieg

Die Schnittstelle ist eine gewöhnliche REST-API über JSON.

Basisadresse

https://zeit.example.de/api/v1/…

Der Präfix api und die Version v1 stehen im Pfad. v1 ist die Vorgabe; sie darf entfallen, sollte es aber nicht — eine ausdrückliche Version überlebt die nächste.

Läuft die API hinter der Oberfläche, leitet diese /api/* weiter; nach außen genügt ein einziger Name. Siehe HTTPS einrichten.

Zwei Wege hinein

  • JWT für angemeldete Sitzungen,
  • API-Schlüssel im Kopffeld X-API-Key für Maschinen.

Siehe Authentifizierung.

Die Schnittstellenbeschreibung

Unter /api/docs liegt eine OpenAPI-Oberfläche mit jedem Endpunkt, jedem Feld und jeder Validierungsregel. Sie ist im Produktivbetrieb abgeschaltet, weil sie die gesamte Schnittstelle offenlegt; ENABLE_API_DOCS=true schaltet sie ein.

Sie ist die verbindliche Quelle. Dieses Handbuch beschreibt, wie die Endpunkte zusammenwirken; welche Felder ein Datensatz genau trägt, steht dort.

Was mit einer Anfrage geschieht

  1. Länge prüfen. Ein übermäßig langer Text wird abgewiesen, bevor er in die Verarbeitung gerät.
  2. Felder prüfen. Unbekannte Felder führen zu einem Fehler, statt stillschweigend verworfen zu werden — ein Tippfehler im Feldnamen wäre sonst eine Änderung, die nicht stattfindet, ohne dass es jemand merkt.
  3. Umwandeln. Zahlen und Wahrheitswerte werden aus Zeichenketten erkannt.
  4. Anmeldung und Rechte prüfen. Standardmäßig ist alles geschützt.
  5. Ratenbegrenzung. Siehe Taktsperre.

Statuscodes

CodeBedeutung
200 / 201in Ordnung
400die Anfrage ist fachlich nicht möglich — die Meldung sagt warum
401nicht angemeldet, Token abgelaufen oder Schlüssel ungültig
403angemeldet, aber ohne das nötige Recht
404nicht gefunden — auch, wenn es zu einem fremden Mandanten gehört
409jemand war schneller; Liste neu laden
429Taktsperre
503Modul nicht lizenziert, oder die Anwendung trägt gerade nicht

Die Meldungen bei 400 sind auf Deutsch und für Menschen geschrieben. Sie nennen, was zu tun ist, nicht nur was falsch war — „Bitte die bestehende Buchung ändern statt eine zweite anzulegen“ statt „constraint violation“.

Zeitpunkte

Zeitpunkte werden als ISO-8601 entgegengenommen und geliefert. Reine Datumsangaben sind dort erlaubt, wo ein Tag gemeint ist (JJJJ-MM-TT).

Was Nacht, Sonntag und Feiertag ist, rechnet der Server in der Zeitzone des Beschäftigungsortes aus. Die Buchungsliste liefert die Zone je Zeile mit, damit der Aufrufer nicht raten muss.

Mandanten

Jede Sitzung gehört zu genau einem Mandanten; er steht im Token beziehungsweise am API-Schlüssel. Es gibt keinen Weg, über die Schnittstelle einen anderen zu erreichen.