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
keyGuid✅Die TaskItemId der Aufgabe.

Neue Aufgabe erstellen

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

Um eine Aufgabe in einer bestimmten Kanban-Spalte zu erstellen, geben Sie TaskItemStatusId im Request-Body an. Mit CardPositionNumber legen Sie die Position innerhalb dieser Spalte fest.


Aufgabe aktualisieren

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

Aufgabe löschen

DELETE/odata/Task({key})
ParameterTypErforderlichBeschreibung
keyGuid✅Die 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
Bodyobject✅JSON-Objekt mit einem Array von Aufgabendaten.

Mehrere Aufgaben gleichzeitig löschen

POST/odata/Task/BatchDelete
ParameterTypErforderlichBeschreibung
Bodyobject✅JSON-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
keyGuid✅Die TaskItemId.
Bodyobject✅JSON-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
keyGuid✅Die TaskItemId.
Bodyobject✅JSON-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
keyGuid✅Die TaskItemId der zu kopierenden Aufgabe.
Bodyobject✅JSON-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
keyguid✅Die TaskItemNoteId.

Einen Kommentar zur Aufgabe hinzufügen

POST/odata/Task({key})/AddNote
ParameterTypErforderlichBeschreibung
keyGuid✅Die TaskItemId.
Bodyobject✅JSON-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
noteRelationIdGuid✅Die 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
keyGuid✅Die TaskItemId.

Einen Mitwirkenden hinzufügen

POST/odata/Task({key})/AddContributor
ParameterTypErforderlichBeschreibung
keyGuid✅Die TaskItemId.
Bodyobject✅JSON-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
keyGuid✅Die TaskItemId.
Bodyobject✅JSON-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
keyGuid✅Die TaskItemId.
Bodyobject✅JSON-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
keyGuid✅Die TaskItemId.

Die Stoppuhr starten

POST/odata/Task({key})/StartStopwatch
ParameterTypErforderlichBeschreibung
keyGuid✅Die TaskItemId.

Die Stoppuhr pausieren

POST/odata/Task({key})/PauseStopwatch
ParameterTypErforderlichBeschreibung
keyGuid✅Die TaskItemId.

Die Stoppuhr stoppen

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

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


Dokumente​

Ein Dokument mit der Aufgabe verknüpfen

POST/odata/Task({key})/AddDocumentToTaskItem
ParameterTypErforderlichBeschreibung
keyGuid✅Die TaskItemId.
Bodyobject✅JSON-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
keyGuid✅Die TaskItemId.
Bodyobject✅JSON-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
keyGuid✅Die TaskItemId.
Bodyobject✅JSON-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
keyGuid✅Die TaskItemId.
Bodyobject✅JSON-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
keyGuid✅Die TaskItemId.

Kalendersynchronisation für die Aufgabe aktivieren

POST/odata/Task({key})/EnableCalendarSync
ParameterTypErforderlichBeschreibung
keyGuid✅Die TaskItemId.

Kalendersynchronisation für die Aufgabe deaktivieren

POST/odata/Task({key})/DisableCalendarSync
ParameterTypErforderlichBeschreibung
keyGuid✅Die TaskItemId.

Benachrichtigungen / Follower​

Alle Benachrichtigungsabonnenten der Aufgabe abrufen

GET/odata/Task({key})/GetNotificationFollowerContacts()
ParameterTypErforderlichBeschreibung
keyGuid✅Die TaskItemId.

Benachrichtigungsabonnenten zur Aufgabe hinzufügen

POST/odata/Task({key})/AddNotificationFollowers
ParameterTypErforderlichBeschreibung
keyGuid✅Die TaskItemId.
Bodyobject✅JSON-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
keyGuid✅Die TaskItemId.
Bodyobject✅JSON-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
keyguid✅Die 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
keyguid✅Die TaskItemStatusId.
BodyDelta<ApiTaskStatus>✅JSON-Objekt mit den zu aktualisierenden Feldern.

Einen Aufgabenstatus löschen

DELETE/odata/TaskStatus({key})
ParameterTypErforderlichBeschreibung
keyguid✅Die 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
keyguid✅Die 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
keyguid✅Die TaskItemTemplateId.
BodyDelta<ApiTaskItemTemplate>✅JSON-Objekt mit den zu aktualisierenden Feldern.

Eine Aufgabenvorlage löschen

DELETE/odata/TaskItemTemplate({key})
ParameterTypErforderlichBeschreibung
keyguid✅Die 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
Bodyobject✅JSON-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
keyguid✅Die TaskItemTemplateId.
Bodyobject✅JSON-Objekt mit folgenden Feldern:

ProjectId (guid, erforderlich) — Das Zielprojekt.

Erstellt Aufgaben im angegebenen Projekt basierend auf der Vorlage.

Voraussetzung

Das Laden einer Vorlage setzt voraus, dass die Ordnerstruktur des Zielprojekts initialisiert ist. Kann der Dokumentenspeicher nicht automatisch angelegt werden, schlägt die Anfrage fehl — initialisieren Sie die Ordnerstruktur im Bereich Dokumente des Projekts und wiederholen Sie den Aufruf.

tipp

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


Eine Vorlage herunterladen

GET/odata/TaskItemTemplate({key})/DownloadTemplate()
ParameterTypErforderlichBeschreibung
keyguid✅Die 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.