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:
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/timecategories
Diese Ressource liefert eine Liste aller Zeitarten zurück. Bitte beachten Sie:
Für eine Zeitart wird auch die Bezeichnung "timetype" verwendet.
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/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/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/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: