Login / Sign Up

What’s On Packet

This packet of data includes a full list of What’s On event and performance listings. This is rendered in the What’s On section of the app and is generally displayed using a date range, or specific date, or filtered by location (eg all events at certain venue)

 

The relationship we have between our what’s on entities are as follows :

  • Event – The definition and rich content of an event – this can be scheduled in at multiple date/times
  • Performance – An individual scheduled time and date. These also include an optional booking url – as this url is on a performance level it can have params/structure to start the booking process for that specific date and time in an external booking system
  • Place – Events can link to content in the Places Packet using their location ID – This then acts as the ‘venue’ for an event and can be on site, or off site. This can then help users cross link to place information, and also filter events based on a location

 

Events are also filtered based on groupsite so if your app surfaces are part of a multi park install, then events should be marked with which parks they should be available for.

Structure

{
  "performances": [
    {
      //Performance 1
    },
    {
      //Performance 2
    }
  ],
  "events": [
    {
      //Event 1
    },
    {
      //Event 2
    }
  ],
  "categories": [
    {
      //Category 1
    },
    {
      //Category 2
    }
  ],
  "lastChange": 1687867624
}

Properties

performances

Type : Array of Performance - Optional

List of performances. These will only be shown if a linked event also exists in the current packet. Past events can be included without issue as only renders future performances. However if possible these should be omitted to decrease packet size.

events

Type : Array of Event - Optional

List of events. These will only be shown if current or future performances also exist if the current packet. These are also groupsite filtered for multipark installs.

categories

Type : Array of Category - Optional

List of available categories for the supplied data. These are used for the tabs on the what's on pages, ordered by the sort priority, then alphabetically.

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

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

Category - Reveal

A category packet contains the ID to filter entities, and also the name to render. Typically they are sorted by their priority integer which defaults at 99 if not set. The lower this number the higher in the list. After priority they are alphabatised (case insensitive). An 'All' category is never required as the app surfaces create this. Holiday home sales categories also should include a banner image url, as they are also rendered as banners on the home sales section landing page.

{
  "id": 42,
  "name": "Caravans",
  "slug": "caravans",
  "priority": 5,
  "imgUrl": "https://link-to-homesales-caravans-banner.jpg?v=12345",
  "locales": [
    "cy" : "Name Translation"
  ]
}

id

Type : Integer - Required

Category ID used for filtering entities. This should be unique to the specific entity category, however does not need to be unique within scope of other entities and data.


name

Type : String - Required

Name of category which is rendered in various places in the app surfaces


slug

Type : String - Optional

Currently optional as unused by categories. Filtering uses IDs, but slug is stored to potentially be referenced by future


priority

Type : Integer - Optional

Defaults to 99 if not set. The lower the priority, the higher this category will be sorted before alphabetisation.


imgUrl

Type : Image Url String - Optional

Currently only used by holiday home sales categories. This image is used as the banner on the holiday homes sales section landing page.


locales

Type : Array of String - Optional

An array of localisable name translations for this category. This can include multiple translated names with the array should be keyed with the locale code which are supported by your holidaymaker install

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
}

Event - Reveal

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.

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

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

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

Performance - Reveal

This is a definition of an individual performance linked to an event. The app surfaces then use the end time of this to render current and future performances based on date ranges (Your Stay, Today, Tomorrow, This Week, This Month, All, Specific Date)

The soldout flag is currently read by the app surfaces, but unused in any rendering or logic - however this is on our roadmap as some booking engines we integrate can include this data for us.

The optional url is on a performance by performance level, so as in the example below can include a structure or parameters to navigate to start booking on this specific performance

{
  "id": "11575_1687885200",
  "event": 11575,
  "start": 1687885200,
  "end": 1687889700,
  "soldout": false,
  "url": "https://your-events-booking-engine.com/book/11575/2023-06-27/1800"
}

id

Type : String - Required

This is a unique key for each performance. In the holidaymaker CMS this is a composite key of the event ID and start time as a string


event

Type : Integer - Required

Event ID of the specific event this performance is associated with


start

Type : Epoch Date/Time Integer - Required

Start date and time of the event. This is generated while in the 'Europe/London' time zone and is read in the app in the same way.


end

Type : Epoch Date/Time Integer - Required

End date and time of the event. This is generated while in the 'Europe/London' time zone and is read in the app in the same way. In the holidaymaker CMS this is generated simply by adding the events runtime minutes onto the start time.


soldout

Type : Boolean - Optional

Optional flag to show that a performance is soldout / at capacity. This is read by the app surfaces but currently unused. Future roadmap feature is to render this performances differently and/or filter them out


url

Type : Url String - Optional

This is the url a user will navigate to when clicking the 'book' button by a time when it is rendered. If an event is not considered bookable then this can be omitted, or can be empty. This url can navigate to this specific event to start booking, or to a generic booking event listing where the user can choose the time/date again.

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

Full Packet Example

