Login / Sign Up

Core Information Packet

The core information packet contains various pieces of data used throughout the app surfaces. Some of these are nice to have extras, when some are vital to the workings of the infrastructure.

Onboarding Cards

These are displayed to users when they launch the app for the first time. These are swipable cards with a title, short text and image. For multi park installs these cannot be filtered between parks, as they are displayed in the app before the park selection process.

Home Alerts

These are displayed to the user as soon as they load the app if they are a returning user. This is at the top of the my holiday section. these can be image/title banners which link within the app, or externally, or can be a box style with some text information.

Information Blocks

These are vital to the holiday information / FAQs section of the app as they render on the first tab. These give the user options to contact the park, interlink within the app, or externally link out.

Strings

These are strings that are used throughout the app, but can be dynamic without needing a new app build/submission. Examples are the booking headlines, and park information for a single park install. Not all strings are used for multipark installs as the groupsite list includes the information instead, as it can change on a park by park basis.

Navigation

This is the definition of the main menu, the three bottom tabs in the app, and the CTA buttons on the My Holiday section. This is includes information on which items are available, how they should be named, and the order they are in. This also acts as a permission system for the app, so it knows what holidaymaker modules are available to that particular app. Note: Even though this main menu information can be provided, items which are beyond the permissions of the current setup will be ignored.

Sites

These are the groupsite records. For a multipark holiday park brand, this would be each holiday park. Depending on the PMS login, it depends on how these are chosen. For some the user will choose their park before the login process, when for others they will do a single login to the PMS and this response will then say which park should be chosen automatically. For owners and guest users, they would always choose for a list of parks.

 

QikServe Links

If you are also a QikServe client then this can integrate directly into the holidaymaker app surfaces. This is a link of QikServe links which can be used in various places throughout the app as well as being available on the order food area.

 

Structure

{
  "info": {
    //Core information structure  
  }
  "lastChange": 1690895249
}

Properties

info

Type : Core Information - Required

The main core information packet which includes various strings, groupsites for multi park installs, and other smaller entities for the app surfaces

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

Booking Engine Strings - Reveal

Selection of strings for use by a group site object in relation to the PMS connection. These are sent as a nested object in a group site, but essentially work the same as the standard core information strings with the same property names

{
  "feedbackUrl": "https://your-wordpress-install.com/contact",        
  "newBookingUrl": "https://your-wordpress-install.com/booknow",       
  "forgotPasswordUrl": "https://your-booking-engine.com/forgotpassword",   

    //ProphetOnly
  "forgotPasswordButton": "Reset Login Details",
  "forgotPasswordCopy": "Click below to visit our booking system to reset your credentials if you are having trouble logging in",
  "registerBookingButton": "Register Account",
  "registerBookingUrl": "https://your-booking-engine.com/register",
  "registerBookingCopy": "Click below to visit our booking system to create an account. If this is the same email address attached to your booking, they will synchronise across and you will be able to login",
  "continueAsGuestButton": "Continue as guest",
  "continueAsGuestCopy": "If you  booked on a third party booking system like PitchUp, then you will not be able to add your booking. Click below to continue using the app as a guest",
  "refreshBookingOldCopy": "You do not have a current or future holiday on your account. If you do have a future booking it may take 24 hours to synchronise, but please contact us if you are still having difficulties",
  "refreshBookingNoCopy": "You do not have any holiday bookings on your account. If you do have a future booking it may take 24 hours to synchronise, but please contact us if you are still having difficulties",
}

feedbackUrl

Type : Url String - Optional

Once a logged in user's departure date has past they will be presented with a leave feedback button which will navigate to this url


newBookingUrl

Type : Url String - Optional

Once a logged in user's departure date has past they will be presented with a make new booking button which will navigate to this url. This button is also visible to users who choose to browse the app as a guest


forgotPasswordUrl

Type : Url String - Optional

Used by most PMS connections - button available to users who are having trouble logging in with their booking


forgotPasswordButton

Type : String - Optional

Prophet PMS Only - Text for forgot password button on help screen


forgotPasswordCopy

Type : Rich Text / Multiline String - Optional

Prophet PMS Only - Copy for forgot password box on help screen


registerBookingButton

Type : String - Optional

Prophet PMS Only - Text for register account button text on help screen


registerBookingUrl

Type : Url String - Optional

Prophet PMS Only - Text for register account button url on help screen


registerBookingCopy

Type : Rich Text / Multiline String - Optional

Prophet PMS Only - Copy for register account box on help screen


continueAsGuestButton

Type : String - Optional

Prophet PMS Only - Continue as guest button text on help screen


continueAsGuestCopy

Type : Rich Text / Multiline String - Optional

Prophet PMS Only - Copy for continue as guest box on help screen


refreshBookingOldCopy

Type : Rich Text / Multiline String - Optional

Prophet PMS Only - Text which appears on a box on the my holiday screen if someone has successfully logged in but does not have any future bookings


refreshBookingNoCopy

Type : Rich Text / Multiline String - Optional

Prophet PMS Only - Text which appears on a box on the my holiday screen if someone has successfully logged in but does not have any booking

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

Boolean (String) - Reveal

This is a simple boolean - however for data constancy, or parsing reasons may have to be enforced as a string. Standard reads for a true would be 'true', 'TRUE', 'yes', 'YES', '1'

{
  "homeOwnersEnabled": "true",
  "whatsOnAutoSelectOwners": "false",
  "multiSiteShowDetail": "false",
}

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

Core Information - Reveal

This is the main core information object which defines various bits of information throughout the holidaymaker app surfaces

{
  "strings": {
    //  Core Strings Object
    //  Not all are required for multi site parks as some items are in park definitions
  },
  "onBoarding": [
    {
      //  Onboarding Card 1
    },
    {
      //  Onboarding Card 2
    }
  ],
  "homeAlerts": [
    {
      //  Home Alert 1
    },
    {
      //  Home Alert 2
    }
  ],
  "informationBlocks": [
    {
      //  Info Block 1
    },
    {
      //  Info Block 2
    }
  ],
  "navigation": [
    {
      //  Nav Item 1
    },
    {
      //  Nav Item 2
    }
  ],
  "sites": [
    {
      //  Group Site 1
    },
    {
      //  Group Site 2
    }
  ],
  "qikserve": [
    {
      //  QikServe Link 1
    },
    {
      //  QikServe Link 2
    }
  ]
}

strings

Type : Core Information Strings - Required

This is a list of key / value strings which are used throughout the app. For a single site install, this information is much larger, when multisite installs have much of this data in the gorupsite objects instead.


onBoarding

Type : Array of Onboarding Card - Optional

Optional list of cards to display when the app first launches to a new user, or a user has chosen to completely clear their app data


homeAlerts

Type : Array of Home Alert - Optional

Optional list of home alert cards, or home alert banners. Can be filtered between user status, and group sites, and include an internal intent to navigate around the app surfaces


informationBlocks

Type : Array of Information Block - Required

At least one information box is required. These can be filtered for owners only, and include links to contact the park, or link to place records inside the app.


navigation

Type : Array of Navigation Item - Required

The main menu, tabs and call to action buttons of the app surfaces. These render in the order they appear in this data. They can navigate within the app sections/pages, to the places section to a certain menu item, or to a set selection of external urls. This should also include three items with either of the tab types, and include the image property


sites

Type : Array of Group Site - Optional

This is the list of sites/parks for multi park installs. These are used by the user to select which park they are staying on, but also once logged in, use this information instead of many of the core strings instead. This gives us the ability to change information on a park by park basis


qikserve

Type : Array of QikServe Link - Optional

This is an optional list of QikServe Links. These links can open approved QikServe menus within the app to create a seemless food and beverage ordering system.

Core Information Strings - Reveal

