LogoLogo
DocsUse CasesCreator GuideIntegration Guide
  • Introduction
  • Why Monterosa?
  • Platform Buyer FAQ
  • Engagement Use Cases
    • Event Centres
    • Prediction Games
    • Voting
    • Trivia Challenges
    • Competitions & Sweepstakes
    • Sports Data Visualisation
    • Native Apps
    • Global Replication
  • Core Platform Concepts
    • Platform Components
    • App Settings
    • Schedule & Events
    • Timeline
    • Elements
    • Extensions
    • EnMasse Mesh
  • 🎨Creator Guide
    • Welcome
      • Getting an Account
    • Spaces
      • Projects
        • Events
          • Event Templates
          • Event Settings
          • Timeline
            • Elements
            • OpenAI Integration
            • Live Stats
            • Preview
            • Embedding
              • Embedding an Element
          • Analytics
        • Project Settings
          • Localisation
          • Experience URL
          • Content Creation Limits
        • App Settings
        • Activity Log
      • Content
        • Asset Library
        • Automation
          • 🔃Bulk Content Uploader
          • ⚡Live Data Connector
      • Setup
        • Space Settings
        • Apps
        • Integrations
          • Opta Graphics
          • Tagboard
        • Extensions
          • Identify
          • Gamify
          • Forms
          • Geo-Verify
          • Content Bridge
          • Vote Verification
    • Experiences
      • Experience Creator
        • Customising your UI
        • Retrieving Event URLs
    • Team
      • Two-Factor Authentication
      • Setting Up SSO to log in the Monterosa platform
      • User Roles
    • Scaling & Capacity
    • Creator FAQs
  • 🚀Integration Guide
    • Overview
    • Standalone Pages
    • Web Page Embedding
      • Hosting an Experience on your domain
      • Auto-resizing embedded Experiences
    • Native App Embedding
    • Embed using the SDK
    • Discovering Events Programmatically
    • Audience Profiles
      • Audience Profiles Dataset Reference
        • Users dataset
        • Projects dataset
        • Events dataset
        • Elements dataset
        • Interactions dataset
        • Leaderboard (Event) dataset
        • Leagues dataset
        • Form entries dataset
      • Monterosa Identifiers
    • Integrating IAM & SSO
      • Simple integration with SDK & JWT
        • Advanced SDK integration
      • JWT based SSO integration
      • Ad-hoc SSO integration
      • SSO Integration guidelines
    • Consent Management integration
      • Client-Side Data Storage Explained
    • Analytics integration
    • Integration FAQs
  • 📱FanKit
    • Overview
    • How it works
    • Elements
      • Polls & Voting
        • Brand Survey
        • Poll
        • Reaction Rater
        • Ladder Poll
        • Swing Poll
        • Smash Rater
        • Category Wrapper
        • Category Vote
        • Standalone Vote
        • Team Selector
      • Predictors
        • Predictor
        • Sweepstake
        • Number Predictor
        • Podium Predictor
        • Score Predictor
        • Score Predictor (High)
        • Player Predictor
      • Trivia
        • Trivia
        • Free Type Trivia
        • Ladder Trivia
        • Sorting Trivia
        • Word Trivia
        • Video Trivia
        • Number Trivia
      • Editorial & Media
        • Article
        • External Article
        • Commentary
        • Gallery
        • Image
        • Video
        • Video Carousel
        • Shareable URL
        • Social Embed
        • Form
        • Element Carousel
        • Match Event
        • Substitution
        • Goal
        • Time Event
      • Quiz
        • Quiz Wrapper
        • Quiz Question
      • Series Prediction
        • Series Wrapper
        • Series Score Predictor
        • Series Predictor
        • Series Number Predictor
        • Series Player Predictor
      • Multi Rater
        • Ratings Wrapper
        • Ratings Slider
      • Sports Statistics
        • Opta Widget
        • Stat Callout
        • Stat Comparison
      • Gamification
        • Scoreboard (Event)
        • Scoreboard (Round)
        • Leaderboard (Project)
        • Leaderboard (Event)
        • Leaderboard (Round)
        • Leaderboard (Group)
    • Tips, tricks, tutorials & guides
      • Advanced CSS Overrides
      • Using points and leaderboards
      • Content containers
    • Display Modes
    • Converters
      • Access Gate
      • Form
      • Cards
      • Share Image
      • Featured Links
      • Sponsors
      • Promo Banner
      • Google Ads
    • Localisation
    • Supported Browsers
    • Release Notes
  • 👣DEVELOPER GUIDE
    • Overview
    • Platform Terminology
    • Interaction SDK
      • Download & Initialise the SDK
      • Supported Devices & Operating Systems
      • Roadmap
      • Release Notes
        • React Native
          • v0.2.2
        • JavaScript
          • v0.16.16
          • v0.16.15
          • v0.16.14
          • v0.16.13
          • v0.16.12
          • v0.16.11
        • iOS
          • v0.16.12
          • v0.16.11
        • Android
          • v0.16.13
      • SDK FAQs
    • Embedding Apps
      • Static Embedding
      • Dynamic Embedding
        • Web Behaviours
        • iOS Behaviours
        • Android Behaviours
        • Preloading
        • Caching Content
        • Shared Storage
      • Configure your app
      • Communicate with embedded apps
      • Video Stream Sync
      • React Native
        • Events in React Native SDK
      • Integrate with Flutter
    • Building Apps
      • Quick Start Guide
      • How to build your first app
        • Getting started
        • Get your app running locally
        • Install the Interaction SDK
        • Define your App
        • Set up Studio
        • Develop your App
        • Enable Dynamic Configuration
      • Core SDK Functions
        • Getting and displaying Events
        • Managing Elements
        • Reacting to live updates
        • Dynamic runtime configuration
        • Time
        • Localisation
    • Content Automation
      • Discovering Events
      • Connecting to Google Sheets
      • Connecting to Zapier
      • Connecting to Sports Feeds
    • App Specs
      • App Spec Reference
        • Root Spec
        • Elements Spec
        • Project Settings Spec
        • Event Settings Spec
        • Expressions (beta)
        • Data Sources (beta)
        • External data source
        • Field Types
          • Boolean
          • Collection
          • Colour
          • Datetime
          • External
          • File
          • Freetext
          • Image
          • List
          • Number
          • WYSIWYG
        • Field, Field set, Field section
      • Customising App Specs
    • Available APIs
    • Integrating TV Graphics
    • Advanced Topics
      • Listings
      • Accesssing user concurrency values from your app
      • Custom analytics Extension
      • Front-end app communication protocols
      • Multi Vote
      • Reveal answer on vote
  • ⚙️CONTROL API
    • Overview
    • Objects Definitions
    • Element Reference
    • Organisations
      • Get Organisations
      • Get Organisation
      • Create Organisation
      • Update Organisation
      • Delete Organisation
    • Spaces
      • Get Spaces
      • Get Space
      • Create Space
      • Update Space
      • Delete Space
    • Apps
      • Get Apps
      • Get App
      • Create App
      • Reload App
    • App Settings
    • Projects
      • Get Projects
      • Get Project
      • Create Project
      • Update Project
      • Delete Project
    • Events
      • Get Events
      • Get Event
      • Get Event Service Feeds
      • Create Event
      • Create Event From Template
      • Update Event
      • Delete Event
    • Event Templates
      • Get Event Templates
      • Get Event Template
      • Create Event Template
      • Update Event Template
      • Delete Event Template
    • Elements
      • Get Elements
      • Get Element
      • Get Event Template Elements
      • Create Element
      • Update Element
      • Delete Element
    • Assets
      • Get Assets
      • Upload Assets
      • Update Asset
      • Delete Asset
      • Get Asset Media Types
      • Get Asset Uploaders
      • Asset Tags
        • Add Tag to Asset
        • Remove Tag from Asset
    • Tags
      • Get Tags
      • Get Tag
      • Create Tag
      • Update Tag
      • Delete Tag
  • ⚙️REFERENCE
    • Public Feeds
      • Graphics Feed
    • Listings
    • Elements
    • Event History
    • Demographics
    • Identify
    • Gamify
      • Gamification Mechanics
      • Public API
      • Private API
    • Geo-Verify
    • Browser Support
    • Audience API (Preview)
      • Authentication
        • Monterosa Access Token
        • Public client authentication
      • Batched operations
      • Loyalty API
      • Connections API
    • Image Resizing API
  • ⛓️Extensions
    • Overview
    • Instance handshake
    • Project handshake
    • Project delete
    • Tabs
    • Event Tabs
    • Setup
    • Listings notification
    • Elements notification
    • Analytics
    • Assets
    • Event-level feed
    • Webhooks
  • ⚖️COMPLIANCE
    • Data Requests
    • Data Sub-processors
    • Hosting Locations
    • Third party software
    • ISO27001
  • 🗒️RELEASE NOTES
    • Studio
      • v29.0
      • v28.0
      • v27.0
      • v26.0
      • v25.0
    • FanKit
      • v24.41.0
      • 24.42.0 Preview
    • Archive
      • v24 releases 2022-23
