# Hospitality API Connection Report **Date:** 2026-07-26 ## Connection path ``` Browser → /api/hospitality/* (BFF) → hospitality-service:8009 Headers: Authorization, X-Tenant-ID Client: modules/hospitality/services/hospitality-api.ts ``` ## Resources wired All 50 registry entries call `hospitalityApi.*` methods — no mocks. | API group | Endpoints used | |-----------|----------------| | Foundation | venues, branches, diningAreas, tables | | Catalog | menus, menuCategories, menuItems, modifierGroups, modifierOptions, availabilityWindows, menuMediaRefs | | QR | qrCodes, qrMenuSessions, qrOrderingSessions, carts, cartLines | | Table service | reservations, waitlist | | Kitchen | kitchenTickets, kitchenTicketItems | | POS Lite/Pro | posRegisters, posTickets, posPayments, posDiscounts, posFloorPlans | | Connectors | connectorRegistrations, connectorDispatches | | Analytics | analyticsReports, analyticsSnapshots | | Admin | settings, permissions, roles, events, tenantBundles, featureToggles | | Platform | health, capabilities | ## Workflow endpoints | UI action | API call | |-----------|----------| | Confirm reservation | `POST /api/v1/reservations/{id}/status` | | Submit QR order | `POST /api/v1/qr-ordering-sessions/{id}/submit` | | Kitchen ready | `POST /api/v1/kitchen-tickets/{id}/status` | | Void POS ticket | `POST /api/v1/pos-tickets/{id}/void` | | Deactivate bundle | `POST /api/v1/tenant-bundles/{id}/deactivate` | | Upsert setting | `POST /api/v1/settings/upsert` | ## Real-time pages | Page | refetchInterval | |------|-----------------| | kitchen/display | 5000ms | | kitchen/queue | 5000ms | | kitchen/preparation | 5000ms | | orders/timeline | 8000ms | | dashboard | 30000ms | | health | 15000ms | ## Error handling - `HospitalityApiError` → 403 shows permission empty state - Network errors → Persian message with URL - 401 → token refresh retry - Mutations → toast success/error via sonner ## Validation - TypeScript: hospitality module passes `tsc --noEmit` - All buttons invoke real `useMutation` / `useQuery` handlers - No `TODO`, no `mock`, no `fake` in feature layer