Login / Sign Up

Event

An event entity contains the rich content to render event. This does not include any scheduling information as this is defined using the performance entities. However it can contain information which will manipulate how the performances are rendered, eg the all day flags, and is bookable flags.

Structure

{
  "id": 11575,
  "title": "Bingo",
  "content": "With cash prizes up for grabs, let’s see if you have a lucky seven or perhaps legs eleven will help you win big.#BREAK##BREAK#Need To Know:#BREAK#• Suitable for ages 18 years and over.#BREAK#• Ticket Sales at 6pm and eyes down at 6.30pm#BREAK#• No booking required.#BREAK#• Available on select dates between April and October.",
  "description": "Grab your dabber and join us for some good old-fashioned bingo, with cash prizes up for grabs.",
  "priority": 0,
  "runTime": 75,
  "allDay": false,
  "timeText": "10-4",
  "prices": "£3#BREAK#£5",
  "locationId": 5391,
  "highlightText" : "Custom Tag",
  "highlightColor" : #FF00FF",
  "image": "https://your-wordpress-install/wp-content/uploads/2022/05/bingo-1024x683.jpg?v=1687426681",
  "gallery": [
    "https://your-wordpress-website.com/wp-content/uploads/2022/10/Derwent_Ext_CGI_2020-Brochure-1-e1639563765948-1536x1178-1.jpg?v=1664898119",
    "https://your-wordpress-website.com/wp-content/uploads/2022/10/WESTWOOD_0068_RT-copy-1024x683-1.jpg?v=1664898752",
    "https://your-wordpress-website.com/wp-content/uploads/2022/10/WESTWOOD_0080_RT-1024x683-1.jpg?v=1683629612"
  ],
  "isBookable": false,
  "isChargeable": true,
  "isOwnersOnly": false,
  "linksHeading": "Extra Information",
  "links": [
    {
      "url": "https://your-wordpress-website.com/wp-content/uploads/2021/08/event-programme.pdf",
      "title": "Download Programme"
    }
  ],
  "sites": [
    "park-one"
  ],  
  "segments": [
    "pms_duringstay",
    "scheme_123"
  ],
  "categories": [
    93
  ],
  "locales" : [
    "cy" : {
      "title" : "Translated Title",
      "description" : "Translated list description for event.#BREAK#Can include breaks as normal",
      "content" : "Translated main copy for event.#BREAK#Can include breaks as normal",
      "highlightText" : "Translated Tag",
      "prices": "Translated Prices#BREAK#With Breaks",
      "timeText" : "10am - 4pm",
      "linksHeading" : "Translated More Info",
      "links" : [
        "Translated Title 1",
        "Translated Title 2"
      ]
    }
  ] 
}

Properties

id

Type : Integer - Required

ID for this event. This needs to be unique to others events in the list, however does not need to be unique to other entities. This ID should also not change between data requests/packets. This is the ID that performances also need to reference to become linked

title

Type : String - Required

Event title

description

Type : Rich Text / Multiline String - Optional

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

content

Type : Rich Text / Multiline String - Optional

Larger amount of text for the detail section of the app surfaces what's on section. Note that this is called 'copy' on other entities, for legacy reasons it is still content on events.

copyMarkdown

Type : Markdown Text / Multiline String - Optional

Same as the above content but used for our 'V2' app builds. This can include some basic markdown for rich formatting.

priority

Type : Integer - Optional

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

isBookable

Type : Boolean - Optional

Is this event ticketed, even if the tickets are free. If so when the performances are rendered in the detail view they will include a 'Book' button and to navigate to the supplied url in the performance object

isChargeable

Type : Boolean - Optional

Is this event considered paid rather than free. If so it will render on the list view as a paid activity, as well as render the below 'prices' property

isOwnersOnly

Type : Boolean - Optional

Should this event only show for people logged in as an owner, and also be marked as owners only when rendering. The What's On section also automatically creates a Owners Only category tab when logged in as an owner.

runTime

Type : Integer - Required

This is the running time of the event in minutes. This is also respected in performances as they have a start and end time. This runtime isn't currently rendered in the app surfaces, but is roadmapped to be added soon.

allDay

Type : Boolean - Optional

