Zum Hauptinhalt springen

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.

OData-Endpunktbasis

Alle Endpunkte verwenden den Basispfad /odata/Project. Für die abgeflachte Listenansicht steht /odata/DynamicProject zur Verfügung.


Datenmodell

Die folgende Tabelle zeigt die wichtigsten Eigenschaften der ApiProject-Entität:

PropertyTypeDescription
ProjectIdGuid (UUID)Eindeutiger Bezeichner des Projekts (Primärschlüssel).
NamestringName des Projekts.
NumberPrefixstring?Präfix der Projektnummer.
NumberIncrementialint32?Fortlaufende Nummer der Projektnummer.
NumberSuffixstring?Suffix der Projektnummer.
Numberstring?Berechnete vollständige Projektnummer (Präfix + laufende Nummer + Suffix).
ClientIdGuid?Verknüpfter Kunde (Kunden-ID).
DivisionIdGuid?Zugehörige Abteilung.
ProjectStatusIdGuid?Aktueller Projektstatus (Fremdschlüssel).
ComputedProgressdouble?Berechneter Fortschritt (0–1).
Priorityint32Priorität des Projekts (ganzzahlig).
LockModeint32Sperrmodus (0 = nicht gesperrt).
IsLockedbooleanGibt an, ob das Projekt gesperrt ist.
StartDateDateTimeOffsetTatsächliches Startdatum.
EndDateDateTimeOffsetTatsächliches Enddatum.
PlannedStartDateDateTimeOffset?Geplantes Startdatum.
PlannedEndDateDateTimeOffset?Geplantes Enddatum.
IsEndDateFixedbooleanGibt an, ob das Enddatum fixiert ist.
BackwardSchedulingbooleanRückwärtsterminierung aktiviert.
PrivatebooleanGibt an, ob das Projekt privat ist.
IsRecycledbooleanGibt an, ob das Projekt im Papierkorb liegt.
IsArchivedbooleanGibt an, ob das Projekt archiviert ist.
IsRequestbooleanGibt an, ob es sich um einen Projektantrag handelt.
CreatedByContactIdGuidKontakt-ID des Erstellers.
ChangedByContactIdGuid?Kontakt-ID des letzten Bearbeiters.
ImageIdGuid?ID des Projektbilds.
PortfolioIdGuid?Zugehöriges Portfolio.
DescriptionTextstring?Projektbeschreibung als Klartext.
DescriptionHTMLstring?Projektbeschreibung als HTML.
Categoriesstring?Kommagetrennte Kategorien.
Notestring?Projektnotiz.
NotificationsSuppressedbooleanBenachrichtigungen unterdrückt.
Zusätzliche berechnete Felder

Die ApiProject-Entität enthält viele weitere berechnete Felder wie AmountPlannedCosts, AmountActualCosts, TotalEffort, ProjectDuration usw. Diese sind schreibgeschützt und werden serverseitig berechnet.


Endpunkte

CRUD-Operationen

GET/odata/Project

Alle Projekte abrufen. Unterstützt OData-Abfrageparameter ($filter, $select, $expand, $orderby, $top, $skip).

POST/odata/Project

Neues Projekt erstellen.

ParameterTypeRequiredDescription
BodyDelta<ApiProject>JSON-Objekt mit den Projekteigenschaften.
GET/odata/Project({key})

Ein einzelnes Projekt anhand seiner ID abrufen.

ParameterTypeRequiredDescription
keyGuidDie ProjectId des Projekts.
PATCH/odata/Project({key})

Projekt teilweise aktualisieren (Partial Update).

ParameterTypeRequiredDescription
keyGuidDie ProjectId des Projekts.
BodyDelta<ApiProject>JSON-Objekt mit den zu aktualisierenden Feldern.
DELETE/odata/Project({key})

Projekt löschen.

ParameterTypeRequiredDescription
keyGuidDie ProjectId des zu löschenden Projekts.
warnung

Das Löschen eines Projekts entfernt es und alle zugehörigen Daten (Aufgaben, Zeiteinträge, Dokumente usw.) dauerhaft. Diese Aktion kann nicht rückgängig gemacht werden.

GET/odata/Project/$count

Gesamtanzahl aller Projekte abrufen.


Mitglieder & Kontakte

POST/odata/Project({key})/AddMember

Ein Mitglied zum Projekt hinzufügen.

ParameterTypeRequiredDescription
keyGuidDie ProjectId.
BodyobjectJSON-Objekt mit der Kontakt-ID und Rolle des neuen Mitglieds.
POST/odata/Project({key})/RemoveMember

Ein Mitglied aus dem Projekt entfernen.

ParameterTypeRequiredDescription
keyGuidDie ProjectId.
BodyobjectJSON-Objekt mit der Kontakt-ID des zu entfernenden Mitglieds.
GET/odata/Project({key})/GetProjectContactRelations()

Alle Kontaktbeziehungen eines Projekts abrufen.

ParameterTypeRequiredDescription
keyGuidDie ProjectId.

Kategorien

GET/odata/Project({key})/GetAssignedCategories()

Zugewiesene Kategorien eines Projekts abrufen.

GET/odata/Project({key})/AssignCategory(categoryId={categoryId})

Eine Kategorie dem Projekt zuweisen.

ParameterTypeRequiredDescription
keyGuidDie ProjectId.
categoryIdGuidDie ID der zuzuweisenden Kategorie.
GET/odata/Project({key})/UnAssignCategory(categoryId={categoryId})

Eine Kategorie vom Projekt entfernen.

ParameterTypeRequiredDescription
keyGuidDie ProjectId.
categoryIdGuidDie ID der zu entfernenden Kategorie.
POST/odata/Project({key})/SetCategories

