{"success":true,"data":{"status":"ok","routes":[{"route":"GET /","desc":"Return available routes for the app"},{"route":"GET /health","desc":"Return app health and db connection"},{"route":"GET /products?q=&page=&limit=","desc":"Return paginated list of products with optional name search"},{"route":"GET /products/:barcode","desc":"Return a single product by barcode"},{"route":"GET /products/:barcode/prices","desc":"Return a product with its current prices across all stores"},{"route":"GET /products/:barcode/prices/:storeId","desc":"Return the price of a product in a specific store"},{"route":"GET /products/groups?q=&page=&limit=","desc":"Search product groups by name (normalized product names across chains)"},{"route":"GET /products/groups/:id","desc":"Return a product group with all its member barcodes"},{"route":"GET /products/groups/:id/prices/:storeId","desc":"Return the cheapest price for a product group at a specific store"},{"route":"GET /stores/chains","desc":"Return all supermarket chains with their store counts"},{"route":"GET /stores?city=&chain=&page=&limit=","desc":"Return paginated list of stores with optional city and chain filters"},{"route":"GET /stores/:id","desc":"Return a single store by ID including chain information"},{"route":"POST /basket/compare","desc":"Compare total basket price across stores for a list of barcodes"},{"route":"POST /importer/run","desc":"Trigger the data import pipeline"}],"timestamp":"2026-08-07T03:45:56.390Z"},"timestamp":"2026-08-07T03:45:56.390Z"}