Login / Sign Up

Booking

Single holidaymaker booking entity. Used to personalise the app, and easy information access to the guest. The arrival and departure dates are also used for push notification segmentation, and some information used for stats tracking to build user demographics.

Structure

{
  "id": "11223344",
  "reference": "11223344", 
  "arrival": "2023-09-09",
  "departure": "2023-09-11",
  "unittype": "Standard Electric Pitch",
  "unittypeID": "1234",
  "unitgroup": "Pitches",
  "unitgroupID": "5678",
  "location": "Touring & Camping - Caravan", 
  "isTouring" : true,
  "isOTA" : false,
  "cancelled": false,
  "seniors": 0,
  "adults": 2,
  "teenagers": 1,
  "children": 1,
  "infants": 0,
  "pets": 0,
  "bookingUrl": "https://portal.managebooking.pmssystem",
  "due": "2026-04-25", 
  "toPay": 600.5,
  "balances": [
    {
      "toPay": 300.25,
      "due": "2026-02-25"
    },
    {
      "toPay": 300.25,
      "due": "2026-04-25"
    }
  ],
  "site": "park-one",
  "extraDetails": "You are in pitch #TF04#BREAK#Our barriers will open automatically for the reg number XXXX XXX" 
}

Properties

id

Type : String - Required

Booking ID which can be a database ID, hash of some kind, or the user facing ID. This is used for background booking/balance requests on some PMS integrations

reference

Type : String - Required

User facing booking reference. Depending on the PMS system, this is often the same as the booking id. This will be displayed to the user in the app in the My Holiday section and would be familiar to the user as the piece of data the need to quote on enquiries, or logging in

arrival

Type : Date String - Required

Inclusive arrival date used to personalise app experience and subscribe to 'on holiday' notification topics

departure

Type : Date String - Required

Inclusive departure date used to personalise app experience and unsubscribe to 'on holiday' notification topics

unittype

Type : String - Optional

Name of the unit type the user is staying in which is displayed to the user on the My Holiday section of the app.

unittypeID

Type : String - Optional

ID of the unit type the user is staying in. This is not rendered in the app anywhere but is instead used in our personalisation engine. This data could be an integer in your PMS, but we use a string to be universal across different systems

unitgroup

Type : String - Optional

Name of the unit group type the user is staying in. This is currently not rendered in the app but is collected for future use if we needed/wanted to use it.

unitgroupID

Type : String - Optional

ID of the unit group type the user is staying in. This is not rendered in the app anywhere but is instead used in our personalisation engine. This data could be an integer in your PMS, but we use a string to be universal across different systems

location

Type : String - Optional

Name of location of unit type. Not displayed by the user, but can be used for stats tracking, and push notification segmentatation

isTouring

Type : Boolean - Optional

Is this booking considered a 'Touring and Camping' booking - can be used by holiday parks to segment push notifications between touring and self catering guests

isOTA

Type : Boolean - Optional

If this is set to true then the booking is marked as being made by an OTA. This is then used by the HM engagement module to segment users, and potentially upsell them to direct rebookings etc

cancelled

Type : Boolean - Optional

If this is included and is true, then the app will disregard this booking. This is more relevant in PMS connections which supply multiple bookings.

adults

Type : Integer - Required

How many adults in the party

seniors

Type : Integer - Optional

If your PMS segments seniors differently than adults you can optionally send this down as a separate value. This will render differently in the app as well as being used in our personalisation engine.

children

Type : Integer - Required

How many children, if any, are in the party

teenagers

Type : Integer - Optional

If your PMS segments teenagers/adolescents differently than adults and children you can optionally send this down as a separate value. This will render differently in the app as well as being used in our personalisation engine.

infants

Type : Integer - Optional

If your PMS segments infants differently than adults and children you can optionally send this down as a separate value. This will render differently in the app as well as being used in our personalisation engine.

pets

Type : Integer - Optional

How many pets (typically dogs), if any, are attached to this booking

bookingUrl

Type : Url String - Optional

This is the url used by the app to navigate the user when clicking on either the make payment button, or manage booking button. This is not visible as such to the user, however could be visible in the external web browser when they navigate. This means you can include tokens or hashes to allow auto login, however we cannot guarantee that the user will not be able to see/copy and paste this from their browser when it tries to load.

due

Type : Date String - Optional

The date the remainder of the balance is due by

toPay

Type : Floating Point Numeric - Optional

The amount which is still due to pay on this booking. If this is 0 or not provided, then the payments box will not show on the My Holiday page

balances

Type : Array of Booking Balance Item - Optional

A list of payment schedules if your CMS supports multiple balance and due dates for a holiday payment. If this is used your should still provide a cumulative 'toPay' and 'due' for the whole booking.

site

Type : String - Optional

For multi-park installs, you should also include the groupsite key within the booking. This is so the app can automatically select the park for the user when logging in. If multiple bookings are included when logging in then this key can then change the users park they are currently logged in as.

extraDetails

Type : Rich Text / Multiline String - Optional

Additional details to be rendered in the app by the booking reference. This information can be dynamic between different booking systems. Examples of information could be pitch numbers, ANPR reg numbers, door/gate codes, or even information about extras in the order, such as bed linen or a baby cot rental. Note: Only include information in this that you would be happy for someone to access using the authentication of the app. For example if the user logs in with booking ID and surname, then only supply information you would be happy to give using just those details.

Required Type Definitions

Booking Balance Item - Reveal

This is a single PMS Balance due date and amount for PMSs that support different payment schedules.

{
  "toPay": 200.00,
  "due": "2026-02-25"
}

toPay

Type : Floating Point Numeric - Required

How much is due to be paid as a floating point number. The app will render this with two decimal places.


due

Type : Date String - Required

Date this payment schedule item is due by.

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

Date String - Reveal

If a date is sent as a readable string we use the format YYYY-MM-DD

{
  "arrival": "2023-09-09",
  "validUntil": "2024-02-28"
}

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
}

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

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

12/02/2026 - Booking

Added 'seniors', 'infants', 'teenagers', 'unitgroup', 'unitgroupID', 'unittypeID', and 'balances' properties

19/06/2024 - Booking

Added 'isOTA' property

06/10/2023 - Booking

Added 'extraDetails' property

25/08/2023 - Booking

Added 'site' property

01/02/2021 - Booking

Added 'isTouring' and 'location' properties