Zum Hauptinhalt springen

Kontakte & Benutzer

In InLoox werden Benutzer, Kontakte, Abteilungen und Fähigkeiten über verschiedene Endpunkte verwaltet. Diese Seite beschreibt alle relevanten Entitäten und deren API-Zugriffsmöglichkeiten.

info

Für den Zugriff auf benutzerdefinierte Felder eines Kontakts verwenden Sie den DynamicContact-Endpunkt. Dieser liefert neben den Standardeigenschaften auch alle konfigurierten benutzerdefinierten Felder zurück.


UserInfo

Die UserInfo-Entität repräsentiert den aktuell authentifizierten Benutzer oder andere Benutzer im System. Über diese Endpunkte können Sie Profilinformationen abrufen, Benachrichtigungsfrequenzen festlegen und Zeitzonen konfigurieren.

Eigenschaften

PropertyTypeDescription
ContactIdEdm.GuidEindeutige ID des Kontakts.
FirstNameEdm.StringVorname des Benutzers.
LastNameEdm.StringNachname des Benutzers.
DisplayNameEdm.StringAnzeigename des Benutzers.
EmailEdm.StringE-Mail-Adresse des Benutzers.
ImageIdEdm.StringID des Profilbilds.
NotifyFrequencyEdm.Int32Benachrichtigungsfrequenz (ganzzahliger Wert).
TimeZoneInfoEdm.StringZeitzoneninformation des Benutzers.
EmailConfirmedEdm.BooleanGibt an, ob die E-Mail-Adresse bestätigt wurde.
IsReaderEdm.BooleanGibt an, ob der Benutzer eine Nur-Lesen-Lizenz besitzt.
UILanguageEdm.StringSprache der Benutzeroberfläche.

Endpunkte

GET/odata/UserInfo

Alle Benutzerinformationen abrufen

Gibt eine Sammlung aller Benutzer zurück, auf die Sie Zugriff haben. Unterstützt OData-Abfrageoptionen wie $filter, $select, $orderby, $top und $skip.

GET /odata/UserInfo?$select=ContactId,DisplayName,Email&$top=50

GET/odata/UserInfo/$count

Anzahl der Benutzer abrufen

Gibt eine Ganzzahl zurück. Unterstützt $filter für bedingte Zählung.


GET/odata/UserInfo/Me()

Informationen des aktuellen Benutzers abrufen

Gibt die Profilinformationen des aktuell authentifizierten Benutzers zurück. Dieser Endpunkt erfordert keine zusätzlichen Parameter.

Beispiel: Aktuellen Benutzer abfragen
GET /odata/UserInfo/Me()

Antwort:

{
"ContactId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"FirstName": "Max",
"LastName": "Mustermann",
"DisplayName": "Max Mustermann",
"Email": "max.mustermann@beispiel.de",
"IsReader": false,
"UILanguage": "de-DE"
}

GET/odata/UserInfo/SetNotificationFrequency(frequency={frequency})

Benachrichtigungsfrequenz festlegen

ParameterTypeRequiredDescription
frequencyEdm.Int32Die gewünschte Benachrichtigungsfrequenz als ganzzahliger Wert.
GET /odata/UserInfo/SetNotificationFrequency(frequency=2)

GET/odata/UserInfo/TelemetryEnabledForCurrentUser()

Telemetriestatus des aktuellen Benutzers prüfen

Gibt zurück, ob Telemetriedaten für den aktuellen Benutzer aktiviert sind.


POST/odata/UserInfo({key})/SetTimeZoneInfo

Zeitzoneninformation festlegen

ParameterTypeRequiredDescription
keyEdm.GuidDie ContactId des Benutzers.
{
"TimeZoneInfo": "W. Europe Standard Time"
}

GET/odata/UserInfo/MatchTimeZoneInfo()

Passende Zeitzoneninformation ermitteln

Ermittelt automatisch die passende Zeitzone basierend auf den aktuellen Einstellungen.


DynamicContact

Der DynamicContact-Endpunkt stellt eine erweiterte Ansicht auf Kontakte bereit, die neben den Standardeigenschaften auch benutzerdefinierte Felder, Fähigkeiten und Abteilungszugehörigkeiten enthält.