The core information strings object is a collection of key / value strings. These are stored in the app and used for information which may not want to be hardcoded within the app surfaces. These can be urls, or park information for single site parks, as well as the personalisation strings for when someone is logged in.

{
  "heartbeat": "1697710791",
  "weatherType": "metoffice",
  "homeOwnersEnabled": "true",
  "multiSiteShowDetail": "false",
  "pmsType": "elite",
  "hasQikServe": "true",
  "qikServeConfirmation": "true",
  "eventCutOffDays": "7",
  "notificationInterests": "dog|Food & Bar Offers;family|Entertainment updates",
  "whatsOnLocationToRecord": "false:",
  "whatsOnAllowSoldOutClick": "true",
  "whatsOnDateRanges": "today;tomorrow;stay;week;month",
  "whatsOnDefaultRange": "week",
  "whatsOnDefaultRangeSignedIn": "stay",
  "whatsOnDefaultRangeOwners": "month",
  "whatsOnAutoSelectOwners": "true",
  "routeFilters": "difficulty;activity;terrain;tags",
  "routeSorts": "featured;distancelowhigh;distancehighlow;difficultylowhigh;difficultyhighlow;lengthlowhigh;lengthhighlow;durationlowhigh;durationhighlow",
  "routeDefaultSort": "distancelowhigh",
  "homesalesFilters": "location;condition;rooms;sleeps;size",
  "homesalesSorts": "pricelowhigh;pricehighlow",
  "homesalesDefaultSort": "pricelowhigh",
  "infoTabTitle": "Contact",
  "preHeadline": "[NUM] sleep(s) to go!",
  "preSevenHeadline": "[NUM] sleep(s) to go!",
  "arriveHeadline": "Arriving Today!",
  "duringHeadline": "[NUM] more night(s)!",
  "departHeadline": "Departing Today!",
  "postHeadline": "We’re missing you already",
  "preSubtitle": "We look forward to seeing you soon",
  "preSevenSubtitle": "Best get packing if you haven't already started!",
  "arriveSubtitle": "Have a safe journey and we look forward to seeing you soon",
  "duringSubtitle": "Enjoying yourself? Make the holiday magic last longer and extend your stay",
  "departSubtitle": "It's bye for now but don't forget to share your feedback with us",
  "postSubtitle": "Re-live the holiday magic and book another break with us" 

  //Single Site/Park Clients Only
  //This data is normally in the groupsite information site by site
  "loc_lat" : "50.71245750791539,",
  "loc_lng": "-2.4619866156242995",
  "loc_zoom": "14",
  "w3w": "qualified.burglars.digitally",
  "w3wUrl": "https://w3w.co/qualified.burglars.digitally",
  "footerImage": "https://your-wordpress-install.com/wp-content/uploads/2023/03/app-footer-3.jpeg?v=1679131824",
  "phone": "012345678",
  "emergencyNumber": "01234 567890",
  "emergencyText": "Emergency and Out Of Hours",
  "emergencyCopy": "This number is only for use out of hours or in the case of an emergency.#BREAK#Would you like to call?" 
  "email": "info@holidaymakerapp.co.uk",
  "website": "https://holidaymakerapp.co.uk",
  "address": "Holidaymaker App Ltd#BREAK#Stowey House#BREAK#Bridport Road#BREAK#Dorchester#BREAK#DT12SB",
  "privacyUrl": "https://your-wordpress-install.com/privacy",
  "socialIcons": "facebook;twitter;instagram",
  "facebookUrl": "https://www.facebook.com/holidaymakerapp",
  "instagramUrl": "https://www.instagram.com/holidaymakerapp",
  "twitterUrl": "https://twitter.com/holidaymakerapp",
  "youtubeUrl": "",
  "tiktokUrl": "",
  "threadsUrl": "",
  "mapStyle": "satelitte",
  "holidayHomesUrl": "https://link-to-external-homesales-site.com",
  "accommodationMapButton": "Download Park Map",
  "accommodationMapUrl": "https://your-wordpress-install.com/parkmap",
  "feedbackUrl": "https://your-wordpress-install.com/contact",        
  "newBookingUrl": "https://your-wordpress-install.com/booknow",       
  "forgotPasswordUrl": "https://your-booking-engine.com/forgotpassword",   
  //ProphetOnly
  "forgotPasswordButton": "Reset Login Details",
  "forgotPasswordCopy": "Click below to visit our booking system to reset your credentials if you are having trouble logging in",
  "registerBookingButton": "Register Account",
  "registerBookingUrl": "https://your-booking-engine.com/register",
  "registerBookingCopy": "Click below to visit our booking system to create an account. If this is the same email address attached to your booking, they will synchronise across and you will be able to login",
  "continueAsGuestButton": "Continue as guest",
  "continueAsGuestCopy": "If you  booked on a third party booking system like PitchUp, then you will not be able to add your booking. Click below to continue using the app as a guest",
  "refreshBookingOldCopy": "You do not have a current or future holiday on your account. If you do have a future booking it may take 24 hours to synchronise, but please contact us if you are still having difficulties",
  "refreshBookingNoCopy": "You do not have any holiday bookings on your account. If you do have a future booking it may take 24 hours to synchronise, but please contact us if you are still having difficulties",

  "bookingEngineSiteID": "3" ,
  "basicFormHeader": "Your contact details", 
  "basicFormButton": "Submit"
  "basicFormSentTitle": "Thank you",
  "basicFormSent" : "We will be in touch as soon as we can.",
  "basicFormSmallPrint": "Data is only processed by us",
}


heartbeat

Type : String - Required

This can be anything as it is used by the app surfaces to see if a core information packet has yet been ingested into its own database. The holidaymaker core CMS sends down the current epoch when the data was created as a string


weatherType

Type : Weather Source Type - Required

The current weather source type which matches the current weather data. Normally this would be set to Met Office unless their services are currently down, when holidaymaker will fall back to using the open weather map data


homeOwnersEnabled

Type : Boolean (String) - Optional

If this string is set to 'true' then the app surfaces will show any home owners specific fields, and respond to any home owners specific logic - eg allowing home owners login selection


multiSiteShowDetail

Type : Boolean (String) - Optional

if this string is set to 'true' then the app surfaces will show a site/park information card when a user select a site/park - if not then the app will select the site with no secondary confirmation.


pmsType

Type : PMS Booking Type - Required

Indication to which PMS connection the app should use (if any) so it knows what login to present to the user, and what background refreshes to do


hasQikServe

Type : Boolean (String) - Optional

This is set to true if QikServe functionality is enabled for this install


qikServeConfirmation

Type : Boolean (String) - Optional

If this is true, then when a user clicks on QikServe link they will be shown a confirmation box that they wanted that restaurant/cafe/takeaway etc


eventCutOffDays

Type : String - Optional

This should be an integer as a string - This would tell the app surfaces to ignore any event performances after the supplied number of days. This is designed for clients who want to maintain and setup events in advance, but wish end users to only see a set number of days


notificationInterests

Type : String - Required

This is a complex key/value array condensed into single string. This array represents the push notification topics which are available to the app surfaces. Each key value pair should be separated themselves with pipe, and each pair are delimited with a semicolon. Eg this array is represented as { "family": "Family Friendly", "dog": "Dog Friendly" } { "notificationInterests": "family|Family Friendly;dog|Dog Friendly" }


whatsOnLocationToRecord

Type : Boolean (String) - Optional

If this string is set to 'true' then the app surfaces will navigate to the things to do section and load the linked record when clicking on the location button. Default logic if this is set to false, would be to instead navigate to the park map. Useful for clients who do not use the map.


whatsOnAllowSoldOutClick

Type : Boolean (String) - Optional

If this string is set to 'true' then the app surfaces will still allow click through to the booking url of performances when if they are marked as sold out


whatsOnDateRanges

Type : What’s On Date Range String - Optional

