Zeiteinträge auflisten
GET /time_entries.xml
Listet alle Zeiteinträge aller Benutzer absteigend sortiert nach Datum (date_at) auf. Ein Benutzer mit der Rolle Zeiterfasser hat nur Zugriff auf seine eigenen Zeiteinträge.
Response : 200 OK
<?xml version="1.0" encoding="UTF-8"?>
<time-entries type="array">
<time-entry>
...
</time-entry>
<time-entry>
...
</time-entry>
</time_entries>
Die ausgegebene Liste kann nach folgenden Parametern gefiltert werden:
- customer_id
- ID des Kunden
- project_id
- ID des Projekts
- service_id
- ID der Leistung
- user_id
- ID des Benutzers
- billable
- true oder false
- note
- Freitextsuche im Bemerkungsfeld
- at
- today, yesterday, this_week, last_week, this_month, last_month oder Datum im Format YYYY-MM-DD
- from, to
- beide im Format YYYY-MM-DD
- locked
- true oder false
Beispielsweise würde
GET /time_entries.xml?service_id=3
alle Zeiteinträge ausgeben, die der Leistung mit der ID 3 zugeordnet wurden.
Es kann auch nach allen Zeiteinträgen gesucht werden, die einer von mehreren Leistungen zugeordnet wurden:
GET /time_entries.xml?service_id=3,4
Dies gibt alle Zeiteinträge aus, die entweder der Leistung mit der ID 3 oder mit der ID 4 zugeordnet wurden. Gleiches ist auch bei customer_id, project_id und user_id möglich.
Per Default werden alle Zeiteinträge ausgegeben, die den übergebenen Kriterien entsprechen. In manchen Fällen können dies mehrere Tausend Stück sein. Daher ist es möglich die Anzahl mit limit zu begrenzen:
GET /time_entries.xml?limit=100
Dies gibt die ersten 100 Zeiteinträge zurück. Um eine große Anzahl von Einträgen sequentiell zu empfangen ist es möglich mit page die darauf folgenden Einträge auszugeben:
GET /time_entries.xml?limit=100&page=2
gibt die Einträge 101 bis 200 zurück.
Darüberhinaus ist es möglich, Zeiteinträge gruppiert auszugeben und auf die über die Weboberfläche angelegten Lesezeichen zuzugreifen.
Alle Einträge eines bestimmten Tages auflisten
GET /daily.xml
Listet alle Zeiteinträge des aktuellen Benutzers am heutigen Tag auf.
GET /daily/2009/2/7.xml
Listet alle Zeiteinträge des aktuellen Benutzers am 7. Februar 2009 auf.
Einzelnen Eintrag anzeigen
GET /time_entries/{id}.xml
Gibt einen einzelnen Zeiteintrag zurück. Dieser kann einem beliebigen Benutzer des Accounts gehören, solange der aktuelle Benutzer kein Zeiterfasser ist.
Response : 200 OK
<?xml version="1.0" encoding="UTF-8"?>
<time-entry>
<id type="integer">71</id>
<date-at type="date">2008-04-16</date-at>
<minutes type="integer">0</minutes>
<revenue type="float" nil="true"></revenue>
<billable type="boolean">true</billable>
<note></note>
<user-id type="integer">2</user-id>
<user-name>Fridolin Fremd</user-name>
<project-id type="integer">3</project-id>
<project-name>API 2.0</project-name>
<service-id type="integer">12</service-id>
<service-name>Entwurf</service-name>
<customer-id type="integer">13</customer-id>
<customer-name>König</customer-name>
<locked type="boolean">false</locked>
<created-at type="datetime">2008-09-18T01:26:18+02:00</created-at>
<updated-at type="datetime">2008-09-18T01:26:18+02:00</updated-at>
</time-entry>
Läuft auf dem angeforderten Zeiteintrag die Stoppuhr, wird zusätzlich ausgegeben, seit wann die Stoppuhr läuft und wie viele Minuten akkumuliert auf dem Zeiteintrag gestoppt wurden (gemessene + bereits vorhandene Minuten).
Response : 200 OK
<?xml version="1.0" encoding="UTF-8"?>
<time-entry>
...
<tracking>
<since type="datetime">2008-01-22T22:58:13+01:00</since>
<minutes type="integer">12</minutes>
</tracking>
</time-entry>
Neuen Eintrag erstellen
POST /time_entries.xml
Erstellt einen neuen Zeiteintrag. Alle Parameter sind optional. Folgende Parameter können angegeben werden:
- date_at
- Datum des Zeiteintrages im Format YYYY-MM-DD. Default: Heute
- minutes
- Default: 0
- note
- Default: '' (leerer String)
- user_id
- Kann nur von Admistratoren oder dem Besitzer des Accounts gesetzt werden. Default: ID des aktuellen Benutzers
- project_id
- Default: nil
- service_id
- Default: nil
- locked
- Kann nur von Admistratoren oder dem Besitzer des Accounts gesetzt werden. Default: false
WICHTIG: Ist ein Zeit-Eintrag als abgeschlossen markiert worden, kann er nicht mehr bearbeitet und nicht mehr gelöscht werden. Admistratoren oder dem Besitzer des Accounts ist es jedoch möglich mit dem Parameter force abgeschlossene Einträge zu bearbeiten und löschen – beispielsweise um einen Eintrag wieder »aufzuschliessen«.
Request Body
<time-entry>
<date-at>2009-2-12</date-at>
<minutes>185</minutes>
<note></note>
<service-id>2</service-id>
<project-id>3</project-id>
</time-entry>
Response : 201 Created
<?xml version="1.0" encoding="UTF-8"?>
<time-entry>
<id type="integer">5</id>
<date-at type="date">2009-2-12</date-at>
<minutes type="integer">185</minutes>
<revenue type="float" nil="true"></revenue>
<billable type="boolean">true</billable>
<note></note>
<user-id type="integer">2</user-id>
<user-name>Fridolin Fremd</user-name>
<project-id type="integer">3</project-id>
<project-name>API 2.0</project-name>
<service-id type="integer">2</service-id>
<service-name>Dokumentation</service-name>
<customer-id type="integer">13</customer-id>
<customer-name>König</customer-name>
<locked type="boolean">false</locked>
<created-at type="datetime">2009-02-11T18:54:45+01:00</created-at>
<updated-at type="datetime">2009-02-11T18:54:45+01:00</updated-at>
</time-entry>
Bearbeiten
PUT /time_entries/{id}.xml
Aktualisiert einen Zeiteintrag mit den übergebenen Parametern. Dieser kann einem beliebigen Benutzer des Accounts gehören, solange der aktuelle Benutzer ein Admistrator oder der Besitzer des Accounts ist. Es können dieselben Parameter wie zum Erstellen eines Eintrags verwendet werden.
Request Body
<time-entry>
<minutes>120</minutes>
<service_id>3</service-id>
</time-entry>
Response : 200 OK
Löschen
DELETE /time_entries/{id}.xml
Löscht einen Zeiteintrag.
