Projekte
Die Project-Entität ist das zentrale Objekt in InLoox. Über die OData-API können Sie Projekte erstellen, aktualisieren, löschen und umfangreiche Aktionen wie Mitgliederverwaltung, Kategorisierung oder Planungsversionen durchführen.
Alle Endpunkte verwenden den Basispfad /odata/Project. Für die dynamische Listenansicht einschließlich eigener Felder steht /odata/DynamicProject zur Verfügung.
Datenmodell
Die folgende Tabelle zeigt die wichtigsten Eigenschaften der ApiProject-Entität:
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
ProjectId | Guid (UUID) | Eindeutiger Bezeichner des Projekts (Primärschlüssel). |
Name | string | Name des Projekts. |
NumberPrefix | string? | Präfix der Projektnummer. |
NumberIncremential | int32? | Fortlaufende Nummer der Projektnummer. |
NumberSuffix | string? | Suffix der Projektnummer. |
Number | string? | Berechnete vollständige Projektnummer (Präfix + laufende Nummer + Suffix, schreibgeschützt). |
ProjectNumberAndName | string? | Kombinierte Projektnummer und Name (schreibgeschützt). |
ClientId | Guid? | Verknüpfter Kunde (Kunden-ID). |
ClientName | string? | Name des verknüpften Kunden (schreibgeschützt). |
ClientNumber | string? | Kundennummer (schreibgeschützt). |
ClientNumberName | string? | Kombinierte Kundennummer und Name (schreibgeschützt). |
DivisionId | Guid? | Zugehörige Abteilung. |
DivisionName | string? | Name der Abteilung (schreibgeschützt). |
DivisionDescription | string? | Beschreibung der Abteilung (schreibgeschützt). |
ProjectStatusId | Guid? | Aktueller Projektstatus (Fremdschlüssel). |
ProjectStatusName | string? | Name des aktuellen Projektstatus (schreibgeschützt). |
ProjectStatusProgress | int32? | Fortschrittswert des Projektstatus (schreibgeschützt). |
StatusLabel | string? | Anzeigebezeichnung für den Projektstatus (schreibgeschützt). |
ComputedProgress | double? | Berechneter Fortschritt (0–1, schreibgeschützt). |
PercentComplete | int32? | Fertigstellungsgrad in Prozent (schreibgeschützt). |
Complete | int32 | Anzahl erledigter Aufgaben (schreibgeschützt). |
CompleteActual | double | Tatsächlicher Fertigstellungsgrad (schreibgeschützt). |
CompletePlan | int32 | Anzahl geplanter erledigter Aufgaben (schreibgeschützt). |
CompletePlanActual | int32 | Geplante vs. tatsächliche Fertigstellung (schreibgeschützt). |
Priority | int32 | Priorität des Projekts. Werte: 0 = Niedrig, 1 = Normal, 2 = Hoch. Standard ist 1 (Normal). |
LockMode | int32 | Sperrmodus. Werte: 0 = Keiner, 1 = Gesperrt, 2 = Keine Benachrichtigungen. |
IsLocked | boolean | Gibt an, ob das Projekt gesperrt ist. |
StartDate | DateTimeOffset | Startdatum. |
EndDate | DateTimeOffset | Enddatum. |
PlannedStartDate | DateTimeOffset? | Geplantes Startdatum. |
PlannedEndDate | DateTimeOffset? | Geplantes Enddatum. |
IsEndDateFixed | boolean | Gibt an, ob das Enddatum fixiert ist. |
BackwardScheduling | boolean | Rückwärtsterminierung aktiviert. |
IsRecycled | boolean | Gibt an, ob das Projekt im Papierkorb liegt. |
IsArchived | boolean | Gibt an, ob das Projekt archiviert ist. |
IsRequest | boolean | Gibt an, ob es sich um einen Projektantrag handelt. |
IsFavorite | boolean? | Gibt an, ob das Projekt vom aktuellen Benutzer als Favorit markiert ist. |
CreatedByContactId | Guid | Kontakt-ID des Erstellers. |
CreatedByName | string? | Anzeigename des Erstellers (schreibgeschützt). |
CreatedByContactImageId | Guid? | Bild-ID des Ersteller-Kontakts (schreibgeschützt). |
CreatedDateTime | DateTimeOffset? | Erstellungsdatum und -uhrzeit (schreibgeschützt). |
ChangedByContactId | Guid? | Kontakt-ID des letzten Bearbeiters. |
LastChangedByName | string? | Anzeigename des letzten Bearbeiters (schreibgeschützt). |
ChangedByContactImageId | Guid? | Bild-ID des letzten Bearbeiter-Kontakts (schreibgeschützt). |
LastChangedDateTime | DateTimeOffset? | Datum und Uhrzeit der letzten Änderung (schreibgeschützt). |
ClosedByName | string? | Anzeigename des Kontakts, der das Projekt geschlossen hat (schreibgeschützt). |
ClosedDateTime | DateTimeOffset? | Datum und Uhrzeit der Schließung des Projekts (schreibgeschützt). |
ImageId | Guid? | ID des Projektbilds. |
PortfolioId | Guid? | Zugehöriges Portfolio. |
DescriptionText | string? | Projektbeschreibung als Klartext. |
DescriptionHTML | string? | Projektbeschreibung als HTML. |
Categories | string? | Kommagetrennte Kategorien. |
Note | string? | Projektnotiz. |
NotificationsSuppressed | boolean | Benachrichtigungen unterdrückt. |
ClusterName | string? | Name des Clusters, dem das Projekt zugeordnet ist (schreibgeschützt). |
StoreType | int32 | Dokumentenspeichertyp des Projekts. |
DocumentFolder | string? | Pfad zum Projektdokumentenordner. |
FirstManager | string? | Anzeigename der ersten Projektleitung (schreibgeschützt). |
FirstTeamMember | string? | Anzeigename des ersten Teammitglieds (schreibgeschützt). |
FirstCustomer | string? | Anzeigename des ersten Kundenkontakts (schreibgeschützt). |
FirstPartner | string? | Anzeigename des ersten Partnerkontakts (schreibgeschützt). |
FirstAdditionalContact | string? | Anzeigename des ersten weiteren Kontakts (schreibgeschützt). |
ManagerProjectContact | string? | Kommagetrennte Liste der Projektleitungsnamen (schreibgeschützt). |
TeamProjectContact | string? | Kommagetrennte Liste der Teammitgliedsnamen (schreibgeschützt). |
CustomerProjectContact | string? | Kommagetrennte Liste der Kundenkontaktnamen (schreibgeschützt). |
PartnerProjectContact | string? | Kommagetrennte Liste der Partnerkontaktnamen (schreibgeschützt). |
AdditionalProjectContact | string? | Kommagetrennte Liste der weiteren Kontaktnamen (schreibgeschützt). |
ReviewerProjectContact | string? | Kommagetrennte Liste der Prüferkontaktnamen (schreibgeschützt). |
AmountPlannedCosts | double | Gesamtbetrag geplanter Kosten (schreibgeschützt). |
AmountActualCosts | double | Gesamtbetrag tatsächlicher Kosten (schreibgeschützt). |
AmountPlannedProfit | double | Geplanter Gesamtgewinn (schreibgeschützt). |
AmountProfit | double | Tatsächlicher Gesamtgewinn (schreibgeschützt). |
AmountProfitDifference | double | Differenz zwischen geplantem und tatsächlichem Gewinn (schreibgeschützt). |
PlannedCostsOpex | double | Geplante Betriebskosten (OpEx, schreibgeschützt). |
ActualCostsOpex | double | Tatsächliche Betriebskosten (OpEx, schreibgeschützt). |
PlannedCostsResources | double | Geplante Ressourcenkosten (schreibgeschützt). |
PlannedCostsOther | double | Geplante sonstige Kosten (schreibgeschützt). |
CostsOther | double | Tatsächliche sonstige Kosten (schreibgeschützt). |
PlannedRevenues | double | Geplante Erlöse gesamt (schreibgeschützt). |
Revenues | double | Tatsächliche Erlöse gesamt (schreibgeschützt). |
ActivityCostAmount | double | Gesamtbetrag aktivitätsbasierter Kosten (schreibgeschützt). |
PlannedWorkAmount | double | Geplanter Arbeitsaufwand in Stunden gesamt (schreibgeschützt). |
BudgetIndicator | boolean? | Gibt an, ob ein Budgetindikator gesetzt ist (schreibgeschützt). |
AllPositionsBilled | boolean? | Gibt an, ob alle Positionen abgerechnet sind (schreibgeschützt). |
TotalEffort | double? | Gesamtaufwand aller Aufgaben in Stunden (schreibgeschützt). |
TotalEffortComplete | double? | Aufwand erledigter Aufgaben in Stunden (schreibgeschützt). |
TotalEffortRemaining | double? | Verbleibender Aufwand in Stunden (schreibgeschützt). |
TotalEffortPlan | double? | Geplanter Gesamtaufwand in Stunden (schreibgeschützt). |
TotalEffortOverdue | int32 | Anzahl überfälliger Aufwände (schreibgeschützt). |
TotalEffortPlanDue | int32 | Anzahl geplanter fälliger Aufwände (schreibgeschützt). |
TotalEffortTimeEntries | double? | Gesamtaufwand aus Zeiteinträgen in Stunden (schreibgeschützt). |
TimeEntriesDuration | double | Gesamtdauer der Zeiteinträge in Stunden (schreibgeschützt). |
UnassignedTimeEntriesDuration | double | Dauer nicht zugewiesener Zeiteinträge (schreibgeschützt). |
ProjectDuration | double | Gesamtlaufzeit des Projekts in Tagen (schreibgeschützt). |
ProjectDurationRemaining | double | Verbleibende Projektlaufzeit in Tagen (schreibgeschützt). |
PlannedDuration | double | Geplante Projektlaufzeit in Tagen (schreibgeschützt). |
PlannedDurationRemaining | double | Verbleibende geplante Laufzeit in Tagen (schreibgeschützt). |
FirstNotCompletedPlanningDate | DateTimeOffset? | Datum des ersten nicht abgeschlossenen Planungselements (schreibgeschützt). |
TimeWarningPlanningEndExceeded | boolean? | Gibt an, ob das Planungsenddatum überschritten wurde (schreibgeschützt). |
TimeWarningProjectEndExceeded | boolean? | Gibt an, ob das Projektenddatum überschritten wurde (schreibgeschützt). |
RiskScore | int32 | Risikobewertungswert (schreibgeschützt). |
ValueScore | int32 | Wertbewertungswert (schreibgeschützt). |
SizeScore | int32 | Größenbewertungswert (schreibgeschützt). |
CalculatedScore | double | Berechneter Gesamtscore (schreibgeschützt). |
Als schreibgeschützt gekennzeichnete Felder werden serverseitig berechnet und können nicht über POST- oder PATCH-Anfragen gesetzt werden. Verwenden Sie diese zum Filtern, Sortieren und Anzeigen in GET-Anfragen.
Endpunkte
CRUD-Operationen
Alle Projekte abrufen
/odata/ProjectUnterstützt OData-Abfrageparameter ($filter, $select, $orderby, $top, $skip).
Ein einzelnes Projekt anhand seiner ID abrufen
/odata/Project({key})| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
key | Guid | ✅ | Die ProjectId des Projekts. |
Neues Projekt erstellen
/odata/Project| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
Body | Delta<ApiProject> | ✅ | JSON-Objekt mit den Projekteigenschaften. |
Lassen Sie ProjectId weg, damit der Server automatisch eine ID generiert.
Projekt aktualisieren
/odata/Project({key})| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
key | Guid | ✅ | Die ProjectId des Projekts. |
Body | Delta<ApiProject> | ✅ | JSON-Objekt mit den zu aktualisierenden Feldern. |
Projekt archivieren
/odata/Project({key})| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
key | Guid | ✅ | Die ProjectId des Projekts. |
Body | object | ✅ | JSON-Objekt mit folgendem Feld: IsArchived (boolean, erforderlich) — Auf true setzen, um das Projekt zu archivieren, oder auf false, um es wiederherzustellen. |
Archivierte Projekte werden in aktiven Projektlisten ausgeblendet, können aber weiterhin bearbeitet werden. Sie können jederzeit wiederhergestellt werden, indem IsArchived auf false gesetzt wird.
Projekt in den Papierkorb verschieben (weiches Löschen)
/odata/Project({key})| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
key | Guid | ✅ | Die ProjectId des Projekts. |
Body | object | ✅ | JSON-Objekt mit folgendem Feld: IsRecycled (boolean, erforderlich) — Auf true setzen, um das Projekt in den Papierkorb zu verschieben, oder auf false, um es wiederherzustellen. |
Projekte im Papierkorb sind schreibgeschützt und werden in Standardansichten ausgeblendet. Sie können jederzeit wiederhergestellt werden, indem IsRecycled auf false gesetzt wird.
Projekt endgültig löschen
/odata/Project({key})| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
key | Guid | ✅ | Die ProjectId des zu löschenden Projekts. |
DELETE entfernt das Projekt und alle zugehörigen Daten (Aufgaben, Zeiteinträge, Dokumente usw.) dauerhaft. Diese Aktion kann nicht rückgängig gemacht werden. Erwägen Sie stattdessen, das Projekt zu archivieren oder in den Papierkorb zu verschieben.
Mitglieder & Kontakte
Alle Mitglieder eines Projekts abrufen
/odata/Project({key})/GetProjectContactRelations()| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
key | Guid | ✅ | Die ProjectId. |
Die Antwort enthält eine Liste von Kontaktbeziehung-Datensätzen mit folgender Struktur:
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
Id | guid | Eindeutiger Bezeichner der Kontaktbeziehung. |
MemberId | guid | ID des Projektmitglieds. |
RoleType | int | Projektrolle. Werte: 2 = Projektleitung, 4 = Team, 8 = Partner, 16 = Kunde, 32 = Weitere, 64 = Projektantragsprüfer, 128 = Weitere 1, 256 = Weitere 2, 512 = Weitere 3, 1024 = Weitere 4, 2048 = Weitere 5. |
OrdinalPosition | int | Sortierposition des Mitglieds. |
DisplayName | string | Anzeigename des Kontakts. |
Email | string | E-Mail-Adresse des Kontakts. |
SourceType | int | Art des Kontaktbeziehung-Datensatzes. Werte: 0 = Einzelner Kontakt, 1 = Gruppe von Kontakten. |
IsRecycled | bool | Gibt an, ob der Kontakt im Papierkorb liegt. |
IsIdentity | bool | Gibt an, ob der Kontakt eine Identität (Benutzerkonto) besitzt. |
EmailConfirmed | bool | Gibt an, ob die E-Mail-Adresse bestätigt ist. |
InvitationAccepted | bool | Gibt an, ob die Einladung angenommen wurde. |
Skills | string | Kommagetrennte Liste der Fertigkeiten. |
ImageId | guid? | ID des Kontaktbilds. |
Ein Mitglied zum Projekt hinzufügen
/odata/Project({key})/AddMember| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
key | Guid | ✅ | Die ProjectId. |
Body | object | ✅ | JSON-Objekt mit den folgenden Feldern: contactId (guid, erforderlich) — Der hinzuzufügende Kontakt. role (int, erforderlich) — Wert: 2 = Projektleitung, 4 = Team, 8 = Partner, 16 = Kunde, 32 = Weitere, 64 = Projektantragsprüfer, 128 = Weitere 1, 256 = Weitere 2, 512 = Weitere 3, 1024 = Weitere 4, 2048 = Weitere 5.. type (int?, optional) — Wert: 0 = Einzelner Kontakt, 1 = Gruppe von Kontakten. ordinalPosition (int?, optional) — Sortierposition. |
Das Hinzufügen eines Mitglieds ist eine sicherheitsrelevante Aktion. Dadurch werden Projekt-Rollenberechtigungen für den angegebenen Kontakt erteilt.
Ein Mitglied aus dem Projekt entfernen
/odata/Project({key})/RemoveMember| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
key | Guid | ✅ | Die ProjectId. |
Body | object | ✅ | JSON-Objekt mit den folgenden Feldern: contactId (guid, erforderlich) — Der zu entfernende Kontakt. role (int, erforderlich) — Wert: 2 = Projektleitung, 4 = Team, 8 = Partner, 16 = Kunde, 32 = Weitere, 64 = Projektantragsprüfer, 128 = Weitere 1, 256 = Weitere 2, 512 = Weitere 3, 1024 = Weitere 4, 2048 = Weitere 5. type (int?, optional) — Wert: 0 = Einzelner Kontakt, 1 = Gruppe von Kontakten. |
Das Entfernen eines Mitglieds ist eine sicherheitsrelevante Aktion. Dadurch werden Projekt-Rollenberechtigungen für den angegebenen Kontakt entzogen.
Kategorien
Zugewiesene Kategorien eines Projekts abrufen
/odata/Project({key})/GetAssignedCategories()Eine Kategorie dem Projekt zuweisen
/odata/Project({key})/AssignCategory(categoryId={categoryId})| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
key | Guid | ✅ | Die ProjectId. |
categoryId | Guid | ✅ | Die ID der zuzuweisenden Kategorie. |
Eine Kategorie vom Projekt entfernen
/odata/Project({key})/UnAssignCategory(categoryId={categoryId})| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
key | Guid | ✅ | Die ProjectId. |
categoryId | Guid | ✅ | Die ID der zu entfernenden Kategorie. |
Alle Kategorien eines Projekts ersetzen
/odata/Project({key})/SetCategories| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
key | Guid | ✅ | Die ProjectId. |
Body | object | ✅ | JSON-Objekt mit den folgenden Feldern: categoryIds (guid[], erforderlich) — Array der Kategorie-IDs, die dem Projekt zugewiesen werden sollen. |
SetCategories ersetzt alle vorhandenen Kategoriezuweisungen. Um eine einzelne Kategorie hinzuzufügen oder zu entfernen, verwenden Sie stattdessen AssignCategory oder UnAssignCategory.
Kommentare
Die ProjectNote-Entität ist das zugrunde liegende Datenmodell für Projektkommentare. Jeder Kommentar wird als ProjectNote gespeichert und mit einem bestimmten Projekt verknüpft.
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
ProjectNoteId | guid | Eindeutige ID der Notiz. |
ProjectId | guid | ID des zugehörigen Projekts. |
Note | string | Notiztext (Klartext). |
NoteHtml | string | Notiztext (HTML-formatiert). |
ShortDescription | string | Kurzbeschreibung der Notiz. |
CreateDateTime | DateTimeOffset | Erstellungszeitpunkt. |
CreatedByContactId | guid | ID des Erstellers. |
Alle Projektkommentare aller Projekte abrufen
/odata/ProjectNoteFiltern Sie nach Projekt:
GET /odata/ProjectNote?$filter=ProjectId eq xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&$orderby=CreateDateTime desc
Einen Projektkommentar nach ID abrufen
/odata/ProjectNote({key})| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
key | guid | ✅ | Die ProjectNoteId. |
Einen Kommentar zum Projekt hinzufügen
/odata/Project({key})/AddNote| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
key | Guid | ✅ | Die ProjectId. |
Body | object | ✅ | JSON-Objekt mit den folgenden Feldern: htmlText (string, erforderlich) — HTML-formatierter Kommentarinhalt. notificationContactIds (guid[], erforderlich) — Kontakt-IDs, die benachrichtigt werden sollen. Übergeben Sie ein leeres Array, wenn keine Benachrichtigungen erforderlich sind. |
Einen Kommentar vom Projekt entfernen
/odata/Project({key})/DeleteNote| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
key | Guid | ✅ | Die ProjectId. |
Body | object | ✅ | JSON-Objekt mit den folgenden Feldern: noteRelationId (guid, erforderlich) — Die ID der zu löschenden Kommentarverknüpfung. |
Das Löschen eines Kommentars kann nicht rückgängig gemacht werden.
Projektnummern
Prüfen, ob eine Projektnummer bereits existiert
/odata/Project({key})/CheckIfProjectNumberExists(projectNumber={projectNumber})| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
key | Guid | ✅ | Die ProjectId. |
projectNumber | string | ✅ | Die zu prüfende Projektnummer. |
Eine Projektnummer aktualisieren
/odata/Project({key})/UpdateProjectNumber| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
key | Guid | ✅ | Die ProjectId. |
Body | object | ✅ | JSON-Objekt mit den folgenden Feldern: prefix (string, erforderlich) — Das Präfix der Projektnummer. suffix (string, erforderlich) — Das Suffix der Projektnummer. |
Die Laufnummernteil der Projektnummer korrigieren
/odata/Project({key})/CorrectIncrementIfNecessary(projectNumber={projectNumber})| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
key | Guid | ✅ | Die ProjectId. |
projectNumber | string | ✅ | Die Projektnummer zum Abgleich. |
Status & Aktionen
Einen Projektantrag genehmigen
/odata/Project({key})/ApproveRequest| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
key | Guid | ✅ | Die ProjectId des Projektantrags. |
Einen Projektantrag ablehnen
/odata/Project({key})/RejectRequest| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
key | Guid | ✅ | Die ProjectId des Projektantrags. |
Favoritenstatus eines Projekts umschalten
/odata/Project({key})/ToggleFavorite(isFavorite={isFavorite})| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
key | Guid | ✅ | Die ProjectId. |
isFavorite | boolean | ✅ | true zum Markieren als Favorit, false zum Entfernen. |
Ein Projekt duplizieren
/odata/Project({key})/CopyProject()| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
key | Guid | ✅ | Die ProjectId des zu kopierenden Projekts. |
Ein Projektbild generieren
/odata/Project({key})/GenerateImage()| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
key | Guid | ✅ | Die ProjectId. |
Eine Projektbeschreibung per KI generieren
/odata/Project({key})/GenerateProjectDescription(language={language})| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
key | Guid | ✅ | Die ProjectId. |
language | string | — | Sprache der generierten Beschreibung (z. B. "de", "en"). |
Dieser Endpunkt ist nur in InLoox Cloud verfügbar.
Verknüpfungen
Eine Verknüpfung zum Projekt hinzufügen
/odata/Project({key})/AddRelation| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
key | Guid | ✅ | Die ProjectId. |
Body | object | ✅ | JSON-Objekt mit den Verknüpfungsdetails. |
Eine Verknüpfung vom Projekt entfernen
/odata/Project({key})/RemoveRelation| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
key | Guid | ✅ | Die ProjectId. |
Body | object | ✅ | JSON-Objekt mit der Verknüpfungs-ID. |
Benachrichtigungen
Alle Kontakte abrufen, die Benachrichtigungen für dieses Projekt abonniert haben
/odata/Project({key})/GetNotificationFollowerContacts()| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
key | Guid | ✅ | Die ProjectId. |
Benachrichtigungsabonnenten hinzufügen
/odata/Project({key})/AddNotificationFollowers| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
key | Guid | ✅ | Die ProjectId. |
Body | object | ✅ | JSON-Objekt mit den Kontakt-IDs der Abonnenten. |
Einen Benachrichtigungsabonnenten entfernen
/odata/Project({key})/RemoveNotificationFollower| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
key | Guid | ✅ | Die ProjectId. |
Body | object | ✅ | JSON-Objekt mit der Kontakt-ID. |
DynamicProject
Der Endpunkt /odata/DynamicProject bietet eine schreibgeschützte, abgeflachte Ansicht, die Daten aus Projekt, Portfolio und Berechtigungen zusammenführt. Alle Eigenschaften sind mit einem Präfix versehen (z. B. Project_Name, Portfolio_Name, ProjectPermission_PermissionProjectRead). Eigene Felder folgen dem Muster CF_<Feldname>.
Abgeflachte Projektliste mit Portfolio- und Berechtigungsdaten abrufen
/odata/DynamicProjectDynamicProject unterstützt ausschließlich GET-Anfragen. Zum Erstellen oder Bearbeiten verwenden Sie die regulären /odata/Project-Endpunkte.
OData-Abfragebeispiele
Alle aktiven Projekte abrufen
GET /odata/Project?$filter=IsArchived eq false and IsRecycled eq false
Projekte eines bestimmten Kunden filtern
GET /odata/Project?$filter=ClientId eq 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
Projekte nach Priorität sortieren (absteigend)
GET /odata/Project?$orderby=Priority desc&$top=10
Nur bestimmte Felder auswählen
GET /odata/Project?$select=ProjectId,Name,Number,StartDate,EndDate,ComputedProgress
Projektanträge filtern
GET /odata/Project?$filter=IsRequest eq true
Projekt erstellen
POST /odata/Project
Content-Type: application/json
{
"Name": "Neues Projekt",
"StartDate": "2025-01-15T00:00:00Z",
"EndDate": "2025-06-30T00:00:00Z",
"Priority": 2
}
Projekt aktualisieren
PATCH /odata/Project('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
Content-Type: application/json
{
"Name": "Aktualisierter Projektname",
}
Verwenden Sie $top und $skip für die Paginierung großer Ergebnismengen:
GET /odata/Project?$top=50&$skip=100&$orderby=Name