package routes import ( "nearle/facade" "github.com/gofiber/fiber/v2" ) // Routes for the Nearle POS terminal. // // The paths are fixed by the till, which appends `/orders`, `/customers` and // `/catalogue` to whatever base URL a shop enters in Settings. Set that base to // this group — `https://your-host/live/api/v1/pos` — and the three line up. // // Kept in their own group rather than folded into the order routes because a // terminal authenticates as a device, not as a signed-in user, and because // these answer with a bare ack rather than the web app's response envelope. func RegisterPosRoutes(api fiber.Router, f *facade.Facade) { pos := api.Group("/v1/pos") pos.Post("/orders", f.PosController.IngestOrders) pos.Post("/customers", f.PosController.IngestCustomers) pos.Get("/catalogue", f.PosController.Catalogue) // The 30-second heartbeat, for tills on the HTTP route. The broker carries // the same payload for tills on MQTT; both land in the same Redis record, // so the fleet board cannot tell them apart and does not need to. pos.Post("/health", f.PosController.IngestHealth) // Counter sales, read back out. The ingest above only ever writes; without // these a committed bill is unreachable from every screen in the product. pos.Get("/sales", f.PosController.GetSales) pos.Get("/sales/detail", f.PosController.GetSaleDetail) pos.Get("/sales/summary", f.PosController.GetSalesSummary) // Terminal presence, read from Redis. What the rider app's POS board and a // support call both hit — the tills themselves publish health over the // broker rather than posting it here. pos.Get("/health/terminal", f.PosController.TerminalHealth) pos.Get("/health/location", f.PosController.LocationHealth) }