This packet of data includes all of the information needed for the routes section of the app. This includes a list of local routes, and the required categories. It also includes a small packet of routes specific strings used by all route records.
Routes do not have to be restricted to walking, however this will be a common usage of them by many holiday parks.
Routes are also filtered based on groupsite so if your app surfaces are part of a multi park install, then routes should be marked with which parks they should be available for.
The routes section of the app includes further ways for the user to sort and filter the list, which other sections do not allow at present.
The default sort is typically featured/priority – the same as other holidaymaker entities. However due to the nature of the routes, there is also the option to sort by numeric properties such as starting distance from park, length or route, time of route, and difficulty
Depending on the data available also depends on the other filters. The app surfaces create the filters on the fly for the following :
This means that if these pieces of data are enforced tags throughout the routes then they can be filtered together. For example setting one route as the activity ‘Walking’ and one as ‘walking’ they will be treated as a different filter, so the data should, when possible, be as consistent as possible.
{
"routes": [
{
//Route 1
},
{
//Route 2
}
],
"categories": [
{
//Category 1
},
{
//Category 2
}
],
"strings": {
//Routes Strings Object
},
"lastChange": 1691585188
}Type : Array of Category - Required
List of available categories for the supplied data. These are used for the tabs on the routes pages, ordered by the sort priority, then alphabetically.
Type : Route Strings - Required
Extra information required for the routes section in the app surfaces
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 category packet contains the ID to filter entities, and also the name to render. Typically they are sorted by their priority integer which defaults at 99 if not set. The lower this number the higher in the list. After priority they are alphabatised (case insensitive). An 'All' category is never required as the app surfaces create this. Holiday home sales categories also should include a banner image url, as they are also rendered as banners on the home sales section landing page.
{
"id": 42,
"name": "Caravans",
"slug": "caravans",
"priority": 5,
"imgUrl": "https://link-to-homesales-caravans-banner.jpg?v=12345",
"locales": [
"cy" : "Name Translation"
]
}Type : Integer - Required
Category ID used for filtering entities. This should be unique to the specific entity category, however does not need to be unique within scope of other entities and data.
Type : String - Required
Name of category which is rendered in various places in the app surfaces
Type : String - Optional
Currently optional as unused by categories. Filtering uses IDs, but slug is stored to potentially be referenced by future
Type : Integer - Optional
Defaults to 99 if not set. The lower the priority, the higher this category will be sorted before alphabetisation.
Type : Image Url String - Optional
Currently only used by holiday home sales categories. This image is used as the banner on the holiday homes sales section landing page.
Type : Array of String - Optional
An array of localisable name translations for this category. This can include multiple translated names with the array should be keyed with the locale code which are supported by your holidaymaker install
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
]
}A title and url of a link button. These are often attached to other entities to provide external links or pdf downloads such as onsite food menus, or more information about special offers.
{
"url": "https:/your-wordpress-website.co.uk/wp-content/uploads/2021/08/offer-voucher.pdf",
"title": "Download voucher"
}Type : String - Required
Url to external link or pdf/doc attachment
Type : String - Required
Text for call to action button
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"
}This is a single route listing. It includes all of the rich date to include in the record. most of the data is optional, and the app will render accordingly, taking into account any unavailable information.
{
"id": 297,
"title": "Maiden Castle",
"description": "Maiden Castle in Dorset is one of the largest and most complex Iron Age hillforts in Europe - the size of 50 football pitches. Its huge multiple ramparts, mostly built in the 1st century BC, once protected hundreds of residents. When it was first built, the gleaming white chalk ramparts would have towered over the surrounding landscape.",
"copy": "Maiden Castle in Dorset is one of the largest and most complex Iron Age hillforts in Europe - the size of 50 football pitches. Its huge multiple ramparts, mostly built in the 1st century BC, once protected hundreds of residents. When it was first built, the gleaming white chalk ramparts would have towered over the surrounding landscape.#BREAK##BREAK#Excavations here have revealed much about Maiden Castle’s history, such as a Neolithic enclosure from about 3500 BC and a Roman temple built in the 4th century AD. The archaeologists also found evidence of a late Iron Age cemetery, where many of those buried had suffered horrific injuries.#BREAK##BREAK#English Heritage does not permit drone flying from or over sites in our care, except by contractors or partners undertaking flights for a specific purpose, who satisfy stringent CAA criteria, have the correct insurances and permissions, and are operating under controlled conditions.",
"priority": 99,
"ctaUrl": "https://discoverdorchester.co.uk/whats-on/home-of-hillforts-henges-2023/",
"ctaText": "Home of Hillforts Event 2023",
"onHolidayOnly": false,
"signedInOnly": false,
"isOwnersOnly": false,
"imgUrl": "https://your-wordpress-install.com/wp-content/uploads/2023/05/aerial.jpg?v=1685101115",
"gallery": [
"https://your-wordpress-install.com/wp-content/uploads/2023/05/ramparts.jpg?v=1685101352",
"https://your-wordpress-install.com/wp-content/uploads/2023/05/maiden-remains.jpg?v=1685101348"
],
"activity": "Walking",
"activityIcon": "walking",
"activityCustomIconLight": "https://your-wordpress-install.com/wp-content/uploads/2023/05/windsurfing-icon-light.png?v=1685101115",
"activityCustomIconDark": "https://your-wordpress-install.com/wp-content/uploads/2023/05/windsurfing-icon-dark.png?v=1685101115",
"terrain": "Hills",
"terrainIcon": "hills",
"terrainCustomIconLight": "https://your-wordpress-install.com/wp-content/uploads/2023/05/fleet-icon-light.png?v=1685101115",
"terrainCustomIconDark": "https://your-wordpress-install.com/wp-content/uploads/2023/05/fleet-icon-dark.png?v=1685101115",
"difficulty": "Easy",
"dots": 1,
"color": "#81d742",
"accNotes": "The ramparts are uneven and not suitable for wheelchairs.",
"parkingNotes": "There is a small car park at the fort which can become busy at peak times. ",
"safetyNotes": "The footpaths at Maiden Castle have been created over time by people walking them, in some areas the chalk has been exposed to create an uneven slippery surface, care should be taken and sturdy footwear is recommended when visiting Maiden Castle.#BREAK##BREAK#The site is very exposed, with no shelter.",
"dogNotes": "Dogs are welcome, but please keep them on a lead as sheep graze the site.",
"length": 1.5,
"ascent": 420,
"descent" : 400,
"time": 60,
"address": "Maiden Castle Road,#BREAK#Dorchester,#BREAK#Dorset,#BREAK#DT2 9PP",
"locationLat": "50.699121572241",
"locationLng": "-2.4708831310272",
"w3w": "vibrating.acclaim.waltz",
"w3wUrl": "https://w3w.co/vibrating.acclaim.waltz",
"youtube": "wZNzZ7ImuOw",
"distances": [
{
"site": "park-one",
"distance": 13.16,
"time": 27
},
{
"site": "park-two",
"distance": 3.43,
"time": 9
}
],
"linksHeading": "Useful information",
"links": [
{
"url": "https://your-wordpress-install.com/wp-content/uploads/2021/08/pdf-map.pdf",
"title": "Download PDF Map",
"type": "download"
},
{
"url": "https://www.english-heritage.org.uk/visit/places/maiden-castle/",
"title": "English Heritage Information"
}
],
"tags": [
"Great Views",
"Historic Dorset"
],
"sites": [
"park-one",
"park-two"
],
"categories": [
60
]
}Type : Integer - Required
ID for this event. This needs to be unique to others routes in the list, however does not need to be unique to other entities. This ID should also not change between data requests/packets.
Type : String - Required
Route title
Type : Rich Text / Multiline String - Optional
List description. This is rendered as a small amount of text on the event cards within the app surfaces.
Type : Rich Text / Multiline String - Optional
Larger amount of text for the detail section of the app surfaces route section.
Type : Integer - Optional
Defaults to 99 - the lower the priority the higher on the event lists views it will be before alphabetisation.
Type : Url String - Optional
At the top of the route detail under the main details you have the option to show a CTA button before the rest of the record. Set this url for the button to navigate externally.
Type : String - Optional
At the top of the route detail under the main details you have the option to show a CTA button before the rest of the record. Set this text for the button.
Type : Boolean - Optional
If set to true this route will only be visible to users who have logged in with a valid holiday booking, AND is between their arrival and departure date (inclusive) - Note that the holidaymaker CMS would normally only allow one of these three options to be set to true.
Type : Boolean - Optional
If set to true this route will only be visible to users who have logged in with a valid holiday booking - Note that the holidaymaker CMS would normally only allow one of these three options to be set to true.
Type : Boolean - Optional
If set to true this route will only be visible to users who have logged in as a home owner - Note that the holidaymaker CMS would normally only allow one of these three options to be set to true.
Type : Image Url String - Optional
Landscape hero image used on the route 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 route detail. These are a landscape hero style ratio.
Type : String - Optional
Name of activity - These are collated in the app when rendering the routes section to create filters - so this string could/should be common among other routes
Type : Route Activity Icon - Optional
Key for activity icon to use, or 'custom' to set own icons
Type : Image Url String - Optional
Custom icon used on dark backgrounds (light foreground) if activity icon is set to 'custom' - ignored by all other activity icon choices. This should be a small transparent png - 100-75px recommended
Type : Image Url String - Optional
Custom icon used on light backgrounds (dark foreground) if activity icon is set to 'custom' - ignored by all other activity icon choices. This should be a small transparent png - 100-75px recommended
Type : String - Optional
Name of terrain - These are collated in the app when rendering the routes section to create filters - so this string could/should be common among other routes
Type : Route Terrain Icon - Optional
Key for terrain icon to use, or 'custom' to set own icons
Type : Image Url String - Optional
Custom icon used on dark backgrounds (light foreground) if terrain icon is set to 'custom' - ignored by all other terrain icon choices. This should be a small transparent png - 100-75px recommended
Type : Image Url String - Optional
Custom icon used on light backgrounds (dark foreground) if terrain icon is set to 'custom' - ignored by all other terrain icon choices. This should be a small transparent png - 100-75px recommended
Type : String - Optional
Name of difficulty - These are collated in the app when rendering the routes section to create filters - so this string could/should be common among other routes
Type : Integer - Optional
This is the difficulty level of the route in comparison to the maxDots number in the route strings object. For example you could have a maxDots of 4 and then have Casual (1), Moderate (2), Tricky (3) and they would all render as a bar at 1/4, 2/4, and 3/4.
Type : Color String - Optional
This is the color of the difficulty bar to render. Eg using the above 1/2/3 difficulty dots examples you could send RGB colors for a green/orange/red
Type : Rich Text / Multiline String - Optional
You can add some multiline text to add additional accessibility notes to this route. These will be added to the route detail under the heading 'Accessibility'
Type : Rich Text / Multiline String - Optional
You can add some multiline text to add additional notes about parking at this route. These will be added to the route detail under the heading 'Parking Information'
Type : Rich Text / Multiline String - Optional
You can add some multiline text to add additional notes in regards to safety warnings or concerns during this route. These will be added to the route detail under the heading 'Safety Information'
Type : Rich Text / Multiline String - Optional
You can add some multiline text to add additional notes in regards to how dog friendly a route is, or any concerns in regards to dogs during this route. These will be added to the route detail under the heading 'Notes For Dog Owners'
Type : Floating Point Numeric - Optional
Length of the route 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
Expected ascent height in feet. If this is a circular walk with the same, or similar ascent and descent, then you can just supply the ascent integer and the app will use a 'ascent/descent' icon with this number instead of two separate icons/numbers. Will be prefixed with ' feet' eg '420 feet'
Type : Integer - Optional
Expected descent height in feet if different then the ascent height. If this is a circular walk with the same, or similar ascent and descent, then yodo not supply this property, instead just send the ascent property above. Will be prefixed with ' feet' eg '420 feet'
Type : Integer - Optional
Estimated route duration. 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.
Type : String - Optional
This should be the code to a youtube video tour or route introduction (not the whole url)
Type : Rich Text / Multiline String - Optional
Starting point address and postcode
Type : Floating Point Numeric - Optional
Location latitude of starting point - used to externally load maps app
Type : Floating Point Numeric - Optional
Location longitude of starting point - used to externally load maps app
Type : String - Optional
What3Words address of starting point
Type : Url String - Optional
Full What3Words url to navigate to starting point
Type : Array of Distance from park - Optional
List of starting point 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 : String - Optional
This can optionally be set to override the heading above the additional links. If not set, and links are provided the default heading will be 'More information'
Type : Array of Link - Optional
An optional list of additional links or attachments. Examples on an route may be detailed maps, or kids activity ideas. Could also be links to official bodies such as the national trust or english heritage.
Type : Array of String - Optional
These are additional tag names that render on both the route list items, and route detail. Examples are tags that would not warrant a seperate category but are worth noting eg 'All Weathers', 'Jurassic Coast', 'Family Fun'
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 route should be available for. If this array is missing or empty then the offer will not render for any user.
Type : Array of Integer - Optional
List of category IDs to associate with this route. All routes will render in the 'All' tab, but this array can set which other category tabs the offer also appears in.
This is string definition to set a route's activity icon for a set embedded in the app, or to tell the app surface to look for custom icons. These are the base set of icons, which can be bespoke image files client by client in the app. There is also the ability to send another option that below, if the corresponding bespoke image is included in that clients app. The standard options available are :
• "walking"
• "running"
• "cycling"
• "horseriding"
• "driving"
• "motorcycle"
• "kayak"
• "paddleboard"
• "swimming"
• "hunt" - Treasure hunt
• "nature" - Nature trail
• "custom" - This will tell the app to instead look for custom light and dark icon urls
{
"activityIcon": "horseriding"
}This is an object that adds additional strings to the routes packet. These are used to customise the routes section, and can be accessed by all routes
{
"routesMaxDots": 4
}Type : Integer - Required
This is the maximum difficulty dots - This is used when rendering the difficulty levels. The max level is not calculated from the available routes so you could have higher difficulty defined ready to use in future, or weight the difficulty levels for rendering reasons - eg have routes with levels up to 1,2 and 3, but set your max to 4 so the difficulty 3 routes will render with a 75% difficulty bar instead of being full.
This is string definition to set a route's terrain icon for a set embedded in the app, or to tell the app surface to look for custom icons. These are the base set of icons, which can be bespoke image files client by client in the app. There is also the ability to send another option that below, if the corresponding bespoke image is included in that clients app. The standard options available are :
• "onparktent"
• "onparkcaravan"
• "mixed"
• "road"
• "forest"
• "hills"
• "cliffs"
• "beach"
• "sea"
• "river"
• "lake"
• "custom" - This will tell the app to instead look for custom light and dark icon urls
{
"terrainIcon": "lake"
}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"
}{
"routes": [
{
"id": 297,
"title": "Maiden Castle",
"description": "Maiden Castle in Dorset is one of the largest and most complex Iron Age hillforts in Europe - the size of 50 football pitches. Its huge multiple ramparts, mostly built in the 1st century BC, once protected hundreds of residents. When it was first built, the gleaming white chalk ramparts would have towered over the surrounding landscape.",
"copy": "Maiden Castle in Dorset is one of the largest and most complex Iron Age hillforts in Europe - the size of 50 football pitches. Its huge multiple ramparts, mostly built in the 1st century BC, once protected hundreds of residents. When it was first built, the gleaming white chalk ramparts would have towered over the surrounding landscape.#BREAK##BREAK#Excavations here have revealed much about Maiden Castle’s history, such as a Neolithic enclosure from about 3500 BC and a Roman temple built in the 4th century AD. The archaeologists also found evidence of a late Iron Age cemetery, where many of those buried had suffered horrific injuries.#BREAK##BREAK#English Heritage does not permit drone flying from or over sites in our care, except by contractors or partners undertaking flights for a specific purpose, who satisfy stringent CAA criteria, have the correct insurances and permissions, and are operating under controlled conditions.",
"ctaUrl": "https://discoverdorchester.co.uk/whats-on/home-of-hillforts-henges-2023/",
"ctaText": "Home of Hillforts Event 2023",
"imgUrl": "https://your-wordpress-install.com/wp-content/uploads/2023/05/aerial.jpg?v=1685101115",
"gallery": [
"https://your-wordpress-install.com/wp-content/uploads/2023/05/ramparts.jpg?v=1685101352",
"https://your-wordpress-install.com/wp-content/uploads/2023/05/maiden-remains.jpg?v=1685101348"
],
"activity": "Walking",
"activityIcon": "walking",
"terrain": "Hills",
"terrainIcon": "hills",
"difficulty": "Moderate",
"dots": 2,
"color": "#4169E1",
"accNotes": "The ramparts are uneven and not suitable for wheelchairs.",
"parkingNotes": "There is a small car park at the fort which can become busy at peak times. ",
"safetyNotes": "The footpaths at Maiden Castle have been created over time by people walking them, in some areas the chalk has been exposed to create an uneven slippery surface, care should be taken and sturdy footwear is recommended when visiting Maiden Castle.#BREAK##BREAK#The site is very exposed, with no shelter.",
"dogNotes": "Dogs are welcome, but please keep them on a lead as sheep graze the site.",
"length": 1.5,
"ascent": 420,
"descent" : 400,
"time": 60,
"youtube": "wZNzZ7ImuOw",
"address": "Maiden Castle Road,#BREAK#Dorchester,#BREAK#Dorset,#BREAK#DT2 9PP",
"locationLat": 50.699121572241,
"locationLng": -2.4708831310272,
"w3w": "vibrating.acclaim.waltz",
"w3wUrl": "https://w3w.co/vibrating.acclaim.waltz",
"distances": [
{
"site": "park-one",
"distance": 13.16,
"time": 27
},
{
"site": "park-two",
"distance": 3.43,
"time": 9
}
],
"linksHeading": "Useful information",
"links": [
{
"url": "https://your-wordpress-install.com/wp-content/uploads/2021/08/pdf-map.pdf",
"title": "Download PDF Map",
"type": "download"
},
{
"url": "https://www.english-heritage.org.uk/visit/places/maiden-castle/",
"title": "English Heritage Information"
}
],
"tags": [
"Great Views",
"Historic Dorset"
],
"sites": [
"park-one",
"park-two"
],
"categories": [
60
]
},
{
"id": 298,
"title": "Windsurfing in the fleet",
"description": "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.",
"copy": "Donec nec justo eget felis facilisis fermentum. Aliquam porttitor mauris sit amet orci. Aenean dignissim pellentesque felis.#BREAK##BREAK#Morbi in sem quis dui placerat ornare. Pellentesque odio nisi euismod in pharetra a ultricies in diam. Sed arcu. Cras consequat.",
"priority": 10,
"imgUrl": "https://your-wordpress-install.com/wp-content/uploads/2023/05/windsurfing.jpg?v=1685101115",
"activity": "Wind-Surfing",
"activityIcon": "custom",
"activityCustomIconLight": "https://your-wordpress-install.com/wp-content/uploads/2023/05/windsurfing-icon-light.png?v=1685101115",
"activityCustomIconDark": "https://your-wordpress-install.com/wp-content/uploads/2023/05/windsurfing-icon-dark.png?v=1685101115",
"terrain": "The Fleet",
"terrainIcon": "custom",
"terrainCustomIconLight": "https://your-wordpress-install.com/wp-content/uploads/2023/05/fleet-icon-light.png?v=1685101115",
"terrainCustomIconDark": "https://your-wordpress-install.com/wp-content/uploads/2023/05/fleet-icon-dark.png?v=1685101115",
"difficulty": "Enthusiast",
"dots": 3,
"color": "#8B0000",
"parkingNotes": "Pay and display carpark is available at the fleet which accepts cash, card, and the JustPay App",
"safetyNotes": "Although the fleet is a calm shallow area of water, the greatest caution and safety should be considered whenparticipating in a watersport.",
"time": 120,
"locationLat": 50.699121572241,
"locationLng": -2.4708831310272,
"w3w": "vibrating.acclaim.waltz",
"w3wUrl": "https://w3w.co/vibrating.acclaim.waltz",
"distances": [
{
"site": "park-one",
"distance": 13.16,
"time": 27
}
],
"sites": [
"park-one"
],
"categories": [
61
]
},
{
"id": 299,
"title": "Park Treasure Hunt",
"description": "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.",
"copy": "Donec nec justo eget felis facilisis fermentum. Aliquam porttitor mauris sit amet orci. Aenean dignissim pellentesque felis.#BREAK##BREAK#Morbi in sem quis dui placerat ornare. Pellentesque odio nisi euismod in pharetra a ultricies in diam. Sed arcu. Cras consequat.",
"imgUrl": "https://your-wordpress-install.com/wp-content/uploads/2023/05/treasurehunt.jpg?v=1685101115",
"gallery": [
"https://your-wordpress-install.com/wp-content/uploads/2023/05/hunt-clue1.jpg?v=1685101352",
"https://your-wordpress-install.com/wp-content/uploads/2023/05/hunt-clue2.jpg?v=1685101348",
"https://your-wordpress-install.com/wp-content/uploads/2023/05/hunt-clue3.jpg?v=1685101348",
"https://your-wordpress-install.com/wp-content/uploads/2023/05/hunt-clue4.jpg?v=1685101348"
],
"activity": "Walking",
"activityIcon": "walking",
"terrain": "On Park",
"terrainIcon": "onparktent",
"difficulty": "Casual",
"dots": 1,
"color": "#4169E1",
"length": 0.5,
"time": 45,
"linksHeading": "Useful information",
"links": [
{
"url": "https://your-wordpress-install.com/wp-content/uploads/2021/08/pdf-map.pdf",
"title": "Download PDF Map and Clues"
}
],
"tags": [
"Family Friendly"
],
"sites": [
"park-one",
"park-two"
],
"categories": [
62
]
}
],
"categories": [
{
"id": 60,
"slug": "local-area",
"name": "Local Area",
"priority": 1
},
{
"id": 62,
"slug": "onpar-adventures",
"name": "On Park Adventures"
},
{
"id": 61,
"slug": "watersports",
"name": "Watersports"
}
],
"strings": {
"routesMaxDots": 4
},
"lastChange": 1691585188
}Added 'locales' property for translational holidaymaker installs
Added 'imgUrl' property for home sales categories