Login / Sign Up

Place

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)

Structure

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

Properties

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.

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

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

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