Skip to the documentation
API

Booking pages

Every operation in this group: what it accepts, what it returns and the errors it can answer with.

Operations

A booking page is a public link, /book/<slug>, where somebody picks a free time and books a meeting on a person's calendar. The times it offers are the working hours of the page with everything taken out that makes the person busy: their calendar events, invitations they have not declined, calendars they subscribed to, bookings they already have, the gaps the page keeps around meetings, and the days they are out of office. A booking is a calendar event with the guest invited, so it shows wherever the calendar does. A booking page belongs to one person. An API key acts as the workspace owner and reaches the pages of the owner, and a connected app reaches the pages of the person who connected it.

GET/booking-pages

List booking pages

Scopescalendar:readReads

Every booking page of the person, oldest first unless sort says otherwise, each with its settings, its public link and how many bookings are upcoming or wait for approval. q, status, since and until narrow the list. A booking page belongs to one person. An API key acts as the workspace owner and reaches the pages of the owner, and a connected app reaches the pages of the person who connected it.

Requires the calendar:read scope.

Query parameters

qstring

Only the pages whose name or link contains this text, at most 200 characters. Case and accents are ignored.

Up to 200 characters
statusstring

active for the pages that take bookings, paused for the ones that do not. Left out, both.

One of"active""paused"
sincestring

Only the pages made at or after this instant, as a Date or an ISO 8601 string.

Formatdate-time
untilstring

Only the pages made before this instant, later than since.

Formatdate-time
sortstring

oldest (the default) or newest by when the page was made, name from A to Z, or upcoming with the most upcoming meetings first.

One of"oldest""newest""name""upcoming"

Returns

The booking pages.

Errors

422

invalid_parameter: a query value is malformed, or until is not later than since. capability_unsupported: the key or app is limited to particular addresses.

The errors every operation can return400401403404429500Error catalog

Also available in

TypeScript
nextmail.bookings.listPages()
Python
bookings.list_pages()
Ruby
bookings.list_pages
PHP
bookings->listPages
Go
Bookings.ListPages
Java
bookings().listPages
C#
Bookings.ListPagesAsync
CLI
openemail bookings list-pages
MCP
listBookingPages

POST/booking-pages

Create a booking page

Scopescalendar:writeemails:sendChanges data

Creates a booking page that takes bookings at once. Only name is required: the page starts with weekdays from 09:00 to 17:00, 30 minute meetings, four hours of notice and the first address the person may send from. Anything in config replaces that default. A person holds at most 25 pages.

Requires the calendar:write and emails:send scopes.

Request body

namestringRequired

What the page is called, shown to guests as its heading, such as Intro call.

1 to 80 characters
slugstring

The last part of the public link, /book/<slug>: lowercase letters, digits and hyphens. Left out, it is made from the name. It is unique across Nextmail.

1 to 60 characters
timezonestring

The IANA time zone the working hours are read in, such as Europe/Berlin, for a new page whose config.availability.timezone is not sent. Defaults to UTC.

1 to 64 characters
configobject

The settings of the page. Send only the parts that change: a top-level value replaces the stored one, and inside location, availability, rules, appearance, guestChanges, busy and seo each field is merged on its own. A list (durations, questions, availability.weekly, availability.overrides) is replaced whole.

descriptionstring

Text shown under the name of the page. Basic Markdown works: bold, italic, links and lists.

Up to 2000 characters
hostNamestring

The name guests see as the person they meet. Defaults to the name of the account.

Up to 80 characters
durationsinteger[]

The meeting lengths a guest can pick, in minutes, each a multiple of 5 between 5 and 720.

1 to 4 items
approvalboolean

True holds each new booking as a request until it is approved or declined. False confirms it at once.

fromEmailstring

The address the booking emails are sent from and the calendar events are organised by. It has to be one the owner of the page may send from.

Up to 320 characters
notifyHostboolean

Whether that address gets an email about each new, moved or cancelled booking.

questionsobject[]

What the guest is asked besides their name and email, at most 10.

Up to 10 items
idstringRequired

A stable key for the answers: 4 to 16 lowercase letters and digits, unique on the page. name, email, phone, timezone and start are taken.

Pattern^[a-z0-9]{4,16}$
kindstringRequired

text, long-text, phone, choice (one of options) or checkbox.

One of"text""long-text""phone""choice""checkbox"
labelstringRequired
1 to 120 characters
requiredbooleanRequired
optionsstring[]Required

The answers of a choice question, at least two. Empty for the other kinds.

Up to 12 items
placeholderstring

Example text shown in the empty field of a text, long-text or phone question, such as Anything we should know before the meeting?. Up to 160 characters, empty for none. A choice or checkbox question ignores it.

Up to 160 characters
confirmationstring

Text shown to the guest after booking, and added to the confirmation email.

Up to 1000 characters
redirectUrlstring

An https:// page to send the guest to after booking, or empty.

Up to 2000 characters
extraGuestsinteger

How many other people a guest may add to a booking, 0 to 10. Each one gets the invitation and every later change. Defaults to 0, which hides the field.

At least 0At most 10
remindersobject

When the guest is emailed a reminder and when the host is reminded, each a list of minutes before the start.

guestinteger[]

Minutes before the start to email the guest a reminder, at most 3, each one of 10, 30, 60, 120, 1440, 2880, 10080. Defaults to one day before. An empty list sends none.

Up to 3 items
hostinteger[]

Minutes before the start the host is reminded by the alarm on the meeting in their calendar, at most 3, each one of 0, 5, 10, 15, 30, 60, 1440. Defaults to 10. It applies to meetings booked after it changes.

Up to 3 items
locationobject

Where the meeting happens.

kindstring

video with a fixed link in value, phone (the guest is asked for a number), in-person with the address in value, or none.

One of"video""phone""in-person""none"
valuestring

The https:// link of a video meeting or the address of an in-person one.

Up to 500 characters
availabilityobject

When the page offers times, before the calendar is taken out.

timezonestring

The IANA time zone the hours below are read in.

1 to 64 characters
weeklyobject[][]

Seven lists, Sunday first, of the hours open on that weekday. An empty list closes the day.

7 to 7 items
startintegerRequired

Minutes after midnight the range opens, so 540 is 09:00.

At least 0At most 1440
endintegerRequired

Minutes after midnight the range closes, later than start.

At least 0At most 1440
overridesobject[]

Dates with their own hours, at most 180. date is YYYY-MM-DD in the time zone of the page, and an empty ranges closes that date.

