Termin-Details
Gibt die Details eines einzelnen Termins zurück.
Request
GET /api/oauth/v2/resource/appointments/{uuid}
Header
| Header | Wert |
|---|---|
Authorization | Bearer {access_token} |
URL-Parameter
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
uuid | string | Ja | Eindeutige 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
| Feld | Typ | Beschreibung |
|---|---|---|
data.id | string (UUID) | Eindeutige Termin-ID |
data.title | string | Titel des Termins |
data.start | string (ISO 8601) | null | Startzeit |
data.end | string (ISO 8601) | null | Endzeit |
data.allDay | boolean | Ganztägiger Termin |
data.status | string | Status des Termins (active oder request) |
data.type | string | Termintyp (admin, customer, course, pause, private, vacation, illness, official_holiday, external) |
data.course | object | null | Kurs-Daten – nur bei type: "course" befüllt, sonst null |
data.course.id | string (UUID) | Kurs-ID |
data.course.name | string | Kursname |
data.course.maxAttendees | integer | null | Maximale Teilnehmeranzahl |
data.course.currentAttendees | integer | Aktuelle Teilnehmeranzahl |
data.course.color | string | null | Farbe als Hex-Code (z.B. #ff0000) |
data.course.instructors | Array | Liste der Kursleiter |
data.course.instructors[].id | string (UUID) | Kursleiter-ID |
data.course.instructors[].firstName | string | Vorname des Kursleiters |
data.course.instructors[].lastName | string | Nachname des Kursleiters |
data.course.location | object | null | Kursort |
data.course.location.id | string (UUID) | Ort-ID |
data.course.location.name | string | Ortsname |
data.course.attendees | Array | Liste der Kursteilnehmer |
data.course.attendees[].customer | object | Teilnehmer-Kurzinfo |
data.course.attendees[].customer.id | string (UUID) | Kunden-ID |
data.course.attendees[].customer.firstName | string | Vorname |
data.course.attendees[].customer.lastName | string | Nachname |
data.course.attendees[].bookingDate | string (ISO 8601) | null | Buchungsdatum |
data.note | string | Interne Notiz |
data.customer | object | null | Verknüpfter Kunde |
data.customer.id | string (UUID) | Kunden-ID |
data.customer.firstName | string | Vorname |
data.customer.lastName | string | Nachname |
data.service | object | null | Verknüpfte Leistung |
data.service.id | string (UUID) | Leistungs-ID |
data.service.name | string | Name der Leistung |
data.source | string | Quelle des Termins |
data.deleted | boolean | true wenn der Termin storniert ist, sonst false |
data.deletedAt | string (ISO 8601) | null | Zeitpunkt der Stornierung, null wenn nicht storniert |
data.stornoReason | string | null | Storno-Grund, null wenn nicht storniert oder kein Grund angegeben |
data.createdAt | string (ISO 8601) | null | Erstellungszeitpunkt |
data.updatedAt | string (ISO 8601) | null | Letzter Änderungszeitpunkt |
Hinweis: Die Objekte
customerundserviceenthalten nur eine Kurzform mit den wichtigsten Feldern (siehe Tabelle oben).
Hinweis: Dieser Endpoint erfordert immer die Scopes
appointmentsundusers. Handelt es sich beim abgerufenen Termin um einen Kurs-Termin, ist zusätzlich der Scopecustomerserforderlich — dacoursepersonenbezogene Kundendaten (attendees.customer) und Mitarbeiterdaten (instructors) enthält. Fehlt dieser Scope, antwortet die API mit403 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
| Status | Code | Beschreibung |
|---|---|---|
| 401 | invalid_client | Ungültiger oder fehlender Access Token |
| 403 | insufficient_scope | Scope appointments oder users fehlt (beide immer erforderlich) |
| 403 | insufficient_scope | Termin ist ein Kurs-Termin und Scope customers fehlt |
| 404 | not_found | Termin nicht gefunden |