Skip to content

Kurs-Details ​

Gibt die Details eines einzelnen Kurses zurück.

Benötigte Lizenz

Dieser Endpoint erfordert die Kurs-Lizenz des Unternehmens.

Request ​

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

HeaderWert
AuthorizationBearer {access_token}

URL-Parameter ​

ParameterTypPflichtBeschreibung
uuidstringJaEindeutige Kurs-ID

Hinweis: Dieser Endpoint erfordert immer die Scopes courses und users. Für die Teilnehmerliste (attendees) ist zusätzlich der Scope customers erforderlich.

Hinweis zu Teilnehmern: Ohne den Scope customers fehlt der Schlüssel attendees in der Antwort vollständig – er ist nicht [] und nicht null. Die Zahl currentAttendees bleibt immer enthalten.

Hinweis: Ein archivierter Kurs liefert 200 OK – archiviert ist die Löschform des Kurses, kein Grund für 404.

Response ​

Erfolg (200 OK) ​

Beispiel: mit Scope customers

json
{
  "data": {
    "id": "c3d4e5f6-a7b8-9012-cdef-012345678901",
    "name": "Yoga Anfänger",
    "type": "course",
    "archived": false,
    "internalNumber": "K-2026-014",
    "description": "Yoga für Einsteiger",
    "information": "Bitte bequeme Kleidung mitbringen",
    "maxAttendees": 20,
    "currentAttendees": 12,
    "color": "#74AFAD",
    "price": "120.00",
    "priceNet": "100.00",
    "vat": "20.00",
    "sort": 0,
    "billStatus": "open",
    "isOnlineBookable": true,
    "directBooking": false,
    "bookingBefore": "P1D",
    "storno": "PT24H",
    "category": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "instructors": ["d4e5f6a7-b8c9-0123-defa-123456789012"],
    "location": "e5f6a7b8-c9d0-1234-efab-234567890123",
    "tenancies": ["9a8b7c6d-5e4f-3210-9876-543210fedcba"],
    "attendees": ["b2c3d4e5-f6a7-8901-bcde-f12345678901"]
  }
}

Beispiel: ohne Scope customers

json
{
  "data": {
    "id": "c3d4e5f6-a7b8-9012-cdef-012345678901",
    "name": "Yoga Anfänger",
    "type": "course",
    "archived": false,
    "internalNumber": "K-2026-014",
    "description": "Yoga für Einsteiger",
    "information": "Bitte bequeme Kleidung mitbringen",
    "maxAttendees": 20,
    "currentAttendees": 12,
    "color": "#74AFAD",
    "price": "120.00",
    "priceNet": "100.00",
    "vat": "20.00",
    "sort": 0,
    "billStatus": "open",
    "isOnlineBookable": true,
    "directBooking": false,
    "bookingBefore": "P1D",
    "storno": "PT24H",
    "category": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "instructors": ["d4e5f6a7-b8c9-0123-defa-123456789012"],
    "location": "e5f6a7b8-c9d0-1234-efab-234567890123",
    "tenancies": ["9a8b7c6d-5e4f-3210-9876-543210fedcba"]
  }
}

Hinweis: Im zweiten Beispiel fehlt der Schlüssel attendees – er ist nicht vorhanden, nicht [] und nicht null. currentAttendees bleibt trotzdem enthalten.

Response-Felder ​

FeldTypBeschreibung
data.idstring (UUID)Eindeutige Kurs-ID
data.namestringKursname
data.typestringKursart (course, course_once, course_service)
data.archivedbooleantrue, wenn der Kurs archiviert ist – die Löschform des Kurses
data.internalNumberstring | nullInterne Kursnummer
data.descriptionstring | nullKursbeschreibung
data.informationstring | nullZusatzinformationen zum Kurs
data.maxAttendeesinteger | nullMaximale Teilnehmeranzahl
data.currentAttendeesintegerAnzahl der aktiven (nicht stornierten) Teilnahmen. attendees enthält zusätzlich stornierte Teilnahmen und kann deshalb länger sein als diese Zahl.
data.colorstringFarbe als Hex-Code. Fällt auf die Kategoriefarbe oder auf #74AFAD zurück, wenn keine eigene Farbe gesetzt ist – nie null.
data.pricestringKurspreis brutto
data.priceNetstringKurspreis netto
data.vatstringUSt-Satz in Prozent für diesen Kurs, sonst die Standard-USt des Unternehmens
data.sortintegerSortierposition
data.billStatusstringAbrechnungsstatus: open, invoiced, ignore, unknown
data.isOnlineBookablebooleantrue, wenn der Kurs online buchbar ist
data.directBookingbooleantrue, wenn eine Online-Buchung ohne Bestätigung sofort gilt
data.bookingBeforestring (ISO 8601 Dauer)Spätester Buchungszeitpunkt vor Kursbeginn, z.B. P1D für einen Tag
data.stornostring (ISO 8601 Dauer)Frist für eine kostenlose Stornierung vor Kursbeginn, z.B. PT24H für 24 Stunden
data.categorystring (UUID) | nullKurskategorie. Nachladen über GET /services/categories/{uuid}
data.instructorsArray (string, UUID)UUIDs der Kursleiter. Nachladen über GET /users/{uuid}
data.locationstring (UUID) | nullKursort
data.tenanciesArray (string, UUID)IDs der Mandanten, für die dieser Kurs verwendbar ist – leer ohne das Add-on Mandanten
data.attendeesArray (string, UUID)UUIDs aller Kursteilnahmen, einschließlich stornierter. Nur enthalten, wenn der Scope customers vorhanden ist – ohne diesen Scope fehlt der Schlüssel vollständig, er ist nicht [] und nicht null. Details je Teilnahme über Kursteilnehmer anzeigen oder gesammelt über Kursteilnehmer abrufen
Beispiele
bash
curl -X GET "https://my.offisy.at/api/oauth/v2/resource/courses/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 courses oder users fehlt
403insufficient_scopeKurs-Lizenz nicht vorhanden
404not_foundKurs nicht gefunden

Offisy GmbH