Up to 180 items
datestringRequired
rangesobject[]Required
Up to 6 items
startintegerRequired

Minutes after midnight the range opens, so 540 is 09:00.

At least 0At most 1440
endintegerRequired

Minutes after midnight the range closes, later than start.

At least 0At most 1440
rulesobject

The limits on which of the open hours are offered.

noticeMinutesinteger

How many minutes ahead a booking has to be made.

At least 0At most 43200
horizonDaysinteger

How many days ahead the page offers times, up to 365.

At least 1At most 365
intervalMinutesinteger

Minutes between two start times, one of 5, 10, 15, 20, 30, 45, 60, 90, 120. Null steps by the length of the meeting.

Can be null
bufferBeforeMinutesinteger

Minutes kept free before every meeting, up to 240.

At least 0At most 240
bufferAfterMinutesinteger

Minutes kept free after every meeting, up to 240.

At least 0At most 240
dailyLimitinteger

The most bookings this page takes on one day, up to 50. Null for no limit.

Can be nullAt least 1At most 50
appearanceobject

How the public page looks.

accentstring

The colour of buttons and the picked day, as #rrggbb.

Pattern^#[0-9a-f]{6}$
themestring

auto follows the device of the guest, or force light or dark.

One of"auto""light""dark"
showAvatarboolean
backgroundstring

What fills the page behind the card: default, one of the presets dusk, mist, sand, night, meadow, dots, brush, trail, ember, canvas, bloom, field, wanderer and gold, image for the uploaded background image, or a colour as #rrggbb. Defaults to default.

Default"default"
fontsobject

The typefaces of the public page: primary for its text and secondary for its title. Each is one of the brand fonts the workspace appearance offers, or null for the standard font.

Default{"primary":null,"secondary":null}
primarystring

The font of the text, such as inter. Null uses the standard font.

Can be nullOne of"system""arial""helvetica""verdana""tahoma""trebuchet-ms""georgia""times-new-roman""courier-new""dm-sans""inter""roboto""open-sans""lato""montserrat""poppins""nunito""work-sans""source-sans-3""ibm-plex-sans""merriweather""playfair-display""instrument-serif""jetbrains-mono""dm-mono""geist-mono"Defaultnull
secondarystring

The font of the title, such as instrument-serif. Null keeps the title in the font of the text.

Can be nullOne of"system""arial""helvetica""verdana""tahoma""trebuchet-ms""georgia""times-new-roman""courier-new""dm-sans""inter""roboto""open-sans""lato""montserrat""poppins""nunito""work-sans""source-sans-3""ibm-plex-sans""merriweather""playfair-display""instrument-serif""jetbrains-mono""dm-mono""geist-mono"Defaultnull
backgroundImagestring

The address of the uploaded background image, or null. Read only: upload one with PUT /booking-pages/{id}/background and remove it with DELETE on the same path.

Can be nullUp to 2000 charactersDefaultnull
guestChangesobject

What a guest may do from the link in their emails.

cancelboolean
rescheduleboolean
cutoffMinutesinteger

How many minutes before the meeting those changes close.

At least 0At most 20160
busyobject

What counts as busy besides the events the person made and the bookings they already have.

addressesstring[]

The addresses whose invitations block time unless declined. Null checks every address the person holds.

Can be nullUp to 50 items
subscriptionsboolean

Whether events from calendars the person subscribed to block time.

outOfOfficeboolean

Whether the page offers no times while fromEmail is out of office. Defaults to true.

Defaulttrue
seoobject

How the public page presents itself to browsers and search engines.

titlestring

The title of the browser tab and of a search result. Empty uses the name of the page and the host.

Up to 120 charactersDefault""
descriptionstring

The summary under the title in a search result. Empty uses the start of the description.

Up to 300 charactersDefault""
indexableboolean

Whether search engines may list the page. False, the default, asks them not to.

Defaultfalse

Returns

The page as it is stored.

Errors

403

The key lacks a scope. booking_page_limit_reached: the person holds as many pages as they may.

409

booking_link_taken: another page already uses that slug.

422

invalid_parameter: a field is missing or malformed. invalid_booking_page: the link, the sender or a setting is not valid, as the message says. capability_unsupported: the key or app is limited to particular addresses.

The errors every operation can return400401404429500Error catalog

Also available in

TypeScript
nextmail.bookings.createPage()
Python
bookings.create_page()
Ruby
bookings.create_page
PHP
bookings->createPage
Go
Bookings.CreatePage
Java
bookings().createPage
C#
Bookings.CreatePageAsync
CLI
openemail bookings create-page
MCP
createBookingPage

GET/booking-pages/{id}

Read a booking page

Scopescalendar:readReads

One booking page with every setting, what stops it from taking bookings if anything does, and the out of office periods that close it.

Requires the calendar:read scope.

Path parameters

idstringRequired

The booking page, such as bkp_5c1e9a7b3d2f48e6a0b4c7d1, as GET /booking-pages lists it.

Returns

The page.

Errors

404

booking_page_not_found: the person has no booking page with that id.

422

capability_unsupported: the key or app is limited to particular addresses.

The errors every operation can return400401403429500Error catalog

Also available in

TypeScript
nextmail.bookings.getPage()
Python
bookings.get_page()
Ruby
bookings.get_page
PHP
bookings->getPage
Go
Bookings.GetPage
Java
bookings().getPage
C#
Bookings.GetPageAsync
CLI
openemail bookings get-page
MCP
getBookingPage

PATCH/booking-pages/{id}

Update a booking page

Scopescalendar:writeemails:sendChanges data

Changes the name, the link, the status or any setting of a page. Send only what changes. Set status to paused to stop offering times without losing the link. Bookings already made keep their time, and a new slug stops the old link from working.

Requires the calendar:write and emails:send scopes.

Path parameters

idstringRequired

The booking page, such as bkp_5c1e9a7b3d2f48e6a0b4c7d1, as GET /booking-pages lists it.

Request body

namestring

What the page is called, shown to guests as its heading, such as Intro call.

1 to 80 characters
slugstring

The last part of the public link, /book/<slug>: lowercase letters, digits and hyphens. It is unique across Nextmail. Left out, the stored link stays.

1 to 60 characters
statusstring

active takes bookings. paused keeps the link working but offers no times.

One of"active""paused"
configobject

