This packet of data includes a full list of places to render in the apps places/things to do section. Some of this data is also shown in the park map, as well as being linked to other entities, such as offers and events.
A place can be considered in three ways depending on the type of app :
• OnSite : A on park facility, place to eat, or activity venue – These have map points, and can link to filter the whats on area
• OffSite : A off park attraction or location to visit – These have their own contact information and do not show on the park map
• Singular : The wildcard mix for none park directories – treated as onsite places by the app to show on a map but includes offsite fields to have their own contact details etc
Generally a holiday park would have a list of onsite and offsite records. These both render in the same section of the app but then are filtered by user defined menu items for the categories. Apart from the rendering ‘link to whats on’ CTA button on a detail record, the app renders both offsite and onsite places the same – so all fields are safe to send regardless of the ‘offSite’ boolean.
The park map section of the app will only include onsite records.
Places are also filtered based on groupsite so if your app surfaces are part of a multi park install, then places should be marked with which parks they should be available for.
This packet of place data also includes the definition for the places/things to do menu. This menu differs to the rest of the apps categories on many ways.
An example menu could be as follows :
{
"places": [
{
//Place 1
},
{
//Place 2
}
],
"menu": [
{
//Menu Definition 1
},
{
//Menu Definition 2
}
],
"lastChange": 1691504109
}Type : Array of Place Menu Item - Required
Things to do / Place menu for the app to render. This is a flat array, but can include items to render side by side as 'double' items, and also submenus of full size items.
Type : Epoch Date/Time Integer - Optional
Last change in UTC/GMT - Optionally used so our system knows if it should trigger data invalidation to end users devices.
As we connect to different systems using a range of different languages, we can interpret several things as a true. Generally speaking holidaymaker will use a standard true/false JSON boolean, however we also read a lower case string and checked if they are "1", "true", "yes", or "on" to then create the positive boolean. Unless explicitly noted, all booleans are defaulted as false if the node doesn't exist.
{
"optionOne": true,
"optionTwo": false,
"allTheseAreValidTrues" : [
1, "1", true, "true", "on", "yes"
]
}A string value which should be a valid 24bit hexadecimal string. For example "#FF0000" for red. This is parsed by the app surfaces and defaults to a brand color if invalid.
{
"color": "#FF00FF"
}A single definition to define how far an entity is from your chosen park in miles and what the estimated car travel time is in minutes. Single site installs still require the site node and should say 'default' - multi park installs should use the groupsite key for this specific distance/travel time.
{
"site": "park-one",
"distance": 2.09,
"time": 6
}Type : String - Required
For single park installs this should be 'default' else it should be the groupsite key this data relates to
Type : Floating Point Numeric - Optional
This is distance from the park in miles. App will truncate floating points to two when rendering. If both points are zero the app will render it as an integer. The app will also prefix with mile or miles. eg "3.25 miles", "1 mile", or "22 miles". Default is 0.0
Type : Integer - Optional
Estimated driving travel time to this location in minutes. This should be an integer as minutes but will be rendered as hrs/mins eg 126 = "2 hrs 6 mins", 58 = "58 mins", 61 = "1 hr 1 min". Default is 0
When dealing with time, as well as dates, our data packets will typically use an epoch integer. Our date/times will normally be in UTC/GMT - unless it will be a renderable time to the end user, when it currently will use the 'Europe/London' timezone to take into account daylight savings time.
{
"lastChange": 1691481892,
"time": 1691398800,
"endTime": 1691402400
}Float and Double values are handled as normal JSON. Depending on the precision of the language sending/receiving the data can depend on the truncation of the decimal points. However due to the context of our data, only location lat/lng numbers will normally have more than 2-3 points.
{
"cost": 55.5,
"lat": 50.71245750791539,
"lng": -2.4619866156242995
}Our app surfaces talk to an image engine on our infrastructure to process and resize images for different smart phone screen densities. Because of this the size of images are less relevant as they are delivered at optimum sizes anyway. However due to processing power and speed we do recommend that image urls are all 3000 pixels or below. The app surfaces will never need an image this large, so it gives you the option of still having a large quality image, but can be loaded in the apps and our infrastructure efficiently. We support both png, jpeg, and webp images. You can optionally include a '?v=' version integer so this can be used for versioning. If you do include this you can ensure images are reprocessed if the source image is changed on your servers.
{
"imgUrl": "https://your-wordpress-site.com/wp-content/uploads/2023/08/a-large-image-3000x2100.jpg?v=1691481892",
"image": "https://your-wordpress-site.com/wp-content/uploads/2023/08/a-smaller-image.png"
}Standard JSON Integer - 0 is commonly considered to be a default value, unless it is an valid ID when -1 is used. For sort priorities 99 is used as the default.
{
"key1": 9,
"key2": 42,
"arrayOfInts": [
2,
3,
5,
8
]
}This is a legacy type which works the same as the 'link' object, however for legacy reasons has different node names.
{
"name": "Owner's on park agreement",
"file": "https://your-wordpress-install.com/wp-content/uploads/2023/02/owners.pdf"
}Type : String - Required
Name of file which should be used on the CTA button when rendering on a detail page
Type : Url String - Required
External url that the CTA button should try to externally open
This is a single item for opening times if they are set to the 'timescopy' opening times type. Each one renders the heading in bold with the times in standard text. If a note is included it renders under that specific item in smaller text.
{
"heading": "Fri - Sun",
"times": "10.00 - 23.00",
"note": "Last orders is 22:00"
}Type : String - Required
Bold heading of opening time row - eg 'Monday - Friday'
Type : String - Required
Standard text of opening time row eg '12noon - 5pm'
Type : Rich Text / Multiline String - Optional
Optional addition text to add after title/times
This is the full object for opening times. It may include just an opening times type, but may also include a selection of opening times text items to render.
{
"openType": "timescopy",
"textItems": [
{
"heading": "Mon - Thurs",
"times": "12.00 – 22.00"
},
{
"heading": "Fri - Sun",
"times": "10.00 - 23.00",
"note": "Last orders is 22:00"
}
]
}Type : Opening Times Type - Required
Type of opening times to render. Defaults to 'na'
Type : Array of Opening Time Text Item - Optional
If the open type is set to 'timescopy' this is a list of the text items to render. Each one includes a heading and times, with optional notes
Type : Rich Text / Multiline String - Optional
Extra notes which is added after all of the times items are rendered, or it open type is set to always open
This is string definition to set how a menu item will behave. The options available are :
• "na" - Do not show opening times at all (default)
• "always" - Show opening times heading with 'Always Open' as a single item
• "timescopy" - Define specific opening times items
{
"openType": "na"
}This is the main place entity. It can be marked as 'offSite' so the app can do the minor differentiation it needs. Although these are different entities in our CMS, they share some common meta data, and the app treats them as a single entity.
Properties below are marked if they are normally respected only by Onsite, Offsite place types. (Singular places are seen as onsite by the app, but have access to some normally offsite only fields - eg contact details)
{
"id": 71,
"title": "The Sports Bar",
"description": "Enjoy a family meal or enjoy live sports TV in our Sports Bar, with 12 HD TVs, a soft play area, an arcade and sun terrace. ",
"copy": "The Sports Bar is a firm family favourite with something for everyone; from sports TV to a soft play area & arcade. #BREAK##BREAK#Open for breakfast, lunch & dinner, on the varied menu you’ll find; pub classics, curry club dishes, freshly made pizzas, wings, nachos & more.#BREAK##BREAK#Booking not required.",
"priority": 10,
"offSite": false,
"imgUrl": "https://your-wordpress-install.com/wp-content/uploads/2021/08/WS-14-Sports-Bar.jpeg?v=1644317846",
"gallery": [
"https://your-wordpress-install.com/wp-content/uploads/2023/07/PA206674_v2000_w620.jpg?v=1688913311",
"https://your-wordpress-install.com/wp-content/uploads/2023/07/PA206688_v2000_w620-1.jpg?v=1688913312",
],
"highlightText": "Booking Recommended",
"dontShowOnMap" : false,
"mapLabel": "SB",
"loc_lat" : 50.71245750791539,
"loc_lng": -2.4619866156242995,
"loc_zoom": 14,
"w3w": "qualified.burglars.digitally",
"w3wUrl": "https://w3w.co/qualified.burglars.digitally",
"directions": "Entrance located opposite the leisure complex, next to the arcade",
"dogFriendly": true,
"accNotes": "Entry is on a ground level, and accessible toilets available",
"linkToWhatsOn": true,
"linkToWhatsOnTitle": "Upcoming events >",
"phone": "012345678",
"email": "info@holidaymakerapp.co.uk",
"website": "https://holidaymakerapp.co.uk",
"address": "Holidaymaker App Ltd#BREAK#Stowey House#BREAK#Bridport Road#BREAK#Dorchester#BREAK#DT12SB",
"alert": {
//Place alert object
},
"menusHeading": "Bar Menus",
"menus": [
{
//Menu or Attachment 1
},
{
//Menu or Attachment 2
}
],
"openingTimes": {
//Opening Times Object
},
"distances": [
{
//Distance definitions for park X
},
{
//Distance definitions for park Y
}
],
"sites": [
"park-one",
"park-two"
],
"categories": [
"food-drink",
"entertainment"
]
}Type : Integer - Required
Unique ID for this place. Even though these entities could contain onsite facilities, and offsite attractions they MUST have a unique ID between them. This however does not need to be unique compared to other entities within the app
Type : String - Required
Title for this place
Type : Rich Text / Multiline String - Optional
List description. This is rendered as a small amount of text on the place cards within the app surfaces.
Type : Rich Text / Multiline String - Optional
Larger amount of text for the detail section of the app surfaces places section.
Type : Integer - Optional
Defaults to 99 - the lower the priority the higher on the place lists views it will be before alphabetisation.
Type : Boolean - Optional
Include this and set to true to indicate that this is an offsite place
Type : Image Url String - Optional
Landscape hero image used on the place list views and detail view
Type : Array of Image Url String - Optional
A list of image urls to render as a swipable gallery in the place detail. These are a landscape hero style ratio.
Type : String - Optional
This small piece of text is used on the list and details views of a place to highlight something. It is normally the brand accent color in a rounded corner pill text view. Examples may be 'Booking recommended' or 'New for 2023'
Type : Boolean - Optional
ONSITE ONLY - If this is set to true then this item not be shown on the map
Type : String - Optional
ONSITE ONLY - This is an optional small string which is rendered in the round map pin on the park map section. Examples may 2 character labels eg 'SB' for Sports Bar
Type : Floating Point Numeric - Optional
Location latitude of place - used on the park map for onsite places, and to externally load maps app for offsite
Type : Floating Point Numeric - Optional
Location longitude of place - used on the park map for onsite places, and to externally load maps app for offsite
Type : Integer - Optional
Location map zoom of place - used on the park map for onsite places, and to externally load maps app for offsite
Type : String - Optional
What3Words address of place
Type : Url String - Optional
Full What3Words url to navigate
Type : Rich Text / Multiline String - Optional
Some textual directions hints to render on the detail view. Examples for an onsite place could be to say best ways to access it from different accommodation areas. For an offsite place it may give a hint to parking choices or may have an entrance which is easy to miss when driving
Type : Boolean - Optional
If set to true, the details record will show the dog friendly icon and heading
Type : Rich Text / Multiline String - Optional
If this is not empty then the 'Accessibility Information' heading will show with this text underneath on the place detail view
Type : Boolean - Optional
ONSITE ONLY - If this is set to true, the detail view will at a call to action button which then navigate you to the what's on area, but filtering to this events at this place record
Type : String - Optional
ONSITE ONLY - You can use this to override the title of the above call to action button if required. The default is "Visit What's On"
Type : String - Optional
OFFSITE ONLY - Contact phone number - This can include spaces as if a call us request is triggered this will have spaces removed from it
Type : String - Optional
OFFSITE ONLY - Contact email address
Type : Url String - Optional
OFFSITE ONLY - Contact website
Type : Rich Text / Multiline String - Optional
OFFSITE ONLY - Address and postcode
Type : Place Alert Box - Optional
Optional alert box to display on the detail page, and title on the list items
Type : String - Optional
If menu/document attachments are used then this optional string can be used to change the heading. Default if not set is "View some of our menus"
Type : Array of Link (Legacy File) - Optional
list of PDFs documents to attach as CTA buttons
Type : Opening Times - Optional
Opening times definitions. If this node doesn't exist, then the default opening time type will be 'na'.
Type : Array of Distance from park - Optional
OFFSITE ONLY - List of distances from park and estimated driving times. Can include either, or both numbers in each definition. If single site install, this should still be an array with the site key 'default'
Type : Array of String - Optional
Only required for multi site installs - can be disregarded for single park systems. This should be a list of valid groupsite keys which this offer should be available for. If this array is missing or empty then the offer will not render for any user.
Type : Array of Integer - Required
List of category IDs to associate with this offer. All offers will render in the 'All' tab, but this array can set which other category tabs the offer also appears in.
A place alert box can create a callout highlight to both the place list items and the detail view. On the list item it will render an icon and heading in the style colors. If the list item heading is clicked it will trigger the intent if one has been set. On the detail view it will render as a card including title, icon and copy. If an intent is set a CTA button is added, and the highlight text option can give you a way of adding a large colour text view in the middle of this to highlight a promo code or similar.
{
"style": "custom",
"icon": "https://your-wordpress-install.com/wp-content/uploads/2021/08/red-tickets.png",
"color": "#dd3333",
"title": "Buy your event tickets in advance",
"copy": "Discounted tickets available from Reception.",
"highlightText": "Use code: APP10OFF",
"linkIntent": "offer"
"linkTitle": "Offer Details",
"linkUrl": "",
"linkID": 123
}Type : Place Alert Style - Optional
Style of box. Defaults as 'standard'
Type : Image Url String - Optional
Custom icon used beside title of the alert box if style is set to 'custom' - ignored by all other styles. This should be a small transparent png - 100-75px recommended
Type : Color String - Optional
Custom color used by the border and title of the alert box if style is set to 'custom' - ignored by all other styles
Type : String - Optional
Title is rendered either at the top of the alert box, or on the place list card in the style's defined color
Type : Rich Text / Multiline String - Optional
Main copy rendered on alert box on detail view
Type : String - Optional
This can be used for a promo code, or another small piece of text which is highlighted in large text with the styles color as the background
Type : Place Alert Intent - Optional
An optional internal app intent for the CTA button
Type : Url String - Optional
Optional url to add a CTA button for an external link (if present is used rather than the intent)
Type : String - Optional
If an intent or url is used, then this can be set for the text on the CTA button
Type : Integer - Optional
If intent is set to 'offer' or 'qikserve' then this is the id of the entity to navigate to, or to use
This is string definition to set a home alert's behaviour when the optional link is clicked. The options available are :
• "none" - No button (default)
• "whatson" - Navigate to What's On section
• "whatsonfilter" - Navigate to What's On section filtering to this specific place record
• "faqs" - Navigate to FAQs / Holiday Information section
• "map" - Navigate to Park Map - selecting this place record
• "offers" - Navigate to offers section
• "offer" - Navigate to offers section and view a specific offer record
• "qikserve" - Load chosen QikServe link within the app
{
"linkIntent": "offer",
"linkID": 134,
}This is string definition to style a home alert. The options available are :
• "standard" - Info icon in branded color (default)
• "alert" - Warning/caution icon in red
• "takeaway" - Knife/Fork/Plate icon in green
• "custom" - Can set own icon/color
{
"style": "takeaway"
}A place menu item requires an image url for the background, a title which will be rendered in white on a slight black gradient. Each one also requires a slug which will be an offsite place type, or onsite place type. These are then used to filter the place records. If an item is a sub menu parent, then the slug can be generated. If a menu item includes a double ID, it indicates that it should be half width on the right, with the item with the supplied ID being half width on the left. If a menu item includes a parent id, then it would make that the item with that ID a submenu. Submenu items cannot be set as double items.
//Example Standard full size example
{
"id": 1,
"title": "Food & Drink",
"slug": "food-drink",
"image": "https://your-wordpress-install.com/wp-content/uploads/2020/02/restaurant.jpg?v=1680205724"
},
//Example Double Items
{
"id": 2,
"title": "Facilities",
"slug": "facilities",
"image": "https://your-wordpress-install.com/wp-content/uploads/2020/01/reception-area.jpg?v=1680205724"
},
{
"id": 3,
"title": "Swim & Leisure",
"slug": "swim-leisure",
"image": "https://your-wordpress-install.com/wp-content/uploads/2020/01/indoor-paddling-pool.jpg?v=1680205724",
"doubleID": 2
},
//Example Sub Menu
{
"id": 6,
"title": "Local Area",
"slug": "sub_local-area",
"image": "https://your-wordpress-install.com/wp-content/uploads/2019/11/zoo.jpg?v=1680205724"
},
{
"id": 7,
"title": "Attractions",
"slug": "attractions",
"image": "https://your-wordpress-install.com/wp-content/uploads/2019/05/CSC_0994-1.jpg?v=1680205724",
"parentID": 6
},
{
"id": 8,
"title": "Places To Visit",
"slug": "places-to-visit",
"image": "https://your-wordpress-install.com/wp-content/uploads/2020/02/local.jpg?v=1680205724",
"parentID": 6
},Type : Integer - Required
ID of menu item. These need to be unique and are used to link double and parent items within the menu structure, however have no link outside of the menu items. Therefore these can be generated on the fly if required.
Type : String - Required
Rendered title of the menu item
Type : String - Required
This is the category slug that this item will use to filter the places when selected. This would be an onsite place type, or offsite place type, which then are used in the category array in places. A submenu parent can have its own generated slug, as this will never be used for filtering - but can be used by push notifications, or to link alert boxes. The holidaymaker CMS slugifys the items title prefixed with 'sub_'
Type : Image Url String - Required
Background image of menu item
Type : Integer - Optional
If a pair of side by side menu items are desired, then the second (right hand side) should include this property with the ID of the first (left hand side) item.
Type : Integer - Optional
If a submenu is desired, then the children should include this property with the ID of the parent
Type : Array of String - Optional
Only required for multi site installs - can be disregarded for single park systems. This should be a list of valid groupsite keys which this offer should be available for if you wish to filter it to certain parks. If this array is missing or empty then this menu item will be available for all parks (unlike most other holidaymaker entities)
Acts the same as the standard String type, however If text is assumed to include line breaks then we use a place holder of #BREAK#. These will then be replaced by the relevant line breaks depending on the language, and device that is rendering the text. This is commonly used in entity copy, and addresses. Rich text should not include HTML or other markup. There should always be a contextual consideration as well - for example if you copy includes a html anchor link to 'Read More' - then simply removing the markup will then leave the text 'Read More' which will be a redundant, none clickable piece of text within the app surfaces.
{
"textWithBullets": "This paragraph will now have two line breaks, and then a list of bullets#BREAK##BREAK#• Bullet 1#BREAK#• Bullet 2#BREAK#• Bullet 3",
"address": "Holidaymaker App Ltd#BREAK#Stowey House#BREAK#Bridport Road#BREAK#Dorchester#BREAK#DT12SB"
}Standard JSON String - Often will have certain characters escaped depending what system is writing the JSON packet, however our parser only requires to have double quotes (") escaped. UTF-8 encoding is our standard, but others may be accepted if required. If line breaks are required in the text then the Rich Text / Multiline String type is used instead.
{
"key1": "A string value",
"key2": "Another string with an some \"quotes\" that need escaping",
"arrayOfStrings": [
"Item one as a string",
"Item two as a string",
"Item three as a string",
]
}A Url is sent the same as a string. If our system knows this is a url it will check if it starts with http or https - Note that navigating from both iOS and Android should use https.
{
"bookingUrl" : "https://portal.managebooking.pmssystem"
}{
"places" : [
{
"id": 71,
"title": "The Sports Bar",
"description": "Enjoy a family meal or enjoy live sports TV in our Sports Bar, with 12 HD TVs, a soft play area, an arcade and sun terrace. ",
"copy": "The Sports Bar is a firm family favourite with something for everyone; from sports TV to a soft play area & arcade. #BREAK##BREAK#Open for breakfast, lunch & dinner, on the varied menu you’ll find; pub classics, curry club dishes, freshly made pizzas, wings, nachos & more.#BREAK##BREAK#Booking not required.",
"priority": 10,
"imgUrl": "https://your-wordpress-install.com/wp-content/uploads/2021/08/WS-14-Sports-Bar.jpeg?v=1644317846",
"gallery": [
"https://your-wordpress-install.com/wp-content/uploads/2023/07/PA206674_v2000_w620.jpg?v=1688913311",
"https://your-wordpress-install.com/wp-content/uploads/2023/07/PA206688_v2000_w620-1.jpg?v=1688913312",
],
"highlightText": "Booking Recommended",
"mapLabel": "SB",
"loc_lat" : "50.71245750791539,",
"loc_lng": "-2.4619866156242995",
"loc_zoom": "14",
"w3w": "qualified.burglars.digitally",
"w3wUrl": "https://w3w.co/qualified.burglars.digitally",
"directions": "Entrance located opposite the leisure complex, next to the arcade",
"accNotes": "Entry is on a ground level, and accessible toilets available",
"linkToWhatsOn": true,
"linkToWhatsOnTitle": "Upcoming events >",
"menusHeading": "Bar Menus",
"menus": [
{
"name": "Drinks",
"file": "https://your-wordpress-install.com/wp-content/uploads/2023/05/drinks.pdf"
},
{
"name": "Cocktails",
"file": "https://your-wordpress-install.com/wp-content/uploads/2023/05/cocktails.pdf"
}
],
"openingTimes": {
"openType": "timescopy",
"textItems": [
{
"heading": "Mon - Thurs",
"times": "12.00 - 22.00"
},
{
"heading": "Fri - Sun",
"times": "10.00 - 23.00",
"note": "Last orders is 22:00"
}
]
},
"categories": [
"food-drink",
"entertainment"
],
"sites": [
"park-one",
"park-two"
]
},
{
"id": 79,
"title": "Local Zoo",
"description": "Morbi in sem quis dui placerat ornare. Pellentesque odio nisi euismod in pharetra a ultricies in diam. Sed arcu. Cras consequat.",
"copy": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec odio. Quisque volutpat mattis eros. Nullam malesuada erat ut turpis. Suspendisse urna nibh viverra non semper suscipit posuere a pede.#BREAK#Donec nec justo eget felis facilisis fermentum. Aliquam porttitor mauris sit amet orci. Aenean dignissim pellentesque felis.#BREAK#Morbi in sem quis dui placerat ornare. Pellentesque odio nisi euismod in pharetra a ultricies in diam. Sed arcu. Cras consequat.",
"offSite": true,
"imgUrl": "https://your-wordpress-install.com/wp-content/uploads/2021/08/local-zoo.jpeg?v=1644317846",
"highlightText": "Booking Recommended",
"loc_lat" : "50.71245750791539,",
"loc_lng": "-2.4619866156242995",
"loc_zoom": "14",
"w3w": "qualified.burglars.digitally",
"w3wUrl": "https://w3w.co/qualified.burglars.digitally",
"dogFriendly": true,
"phone": "012345678",
"email": "info@holidaymakerapp.co.uk",
"website": "https://holidaymakerapp.co.uk",
"address": "Holidaymaker App Ltd#BREAK#Stowey House#BREAK#Bridport Road#BREAK#Dorchester#BREAK#DT12SB",
"alert": {
"style": "custom",
"icon": "https://your-wordpress-install.com/wp-content/uploads/2021/08/red-tickets.png",
"color": "#dd3333",
"title": "Holiday guests for 10% off",
"copy": "Show your booking confirmation when purchasing or collecting online tickets to get 10% off entry for all ages",
"highlightText": "Online code: APP10OFF",
"linkTitle": "Offer Details",
"linkIntent": "offer",
"linkID": 123
},
"distances": [
{
"site": "park-one",
"distance": 2.09,
"time": 6
},
{
"site": "park-two",
"distance": 28.4,
"time": 78
}
],
"categories": [
"places-to-visit"
],
"sites": [
"park-one",
"park-two"
]
}
],
"menu": [
{
"id": 1,
"title": "Food & Drink",
"slug": "food-drink",
"image": "https://your-wordpress-install.com/wp-content/uploads/2020/02/restaurant.jpg?v=1680205724"
},
{
"id": 2,
"title": "Facilities",
"slug": "facilities",
"image": "https://your-wordpress-install.com/wp-content/uploads/2020/01/reception-area.jpg?v=1680205724"
},
{
"id": 3,
"title": "Swim & Leisure",
"slug": "swim-leisure",
"image": "https://your-wordpress-install.com/wp-content/uploads/2020/01/indoor-paddling-pool.jpg?v=1680205724",
"doubleID": 2
},
{
"id": 4,
"title": "Entertainment",
"slug": "entertainment",
"image": "https://your-wordpress-install.com/wp-content/uploads/2022/05/entertainment-team-show.jpg?v=1680205724"
},
{
"id": 5,
"title": "Activities",
"slug": "activities",
"image": "https://your-wordpress-install.com/wp-content/uploads/2022/06/Untitled-2.jpg?v=1680205724"
},
{
"id": 6,
"title": "Local Area",
"slug": "sub_local-area",
"image": "https://your-wordpress-install.com/wp-content/uploads/2019/11/zoo.jpg?v=1680205724"
},
{
"id": 7,
"title": "Attractions",
"slug": "attractions",
"image": "https://your-wordpress-install.com/wp-content/uploads/2019/05/CSC_0994-1.jpg?v=1680205724",
"parentID": 6
},
{
"id": 8,
"title": "Places To Visit",
"slug": "places-to-visit",
"image": "https://your-wordpress-install.com/wp-content/uploads/2020/02/local.jpg?v=1680205724",
"parentID": 6
},
{
"id": 9,
"title": "Beaches",
"slug": "beaches",
"image": "https://your-wordpress-install.com/wp-content/uploads/2020/03/beach-family.jpg?v=1680205724",
"parentID": 6
}
],
"lastChange": 1691504109
}Added qikserve option
The "covid" style has been removed and future apps will default this to "alert"
Added 'gallery' property
Added offer and offers option
Added 'distances' property and structure
Added 'w3w' and 'w3wUrl' properties
Added 'linkToWhatsOnTitle' property