Alle Kategorien eines Projekts ersetzen.

ParameterTypeRequiredDescription
keyGuidDie ProjectId.
BodyobjectJSON-Objekt mit der Liste der Kategorie-IDs.

Notizen

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

Eine Notiz zum Projekt hinzufügen.

ParameterTypeRequiredDescription
keyGuidDie ProjectId.
BodyobjectJSON-Objekt mit Notizinhalt.
POST/odata/Project({key})/DeleteNote

Eine Notiz vom Projekt entfernen.

ParameterTypeRequiredDescription
keyGuidDie ProjectId.
BodyobjectJSON-Objekt mit der Notiz-ID.

Projektnummern

POST/odata/Project({key})/UpdateProjectNumber

Die Projektnummer aktualisieren.

ParameterTypeRequiredDescription
keyGuidDie ProjectId.
BodyobjectJSON-Objekt mit den neuen Nummernbestandteilen.
GET/odata/Project({key})/CheckIfProjectNumberExists(projectNumber={projectNumber})

Prüfen, ob eine Projektnummer bereits existiert.

ParameterTypeRequiredDescription
keyGuidDie ProjectId.
projectNumberstringDie zu prüfende Projektnummer.
GET/odata/Project({key})/CorrectIncrementIfNecessary(projectNumber={projectNumber})

Den Inkrement-Wert der Projektnummer korrigieren, falls erforderlich.

ParameterTypeRequiredDescription
keyGuidDie ProjectId.
projectNumberstringDie Projektnummer zum Abgleich.

Status & Aktionen

POST/odata/Project({key})/ApproveRequest

Einen Projektantrag genehmigen.

ParameterTypeRequiredDescription
keyGuidDie ProjectId des Projektantrags.
POST/odata/Project({key})/RejectRequest

Einen Projektantrag ablehnen.

ParameterTypeRequiredDescription
keyGuidDie ProjectId des Projektantrags.
GET/odata/Project({key})/ToggleFavorite(isFavorite={isFavorite})

Favoritenstatus eines Projekts umschalten.

ParameterTypeRequiredDescription
keyGuidDie ProjectId.
isFavoritebooleantrue zum Markieren als Favorit, false zum Entfernen.
GET/odata/Project({key})/CopyProject()

Ein Projekt duplizieren.

ParameterTypeRequiredDescription
keyGuidDie ProjectId des zu kopierenden Projekts.
GET/odata/Project({key})/GenerateImage()

Ein Projektbild generieren (KI-gestützt).

ParameterTypeRequiredDescription
keyGuidDie ProjectId.
GET/odata/Project({key})/GenerateProjectDescription(language={language})

Eine Projektbeschreibung per KI generieren.

ParameterTypeRequiredDescription
keyGuidDie ProjectId.
languagestringSprache der generierten Beschreibung (z. B. "de", "en").

Planungsversionen (Snapshots)

GET/odata/Project({key})/CreatePlanningSnapshot(name={name})

Einen Planungssnapshot erstellen.

ParameterTypeRequiredDescription
keyGuidDie ProjectId.
namestringName des Snapshots.
POST/odata/Project({key})/DeletePlanningSnapshot

Einen Planungssnapshot löschen.

ParameterTypeRequiredDescription
keyGuidDie ProjectId.
POST/odata/Project({key})/RenamePlanningSnapshot

Einen Planungssnapshot umbenennen.

ParameterTypeRequiredDescription
keyGuidDie ProjectId.
BodyobjectJSON-Objekt mit dem neuen Namen.

Projektgruppen

POST/odata/Project({key})/AddProjectGroup

Eine Projektgruppe hinzufügen.

ParameterTypeRequiredDescription
keyGuidDie ProjectId.
BodyobjectJSON-Objekt mit den Gruppendetails.
POST/odata/Project({key})/DeleteProjectGroup

Eine Projektgruppe löschen.

ParameterTypeRequiredDescription
keyGuidDie ProjectId.
BodyobjectJSON-Objekt mit der Gruppen-ID.
POST/odata/Project({key})/SetProjectGroupColor

Die Farbe einer Projektgruppe setzen.

ParameterTypeRequiredDescription
keyGuidDie ProjectId.
BodyobjectJSON-Objekt mit der Gruppen-ID und Farbe.

Verknüpfungen

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

Eine Verknüpfung zum Projekt hinzufügen.

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

Eine Verknüpfung vom Projekt entfernen.

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

Benachrichtigungen

POST/odata/Project({key})/AddNotificationFollowers

Benachrichtigungsabonnenten hinzufügen.

ParameterTypeRequiredDescription
keyGuidDie ProjectId.
BodyobjectJSON-Objekt mit den Kontakt-IDs der Abonnenten.
POST/odata/Project({key})/RemoveNotificationFollower

Einen Benachrichtigungsabonnenten entfernen.

ParameterTypeRequiredDescription
keyGuidDie ProjectId.
BodyobjectJSON-Objekt mit der Kontakt-ID.
GET/odata/Project({key})/GetNotificationFollowerContacts()

Alle Kontakte abrufen, die Benachrichtigungen für dieses Projekt abonniert haben.

ParameterTypeRequiredDescription
keyGuidDie ProjectId.

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).

GET/odata/DynamicProject

Abgeflachte Projektliste mit Portfolio- und Berechtigungsdaten abrufen.

GET/odata/DynamicProject/$count

Gesamtanzahl der DynamicProject-Einträge abrufen.

Nur lesender Zugriff

DynamicProject 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",
"ComputedProgress": 0.5
}
Paginierung

Verwenden Sie $top und $skip für die Paginierung großer Ergebnismengen:

GET /odata/Project?$top=50&$skip=100&$orderby=Name