Is this event considered all day. This is a common flag for events like local food festivals, or special events. The holidaymaker CMS automatically schedules an event in from 9am-10pm with a runtime of 780 minutes if an event is marked as all day. When the app surface renders this it will say 'All Day' instead of '9:00' unless the next property is set

timeText

Type : String - Optional

Small string to override the 'All Day' text if an event is set to allDay. Example could be '10-6'

prices

Type : Rich Text / Multiline String - Optional

This can be a list of prices, or a small paragraph explaining the prices. Is only rendered if the event 'isChargable'

locationId

Type : Integer - Optional

This is an optional link to a place record which is considered the venue for this event. This could be an onsite place, or offsite place. In the app surfaces it will show that this event is at this place, and provide a button to cross link it to the map/details section for the place

highlightText

Type : Event Tag Text - Optional

Preset tag option, or custom text for highlight text

highlightColor

Type : Event Tag Color - Optional

Preset tag color option, or custom hex value for highlight text

image

Type : Image Url String - Optional

Landscape hero image used on the event detail view - For legacy reasons this does not use the same 'imgUrl' node name as offers and places

gallery

Type : Array of Image Url String - Optional

A list of image urls to render as a swipable gallery in the event detail. These are a landscape hero style ratio.

linksHeading

Type : String - Optional

This can optionally be set to override the heading above the additional links. If not set, and links are provided the default heading will be 'More information'

links

Type : Array of Link - Optional

An optional list of additional links or attachments. Examples on an event may be event programmes, or further information about the event.

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

segments

Type : Array of String - Optional

Only required for installs with the people module enabled - can be disregarded for other systems. This should be a list of valid people segment keys which this event should be available for. If this array is missing or empty then the offer will not render for all users.

categories

Type : Array of Integer - Optional

List of category IDs to associate with this event. All events will render in the 'All' tab, but this array can set which other category tabs the offer also appears in.

locales

Type : Array of Localisable Event Strings - Optional

An array of localisable string translations for this event. This can include multiple translation collections and the array should be keyed with the locale code which are supported by your holidaymaker install

Required Type Definitions

Boolean - Reveal

As we connect to different systems using a range of different languages, we can interpret several things as a true. Generally speaking holidaymaker will use a standard true/false JSON boolean, however we also read a lower case string and checked if they are "1", "true", "yes", or "on" to then create the positive boolean. Unless explicitly noted, all booleans are defaulted as false if the node doesn't exist.

{
  "optionOne": true,
  "optionTwo": false,
  "allTheseAreValidTrues" : [
    1, "1", true, "true", "on", "yes"
  ]
}

Event Tag Color - Reveal

A string to dictate the rendering of the highlight tag on an event. If it is either of the two pre-set options then the app will render them using branded colors, else it will render whatever valid RGB value is sent. If neither of the preset values are sent, and the value is not a valid RGB hex code then it will render black.
• 'main' : This will render using the primary accent color used on cards/detail in the app
• 'alt' : This will render using the secondary accent color used on cards/detail in the app (often for owners only)
• Any other valid HEX RGB value will be rendered as sent

{
  //Use main / standard accent
  "highlightColor" : "main"

  //Use alt accent - often for owners only
  "highlightColor" : "alt"

  //Use your own custom color
  "highlightColor" : "#FF00FF"
}

Event Tag Text - Reveal

A string to dictate the rendering of the highlight tag on an event. If it is either of the two pre-set options then the app will render them, else it will render whatever the text is sent as.
• 'default' : This will render the default options in Holidaymaker depending if the event is free or paid : "Free Activity" or "£ Activity"
• 'owners' : This will render the default option for the owners only tag : "Owner's only"
• Any thing else will be rendered as sent

{
  //Use default text
  "highlightText" : "default"

  //Use owners only text
  "highlightText" : "owners"

  //Use your own custom text
  "highlightText" : "One Night Only!"
}

Image Url String - Reveal

