Reservation

Entity handling desk (seat) bookings

Reservation model

Property
idReservation ID
seat_idID of the desk (seat) reservation is made on
reserver_idID of the user who created the reservation
typeType of the reservation, further explanation in the Reservation Types table below
startObject defining when the reservation starts
endObject defining when the reservation ends, can be null (for assigned/ shared reservations)
recurrenceRRULE defining a recurring reservation (e.g. multi-day hoteled, reverse_hoteledreservations, or ~~assigned~~/ shared reservation recurrences)
reserveeObject describing the person owning the reservation
confirmationIndicates if there's a check-in on the reservation

Reservation Types

There are five types of desk reservations available in Robin:

Reservation TypeDescription
hoteledOne-off or multi-day booking reservations, can be made on ["hoteled"]or ["hoteled","shared"]desks (on empty days)
hotReservations that can be made only on the day of the reservation
assignedReservations that indicate the desk is assigned to a single user, all day, every day. Can be made on ["assigned"]desks

NOTE: Assigned desks and reservations are deprecated in favor of Shared Assigned Desks. If "assigned desk", "assigned reservation" or "assignee" language is used, those are always meant to be Shared Assigned Desk, shared reservation and assignee on a Shared Assigned Desk.
sharedReservations that indicate the desk is assigned to a particular user on particular days of the week, using WEEKLY RRULE recurrence.

The valid RRULE format is:"RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYHOUR=0;BYMINUTE=0;BYSECOND=0"
with BYDAY parameter indicating the exact days of the assignment.

Can be made on ["assigned","shared"] or ["hoteled","shared"]desks.
reverse_hoteledHoteled reservations that can be made on top of exclusions.

Exclusions

Exclusions are a mechanism used for assigned desk users to be able to share their desks on certain days. When an assignee knows they're not coming to the office on particular days, they can use the Share Desk option to mark the desk as available for others to reserve.

When a user has an assigned desk (either using the ~~assigned~~ or shared reservation type), based on the RRULE of their ~~assigned~~/shared reservation, the reservation gets expanded into individual instances, midnight to midnight for each day in the RRULE:

Typical assigned reservation instances for a desk with a single assignee, every day of the week

Typical assigned reservation instances for a desk with a single assignee, every day of the week

If the assignee decides not to come to the office and wants to share their desk for others to use, using the Share Desk option within Robin, they can mark which days the desk is available on, creating an exclusion on days 3-6:

User is not coming in on days 3-6

User is not coming in on days 3-6

ℹ️

Notice that the exclusion did not cancel or remove ~~assigned~~/shared instances of original user's reservation. The exclusion part of the reservation is what marks the desk as available for booking.

Other users now see the desk as available for booking and can make reverse_hoteled reservations on top of the exclusion:

Another user has now booked the desk within the exclusion period

Another user has now booked the desk within the exclusion period

reverse_hoteled reservations have to be fully encapsulated by the exclusion:

The last `reverse_hoteled` reservation cannot be made, it's not within the bounds of the exclusion

The last reverse_hoteled reservation cannot be made, it's not within the bounds of the exclusion