Semi-colon delimited string of what date ranges are available to the app in the whats on section. Example of this could be a client who has a huge list of events/performances, so you may want to remove the 'all' option so the user has to choose a specific range, eg this week/month


whatsOnDefaultRange

Type : What’s On Date Range String - Optional

The default single range that the what's on page should default to when navigating - If you are a guest in the app, or the signed in/owners choices do not exist in the 'whatsOnDateRanges' list. Note that if this default does not exist in the 'whatsOnDateRanges' list then the first available range will be chosen as the default by the app.


whatsOnDefaultRangeSignedIn

Type : What’s On Date Range String - Optional

The default single range that the what's on page should default to when navigating - If you are signed in with a booking in the app. Note that if this default does not exist in the 'whatsOnDateRanges' list then the 'whatsOnDefaultRange' default will be used as a fallback


whatsOnDefaultRangeOwners

Type : What’s On Date Range String - Optional

The default single range that the what's on page should default to when navigating - If you are signed in as an owner. Note that if this default does not exist in the 'whatsOnDateRanges' list then the 'whatsOnDefaultRange' default will be used as a fallback


whatsOnAutoSelectOwners

Type : Boolean (String) - Optional

if this string is set to 'true' then the app surfaces will automatically select the 'Owners Only' tab when navigating to the whats on section, and the user is logged in as a user. This is worth setting to false, if the client doesn't use owners only events, as it can cause people being displayed an empty list by default


routeFilters

Type : List Filter Type String - Optional

A set of filters which are available for the Routes list in the app surfaces


routeSorts

Type : List Sort Type String - Optional

A set of sorts which are available for the Routes list in the app surfaces


routeDefaultSort

Type : List Sort Type String - Optional

Default sort which is set when navigating to the Routes list in the app surfaces. If this is not available in the 'routeSorts' set then the first available sort will be chosen.


homesalesFilters

Type : List Filter Type String - Optional

A set of filters which are available for the Holiday Homes for Sale list in the app surfaces


infoTabTitle

Type : String - Required

This is the title of the first tab in the holiday information / FAQs section of the app.


preHeadline

Type : String - Required

This is the headline used when a user is signed in with a booking and it is before and more than 7 days before their arrival day - [NUM] place holder can be used to add the number of nights left before arrival. (s) placeholder will be removed or replaces by a 's' depending if the number of nights is more than 1.


preSevenHeadline

Type : String - Required

This is the headline used when a user is signed in with a booking and it is before arrival but within 7 days before their arrival day - [NUM] place holder can be used to add the number of nights left before arrival. (s) placeholder will be removed or replaces by a 's' depending if the number of nights is more than 1.


arriveHeadline

Type : String - Required

This is the headline used when a user is signed in with a booking and it is their arrival date


departHeadline

Type : String - Required

This is the headline used when a user is signed in with a booking and it is on their departure date


postHeadline

Type : String - Required

This is the headline used when a user is signed in with a booking and it after their departure date


preSubtitle

Type : String - Required

This is the subtitle used when a user is signed in with a booking and it is before and more than 7 days before their arrival day


preSevenSubtitle

Type : String - Required

This is the subtitle used when a user is signed in with a booking and it is before arrival but within 7 days before their arrival day


arriveSubtitle

Type : String - Required

This is the subtitle used when a user is signed in with a booking and it is their arrival date


duringSubtitle

Type : String - Required

This is the subtitle used when a user is signed in with a booking and it after their arrival date, but before their departure date


departSubtitle

Type : String - Required

This is the subtitle used when a user is signed in with a booking and it is on their departure date


postSubtitle

Type : String - Required

This is the subtitle used when a user is signed in with a booking and it after their departure date


loc_lat

Type : Floating Point Numeric - Optional

SINGLE SITE ONLY : Location latitude of park / site


loc_lng

Type : Floating Point Numeric - Optional

SINGLE SITE ONLY : Location longitude of park / site


loc_zoom

Type : Integer - Optional

SINGLE SITE ONLY : Location map zoom of park / site


w3w

Type : String - Optional

SINGLE SITE ONLY : What3Words address


w3wUrl

Type : Url String - Optional

SINGLE SITE ONLY : Full What3Words url to navigate


footerImage

Type : Image Url String - Optional

SINGLE SITE ONLY : Footer image at the bottom of the my holiday section


phone

Type : String - Optional

SINGLE SITE ONLY : Contact phone number - This can include spaces as if a call us request is triggered this will have spaces removed from it


emergencyNumber

Type : String - Optional

SINGLE SITE ONLY : Emergency phone number - This can include spaces as if a emergency call us request is triggered this will have spaces removed from it


emergencyText

Type : String - Optional

SINGLE SITE ONLY : Emergency button text - This is the text rendered in the emergency phone number button if visible


emergencyCopy

Type : Rich Text / Multiline String - Optional

SINGLE SITE ONLY : Emergency button copy - This is the text that popups in a confirmation dialog if the emergency button is pressed - is often a warning that the number is only for use out of hours or for emergencies


email

Type : String - Optional

SINGLE SITE ONLY : Contact email address


website

Type : Url String - Optional

SINGLE SITE ONLY : Contact website


address

Type : Rich Text / Multiline String - Optional

SINGLE SITE ONLY : Address and postcode


privacyUrl

Type : Url String - Optional

SINGLE SITE ONLY : Privacy policy url


socialIcons

Type : Social Icon Type String - Optional

SINGLE SITE ONLY : Selection of three social icons to show on the my holiday section. Note that if choosing a social network, the corrasponding url should also exist in the data. This will be checked by the app before navigation, but is good practice to ensure url exists as well in the data


facebookUrl

Type : Url String - Optional

SINGLE SITE ONLY : Facebook Url - only used if facebook is present in the social icons selection


instagramUrl

Type : Url String - Optional

SINGLE SITE ONLY : Instagram Url - only used if instagram is present in the social icons selection


twitterUrl

Type : Url String - Optional

SINGLE SITE ONLY : Twitter Url - only used if twitter is present in the social icons selection


youtubeUrl

Type : Url String - Optional

SINGLE SITE ONLY : YouTube Url - only used if youtube is present in the social icons selection


tiktokUrl

Type : Url String - Optional

SINGLE SITE ONLY : TikTok Url - only used if tiktok is present in the social icons selection


threadsUrl

Type : Url String - Optional

SINGLE SITE ONLY : Threads Url - only used if threads is present in the social icons selection


mapStyle

Type : Map Style - Optional

SINGLE SITE ONLY : The style the google map should use in the Park Map section of the app - default 'road'


holidayHomesUrl

Type : Url String - Optional

SINGLE SITE ONLY : If not using the holiday homes sales app section, the main menu can instead navigate to this external holiday home sales url


accommodationMapButton

Type : String - Optional

SINGLE SITE ONLY : An optional external accommodation map jpeg, png or webpage can be added - this is the text the button will show


accommodationMapUrl

Type : Url String - Optional

SINGLE SITE ONLY : An optional external accommodation map jpeg, png or webpage can be added - this is the text the button will show


feedbackUrl

Type : Url String - Optional

SINGLE SITE ONLY : Once a logged in user's departure date has past they will be presented with a leave feedback button which will navigate to this url


newBookingUrl

Type : Url String - Optional

SINGLE SITE ONLY : Once a logged in user's departure date has past they will be presented with a make new booking button which will navigate to this url. This button is also visible to users who choose to browse the app as a guest


forgotPasswordUrl

Type : Url String - Optional

SINGLE SITE ONLY : Used by most PMS connections - button available to users who are having trouble logging in with their booking


bookingEngineSiteID

Type : String - Optional

SINGLE SITE ONLY : Used by some PMS connections - Park ID that may be needed when the app makes refresh requests to the PMS via our infrastructures


forgotPasswordButton

Type : String - Optional

SINGLE SITE ONLY : Prophet PMS Only - Text for forgot password button on help screen


