API zur Online Zeiterfassung: REST-Schnittstelle

API zur Online Zeiterfassung: REST-Schnittstelle v1.1

Bitte verwenden Sie die aktuelle Version REST-API v2.1.

Technische Beschreibung für Softwareentwickler

Die Zeiterfassung bietet eine REST-Schnittstelle für Softwareentwickler. Die Schnittstelle ist als REST-Service implementiert und 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. Hinweis: Das selbe Passwort wird auch für die Webservice-Schnittstelle verwendet.

Technische Beschreibung

Eine Test-Ressource ist erreichbar unter: https://getgoodtime.com/goodtime-rs/api/hello/sayhello

Eine Test-Ressource für das Login ist erreichbar unter: https://getgoodtime.com/goodtime-rs/api/hello/securedSayhello Für diesen Aufruf muss vorher https://getgoodtime.com/goodtime-rs/goodtime-rs/api/login aufgerufen werden.

Hier finden Sie 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:
Keine
Rückgabewert:
String
'Hello!'

Ressource @GET /api/hello/securedSayhello

Diese Ressource kann zum Testen des Logins verwendet werden. Das Login muss zuvor aufgerufen werden.

Parameter:
Keine
Rückgabewert:
String
'Secured Hello!'

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/timecategories

Diese Ressource liefert eine Liste aller Zeitarten zurück. Bitte beachten Sie: Für eine Zeitart wird auch die Bezeichnung "timetype" verwendet.

Parameter:
Keine
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/users

Diese Ressource liefert eine Liste der Loginemails aller Benutzer zurück.

Parameter:
Keine
Rückgabewert:
[{loginemail}, ...]
Die Liste der Loginemails aller Benutzer. Beispiel: [{"admin@somedomain.com"}, ...]

Ressource @GET /api/time/projects

Diese Ressource liefert die Liste der Projekte zurück.

Parameter:
Keine
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/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/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: JJJJ-TT-MMTHH:MM:00 also z.B.: 2024-23-03T17:03:00.

Beispiel für die Pfadparameter für eine Abfrage der Zeiteinträge über drei Tage:
useremail=maier@somedomain.com, start=2024-23-07T00:00:00, end=2024-25-07T23: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/createtimeentry

Mit dieser Ressource kann man einen neuen Zeiteintrag erzeugen.

Parameter:
{starttime, endtime, useremail, timetypeid, projectid}
starttime und endtime müssen im folgenden Format angegeben werden: JJJJ-TT-MMTHH:MM:00 - z.B.: 2017-23-03T10:15:00. Die Angabe einer projectid ist optional.

Beispiel für einen neuen Zeiteintrag:
{"starttime": "2017-23-03T10:15:00", "endtime": "2017-23-03T18:21:00", "useremail": "maier@somedomain.com", "timetypeid": "83be5360-6067-4a09-a970-1ff2413d7101", "projectid": "2aeba501-ca09-41b2-a938-654d178914e4"}
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/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:
Keiner