{
  "performances": [
    {
      "id": "11577_1687885200",
      "event": 11577,
      "start": 1687885200,
      "end": 1687887900,
      "url": "https://your-events-booking-engine.com/book/11575/2023-06-27/1800"
    },
    {
      "id": "11577_1687885200",
      "event": 11577,
      "start": 1687971600,
      "end": 1687974300,
      "url": "https://your-events-booking-engine.com/book/11575/2023-06-28/1800"
    },
    {
      "id": "11575_1687890600",
      "event": 11575,
      "start": 1687890600,
      "end": 1687895100
    },
    {
      "id": "11575_1687977000",
      "event": 11575,
      "start": 1687977000,
      "end": 1687981500
    },
    {
      "id": "11575_1688063400",
      "event": 11575,
      "start": 1688063400,
      "end": 1688067900
    },
    {
      "id": "11575_1688149800",
      "event": 11575,
      "start": 1688149800,
      "end": 1688154300
    },
    {
      "id": "11576_1688151600",
      "event": 11576,
      "start": 1688151600,
      "end": 1688158800
    },
    {
      "id": "11578_1688151600",
      "event": 11578,
      "start": 1688202000,
      "end": 1688248800
    }
  ],
  "events": [
    {
      "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,
      "isChargeable": true,
      "runTime": 75,
      "prices": "£3#BREAK#£5",
      "locationId": 5391,
      "image": "https://your-wordpress-install/wp-content/uploads/2022/05/bingo-1024x683.jpg?v=1687426681",
      "sites": [
        "park-one"
      ],  
      "categories": [
        93
      ] 
    },
    {
      "id": 11576,
      "title": "Owners BBQ",
      "content": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec odio. Quisque volutpat mattis eros. Nullam malesuada erat ut turpis. Suspendisse urna nibh viverra non semper suscipit posuere a pede.#BREAK#Donec nec justo eget felis facilisis fermentum. Aliquam porttitor mauris sit amet orci. Aenean dignissim pellentesque felis.#BREAK#Morbi in sem quis dui placerat ornare. Pellentesque odio nisi euismod in pharetra a ultricies in diam. Sed arcu. Cras consequat.",
      "description": "Meet and greet with our owners team, and other owners at our park",
      "runTime": 120,
      "image": "https://your-wordpress-install/wp-content/uploads/2022/05/ownersbbq.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"
      ],
      "isOwnersOnly": true,
      "highlightText": "owners",
      "highlightColor": "alt",
      "linksHeading": "Extra Information",
      "links": [
        {
          "url": "https://your-wordpress-website.com/wp-content/uploads/2021/08/owners-bbw-menu.pdf",
          "title": "Owners BBQ Menu"
        }
      ],
      "sites": [
        "park-one"
      ],  
      "categories": [
        93,
        95
      ] 
    },
    {
      "id": 11577,
      "title": "Water Zorbs",
      "content": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec odio. Quisque volutpat mattis eros. Nullam malesuada erat ut turpis. Suspendisse urna nibh viverra non semper suscipit posuere a pede.#BREAK#Donec nec justo eget felis facilisis fermentum. Aliquam porttitor mauris sit amet orci. Aenean dignissim pellentesque felis.#BREAK#Morbi in sem quis dui placerat ornare. Pellentesque odio nisi euismod in pharetra a ultricies in diam. Sed arcu. Cras consequat.",
      "description": "Inflatable Zorbing fun in our outdoor pool!",
      "runTime": 45,
      "prices": "£6#",
      "locationId": 5392,
      "highlightText" : "New for 2025!",
      "highlightColor" : "#FF00FF",
      "image": "https://your-wordpress-install/wp-content/uploads/2022/05/waterzrobs-1024x683.jpg?v=1687426681",
      "gallery": [
        "https://your-wordpress-website.com/wp-content/uploads/2022/10/Zorbs1.jpg?v=1664898119",
        "https://your-wordpress-website.com/wp-content/uploads/2022/10/Zorbs2.jpg?v=1664898119",
        "https://your-wordpress-website.com/wp-content/uploads/2022/10/Zorbs3.jpg?v=1664898119",
      ],
      "isBookable": true,
      "isChargeable": true,
      "sites": [
        "park-one",
        "park-two"
      ],  
      "categories": [
        95
      ] 
    },
    {
      "id": 11578,
      "title": "Local Food Festival",
      "content": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec odio. Quisque volutpat mattis eros. Nullam malesuada erat ut turpis. Suspendisse urna nibh viverra non semper suscipit posuere a pede.#BREAK#Donec nec justo eget felis facilisis fermentum. Aliquam porttitor mauris sit amet orci. Aenean dignissim pellentesque felis.#BREAK#Morbi in sem quis dui placerat ornare. Pellentesque odio nisi euismod in pharetra a ultricies in diam. Sed arcu. Cras consequat.",
      "description": "Enjoy the food and drink from our local area, with our annual summer food festival.",
      "runTime": 780,
      "allDay": true,
      "timeText": "10-4",
      "image": "https://your-wordpress-install/wp-content/uploads/2022/05/foodfestival.jpg?v=1687426681",  
      "linksHeading": "Featured Stalls",
      "links": [
        {
          "url": "https://your-wordpress-website.com/wp-content/uploads/2021/08/featured-drink.pdf",
          "title": "Featured Drink"
        },
         {
          "url": "https://your-wordpress-website.com/wp-content/uploads/2021/08/featured-food.pdf",
          "title": "Featured Food"
        }
      ],
      "sites": [
        "park-one",    
        "park-two"
      ],  
      "categories": [
        96
      ] 
    }
  ],
  "categories": [
    {
      "id": 93,
      "slug": "event-entertainment",
      "name": "Evening Entertainment",
      "priority": 10,
      "locales" : [
        "cy": "Translated Name"
      ]
    },
    {
      "id": 95,
      "slug": "activites",
      "name": "Activites"
    },    
    {
      "id": 96,
      "slug": "local-events",
      "name": "Local Events"
    }    
  ],
  "lastChange": 1687867624
}

Data Changes

10/04/2025 - Category

Added 'locales' property for translational holidaymaker installs

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

28/04/2023 - Performance

Added 'soldout' property

04/01/2023 - Event

Added 'links' and 'linksHeading' properties

01/09/2022 - Category

Added 'imgUrl' property for home sales categories