forgotPasswordCopy

Type : Rich Text / Multiline String - Optional

SINGLE SITE ONLY : Prophet PMS Only - Copy for forgot password box on help screen


registerBookingButton

Type : String - Optional

SINGLE SITE ONLY : Prophet PMS Only - Text for register account button text on help screen


registerBookingUrl

Type : Url String - Optional

SINGLE SITE ONLY : Prophet PMS Only - Text for register account button url on help screen


registerBookingCopy

Type : Rich Text / Multiline String - Optional

SINGLE SITE ONLY : Prophet PMS Only - Copy for register account box on help screen


continueAsGuestButton

Type : String - Optional

SINGLE SITE ONLY : Prophet PMS Only - Continue as guest button text on help screen


continueAsGuestCopy

Type : Rich Text / Multiline String - Optional

SINGLE SITE ONLY : Prophet PMS Only - Copy for continue as guest box on help screen


refreshBookingOldCopy

Type : Rich Text / Multiline String - Optional

SINGLE SITE ONLY : Prophet PMS Only - Text which appears on a box on the my holiday screen if someone has successfully logged in but does not have any future bookings


refreshBookingNoCopy

Type : Rich Text / Multiline String - Optional

SINGLE SITE ONLY : Prophet PMS Only - Text which appears on a box on the my holiday screen if someone has successfully logged in but does not have any booking


basicFormHeader

Type : String - Optional

SINGLE SITE ONLY : Header for standard contact form


basicFormButton

Type : String - Optional

SINGLE SITE ONLY : Text for submit button on standard contact form


basicFormSentTitle

Type : String - Optional

SINGLE SITE ONLY : Header for standard contact form once the form has sent successfully


basicFormSent

Type : Rich Text / Multiline String - Optional

SINGLE SITE ONLY : Copy for standard contact form once the form has sent successfully


basicFormSmallPrint

Type : Rich Text / Multiline String - Optional

SINGLE SITE ONLY : Small print rendered under the standard contact form

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
}

Group Site - Reveal

A group site object defines a specific site that a user can choose when logging into the app, or is automatically chosen for them based on their PMS login. These commonly are record for holiday parks, and have many fields in them instead of the core strings list.

The 'key' is one of the most important parts, and generally should never change, even if the park itself has had a name change. This key is what identifies what park a user has chosen when loading the app, and is also used to filter their content so they only see relevant information for their park.

{
  "id": 123,
  "title": "Park One",
  "key": "park-one",
  "guestsOnly": false,
  "ownersOnly": false,
  "priority": 0,
  "image": "https://your-wordpress-install.com/wp-content/uploads/2021/07/DJI_0934.jpg?v=1628248500",
  "footerImage": "https://your-wordpress-install.com/wp-content/uploads/2021/07/DJI_0934.jpg?v=1628248500",
  "description": "Holiday Park One sits on the south coast of England, just a stones throw from the jurassic coast",
  "phone": "012345678",
  "emergencyNumber": "01234 567890",
  "emergencyText": "Emergency and Out Of Hours",
  "emergencyCopy": "This number is only for use out of hours or in the case of an emergency.#BREAK#Would you like to call?" 
  "email": "info@holidaymakerapp.co.uk",
  "website": "https://holidaymakerapp.co.uk",
  "address": "Holidaymaker App Ltd#BREAK#Stowey House#BREAK#Bridport Road#BREAK#Dorchester#BREAK#DT12SB",
  "w3w": "qualified.burglars.digitally",
  "w3wUrl": "https://w3w.co/qualified.burglars.digitally",  
  "privacyUrl": "https://your-wordpress-install.com/privacy",
  "socialIcons": "facebook;twitter;instagram",
  "facebookUrl": "https://www.facebook.com/holidaymakerapp",
  "instagramUrl": "https://www.instagram.com/holidaymakerapp",
  "twitterUrl": "https://twitter.com/holidaymakerapp",
  "youtubeUrl": "",
  "tiktokUrl": "",
  "threadsUrl": "",
  "holidayHomesUrl": "https://link-to-external-homesales-site.com",
  "accommodationMapButton": "Download Park Map",
  "accommodationMapUrl": "https://your-wordpress-install.com/parkmap",
  "loc_lat" : "50.71245750791539,",
  "loc_lng": "-2.4619866156242995",
  "loc_zoom": "14",
  "mapStyle": "satellite",
  "bookingEngineStrings": {
    //Booking Engine Strings Object
  }
  "basicFormHeader": "Your contact details", 
  "basicFormButton": "Submit"
  "basicFormSentTitle": "Thank you",
  "basicFormSent" : "We will be in touch as soon as we can.",
  "basicFormSmallPrint": "Data is only processed by us",
}

id

Type : Integer - Required

ID for group site record, must be unique between group site records, but does not need to unique among other entities.


title

Type : String - Required

Site / Park Name


key

Type : String - Required

The site/park key - This is a very important property as it is used to identify which park a user is on, and what content should be shown based on other entities 'sites' array


guestsOnly

Type : Boolean - Optional

Should this site or park be considered guest only? This means if a user select this park, they will bypass the login selection and automatically be set to be a guest. Usful for none parks which are added as an additional groupsite, eg an on site pub open to locals as well as a park guests


ownersOnly

Type : Boolean - Optional

Should this site or park be considered guest only? This means if a user selects this park they can choose to be a owner, or a guest, but not have the option to login with a PMS booking.


priority

Type : Integer - Optional

Defaults to 99 - the lower the priority the higher on the site selection list this park will appear before alphabetisation.


image

Type : Image Url String - Optional

Hero image for this site / park. This is shown on the site selection list.


footerImage

Type : Image Url String - Optional

Footer image at the bottom of the my holiday section


description

Type : Rich Text / Multiline String - Optional

Text displayed on the card for this park / site on the site selection screen


phone

Type : String - Optional

Contact phone number - This can include spaces as if a call us request is triggered this will have spaces removed from it


emergencyNumber

Type : String - Optional

Emergency phone number - This can include spaces as if a emergency call us request is triggered this will have spaces removed from it


emergencyText

Type : String - Optional

Emergency button text - This is the text rendered in the emergency phone number button if visible


emergencyCopy

Type : Rich Text / Multiline String - Optional

Emergency button copy - This is the text that popups in a confirmation dialog if the emergency button is pressed - is often a warning that the number is only for use out of hours or for emergencies


email

Type : String - Optional

Contact email address


website

Type : Url String - Optional

Contact website


address

Type : Rich Text / Multiline String - Optional

Address and postcode


w3w

Type : String - Optional

What3Words address


w3wUrl

Type : Url String - Optional

Full What3Words url to navigate


privacyUrl

Type : Url String - Required

Privacy policy url


socialIcons

Type : Social Icon Type String - Optional

Selection of three social icons to show on the my holiday section. Note that if choosing a social network, the corrasponding url should also exist in the data. This will be checked by the app before navigation, but is good practice to ensure url exists as well in the data


facebookUrl

Type : Url String - Optional

Facebook Url - only used if facebook is present in the social icons selection


instagramUrl

Type : Url String - Optional

Instagram Url - only used if instagram is present in the social icons selection


twitterUrl

Type : Url String - Optional

Twitter Url - only used if twitter is present in the social icons selection


youtubeUrl

Type : Url String - Optional

YouTube Url - only used if youtube is present in the social icons selection


tiktokUrl

Type : Url String - Optional

TikTok Url - only used if tiktok is present in the social icons selection


threadsUrl

Type : Url String - Optional

Threads Url - only used if threads is present in the social icons selection


holidayHomesUrl

Type : Url String - Optional

If not using the holiday homes sales app section, the main menu can instead navigate to this external holiday home sales url


accommodationMapButton

Type : String - Optional