The settings of the page. Send only the parts that change: a top-level value replaces the stored one, and inside location, availability, rules, appearance, guestChanges, busy and seo each field is merged on its own. A list (durations, questions, availability.weekly, availability.overrides) is replaced whole.

descriptionstring

Text shown under the name of the page. Basic Markdown works: bold, italic, links and lists.

Up to 2000 characters
hostNamestring

The name guests see as the person they meet. Left out, the stored name stays.

Up to 80 characters
durationsinteger[]

The meeting lengths a guest can pick, in minutes, each a multiple of 5 between 5 and 720.

1 to 4 items
approvalboolean

True holds each new booking as a request until it is approved or declined. False confirms it at once.

fromEmailstring

The address the booking emails are sent from and the calendar events are organised by. It has to be one the owner of the page may send from.

Up to 320 characters
notifyHostboolean

Whether that address gets an email about each new, moved or cancelled booking.

questionsobject[]

What the guest is asked besides their name and email, at most 10.

Up to 10 items
idstringRequired

A stable key for the answers: 4 to 16 lowercase letters and digits, unique on the page. name, email, phone, timezone and start are taken.

Pattern^[a-z0-9]{4,16}$
kindstringRequired

text, long-text, phone, choice (one of options) or checkbox.

One of"text""long-text""phone""choice""checkbox"
labelstringRequired
1 to 120 characters
requiredbooleanRequired
optionsstring[]Required

The answers of a choice question, at least two. Empty for the other kinds.

Up to 12 items
placeholderstring

Example text shown in the empty field of a text, long-text or phone question, such as Anything we should know before the meeting?. Up to 160 characters, empty for none. A choice or checkbox question ignores it.

Up to 160 characters
confirmationstring

Text shown to the guest after booking, and added to the confirmation email.

Up to 1000 characters
redirectUrlstring

An https:// page to send the guest to after booking, or empty.

Up to 2000 characters
extraGuestsinteger

How many other people a guest may add to a booking, 0 to 10. Each one gets the invitation and every later change, and 0 hides the field. Left out, the stored number stays.

At least 0At most 10
remindersobject

When the guest is emailed a reminder and when the host is reminded, each a list of minutes before the start.

guestinteger[]

Minutes before the start to email the guest a reminder, at most 3, each one of 10, 30, 60, 120, 1440, 2880, 10080. An empty list sends none. Left out, the stored list stays.

Up to 3 items
hostinteger[]

Minutes before the start the host is reminded by the alarm on the meeting in their calendar, at most 3, each one of 0, 5, 10, 15, 30, 60, 1440. It applies to meetings booked after it changes. Left out, the stored list stays.

Up to 3 items
locationobject

Where the meeting happens.

kindstring

video with a fixed link in value, phone (the guest is asked for a number), in-person with the address in value, or none.

One of"video""phone""in-person""none"
valuestring

The https:// link of a video meeting or the address of an in-person one.

Up to 500 characters
availabilityobject

When the page offers times, before the calendar is taken out.

timezonestring

The IANA time zone the hours below are read in.

1 to 64 characters
weeklyobject[][]

Seven lists, Sunday first, of the hours open on that weekday. An empty list closes the day.

7 to 7 items
startintegerRequired

Minutes after midnight the range opens, so 540 is 09:00.

At least 0At most 1440
endintegerRequired

Minutes after midnight the range closes, later than start.

At least 0At most 1440
overridesobject[]

Dates with their own hours, at most 180. date is YYYY-MM-DD in the time zone of the page, and an empty ranges closes that date.

Up to 180 items
datestringRequired
rangesobject[]Required
Up to 6 items
startintegerRequired

Minutes after midnight the range opens, so 540 is 09:00.

At least 0At most 1440
endintegerRequired

Minutes after midnight the range closes, later than start.

At least 0At most 1440
rulesobject

The limits on which of the open hours are offered.

noticeMinutesinteger

How many minutes ahead a booking has to be made.

At least 0At most 43200
horizonDaysinteger

How many days ahead the page offers times, up to 365.

At least 1At most 365
intervalMinutesinteger

Minutes between two start times, one of 5, 10, 15, 20, 30, 45, 60, 90, 120. Null steps by the length of the meeting.

Can be null
bufferBeforeMinutesinteger

Minutes kept free before every meeting, up to 240.

At least 0At most 240
bufferAfterMinutesinteger

Minutes kept free after every meeting, up to 240.

At least 0At most 240
dailyLimitinteger

The most bookings this page takes on one day, up to 50. Null for no limit.

Can be nullAt least 1At most 50
appearanceobject

How the public page looks.

accentstring

The colour of buttons and the picked day, as #rrggbb.

Pattern^#[0-9a-f]{6}$
themestring

auto follows the device of the guest, or force light or dark.

One of"auto""light""dark"
showAvatarboolean
backgroundstring

What fills the page behind the card: default, one of the presets dusk, mist, sand, night, meadow, dots, brush, trail, ember, canvas, bloom, field, wanderer and gold, image for the uploaded background image, or a colour as #rrggbb. Left out, the stored background stays.

fontsobject

The typefaces of the public page, merged by key: primary for its text and secondary for its title, each a brand font or null for the standard font. Left out, the stored fonts stay.

primarystring

The font of the text, such as inter. Null uses the standard font.

Can be nullOne of"system""arial""helvetica""verdana""tahoma""trebuchet-ms""georgia""times-new-roman""courier-new""dm-sans""inter""roboto""open-sans""lato""montserrat""poppins""nunito""work-sans""source-sans-3""ibm-plex-sans""merriweather""playfair-display""instrument-serif""jetbrains-mono""dm-mono""geist-mono"
secondarystring

The font of the title, such as instrument-serif. Null keeps the title in the font of the text.

Can be nullOne of"system""arial""helvetica""verdana""tahoma""trebuchet-ms""georgia""times-new-roman""courier-new""dm-sans""inter""roboto""open-sans""lato""montserrat""poppins""nunito""work-sans""source-sans-3""ibm-plex-sans""merriweather""playfair-display""instrument-serif""jetbrains-mono""dm-mono""geist-mono"
backgroundImagestring

Read only. Sending it back as you read it changes nothing; upload or remove the image on the background path of the page.

Can be nullUp to 2000 characters
guestChangesobject

What a guest may do from the link in their emails.

cancelboolean
rescheduleboolean
cutoffMinutesinteger

How many minutes before the meeting those changes close.

At least 0At most 20160
busyobject

