Assign a floor plan to a service
Choose the Layout used by a public service so Harbor Soho can calculate booking capacity, availability and table assignment from the correct floor plan.
In this article
A public service needs a floor plan before it can work as bookable table capacity. In Antylogic, the service form stores the selected floor plan on the calendar event payload as `layout_id`, alongside the catalogue used for the public booking flow.
Internal services do not show or require the Layout field. For public services, choose an existing location layout such as Demo floor plan 1 and pair it with the Soho Menu catalogue before saving.
Before you start
- You are signed in to `/api/app` and working in Harbor Demo Group > Harbor Soho.
- You have `service:view` to open the screen and `service:manage` to create or save services.
- You have `layout:view` so the form can load the location's available layouts.
- At least one floor plan exists for Harbor Soho. New layouts are created from location settings, not inside the service form.
- For a public service, a catalogue such as Soho Menu must also be selected before the service can be saved.
Instructions
- 1.
Open the service form
Create a new calendar service or edit an existing service such as Soho lunch service. The route must include `kind=service` so the service-specific capacity fields are displayed.
- 2.
Keep the service public
Use public visibility when the service should accept reservations and use table capacity. Public services require Layout and Catalogue; internal services hide the Layout section and do not send `layout_id`.
- 3.
Choose the Layout
Open the Layout selector and select one of the layouts available for the active Harbor Soho location. New services preselect the default layout when one exists, otherwise the first available layout is used.
- 4.
Select the catalogue and save
Choose Soho Menu or the relevant service catalogue, then save the service. The service bundle sends `event.payload.layout_id` and `event.payload.catalog_id` to the create or update endpoint.
- 5.
Handle recurring edits
When editing a recurring service, choose whether the change applies only to the selected occurrence or to future occurrences before the update is applied.
- 6.
Review assignment impact
Changing the layout on an existing service can trigger future occurrence migration. Antylogic tries to preserve restricted tables, preferred tables and assigned reservation tables by matching zone and table names.
Validations and limits
- Public services require both `layout_id` and `catalog_id`; a floor plan alone is not enough to save.
- The frontend requires title, start time, end time and `start < end` before submitting.
- The backend accepts only supported service payload keys and requires UUID format for `layout_id`, `catalog_id` and optional `optimization_config_id`.
- The inspected create/update path validates presence and UUID format for public services, but the evidence does not prove an existence or same-location check for `layout_id` at that point.
- If no layouts exist, the form tells the operator to create one in location settings and blocks saving a public service.
- A layout change can be blocked when existing required or assigned tables cannot be mapped into the new floor plan.
Expected result
The service is saved with `calendar_events.payload.layout_id`, allowing reservations, capacity checks, table assignment and TPV floor context to use the selected Harbor Soho layout.