|
|
||
|---|---|---|
| .. | ||
| Kalender-Export-Parser.php | ||
| TimeTrackingAPI.php | ||
| index.php | ||
| readme.md | ||
| webapi_test.html | ||
| webapi_test_parser.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 der Zeiterfassungssoftware angelegten Organisationseinheiten (Abteilungen) mit zugehörigen
ObjectIds zurück.
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/Feiertag> 4711;Musterfrau;Max;01.06.2025;Max.Musterfrau@kunde.tld;;;;;2;Sonntag; 4711;Musterfrau;Max;02.06.2025;Max.Musterfrau@kunde.tld;85;85;Mob.Arb.;Mob.Arb.;3;Montag; 4711;Musterfrau;Max;03.06.2025;Max.Musterfrau@kunde.tld;85;85;Mob.Arb.;Mob.Arb.;4;Dienstag; 4711;Musterfrau;Max;04.06.2025;Max.Musterfrau@kunde.tld;85;85;Mob.Arb.;Mob.Arb.;5;Mittwoch; 4711;Musterfrau;Max;05.06.2025;Max.Musterfrau@kunde.tld;90;90;GLZ;GLZ;6;Donnerstag; 4711;Musterfrau;Max;06.06.2025;Max.Musterfrau@kunde.tld;;;;;7;Freitag; 4711;Musterfrau;Max;07.06.2025;Max.Musterfrau@kunde.tld;;;;;8;Samstag; 4711;Musterfrau;Max;08.06.2025;Max.Musterfrau@kunde.tld;;;;;48;Pfingstsonntag; 4711;Musterfrau;Max;09.06.2025;Max.Musterfrau@kunde.tld;;;;;49;Pfingstmontag; ... -
Export läuft noch:
Rückgabe folgender JSON-Statusmeldung: `{ "Result": "JobPending", "Message": "" }
7. Parsing Data / Weiterverarbeitung
Es ist mit der API Test webapi_test_parser.html möglich die CSV Datei in ein JSON Array wo jeder Mitarbeieter eine JSON Objekt ist zu verwandeln.
Auch mit der passenden PHP Datei Kalender-Export-Parser.php ist die Konvertierung im Backend möglich, nicht nur wie in test2.html im Frontend.
Ein solches Ergrbnis kann dabei erwartet werden:
[
{
"nr": "33",
"nachname": "Musterman",
"vorname": "Hans",
"email": "Hans.Musterman@kunde.tld",
"tage_fehlzeit": [
{
"datum": "02.06.2025",
"fehlzeitNR1HT": "85",
"fehlzeitNR2HT": "85",
"fehlzeitName1HT": "Mob.Arb.",
"fehlzeitName2HT": "Mob.Arb.",
"tagtypNR": "3",
"tagtypName": "Montag"
},
{
"datum": "03.06.2025",
"fehlzeitNR1HT": "85",
"fehlzeitNR2HT": "85",
"fehlzeitName1HT": "Mob.Arb.",
"fehlzeitName2HT": "Mob.Arb.",
"tagtypNR": "4",
"tagtypName": "Dienstag"
},
{
"datum": "04.06.2025",
"fehlzeitNR1HT": "85",
"fehlzeitNR2HT": "85",
"fehlzeitName1HT": "Mob.Arb.",
"fehlzeitName2HT": "Mob.Arb.",
"tagtypNR": "5",
"tagtypName": "Mittwoch"
},
{
"datum": "05.06.2025",
"fehlzeitNR1HT": "90",
"fehlzeitNR2HT": "90",
"fehlzeitName1HT": "GLZ",
"fehlzeitName2HT": "GLZ",
"tagtypNR": "6",
"tagtypName": "Donnerstag"
}
],
"tage_feiertage": [
{
"datum": "08.06.2025",
"fehlzeitNR1HT": "",
"fehlzeitNR2HT": "",
"fehlzeitName1HT": "",
"fehlzeitName2HT": "",
"tagtypNR": "48",
"tagtypName": "Pfingstsonntag"
},
{
"datum": "09.06.2025",
"fehlzeitNR1HT": "",
"fehlzeitNR2HT": "",
"fehlzeitName1HT": "",
"fehlzeitName2HT": "",
"tagtypNR": "49",
"tagtypName": "Pfingstmontag"
}
]
}
]
`