What counts as busy besides the events the person made and the bookings they already have.

addressesstring[]

The addresses whose invitations block time unless declined. Null checks every address the person holds.

Can be nullUp to 50 items
subscriptionsboolean

Whether events from calendars the person subscribed to block time.

outOfOfficeboolean

Whether the page offers no times while fromEmail is out of office. Left out, the stored setting stays.

seoobject

How the public page presents itself to browsers and search engines.

titlestring

The title of the browser tab and of a search result. Empty uses the name of the page and the host.

Up to 120 characters
descriptionstring

The summary under the title in a search result. Empty uses the start of the description.

Up to 300 characters
indexableboolean

Whether search engines may list the page. False asks them not to. Left out, the stored setting stays.

Returns

The page after the change.

Errors

404

booking_page_not_found: the person has no booking page with that id.

409

booking_link_taken: another page already uses that slug.

422

invalid_parameter: nothing to change was sent or a field is malformed. invalid_booking_page: the link, the sender or a setting is not valid, as the message says. capability_unsupported: the key or app is limited to particular addresses.

The errors every operation can return400401403429500Error catalog

Also available in

TypeScript
nextmail.bookings.updatePage()
Python
bookings.update_page()
Ruby
bookings.update_page
PHP
bookings->updatePage
Go
Bookings.UpdatePage
Java
bookings().updatePage
C#
Bookings.UpdatePageAsync
CLI
openemail bookings update-page
MCP
updateBookingPage

DELETE/booking-pages/{id}

Delete a booking page

Scopescalendar:writeDeletes

Deletes a booking page for good. Its link stops working and the list of its bookings goes with it, so guests can no longer move or cancel through their links. The meetings already booked stay on the calendar.

Requires the calendar:write scope.

Path parameters

idstringRequired

The booking page, such as bkp_5c1e9a7b3d2f48e6a0b4c7d1, as GET /booking-pages lists it.

Returns

Errors

404

booking_page_not_found: the person has no booking page with that id.

422

capability_unsupported: the key or app is limited to particular addresses.

The errors every operation can return400401403429500Error catalog

Also available in

TypeScript
nextmail.bookings.deletePage()
Python
bookings.delete_page()
Ruby
bookings.delete_page
PHP
bookings->deletePage
Go
Bookings.DeletePage
Java
bookings().deletePage
C#
Bookings.DeletePageAsync
CLI
openemail bookings delete-page
MCP
deleteBookingPage

PUT/booking-pages/{id}/background

Upload the background image of a booking page

Scopescalendar:writeemails:sendChanges data

Uploads the photo that fills the public page behind the card, replacing the one there was, and switches config.appearance.background to image. Send the image itself as the body, not JSON, with its type in Content-Type. Up to 5 MB goes in; it is fitted and stored as WebP, and config.appearance.backgroundImage then holds its address. An animated image keeps its first frame.

Requires the calendar:write and emails:send scopes.

Path parameters

idstringRequired

The booking page, such as bkp_5c1e9a7b3d2f48e6a0b4c7d1, as GET /booking-pages lists it.

Request body

Content typeimage/png, image/jpeg, image/webp, image/gif

binary

Returns

The page, showing the new image.

Errors

404

booking_page_not_found: the person has no booking page with that id.

422

invalid_image when the body is not an image of an accepted type, is too large or cannot be read. capability_unsupported: the key or app is limited to particular addresses.

502

image_not_stored: the image was read but could not be stored. Try again.

503

image_busy: the image service is saturated. Try again shortly.

The errors every operation can return400401403429500Error catalog

Also available in

TypeScript
nextmail.bookings.uploadBackground()
Python
bookings.upload_background()
Ruby
bookings.upload_background
PHP
bookings->uploadBackground
Go
Bookings.UploadBackground
Java
bookings().uploadBackground
C#
Bookings.UploadBackgroundAsync
CLI
openemail bookings upload-background
MCP
setBookingPageBackground

DELETE/booking-pages/{id}/background

Remove the background image of a booking page

Scopescalendar:writeemails:sendDeletes

Deletes the stored background photo of a page. A page that showed it goes back to the default background, and one that showed a preset or a colour keeps it. Removing an image that is not set changes nothing, so a repeated call is safe.

Requires the calendar:write and emails:send scopes.

Path parameters

idstringRequired

The booking page, such as bkp_5c1e9a7b3d2f48e6a0b4c7d1, as GET /booking-pages lists it.

Returns

The page, without the image.

Errors

404

booking_page_not_found: the person has no booking page with that id.

422

capability_unsupported: the key or app is limited to particular addresses.

The errors every operation can return400401403429500Error catalog

Also available in

TypeScript
nextmail.bookings.removeBackground()
Python
bookings.remove_background()
Ruby
bookings.remove_background
PHP
bookings->removeBackground
Go
Bookings.RemoveBackground
Java
bookings().removeBackground
C#
Bookings.RemoveBackgroundAsync
CLI
openemail bookings remove-background
MCP
removeBookingPageBackground

GET/booking-pages/{id}/times

List the open times of a booking page

Scopescalendar:readReads

The start times a guest could book in a window, in order: the hours of the page with the calendar, other bookings, the gaps around meetings, the daily limit, the notice and the out of office periods taken out. A paused page still answers, and a page with a problem offers nothing. With bookingId they are the times that booking can move to with POST /bookings/{id}/reschedule.

Requires the calendar:read scope.

Path parameters

idstringRequired

The booking page, such as bkp_5c1e9a7b3d2f48e6a0b4c7d1, as GET /booking-pages lists it.

Query parameters

fromstring

The start of the window. Defaults to now.

Formatdate-time
tostring

The end of the window, later than from. Defaults to 14 days after from, and counts for at most 62 days after it.

Formatdate-time
durationMinutesinteger

The meeting length in minutes, one of the durations of the page. Defaults to the shortest.

At least 1
bookingIdstring

A booking on this page to find a new time for, such as bkg_2b8d4f6a1c3e5079b6d8f0a2. Its own time counts as free and the times are for its length, so durationMinutes is ignored.

1 to 64 characters

Returns

The open times.

Errors

404

booking_page_not_found: the person has no booking page with that id. booking_not_found: the person has no booking with that id.

409

booking_ended: the booking was already declined or cancelled.

422

invalid_parameter: to is not later than from, or durationMinutes is not a length the page offers. capability_unsupported: the key or app is limited to particular addresses.

The errors every operation can return400401403429500Error catalog

