Skip to content

Benutzer abrufen ​

Gibt eine paginierte Liste aller Benutzer zurück.

Request ​

GET /api/oauth/v2/resource/users

HeaderWert
AuthorizationBearer {access_token}

Query-Parameter ​

ParameterTypPflichtBeschreibung
offsetintegerNeinStartposition (Standard: 0)
limitintegerNeinAnzahl Ergebnisse (Standard: 50, Max: 200)
viewstringNeinAntwortformat: default (Vorgabe) oder slim (schlanker Abruf)
createdSincestring (ISO 8601)NeinNur Benutzer, die ab diesem Zeitpunkt angelegt wurden (createdAt >=)
createdUntilstring (ISO 8601)NeinNur Benutzer, die bis zu diesem Zeitpunkt angelegt wurden (createdAt <=)
updatedSincestring (ISO 8601)NeinNur Benutzer, die ab diesem Zeitpunkt geändert wurden (updatedAt >=). Neu angelegte Benutzer kommen mit, weil der Änderungszeitpunkt beim Anlegen gesetzt wird.
updatedUntilstring (ISO 8601)NeinNur Benutzer, die bis zu diesem Zeitpunkt geändert wurden (updatedAt <=)

Erforderlicher Scope: users

Hinweis: Für einen Abgleich genügt updatedSince – der Wert deckt neue und geänderte Benutzer ab.

Hinweis: Formate, Zeitzonen-Verhalten, Sortierung im Filter-Modus, Cursor-Strategie und die meta.total-Falle gelten für alle Zeitstempel-Filter gleich – siehe Inkrementeller Abgleich.

Hinweis zu gelöschten Benutzern: Benutzer führen keinen Löschzeitpunkt. Deshalb gibt es hier kein deletedSince – gelöschte Benutzer sind über die API nicht ermittelbar. Der Endpoint liefert sie weiterhin aus, ohne sie zu kennzeichnen.

Im updatedSince-Feed erscheint eine Löschung wie eine gewöhnliche Änderung. Rechne beim Abgleich über Benutzer also nicht mit einer Löscherkennung.

Hinweis zu Benutzern ohne Änderungszeitpunkt: Bei manchen Benutzern ist updatedAt leer. Das betrifft Altbestand aus der Zeit vor der automatischen Zeitstempelung sowie Massenimporte. updatedSince liefert solche Benutzer nicht – auch nicht mit einem sehr frühen Datum.

Hol dir für den Erstabgleich deshalb einmal den Vollbestand ohne Zeitstempel-Filter. Danach arbeitest du inkrementell mit updatedSince weiter.

Response ​

Erfolg (200 OK) ​

json
{
  "data": [
    {
      "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "title": "Dr.",
      "firstName": "Maria",
      "lastName": "Muster",
      "abbreviation": "MM",
      "sex": 1,
      "email": "maria.muster@example.com",
      "color": "#74AFAD",
      "isDoctor": true,
      "showBookingWeeks": 6,
      "sort": 0,
      "isBookable": true,
      "tenancies": [
        {
          "id": "f0e1d2c3-b4a5-6789-fedc-ba9876543210",
          "name": "Ordination Muster",
          "abbreviation": "OM",
          "color": "#00adba"
        }
      ],
      "createdAt": "2026-01-15T08:00:00+01:00",
      "updatedAt": "2026-06-10T16:20:00+02:00"
    }
  ],
  "meta": {
    "total": 5,
    "offset": 0,
    "limit": 50
  }
}

Response-Felder ​

FeldTypBeschreibung
dataArrayListe der Benutzer
data[].idstring (UUID)Eindeutige Benutzer-ID
data[].titlestring | nullAkademischer Titel (z.B. Dr.)
data[].firstNamestringVorname
data[].lastNamestringNachname
data[].abbreviationstring | nullKürzel des Benutzers
data[].sexinteger | nullGeschlecht (0 = männlich, 1 = weiblich)
data[].emailstring | nullE-Mail-Adresse
data[].colorstringFarbe als Hex-Code (z.B. #74AFAD)
data[].isDoctorbooleanOb der Benutzer ein Arzt ist
data[].showBookingWeeksintegerWie viele Wochen im Voraus buchbar
data[].sortintegerSortierreihenfolge
data[].isBookablebooleanOb der Benutzer buchbar ist
data[].tenanciesArrayZugeordnete Mandanten
data[].tenancies[].idstring (UUID)Mandanten-ID
data[].tenancies[].namestringName des Mandanten
data[].tenancies[].abbreviationstringKürzel
data[].tenancies[].colorstringFarbe als Hex-Code
data[].createdAtstring (ISO 8601) | nullErstellungszeitpunkt
data[].updatedAtstring (ISO 8601) | nullLetzter Änderungszeitpunkt
meta.totalintegerGesamtanzahl der Benutzer
meta.offsetintegerAktuelle Startposition
meta.limitintegerAnzahl der zurückgegebenen Einträge

Hinweis: Die id wird als UUID zurückgegeben und wird für die Abfrage freier Slots und die Terminbuchung benötigt.

Schlanker Abruf (?view=slim) ​

Mit view=slim liefert der Endpoint eine schlanke Payload mit weniger Daten pro Benutzer. Ohne den Parameter bleibt der Abruf unverändert.

Wird view mehrfach angegeben, gilt die letzte Angabe – ?view=default&view=slim liefert also die schlanke Antwort.

Die schlanke Payload enthält:

id, title, firstName, lastName, abbreviation, isDoctor, createdAt, updatedAt

sex, email, color, sort, isBookable, showBookingWeeks und tenancies entfallen.

Hinweis: createdAt und updatedAt liefert derzeit zusätzlich der schlanke Abruf – der Standardabruf führt diese Felder noch nicht.

Beispiel: view=slim

json
{
  "data": [
    {
      "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "title": "Dr.",
      "firstName": "Maria",
      "lastName": "Muster",
      "abbreviation": "MM",
      "isDoctor": true,
      "createdAt": "2026-01-10T08:30:00+01:00",
      "updatedAt": "2026-05-02T11:45:00+02:00"
    }
  ],
  "meta": {
    "total": 5,
    "offset": 0,
    "limit": 50
  }
}
Beispiele
bash
curl -X GET "https://my.offisy.at/api/oauth/v2/resource/users?offset=0&limit=50&view=default&createdSince=beispiel&createdUntil=beispiel&updatedSince=2026-04-15T10%3A00%3A00&updatedUntil=2026-04-15T10%3A00%3A00" \
  -H "Authorization: Bearer {access_token}"
Parameter
Zuerst Token anfordern

Mögliche Fehler ​

StatusCodeBeschreibung
400validation_errorUngültiger Wert für view (gültige Werte: default, slim)
400validation_errorEin Zeitstempel-Filter enthält einen ungültigen Wert
401invalid_clientUngültiger oder fehlender Access Token
403insufficient_scopeScope users nicht vorhanden

Offisy GmbH