Skip to main content

Overview

The Event Venue Component specifies where and how an event will take place — whether it’s a physical location, an online meeting, or a hybrid combination of both.
It provides structured fields for address, map location, join buttons, and related event details such as contact numbers and notes.
This schema ensures that QR Code landing pages can accurately represent venue information with visual consistency and functional join options (e.g., “Join on Zoom”, “View on Map”).

Properties

PropertyTypeRequiredDescription
venueTypearray<string>NoDefines the type of event venue. Supported values: physical, online. Minimum: 1, Maximum: 2.
titlestringNoEvent title. Maximum 50 characters.
addressstringConditionally requiredPhysical address of the event. Required when venueType includes physical.
hasMapLocationbooleanNoIndicates if a map location should be displayed. Default: false.
locationobjectNoReference to Location Component. Used to render map coordinates.
joinButtonobjectConditionally requiredReference to Button Component. Required when venueType includes online.
joiningPhoneNumbersarray<object>NoList of phone numbers that attendees can use to join or contact the event. Maximum 10 entries.
joiningPasswordstringNoAccess password or meeting code. Maximum 400 characters.
eventNotesstringNoAdditional information or instructions for attendees. Maximum 1000 characters.
formattingobjectNoDefines text, card, and icon styling references for consistent visual layout.

🧩 Formatting Object

Sub-PropertyTypeDescription
textStyleobjectReference to Text Style Component.
cardStyleobjectReference to Card Style Component.
iconStyleobjectReference to Icon Style Component.

Used in Categories

This component is used in the following QR Code categories:

Example Schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "definitions": {},
  "title": "Event Venue component",
  "description": "Validate event venue component schema",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "venueType": {
      "type": "array",
      "minItems": 1,
      "maxItems": 2,
      "items": {
        "type": "string",
        "enum": [
          "physical",
          "online"
        ]
      }
    },
    "title": {
      "type": "string",
      "maxLength": 50,
      "description": "Event Title."
    },
    "address": {
      "type": "string",
      "minLength": 5,
      "maxLength": 1000
    },
    "hasMapLocation": {
      "type": "boolean",
      "default": false,
      "description": "Whether location has to be shown on google map"
    },
    "location": {
      "$ref": "_base_map.json#/properties/location"
    },
    "joinButton": {
      "$ref": "button.json"
    },
    "joiningPhoneNumbers": {
      "type": "array",
      "description": "Phone number to join events.",
      "maxItems": 10,
      "$comment": "Allow up to 10 numbers.",
      "additionalProperties": false,
      "items": {
        "type": "object",
        "required": [
          "phoneNumber"
        ],
        "additionalProperties": false,
        "properties": {
          "phoneNumber": {
            "type": "string",
            "maxLength": 30,
            "pattern": "^(\\d{1,20})$|^((\\+\\d{1,3}([- ])?\\(?\\d\\)?([- ])?\\d{1,5})|(\\(?\\d{2,6}\\)?))([- ])?(\\d{3,4})([- ])?(\\d{4})([- ])?((x|ext|;)([- ])?\\d{1,5})?$"
          },
          "label": {
            "type": "string"
          }
        }
      }
    },
    "joiningPassword": {
      "type": "string",
      "description": "Joining password",
      "maxLength": 400
    },
    "eventNotes": {
      "type": "string",
      "maxLength": 1000,
      "description": "Event Notes."
    },
    "formatting": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "textStyle": {
          "$ref": "style/text.json"
        },
        "cardStyle": {
          "$ref": "style/card.json"
        },
        "iconStyle": {
          "$ref": "style/icon.json"
        }
      }
    }
  },
  "oneOf": [
    {
      "properties": {
        "venueType": {
          "const": [
            "physical"
          ]
        }
      },
      "required": [
        "address"
      ]
    },
    {
      "properties": {
        "venueType": {
          "const": [
            "online"
          ]
        }
      },
      "required": [
        "joinButton"
      ]
    },
    {
      "properties": {
        "venueType": {
          "const": [
            "physical",
            "online"
          ]
        }
      },
      "required": [
        "address",
        "joinButton"
      ]
    },
    {
      "properties": {
        "venueType": {
          "const": [
            "online",
            "physical"
          ]
        }
      },
      "required": [
        "address",
        "joinButton"
      ]
    }
  ]
}

Notes

  • venueType determines which properties are required:
    • physicaladdress required
    • onlinejoinButton required
    • both → both address and joinButton required
  • The map location can be displayed only when hasMapLocation is set to true and location is defined.
  • Supports up to 10 phone numbers for attendee contact or join options.
  • Password and notes fields are optional but recommended for private or hybrid events.