Zum Hauptinhalt springen

Zeiterfassung

Die TimeEntry-Entität repräsentiert Zeiteinträge in InLoox. Über die OData-API können Sie Zeiteinträge erstellen, aktualisieren, löschen sowie mit Dokumenten verknüpfen und aus Microsoft-Graph-Kalenderevents erzeugen.

OData-Endpunktbasis

Alle Endpunkte verwenden den Basispfad /odata/TimeEntry. Kommentare werden über /odata/TimeEntryComment verwaltet. Für die abgeflachte Listenansicht steht /odata/DynamicTimeEntry zur Verfügung, der alle Standardeigenschaften sowie benutzerdefinierte Felder zurückgibt.


Datenmodell

TimeEntry

PropertyTypeDescription
TimeEntryIdGuid (UUID)Eindeutiger Bezeichner des Zeiteintrags (Primärschlüssel).
DisplayNamestring?Anzeigename des Zeiteintrags.
StartDateTimeDateTimeOffset?Startdatum und -uhrzeit.
EndDateTimeDateTimeOffset?Enddatum und -uhrzeit.
ProjectIdGuid?Zugehöriges Projekt.
DescriptionHTMLstring?Beschreibung als HTML.
DescriptionTextstring?Beschreibung als Klartext.
PhaseIdGuid?Verknüpfte Planungsphase.
IsBillablebooleanGibt an, ob der Zeiteintrag abrechenbar ist.
PerformedByContactIdGuidKontakt-ID der Person, die die Arbeit ausgeführt hat.
ColorFlagint32?Farbmarkierung (als Integer-Wert).
GroupIdGuidGruppen-ID des Zeiteintrags.
TaskItemIdGuid?Verknüpfte Aufgabe.
IsBilledbooleanGibt an, ob der Zeiteintrag bereits abgerechnet wurde.
DurationMinutesint32Dauer in Minuten.

TimeEntryComment

PropertyTypeDescription
TimeEntryCommentIdGuid (UUID)Eindeutiger Bezeichner des Kommentars.
TimeEntryIdGuidZugehöriger Zeiteintrag.
Commentstring?Kommentartext (Klartext).
CommentHtmlstring?Kommentartext (HTML).
ShortDescriptionstring?Kurzbeschreibung.
CreateDateTimeDateTimeOffsetErstellungszeitpunkt.
CreatedByContactIdGuidErsteller des Kommentars.

Endpunkte

CRUD-Operationen

GET/odata/TimeEntry

Alle Zeiteinträge abrufen. Unterstützt OData-Abfrageparameter.

POST/odata/TimeEntry

Neuen Zeiteintrag erstellen.

ParameterTypeRequiredDescription
BodyDelta<ApiTimeEntry>JSON-Objekt mit den Zeiteintragseigenschaften.
GET/odata/TimeEntry({key})

Einen einzelnen Zeiteintrag abrufen.

ParameterTypeRequiredDescription
keyGuidDie TimeEntryId.
PATCH/odata/TimeEntry({key})

Zeiteintrag teilweise aktualisieren.

ParameterTypeRequiredDescription
keyGuidDie TimeEntryId.
BodyDelta<ApiTimeEntry>JSON-Objekt mit den zu aktualisierenden Feldern.
DELETE/odata/TimeEntry({key})

Zeiteintrag löschen.

ParameterTypeRequiredDescription
keyGuidDie TimeEntryId.
warnung

Das Löschen eines Zeiteintrags ist dauerhaft. Falls der Eintrag bereits abgerechnet wurde, stellen Sie sicher, dass Ihre Abrechnungsunterlagen entsprechend aktualisiert werden.

GET/odata/TimeEntry/$count

Gesamtanzahl aller Zeiteinträge abrufen.


Spezialfunktionen

GET/odata/TimeEntry/GetCalendarTimeEntriesForProject(projectId={projectId},take={take})

Kalenderansicht der Zeiteinträge für ein Projekt abrufen.

ParameterTypeRequiredDescription
projectIdGuidDie ProjectId.
takeint32Maximale Anzahl der zurückgegebenen Einträge.
POST/odata/TimeEntry/CreateTimeEntryFromGraphEvent

Einen Zeiteintrag aus einem Microsoft-Graph-Kalenderevent erstellen.

ParameterTypeRequiredDescription
BodyobjectJSON-Objekt mit den Graph-Event-Daten.
POST/odata/TimeEntry({key})/Copy

Einen Zeiteintrag kopieren.

ParameterTypeRequiredDescription
keyGuidDie TimeEntryId des zu kopierenden Eintrags.
BodyobjectJSON-Objekt mit Kopieroptionen.
POST/odata/TimeEntry({key})/CopyWithNewDates

Einen Zeiteintrag mit neuen Datumswerten kopieren.

ParameterTypeRequiredDescription
keyGuidDie TimeEntryId des zu kopierenden Eintrags.
BodyobjectJSON-Objekt mit neuem Start- und Enddatum.
Microsoft-Graph-Integration