Our app surfaces talk to an image engine on our infrastructure to process and resize images for different smart phone screen densities. Because of this the size of images are less relevant as they are delivered at optimum sizes anyway. However due to processing power and speed we do recommend that image urls are all 3000 pixels or below. The app surfaces will never need an image this large, so it gives you the option of still having a large quality image, but can be loaded in the apps and our infrastructure efficiently. We support both png, jpeg, and webp images. You can optionally include a '?v=' version integer so this can be used for versioning. If you do include this you can ensure images are reprocessed if the source image is changed on your servers.

{
  "imgUrl": "https://your-wordpress-site.com/wp-content/uploads/2023/08/a-large-image-3000x2100.jpg?v=1691481892",
  "image": "https://your-wordpress-site.com/wp-content/uploads/2023/08/a-smaller-image.png"
}

Integer - Reveal

Standard JSON Integer - 0 is commonly considered to be a default value, unless it is an valid ID when -1 is used. For sort priorities 99 is used as the default.

{
  "key1": 9,
  "key2": 42,
  "arrayOfInts": [
    2,
    3,
    5,
    8
  ] 
}

Link - Reveal

A title and url of a link button. These are often attached to other entities to provide external links or pdf downloads such as onsite food menus, or more information about special offers.

{
  "url": "https:/your-wordpress-website.co.uk/wp-content/uploads/2021/08/offer-voucher.pdf",
  "title": "Download voucher"
}

url

Type : String - Required

Url to external link or pdf/doc attachment


title

Type : String - Required

Text for call to action button

Localisable Event Strings - Reveal

This object are translations for language overrides on the base information for an event. These would be added to the event packet in an array keyed with the correct locale code.

{
  "title" : "Translated Title",
  "description" : "Translated list description for event.#BREAK#Can include breaks as normal",
  "content" : "Translated main copy for event.#BREAK#Can include breaks as normal",
  "highlightText" : "Translated Tag",
  "prices": "Translated Prices#BREAK#With Breaks",
  "timeText" : "10am - 4pm",
  "linksHeading" : "More Info Translation",
  "links" : [
    "Translated Title 1",
    "Translated Title 2"
  ]
}

title

Type : String - Optional

Translated Event Title


description

Type : Rich Text / Multiline String - Optional

Translated list description with can include breaks


content

Type : Markdown Text / Multiline String - Optional

Translated main copy with can include breaks and some basic markdown


highlightText

Type : String - Optional

Optional translated highlight text - Only relevant if highlight text is set to a custom value


prices

Type : Rich Text / Multiline String - Optional

Optional translated prices information with can include breaks


timeText

Type : String - Optional

Only required if the event is marked as all day, and has an custom all day time text. If english version is blank then a translated version of 'All Day' will be used anyway


linksHeading

Type : String - Optional

Only required if links heading if any have been set in the main record. Optional translation for the downloads / links heading. If english version is blank then a translated version of 'More information' will be used


links

Type : Array of String - Optional

A list of translation for the link buttons. Note this array should match up in order and size to the main record version. If not then the translations could be mismatched to the buttons. If there are more translations, the last entries will be discarded. If there are less translations, then the original language will be retained on the last entries.

Markdown Text / Multiline String - Reveal

Acts the same as a Rich Text / Multiline String (including using #BREAK# for new lines) however this text can include a limited set of MarkDown to allow rich formatting.
This includes :

*italic text* : Italic Text
**bold text** : Bold Text
***bold and italic text*** : Bold and Italic Text

• Bullet 1
- List of bullet points with hyphans or bullet character

1. Number Item 1
2. Numbered list of items with number and full stop

{
  "copy": "This paragraph will now have two line breaks, and then a list of bullets#BREAK##BREAK#• Bullet 1#BREAK#• Bullet 2#BREAK#• Bullet 3",
  "copyMarkdown": "This paragraph will now have two line breaks but with bits in **bold** and *italic*, and then a list of bullets#BREAK##BREAK#- Bullet 1#BREAK#- Bullet 2#BREAK#...and a numbered list...#BREAK#1. Number Item 1#BREAK#2. Number Item 2"
}

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

Data Changes

10/04/2025 - Event

'isChargable' was erroneously set to booking, instead of boolean type. Added 'locales', 'segments', 'copyMarkdown', 'highlightText' and 'highlightColor' properties.

09/05/2023 - Event

Added 'gallery' property

04/01/2023 - Event

Added 'links' and 'linksHeading' properties