Login / Sign Up

Group Site

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.

Structure

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

Properties

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

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

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

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

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

Data Changes

01/09/2023 - Group Site

Added emergency number, text, and copy properties

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 - Group Site

Added support for tiktok, youtube, and threads urls

28/11/2022 - Group Site

Added w3w and w3wUrl properties