Zum Hauptinhalt springen

Aufgaben

Die Task-Entität (intern ApiTask / TaskItem) repräsentiert Aufgaben innerhalb eines Projekts. Über die OData-API können Sie Aufgaben erstellen, aktualisieren, löschen sowie Stapelverarbeitung, Mitwirkende, Stoppuhr-Funktionen und Kalendersynchronisation nutzen.

OData-Endpunktbasis

Alle Endpunkte verwenden den Basispfad /odata/Task. Für die dynamische Listenansicht einschließlich eigener Felder steht /odata/DynamicTaskItem zur Verfügung.


Datenmodell

EigenschaftTypBeschreibung
TaskItemIdGuid (UUID)Eindeutiger Bezeichner der Aufgabe (Primärschlüssel).
Namestring?Name der Aufgabe.
TaskItemStatusIdGuid?Status der Aufgabe (Fremdschlüssel zur Statusdefinition).
ContactIdGuid?Zugewiesener Kontakt (Verantwortlicher).
ProjectIdGuid?Zugehöriges Projekt.
PlanningIdGuid?Verknüpftes Planungselement.
GroupIdGuidAufgabengruppe.
StartDateTimeDateTimeOffset?Startdatum und -uhrzeit.
EndDateTimeDateTimeOffset?Enddatum und -uhrzeit.
IsDonebooleanGibt an, ob die Aufgabe abgeschlossen ist.
DoneDateDateTimeOffset?Datum des Abschlusses (schreibgeschützt, wird automatisch gesetzt wenn IsDone geändert wird).
WorkAmountdoubleArbeitsaufwand (Stunden).
CustomColorint32?Benutzerdefinierte Farbe (als Integer-Wert).
CardPositionNumberint32Position auf dem Kanban-Board.
DescriptionHTMLstring?Beschreibung der Aufgabe als HTML.
IsBillablebooleanGibt an, ob die Aufgabe abrechenbar ist.
Recurrenceint32Wiederholungsmuster. Werte: 0 = Keine Wiederholung, 1 = Täglich, 2 = Montag bis Freitag, 3 = Wöchentlich, 4 = Monatlich, 5 = Jährlich, 6 = Zweiwöchentlich, 7 = Vierteljährlich.
AssignedByContactIdGuid?Kontakt, der die Aufgabe zugewiesen hat.
CreatedByContactIdGuidKontakt, der die Aufgabe erstellt hat.
ContactDisplayNamestring?Anzeigename des zugewiesenen Kontakts (schreibgeschützt).
ContactImageIdGuid?Bild-ID des zugewiesenen Kontakts (schreibgeschützt).
RiskIdGuid?Verknüpftes Risiko.
RiskNamestring?Name des verknüpften Risikos (schreibgeschützt).
ChecklistItemsCountint32Gesamtanzahl der Checklisten-Elemente.
CheckListItemsDoneCountint32Anzahl der abgeschlossenen Checklisten-Elemente.
CheckListItemsOpenCountint32Anzahl der offenen Checklisten-Elemente.
ContributorsCountint32Anzahl der Mitwirkenden.
ContributorsWorkAmountdoubleArbeitsaufwand aller Mitwirkenden.
WorkAmountOwnerdoubleArbeitsaufwand des Verantwortlichen.

Endpunkte

CRUD-Operationen

Alle Aufgaben abrufen

GET/odata/Task

Unterstützt OData-Abfrageparameter.


Eine einzelne Aufgabe anhand ihrer ID abrufen

GET/odata/Task({key})
ParameterTypErforderlichBeschreibung
keyGuidDie TaskItemId der Aufgabe.

Neue Aufgabe erstellen

POST/odata/Task
ParameterTypErforderlichBeschreibung
BodyDelta<ApiTask>JSON-Objekt mit den Aufgabeneigenschaften.

Aufgabe aktualisieren

PATCH/odata/Task({key})
ParameterTypErforderlichBeschreibung
keyGuidDie TaskItemId der Aufgabe.
BodyDelta<ApiTask>JSON-Objekt mit den zu aktualisierenden Feldern.

Aufgabe löschen

DELETE/odata/Task({key})
ParameterTypErforderlichBeschreibung
keyGuidDie TaskItemId der zu löschenden Aufgabe.
warnung

