Skip to content

Termin-Details ​

Gibt die Details eines einzelnen Termins zurück.

Request ​

GET /api/oauth/v2/resource/appointments/{uuid}

HeaderWert
AuthorizationBearer {access_token}

URL-Parameter ​

ParameterTypPflichtBeschreibung
uuidstringJaEindeutige Termin-ID

Response ​

Erfolg (200 OK) ​

Beispiel: Einzeltermin

json
{
  "data": {
    "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "title": "Erstgespräch",
    "start": "2026-03-15T10:00:00+01:00",
    "end": "2026-03-15T11:00:00+01:00",
    "allDay": false,
    "status": "active",
    "type": "customer",
    "course": null,
    "note": "Bitte nüchtern erscheinen",
    "customer": {
      "id": "f0e1d2c3-b4a5-6789-fedc-ba9876543210",
      "firstName": "Anna",
      "lastName": "Muster"
    },
    "service": {
      "id": "c3d4e5f6-a7b8-9012-cdef-012345678901",
      "name": "Erstgespräch"
    },
    "location": {
      "id": "e5f6a7b8-c9d0-1234-efab-234567890123",
      "name": "Studio 1",
      "street": "Hauptstraße 1",
      "zip": "1010",
      "city": "Wien",
      "country": "AT"
    },
    "user": {
      "id": "d4e5f6a7-b8c9-0123-defa-123456789012",
      "firstName": "Max",
      "lastName": "Muster",
      "abbreviation": "MM"
    },
    "source": "oauth",
    "deleted": false,
    "deletedAt": null,
    "stornoReason": null,
    "cancelableUntil": null,
    "createdAt": "2026-03-01T09:00:00+01:00",
    "updatedAt": "2026-03-01T09:00:00+01:00"
  }
}

Beispiel: Kurs-Termin

json
{
  "data": {
    "id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
    "title": "Yoga Anfänger",
    "start": "2026-03-20T09:00:00+01:00",
    "end": "2026-03-20T10:00:00+01:00",
    "allDay": false,
    "status": "active",
    "type": "course",
    "course": "c3d4e5f6-a7b8-9012-cdef-012345678901",
    "note": null,
    "customer": null,
    "service": null,
    "location": {
      "id": "e5f6a7b8-c9d0-1234-efab-234567890123",
      "name": "Studio 1",
      "street": "Hauptstraße 1",
      "zip": "1010",
      "city": "Wien",
      "country": "AT"
    },
    "user": {
      "id": "d4e5f6a7-b8c9-0123-defa-123456789012",
      "firstName": "Max",
      "lastName": "Muster",
      "abbreviation": "MM"
    },
    "source": "oauth",
    "createdAt": "2026-03-01T09:00:00+01:00",
    "updatedAt": "2026-03-01T09:00:00+01:00"
  }
}

Response-Felder ​

FeldTypBeschreibung
data.idstring (UUID)Eindeutige Termin-ID
data.titlestringTitel des Termins
data.startstring (ISO 8601) | nullStartzeit
data.endstring (ISO 8601) | nullEndzeit
data.allDaybooleanGanztägiger Termin
data.statusstringStatus des Termins (active oder request)
data.typestringTermintyp (admin, customer, course, pause, private, vacation, illness, official_holiday, external)
data.coursestring (UUID) | nullKurs-Referenz – nur bei type: "course" befüllt, sonst null. Kursdaten und Teilnehmer lädst du über GET /courses/{uuid} nach
data.notestringInterne Notiz
data.customerobject | nullVerknüpfter Kunde
data.customer.idstring (UUID)Kunden-ID
data.customer.firstNamestringVorname
data.customer.lastNamestringNachname
data.serviceobject | nullVerknüpfte Leistung
data.service.idstring (UUID)Leistungs-ID
data.service.namestringName der Leistung
data.locationobject | nullAusführungsort des Termins
data.location.idstring (UUID)Standort-ID
data.location.namestringStandortname
data.location.streetstring | nullStraße
data.location.zipstring | nullPLZ
data.location.citystring | nullOrt
data.location.countrystring | nullLand
data.userobject | nullDem Termin zugeordnete:r Mitarbeiter:in
data.user.idstring (UUID)Mitarbeiter-ID
data.user.firstNamestringVorname
data.user.lastNamestringNachname
data.user.abbreviationstring | nullKürzel
data.sourcestringQuelle des Termins
data.deletedbooleantrue wenn der Termin storniert ist, sonst false
data.deletedAtstring (ISO 8601) | nullZeitpunkt der Stornierung, null wenn nicht storniert
data.stornoReasonstring | nullStorno-Grund, null wenn nicht storniert oder kein Grund angegeben
data.cancelableUntilstring (ISO 8601) | nullZeitpunkt, bis zu dem der Termin online storniert werden kann, null wenn keine Frist gesetzt ist
data.createdAtstring (ISO 8601) | nullBuchungszeitpunkt des Termins – nicht der Erstellungszeitpunkt des Datensatzes
data.updatedAtstring (ISO 8601) | nullLetzter Änderungszeitpunkt

Hinweis: Die Objekte customer und service enthalten nur eine Kurzform mit den wichtigsten Feldern (siehe Tabelle oben).

Hinweis: Dieser Endpoint erfordert immer die Scopes appointments und users. Handelt es sich beim abgerufenen Termin um einen Kurs-Termin, ist zusätzlich der Scope customers erforderlich. Fehlt dieser Scope, antwortet die API mit 403 insufficient_scope.

Hinweis: Kurse sind auch eigenständig über GET /courses abrufbar und paginierbar, ohne über Termine zu gehen.

Hinweis: Dieser Endpoint liefert auch einen stornierten Termin mit 200 OK (Feld data.deleted = true), nicht mit 404.

Beispiele
bash
curl -X GET "https://my.offisy.at/api/oauth/v2/resource/appointments/b2c3d4e5-f6a7-8901-bcde-f01234567890" \
  -H "Authorization: Bearer {access_token}"
Parameter
Zuerst Token anfordern

Mögliche Fehler ​

StatusCodeBeschreibung
401invalid_clientUngültiger oder fehlender Access Token
403insufficient_scopeScope appointments oder users fehlt (beide immer erforderlich)
403insufficient_scopeTermin ist ein Kurs-Termin und Scope customers fehlt
404not_foundTermin nicht gefunden

Offisy GmbH