Eigenschaften

PropertyTypeDescription
ContactIdEdm.GuidEindeutige ID des Kontakts.
NameEdm.StringVollständiger Name.
EntryIdEdm.StringExterne Eintrags-ID (z. B. aus Exchange).
AddressEdm.StringVollständige Adresse.
SidEdm.StringSecurity Identifier.
TypeEdm.StringKontakttyp.
TitleEdm.StringAnrede oder akademischer Titel.
FirstNameEdm.StringVorname.
LastNameEdm.StringNachname.
CompanyNameEdm.StringFirmenname.
StreetEdm.StringStraße.
ZipEdm.StringPostleitzahl.
LocationEdm.StringOrt.
CountryEdm.StringLand.
DisplayNameEdm.StringAnzeigename.
SupervisorEdm.StringVorgesetzter.
PositionEdm.StringStellenbezeichnung.
WebsiteEdm.StringWebseite.
InitialsEdm.StringInitialen.
DepartmentEdm.StringAbteilung.
AssistenzEdm.StringAssistenz.
PhoneEdm.StringTelefonnummer (primär).
Phone2Edm.StringTelefonnummer (sekundär).
FaxEdm.StringFaxnummer.
MobileEdm.StringMobilnummer.
PagerEdm.StringPagernummer.
EmailEdm.StringE-Mail-Adresse.
BirthdayEdm.DateTimeOffset?Geburtsdatum.
AddressBookIdEdm.Guid?ID des zugeordneten Adressbuchs.
CreatedByContactIdEdm.Guid?ID des erstellenden Kontakts.
ChangedByContactIdEdm.Guid?ID des zuletzt ändernden Kontakts.
CreatedDateEdm.DateTimeOffset?Erstellungsdatum.
ChangedDateEdm.DateTimeOffset?Änderungsdatum.
OriginalSidEdm.StringUrsprünglicher Security Identifier.
DescriptionIdEdm.Guid?ID der verknüpften Beschreibung.
NotifyFrequencyEdm.Int32?Benachrichtigungsfrequenz.
StateEdm.StringBundesland/Region.
UILanguageEdm.StringSprache der Benutzeroberfläche.
IsRecycledEdm.BooleanOb der Kontakt gelöscht (recycelt) wurde.
SkillsEdm.StringKommagetrennte Liste der Fähigkeiten.
DivisionsEdm.StringKommagetrennte Liste der Abteilungen.
IsIdentityEdm.BooleanOb ein Anmeldekonto existiert.
DescriptionTextEdm.StringBeschreibung als Klartext.
DescriptionHTMLEdm.StringBeschreibung als HTML.
AzureAdObjectIdEdm.StringAzure AD Objekt-ID.
LicenseTypeEdm.Int32Lizenztyp des Benutzers.
TimeZoneInfoEdm.StringZeitzoneninformation.
EmailConfirmedEdm.BooleanOb die E-Mail-Adresse bestätigt ist.
InvitationAcceptedEdm.BooleanOb die Einladung angenommen wurde.
CalendarIdEdm.GuidID des zugewiesenen Kalenders.
CapacityEdm.Int32Kapazität des Kontakts (in Prozent).
ProjectRequestCreateEdm.BooleanBerechtigung zum Erstellen von Projektanfragen.
ProjectRequestReleaseEdm.BooleanBerechtigung zum Freigeben von Projektanfragen.
CustomPropertiesobjectBenutzerdefinierte Felder als dynamisches Objekt.

Endpunkte

GET/odata/DynamicContact

Alle Kontakte mit benutzerdefinierten Feldern abrufen

Gibt eine vollständige Liste aller Kontakte einschließlich benutzerdefinierter Felder zurück. Unterstützt alle Standard-OData-Abfrageoptionen.

Beispiel: Kontakte mit Fähigkeiten auflisten
GET /odata/DynamicContact?$select=ContactId,DisplayName,Email,Skills,Divisions&$filter=IsRecycled eq false&$top=100

GET/odata/DynamicContact/$count

Anzahl der Kontakte abrufen

Gibt eine Ganzzahl zurück. Unterstützt $filter für bedingte Zählung.

GET /odata/DynamicContact/$count?$filter=IsIdentity eq true