Das Löschen einer Aufgabe kann nicht rückgängig gemacht werden.


Stapelverarbeitung

Mehrere Aufgaben gleichzeitig erstellen

POST/odata/Task/BatchInsert
ParameterTypErforderlichBeschreibung
BodyobjectJSON-Objekt mit einem Array von Aufgabendaten.

Mehrere Aufgaben gleichzeitig löschen

POST/odata/Task/BatchDelete
ParameterTypErforderlichBeschreibung
BodyobjectJSON-Objekt mit einem Array von TaskItemIds.
warnung

Die Stapellöschung entfernt alle angegebenen Aufgaben dauerhaft. Diese Aktion kann nicht rückgängig gemacht werden.

Leistung

Die Stapelverarbeitung ist deutlich effizienter als das einzelne Erstellen oder Löschen von Aufgaben. Verwenden Sie BatchInsert und BatchDelete, wenn Sie mit großen Mengen arbeiten.


Aufgabenverwaltung

Eine Aufgabe innerhalb des Kanbans verschieben

POST/odata/Task({key})/MoveTaskItem
ParameterTypErforderlichBeschreibung
keyGuidDie TaskItemId.
BodyobjectJSON-Objekt mit folgenden Feldern:

taskItemStatusId (Guid, erforderlich) — Die ID des Ziel-TaskItemStatus.
afterTaskItemId (Guid?, optional) — Die ID der Aufgabe, nach der diese platziert werden soll. Wird der Wert weggelassen oder ist null, wird die Standardposition verwendet.

Ein projektdefiniertes Feld der Aufgabe aktualisieren

POST/odata/Task({key})/UpdateProjectDefinedField
ParameterTypErforderlichBeschreibung
keyGuidDie TaskItemId.
BodyobjectJSON-Objekt mit folgenden Feldern:

fieldName (string, erforderlich) — Der Name des projektdefinierten Felds (z. B. "pf_dt0_xxxxxxxx_SomeField").
value (string?, optional) — Der zu setzende Wert, oder null zum Löschen.

Eine Aufgabe duplizieren

POST/odata/Task({key})/Copy
ParameterTypErforderlichBeschreibung
keyGuidDie TaskItemId der zu kopierenden Aufgabe.
BodyobjectJSON-Objekt mit folgenden Feldern:

projectId (Guid?, optional) — Zielprojekt-ID. Wird der Wert weggelassen oder ist null, verbleibt die Kopie im selben Projekt wie die Quellaufgabe.

Kommentare

Die Entität TaskItemNote ist das zugrunde liegende Datenmodell für Aufgabenkommentare. Jeder Kommentar wird als TaskItemNote gespeichert und mit einer bestimmten Aufgabe verknüpft.

EigenschaftTypBeschreibung
TaskItemNoteIdguidEindeutige ID der Notiz.
TaskItemIdguidID der zugehörigen Aufgabe.
NotestringNotiztext (Klartext).
NoteHtmlstringNotiztext (HTML-formatiert).
ShortDescriptionstringKurzbeschreibung.
CreateDateTimeDateTimeOffsetErstellungszeitpunkt.
CreatedByContactIdguidID des Erstellers.

Alle Aufgabenkommentare aller Aufgaben im System abrufen

GET/odata/TaskItemNote

Unterstützt OData-Abfrageparameter.

Filtern Sie nach einer Aufgabe:

GET /odata/TaskItemNote?$filter=TaskItemId eq xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&$orderby=CreateDateTime desc

Einen Aufgabenkommentar nach ID abrufen

GET/odata/TaskItemNote({key})
ParameterTypErforderlichBeschreibung
keyguidDie TaskItemNoteId.

Einen Kommentar zur Aufgabe hinzufügen

POST/odata/Task({key})/AddNote
ParameterTypErforderlichBeschreibung
keyGuidDie TaskItemId.
BodyobjectJSON-Objekt mit folgenden Feldern:

htmlText (string, erforderlich) — HTML-formatierter Kommentarinhalt.
notificationContactIds (Guid[], erforderlich) — Kontakt-IDs, die benachrichtigt werden sollen (kann leer sein []).

Einen Kommentar aus der Aufgabe löschen

