Restaurant Events
Special restaurant events (banquets, themed nights, tastings): reading the event list and working with reservations for them.
Events are special occasions at the restaurant (dinners, banquets, themed nights, tastings)
with their own schedule, tickets/deposits and separate booking settings. An event can accept
reservations: every reservation has an eventId field that links it to a specific event
(see Creating a reservation).
All endpoints use a Bearer token (see Authentication).
Base path: /api/core/admin/restaurants/{restaurantId}/events.
| Method | Path | Purpose |
|---|---|---|
GET | /events | All events |
GET | /events/active | Active (published) events |
GET | /events/past | Past events |
GET | /events/draft | Drafts |
GET | /events/{eventId} | Get an event by ID |
POST | /events | Create an event |
PUT | /events/{eventId} | Update an event |
DELETE | /events/{eventId} | Delete an event |
POST | /events/{copyFromId}/saveas | Create a copy of an existing event |
PUT | /events/{eventId}/status | Publish / unpublish |
PUT | /events/{eventId}/status/system | System status change |
About the data format. The list endpoints return the compact
EventDetailsContractmodel (see below). Creating, updating, reading by ID and changing status work with the “big” contractRestaurantFullContract— the same structure as the restaurant settings, but applied to an event (schedule, booking settings, the event’s floor plan). So the easiest way is to build the request body from whatGET /events/{eventId}returned, changing only the fields you need.
Event model (EventDetailsContract)
This is the model returned by the list endpoints. Top-level fields:
| Field | Type | Description |
|---|---|---|
id | integer | Event identifier |
name | string | Event name |
description | string | Description |
promoImage | string | Promo image URL |
startDate | date-time | Start date and time |
endDate | date-time | End date and time |
isOffline | boolean | Unpublished (draft/disabled) |
isPublic | boolean | Publicly visible to guests |
dates | array<string> | Specific dates the event takes place (for recurring events) |
additionalInfo | object | Attributes/requests available at the event (see below) |
reservationHours | array | Reservation hours by day of the week (see “Schedule”) |
openingHours | array | Event operating hours by day of the week |
specialPeriods | array | Special periods/exceptions in the schedule |
reservationSettings | object | Event booking settings (ReservationSettingsContract) |
depositRules | object | Deposit/prepayment rules |
Event attributes (additionalInfo)
Boolean flags for which requests/options are available at the event:
highChair, babyChair, babyCarrier, stroller, vip, booth, highTop, table,
party, contactless, dontDisturb, needCardReader, allergy, vegetarian, event,
handicapAccessible, proofOfVaccinationOrTest, showNotes. Plus a customs[] array
(custom attributes: id, type, label, icon, description, important, online, data[]).
Tickets and price
Event price/tickets are set at the floor plan level: floors[].event (EventInfoContract)
holds a tickets[] array (EventTicketContract):
| Field | Type | Description |
|---|---|---|
id | string | Ticket identifier |
eventId | integer | Event ID |
type | string | Ticket type |
title | string | Ticket title |
description | string | Description |
amount | integer | Ticket price |
The event deposit/prepayment is configured via
reservationSettings.depositRules,reservationSettings.depositEvents[]andreservationSettings.creditCardChargeEnabled. Capacity and guest limits — via thereservationSettingsfields (maxGuestsPerReservation,minGuestsPerReservation,defaultMaxCoversPerSlot,totalCoversAvailableAtTime,maxBookingsPerSlot, etc.).
Event schedule
The schedule is defined by three arrays in the event model:
openingHours[]— event operating hours by day of the week.reservationHours[]— the hours during which reservations are accepted.specialPeriods[]— one-off exceptions (holidays, reschedules, closures).
Each openingHours/reservationHours element is a WeekDayOpenHoursContract:
| Field | Type | Description |
|---|---|---|
weekDay | integer | Day of the week (0–6) |
time | array | Intervals of the day (HourlyIntervalContract) |
An HourlyIntervalContract interval: open (start), close (end), name (interval label).
A specialPeriods[] element (SpecialPeriodContract): starts, ends, closed (closed during this
period), repeat (recurring), isSystem (system), time[] (intervals).
All events
GET /events
Returns an array of EventDetailsContract.
| Parameter | In | Type | Description |
|---|---|---|---|
restaurantId * | path | integer | Restaurant identifier |
curl -G https://api.hostmeapp.com/api/core/admin/restaurants/123/events \ -H "Authorization: Bearer $TOKEN"The /events/active, /events/past and /events/draft endpoints take the same parameters and
return the same EventDetailsContract array, but filtered:
/events/active— published/ongoing events;/events/past— events that have ended;/events/draft— drafts (isOffline = true).
curl -G https://api.hostmeapp.com/api/core/admin/restaurants/123/events/active \ -H "Authorization: Bearer $TOKEN"Get an event
GET /events/{eventId}
Returns the event as a RestaurantFullContract (full structure: schedule,
reservationSettings, the floors[] floor plan with event tickets).
| Parameter | In | Type |
|---|---|---|
restaurantId * | path | integer |
eventId * | path | integer |
curl https://api.hostmeapp.com/api/core/admin/restaurants/123/events/4567 \ -H "Authorization: Bearer $TOKEN"Use the response as the base for a subsequent
PUT— change only the fields you need and send the object back.
Create an event
POST /events
Creates a new event. The body is a RestaurantFullContract (the same structure as the restaurant
settings, but describing an event): name, description, promo image, dates, schedule
(openingHours/reservationHours/specialPeriods), booking settings
(reservationSettings), and the event’s floor plan with tickets (floors[].event.tickets[]).
| Parameter | In | Type |
|---|---|---|
restaurantId * | path | integer |
curl -X POST https://api.hostmeapp.com/api/core/admin/restaurants/123/events \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "Wine Dinner", "description": "A five-course tasting with our sommelier", "startDate": "2026-07-15T19:00:00", "endDate": "2026-07-15T23:00:00", "isPublic": true }'This is a simplified example. In practice the schedule and
reservationSettingsare sent along with the event. It is easier to copy the structure from an existing event (GET /events/{eventId}) and substitute your own values.
Update an event
PUT /events/{eventId}
Updates the event. The body is a RestaurantFullContract (as for creation).
| Parameter | In | Type |
|---|---|---|
restaurantId * | path | integer |
eventId * | path | integer |
curl -X PUT https://api.hostmeapp.com/api/core/admin/restaurants/123/events/4567 \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "Wine Dinner (updated name)", "isPublic": true }'Delete an event
DELETE /events/{eventId}
Deletes the event.
| Parameter | In | Type |
|---|---|---|
restaurantId * | path | integer |
eventId * | path | integer |
curl -X DELETE https://api.hostmeapp.com/api/core/admin/restaurants/123/events/4567 \ -H "Authorization: Bearer $TOKEN"The response is
200 OKwith no body.
Copy an event
POST /events/{copyFromId}/saveas
Creates a new event based on an existing one (copyFromId). The body is a RestaurantFullContract
with the new event’s fields (for example, a new name and dates); everything else is copied from the source.
| Parameter | In | Type | Description |
|---|---|---|---|
restaurantId * | path | integer | Restaurant identifier |
copyFromId * | path | integer | Source event ID |
curl -X POST https://api.hostmeapp.com/api/core/admin/restaurants/123/events/4567/saveas \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "Wine Dinner — August", "startDate": "2026-08-15T19:00:00" }'Publish / unpublish
PUT /events/{eventId}/status
Changes the event’s publication status. Controlled by the isOffline query parameter:
isOffline=false — publish (make active), isOffline=true — unpublish
(return to drafts).
| Parameter | In | Type | Description |
|---|---|---|---|
restaurantId * | path | integer | Restaurant identifier |
eventId * | path | integer | Event ID |
isOffline | query | boolean | true — unpublish, false — publish |
# Publish the eventcurl -X PUT "https://api.hostmeapp.com/api/core/admin/restaurants/123/events/4567/status?isOffline=false" \ -H "Authorization: Bearer $TOKEN"The response is the updated event (RestaurantFullContract).
System status change
PUT /events/{eventId}/status/system
The system variant of the status change — the same parameters (isOffline) and the same response.
Intended for service/automatic status switching.
The exact success response schemas for create/update are documented as
RestaurantFullContract; see the full structure with all nested objects in Swagger UI. Documented errors —ProblemDetails(see Errors).