Also available in

TypeScript
nextmail.bookings.listTimes()
Python
bookings.list_times()
Ruby
bookings.list_times
PHP
bookings->listTimes
Go
Bookings.ListTimes
Java
bookings().listTimes
C#
Bookings.ListTimesAsync
CLI
openemail bookings list-times
MCP
listBookingTimes

GET/bookings

List bookings

Scopescalendar:readReads

The meetings guests booked on the pages of the person, or on some of them with pageIds. q searches the guest and the page, and from and to keep the meetings that start in a window. upcoming and pending come soonest first, past and ended latest first. One guest address holds at most 3 upcoming bookings on a page.

Requires the calendar:read scope.

Query parameters

viewstring

Which bookings to list: upcoming, pending, past or ended. Defaults to upcoming.

One of"upcoming""pending""past""ended"
pageIdstring

Only the bookings of this booking page, by its id. Left out, the bookings of every page of the person are listed.

1 to 64 characters
pageIdsstring

Only the bookings of these booking pages, at most 25 ids. Left out, every page of the person.

Up to 1625 characters
qstring

Only the bookings whose guest name, guest email or page name contains this text, at most 200 characters. Case and accents are ignored.

Up to 200 characters
fromstring

Only the meetings that start at or after this instant, as a Date or an ISO 8601 string.

Formatdate-time
tostring

Only the meetings that start before this instant, later than from.

Formatdate-time
limitinteger

Page size, from 1 to 100. The server defaults to 30.

At least 1At most 100
cursorstring

The nextCursor of the previous page, passed back as it came. Leave it out for the first page.

1 to 256 characters

Returns

A page of bookings.

Errors

404

booking_page_not_found: the person has no booking page with that id.

422

invalid_parameter: a query value is malformed, pageIds names too many pages, or to is not later than from. capability_unsupported: the key or app is limited to particular addresses.

The errors every operation can return401403429500Error catalog

Also available in

TypeScript
nextmail.bookings.list()nextmail.bookings.listAll()nextmail.bookings.iterate()
Python
bookings.list()bookings.list_all()bookings.iterate()
Ruby
bookings.listbookings.list_allbookings.iterate
PHP
bookings->listbookings->listAllbookings->iterate
Go
Bookings.ListBookings.ListAllBookings.Iterate
Java
bookings().listbookings().listAllbookings().iterate
C#
Bookings.ListAsyncBookings.ListAllAsyncBookings.IterateAsync
CLI
openemail bookings list
MCP
listBookings

GET/bookings/{id}

Read a booking

Scopescalendar:readReads

One booking with the guest, their answers, the calendar event it is and how it ended if it did. A booking follows its calendar event, so a meeting moved or cancelled in the calendar reads as moved or cancelled here.

Requires the calendar:read scope.

Path parameters

idstringRequired

The booking, such as bkg_2b8d4f6a1c3e5079b6d8f0a2, as GET /bookings lists it.

Returns

The booking.

Errors

404

booking_not_found: the person has no booking with that id.

422

capability_unsupported: the key or app is limited to particular addresses.

The errors every operation can return400401403429500Error catalog

Also available in

TypeScript
nextmail.bookings.get()
Python
bookings.get()
Ruby
bookings.get
PHP
bookings->get
Go
Bookings.Get
Java
bookings().get
C#
Bookings.GetAsync
CLI
openemail bookings get
MCP
getBooking

POST/bookings/{id}/approve

Approve a booking

Scopescalendar:writeemails:sendSends mail

Confirms a booking that waits for approval, on a page whose config.approval is true. The hold on the calendar becomes a confirmed meeting. The guest is told by email, sent from the address of the page with the calendar invitation or its cancellation attached.

Requires the calendar:write and emails:send scopes.

Path parameters

idstringRequired

The booking, such as bkg_2b8d4f6a1c3e5079b6d8f0a2, as GET /bookings lists it.

Returns

The booking, confirmed.

Errors

404

booking_not_found: the person has no booking with that id.

409

booking_not_pending: the booking is not waiting for approval. booking_ended: its time has passed.

422

capability_unsupported: the key or app is limited to particular addresses.

The errors every operation can return400401403429500Error catalog

Also available in

TypeScript
nextmail.bookings.approve()
Python
bookings.approve()
Ruby
bookings.approve
PHP
bookings->approve
Go
Bookings.Approve
Java
bookings().approve
C#
Bookings.ApproveAsync
CLI
openemail bookings approve
MCP
approveBooking

POST/bookings/{id}/decline

Decline a booking

Scopescalendar:writeemails:sendSends mail

Turns down a booking that waits for approval and frees its time. The guest is told by email, sent from the address of the page with the calendar invitation or its cancellation attached.

Requires the calendar:write and emails:send scopes.

Path parameters

idstringRequired

The booking, such as bkg_2b8d4f6a1c3e5079b6d8f0a2, as GET /bookings lists it.

Request body

reasonstring

A sentence for the guest, at most 500 characters, included in the email they get.

Can be nullUp to 500 characters

Returns

The booking, declined.

Errors

404

booking_not_found: the person has no booking with that id.

409

booking_not_pending: the booking is not waiting for approval.

422

capability_unsupported: the key or app is limited to particular addresses.

The errors every operation can return400401403429500Error catalog

Also available in

TypeScript
nextmail.bookings.decline()
Python
bookings.decline()
Ruby
bookings.decline
PHP
bookings->decline
Go
Bookings.Decline
Java
bookings().decline
C#
Bookings.DeclineAsync
CLI
openemail bookings decline
MCP
declineBooking

POST/bookings/{id}/cancel

Cancel a booking

Scopescalendar:writeemails:sendSends mail

Cancels a meeting that has not ended yet and cancels its calendar event. A booking that still waits for approval is declined instead. The guest is told by email, sent from the address of the page with the calendar invitation or its cancellation attached.

Requires the calendar:write and emails:send scopes.

Path parameters

idstringRequired

The booking, such as bkg_2b8d4f6a1c3e5079b6d8f0a2, as GET /bookings lists it.

Request body

reasonstring

A sentence for the guest, at most 500 characters, included in the email they get.

Can be nullUp to 500 characters

Returns

The booking, cancelled.

Errors

404

booking_not_found: the person has no booking with that id.

409

booking_ended: the booking was already declined or cancelled, or the meeting is over.

422

capability_unsupported: the key or app is limited to particular addresses.