An optional external accommodation map jpeg, png or webpage can be added - this is the text the button will show


accommodationMapUrl

Type : Url String - Optional

An optional external accommodation map jpeg, png or webpage can be added - this is the text the button will show


loc_lat

Type : Floating Point Numeric - Optional

Location latitude of park / site


loc_lng

Type : Floating Point Numeric - Optional

Location longitude of park / site


loc_zoom

Type : Integer - Optional

Location map zoom of park / site


mapStyle

Type : Map Style - Optional

The style the google map should use in the Park Map section of the app - default 'road'


bookingEngineStrings

Type : Booking Engine Strings - Optional

A nested object with a collection of strings in relation to PMS login and behavior


basicFormHeader

Type : String - Optional

Header for standard contact form


basicFormButton

Type : String - Optional

Text for submit button on standard contact form


basicFormSentTitle

Type : String - Optional

Header for standard contact form once the form has sent successfully


basicFormSent

Type : Rich Text / Multiline String - Optional

Copy for standard contact form once the form has sent successfully


basicFormSmallPrint

Type : Rich Text / Multiline String - Optional

Small print rendered under the standard contact form

Home Alert - Reveal

A Home alert renders at the top of the My Holiday section. It is can be a card with a border, title with icon and text. This has an accent color and icon based on it's style, with an option to have these custom set. Optionally you can have it as a banner style with a background image and white title (or transparent black gradient). An alert box can have an optional intent to cross link too content within the app, or link out of the app externally (eg to F&B system, or other bookings). If an alert is set to banner style, it must include an intent else will not render in the app (as will do nothing when clicked)

//Guest Alert example with no button
{
  "title": "High winds",
  "copy": "We have had an amber weather warning for high winds expected until Thursday",
  "style": "alert",
  "sites": [
    "park-one",
    "park-two"
  ]
}

//Owners Only Banner
{
  "title": "5% off at the bar",
  "style": "banner",
  "banner": "https://your-wordpress-install.com/wp-content/uploads/2022/10/park-bar.jpeg?v=1684756244",
  "linkIntent": "offer",
  "linkID": 134,
  "isOwnersOnly": true,
  "sites": [
    "park-one"
  ]
}

//All properties
{
  "title": "High winds",
  "copy": "We have had an amber weather warning for high winds expected until Thursday",
  "style": "alert",
  "banner": "https://your-wordpress-install.com/wp-content/uploads/2022/10/park-bar.jpeg?v=1684756244",
  "linkIntent": "offer",
  "linkTitle": "Book Now",
  "linkUrl": "https://your-booking-engine.com/start-booking",
  "linkSlug": "menu-item-slug",
  "linkID": 134,
  "isOwnersOnly": true,
  "signedInOnly": false,
  "onHolidayOnly": false,
  "sites": [
    "park-one"
  ]
}

title

Type : String - Required

Title is rendered either at the top of the alert box card in the stlye's defined color, or if the style is set to banner then will be white on top of a black gradient at the bottom of the banner image


style

Type : Home Alert Style - Optional

Style of the alert box. If set to banner then an intent must be set, and the copy property will be ignored.


copy

Type : Rich Text / Multiline String - Optional

For alert box cards this is the main copy rendered. This is ignored if the style is set to banner.


banner

Type : Image Url String - Optional

If style is set to banner, then this is required. This is the image which is displayed as the banner. Other styles ignore this property even if set.


linkIntent

Type : Home Alert Intent - Optional

This is optional for alert cards, but required if the style is set to banner. If this is set then the alert box will add a call to action button, or behaviour as expected when the banner is clicked.


linkTitle

Type : String - Optional

The title of the call to action button. This is ignored if the style is set to banner, or there is no intent set.


linkUrl

Type : Url String - Optional

External url required if the intent is set to 'link', or the QikServe embed url if intent is set to 'qikserve' - ignored by all other intents


linkSlug

Type : String - Optional

Slug of place menu item if the intent is set to 'menu' - ignored by all other intents


linkID

Type : Integer - Optional

ID of record to navigate to if the intent is set to 'place', 'offer' or 'qikserve' - ignored by all other intents


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


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


onHolidayOnly

Type : Boolean - Optional

If set to true this alert box 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 alert box 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 alert box 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.


sites

Type : Array of String - Required

Only required for multi site installs - can be disregarded for single park systems. This should be a list of valid groupsite keys which this alert box should be available for. If this array is missing or empty then the alert box will not render for any user.

Home 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)
• "link" - Navigate to external link
• "menu" - Navigate to places section filtering by a menu item
• "place" - Navigate to places section and view a specific place record
• "offers" - Navigate to offers section
• "offer" - Navigate to offers section and view a specific offer record
• "whatson" - Navigate to what's on section
• "homesales" - Navigate to holiday home sales section
• "routes" - Navigate to routes section
• "faqs" - Navigate to FAQs / Holiday Information section
• "qikserve" - Load chosen QikServe link within the app

{
  "linkIntent": "offer",
  "linkID": 134,
}

Home 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
• "custom" - Can set own icon/color
• "banner" - Renders as landscape image banner with title on top

{
  "style": "alert"
}

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

Information Block - Reveal

Information blocks renders as a list on the first tab of the holiday information/FAQs section of the app. They are rendered as cards with some copy and an optional button, or set of buttons. A single button can link to a form of contact, or to place records. You can also choose for it to render several buttons for the available FAQ categories.

{
  "id": 4,
  "copy": "Don't forget you can also contact us on this email address.",
  "type": "email",
  "link": "hello@holidaymakerapp.co.uk",
  "place": 42,
  "menu": "menu-item-slug",
  "buttonTitle": "hello@holidaymakerapp.co.uk",
  "isOwnersOnly": false,
  "sites": [
    "park-one"
  ]
}

id

Type : Integer - Required

This ID number needs to be unique to other information blocks however is not relational to any other logic in the app, therefore can be generated on the fly. This ID number is also used for ordering the information blocks, so it is common to give them IDs of 1..X as they are being written to the data packet.


copy

Type : Rich Text / Multiline String - Optional

Main text inside the information block.


type

Type : Information Block Type - Optional

Type for how the button/s should render and behave. Default is "none"


buttonTitle

Type : String - Optional

Text used for the single button. typically may be the actual phone number, or email address, or a call to action style title. Ignored if type set to none, or faqs.


link

Type : String - Optional

This is the email, website, or phone number for the corresponding block types. Is ignored if type is not set to email, website, or phone.


menu

Type : String - Optional

Slug of place menu item to view a list of places of, if the block type is set to 'menu'. Is ignored if type is not set to 'menu'.


place

Type : Integer - Optional

This is the place ID number to view the detail of, if the block type is set to 'place'. Is ignored if type is not set to 'place'.


isOwnersOnly

Type : Boolean - Optional

If set to true this information block will only be visible to users who have logged in as a home owner.


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 information block should be available for. If this array is missing or empty then the information block will not render for any user.

Information Block Type - Reveal

This is string definition to set an information block's button/s will be rendered and behave. The options available are :
• "none" - No button (default)
• "faqs" - Multiple buttons for all FAQ categories
• "menu" - Navigate to places section filtering by a menu item
• "place" - Navigate to places section and view a specific place record
• "phone" - Trigger a phone call with supplied number
• "email" - Trigger a email with the supplied email address
• "website" - Navigate to an external website

{
  "type": "email",
  "link": "hello@holidaymakerapp.co.uk",
}

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

List Filter Type String - Reveal

This is a set of string definitions for filters available on some lists. These are mixed together for both the holiday homes for sale section, and the routes section - however when sending these values, single groups should be used. These should be semicolon delimited, out of the following available options :
• "difficulty" - Difficulty (Routes)
• "activity" - Activity (Routes)
• "terrain" - Terrain (Routes)
• "tags" - Tags (Routes)

