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"
    },
    "source": "oauth",
    "deleted": false,
    "deletedAt": null,
    "stornoReason": 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": {
      "id": "c3d4e5f6-a7b8-9012-cdef-012345678901",
      "name": "Yoga Anfänger",
      "maxAttendees": 20,
      "currentAttendees": 12,
      "color": "#ff0000",
      "instructors": [
        { "id": "d4e5f6a7-b8c9-0123-defa-123456789012", "firstName": "Max", "lastName": "Muster" }
      ],
      "location": { "id": "e5f6a7b8-c9d0-1234-efab-234567890123", "name": "Studio 1" },
      "attendees": [
        {
          "customer": { "id": "f0e1d2c3-b4a5-6789-fedc-ba9876543210", "firstName": "Anna", "lastName": "Muster" },
          "bookingDate": "2026-03-01T10:00:00+01:00"
        }
      ]
    },
    "note": null,
    "customer": null,
    "service": null,
    "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.courseobject | nullKurs-Daten – nur bei type: "course" befüllt, sonst null
data.course.idstring (UUID)Kurs-ID
data.course.namestringKursname
data.course.maxAttendeesinteger | nullMaximale Teilnehmeranzahl
data.course.currentAttendeesintegerAktuelle Teilnehmeranzahl
data.course.colorstring | nullFarbe als Hex-Code (z.B. #ff0000)
data.course.instructorsArrayListe der Kursleiter
data.course.instructors[].idstring (UUID)Kursleiter-ID
data.course.instructors[].firstNamestringVorname des Kursleiters
data.course.instructors[].lastNamestringNachname des Kursleiters
data.course.locationobject | nullKursort
data.course.location.idstring (UUID)Ort-ID
data.course.location.namestringOrtsname
data.course.attendeesArrayListe der Kursteilnehmer
data.course.attendees[].customerobjectTeilnehmer-Kurzinfo
data.course.attendees[].customer.idstring (UUID)Kunden-ID
data.course.attendees[].customer.firstNamestringVorname
data.course.attendees[].customer.lastNamestringNachname
data.course.attendees[].bookingDatestring (ISO 8601) | nullBuchungsdatum
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.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.createdAtstring (ISO 8601) | nullErstellungszeitpunkt
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 — da course personenbezogene Kundendaten (attendees.customer) und Mitarbeiterdaten (instructors) enthält. Fehlt dieser Scope, antwortet die API mit 403 insufficient_scope.

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