The errors every operation can return400401403429500Error catalog

Also available in

TypeScript
nextmail.bookings.cancel()
Python
bookings.cancel()
Ruby
bookings.cancel
PHP
bookings->cancel
Go
Bookings.Cancel
Java
bookings().cancel
C#
Bookings.CancelAsync
CLI
openemail bookings cancel
MCP
cancelBooking

POST/bookings/{id}/reschedule

Reschedule a booking

Scopescalendar:writeemails:sendSends mail

Moves a meeting that has not started to a new time, keeping its length, and moves its calendar event with it. The time has to be open on the page, as GET /booking-pages/{id}/times lists the times with bookingId; the page may be paused, and the cut-off for guests does not apply to you. A booking that waits for approval is confirmed at the new time. The guest is told by email, sent from the address of the page with the calendar invitation or its cancellation attached. You get a copy too, unless config.notifyHost is false.

Requires the calendar:write and emails:send scopes.

Path parameters

idstringRequired

The booking, such as bkg_2b8d4f6a1c3e5079b6d8f0a2, as GET /bookings lists it.

Request body

startstringRequired

The new start as an ISO 8601 instant. It has to be one of the open times of the page for this booking, as GET /booking-pages/{id}/times lists them with bookingId. The meeting keeps its length.

Formatdate-time
reasonstring

A sentence for the guest, at most 500 characters, included in the email about the new time.

Can be nullUp to 500 characters

Returns

The booking at its new time.

Errors

404

booking_not_found: the person has no booking with that id.

409

booking_time_unavailable: that time is not open on the page for this booking. booking_ended: the booking was declined or cancelled, or the meeting has started.

422

invalid_parameter: start is missing or malformed. capability_unsupported: the key or app is limited to particular addresses.

The errors every operation can return400401403429500Error catalog

Also available in

TypeScript
nextmail.bookings.reschedule()
Python
bookings.reschedule()
Ruby
bookings.reschedule
PHP
bookings->reschedule
Go
Bookings.Reschedule
Java
bookings().reschedule
C#
Bookings.RescheduleAsync
CLI
openemail bookings reschedule
MCP
rescheduleBooking

POST/bookings/{id}/resend

Send the booking email again

Scopescalendar:writeemails:sendSends mail

Sends the guest the email that matches where the booking stands now: the request, the confirmation with its invitation, or the notice that it was declined or cancelled. Use it when guestMailFailed is true.

Requires the calendar:write and emails:send scopes.

Path parameters

idstringRequired

The booking, such as bkg_2b8d4f6a1c3e5079b6d8f0a2, as GET /bookings lists it.

Returns

The booking, with guestMailFailed as it is after the send.

Errors

404

booking_not_found: the person has no booking with that id.

422

capability_unsupported: the key or app is limited to particular addresses.

The errors every operation can return400401403429500Error catalog

Also available in

TypeScript
nextmail.bookings.resendEmail()
Python
bookings.resend_email()
Ruby
bookings.resend_email
PHP
bookings->resendEmail
Go
Bookings.ResendEmail
Java
bookings().resendEmail
C#
Bookings.ResendEmailAsync
CLI
openemail bookings resend-email
MCP
resendBookingEmail

GET/bookings/analytics

Read booking analytics

Scopescalendar:readReads

The numbers behind the Analytics tabs of Booking: the bookings guests made over a window, what became of them, the pages and weekdays they went to, and the meetings still to come right now, for every page of the person or for the pages pageIds names. A booking counts in the window it was made in, whatever its meeting time. A booking page belongs to one person. An API key acts as the workspace owner and reaches the pages of the owner, and a connected app reaches the pages of the person who connected it.

Requires the calendar:read scope.

Query parameters

pageIdstring

Count only the bookings of this booking page, such as bkp_5c1e9a7b3d2f48e6a0b4c7d1, the same as pageIds with one id.

1 to 64 characters
pageIdsstring

Count only these booking pages, at most 25, such as ['bkp_5c1e9a7b3d2f48e6a0b4c7d1']. Every page of the person when left out.

Up to 1625 characters
daysinteger

How far back to look, from 1 to 1095, defaulting to 30.

At least 1At most 1095
minutesinteger

The window in minutes, from 1 to 1576800, which wins over days when both are sent.

At least 1At most 1576800
grainstring

Bucket width: minute, hour or day, defaulting to day.

One of"minute""hour""day"
offsetMinutesinteger

Minutes east of UTC to cut the buckets and the weekdays in, from -840 to 840, defaulting to 0. Pass -new Date().getTimezoneOffset() for the local zone.

At least -840At most 840

Returns

The window, the totals and the breakdowns.

Errors

404

booking_page_not_found: the person has no booking page with that id.

422

invalid_parameter: a query value is out of range, or pageIds names too many pages. capability_unsupported: the key or app is limited to particular addresses.

The errors every operation can return400401403429500Error catalog

Also available in

TypeScript
nextmail.bookings.analytics()
Python
bookings.analytics()
Ruby
bookings.analytics
PHP
bookings->analytics
Go
Bookings.Analytics
Java
bookings().analytics
C#
Bookings.AnalyticsAsync
CLI
openemail bookings analytics
MCP
getBookingAnalytics

Objects

Bookingobject

objectstringRequired
One of"booking"
idstringRequired

The id, which starts with bkg_.

pageIdstringRequired

The booking page it was made on.

pageNamestringRequired
statusstringRequired

pending while it waits for approval, confirmed once the meeting stands, declined when a request was turned down, and cancelled when a confirmed meeting was called off.

One of"pending""confirmed""declined""cancelled"
expiredbooleanRequired

True for a request nobody answered before its time came.

pastbooleanRequired

True once the meeting is over.

startstringRequired

When the meeting starts.

Formatdate-time
endstringRequired

When it ends.

Formatdate-time
durationMinutesintegerRequired
guestobjectRequired
namestringRequired
emailstringRequired
Formatemail
timezonestringRequired

The time zone the guest booked in, which their emails use.

guestsstring[]Required

The other people invited to the meeting: the ones the guest added when booking, and anyone added to the calendar event since. Empty when there are none.

answersobject[]Required

What the guest answered to the questions of the page.

idstringRequired

The id of the question.

labelstringRequired

The question as it was asked.

kindstringRequired
One of"text""long-text""phone""choice""checkbox"
valuestringRequired

The answer. A checkbox answers yes or no.

locationstringRequired