• "location" - Location (Home Sales)
• "condition" - Condition (Home Sales)
• "rooms" - Rooms (Home Sales)
• "sleeps" - Sleeps (Home Sales)
• "size" - Size (Home Sales)
• "manufacturer": "Manufacturer (Home Sales)

{
  "routeFilters": "difficulty;activity;terrain;tags",
  "homesalesFilters": "location;condition;rooms;sleeps;size"
}

List Sort Type String - Reveal

This is a single or set of several string definitions to set what sort options are available on some lists These are mixed together for both the holiday homes for sale section, and the routes section - however when sending these values, single groups should be used. If it is a set then these should be semicolon delimited, out of the following available options :
• "featured": "Featured (Routes & Home Sales)

• "distancelowhigh" - Distance From Park Low to High (Routes)
• "distancehighlow" - Distance From Park High to Low (Routes)
• "difficultylowhigh" - Difficulty From Park Low to High (Routes)
• "difficultyhighlow" - Difficulty From Park High to Low (Routes)
• "lengthlowhigh" - Length From Park Low to High (Routes)
• "lengthhighlow" - Length From Park High to Low (Routes)
• "durationlowhigh" - Duration From Park Low to High (Routes)
• "durationhighlow" - Duration From Park High to Low (Routes)

• "pricelowhigh" - Price Low to High (Home Sales)
• "pricehighlow" - Price High to Low (Home Sales)

{
  "routeSorts": "featured;distancelowhigh;distancehighlow;difficultylowhigh;difficultyhighlow;lengthlowhigh;lengthhighlow;durationlowhigh;durationhighlow",
  "routeDefaultSort": "distancelowhigh",
  "homesalesSorts": "pricelowhigh;pricehighlow",
  "homesalesDefaultSort": "pricelowhigh"
}

Map Style - Reveal

This is string definition to set how embedded google maps should render in the app. The options available are :
• "road" - Standard Google Maps Road
• "satellite" - Satellite Photo View

{
  "mapStyle": "satelitte"
}

Navigation Item - Reveal

Main menu items are rendered simply as a text button. They can be set to be an alternative accent color, which is commonly used for holiday homes sales. When selecting an item a menu item can navigate to an app page, a set list of external urls, or a place menu item.

{
  "type": "page",
  "title": "My Holiday",
  "page": "myholiday"
  "slug": "facilities"
  "url": "site|holidayHomesUrl",
  "alt": true,
  "icon": "brand"
}

type

Type : Navigation Item Type - Required

Sets the behaviour of this menu item or tab - either a page navigate, external link, or place menu item for menu items, or page navigate or place menu for up to three tab items


title

Type : String - Required

The title of the menu item


page

Type : Navigation Item Page - Optional

Which page should this item navigate too. Ignored if the type is not set to 'page'. Defaults to 'myholiday'


slug

Type : String - Optional

Which places menu item slug should this item navigate too. Ignored if the type is not set to 'thingstodo'


url

Type : Navigation Item Url Key - Optional

Which external url key should this item navigate too. Ignored if the type is not set to 'url'


alt

Type : Boolean - Optional

Should this item render as the alternative accent color. Default false.


icon

Type : Navigation Item Tab / CTA Icon - Optional

Ignored unless the menu type is a tab or tabthingstodo - This is the icon key for which icon should be used for this tab

Navigation Item Page - Reveal

This is string definition to set which page / section of the app surfaces a menu item should navigate too. The options available are :
• "myholiday" - My Holiday (default)
• "thingstodo" - Things to Do / Places
• "whatson" - What's On
• "parkmap" - Park Map
• "faqs" - FAQs / Holiday Information
• "favourites" - My Favourites
• "offers" - Offers
• "homesales" - Holiday Homes for Sale
• "shop" - Shop
• "routes" - Routes
• "food" - Order Food & Drink

{
  "type": "page",
  "title": "Explore",
  "page": "thingstodo"
}

Navigation Item Tab / CTA Icon - Reveal

This is string definition to set a tab or CTA icons for a set embedded in the app. 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 isn't below, if the corresponding bespoke image is included in that clients app. The standard options available are :
• "brand" - Tabs
• "beach" - Tabs
• "calendar" - Tabs
• "compass" - Tabs
• "place" - Tabs
• "bench" - Tabs
• "lakes" - Tabs
• "clipboard" - Tabs
• "info" - Tabs
• "lodge" - Tabs
• "walking" - Tabs
• "takeaway" - Tabs
• "takeawaypizza" - Tabs
• "takeawayburger" - Tabs
• "takeawayfish" - Tabs
• "phone" - CTAs
• "map" - CTAs
• "mail" - CTAs
• "question" - CTAs
• "car" - CTAs



NOTE : THESE ARE CURRENTLY BEING DEFINED AND ARE NOT CORRECTLY LISTED

{
  "icon": "brand"
}

Navigation Item Type - Reveal

This is string definition to set how a menu item will behave. The options available are :
• "page" - Navigate to app page/section (default)
• "url" - Navigate to an external url (restricted to urls/intents already known by the app)
• "thingstodo" - Navigate to places/things to do section filtering by a menu item
• "tab" - This is not for the main menu but for one of the bottom tabs : navigate to app page/section
• "tabthingstodo" - This is not for the main menu but for one of the bottom tabs : navigate to places/things to do section filtering by a menu item
• "cta" - This is not for the main menu but for one of the three CTA buttons on the my holiday section : navigate to app page/section
• "ctathingstodo" - This is not for the main menu but for one of the three CTA buttons on the my holiday section : navigate to places/things to do section filtering by a menu item
• "ctaurl" - Navigate to an external url (restricted to urls/intents already known by the app)

{
  "type": "page",
  "title": "Explore",
  "page": "thingstodo"
}

Navigation Item Url Key - Reveal

This is string key to tell the app which external url a menu item should attempt to navigate too. The options available are :
• "site|holidayHomesUrl" - Navigate to external holiday home sales website
• "intent|map" - Trigger the normal navigate to map intent within the app
• "intent|phone" - Trigger the normal phone us intent within in the app
• "intent|email" - Trigger the normal email/contact us intent within the app

{
  "type": "url",
  "title": "Holiday Homes For Sale",
  "url": "site|holidayHomesUrl"
},

Onboarding Card - Reveal

This is single onboarding card. These are displayed with the title, a large icon / image in the middle, with a small bit of copy at the bottom.

{
  "title": "How many sleeps?",
  "copy": "The countdown to your break at Key Holiday Park has started...",
  "icon": "https://your-wordpress-install.com/wp-content/uploads/2021/08/celebration-stars-red.png?v=1629324947"
}

title

Type : String - Required

Title of onboarding card


copy

Type : Rich Text / Multiline String - Required

This works best a single sentence. Text renders at the bottom of the card under the icon


icon

Type : Image Url String - Required

The icon/image is rendered in the middle of the card. Generally a transparent icon works well.

PMS Booking Type - Reveal

This is string definition to set which PMS Booking login the app should use. The options available are :
• "guest" - Do not have a login process for whole app (Single Site Guest Mode)
• "manual" - Manual booking process (User adds own arrival / departure etc)
• "bex" - ParcVu Booking Experts PMS login
• "parcvu" - ParcVu Classic PMS login
• "gemapark" - GemaPark PMS login
• "rms" - RMS Cloud PMS login
• "elite" - Elite Dynamics PMS login
• "campmanager" - Campmanager PMS login
• "prophet" - Prophet Bookings PMS login
• "bespoke" - In-house / Bespoke PMS login

{
  "pmsType": "bex"
}

QikServe Link - Reveal

This is a single QikServe Link listing. It contains the rich content to render a card within the apps order food section as well as a reference to that link for other parts of the app to access if required.

