Antylogic
DemoApp login

399 operational guides

Docs sections
DocsReservations
Device

How to delete a reservation

Permanently remove a reservation from a service occurrence, clear its table assignments, refresh the occurrence detail, and keep the difference from cancellation explicit.

In this article

Use this flow when a reservation was created by mistake and should be removed from the active service plan entirely. Deleting is permanent: the reservation record is removed instead of being kept with cancelled status.

The delete decision appears from the occurrence reservation list, from the reservation editor, and from the waitlist surface. After a successful delete, Antylogic refreshes the occurrence, reservations, and table assignments, then invalidates the occurrence optimisation state so the service plan is recalculated from the remaining reservations.

Before you start

  • Harbor Demo Group and Harbor Soho are active in the GB demo context when using the documented capture route.
  • The operator has `reservation:manage` at location scope. `reservation:view` can open the occurrence detail, but it cannot expose or run mutable delete actions.
  • Open a valid occurrence at `reservations/:occurrenceId`, for example `BOOKING_DETAIL_OCCURRENCE_ID` for the Soho lunch service.
  • Use `BOOKING_DETAIL_RESERVATION_LABEL=Liam Scott` only for non-destructive screenshots that stop before the final `Eliminar` action.
  • For any capture that confirms deletion, create and use `BOOKING_DELETE_TEMP_RESERVATION_LABEL` in a disposable documentation runtime.

Instructions

  1. 1.

    Open the occurrence detail

    Open `reservations/:occurrenceId` for the relevant service. The screen loads the occurrence, reservations, customers, and table assignments when the active `orgId`, `locationId`, and occurrence id are valid.

  2. 2.

    Find the reservation

    Locate the reservation that should be removed in the occurrence reservation list. In the GB demo, use Liam Scott for safe captures that demonstrate the choice without changing seeded data.

  3. 3.

    Open the delete choice

    Use the row action labelled `Eliminar`. If the editor is already open, the `Cancelar reserva` button opens the same decision modal. From the waitlist panel, the destructive swipe action also leads to the same choice.

  4. 4.

    Confirm permanent deletion

    In the modal titled `¿Qué quieres hacer con esta reserva?`, choose `Eliminar` only when the reservation should be removed permanently. Choose `Cancelar reserva` when the intended outcome is the separate cancellation flow, or close the modal to leave the reservation unchanged.

  5. 5.

    Check the refreshed occurrence

    After success, confirm that the deleted reservation no longer appears in the reservation list or waitlist and that table assignments reflect only the remaining reservations.

Validations and limits

  • The detail query requires active `orgId`, `locationId`, `occurrenceId`, and either `reservation:view` or `reservation:manage`.
  • The delete action is visible only with `reservation:manage`; rows already marked cancelled do not expose the normal delete action in the UI.
  • The final request is `DELETE /api/app/{orgId}/{locationId}/reservations/{reservationId}` with no request body.
  • Backend checks `reservation:manage`, loads the reservation, and verifies that its `LocationID` matches the `locationId` in the route.
  • Choosing `Cancelar reserva` is not deletion; it uses `PUT /api/app/{orgId}/{locationId}/reservations/{reservationId}` with `status: 'cancelled'` and `table_ids: []`.
  • While the delete is pending, the modal disables dismissal and buttons. If the request fails, the app shows the delete error toast with `No pudimos guardar los cambios.`

Expected result

The API returns `204 No Content`, the reservation and its table assignments are gone, occurrence data is refreshed, the editor or open waitlist state is cleared, and the associated customer remains available for future use.

Related articles