Where the meeting happens, as the guest was told: the link, the phone number or the address.

eventIdstringRequired

The calendar event of the booking, as GET /calendar/events/{id} reads it. Null once the booking ended and its event was removed.

Can be null
endedBystringRequired

Who declined or cancelled it.

Can be nullOne of"host""guest"
endReasonstringRequired

The reason they gave.

Can be null
rescheduleCountintegerRequired

How often the meeting was moved.

At least 0
guestMailFailedbooleanRequired

True when the last email to the guest could not be sent. POST /bookings/{id}/resend tries again.

createdAtstringRequired

When the guest booked.

Formatdate-time

BookingAnalyticsobject

objectstringRequired
One of"booking_analytics"
pageIdstringRequired

The booking page the numbers are for when they are for exactly one, or null.

Can be null
pageIdsstring[]Required

The booking pages the numbers are for, or an empty list for every page of the person.

sincestringRequired

The start of the oldest bucket, where the window begins.

Formatdate-time
untilstringRequired

Now, where the window ends.

Formatdate-time
grainstringRequired
One of"minute""hour""day"
offsetMinutesintegerRequired

The offset the buckets were cut in.

totalsobjectRequired
bookedintegerRequired

Bookings made in the window, whatever became of them.

At least 0
confirmedintegerRequired

Of those, the meetings that stand, held or still to come.

At least 0
pendingintegerRequired

Of those, the requests still waiting for an answer.

At least 0
expiredintegerRequired

Of those, the requests nobody answered before their time came.

At least 0
declinedintegerRequired

Of those, the requests the host turned down.

At least 0
cancelledintegerRequired

Of those, the meetings called off.

At least 0
cancelledByGuestintegerRequired

Cancelled by the guest.

At least 0
cancelledByHostintegerRequired

Cancelled by the host.

At least 0
rescheduledintegerRequired

Of those, the meetings moved at least once.

At least 0
minutesBookedintegerRequired

The minutes of the confirmed meetings.

At least 0
cancellationRatenumberRequired

Cancelled divided by booked, or null when nothing was booked.

Can be nullAt least 0At most 1
upcomingobjectRequired

The calendar right now, whatever the window.

confirmedintegerRequired

Confirmed meetings that have not ended.

At least 0
waitingintegerRequired

Requests that wait for approval and whose time has not come.

At least 0
nextStartstringRequired

When the next confirmed meeting starts, or null when none is coming.

Can be nullFormatdate-time
seriesobject[]Required

Bookings made per bucket, oldest first. A bucket with nothing in it has no entry, so a chart must fill the gaps. bucket is YYYY-MM-DD, YYYY-MM-DDTHH or YYYY-MM-DDTHH:MM by grain.

bucketstringRequired
bookedintegerRequired

Bookings made in the bucket.

At least 0
cancelledintegerRequired

Of those, the ones called off since.

At least 0
pagesobject[]Required

The pages that got bookings in the window, most first, at most 10.

pageIdstringRequired
namestringRequired
bookedintegerRequired

Bookings made on the page in the window.

At least 0
cancelledintegerRequired

Of those, the ones called off since.

At least 0
weekdaysobject[]Required

The meetings booked in the window that stand or wait for approval, by the weekday they fall on, Sunday (0) to Saturday (6), always seven entries.

weekdayintegerRequired
At least 0At most 6
meetingsintegerRequired

Meetings on that weekday.

At least 0

BookingListobject

objectstring
One of"list"
hasMoreboolean

True when another page follows. Pass nextCursor back as cursor to read it.

nextCursorstring

An opaque cursor for the next page, or null on the last page. Pass it back unchanged.

Can be null

BookingPageobject

objectstringRequired
One of"booking_page"
idstringRequired

The id, which starts with bkp_.

slugstringRequired

The last part of the public link, /book/<slug>: lowercase letters, digits and hyphens. Left out, it is made from the name. It is unique across Nextmail.

namestringRequired

What the page is called, shown to guests as its heading, such as Intro call.

statusstringRequired

active takes bookings. paused keeps the link working but offers no times.

One of"active""paused"
urlstringRequired

The public link to hand to guests.

problemstringRequired

What stops the page from taking bookings, or null: sender when config.fromEmail can no longer send, hours when no hours are open at all, and host when the person left the workspace.

Can be nullOne of"sender""host""hours"
configBookingPageConfigRequired
countsobjectRequired
upcomingintegerRequired

Confirmed bookings that have not started.

At least 0
pendingintegerRequired

Bookings that wait for approval.

At least 0
awayobject[]Required

The out of office periods of config.fromEmail that are running or still to come. While config.busy.outOfOffice is true the page offers no times inside them.

addressstringRequired

The address, or the catch-all such as *@example.com, that is out of office.

startsAtstringRequired

When the period starts.

Formatdate-time
endsAtstringRequired

When it ends, or null while it has no end date.

Can be nullFormatdate-time
createdAtstringRequired

When the page was created.

Formatdate-time
updatedAtstringRequired

When the page last changed.

Formatdate-time

BookingPageConfigobject

descriptionstringRequired

Text shown under the name of the page. Basic Markdown works: bold, italic, links and lists.

Up to 2000 characters
hostNamestringRequired

The name guests see as the person they meet. Defaults to the name of the account.

Up to 80 characters
durationsinteger[]Required

The meeting lengths a guest can pick, in minutes, each a multiple of 5 between 5 and 720.

1 to 4 items
approvalbooleanRequired

True holds each new booking as a request until it is approved or declined. False confirms it at once.

fromEmailstringRequired

The address the booking emails are sent from and the calendar events are organised by. It has to be one the owner of the page may send from.

Up to 320 characters
notifyHostbooleanRequired

Whether that address gets an email about each new, moved or cancelled booking.

questionsobject[]Required

What the guest is asked besides their name and email, at most 10.

Up to 10 items
idstringRequired

A stable key for the answers: 4 to 16 lowercase letters and digits, unique on the page. name, email, phone, timezone and start are taken.

Pattern^[a-z0-9]{4,16}$
kindstringRequired

text, long-text, phone, choice (one of options) or checkbox.

One of"text""long-text""phone""choice""checkbox"
labelstringRequired
1 to 120 characters
requiredbooleanRequired
optionsstring[]Required

The answers of a choice question, at least two. Empty for the other kinds.

Up to 12 items
placeholderstring

