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:
Weekly hours object
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:
Go to Store Locations
Click the Export button to generate a current list of stores
Open the exported CSV file
Update the CSV with your data
Paste your Weekly Hours JSON into the
operating_hourscolumn for each storeClick Import and run through the import wizard
When prompted, choose
operating_hoursfrom the dropdown to allow the JSON to update store settingsIf 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
fromis earlier thantoDo not overlap exception date ranges
Use clear, human‑readable
reasonvalues
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.
