Login / Sign Up

Route

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.

Structure

{
  "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
  ]
}

Properties

id

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.

title

Type : String - Required

Route title

description

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.

copy

Type : Rich Text / Multiline String - Optional

Larger amount of text for the detail section of the app surfaces route section.

priority

Type : Integer - Optional

Defaults to 99 - the lower the priority the higher on the event lists views it will be before alphabetisation.

ctaUrl

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.

ctaText

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.

onHolidayOnly

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.

signedInOnly

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.

isOwnersOnly

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.

imgUrl

Type : Image Url String - Optional

Landscape hero image used on the route list views and detail view

gallery

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.

activity

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

activityIcon

Type : Route Activity Icon - Optional

Key for activity icon to use, or 'custom' to set own icons

activityCustomIconLight

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

activityCustomIconDark

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

terrain

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

terrainIcon

Type : Route Terrain Icon - Optional

Key for terrain icon to use, or 'custom' to set own icons

terrainCustomIconLight

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

terrainCustomIconDark

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

difficulty

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

dots

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.

color

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

accNotes

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'

parkingNotes

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'

safetyNotes

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'

dogNotes

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'

length

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

ascent

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'

descent

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'

time

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.

youtube

Type : String - Optional

This should be the code to a youtube video tour or route introduction (not the whole url)

address

Type : Rich Text / Multiline String - Optional

Starting point address and postcode

locationLat

Type : Floating Point Numeric - Optional

Location latitude of starting point - used to externally load maps app

locationLng

Type : Floating Point Numeric - Optional

Location longitude of starting point - used to externally load maps app

w3w

Type : String - Optional

What3Words address of starting point

w3wUrl

Type : Url String - Optional

Full What3Words url to navigate to starting point

distances

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'

linksHeading

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'

links

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.

tags

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'

sites

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.

categories

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.

Required Type Definitions

Boolean - Reveal

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"
  ]
}

Color String - Reveal

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"
}

Distance from park - Reveal

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
}

site

Type : String - Required

For single park installs this should be 'default' else it should be the groupsite key this data relates to


distance

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


time

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

Floating Point Numeric - Reveal

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
}

Image Url String - Reveal

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"
}

Integer - Reveal

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
  ] 
}

Link - Reveal

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"
}

url

Type : String - Required

Url to external link or pdf/doc attachment


title

Type : String - Required

Text for call to action button

Rich Text / Multiline String - Reveal

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"
}

Route Activity Icon - Reveal

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"
}

Route Terrain Icon - Reveal

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"
}

String - Reveal

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",
  ] 
}

Url String - Reveal

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"
}