Example text shown in the empty field of a text, long-text or phone question, such as Anything we should know before the meeting?. Up to 160 characters, empty for none. A choice or checkbox question ignores it.

Up to 160 characters
confirmationstringRequired

Text shown to the guest after booking, and added to the confirmation email.

Up to 1000 characters
redirectUrlstringRequired

An https:// page to send the guest to after booking, or empty.

Up to 2000 characters
extraGuestsinteger

How many other people a guest may add to a booking, 0 to 10. Each one gets the invitation and every later change. Defaults to 0, which hides the field.

At least 0At most 10Default0
remindersobject

When the guest is emailed a reminder and when the host is reminded, each a list of minutes before the start.

Default{"guest":[1440],"host":[10]}
guestinteger[]Required

Minutes before the start to email the guest a reminder, at most 3, each one of 10, 30, 60, 120, 1440, 2880, 10080. Defaults to one day before. An empty list sends none.

Up to 3 items
hostinteger[]Required

Minutes before the start the host is reminded by the alarm on the meeting in their calendar, at most 3, each one of 0, 5, 10, 15, 30, 60, 1440. Defaults to 10. It applies to meetings booked after it changes.

Up to 3 items
locationobjectRequired

Where the meeting happens.

kindstringRequired

video with a fixed link in value, phone (the guest is asked for a number), in-person with the address in value, or none.

One of"video""phone""in-person""none"
valuestringRequired

The https:// link of a video meeting or the address of an in-person one.

Up to 500 characters
availabilityobjectRequired

When the page offers times, before the calendar is taken out.

timezonestringRequired

The IANA time zone the hours below are read in.

1 to 64 characters
weeklyobject[][]Required

Seven lists, Sunday first, of the hours open on that weekday. An empty list closes the day.

7 to 7 items
startintegerRequired

Minutes after midnight the range opens, so 540 is 09:00.

At least 0At most 1440
endintegerRequired

Minutes after midnight the range closes, later than start.

At least 0At most 1440
overridesobject[]Required

Dates with their own hours, at most 180. date is YYYY-MM-DD in the time zone of the page, and an empty ranges closes that date.

Up to 180 items
datestringRequired
rangesobject[]Required
Up to 6 items
startintegerRequired

Minutes after midnight the range opens, so 540 is 09:00.

At least 0At most 1440
endintegerRequired

Minutes after midnight the range closes, later than start.

At least 0At most 1440
rulesobjectRequired

The limits on which of the open hours are offered.

noticeMinutesintegerRequired

How many minutes ahead a booking has to be made.

At least 0At most 43200
horizonDaysintegerRequired

How many days ahead the page offers times, up to 365.

At least 1At most 365
intervalMinutesintegerRequired

Minutes between two start times, one of 5, 10, 15, 20, 30, 45, 60, 90, 120. Null steps by the length of the meeting.

Can be null
bufferBeforeMinutesintegerRequired

Minutes kept free before every meeting, up to 240.

At least 0At most 240
bufferAfterMinutesintegerRequired

Minutes kept free after every meeting, up to 240.

At least 0At most 240
dailyLimitintegerRequired

The most bookings this page takes on one day, up to 50. Null for no limit.

Can be nullAt least 1At most 50
appearanceobjectRequired

How the public page looks.

accentstringRequired

The colour of buttons and the picked day, as #rrggbb.

Pattern^#[0-9a-f]{6}$
themestringRequired

auto follows the device of the guest, or force light or dark.

One of"auto""light""dark"
showAvatarbooleanRequired
backgroundstring

What fills the page behind the card: default, one of the presets dusk, mist, sand, night, meadow, dots, brush, trail, ember, canvas, bloom, field, wanderer and gold, image for the uploaded background image, or a colour as #rrggbb. Defaults to default.

Default"default"
fontsobject

The typefaces of the public page: primary for its text and secondary for its title. Each is one of the brand fonts the workspace appearance offers, or null for the standard font.

Default{"primary":null,"secondary":null}
primarystring

The font of the text, such as inter. Null uses the standard font.

Can be nullOne of"system""arial""helvetica""verdana""tahoma""trebuchet-ms""georgia""times-new-roman""courier-new""dm-sans""inter""roboto""open-sans""lato""montserrat""poppins""nunito""work-sans""source-sans-3""ibm-plex-sans""merriweather""playfair-display""instrument-serif""jetbrains-mono""dm-mono""geist-mono"Defaultnull
secondarystring

The font of the title, such as instrument-serif. Null keeps the title in the font of the text.

Can be nullOne of"system""arial""helvetica""verdana""tahoma""trebuchet-ms""georgia""times-new-roman""courier-new""dm-sans""inter""roboto""open-sans""lato""montserrat""poppins""nunito""work-sans""source-sans-3""ibm-plex-sans""merriweather""playfair-display""instrument-serif""jetbrains-mono""dm-mono""geist-mono"Defaultnull
backgroundImagestring

The address of the uploaded background image, or null. Read only: upload one with PUT /booking-pages/{id}/background and remove it with DELETE on the same path.

Can be nullUp to 2000 charactersDefaultnull
guestChangesobjectRequired

What a guest may do from the link in their emails.

cancelbooleanRequired
reschedulebooleanRequired
cutoffMinutesintegerRequired

How many minutes before the meeting those changes close.

At least 0At most 20160
busyobjectRequired

What counts as busy besides the events the person made and the bookings they already have.

addressesstring[]Required

The addresses whose invitations block time unless declined. Null checks every address the person holds.

Can be nullUp to 50 items
subscriptionsbooleanRequired

Whether events from calendars the person subscribed to block time.

outOfOfficeboolean

Whether the page offers no times while fromEmail is out of office. Defaults to true.

Defaulttrue
seoobject

How the public page presents itself to browsers and search engines.

Default{}
titlestring

The title of the browser tab and of a search result. Empty uses the name of the page and the host.

Up to 120 charactersDefault""
descriptionstring

The summary under the title in a search result. Empty uses the start of the description.

Up to 300 charactersDefault""
indexableboolean

Whether search engines may list the page. False, the default, asks them not to.

Defaultfalse

BookingTimesobject

objectstringRequired
One of"booking_times"
pageIdstringRequired
timezonestringRequired

The time zone of the page.

durationMinutesintegerRequired

The meeting length the times are for.

timesstring[]Required

Every open start time in the window, in order.

DeletedBookingPageobject

objectstringRequired
One of"booking_page"
idstringRequired
deletedbooleanRequired
One oftrue