Login / Sign Up

Places Packet

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.

OnSite / OffSite

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.

Dynamic Menu

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.

  • It is rendered as set of image banners, or set of two image side by side
  • An image banner or on site of a double item can be a submenu of more single banners
  • These banners are a mix of both offsite place categories and onsite place categories
  • The place entity uses the category slug instead of an ID to filter, as it deals with a mix of two categories
  • The main menu, and some other call to actions throughout the app can navigate to the places section and automatically select one of the menu items to show a filtered list of places (eg ‘Facilties’)
  • For multi park sites, menu items can be filtered for certain parks – however unlike most of holiday maker entities, if the sites array is empty for a menu item, it is assumed to be shown for all (rather than none) – so you only need to add the sites array into categories only meant for certain parks

An example menu could be as follows :

  • Entertainment (single banner with the ‘entertainment’ onsite category)
  • Activities | Leisure Facilities (split/double banner with ‘activites’ and ‘leisure’ onsite categories)
  • Local Area (singe banner as a sub menu)
    • Beaches (single banner with the ‘beaches’ offsite category)
    • Local Food (single banner with the ‘local-food’ offsite category)
    • Local Attractions (single banner with the ‘local-attractions’ offsite category)
  • Places-To-Eat (single banner with the ‘onpark-food’ onsite category)
  • Facilities (single banner with the ‘facilities’ onsite category)

Structure

{
  "places": [
    {
      //Place 1
    },
    {
      //Place 2
    }
  ],
  "menu": [
    {
      //Menu Definition 1
    },
    {
      //Menu Definition 2
    }
  ],
  "lastChange": 1691504109  
}

Properties

places

Type : Array of Place - Required

List of all onsite and offsite places together

menu

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.

lastChange

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.

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

Epoch Date/Time Integer - Reveal

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
}

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 (Legacy File) - Reveal

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

name

Type : String - Required

Name of file which should be used on the CTA button when rendering on a detail page


file

Type : Url String - Required

External url that the CTA button should try to externally open

Opening Time Text Item - Reveal

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

heading

Type : String - Required

Bold heading of opening time row - eg 'Monday - Friday'


times

Type : String - Required

Standard text of opening time row eg '12noon - 5pm'


note

Type : Rich Text / Multiline String - Optional

Optional addition text to add after title/times

Opening Times - Reveal

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

openType

Type : Opening Times Type - Required

Type of opening times to render. Defaults to 'na'


textItems

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


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

Opening Times Type - Reveal

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

Place - Reveal

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

id

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


title

Type : String - Required

Title for this place


description

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.


copy

Type : Rich Text / Multiline String - Optional

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


priority

Type : Integer - Optional

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


offSite

Type : Boolean - Optional

Include this and set to true to indicate that this is an offsite place


imgUrl

Type : Image Url String - Optional

Landscape hero image used on the place 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 place detail. These are a landscape hero style ratio.


highlightText

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'


dontShowOnMap

Type : Boolean - Optional

ONSITE ONLY - If this is set to true then this item not be shown on the map


mapLabel

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


loc_lat

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


loc_lng

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


loc_zoom

Type : Integer - Optional

Location map zoom of place - used on the park map for onsite places, and to externally load maps app for offsite


w3w

Type : String - Optional

What3Words address of place


w3wUrl

Type : Url String - Optional

Full What3Words url to navigate


directions

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


dogFriendly

Type : Boolean - Optional

If set to true, the details record will show the dog friendly icon and heading


accNotes

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


linkToWhatsOn

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


linkToWhatsOnTitle

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"


phone

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


email

Type : String - Optional

OFFSITE ONLY - Contact email address


website

Type : Url String - Optional

OFFSITE ONLY - Contact website


address

Type : Rich Text / Multiline String - Optional

OFFSITE ONLY - Address and postcode


alert

Type : Place Alert Box - Optional

Optional alert box to display on the detail page, and title on the list items


menusHeading

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"


menus

Type : Array of Link (Legacy File) - Optional

list of PDFs documents to attach as CTA buttons


openingTimes

Type : Opening Times - Optional

Opening times definitions. If this node doesn't exist, then the default opening time type will be 'na'.


distances

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'


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 offer 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 - 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.

Place Alert Box - Reveal

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
}

style

Type : Place Alert Style - Optional

Style of box. Defaults as 'standard'


icon

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


color

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


title

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


copy

Type : Rich Text / Multiline String - Optional

Main copy rendered on alert box on detail view


highlightText

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


linkIntent

Type : Place Alert Intent - Optional

An optional internal app intent for the CTA button


linkUrl

Type : Url String - Optional

Optional url to add a CTA button for an external link (if present is used rather than the intent)


linkTitle

Type : String - Optional

If an intent or url is used, then this can be set for the text on the CTA button


linkID

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

Place Alert Intent - Reveal

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

Place Alert Style - Reveal

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

Place Menu Item - Reveal

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

id

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.


title

Type : String - Required

Rendered title of the menu item


slug

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_'


image

Type : Image Url String - Required

Background image of menu item


doubleID

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.


parentID

Type : Integer - Optional

If a submenu is desired, then the children should include this property with the ID of the parent


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 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)

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

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

Full Packet Example

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

Data Changes

09/01/2024 - Place Alert Intent

Added qikserve option

07/08/2023 - Place Alert Style

The "covid" style has been removed and future apps will default this to "alert"

09/05/2023 - Place

Added 'gallery' property

14/04/2023 - Place Alert Intent

Added offer and offers option

04/04/2023 - Place

Added 'distances' property and structure

28/11/2022 - Place

Added 'w3w' and 'w3wUrl' properties

05/07/2021 - Place

Added 'linkToWhatsOnTitle' property