{
  "id": 1234,
  "title": "Holidaymaker Pizza",
  "description": "This is some information about the lovely pizza restaurant we have.#BREAK##BREAK#You can order pizza here and cheesy sticks!",
  "address": "Oasis Complex#BREAK#Key Park One#BREAK#Dorchester#BREAK#Dorset",
  "imgUrl": "https://your-wordpress-install.com/wp-content/uploads/2024/01/Pizza-Diner.jpg?v=1704806444",
  "ctaUrl": "https://order-demo.withqikserve.com/demo-demo-demo",
  "ctaText": "View Menus and Order >",
  "highlightText": "Takeaway and Table Service",
  "sites": [
    "key-park-one"
  ]
}

id

Type : Integer - Required

ID for this link. This needs to be unique to others links 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

Link / Menu Title


description

Type : Rich Text / Multiline String - Optional

List description. This is rendered as a small amount of text on the home cards within the app surfaces.


address

Type : Rich Text / Multiline String - Optional

Link address. This is only relevent if QikServe link confirmation is on for this install. It is rendered in the confirmation box when a user clicks on a QikServe link.


imgUrl

Type : Image Url String - Optional

Landscape hero image used on the order food view.


ctaUrl

Type : Url String - Required

The QikServe affiliated permalink to open the chosen menu within the app


ctaText

Type : String - Required

The title for the call to action button that opens the chosen menu within the app. Typical default is 'View Menus and Order >'


highlightText

Type : String - Optional

This small piece of text is used on the list cards to highlight something. It is normally the brand accent color in a rounded corner pill text view. Examples may be 'Takeaway or Table Service' or 'New for 2024'


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 QikServe Link should be available for. If this array is missing or empty then the offer will not render for any user.

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

Social Icon Type String - Reveal

This is a set of up to three string definitions to set what social icons to use. These should be semicolon delimited, out of the following available options :
• "none" - Do not show an icon is this position (default)
• "twitter" - Twitter using the legacy blue bird icon
• "twitterx" - Twitter using recent 'X' black logo
• "tiktok" - TikTok
• "facebook" - Facebook
• "instagram" - Instagram
• "youtube" - YouTube
• "threads" - Threads
• "logo" - Brand / Company logo - this will navigate to main park website - on CMS restricts users from selecting this option for the middle position only

{
  "socialIcons": "threads;instagram;tiktok"
}

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

Weather Source Type - Reveal

This is string definition of which weather source the app should currently have. The options available are :
• "metoffice - Met Office
• "openweathermap" - Open Weather Map

{
  "weatherType": "metoffice"
}

What’s On Date Range String - Reveal

This is a single or set of several string definitions to set what date ranges are available in the what's on section. If it is a set then these should be semicolon delimited, out of the following available options :
• "all" - All
• "today" - Today
• "tomorrow" - Tomorrow
• "stay" - Your Stay
• "week" - This Week
• "month" - This Month

{
  "whatsOnDateRanges": "today;tomorrow;stay;week;month",
  "whatsOnDefaultRange": "week",
  "whatsOnDefaultRangeSignedIn": "stay",
  "whatsOnDefaultRangeOwners": "month"
}

Full Packet Example

