Skip to content

Appointment Details

Returns the details of a single appointment.

Request

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

HeaderValue
AuthorizationBearer {access_token}

URL parameters

ParameterTypeRequiredDescription
uuidstringYesUnique appointment ID

Response

Success (200 OK)

Example: Single appointment

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"
  }
}

Example: Course appointment

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 fields

FieldTypeDescription
data.idstring (UUID)Unique appointment ID
data.titlestringTitle of the appointment
data.startstring (ISO 8601) | nullStart time
data.endstring (ISO 8601) | nullEnd time
data.allDaybooleanAll-day appointment
data.statusstringStatus of the appointment (active or request)
data.typestringAppointment type (admin, customer, course, pause, private, vacation, illness, official_holiday, external)
data.courseobject | nullCourse data — only populated when type: "course", otherwise null
data.course.idstring (UUID)Course ID
data.course.namestringCourse name
data.course.maxAttendeesinteger | nullMaximum number of attendees
data.course.currentAttendeesintegerCurrent number of attendees
data.course.colorstring | nullColor as hex code (e.g. #ff0000)
data.course.instructorsArrayList of instructors
data.course.instructors[].idstring (UUID)Instructor ID
data.course.instructors[].firstNamestringFirst name of the instructor
data.course.instructors[].lastNamestringLast name of the instructor
data.course.locationobject | nullCourse location
data.course.location.idstring (UUID)Location ID
data.course.location.namestringLocation name
data.course.attendeesArrayList of course attendees
data.course.attendees[].customerobjectAttendee summary
data.course.attendees[].customer.idstring (UUID)Customer ID
data.course.attendees[].customer.firstNamestringFirst name
data.course.attendees[].customer.lastNamestringLast name
data.course.attendees[].bookingDatestring (ISO 8601) | nullBooking date
data.notestringInternal note
data.customerobject | nullLinked customer
data.customer.idstring (UUID)Customer ID
data.customer.firstNamestringFirst name
data.customer.lastNamestringLast name
data.serviceobject | nullLinked service
data.service.idstring (UUID)Service ID
data.service.namestringName of the service
data.sourcestringSource of the appointment
data.deletedbooleantrue if the appointment is cancelled, otherwise false
data.deletedAtstring (ISO 8601) | nullTime of cancellation, null if not cancelled
data.stornoReasonstring | nullCancellation reason, null if not cancelled or no reason given
data.createdAtstring (ISO 8601) | nullCreation time
data.updatedAtstring (ISO 8601) | nullLast modification time

Note: The customer and service objects contain only a summary with the most important fields (see table above).

Note: This endpoint always requires both scopes appointments and users. If the retrieved appointment is a course appointment, the scope customers is additionally required — because course contains personal customer data (attendees.customer) and user data (instructors). If this scope is missing, the API responds with 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

Possible errors

StatusCodeDescription
401invalid_clientInvalid or missing access token
403insufficient_scopeScope appointments or users missing (both always required)
403insufficient_scopeAppointment is a course appointment and scope customers is missing
404not_foundAppointment not found

Offisy GmbH