Documentation Help

Customer Meeting Booking in Public API

This guide explains how to book a meeting through the Public API, allowing customers to search for available time slots, reserve a slot, and create a meeting.

bookme_customer_meeting_sequence_diagram.png

Link to Postman-collection: &money Public API

1. Fetching Configuration Details

Before customers can book a meeting, you need to retrieve relevant configuration details:

Fetch Meeting Themes

GET /bookme/meeting-topics

Parameters:

  • customerCategoryId - Optional filter for customer category ID

  • isCustomer - Flag indicating if the request is for a customer (required)

Response: Returns a list of available meeting topics.

Fetch Customer Types

GET /config/customer-types

Response: Returns available customer types.

Fetch Employees

GET /config/employees

Response: Returns a list of employees who can be booked.

Fetch Rooms

GET /config/rooms

Response: Returns available rooms for meetings.

2. Fetching Available Time Slots

Once the customer has selected a theme, category, employee, and room, retrieve the available time slots:

GET /bookme/time-slots/available

Key Query Parameters:

  • explicitEmployeeIds - Optional filter for specific employees

  • startDate - Optional filter for specific start date/time

  • theme - Optional filter for specific meeting theme

  • customerCategoryId - Optional filter by customer category

  • meetingTypes - Optional filter for meeting types (physical, online, etc.)

  • requireRoom - Optional filter to require a room

  • specificRooms - Optional filter for specific room IDs

  • meetingDuration - Optional filter for meeting duration

  • requireEmployeeParticipation - Whether employee participation is required (required)

Response: Returns a list of available time slots based on the search filters.

3. Reserving a Time Slot

After choosing an available time slot, the customer must reserve it:

POST /bookme/time-slots/reserve Content-Type: application/json Authorization: Bearer <access_token>

Request Body:

{ "timeSlot": { "startDate": "2025-03-15T10:00:00Z", "endDate": "2025-03-15T11:00:00Z", "status": "Reserved", "employeeId": "67890" }, "token": "reservation-token" }

Response: Confirms the reservation of the selected time slot.

4. Creating a Meeting

Once the time slot is reserved, finalize the meeting by creating a meeting record:

POST /bookme/meetings Content-Type: application/json Authorization: Bearer <access_token>

Request Body:

{ "bookedBy": "customer", "customerCategoryId": "123", "timeSlotId": "12345", "type": "physical", "themeId": "111", "roomId": "222", "employeeId": "333", "customerId": "67890", "description": "Meeting description" }

Response: Returns confirmation of the created meeting.

Downloading an ICS File

To download the meeting details in iCal format, use the following endpoint:

POST /bookme/meetings/{meetingId}/ical Accept: text/calendar Authorization: Bearer <access_token>

Request Body: All properties are optional in the request body. If a property is not provided, the default value will be used.

{ "title": "Meeting title", "description": "Meeting description" }

Response: Returns the meeting details in iCal format.

Security and Authentication

  • All API requests require OAuth2 authentication

  • Include a valid Bearer token in the Authorization header

Error Handling

Status Code

Description

401 Unauthorized

Missing or invalid authentication token

403 Forbidden

Access is forbidden

404 Not Found

Invalid resource (theme, employee, room, etc.)

409 Conflict

Resource conflict (e.g., time slot already booked)

500 Internal Server Error

Server-side error

Last modified: 16 October 2025