ProSonata API

Projektzeiten

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.

alle Projektzeiten auflisten

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",
      ...
    },
    ...
  ]
}

Filterung/Suche

Ü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

 

Sortierung

Nach folgenden Parametern kann sortiert werden (Sortierrichtung ggf. mit ASC bzw. DESC ergänzen):

timeID, category, date, projectID, customerID, userID, notInvoiceable, isInvoiced

eine Projektzeit aufrufen

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
  }
}

eine Projektzeit erstellen

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
}

eine Projektzeit bearbeiten

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.).

eine Projektzeit löschen

DELETE /api/v1/projecttimes/{id}

Es müssen keine weiteren Parameter übergeben werden.