|
|
||
|---|---|---|
| .. | ||
| TimeTrackingAPI.php | ||
| index.php | ||
| readme.md | ||
| test.html | ||
readme.md
Daten aus der Zeiterfassung übernehmen
Die Zeiterfassungssoftware bietet eine WebAPI-Schnittstelle zur automatisierten Datenabfrage, z.B. für Kalenderfehlzeiten.
Voraussetzungen
- REST WebAPI Client (curl, Bruno, Postman, ...)
- IIS Webserver mit HTTPS-Unterstützung
- Lizenz zur Nutzung der WebAPI für den Export von Daten
Installation & Einrichtung
1. Export in der Zeiterfassungssoftware anlegen
- Navigiere zu:
Einrichtung → Modelle → Datenaustausch → Exportdefinition → [+] Neu - Lade dort das gewünschte Export-Layout hoch.
2. (De)Aktivierung der zusätzlichen Zeitstempelverschlüsselung
-
Als Systemadministrator in der Weboberfläche anmelden
-
Navigiere zu:
Einrichtung → Personen → Systemstart (Datum 01.01.2000) auswählen
Systemeinstellungen → API Web-Service → Datenschutzeinstellung -
Stelle sicher, dass „Auf zusätzliche Client-Autorisierung wird verzichtet“ aktiviert ist.
-
Erstelle ein Bearer-Token unter:
https://<WebUI-URL>/Environment/Account/Token.aspxMit folgenden Angaben:
- Schnittstelle:
webapi - Login: Ein zugelassenes Benutzerkonto
- Schnittstelle:
API-Anfragen
3. Verfügbare Exporte abfragen
curl --request GET \
--url https://<Server-URL>/<API-Site>/api/export/ \
--header 'authorization: <Token>'
Gibt eine JSON-Liste aller in der Zeiterfassungssoftware definierten Exportdefinitionen zurück.
Die jeweiligeObjectIdwird für spätere Anfragen benötigt.
4. Organisationseinheiten abfragen
curl --request GET \
--url https://<Server-URL>/<API-Site>/api/organization/ \
--header 'authorization: <Token>'
Liefert alle in Zeiterfassungssoftware angelegten Organisationseinheiten (Abteilungen) mit zugehörigen
ObjectIds.
5. Export beantragen
curl --request POST \
--url https://<Server-URL>/<API-Site>/api/export \
--header 'authorization: <Token>' \
--header 'content-type: application/json' \
--data '{
"ExportDefinition": "<ObjectId aus Schritt 3>",
"organizationUnit": "<ObjectId aus Schritt 4>",
"DateFrom": "01.01.2024",
"DateUntil": "31.01.2024"
}'
Gibt eine GUID zurück, die zur Abfrage der generierten Daten verwendet wird.
6. Exportdaten abrufen
curl --request GET \
--url https://<Server-URL>/<API-Site>/api/export/<GUID> \
--header 'authorization: <Token>'
Mögliche Antworten:
-
Daten liegen vor:
Die Antwort enthält die exportierten Daten. Beispiel:<PersonalNr>;<Nachname>;<Vorname>;<Datum>;<E-Mail/Username>;<FehlzeitNr_erster_Halbtag>;<FehlzeitNr zweiter Halbtag>;<FehlzeitName erster Halbtag>;<FehlzeitName_zweiter_Halbtag>;<TagestypNr>;<Name des Tages/Feiertages> 10;Musterfrau;Max;01.06.2025;Max.Musterfrau@kunde.tld;;;;;2;Sonntag; 10;Musterfrau;Max;02.06.2025;Max.Musterfrau@kunde.tld;85;85;Mob.Arb.;Mob.Arb.;3;Montag; 10;Musterfrau;Max;03.06.2025;Max.Musterfrau@kunde.tld;85;85;Mob.Arb.;Mob.Arb.;4;Dienstag; 10;Musterfrau;Max;04.06.2025;Max.Musterfrau@kunde.tld;85;85;Mob.Arb.;Mob.Arb.;5;Mittwoch; 10;Musterfrau;Max;05.06.2025;Max.Musterfrau@kunde.tld;85;85;Mob.Arb.;Mob.Arb.;6;Donnerstag; 10;Musterfrau;Max;06.06.2025;Max.Musterfrau@kunde.tld;;;;;7;Freitag; 10;Musterfrau;Max;07.06.2025;Max.Musterfrau@kunde.tld;;;;;8;Samstag; 10;Musterfrau;Max;08.06.2025;Max.Musterfrau@kunde.tld;;;;;48;Pfingstsonntag; 10;Musterfrau;Max;09.06.2025;Max.Musterfrau@kunde.tld;;;;;49;Pfingstmontag; 10;Musterfrau;Max;10.06.2025;Max.Musterfrau@kunde.tld;81;81;GLZ;GLZ;4;Dienstag; 10;Musterfrau;Max;11.06.2025;Max.Musterfrau@kunde.tld;85;85;Mob.Arb.;Mob.Arb.;5;Mittwoch; 10;Musterfrau;Max;12.06.2025;Max.Musterfrau@kunde.tld;85;85;Mob.Arb.;Mob.Arb.;6;Donnerstag; 10;Musterfrau;Max;13.06.2025;Max.Musterfrau@kunde.tld;;;;;7;Freitag; 10;Musterfrau;Max;14.06.2025;Max.Musterfrau@kunde.tld;;;;;8;Samstag; 10;Musterfrau;Max;15.06.2025;Max.Musterfrau@kunde.tld;;;;;2;Sonntag; 10;Musterfrau;Max;16.06.2025;Max.Musterfrau@kunde.tld;1;1;Urlaubbez;Urlaubbez;3;Montag; 10;Musterfrau;Max;17.06.2025;Max.Musterfrau@kunde.tld;1;1;Urlaubbez;Urlaubbez;4;Dienstag; 10;Musterfrau;Max;18.06.2025;Max.Musterfrau@kunde.tld;1;1;Urlaubbez;Urlaubbez;5;Mittwoch; 10;Musterfrau;Max;19.06.2025;Max.Musterfrau@kunde.tld;;;;;50;Fronleichnam; 10;Musterfrau;Max;20.06.2025;Max.Musterfrau@kunde.tld;;;;;7;Freitag; 10;Musterfrau;Max;21.06.2025;Max.Musterfrau@kunde.tld;;;;;8;Samstag; 10;Musterfrau;Max;22.06.2025;Max.Musterfrau@kunde.tld;;;;;2;Sonntag; 10;Musterfrau;Max;23.06.2025;Max.Musterfrau@kunde.tld;85;85;Mob.Arb.;Mob.Arb.;3;Montag; 10;Musterfrau;Max;24.06.2025;Max.Musterfrau@kunde.tld;85;85;Mob.Arb.;Mob.Arb.;4;Dienstag; 10;Musterfrau;Max;25.06.2025;Max.Musterfrau@kunde.tld;;;;;5;Mittwoch; 10;Musterfrau;Max;26.06.2025;Max.Musterfrau@kunde.tld;;;;;6;Donnerstag; 10;Musterfrau;Max;27.06.2025;Max.Musterfrau@kunde.tld;;;;;7;Freitag; 10;Musterfrau;Max;28.06.2025;Max.Musterfrau@kunde.tld;;;;;8;Samstag; 10;Musterfrau;Max;29.06.2025;Max.Musterfrau@kunde.tld;;;;;2;Sonntag; 10;Musterfrau;Max;30.06.2025;Max.Musterfrau@kunde.tld;;;;;3;Montag; 33;Musterman;Hans;01.06.2025;Hans.Musterman@kunde.tld;;;;;2;Sonntag; 33;Musterman;Hans;02.06.2025;Hans.Musterman@kunde.tld;;;;;3;Montag; 33;Musterman;Hans;03.06.2025;Hans.Musterman@kunde.tld;;;;;4;Dienstag; 33;Musterman;Hans;04.06.2025;Hans.Musterman@kunde.tld;;;;;5;Mittwoch; 33;Musterman;Hans;05.06.2025;Hans.Musterman@kunde.tld;;;;;6;Donnerstag; 33;Musterman;Hans;06.06.2025;Hans.Musterman@kunde.tld;;;;;7;Freitag; 33;Musterman;Hans;07.06.2025;Hans.Musterman@kunde.tld;;;;;8;Samstag; 33;Musterman;Hans;08.06.2025;Hans.Musterman@kunde.tld;;;;;48;Pfingstsonntag; 33;Musterman;Hans;09.06.2025;Hans.Musterman@kunde.tld;;;;;49;Pfingstmontag; 33;Musterman;Hans;10.06.2025;Hans.Musterman@kunde.tld;81;81;GLZ;GLZ;4;Dienstag; 33;Musterman;Hans;11.06.2025;Hans.Musterman@kunde.tld;81;81;GLZ;GLZ;5;Mittwoch; 33;Musterman;Hans;12.06.2025;Hans.Musterman@kunde.tld;1;1;Urlaubbez;Urlaubbez;6;Donnerstag; 33;Musterman;Hans;13.06.2025;Hans.Musterman@kunde.tld;1;1;Urlaubbez;Urlaubbez;7;Freitag; 33;Musterman;Hans;14.06.2025;Hans.Musterman@kunde.tld;;;;;8;Samstag; 33;Musterman;Hans;15.06.2025;Hans.Musterman@kunde.tld;;;;;2;Sonntag; 33;Musterman;Hans;16.06.2025;Hans.Musterman@kunde.tld;1;1;Urlaubbez;Urlaubbez;3;Montag; 33;Musterman;Hans;17.06.2025;Hans.Musterman@kunde.tld;1;1;Urlaubbez;Urlaubbez;4;Dienstag; 33;Musterman;Hans;18.06.2025;Hans.Musterman@kunde.tld;81;81;GLZ;GLZ;5;Mittwoch; 33;Musterman;Hans;19.06.2025;Hans.Musterman@kunde.tld;;;;;50;Fronleichnam; 33;Musterman;Hans;20.06.2025;Hans.Musterman@kunde.tld;81;81;GLZ;GLZ;7;Freitag; 33;Musterman;Hans;21.06.2025;Hans.Musterman@kunde.tld;;;;;8;Samstag; 33;Musterman;Hans;22.06.2025;Hans.Musterman@kunde.tld;;;;;2;Sonntag; 33;Musterman;Hans;23.06.2025;Hans.Musterman@kunde.tld;;;;;3;Montag; 33;Musterman;Hans;24.06.2025;Hans.Musterman@kunde.tld;;;;;4;Dienstag; 33;Musterman;Hans;25.06.2025;Hans.Musterman@kunde.tld;;;;;5;Mittwoch; 33;Musterman;Hans;26.06.2025;Hans.Musterman@kunde.tld;;;;;6;Donnerstag; 33;Musterman;Hans;27.06.2025;Hans.Musterman@kunde.tld;;;;;7;Freitag; 33;Musterman;Hans;28.06.2025;Hans.Musterman@kunde.tld;;;;;8;Samstag; 33;Musterman;Hans;29.06.2025;Hans.Musterman@kunde.tld;;;;;2;Sonntag; 33;Musterman;Hans;30.06.2025;Hans.Musterman@kunde.tld;;;;;3;Montag; -
Export läuft noch:
Rückgabe folgender JSON-Statusmeldung:{ "Result": "JobPending", "Message": "" }