ProSonata API
Folgende HTTP-Methoden stehen für Projektzeiten zur Verfügung:
Zugriff für alle Benutzergruppen.
Benutzer bis Zeiterfasser 1 erhalten nur ihre eigenen Projektzeiten.
Nur Administratoren können Projektzeiten aller Benutzer erstellen/bearbeiten/löschen.
Alle Benutzer können ihre eigenen Projektzeiten erstellen/bearbeiten/löschen.
GET /api/v1/projecttimes
Antwort:
{
"meta": {
"status": 200,
"perPage": 100,
"page": 1,
"totalCount": 2432,
"requestUserID": 1,
"requestUsername": "Admin1",
"usergroupName": "Administrator",
"apiLimitRemaining": 476,
"apiLimitReset": 656
},
"data": [
{
"timeID": 1,
"category": 11,
"categoryName": "Konzeption",
"date": "2012-01-04",
"detail": "Besprechung Job",
"workingTime": 0.5,
"projectID": 45,
"projectNo": "12-11-001",
"projectName": "Frühstücks-Flyer",
"customerID": 11,
"customerName": "Bäckerei Back",
"userID": 1,
"username": "Admin1",
...
},
...
]
}
Über Parameter kann gefiltert werden:
GET /api/v1/projecttimes?projectID=45
Parameter | Beschreibung |
---|---|
category | ID der Zeitkategorie |
categoryName | Bezeichnung der Kategorie |
date | Datum des Zeiteintrags durch Angabe von > oder < vor dem Datum kann eine Suche ab dem bzw. bis zum Datum erfolgen |
date2 | zweite Datumsangabe, um die Suchanfrage weiter einzuschränken durch Angabe von > oder < vor dem Datum kann eine Suche ab dem bzw. bis zum Datum erfolgen |
detail | Details/Beschreibung |
projectID | ID eines Projekts |
projectNo | Projektnummer |
projectName | Bezeichnung eines Projekts |
customerID | ID einer Firma/Gruppe |
userID | ID eines Benutzers Sonderwert: String »myself« für Zeiten des anfragenden Benutzeraccounts |
username | Benutzername |
linkedTaskID | ID einer verlinkten Aufgabe |
notInvoiceable | nicht berechenbar 0 = nein 1 = ja |
isInvoiced | Zeiteintrag ist berechnet 0 = nein 1 = ja |
Nach folgenden Parametern kann sortiert werden (Sortierrichtung ggf. mit ASC bzw. DESC ergänzen):
timeID, category, date, projectID, customerID, userID, notInvoiceable, isInvoiced
GET /api/v1/projecttimes/{id}
Antwort:
{
"meta": {
"status": 200,
"requestUserID": 1,
"requestUsername": "Admin1",
"usergroupName": "Administrator",
"apiLimitRemaining": 456,
"apiLimitReset": 546
},
"data": {
"timeID": 449,
"category": 15,
"categoryName": "Workshop",
"date": "2019-03-02",
"detail": "Meeting beim Kunden",
"workingTime": 1.25,
"projectID": 189,
"projectNo": "19-14-001",
"projectName": "ZX Produktbroschüre",
"customerID": 14,
"customerName": "ZX Testfirma",
"userID": 3,
"username": "Admin2",
"linkedTaskID": null,
"notInvoiceable": 0,
"isInvoiced": 0,
"creationDate": "2019-03-02 10:40:12",
"workingTimeStart": null,
"workingTimeEnd": null,
"freeTimeInput": 0,
"timeViaApi": 0
}
}
POST /api/v1/projecttimes
Notwendige und mögliche Parameter im Body:
Parameter | Beschreibung | Typ | Default-Wert | Pflichtfeld |
---|---|---|---|---|
category | ID der Zeitkategorie | Int | ja | |
date | Datum des Zeiteintrags | Date | aktueller Tag | |
detail | Details/Beschreibung (max. 200 Zeichen) |
String | ||
workingTime | Projektzeit in Stunden | Dec | 0.00 | |
projectID | ID des Projekts | Int | ja | |
userID | ID des Benutzers (nur Administratoren können Zeiten für andere Benutzer erfassen!) |
ID des anfragenden Benutzers |
||
linkedTaskID | ID einer verknüpften Aufgabe | Int | null | |
notInvoiceable | Zeit ist nicht berechenbar 0 = nein 1 = ja |
Int | 0 | |
isInvoiced | Zeit ist berechnet 0 = nein 1 = ja |
Int | 0 | |
workingTimeStart | Startzeitpunkt der Bearbeitung | Time | null | |
workingTimeEnd | Endzeitpunkt der Bearbeitung | Time | null |
Angabe von Dezimalwerten mit Punkt als Trennzeichen.
Beispiel:
{
"category": 15,
"date": "2019-03-02",
"detail": "Layout der Broschüre angefangen",
"workingTime": 1.25,
"projectID": 89,
"userID": 3
}
PUT /api/v1/projecttimes/{id}
Es müssen nicht alle Parameter für eine Bearbeitung übergeben werden.
Es stehen die Parameter zum Erstellen der Ressource zur Verfügung (s.o.).
DELETE /api/v1/projecttimes/{id}
Es müssen keine weiteren Parameter übergeben werden.