What this example includes
Request
Setavailability.schedules on the product. Use the same weekly shape as menu schedules: exactly 7 day_of_week entries (monday–sunday), each with a periods array. Open periods use start_time / end_time; optional closed defaults to false; optional start_date / end_date bound a dated window. Use null when the product has no hour restriction. See Schedules.
product-special-schedule.json
Key points
- Menu vs product schedules. The menu stays active all day. The beer is hidden outside 17:00–19:00 on weekdays even though the category and menu remain visible.
- Full week required. Weekend days still appear with
"periods": [](closed all day). Partial weeks fail validation. - Categories can be scheduled too. Use
categories[].availability.scheduleswhen an entire section should appear only during certain hours. - Temporary unavailability. For one-off 86s, prefer
availability.status: OUT_OF_STOCKwithout_of_stock_untilinstead of rebuilding schedules. - Per-context overrides. To change product hours for one channel, store, fulfillment type, or composed menu without a full menu upsert, call Update product with
?store_id,?channel_id,?fulfillment_id, and/or?menu_id, sendingavailability.schedulesin the menu product body.
Related
Menu sync — schedules
Menu, category, and product schedule levels
Multi-schedule menu
Two daypart menus in one upsert