GET/odata/Task/DeleteNote(noteRelationId={noteRelationId})
ParameterTypErforderlichBeschreibung
noteRelationIdGuidDie ID der Kommentarverknüpfung.
warnung

Das Löschen eines Kommentars kann nicht rückgängig gemacht werden.


Mitwirkende (Contributors)

Alle Mitwirkenden einer Aufgabe abrufen

GET/odata/Task({key})/GetContributors()
ParameterTypErforderlichBeschreibung
keyGuidDie TaskItemId.

Einen Mitwirkenden hinzufügen

POST/odata/Task({key})/AddContributor
ParameterTypErforderlichBeschreibung
keyGuidDie TaskItemId.
BodyobjectJSON-Objekt mit folgenden Feldern:

contactId (Guid, erforderlich) — Der hinzuzufügende Kontakt.
workAmount (double, optional) — Arbeitsaufwand in Stunden.
isDone (boolean, optional) — Abschlussstatus.

Einen Mitwirkenden aktualisieren

POST/odata/Task({key})/UpdateContributor
ParameterTypErforderlichBeschreibung
keyGuidDie TaskItemId.
BodyobjectJSON-Objekt mit folgenden Feldern:

id (Guid, erforderlich) — Die ID des Mitwirkenden.
workAmount (double, optional) — Arbeitsaufwand in Stunden.
isDone (boolean, optional) — Abschlussstatus.

Einen Mitwirkenden entfernen

POST/odata/Task({key})/RemoveContributor
ParameterTypErforderlichBeschreibung
keyGuidDie TaskItemId.
BodyobjectJSON-Objekt mit folgenden Feldern:

id (Guid, erforderlich) — Die ID des zu entfernenden Mitwirkenden.

Stoppuhr

Den aktuellen Stoppuhr-Status einer Aufgabe abrufen

GET/odata/Task({key})/GetStopwatch()
ParameterTypErforderlichBeschreibung
keyGuidDie TaskItemId.

Die Stoppuhr starten

POST/odata/Task({key})/StartStopwatch
ParameterTypErforderlichBeschreibung
keyGuidDie TaskItemId.

Die Stoppuhr pausieren

POST/odata/Task({key})/PauseStopwatch
ParameterTypErforderlichBeschreibung
keyGuidDie TaskItemId.

Die Stoppuhr stoppen

POST/odata/Task({key})/StopStopwatch
ParameterTypErforderlichBeschreibung
keyGuidDie TaskItemId.
Stoppuhr-Workflow

Der typische Workflow ist: StartStopwatchPauseStopwatch (optional) → StopStopwatch. Beim Stoppen wird automatisch ein Zeiteintrag erstellt.


Dokumente

Ein Dokument mit der Aufgabe verknüpfen

POST/odata/Task({key})/AddDocumentToTaskItem
ParameterTypErforderlichBeschreibung
keyGuidDie TaskItemId.
BodyobjectJSON-Objekt mit folgenden Feldern:

documentIds (Guid[], erforderlich) — Array von Dokument-IDs, die verknüpft werden sollen.

Ein Dokument von der Aufgabe entfernen

POST/odata/Task({key})/RemoveDocumentFromTaskItem
ParameterTypErforderlichBeschreibung
keyGuidDie TaskItemId.
BodyobjectJSON-Objekt mit folgenden Feldern:

documentId (Guid, erforderlich) — Die Dokument-ID, deren Verknüpfung entfernt werden soll.

Verknüpfungen

Eine Verknüpfung zur Aufgabe hinzufügen

POST/odata/Task({key})/AddRelation
ParameterTypErforderlichBeschreibung
keyGuidDie TaskItemId.
BodyobjectJSON-Objekt mit folgenden Feldern:

itemId (Guid, erforderlich) — Die ID des zu verknüpfenden Elements.

Eine Verknüpfung aus der Aufgabe entfernen

POST/odata/Task({key})/RemoveRelation
ParameterTypErforderlichBeschreibung
keyGuidDie TaskItemId.
BodyobjectJSON-Objekt mit folgenden Feldern:

itemId (Guid, erforderlich) — Die ID des zu entfernenden Elements.

Kalendersynchronisation

Den Synchronisationsstatus der Aufgabe mit dem Kalender abrufen

GET/odata/Task({key})/GetCalendarSyncStatus()
ParameterTypErforderlichBeschreibung
keyGuidDie TaskItemId.

