Skip to main content

Importing Store Hours and Exception Dates

Here is an overview of the format used to import hours and dates for your stores operating hours and exception or holiday dates

Updated over 3 weeks ago

Import Operating Hours (JSON‑LD Format)


Overview

RP Promap allows you to import operating hours using a structured JSON‑LD–style object. This makes it easy to bulk‑define weekly hours and date‑specific exceptions (such as holidays or special events) in a single import.

This document explains:

  • Required structure

  • Weekly hours schema

  • Exception (date‑range) schema

  • Status flags and time slots

  • Common examples and validation tips


1. Weekly Operating Hours Structure

Weekly hours are defined as a day‑keyed object. Each day contains metadata, time slots, and an open/closed status.

Day Keys

Use the following fixed keys:

Key

Day

sun

Sunday

mon

Monday

tue

Tuesday

wed

Wednesday

thu

Thursday

fri

Friday

sat

Saturday


Day Object Schema

Each day must include the following fields:

Field

Type

Description

keyname

string

Full lowercase weekday name

name

string

Display name

slot

array

One or more time ranges

status

number

1 = Open, 0 = Closed

Slot Object

Each slot defines a continuous operating window:

Field

Format

Example

from

HH:MM (24h)

09:00

to

HH:MM (24h)

17:00


Example: Weekly Hours

{   "sun": {     "keyname": "sunday",     "name": "Sunday",     "slot": [{ "from": "09:00", "to": "17:00" }],     "status": 1   },   "mon": {     "keyname": "monday",     "name": "Monday",     "slot": [{ "from": "09:00", "to": "17:00" }],     "status": 0   } }

Tip: If status is 0, the day is considered closed, but the slot structure must still be valid.


2. Exception & Holiday Hours

Exceptions allow you to override weekly hours for specific date ranges, such as holidays or special schedules.

Exceptions are provided as an array of objects following the weekly schedule.


Exception Object Schema

Field

Type

Description

reason

string

Label for the exception

from_date

YYYY/MM/DD

Start date (inclusive)

to_date

YYYY/MM/DD

End date (inclusive)

slot

array

Special operating time slots

Exception slots replace weekly hours for the specified date range.


Example: Holiday Exception

[   {     "reason": "Christmas Eve",     "from_date": "2025/12/24",     "to_date": "2025/12/25",     "slot": [{ "from": "10:00", "to": "15:00" }]   } ]

3. Combined Import Format

When importing, RP Promap expects:

  1. Weekly hours object

  2. Exception array (optional but recommended)

Full Example

{   "sun": { "keyname": "sunday", "name": "Sunday", "slot": [{ "from": "09:00", "to": "17:00" }], "status": 1 },   "mon": { "keyname": "monday", "name": "Monday", "slot": [{ "from": "09:00", "to": "17:00" }], "status": 0 },   "tue": { "keyname": "tuesday", "name": "Tuesday", "slot": [{ "from": "09:00", "to": "17:00" }], "status": 0 },   "wed": { "keyname": "wednesday", "name": "Wednesday", "slot": [{ "from": "09:00", "to": "17:00" }], "status": 0 },   "thu": { "keyname": "thursday", "name": "Thursday", "slot": [{ "from": "09:00", "to": "17:00" }], "status": 0 },   "fri": { "keyname": "friday", "name": "Friday", "slot": [{ "from": "09:00", "to": "17:00" }], "status": 0 },   "sat": { "keyname": "saturday", "name": "Saturday", "slot": [{ "from": "09:00", "to": "17:00" }], "status": 0 } } [   {     "reason": "Christmas Eve",     "from_date": "2025/12/24",     "to_date": "2025/12/25",     "slot": [{ "from": "10:00", "to": "15:00" }]   } ]

4. UI Walkthrough — Where to Paste This in RP Promap

Follow these steps to import operating hours into RP Promap:

  1. Go to Store Locations

  2. Click the Export button to generate a current list of stores

  3. Open the exported CSV file

  4. Update the CSV with your data

  5. Paste your Weekly Hours JSON into the operating_hours column for each store

  6. Click Import and run through the import wizard

  7. When prompted, choose operating_hours from the dropdown to allow the JSON to update store settings

  8. If validation passes, click Save & Import

RP Promap will validate the JSON for each row and apply operating hours per store record.


5. Multiple Time Slots Per Day

RP Promap supports multiple operating windows per day, useful for breaks or split shifts.

Example: Split Hours (Lunch Break)

"fri": {   "keyname": "friday",   "name": "Friday",   "slot": [     { "from": "09:00", "to": "12:00" },     { "from": "13:00", "to": "17:00" }   ],   "status": 1 }

6. Closed-for-Holiday Example (No Slots)

To mark a date range as fully closed, provide an exception with an empty slot array.

[   {     "reason": "Christmas Day",     "from_date": "2025/12/25",     "to_date": "2025/12/25",     "slot": []   } ]

An empty slot array explicitly overrides weekly hours and marks the day as closed.


7. Error Messages & Troubleshooting

Common Validation Errors

Error Message

Cause

Fix

Invalid time format

Time not in 24h HH:MM

Use 09:00, not 9am

Missing day key

One or more days omitted

Include all 7 days

Overlapping slots

Time ranges overlap

Adjust slot boundaries

Invalid date range

from_date > to_date

Swap dates

Exception overlap

Two exceptions share dates

Merge or adjust ranges

Troubleshooting Tips

  • Always validate JSON with a formatter before importing

  • Ensure quotes are straight quotes, not smart quotes

  • Do not include comments inside JSON

  • Keep date format strictly YYYY/MM/DD


8. Validation Rules & Best Practices

  • Use 24‑hour time format only

  • Always include all seven days

  • Ensure from is earlier than to

  • Do not overlap exception date ranges

  • Use clear, human‑readable reason values


5. Common Use Cases

  • Retail store hours

  • Office business hours

  • Holiday schedules

  • Seasonal reduced hours

  • Temporary closures with limited slots


Need Help?

If your import fails validation or you need help generating schedules programmatically, contact Rose Perl Technology Support or refer to the next guide in the RP Promap Help Series.

Did this answer your question?