Open Calendar Service From KDS
Open the current KDS service by selecting the closest eligible public calendar service occurrence for Harbor Soho and linking it to a new open service session.
In this article
Use this guide when Harbor Soho has no active KDS service and a TPV-authorised operator needs to start the live kitchen context from a planned public service such as Soho lunch service.
KDS suggests the nearest eligible public service occurrence for the current client day. It is not a full calendar picker, and manual service opening is a separate action.
Before you start
- Harbor Demo Group and Harbor Soho are selected.
- KDS is enabled for Harbor Soho through `tpv_settings.enable_kds`.
- The operator can access KDS and has backend-valid TPV operation access; the backend requires `tpv:use`.
- No `service_session` with `status: "open"` already exists for Harbor Soho.
- A public calendar event of kind `service` has an occurrence in the KDS candidate window: same client day, not ended more than 1 hour ago, and not starting more than 6 hours ahead.
- For GB captures, refresh the runtime occurrence before recording because `SERVICE_OCCURRENCE_START` is `2026-06-23T12:30:00+00:00`, outside the current `2026-06-25` capture context.
Instructions
- 1.
Open KDS for Harbor Soho
Open `/${ORG_ID}/${LOCATION_ID}/kds`. The page checks the selected organisation and location, verifies KDS access, loads TPV settings, and treats an expected active-service not-found response as no open service.
- 2.
Review the closest service suggestion
Select `Open service` and review `Closest service` in the modal. When Soho lunch service is a valid public service occurrence in the candidate window, KDS preselects it as the suggested calendar service.
- 3.
Confirm the calendar service
Select `Open calendar service`. The request sends only `{ "occurrence_id": "<calendar_occurrence.id>" }` to `POST /api/app/{orgId}/{locationId}/service-sessions`; it does not create a manual service.
- 4.
Continue in the active KDS service
After success, the modal closes, service-session queries refresh, and the KDS header moves to the active-service state for the opened calendar-linked service session.
Validations and limits
- If KDS is disabled in TPV settings, the board is blocked before service opening is offered.
- If another service is already open, KDS shows active-service controls instead of the calendar-opening path.
- KDS-only access can view the board but cannot open the calendar service; opening is governed by TPV operation access and backend `tpv:use`.
- Only public calendar events of kind `service` are valid candidates. Internal services, non-service events, other-location occurrences, missing occurrences, and invalid timestamps are rejected or excluded.
- If no eligible occurrence is available, `Closest service` is disabled; use `kds.open-service-manual` for a manual service.
- The backend rejects conflicts when another open `service_session` exists for the same location.
- Opening from KDS does not update tickets, ticket item production status, cash registers, payments, or TPV output jobs.
Expected result
Harbor Soho has an open `service_session` linked to the selected public calendar event and occurrence. The occurrence is prepared for live operation, the KDS board is scoped to that service, and post-open ticket or output-job processing remains documented under separate KDS and TPV actions.