Kalendersynchronisation für die Aufgabe aktivieren

POST/odata/Task({key})/EnableCalendarSync
ParameterTypErforderlichBeschreibung
keyGuidDie TaskItemId.

Kalendersynchronisation für die Aufgabe deaktivieren

POST/odata/Task({key})/DisableCalendarSync
ParameterTypErforderlichBeschreibung
keyGuidDie TaskItemId.

Benachrichtigungen / Follower

Alle Benachrichtigungsabonnenten der Aufgabe abrufen

GET/odata/Task({key})/GetNotificationFollowerContacts()
ParameterTypErforderlichBeschreibung
keyGuidDie TaskItemId.

Benachrichtigungsabonnenten zur Aufgabe hinzufügen

POST/odata/Task({key})/AddNotificationFollowers
ParameterTypErforderlichBeschreibung
keyGuidDie TaskItemId.
BodyobjectJSON-Objekt mit folgenden Feldern:

contactIds (Guid[], erforderlich) — Kontakt-IDs, die als Abonnenten hinzugefügt werden sollen.
projectId (Guid?, optional) — Der Projektkontext.

Einen Benachrichtigungsabonnenten entfernen

POST/odata/Task({key})/RemoveNotificationFollower
ParameterTypErforderlichBeschreibung
keyGuidDie TaskItemId.
BodyobjectJSON-Objekt mit folgenden Feldern:

contactId (Guid, erforderlich) — Die Kontakt-ID des zu entfernenden Abonnenten.

TaskStatus

Die TaskStatus-Entität definiert den Kanban-Aufgabenstatus eines Projektes. Jeder Status kann eine Farbe und eine Sortierposition haben.

info

TaskStatus-Einträge sind projektspezifisch. Jedes Projekt kann eine eigene Menge von Aufgabenstatus definieren.

Datenmodell

EigenschaftTypBeschreibung
TaskItemStatusIdguidEindeutige ID des Aufgabenstatus.
NamestringName des Status.
ProjectIdguidID des zugehörigen Projekts.
OrdinalPositionintSortierposition.
Colorint?Farbwert (als Ganzzahl).

Endpunkte

Alle Aufgabenstatus abrufen

GET/odata/TaskStatus

So filtern Sie nach den Status eines Projektes in der Reihenfolge des Kanban-Boards:

GET /odata/TaskStatus?$filter=ProjectId eq xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&$orderby=OrdinalPosition

Einen Aufgabenstatus nach ID abrufen

GET/odata/TaskStatus({key})
ParameterTypErforderlichBeschreibung
keyguidDie TaskItemStatusId.

Einen neuen Aufgabenstatus erstellen

POST/odata/TaskStatus
ParameterTypErforderlichBeschreibung
BodyDelta<ApiTaskStatus>JSON-Objekt mit den Eigenschaften aus dem Datenmodell.

Einen Aufgabenstatus aktualisieren

PATCH/odata/TaskStatus({key})
ParameterTypErforderlichBeschreibung
keyguidDie TaskItemStatusId.
BodyDelta<ApiTaskStatus>JSON-Objekt mit den zu aktualisierenden Feldern.

Einen Aufgabenstatus löschen

DELETE/odata/TaskStatus({key})
ParameterTypErforderlichBeschreibung
keyguidDie TaskItemStatusId.
warnung

Das Löschen eines Aufgabenstatus betrifft alle Aufgaben im Projekt, die ihn verwenden. Diese Aktion kann nicht rückgängig gemacht werden.

Gibt 204 No Content bei Erfolg zurück.


TaskItemTemplate

Die TaskItemTemplate-Entität ermöglicht das Speichern und Laden von Aufgabenvorlagen. Vorlagen können Aufgabenstrukturen aus bestehenden Projekten erfassen und in andere Projekte laden.

Datenmodell

EigenschaftTypBeschreibung
TaskItemTemplateIdguidEindeutige ID der Vorlage.
NamestringName der Vorlage.

Endpunkte

CRUD-Operationen

Alle Aufgabenvorlagen abrufen

GET/odata/TaskItemTemplate

Eine Aufgabenvorlage nach ID abrufen

