Booking offerings
Presets over org calendar policy for guest pages and internal slot discovery, plus per-audience calendar visibility settings.
7 endpoints · base URL https://api.aerscheduler.com
/booking-offeringsList booking offerings
Owners and admins list presets used for guest pages and internal slot discovery.
Query parameters
limit | integer | Rows to return, 1,1000. Defaults to 1000; a larger value is clamped rather than rejected. |
offset | integer | Rows to skip, for paging. Defaults to 0. |
sort | string | Field to order by before paging, as a dot path into the row , total, user.firstName. Omit to keep the endpoint's own order. Numbers and ISO timestamps order as numbers and instants, not as text, and empty values always sort last regardless of direction. Ordering happens before the page is cut, so it orders the whole collection rather than the page you are holding. |
order | "asc" | "desc" | asc (default) or desc. Only meaningful with sort. |
Responses
200 | OK | The booking offerings.→ { data: BookingOffering[] } |
401 | Unauthorized | No token, an expired token, or a malformed one. Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl https://api.aerscheduler.com/booking-offerings \
-H "Authorization: Bearer $AERSCHEDULER_KEY"/booking-offeringsCreate a booking offering
Defines a bookable preset over org calendar policy. Offerings may only tighten org policy.
Request body
The offering to create.
slugrequired | string | |
namerequired | string | |
reservationTyperequired | string | |
assignmentMode | string | |
active | boolean | |
description | string | |
locationId | integer | |
resourceIds | integer[] | |
instructorOrgUserIds | integer[] | |
minimumNoticeMinutes | integer | |
bookingHorizonDays | integer | |
fixedReservationMinutes | integer | |
allowResourceChoice | boolean |
Responses
201 | Created | Success.→ { data: BookingOffering } |
401 | Unauthorized | No token, an expired token, or a malformed one. Sign in again. |
403 | Forbidden | Only owners and admins may manage offerings. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl -X POST https://api.aerscheduler.com/booking-offerings \
-H "Authorization: Bearer $AERSCHEDULER_KEY" \
-H "Content-Type: application/json" \
-d '{"slug":"…","name":"…","reservationType":"…"}'/booking-offerings/{id}Get a booking offering
Returns one offering with eligible resources and instructors.
Path parameters
idrequired | integer | The booking offering id. |
Responses
200 | OK | Success.→ { data: BookingOffering } |
401 | Unauthorized | No token, an expired token, or a malformed one. Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
404 | Not Found | Booking offering not found. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl https://api.aerscheduler.com/booking-offerings/:id \
-H "Authorization: Bearer $AERSCHEDULER_KEY"/booking-offerings/{id}Update a booking offering
Owners and admins change offering settings or eligible resources.
Path parameters
idrequired | integer | The booking offering id. |
Request body
Fields to change.
active | boolean | |
slug | string | |
name | string | |
description | string | |
reservationType | string | |
assignmentMode | string | |
locationId | integer | |
resourceIds | integer[] | |
instructorOrgUserIds | integer[] | |
minimumNoticeMinutes | integer | |
bookingHorizonDays | integer | |
fixedReservationMinutes | integer | |
bufferBeforeMinutes | integer | |
bufferAfterMinutes | integer | |
maxReservationMinutes | integer | |
allowResourceChoice | boolean | |
allowInstructorChoice | boolean | |
allowLocationChoice | boolean | |
questions | object |
Responses
200 | OK | Success.→ { data: BookingOffering } |
401 | Unauthorized | No token, an expired token, or a malformed one. Sign in again. |
403 | Forbidden | Only owners and admins may manage offerings. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl -X PATCH https://api.aerscheduler.com/booking-offerings/:id \
-H "Authorization: Bearer $AERSCHEDULER_KEY" \
-H "Content-Type: application/json" \
-d '{"active":true,"slug":"…"}'/booking-offerings/visibilityGet calendar visibility
Returns per-audience calendar detail levels for the organization.
Responses
200 | OK | Success.→ { data: OrganizationCalendarVisibility } |
401 | Unauthorized | No token, an expired token, or a malformed one. Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl https://api.aerscheduler.com/booking-offerings/visibility \
-H "Authorization: Bearer $AERSCHEDULER_KEY"/booking-offerings/visibilityUpdate calendar visibility
Owners and admins set what each audience tier sees on calendars and slot pickers.
Request body
Audience levels to change.
guestLevel | string | |
studentLevel | string | |
renterLevel | string | |
instructorLevel | string | |
memberLevel | string |
Responses
200 | OK | Success.→ { data: OrganizationCalendarVisibility } |
401 | Unauthorized | No token, an expired token, or a malformed one. Sign in again. |
403 | Forbidden | Only owners and admins may change visibility. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl -X PATCH https://api.aerscheduler.com/booking-offerings/visibility \
-H "Authorization: Bearer $AERSCHEDULER_KEY" \
-H "Content-Type: application/json" \
-d '{"guestLevel":"…","studentLevel":"…"}'/booking-offerings/{id}/slotsList offering slots
Computes bookable slots for an offering, projected for the signed-in member's audience tier.
Path parameters
idrequired | integer | The booking offering id. |
Query parameters
startDaterequired | string | Window start (inclusive). |
endDaterequired | string | Window end (inclusive). |
limit | integer | Rows to return, 1,1000. Defaults to 1000; a larger value is clamped rather than rejected. |
offset | integer | Rows to skip, for paging. Defaults to 0. |
sort | string | Field to order by before paging, as a dot path into the row , total, user.firstName. Omit to keep the endpoint's own order. Numbers and ISO timestamps order as numbers and instants, not as text, and empty values always sort last regardless of direction. Ordering happens before the page is cut, so it orders the whole collection rather than the page you are holding. |
order | "asc" | "desc" | asc (default) or desc. Only meaningful with sort. |
Responses
200 | OK | Projected bookable slots for the caller.→ { data: BookableSlot[] } |
400 | Bad Request | startDate and endDate are required. |
401 | Unauthorized | No token, an expired token, or a malformed one. Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl https://api.aerscheduler.com/booking-offerings/:id/slots?startDate=…&endDate=… \
-H "Authorization: Bearer $AERSCHEDULER_KEY"