Powered by GitBook
On this page
  • Field paths
  • Variables
  • Literals
  • Operators
  • Examples

Was this helpful?

  1. DEVELOPER GUIDE
  2. App Specs
  3. App Spec Reference

Expressions (beta)

Was this helpful?

App spec expressions functionality is in beta testing and may be subject to change.

An expression is a special form of an attribute value. It is dynamically executed in the context of other fields and variables. A return value of the expression determines the value of the attribute.

Currently, expressions can be applied to the following attributes of the field:

Expressions can include , , , . Expressions can be nested and can include other expressions.

Field paths

A field path can be used to access other field values within the expression. The path can be absolute or relative to the current execution scope.

Absolute path

An absolute field path is specified with the following form:

"$$<GLOBAL_SCOPE>.<field_key>"

Available global scopes for project fields:

  • $$PROJECT_FIELDS - contains values for all of the project.

Available global scopes for event fields:

  • $$PROJECT_FIELDS - contains values for all of the project.

  • $$EVENT_FIELDS - contains values for all of the event.

Available global scopes for element fields:

Available global scopes for question fields:

Available global scopes for option fields:

Examples of absolute field paths:

  • "$$PROJECT_FIELDS.appMode"

  • "$$PROJECT_FIELDS.footerEnabled"

  • "$$EVENT_FIELDS.IosVersion"

