API zur Online Zeiterfassung: REST-Schnittstelle v2.1
Hier finden Sie die Dokumentation für die alte Version REST-API v1.1.
Technische Beschreibung für Softwareentwickler
Die Zeiterfassung bietet eine REST-Schnittstelle für Softwareentwickler.
Dieser REST-Service ist zum Beispiel auch geeignet für die Anbindung von Stempeluhren.
Voraussetzungen
Das REST-API muss in den Einstellungen der Zeiterfassung (Reiter Sicherheit) aktiviert
und ein Passwort gesetzt werden.
Wechsel von Version v1.1 zu Version v2.1
Bitte beachten Sie beim Upgrade von der Version 1.1 folgende Änderungen:
-
Alle Ressourcen mit Pfaden mit
../time/..
sind in Version 2.1 erreichbar unter in ../time-v2.1/..
-
Der Endpoint
@GET /api/time/timecategories
wurde umbenannt in
@GET /api/time-v2.1/timetypes
-
Die Ressource
@POST /api/time-v2.1/createtimeentry
hat einen
neuen, optionalen Parameter: comment
Testmöglichkeiten
Eine Hello-World-Ressource ist erreichbar unter:
Eine Test-Ressource für das Login ist erreichbar unter:
Einfache Demo Clients für alle verfügbaren REST-API-Funktionen:
Beschreibung der Ressourcen
Ressource @GET /api/hello/sayhello
Diese Ressource zum Testen gibt ein Hallo zurück.
Parameter:
Rückgabewert:
Ressource @GET /api/hello/securedSayhello
Diese Ressource kann zum Testen des Logins verwendet werden. Das Login muss zuvor
aufgerufen werden.
Parameter:
Rückgabewert:
Ressource @POST /api/login
Diese Ressource kann für das Login verwendet werden.
Parameter:
{loginemail, apipassword}
Als loginemail wird die Loginemail des Admins verwendet.
Das API-Passwort wird in den Einstellungen (Reiter 'Sicherheit') gesetzt werden.
Beispiel: {"loginemail": "admin@somedomain.com", "apipassword": "12345678"}
Rückgabewert:
JSON Web Token
Das zurückgegebene Token muss bei jedem Request zur Authentifikation
als Header mitgeschickt werden.
Ressource @GET /api/time-v2.1/timetypes
Parameter:
Rückgabewert:
[{id, name}, ...]
Die Liste der Zeitarten im Format: Id der Zeitart, Name der Zeitart.
Beispiel: [{"id": "56941eee-86a7-4a8d-8af1-f78b0a688f32", "name": "Arbeitszeit"}, ...]
Ressource @GET /api/time-v2.1/users
Diese Ressource liefert eine Liste der Loginemails aller Benutzer zurück.
Parameter:
Rückgabewert:
[{loginemail}, ...]
Die Liste der Loginemails aller Benutzer.
Beispiel: [{"admin@somedomain.com"}, ...]
Ressource @GET /api/time-v2.1/projects
Diese Ressource liefert die Liste der Projekte zurück.
Parameter:
Rückgabewert:
[{id, name}, ...]
Die Liste der Projekte im Format: Id des Projekts, Name des Projekts.
Beispiel: [{"id": "56941eee-86a7-4a8d-8af1-f78b0a688f32", "name": "Demoprojekt"}, ...]
Ressource @GET /api/time-v2.1/projects/{useremail}
Diese Ressource liefert eine Liste der Projekte für einen bestimmten Benutzer zurück.
Pfad-Parameter:
{useremail}
Die Loginemail des fraglichen Benutzers.
Beispiel: @GET /projects/maier@somedomain.com
Rückgabewert:
[{id, name}, ...]
Die Liste der Projekte im Format: Id des Projekts, Name des Projekts.
Beispiel: [{"id": "56941eee-86a7-4a8d-8af1-f78b0a688f32", "name": "Demoprojekt"}, ...]
Ressource
@GET /api/time-v2.1/timeentries?useremail={useremail}&start={start}&end={end}
Diese Ressource gibt die Zeiteinträge eines Benutzers für einen bestimmten Zeitraum zurück.
Abfrage-Parameter:
{useremail, start, end}
Es werden alle Zeiteinträge des Benutzers zurückgegeben, deren Startzeit
zwischen start und end liegen. start und end müssen im folgenden Format
angegeben werden: YYYY-MM-DDTHH:MM:00 also z.B.: 2024-12-24T17:03:00.
Beispiel für die Pfadparameter für eine Abfrage der Zeiteinträge über drei Tage:
useremail=maier@somedomain.com,
start=2024-07-23T00:00:00, end=2024-07-25T23:59:00
Rückgabewert:
[{id, starttime, ...}, ...]
Die Liste der Zeiteinträge des Benutzers im angegebenen Zeitraum.
Beispiel für eine Liste der zurückgegebenen Zeiteinträge:
[{"id": "876b36db-2047-4f56-ab76-98221ca42600", "starttime": "2016-06-18T00:00:00",
"endtime": "2016-06-19T00:00:00", "useremail": "admin@somedomain.com",
"timetypeid": "56941eee-86a7-4a8d-8af1-f78b0a688f32",
"projectid": "693fe9a3-bb48-4763-bb20-5fd9fa4ffeb2"}, ...]
Ressource @POST /api/time-v2.1/createtimeentry
Mit dieser Ressource kann man einen neuen Zeiteintrag erzeugen.
Parameter:
{starttime, endtime, useremail, timetypeid, projectid, comment}
starttime und endtime müssen im folgenden Format
angegeben werden: YYYY-MM-DDTHH:MM:00 - z.B.: 2017-03-23T10:15:00.
Die Angabe einer projectid ist optional.
Die Angabe von comment ist optional.
Beispiel für einen neuen Zeiteintrag:
{"starttime": "2017-03-23T10:15:00", "endtime": "2017-03-23T18:21:00",
"useremail": "maier@somedomain.com", "timetypeid": "83be5360-6067-4a09-a970-1ff2413d7101",
"projectid": "2aeba501-ca09-41b2-a938-654d178914e4"
"comment": "Eine Testbemerkung!"}
Rückgabewert:
[{id}, ...]
Die Liste der id's aller erzeugter Zeiteinträge.
Die Liste enthält in den meisten Fällen nur einen einzigen Eintrag.
Beispiel: [{"2b301fbc-9594-4bdf-abc4-6cd77714134d"}]
Ressource @DELETE /api/time-v2.1/deletetimeentry/{id}
Mit dieser Ressource kann man einen Zeiteintrag löschen.
Pfad-Parameter:
{id}
Die id des zu löschenden Zeiteintrages.
Z.B.: 83be5360-6067-4a09-a970-1ff2413d7101
Rückgabewert: