--- sidebar_label: 'Opening hours' sidebar_position: 3 --- # Opening hours :::note These articles use the stores import formats to describe stores, most important for producers of the store data (e.g. POS system integration creating stores). Since a store can contain tenant-specific extensions, use the Stores schema endpoints in your specific tenant to understand details on consuming store data. ::: `openingHours` is an ordered list of rules. The first rule where all `conditions` evaluate to true is used for the current date. This means the order of opening hours are important: place specific exceptions before broad fallback rules. ## Opening hours rule model | Field | Type | Required | Description | Example | |---|---|---|---|---| | `conditions` | `array` | Yes | One or more conditions that must all match. | `[{ "type": "dayofweek", "days": ["Monday"] }]` | | `open` | `array` | Yes | The open interval(s) to apply when conditions match. Empty array means closed for matching dates. | `[{ "from": "08:00", "to": "14:00" }]` | ## Condition types ### `always` | Field | Type | Required | Description | Example | |---|---|---|---|---| | `type` | `string` | Yes | Constant value `always`; always matches. | `"always"` | ### `never` | Field | Type | Required | Description | Example | |---|---|---|---|---| | `type` | `string` | Yes | Constant value `never`; never matches. | `"never"` | ### `dayofweek` | Field | Type | Required | Description | Example | |---|---|---|---|---| | `type` | `string` | Yes | Constant value `dayofweek`. | `"dayofweek"` | | `days` | `array` | Yes | Days that should match. Allowed: `Monday` ... `Sunday`. | `["Monday", "Tuesday"]` | ### `specificdates` | Field | Type | Required | Description | Example | |---|---|---|---|---| | `type` | `string` | Yes | Constant value `specificdates`. | `"specificdates"` | | `dates` | `array` | Yes | Explicit dates that should match. | `["2026-12-24", "2026-12-31"]` | ### `betweendates` | Field | Type | Required | Description | Example | |---|---|---|---|---| | `type` | `string` | Yes | Constant value `betweendates`. | `"betweendates"` | | `fromIncl` | `string(date)` | Yes | Inclusive start date. | `"2026-06-01"` | | `toIncl` | `string(date)` | Yes | Inclusive end date. | `"2026-08-31"` | ## Open interval fields | Field | Type | Required | Description | Example | |---|---|---|---|---| | `from` | `string(HH:mm)` | Yes | Opening time for the interval. | `"08:00"` | | `to` | `string(HH:mm)` | Yes | Closing time for the interval. | `"14:00"` | | `toNextDay` | `boolean` | No | When `true`, `to` is interpreted as next day. | `true` | ## Example with exception and fallback ```json { "openingHours": [ { "conditions": [ { "type": "specificdates", "dates": ["2026-12-24"] } ], "open": [] }, { "conditions": [ { "type": "dayofweek", "days": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"] } ], "open": [ { "from": "08:00", "to": "16:00" } ] }, { "conditions": [ { "type": "always" } ], "open": [ { "from": "00:00", "to": "00:00", "toNextDay": true } ] } ] } ``` In this example, 24 Dec is closed, weekdays are open 08:00–16:00, and a final fallback covers all remaining days with open 24 hours each day.