The Client Portal provides customers access to the content and services provided by an organisation. One service which is needed in the future is a reservation booking service. This would allow customers to book and manage service appointments with staff members of the organisation. The organisation would then need a way to create and manage their bookable services, and match available staff to customers based on mutual availability.
Some of the noteworthy challenges involved
Displaying available booking time slots taking business hours and staff availability into account
Ensuring that a staff member is available before a customer can book an appointment
Limiting / specifying the length of a particular service appointment (for example, an appointment with a social worker regarding a child should last 1 hour by default)
Making sure that appointments are booked or cancelled reasonably far enough in advance
Sending notifications when a booking is created / updated
Sending reminders to customers/staff at certain intervals
Directly integrating with Microsoft’s Booking API via Microsoft’s Graph API requires a Microsoft 365 Business Premium subscription (22 dollars per user/month). For this reason, it makes sense to create our own API for local development and testing.
The top level object in the API. Example properties include
Business name
Contact info
Scheduling policy (see bookingSchedulingPolicy resource)
Related business objects such as
appointments
customers
services
staff members
bookingStaffMember
Represents staff members of the bookingBusiness. Example properties include
List of staff member names
Roles
Email addresses
Whether staff have notifications enabled
Properties to control scheduling based on either the business hours, the personal calendar of the staff member, or a combination of both.
workingHours: The range of hours each day of the week that the staff member is available for booking. By default, they are initialised to be the same as the businessHours property of the business.
useBusinessHours: True means the staff member's availability is as specified in the businessHours property of the business. False means the availability is determined by the staff member's workingHours property setting.
availabilityIsAffectedByPersonalCalendar: API would verify the staff member's availability in their personal calendar in Microsoft 365, before making a booking
etc.
bookingService
Information related to the service being provided by a bookingBusiness. Example properties include
The service name
Location where the service takes place
The staff who provide the service
Default duration of the service
Scheduling policy (see bookingSchedulingPolicy resource)
Notes
postBuffer: The time to buffer after an appointment for this service ends, and before the next customer appointment can be booked
preBuffer: The time to buffer before an appointment for this service can start
etc.
bookingAppointment
Represents a customer appointment for a bookingService performed by a set of staff members. Example properties include
Represent the customers for this appointment
Reminders a customer specified for this appointment
The amount of time to reserve before and after the appointment
Notes from the booking staff member
Start dateTime
etc.
bookingCustomer
Represents a customer of the bookingBusiness. Example properties include
Customer address
Customer name
Email
Phone number
bookingSchedulingPolicy
Provide the ability to select staff members for a booking, and provide properties for managing booking time durations and lead times. Example properties include
maximumAdvance: Maximum number of days in advance that a booking can be made.
minimumLeadTime: The minimum amount of time before which bookings and cancellations must be made.
timeSlotInterval: Duration of each time slot
sendConfirmationsToOwner: Send notifications to business email when a booking is made
Etc.
bookingCustomQuestion
Properties to represent questions to ask a customer when making a reservation. Example properties include
Question value
Answer values
Answer input types (text, radio button, select, etc.)
bookingReminder
Represents when and whom to send an email reminder. Example properties include
Specify the offset (how often to send reminders)
Message value
Message recipients
Create a new booking
Confirmation of booking + Viewing all of my bookings
myCalendar API
Based on https://learn.microsoft.com/en-us/graph/api/resources/booking-api-overview?view=graph-rest-1.0
The Client Portal provides customers access to the content and services provided by an organisation. One service which is needed in the future is a reservation booking service. This would allow customers to book and manage service appointments with staff members of the organisation. The organisation would then need a way to create and manage their bookable services, and match available staff to customers based on mutual availability.
Some of the noteworthy challenges involved
Directly integrating with Microsoft’s Booking API via Microsoft’s Graph API requires a Microsoft 365 Business Premium subscription (22 dollars per user/month). For this reason, it makes sense to create our own API for local development and testing.
https://www.microsoft.com/en-us/microsoft-365/business/compare-all-microsoft-365-business-products
—————————————
The myCalendar API includes the following resources:
Main resources
bookingBusiness bookingStaffMember bookingService bookingAppointment bookingCustomer bookingSchedulingPolicy bookingCustomQuestion bookingReminder
bookingBusiness
The top level object in the API. Example properties include
Related business objects such as
bookingStaffMember
Represents staff members of the bookingBusiness. Example properties include
bookingService
Information related to the service being provided by a bookingBusiness. Example properties include
bookingAppointment
Represents a customer appointment for a bookingService performed by a set of staff members. Example properties include
bookingCustomer
Represents a customer of the bookingBusiness. Example properties include
bookingSchedulingPolicy
Provide the ability to select staff members for a booking, and provide properties for managing booking time durations and lead times. Example properties include
bookingCustomQuestion
Properties to represent questions to ask a customer when making a reservation. Example properties include
bookingReminder
Represents when and whom to send an email reminder. Example properties include
Create a new booking
Confirmation of booking + Viewing all of my bookings