Mit CreateTimeEntryFromGraphEvent können Sie Outlook-Kalendertermine direkt in Zeiteinträge umwandeln. Dies setzt eine aktive Microsoft-Graph-Integration voraus.


Dokumente

POST/odata/TimeEntry({key})/AddDocumentToTimeEntry

Ein Dokument mit dem Zeiteintrag verknüpfen.

ParameterTypeRequiredDescription
keyGuidDie TimeEntryId.
BodyobjectJSON-Objekt mit der Dokument-ID.
POST/odata/TimeEntry({key})/RemoveDocumentFromTimeEntry

Ein Dokument vom Zeiteintrag entfernen.

ParameterTypeRequiredDescription
keyGuidDie TimeEntryId.
BodyobjectJSON-Objekt mit der Dokument-ID.

Verknüpfungen

POST/odata/TimeEntry({key})/AddRelation

Eine Verknüpfung zum Zeiteintrag hinzufügen.

ParameterTypeRequiredDescription
keyGuidDie TimeEntryId.
BodyobjectJSON-Objekt mit den Verknüpfungsdetails.
POST/odata/TimeEntry({key})/RemoveRelation

Eine Verknüpfung vom Zeiteintrag entfernen.

ParameterTypeRequiredDescription
keyGuidDie TimeEntryId.
BodyobjectJSON-Objekt mit der Verknüpfungs-ID.

Notizen

POST/odata/TimeEntry({key})/AddNote

Eine Notiz zum Zeiteintrag hinzufügen.

ParameterTypeRequiredDescription
keyGuidDie TimeEntryId.
BodyobjectJSON-Objekt mit dem Notizinhalt.
GET/odata/TimeEntry/DeleteNote(noteRelationId={noteRelationId})

Eine Notiz vom Zeiteintrag löschen.

ParameterTypeRequiredDescription
noteRelationIdGuidDie ID der Notizverknüpfung.

TimeEntryComment-Endpunkte

GET/odata/TimeEntryComment

Alle Zeiteintragskommentare abrufen.

POST/odata/TimeEntryComment

Neuen Kommentar erstellen.

ParameterTypeRequiredDescription
BodyDelta<ApiTimeEntryComment>JSON-Objekt mit den Kommentardaten.
GET/odata/TimeEntryComment({key})

Einen einzelnen Kommentar abrufen.

ParameterTypeRequiredDescription
keyGuidDie TimeEntryCommentId.
PATCH/odata/TimeEntryComment({key})

Kommentar aktualisieren.

ParameterTypeRequiredDescription
keyGuidDie TimeEntryCommentId.
BodyDelta<ApiTimeEntryComment>JSON-Objekt mit den zu aktualisierenden Feldern.
DELETE/odata/TimeEntryComment({key})

Kommentar löschen.

ParameterTypeRequiredDescription
keyGuidDie TimeEntryCommentId.
GET/odata/TimeEntryComment/$count

Gesamtanzahl der Kommentare abrufen.


DynamicTimeEntry

Der Endpunkt /odata/DynamicTimeEntry bietet eine schreibgeschützte, abgeflachte Ansicht, die Daten aus Zeiteintrag, Projekt, Planung, Aufgabe und Berechtigungen zusammenführt. Alle Eigenschaften sind mit einem Präfix versehen (z. B. TimeEntry_DisplayName, Project_Name, TaskItem_Name).

GET/odata/DynamicTimeEntry

Abgeflachte Zeiteintragsansicht mit Projekt-, Planungs- und Aufgabendaten abrufen.

GET/odata/DynamicTimeEntry/$count

Gesamtanzahl der DynamicTimeEntry-Einträge abrufen.

Nur lesender Zugriff

DynamicTimeEntry unterstützt ausschließlich GET-Anfragen. Zum Erstellen oder Bearbeiten verwenden Sie die regulären /odata/TimeEntry-Endpunkte.


OData-Abfragebeispiele

Zeiteinträge eines Projekts abrufen

GET /odata/TimeEntry?$filter=ProjectId eq 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'

Abrechenbare, aber noch nicht abgerechnete Einträge

GET /odata/TimeEntry?$filter=IsBillable eq true and IsBilled eq false

Zeiteinträge eines bestimmten Zeitraums

GET /odata/TimeEntry?$filter=StartDateTime ge 2025-01-01T00:00:00Z and EndDateTime le 2025-01-31T23:59:59Z

Zeiteintrag erstellen

POST /odata/TimeEntry
Content-Type: application/json

{
"DisplayName": "Entwicklung API-Modul",
"ProjectId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"StartDateTime": "2025-01-15T09:00:00Z",
"EndDateTime": "2025-01-15T12:30:00Z",
"IsBillable": true,
"PerformedByContactId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"DurationMinutes": 210
}

Zeiteintrag als abgerechnet markieren

PATCH /odata/TimeEntry('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
Content-Type: application/json

{
"IsBilled": true
}
Dauer berechnen

Das Feld DurationMinutes wird serverseitig aus StartDateTime und EndDateTime berechnet. Sie können es auch manuell setzen, wenn Sie keine Start-/Endzeit angeben.