Division

Die Division-Entität (Abteilung) ermöglicht die hierarchische Organisationsstruktur in InLoox. Abteilungen können verschachtelt werden und Kontakte zugewiesen bekommen.

Eigenschaften

PropertyTypeDescription
DivisionIdEdm.GuidEindeutige ID der Abteilung.
ParentDivisionIdEdm.Guid?ID der übergeordneten Abteilung (null für Stammebene).
DisplayNameEdm.StringAnzeigename der Abteilung.
PositionNumberEdm.Int32Sortierposition.
DescriptionEdm.StringBeschreibung der Abteilung.

Endpunkte

CRUD-Operationen

GET/odata/Division

Alle Abteilungen abrufen

Unterstützt OData-Abfrageoptionen wie $filter, $select, $orderby, $top und $skip.

GET /odata/Division?$orderby=DisplayName

GET/odata/Division({key})

Eine Abteilung nach ID abrufen

ParameterTypeRequiredDescription
keyEdm.GuidDie DivisionId der abzurufenden Abteilung.

POST/odata/Division

Eine neue Abteilung erstellen

{
"DisplayName": "Entwicklung",
"Description": "Software-Entwicklungsabteilung",
"PositionNumber": 1
}
tipp

Lassen Sie DivisionId weg, damit der Server automatisch eine neue ID generiert. Setzen Sie ParentDivisionId, um eine Unterabteilung zu erstellen.


PATCH/odata/Division({key})

Eine bestehende Abteilung aktualisieren

ParameterTypeRequiredDescription
keyEdm.GuidDie DivisionId der zu aktualisierenden Abteilung.

Senden Sie nur die Eigenschaften, die Sie ändern möchten:

{
"DisplayName": "Softwareentwicklung"
}

DELETE/odata/Division({key})

Eine Abteilung löschen

ParameterTypeRequiredDescription
keyEdm.GuidDie DivisionId der zu löschenden Abteilung.

Gibt 204 No Content bei Erfolg zurück.

warnung

Das Löschen einer Abteilung entfernt auch alle Kontaktzuordnungen dieser Abteilung.


GET/odata/Division/$count

Anzahl der Abteilungen abrufen

Gibt eine Ganzzahl zurück.


Kontaktverwaltung

GET/odata/Division/GetContacts()

Alle Kontakte mit Abteilungszuordnung abrufen

Gibt alle DivisionContactRelation-Einträge zurück.


POST/odata/Division({key})/AddContact

Einen Kontakt einer Abteilung zuweisen