GET/odata/TaskItemTemplate({key})
ParameterTypErforderlichBeschreibung
keyguidDie TaskItemTemplateId.

Eine neue Aufgabenvorlage erstellen

POST/odata/TaskItemTemplate
ParameterTypErforderlichBeschreibung
BodyDelta<ApiTaskItemTemplate>JSON-Objekt mit den Eigenschaften aus dem Datenmodell.

Eine Aufgabenvorlage aktualisieren

PATCH/odata/TaskItemTemplate({key})
ParameterTypErforderlichBeschreibung
keyguidDie TaskItemTemplateId.
BodyDelta<ApiTaskItemTemplate>JSON-Objekt mit den zu aktualisierenden Feldern.

Eine Aufgabenvorlage löschen

DELETE/odata/TaskItemTemplate({key})
ParameterTypErforderlichBeschreibung
keyguidDie TaskItemTemplateId.
warnung

Das Löschen einer Aufgabenvorlage kann nicht rückgängig gemacht werden.

Gibt 204 No Content bei Erfolg zurück.

Eine Vorlage aus den Aufgaben eines Projekts speichern

POST/odata/TaskItemTemplate/SaveTemplateForProject
ParameterTypErforderlichBeschreibung
BodyobjectJSON-Objekt mit folgenden Feldern:

ProjectId (guid, erforderlich) — Das Projekt, dessen Aufgabenstruktur gespeichert werden soll.
Name (string, erforderlich) — Name der neuen Vorlage.

Speichert die Aufgaben eines bestehenden Projekts als wiederverwendbare Vorlage.


Eine Vorlage in ein Projekt laden

POST/odata/TaskItemTemplate({key})/LoadTemplateForProject
ParameterTypErforderlichBeschreibung
keyguidDie TaskItemTemplateId.
BodyobjectJSON-Objekt mit folgenden Feldern:

ProjectId (guid, erforderlich) — Das Zielprojekt.

Erstellt Aufgaben im angegebenen Projekt basierend auf der Vorlage.

tipp

Beim Laden einer Vorlage werden die Aufgaben in das Zielprojekt übertragen.


Eine Vorlage herunterladen

GET/odata/TaskItemTemplate({key})/DownloadTemplate()
ParameterTypErforderlichBeschreibung
keyguidDie TaskItemTemplateId.

Gibt eine Datei mit dem Inhaltstyp application/xml und dem Dateinamen {Vorlagenname}.json zurück.


DynamicTaskItem

Der Endpunkt /odata/DynamicTaskItem bietet eine schreibgeschützte, abgeflachte Ansicht, die Daten aus Aufgabe, Projekt, Planung, Portfolio und Berechtigungen zusammenführt. Alle Eigenschaften sind mit einem Präfix versehen (z. B. TaskItem_Name, Project_Name, Planning_DisplayName). Eigene Felder folgen dem Muster CF_<Feldname>.

Abgeflachte Aufgabenliste mit Projekt-, Planungs- und Berechtigungsdaten abrufen

GET/odata/DynamicTaskItem
Nur lesender Zugriff

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


OData-Abfragebeispiele

Offene Aufgaben eines Projekts abrufen

GET /odata/Task?$filter=ProjectId eq 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' and IsDone eq false

Aufgaben eines bestimmten Kontakts

GET /odata/Task?$filter=ContactId eq 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'

Überfällige Aufgaben

GET /odata/Task?$filter=EndDateTime lt 2025-01-01T00:00:00Z and IsDone eq false

Aufgabe erstellen

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

{
"Name": "API-Integration testen",
"ProjectId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"ContactId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"StartDateTime": "2025-02-01T09:00:00Z",
"EndDateTime": "2025-02-15T17:00:00Z",
"WorkAmount": 16.0
}

Aufgabe als erledigt markieren

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

{
"IsDone": true
}

Mehrere Aufgaben gleichzeitig erstellen

POST /odata/Task/BatchInsert
Content-Type: application/json

{
"items": [
{ "Name": "Aufgabe 1", "ProjectId": "..." },
{ "Name": "Aufgabe 2", "ProjectId": "..." }
]
}
tipp

Kombinieren Sie $filter mit $select, um die Nutzlastgröße zu minimieren. Bei Aufgaben ist das Filtern nach ProjectId und IsDone das gängigste Muster.