Meal Costs
Per-meal, per-tag pricing (adult and child cost). Updates propagate to channel_meal and downstream listing_channel_meal rows. Supports single, bulk, and CSV upload/export.
📄️ List meal costs (paginated)
Returns a page of meal cost rows. Default size is 20. When `mealId` is supplied, all matching rows are returned without pagination (cardinality is naturally small — one row per tag). When both `mealId` and `tagName` are supplied, the single matching row is returned.
📄️ Upsert one meal cost
Sets the (mealId, tagName) → (perAdultCost, perChildCost) row and propagates to channels and listings.
📄️ Export all meal costs as CSV
Streams `meal_costs.csv`.
📄️ Download a CSV template
Streams `meal_costs_sample.csv`.
📄️ Get a meal cost row by its numeric id
Get a meal cost row by its numeric id
📄️ Delete a meal cost row by id
Removes the row. Cascades to listing_channel_meal rows that reference this meal_cost_id (their FK is ON DELETE CASCADE).
📄️ Upsert meal costs in bulk
Bulk-applies a list of MealCost rows. Each row keyed by (mealId, tagName).
📄️ Bulk upsert from CSV upload
Multipart/form-data upload. Field name `file`. Use the `/sample` endpoint to download a template.