ParameterTypeRequiredDescription
keyEdm.GuidDie DivisionId.
{
"ContactId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}

POST/odata/Division({key})/RemoveContact

Einen Kontakt aus einer Abteilung entfernen

ParameterTypeRequiredDescription
keyEdm.GuidDie DivisionId.
{
"ContactId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}

DivisionContactRelation

Die DivisionContactRelation-Entität bildet die Zuordnung zwischen Abteilungen und Kontakten ab. Jede Zuordnung verknüpft genau einen Kontakt mit einer Abteilung.

Eigenschaften

PropertyTypeDescription
DivisionContactRelationIdEdm.GuidEindeutige ID der Zuordnung.
DivisionIdEdm.GuidID der Abteilung.
ContactIdEdm.GuidID des Kontakts.

Endpunkte

GET/odata/DivisionContactRelation

Alle Abteilungs-Kontakt-Zuordnungen abrufen

Unterstützt OData-Abfrageoptionen. Filtern Sie nach Abteilung oder Kontakt:

GET /odata/DivisionContactRelation?$filter=DivisionId eq 3fa85f64-5717-4562-b3fc-2c963f66afa6

GET/odata/DivisionContactRelation({key})

Eine einzelne Zuordnung nach ID abrufen

ParameterTypeRequiredDescription
keyEdm.GuidDie DivisionContactRelationId.

GET/odata/DivisionContactRelation/$count

Anzahl der Zuordnungen abrufen

Gibt eine Ganzzahl zurück.


Skill

Die Skill-Entität verwaltet Fähigkeiten (Kompetenzen), die Kontakten zugewiesen werden können. Dies ermöglicht die kompetenzbasierte Ressourcenplanung.

Eigenschaften

PropertyTypeDescription
SkillIdEdm.GuidEindeutige ID der Fähigkeit.
NameEdm.StringName der Fähigkeit.
DescriptionEdm.StringBeschreibung der Fähigkeit.

Endpunkte

CRUD-Operationen

GET/odata/Skill

Alle Fähigkeiten abrufen

Unterstützt OData-Abfrageoptionen.

GET /odata/Skill?$orderby=Name

GET/odata/Skill({key})

Eine Fähigkeit nach ID abrufen

ParameterTypeRequiredDescription
keyEdm.GuidDie SkillId.

POST/odata/Skill

Eine neue Fähigkeit erstellen

{
"Name": "Projektmanagement",
"Description": "Erfahrung in der Leitung komplexer Projekte"
}

PATCH/odata/Skill({key})

Eine bestehende Fähigkeit aktualisieren

ParameterTypeRequiredDescription
keyEdm.GuidDie SkillId der zu aktualisierenden Fähigkeit.
{
"Description": "Zertifizierte Projektmanagement-Kompetenz (PMP/PRINCE2)"
}

DELETE/odata/Skill({key})

Eine Fähigkeit löschen

ParameterTypeRequiredDescription
keyEdm.GuidDie SkillId der zu löschenden Fähigkeit.

Gibt 204 No Content bei Erfolg zurück.


GET/odata/Skill/$count

Anzahl der Fähigkeiten abrufen

Gibt eine Ganzzahl zurück.


Kontaktzuordnungen

GET/odata/Skill/GetContacts()

Alle Kontakte mit Fähigkeitszuordnungen abrufen

Gibt alle Kontakt-Fähigkeits-Zuordnungen zurück.


GET/odata/Skill({key})/GetSkillContacts()

Kontakte einer bestimmten Fähigkeit abrufen

ParameterTypeRequiredDescription
keyEdm.GuidDie SkillId.

POST/odata/Skill({key})/AddContact

Einen Kontakt einer Fähigkeit zuweisen

ParameterTypeRequiredDescription
keyEdm.GuidDie SkillId.
{
"ContactId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}

POST/odata/Skill({key})/RemoveContact

Einen Kontakt von einer Fähigkeit entfernen

ParameterTypeRequiredDescription
keyEdm.GuidDie SkillId.
{
"ContactId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}

OData-Abfragebeispiele

Aktuellen Benutzer abrufen

Ruft das Profil des authentifizierten Benutzers über die Me()-Funktion ab:

curl -X GET "https://{tenant}.inloox.app/odata/UserInfo/Me()" \
-H "Authorization: Bearer {token}" \
-H "Accept: application/json"

Antwort:

{
"@odata.context": "https://{tenant}.inloox.app/odata/$metadata#UserInfo/$entity",
"ContactId": "c3a1f2d4-5e6b-7c8d-9a0b-1c2d3e4f5a6b",
"FirstName": "Jana",
"LastName": "Muster",
"DisplayName": "Jana Muster",
"Email": "jana.muster@example.com",
"ImageId": null,
"NotifyFrequency": 1,
"TimeZoneInfo": "Europe/Berlin",
"EmailConfirmed": true,
"IsReader": false,
"UILanguage": "de"
}

Kontakte mit Filter abrufen

DynamicContact mit $select und $filter abfragen, um spezifische Felder für Kontakte abzurufen, die einer Bedingung entsprechen:

curl -X GET "https://{tenant}.inloox.app/odata/DynamicContact?\$select=FirstName,LastName,Email&\$filter=LastName eq 'Muster'" \
-H "Authorization: Bearer {token}" \
-H "Accept: application/json"

Antwort:

{
"@odata.context": "https://{tenant}.inloox.app/odata/$metadata#DynamicContact",
"value": [
{
"FirstName": "Jana",
"LastName": "Muster",
"Email": "jana.muster@example.com"
},
{
"FirstName": "Jan",
"LastName": "Muster",
"Email": "jan.muster@example.com"
}
]
}
tipp

Verwenden Sie $select, um die Antwortgröße zu reduzieren – insbesondere bei DynamicContact, wo benutzerdefinierte Felder die Antwort erheblich vergrößern können.