Relative path

A relative field path has the following form:

"$<field_key>"

The path is automatically resolved to the scope of expression execution. For example, if the expression is used on a top-level app setup field, the relative path "$appMode" is an equivalent of the absolute path "$$PROJECT_FIELDS.appMode".

Besides global scopes, there is also a collection item implicit scope. If an expression is used on a field in a collection item, relative field paths are resolved to fields of the same collection item.

Examples of relative field paths:

  • "$slideDisplayMode"

  • "$itemDisabled"

Field types and return values

Not all fields can be directly referenced with a field path.

Currently supported field types are:

Field type
Returned value type

freetext

string

list

string

boolean

boolean

number

number

For fields that support localisation, the value of the default locale is returned.

Variables

A variable can be specified to access project's related values within the expression. The variable can be absolute to the current execution scope only.

A variable contains a value of a specific type and is specified with the following form:

"$$<VARIABLE_PATH>"

Variable can be nested. In that case, variable path contains . as a separator.

Built-in variables

The following built-in variables are defined:

$$PROJECT_ELEMENTS - an object containing project element attributes grouped by element's content_type. An attribute can be accessed with the following syntax:

"$$PROJECT_ELEMENTS.<element_content_type>.<attribute>"

Attribute
Type
Description

visible

boolean

Example:

mandatory": { 
  "$eq": ["$$PROJECT_ELEMENTS.rpoll-custom.visible", false] 
}

Literals

Literals are static values that can be used in comparison expressions.

Literal type
Examples

number

123

3.14

string

"some string"

boolean

true

false

Operators

An expression operator has the following form:

"<operator>": [<argument1>, <argument2>...]

The argument of an operator is another expression - literal, operator, field path etc.

Operator
Description
Arguments
Return value

$eq

Checks if all arguments are equal

Count: 2+ All arguments must be of the same type.

boolean

$ne

Checks if any argument is not equal to others

Count: 2+ All arguments must be of the same type.

boolean

$or

Checks if any argument is true

Count: 2+ All arguments must be of a boolean type.

boolean

$and

Checks if all arguments are true

Count: 2+ All arguments must be of a boolean type.

boolean

Examples

A field is mandatory if language_selector_position field has value "left".

"mandatory": { 
  "$eq": ["$$PROJECT_FIELDS.language_selector_position", "left"] 
}

A field is visible if banner_left_enabled has value true or banner_right_enabled has value true. In other words, a field is visible if at least one of the boolean fields is true.

"visible": {
  "$or": [
    { "$eq": ["$$PROJECT_FIELDS.banner_left_enabled", true] },
    { "$eq": ["$$PROJECT_FIELDS.banner_right_enabled", true] },
    { "$eq": ["$$PROJECT_ELEMENTS.rpoll-custom", true] }
  ]
}

A field is mandatory in a collection item if has_title field of the same collection item is true.

"mandatory": {
  "$eq": ["$has_title", true]
}

A field is visible if poll element is enabled in Project Settings.

"visible": { 
  "$eq": ["$$PROJECT_ELEMENTS.poll.visible", true] 
}

$$PROJECT_FIELDS - contains values for all of the project.

$$EVENT_FIELDS - contains values for all of the event.

$$ELEMENT_FIELDS - contains values for all of the element.

$$PROJECT_FIELDS - contains values for all of the project.

$$EVENT_FIELDS - contains values for all of the event.

$$ELEMENT_FIELDS - contains values for all of the element.

$$QUESTION_FIELDS - contains values for all of the element.

$$PROJECT_FIELDS - contains values for all of the project.

$$EVENT_FIELDS - contains values for all of the event.

$$ELEMENT_FIELDS - contains values for all of the element.

$$QUESTION_FIELDS - contains values for all of the element.

$$OPTION_FIELDS - contains values for all of the element.

Return true if element is enabled on

👣
app setup fields
event settings fields
element custom fields
app setup fields
event settings fields
element custom fields
question fields
app setup fields
event settings fields
element custom fields
question fields
option fields
Project Settings -> Elements
app setup fields
app setup fields
event settings fields
field paths
variables
literals
operators
"Visible" field attribute
"Mandatory" field attribute