{
  "info": {
    "strings": {
      "heartbeat": "1697710791",
      "weatherType": "metoffice",
      "homeOwnersEnabled": "true",
      "multiSiteShowDetail": "false",
      "pmsType": "elite",
      "hasQikServe": "true",
      "qikServeConfirmation": "true",
      "notificationInterests": "dog|Food & Bar Offers;family|Entertainment updates",
      "whatsOnDateRanges": "today;tomorrow;stay;week;month",
      "whatsOnDefaultRange": "week",
      "whatsOnDefaultRangeSignedIn": "stay",
      "whatsOnDefaultRangeOwners": "month",
      "whatsOnAutoSelectOwners": "true",
      "whatsOnLocationToRecord": "false:",
      "whatsOnAllowSoldOutClick": "true",
      "routeFilters": "difficulty;activity;terrain;tags",
      "routeSorts": "featured;distancelowhigh;distancehighlow;difficultylowhigh;difficultyhighlow;lengthlowhigh;lengthhighlow;durationlowhigh;durationhighlow",
      "routeDefaultSort": "distancelowhigh",
      "homesalesFilters": "location;condition;rooms;sleeps;size",
      "homesalesSorts": "pricelowhigh;pricehighlow",
      "homesalesDefaultSort": "pricelowhigh",
      "infoTabTitle": "Contact",
      "preHeadline": "[NUM] sleep(s) to go!",
      "preSevenHeadline": "[NUM] sleep(s) to go!",
      "arriveHeadline": "Arriving Today!",
      "duringHeadline": "[NUM] more night(s)!",
      "departHeadline": "Departing Today!",
      "postHeadline": "We’re missing you already",
      "preSubtitle": "We look forward to seeing you soon",
      "preSevenSubtitle": "Best get packing if you haven't already started!",
      "arriveSubtitle": "Have a safe journey and we look forward to seeing you soon.",
      "duringSubtitle": "Enjoying yourself? Make the holiday magic last longer and extend your stay (subject to availability), call 01308 426917 or visit your park reception.",
      "departSubtitle": "It's bye for now but don't forget to share your holiday snaps #WDLH for a chance to win £250 off your next holiday.",
      "postSubtitle": "Re-live the holiday magic and book another WDLH break, why not visit one of our other parks?"
    },
    "onBoarding": [
      {
        "title": "How many sleeps?",
        "copy": "The countdown to your break has started...",
        "icon": "https://your-wordpress-install.com/wp-content/uploads/2021/08/fireworks-yellow.png?v=1629734298"
      },
      {
        "title": "Find lots of things to do",
        "copy": "Explore the beautiful surroundings and see what we have to offer...",
        "icon": "https://your-wordpress-install.com/wp-content/uploads/2021/08/shell-yellow.png?v=1629734343"
      },
      {
        "title": "Plan your stay",
        "copy": "Get ready for your break with our information tools...",
        "icon": "https://your-wordpress-install.com/wp-content/uploads/2021/08/calendar-sunny-yellow.png?v=1629734568"
      }
    ],
    "homeAlerts": [
      {
        "title": "Owners Hub",
        "copy": "Login to our Owners Portal",
        "style": "standard",
        "linkIntent": "link",
        "linkTitle": "Login",
        "linkUrl": "https://link-to-owners-portal.com",
        "isOwnersOnly": true,
        "sites": [
          "park-one",
          "park-two"
        ]
      },
      {
        "title": "5% off at the bar",
        "style": "banner",
        "banner": "https://your-wordpress-install.com/wp-content/uploads/2022/10/park-bar.jpeg?v=1684756244",
        "linkIntent": "offer",
        "linkID": 134,
        "sites": [
          "park-one"
        ]
      }
    ],
    "informationBlocks": [
      {
        "copy": "If you have any queries check out our information in the categories below to see if your question is already answered. If not, you can contact us directly.",
        "type": "faqs",
        "sites": [
          "park-one",
          "park-two"
        ]
      },
      {
        "id": 1,
        "copy": "Please speak to a member of our Reception Team who will be delighted to help.",
        "type": "phone",
        "link": "01234 567 890",
        "buttonTitle": "01234 567 890",
        "sites": [
          "park-one",
          "park-two"
        ]
      },
      {
        "id": 2,
        "copy": "Don't forget you can also contact us on this email address.",
        "type": "email",
        "link": "info@holidaymakerapp.co.uk",
        "buttonTitle": "info@holidaymakerapp.co.uk",
        "sites": [
          "park-one",
          "park-two"
        ]
      },      
      {
        "id": 4,
        "copy": "Out-of-hours emergency telephone number",
        "type": "phone",
        "link": "01234 567 891",
        "buttonTitle": "01234 567 891",
        "sites": [
          "park-one"
          
        ]
      },
      {
        "id": 5,
        "copy": "Out-of-hours emergency telephone number",
        "type": "phone",
        "link": "01234 567 892",
        "buttonTitle": "01234 567 892",
        "sites": [
          "park-two"
        ]
      }   
    ],  
    "sites": [
      {
        "id": 123,
        "title": "Park One",
        "key": "park-one",
        "priority": 0,
        "image": "https://your-wordpress-install.com/wp-content/uploads/2021/07/DJI_0934.jpg?v=1628248500",
        "footerImage": "https://your-wordpress-install.com/wp-content/uploads/2021/07/DJI_0934.jpg?v=1628248500",
        "description": "Holiday Park One sits on the south coast of England, just a stones throw from the jurassic coast",
        "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",
        "w3w": "qualified.burglars.digitally",
        "w3wUrl": "https://w3w.co/qualified.burglars.digitally",        
        "privacyUrl": "https://your-wordpress-install.com/privacy",
        "socialIcons": "facebook;twitter;instagram",
        "facebookUrl": "https://www.facebook.com/holidaymakerapp",
        "instagramUrl": "https://www.instagram.com/holidaymakerapp",
        "twitterUrl": "https://twitter.com/holidaymakerapp",
        "holidayHomesUrl": "https://link-to-external-homesales-site.com",
        "accommodationMapButton": "Download Park Map",
        "accommodationMapUrl": "https://your-wordpress-install.com/parkmap",
        "loc_lat" : "50.71245750791539,",
        "loc_lng": "-2.4619866156242995",
        "loc_zoom": "14",
        "mapStyle": "satellite",
        "bookingEngineStrings": {
          "feedbackUrl": "https://your-wordpress-install.com/contact",        
          "newBookingUrl": "https://your-wordpress-install.com/booknow",       
          "forgotPasswordUrl": "https://your-booking-engine.com/forgotpassword",   
        }
        "basicFormHeader": "Your contact details", 
        "basicFormButton": "Submit"
        "basicFormSentTitle": "Thank you",
        "basicFormSent" : "We will be in touch as soon as we can.",
        "basicFormSmallPrint": "Data is only processed by us",
      },
      {
        "id": 123,
        "title": "Park Two",
        "key": "park-two",
        "priority": 0,
        "image": "https://your-wordpress-install.com/wp-content/uploads/2021/07/park-two.jpg?v=1628248500",
        "footerImage": "https://your-wordpress-install.com/wp-content/uploads/2021/07/park-two.jpg?v=1628248500",
        "description": "Holiday Park Two looks over the cliffs of the jurassic coast",
        "phone": "012345678",
        "emergencyNumber": "01234 567890",
        "emergencyText": "Emergency and Out Of Hours",
        "emergencyCopy": "This number is only for use out of hours or in the case of an emergency.#BREAK#Would you like to call?" 
        "email": "info@holidaymakerapp.co.uk",
        "website": "https://holidaymakerapp.co.uk",
        "address": "Holidaymaker App Ltd#BREAK#Stowey House#BREAK#Bridport Road#BREAK#Dorchester#BREAK#DT12SB",
        "w3w": "qualified.burglars.digitally",
        "w3wUrl": "https://w3w.co/qualified.burglars.digitally",        
        "privacyUrl": "https://your-wordpress-install.com/privacy",
        "socialIcons": "facebook;twitter;instagram",
        "facebookUrl": "https://www.facebook.com/holidaymakerapp",
        "instagramUrl": "https://www.instagram.com/holidaymakerapp",
        "twitterUrl": "https://twitter.com/holidaymakerapp",
        "holidayHomesUrl": "https://link-to-external-homesales-site.com",
        "accommodationMapButton": "Download Park Map",
        "accommodationMapUrl": "https://your-wordpress-install.com/parkmap",
        "loc_lat" : "50.71245750791539,",
        "loc_lng": "-2.4619866156242995",
        "loc_zoom": "14",
        "mapStyle": "satellite",
        "bookingEngineStrings": {
          "feedbackUrl": "https://your-wordpress-install.com/contact",        
          "newBookingUrl": "https://your-wordpress-install.com/booknow",       
          "forgotPasswordUrl": "https://your-booking-engine.com/forgotpassword",   
        }
        "basicFormHeader": "Your contact details", 
        "basicFormButton": "Submit"
        "basicFormSentTitle": "Thank you",
        "basicFormSent" : "We will be in touch as soon as we can.",
        "basicFormSmallPrint": "Data is only processed by us",
      }
    ]
  },
  "qikserve": [
    {
      "id": 1234,
      "title": "Holidaymaker Pizza",
      "description": "This is some information about the lovely pizza restaurant we have.#BREAK##BREAK#You can order pizza here and cheesy sticks!",
      "imgUrl": "https://your-wordpress-install.com/wp-content/uploads/2024/01/Pizza-Diner.jpg?v=1704806444",
      "ctaUrl": "https://order-demo.withqikserve.com/demo-demo-demo",
      "ctaText": "View Menus and Order >",
      "highlightText": "Takeaway and Table Service",
      "sites": [
        "key-park-one"
      ]
    }
  ],
  "lastChange": 1690895249
}

Data Changes

11/02/2026 - PMS Booking Type

Added ParcVu Booking Experts option

12/01/2024 - Core Information Strings

Added 'eventCutOffDays' property

11/01/2024 - Navigation Item Page

Added 'food' page option

11/01/2024 - Navigation Item Tab / CTA Icon

Added all current icons available in HM Core 1.38.0

09/01/2024 - Core Information

Added 'qikserve' property and QikServe Link definitions

09/01/2024 - Home Alert Intent

Added qikserve option

21/11/2023 - Core Information Strings

Added 'whatsOnAllowSoldOutClick' property

25/10/2023 - Core Information Strings

Added 'whatsOnLocationToRecord' property

19/10/2023 - Core Information Strings

Added various strings to replace HM_Constants in app surfaces : heartbeat, weatherType, homeOwnersEnabled, multiSiteShowDetail, pmsType, notificationInterests, whatsOnDateRanges, whatsOnDefaultRange, whatsOnDefaultRangeSignedIn, whatsOnDefaultRangeOwners, whatsOnAutoSelectOwners, routeFilters, routeSorts, routeDefaultSort, homesalesFilters, homesalesSorts, homesalesDefaultSort

01/09/2023 - Core Information Strings

Added emergency number, text, and copy properties

Show All Changes

01/09/2023 - Group Site

Added emergency number, text, and copy properties

29/08/2023 - Core Information

Renamed 'mainMenu' property to 'navigation'

21/08/2023 - Navigation Item

Renamed to Navigation Item

21/08/2023 - Navigation Item Page

Renamed to Navigation Item Page

21/08/2023 - Navigation Item Tab / CTA Icon

Renamed to Navigation Item Tab / CTA Icon

21/08/2023 - Navigation Item Type

Renamed to Navigation Item Type

21/08/2023 - Navigation Item Url Key

Renamed to Navigation Item Type

21/08/2023 - Navigation Item Url Key

Added three internal intents for new cta buttons

15/08/2023 - Navigation Item

Added 'icon' property

15/08/2023 - Navigation Item Type

Added 'tab' and 'tabthingstodo' enum keys

07/08/2023 - Core Information

Added 'mainMenu' property and menu item definitions

07/08/2023 - Home Alert Style

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

27/07/2023 - Social Icon Type String

Added Twitter 'X' option

06/07/2023 - Social Icon Type String

Added threads, tiktok, and youtube options

22/06/2023 - Core Information Strings

Added support for tiktok, youtube, and threads urls

22/06/2023 - Group Site

Added support for tiktok, youtube, and threads urls

14/04/2023 - Home Alert

Added banner image and signed in/on holiday availability booleans

28/11/2022 - Core Information Strings

Added w3w and w3wUrl properties

28/11/2022 - Group Site

Added w3w and w3wUrl properties