---
updatedAt: 2025-10-13T09:50:49.000Z
agentTools:
  projectIndex: https://developers.waitwhile.com/llms.txt
---

# List locations

> 📘 Pagination
>
> All List endpoints have a max. results limit of 100 (with the default being set to 20), however, pagination can be utilized to retrieve additional batches of results past this max. The initial response will include `startAt` and `endAt` values. Paginated result batches can be retrieved by making additional calls with the `startAfter` param value set to be whatever the `endAt` value was in the previous response.

# OpenAPI definition

```json
{
  "security": [
    {
      "api_key": []
    }
  ],
  "servers": [
    {
      "url": "https://api.waitwhile.com/v2",
      "description": "Waitwhile API"
    }
  ],
  "info": {
    "title": "Waitwhile API",
    "version": "2",
    "description": "\nThe Waitwhile API is organized around the REST methodology, and it uses resource-oriented URLs, and common HTTP response codes.\nJSON is consumed and returned by all API responses, including errors unless a specific input or response format has been requested. All requests are authenticated using an API key which can be obtained\nfrom your Integration Settings page. Provide your API key as value for the header \"apikey\" with each request.\nAll API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail.\n",
    "termsOfService": "https://waitwhile.com/terms/",
    "contact": {
      "name": "Waitwhile Support",
      "email": "support@waitwhile.com",
      "url": "https://waitwhile.com"
    }
  },
  "x-readme": {
    "proxy-enabled": false
  },
  "tags": [
    {
      "name": "Locations",
      "description": "\nLocation contain operations for retrieving and updating locations.\nA Location represents the place where customers are served and contain settings and contact information"
    }
  ],
  "openapi": "3.0.0",
  "components": {
    "securitySchemes": {
      "api_key": {
        "type": "apiKey",
        "name": "apikey",
        "in": "header"
      }
    },
    "schemas": {
      "metadata": {
        "type": "object",
        "description": "Store metadata about your objects. You can store 20 keys with max length 40. Values can be strings of max length 500.",
        "nullable": true
      },
      "LabelNameValuePair": {
        "type": "object",
        "description": "Label name/value pair",
        "example": "North America",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of label",
            "example": "A short-sized string",
            "minLength": 1,
            "maxLength": 50,
            "pattern": "^[\\p{L}][\\p{L}0-9 _-]*$",
            "x-convert": {
              "trim": true
            }
          },
          "value": {
            "type": "string",
            "description": "Value of label",
            "example": "A short-sized string",
            "minLength": 1,
            "maxLength": 50,
            "pattern": "^[\\p{L}0-9 _.-]+$",
            "x-convert": {
              "trim": true
            }
          }
        }
      },
      "Labels": {
        "type": "array",
        "description": "Labels",
        "maxItems": 10,
        "x-constraint": {
          "unique": "name"
        },
        "items": {
          "$ref": "#/components/schemas/LabelNameValuePair"
        }
      },
      "AddressCountry": {
        "type": "object",
        "nullable": true,
        "properties": {
          "code": {
            "type": "string",
            "description": "Country code in ISO 3166-1 alpha-2 format",
            "example": "A short-sized string",
            "minLength": 2,
            "maxLength": 2,
            "x-convert": {
              "case": "upper",
              "trim": true
            }
          },
          "name": {
            "type": "string",
            "description": "Country name",
            "example": "A short-sized string",
            "nullable": true,
            "minLength": 0,
            "maxLength": 100,
            "x-convert": {
              "trim": true
            }
          }
        }
      },
      "AddressState": {
        "type": "object",
        "nullable": true,
        "properties": {
          "code": {
            "type": "string",
            "description": "State or region code",
            "example": "A short-sized string",
            "nullable": true,
            "minLength": 1,
            "maxLength": 5,
            "x-convert": {
              "case": "upper",
              "trim": true
            }
          },
          "name": {
            "type": "string",
            "description": "State or region name",
            "example": "A short-sized string",
            "nullable": true,
            "minLength": 0,
            "maxLength": 100,
            "x-convert": {
              "trim": true
            }
          }
        }
      },
      "Address1": {
        "type": "object",
        "nullable": true,
        "properties": {
          "city": {
            "type": "string",
            "description": "City or locality",
            "example": "A short-sized string",
            "nullable": true,
            "minLength": 0,
            "maxLength": 100,
            "x-convert": {
              "trim": true
            }
          },
          "country": {
            "$ref": "#/components/schemas/AddressCountry"
          },
          "state": {
            "$ref": "#/components/schemas/AddressState"
          },
          "street": {
            "type": "string",
            "description": "Street address",
            "example": "A short-sized string",
            "nullable": true,
            "minLength": 0,
            "maxLength": 100,
            "x-convert": {
              "trim": true
            }
          },
          "street2": {
            "type": "string",
            "description": "Street address",
            "example": "A short-sized string",
            "nullable": true,
            "minLength": 0,
            "maxLength": 100,
            "x-convert": {
              "trim": true
            }
          },
          "zip": {
            "type": "string",
            "description": "Zip or postal code",
            "example": "A short-sized string",
            "nullable": true,
            "minLength": 0,
            "maxLength": 100,
            "x-convert": {
              "trim": true
            }
          }
        }
      },
      "type2": {
        "type": "string",
        "description": "Plugin type",
        "enum": [
          "CUSTOMER-EXTERNAL-SUGGESTIONS",
          "CUSTOMER-EXTERNAL-PROFILE",
          "CUSTOMER-LINKING",
          "DATA-PUSH"
        ]
      },
      "Model3": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identifier of plugin",
            "example": "FejxZ0WWpXTjzIScVEq0",
            "pattern": "^[a-zA-Z0-9]{20}$",
            "x-convert": {
              "trim": true
            }
          },
          "type": {
            "$ref": "#/components/schemas/type2"
          }
        }
      },
      "assignedPlugins": {
        "type": "array",
        "nullable": true,
        "items": {
          "$ref": "#/components/schemas/Model3"
        }
      },
      "HourPeriod": {
        "type": "object",
        "properties": {
          "from": {
            "type": "string",
            "description": "Open from in hh:mm format",
            "example": "13:00",
            "pattern": "^[0-2][0-9]:[0-9][0-9]$",
            "x-convert": {
              "trim": true
            }
          },
          "to": {
            "type": "string",
            "description": "Open to in hh:mm format",
            "example": "13:00",
            "pattern": "^[0-2][0-9]:[0-9][0-9]$",
            "x-convert": {
              "trim": true
            }
          }
        },
        "required": [
          "from",
          "to"
        ]
      },
      "periods": {
        "type": "array",
        "description": "Periods of hours",
        "maxItems": 10,
        "items": {
          "$ref": "#/components/schemas/HourPeriod"
        }
      },
      "Hours": {
        "type": "object",
        "description": "Hours",
        "nullable": true,
        "properties": {
          "periods": {
            "$ref": "#/components/schemas/periods"
          },
          "isOpen": {
            "type": "boolean",
            "description": "Flag to indicate if open"
          }
        }
      },
      "HoursByDay": {
        "type": "object",
        "description": "Hours by day of week",
        "nullable": true,
        "properties": {
          "mon": {
            "$ref": "#/components/schemas/Hours"
          },
          "tue": {
            "$ref": "#/components/schemas/Hours"
          },
          "wed": {
            "$ref": "#/components/schemas/Hours"
          },
          "thu": {
            "$ref": "#/components/schemas/Hours"
          },
          "fri": {
            "$ref": "#/components/schemas/Hours"
          },
          "sat": {
            "$ref": "#/components/schemas/Hours"
          },
          "sun": {
            "$ref": "#/components/schemas/Hours"
          }
        }
      },
      "HoursByDate": {
        "type": "object",
        "description": "Open hours by date in YYYYMMDD format, max 180 dates allowed",
        "nullable": true
      },
      "bookingSlotColor": {
        "type": "string",
        "enum": [
          "DEFAULT",
          "RESOURCE",
          "SERVICE"
        ],
        "nullable": true
      },
      "bookingWaitlistOrder": {
        "type": "string",
        "enum": [
          "FIRST",
          "LAST"
        ]
      },
      "businessType1": {
        "type": "string",
        "description": "Type of business or organization (DEPRECATED)",
        "enum": [
          "ANIMAL",
          "APP",
          "AUTOMOTIVE",
          "BAR",
          "CAFE",
          "DENTAL",
          "DOCTOR",
          "FINANCE",
          "ENTERTAINMENT",
          "EVENT",
          "GOVERNMENT",
          "HAIRDRESSER",
          "HEALTH",
          "INDIVIDUAL",
          "IT",
          "LEGAL",
          "LODGING",
          "LOGISTICS",
          "OTHER",
          "PHARMACY",
          "REAL-ESTATE",
          "RENTAL",
          "RESTAURANT",
          "RETAIL",
          "SALON",
          "SCHOOL",
          "SPA",
          "TRAVEL"
        ],
        "x-convert": {
          "case": "upper"
        }
      },
      "customerSearchMethod": {
        "type": "string",
        "enum": [
          "TYPEAHEAD",
          "EXPLICIT"
        ]
      },
      "customerSessionOverlapMode": {
        "type": "string",
        "enum": [
          "ALLOW",
          "DISALLOW",
          "WARN"
        ]
      },
      "state": {
        "type": "string",
        "enum": [
          "SERVING",
          "COMPLETE"
        ]
      },
      "Model5": {
        "type": "string",
        "description": "Tag associated with visit",
        "enum": [
          "NO-SHOW",
          "CANCELLED",
          "REMOVED",
          "ALERTED",
          "ARRIVED",
          "DELAYED",
          "CONFIRMED",
          "EXPIRED",
          "FLAGGED",
          "IMPORTED",
          "PRIORITIZED",
          "CAPACITY",
          "REJECTED"
        ],
        "x-convert": {
          "case": "upper"
        }
      },
      "VisitTags": {
        "type": "array",
        "description": "Optional tags associated with visit",
        "maxItems": 10,
        "x-constraint": {
          "unique": true
        },
        "items": {
          "$ref": "#/components/schemas/Model5"
        }
      },
      "waiting": {
        "type": "object",
        "properties": {
          "state": {
            "$ref": "#/components/schemas/state"
          },
          "tags": {
            "$ref": "#/components/schemas/VisitTags"
          },
          "duration": {
            "type": "integer",
            "description": "Duration in seconds",
            "example": 900,
            "minimum": 0
          },
          "suppressMessages": {
            "type": "boolean",
            "description": "Boolean flag",
            "example": true
          }
        }
      },
      "state1": {
        "type": "string",
        "enum": [
          "WAITING",
          "COMPLETE"
        ]
      },
      "Model6": {
        "type": "string",
        "description": "Tag associated with visit",
        "enum": [
          "NO-SHOW",
          "CANCELLED",
          "REMOVED",
          "ALERTED",
          "ARRIVED",
          "DELAYED",
          "CONFIRMED",
          "EXPIRED",
          "FLAGGED",
          "IMPORTED",
          "PRIORITIZED",
          "CAPACITY",
          "REJECTED"
        ],
        "x-convert": {
          "case": "upper"
        }
      },
      "VisitTags1": {
        "type": "array",
        "description": "Optional tags associated with visit",
        "maxItems": 10,
        "x-constraint": {
          "unique": true
        },
        "items": {
          "$ref": "#/components/schemas/Model6"
        }
      },
      "serving": {
        "type": "object",
        "properties": {
          "state": {
            "$ref": "#/components/schemas/state1"
          },
          "tags": {
            "$ref": "#/components/schemas/VisitTags1"
          },
          "duration": {
            "type": "integer",
            "description": "Duration in seconds",
            "example": 900,
            "minimum": 0
          },
          "suppressMessages": {
            "type": "boolean",
            "description": "Boolean flag",
            "example": true
          }
        }
      },
      "state2": {
        "type": "string",
        "enum": [
          "COMPLETE"
        ]
      },
      "Model7": {
        "type": "string",
        "description": "Tag associated with visit",
        "enum": [
          "NO-SHOW",
          "CANCELLED",
          "REMOVED",
          "ALERTED",
          "ARRIVED",
          "DELAYED",
          "CONFIRMED",
          "EXPIRED",
          "FLAGGED",
          "IMPORTED",
          "PRIORITIZED",
          "CAPACITY",
          "REJECTED"
        ],
        "x-convert": {
          "case": "upper"
        }
      },
      "VisitTags2": {
        "type": "array",
        "description": "Optional tags associated with visit",
        "maxItems": 10,
        "x-constraint": {
          "unique": true
        },
        "items": {
          "$ref": "#/components/schemas/Model7"
        }
      },
      "booked": {
        "type": "object",
        "properties": {
          "state": {
            "$ref": "#/components/schemas/state2"
          },
          "tags": {
            "$ref": "#/components/schemas/VisitTags2"
          },
          "duration": {
            "type": "integer",
            "description": "Duration in seconds",
            "example": 900,
            "minimum": 0
          },
          "suppressMessages": {
            "type": "boolean",
            "description": "Boolean flag",
            "example": true
          }
        }
      },
      "VisitExpiryRules": {
        "type": "object",
        "description": "Rules for auto completing and expiring visits",
        "nullable": true,
        "properties": {
          "WAITING": {
            "$ref": "#/components/schemas/waiting"
          },
          "SERVING": {
            "$ref": "#/components/schemas/serving"
          },
          "BOOKED": {
            "$ref": "#/components/schemas/booked"
          }
        }
      },
      "metric": {
        "type": "string",
        "enum": [
          "waitDuration",
          "serveDuration",
          "serveRatio",
          "dropoffRatio",
          "date"
        ]
      },
      "GoalMetricTargetPair": {
        "type": "object",
        "description": "Goal metric/target pair",
        "example": 600,
        "properties": {
          "metric": {
            "$ref": "#/components/schemas/metric"
          },
          "target": {
            "type": "number",
            "description": "Number",
            "example": 0.5,
            "nullable": true
          }
        },
        "required": [
          "metric",
          "target"
        ]
      },
      "Goals": {
        "type": "array",
        "description": "Goals",
        "x-constraint": {
          "unique": "metric"
        },
        "items": {
          "$ref": "#/components/schemas/GoalMetricTargetPair"
        }
      },
      "LocationI18n": {
        "type": "object",
        "description": "Location localizations",
        "x-meta": {
          "unknownType": "Record<string, string>"
        },
        "nullable": true
      },
      "type3": {
        "type": "string",
        "description": "Condition type",
        "example": "IS_BOOKING",
        "enum": [
          "IS_WAITLIST",
          "IS_BOOKING",
          "IS_NOT_WAITLIST",
          "IS_NOT_BOOKING",
          "IS_ACTIVE",
          "IS_FIRM",
          "HAS_NO_INACTIVE_TAGS",
          "ATTRIBUTE"
        ]
      },
      "operator": {
        "type": "string",
        "description": "Operator to use for comparison with attribute value",
        "example": "==",
        "enum": [
          "==",
          "!=",
          "<",
          "<=",
          ">",
          ">=",
          "IN",
          "NOT_IN",
          "CONTAINS",
          "NOT_CONTAINS",
          "BETWEEN",
          "IS_SET"
        ]
      },
      "value": {
        "type": "array",
        "maxItems": 10,
        "items": {
          "type": "string",
          "description": "Visit value to match",
          "example": "WAITING",
          "nullable": true,
          "x-convert": {
            "trim": true
          }
        }
      },
      "type4": {
        "type": "string",
        "description": "Condition type",
        "example": "IS_BOOKING",
        "enum": [
          "IS_WAITLIST",
          "IS_BOOKING",
          "IS_NOT_WAITLIST",
          "IS_NOT_BOOKING",
          "IS_ACTIVE",
          "IS_FIRM",
          "HAS_NO_INACTIVE_TAGS",
          "ATTRIBUTE"
        ]
      },
      "Model9": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/type4"
          },
          "attribute": {
            "type": "string",
            "description": "Visit attribute to use as value. Use dot notation to navigate to child attributes.",
            "example": "state",
            "pattern": "[a-zA-Z\\\\.]{1,100}",
            "x-convert": {
              "trim": true
            }
          },
          "operator": {
            "$ref": "#/components/schemas/operator"
          },
          "value": {
            "$ref": "#/components/schemas/value"
          }
        }
      },
      "conditions": {
        "type": "array",
        "description": "Nested conditions that are combined with OR logic",
        "minItems": 1,
        "maxItems": 6,
        "items": {
          "$ref": "#/components/schemas/Model9"
        }
      },
      "Model10": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/type3"
          },
          "attribute": {
            "type": "string",
            "description": "Visit attribute to use as value. Use dot notation to navigate to child attributes.",
            "example": "state",
            "pattern": "[a-zA-Z\\\\.]{1,100}",
            "x-convert": {
              "trim": true
            }
          },
          "operator": {
            "$ref": "#/components/schemas/operator"
          },
          "value": {
            "$ref": "#/components/schemas/value"
          },
          "conditions": {
            "$ref": "#/components/schemas/conditions"
          }
        }
      },
      "Model15": {
        "type": "string",
        "description": "Locale in xx-YY format, where the first part is language and second country code",
        "example": "en-US",
        "enum": [
          "ca-AD",
          "ar-AE",
          "ps-AF",
          "tk-AF",
          "uz-AF",
          "en-AG",
          "en-AI",
          "sq-AL",
          "hy-AM",
          "pt-AO",
          "en-AQ",
          "ru-AQ",
          "gn-AR",
          "es-AR",
          "en-AS",
          "sm-AS",
          "de-AT",
          "en-AU",
          "nl-AW",
          "pa-AW",
          "sv-AX",
          "az-AZ",
          "bs-BA",
          "hr-BA",
          "sr-BA",
          "en-BB",
          "bn-BD",
          "de-BE",
          "fr-BE",
          "nl-BE",
          "fr-BF",
          "ff-BF",
          "bg-BG",
          "ar-BH",
          "fr-BI",
          "rn-BI",
          "fr-BJ",
          "fr-BL",
          "en-BM",
          "ms-BN",
          "ay-BO",
          "qu-BO",
          "es-BO",
          "nl-BQ",
          "pt-BR",
          "en-BS",
          "dz-BT",
          "nn-BV",
          "nb-BV",
          "no-BV",
          "en-BW",
          "tn-BW",
          "be-BY",
          "ru-BY",
          "en-BZ",
          "es-BZ",
          "en-CA",
          "fr-CA",
          "en-CC",
          "fr-CD",
          "kg-CD",
          "ln-CD",
          "lu-CD",
          "sw-CD",
          "fr-CF",
          "sg-CF",
          "fr-CG",
          "ln-CG",
          "de-CH",
          "fr-CH",
          "it-CH",
          "rm-CH",
          "fr-CI",
          "en-CK",
          "rar-CK",
          "es-CL",
          "en-CM",
          "fr-CM",
          "zh-CN",
          "es-CO",
          "es-CR",
          "es-CU",
          "pt-CV",
          "en-CW",
          "nl-CW",
          "pa-CW",
          "en-CX",
          "el-CY",
          "hy-CY",
          "tr-CY",
          "cs-CZ",
          "sk-CZ",
          "de-DE",
          "ar-DJ",
          "fr-DJ",
          "da-DK",
          "en-DM",
          "es-DO",
          "ar-DZ",
          "es-EC",
          "et-EE",
          "ar-EG",
          "es-EH",
          "aa-ER",
          "ar-ER",
          "byn-ER",
          "en-ER",
          "kun-ER",
          "nrb-ER",
          "ssy-ER",
          "tig-ER",
          "ti-ER",
          "ca-ES",
          "es-ES",
          "eu-ES",
          "am-ET",
          "fi-FI",
          "sv-FI",
          "en-FJ",
          "fj-FJ",
          "hif-FJ",
          "rtm-FJ",
          "en-FK",
          "en-FM",
          "fo-FO",
          "fr-FR",
          "fr-GA",
          "en-GB",
          "en-GD",
          "ka-GE",
          "fr-GF",
          "en-GG",
          "fr-GG",
          "en-GH",
          "en-GI",
          "kl-GL",
          "en-GM",
          "fr-GN",
          "ff-GN",
          "fr-GP",
          "fan-GQ",
          "fr-GQ",
          "pt-GQ",
          "es-GQ",
          "el-GR",
          "en-GS",
          "es-GT",
          "ch-GU",
          "en-GU",
          "es-GU",
          "pt-GW",
          "en-GY",
          "en-HK",
          "zh-HK",
          "en-HM",
          "es-HN",
          "hr-HR",
          "fr-HT",
          "ht-HT",
          "hu-HU",
          "id-ID",
          "en-IE",
          "ga-IE",
          "ar-IL",
          "he-IL",
          "en-IM",
          "gv-IM",
          "en-IN",
          "hi-IN",
          "en-IO",
          "ar-IQ",
          "ku-IQ",
          "fa-IR",
          "is-IS",
          "it-IT",
          "en-JE",
          "fr-JE",
          "en-JM",
          "ar-JO",
          "ja-JP",
          "en-KE",
          "sw-KE",
          "ky-KG",
          "ru-KG",
          "km-KH",
          "en-KI",
          "ar-KM",
          "fr-KM",
          "en-KN",
          "ko-KP",
          "ko-KR",
          "ar-KW",
          "en-KY",
          "kk-KZ",
          "ru-KZ",
          "lo-LA",
          "ar-LB",
          "fr-LB",
          "en-LC",
          "de-LI",
          "si-LK",
          "ta-LK",
          "en-LR",
          "en-LS",
          "st-LS",
          "lt-LT",
          "de-LU",
          "fr-LU",
          "lb-LU",
          "lv-LV",
          "ar-LY",
          "ar-MA",
          "fr-MC",
          "ro-MD",
          "bs-ME",
          "hr-ME",
          "sq-ME",
          "sr-ME",
          "en-MF",
          "fr-MF",
          "nl-MF",
          "fr-MG",
          "mg-MG",
          "en-MH",
          "mh-MH",
          "mk-MK",
          "fr-ML",
          "my-MM",
          "mn-MN",
          "pt-MO",
          "zh-MO",
          "ch-MP",
          "en-MP",
          "fr-MQ",
          "ar-MR",
          "en-MS",
          "en-MT",
          "mt-MT",
          "en-MU",
          "dv-MV",
          "en-MW",
          "ny-MW",
          "es-MX",
          "ms-MY",
          "pt-MZ",
          "af-NA",
          "en-NA",
          "fr-NC",
          "fr-NE",
          "en-NF",
          "en-NG",
          "es-NI",
          "nl-NL",
          "nn-NO",
          "nb-NO",
          "no-NO",
          "ne-NP",
          "en-NR",
          "na-NR",
          "en-NU",
          "en-NZ",
          "mi-NZ",
          "ar-OM",
          "es-PA",
          "es-PE",
          "fr-PF",
          "en-PG",
          "en-PH",
          "en-PK",
          "ur-PK",
          "pl-PL",
          "fr-PM",
          "en-PN",
          "en-PR",
          "es-PR",
          "ar-PS",
          "pt-PT",
          "en-PW",
          "gn-PY",
          "es-PY",
          "ar-QA",
          "fr-RE",
          "ro-RO",
          "sr-RS",
          "ru-RU",
          "en-RW",
          "fr-RW",
          "rw-RW",
          "ar-SA",
          "en-SB",
          "en-SC",
          "fr-SC",
          "ar-SD",
          "en-SD",
          "sv-SE",
          "en-SG",
          "ms-SG",
          "ta-SG",
          "zh-SG",
          "en-SH",
          "sl-SI",
          "no-SJ",
          "sk-SK",
          "en-SL",
          "it-SM",
          "fr-SN",
          "ar-SO",
          "so-SO",
          "nl-SR",
          "en-SS",
          "pt-ST",
          "es-SV",
          "en-SX",
          "nl-SX",
          "ar-SY",
          "en-SZ",
          "ss-SZ",
          "en-TC",
          "ar-TD",
          "fr-TD",
          "fr-TF",
          "fr-TG",
          "th-TH",
          "ru-TJ",
          "tg-TJ",
          "en-TK",
          "pt-TL",
          "ru-TM",
          "tk-TM",
          "ar-TN",
          "en-TO",
          "to-TO",
          "tr-TR",
          "en-TT",
          "en-TV",
          "zh-TW",
          "en-TZ",
          "sw-TZ",
          "uk-UA",
          "en-UG",
          "sw-UG",
          "en-UM",
          "en-US",
          "es-UY",
          "ru-UZ",
          "uz-UZ",
          "de-VA",
          "fr-VA",
          "it-VA",
          "la-VA",
          "en-VC",
          "es-VE",
          "en-VG",
          "en-VI",
          "vi-VN",
          "bi-VU",
          "en-VU",
          "fr-VU",
          "fr-WF",
          "en-WS",
          "sm-WS",
          "sq-XK",
          "sr-XK",
          "ar-YE",
          "fr-YT",
          "af-ZA",
          "en-ZA",
          "nr-ZA",
          "st-ZA",
          "ss-ZA",
          "tn-ZA",
          "ts-ZA",
          "ve-ZA",
          "xh-ZA",
          "zu-ZA",
          "en-ZM",
          "en-ZW",
          "nd-ZW",
          "sn-ZW"
        ]
      },
      "publicLocales1": {
        "type": "array",
        "description": "Locales available to choose from on public pages",
        "minItems": 1,
        "maxItems": 50,
        "x-constraint": {
          "unique": true
        },
        "items": {
          "$ref": "#/components/schemas/Model15"
        }
      },
      "layout": {
        "type": "string",
        "enum": [
          "CENTERED",
          "TWO_COLUMNS_CONTENT_RIGHT",
          "TWO_COLUMNS_CONTENT_LEFT"
        ],
        "nullable": true
      },
      "publicTheme": {
        "type": "object",
        "description": "Custom theme values used by public pages",
        "nullable": true,
        "properties": {
          "bgColor": {
            "type": "string",
            "description": "Color code in any valid CSS format",
            "example": "#FF0000",
            "minLength": 0,
            "maxLength": 30,
            "x-convert": {
              "trim": true
            }
          },
          "bgImageUrl": {
            "type": "string",
            "description": "Photo URL",
            "example": "https://test.com/test",
            "nullable": true,
            "x-format": {
              "uri": {
                "scheme": [
                  "http",
                  "https"
                ]
              }
            }
          },
          "contentBgColor": {
            "type": "string",
            "description": "Color code in any valid CSS format",
            "example": "#FF0000",
            "default": "#ffffff",
            "minLength": 0,
            "maxLength": 30,
            "x-convert": {
              "trim": true
            }
          },
          "textColor": {
            "type": "string",
            "description": "Color code in any valid CSS format",
            "example": "#FF0000",
            "minLength": 0,
            "maxLength": 30,
            "x-convert": {
              "trim": true
            }
          },
          "btnBgColor": {
            "type": "string",
            "description": "Color code in any valid CSS format",
            "example": "#FF0000",
            "minLength": 0,
            "maxLength": 30,
            "x-convert": {
              "trim": true
            }
          },
          "btnTextColor": {
            "type": "string",
            "description": "Color code in any valid CSS format",
            "example": "#FF0000",
            "minLength": 0,
            "maxLength": 30,
            "x-convert": {
              "trim": true
            }
          },
          "secondaryBtnBgColor": {
            "type": "string",
            "description": "Color code in any valid CSS format",
            "example": "#FF0000",
            "minLength": 0,
            "maxLength": 30,
            "x-convert": {
              "trim": true
            }
          },
          "secondaryBtnTextColor": {
            "type": "string",
            "description": "Color code in any valid CSS format",
            "example": "#FF0000",
            "minLength": 0,
            "maxLength": 30,
            "x-convert": {
              "trim": true
            }
          },
          "btnBorderRadius": {
            "type": "string",
            "description": "Short string",
            "example": "A short-sized string",
            "nullable": true,
            "minLength": 0,
            "maxLength": 100,
            "x-convert": {
              "trim": true
            }
          },
          "headingFont": {
            "type": "string",
            "description": "Short string",
            "example": "A short-sized string",
            "nullable": true,
            "minLength": 0,
            "maxLength": 100,
            "x-convert": {
              "trim": true
            }
          },
          "textFont": {
            "type": "string",
            "description": "Short string",
            "example": "A short-sized string",
            "nullable": true,
            "minLength": 0,
            "maxLength": 100,
            "x-convert": {
              "trim": true
            }
          },
          "layout": {
            "$ref": "#/components/schemas/layout"
          }
        }
      },
      "recaptchaIpAllowlist": {
        "type": "array",
        "description": "IP addresses or CIDRs that are allowed to bypass recaptcha checks in public check-in",
        "nullable": true,
        "items": {
          "type": "string",
          "description": "IP address or CIDR subnet",
          "example": "127.0.0.1",
          "x-format": {
            "ip": {
              "cidr": "optional",
              "version": [
                "ipv4"
              ]
            }
          }
        }
      },
      "type6": {
        "type": "string",
        "enum": [
          "ARRIVED",
          "CONFIRMED",
          "CANCELLED",
          "DELAYED"
        ]
      },
      "words": {
        "type": "array",
        "maxItems": 10,
        "items": {
          "type": "string",
          "description": "Short string",
          "example": "A short-sized string",
          "minLength": 1,
          "maxLength": 30,
          "x-convert": {
            "case": "upper",
            "trim": true
          }
        }
      },
      "ReplyTrigger": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/type6"
          },
          "words": {
            "$ref": "#/components/schemas/words"
          }
        }
      },
      "replyTriggers": {
        "type": "array",
        "description": "Reply triggers for incoming messages",
        "nullable": true,
        "maxItems": 4,
        "items": {
          "$ref": "#/components/schemas/ReplyTrigger"
        }
      },
      "resourceCategoryDisplay": {
        "type": "string",
        "enum": [
          "LIST",
          "GROUPED",
          "SEPARATED",
          "CATEGORY-FIRST"
        ],
        "nullable": true
      },
      "resourceCategoryOpenState": {
        "type": "string",
        "enum": [
          "OPEN_FIRST",
          "OPEN_NONE",
          "OPEN_ALL"
        ]
      },
      "resourceItemLayout": {
        "type": "string",
        "enum": [
          "LIST",
          "CARD"
        ]
      },
      "SavedReply": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name",
            "example": "A short-sized string",
            "nullable": true,
            "minLength": 0,
            "maxLength": 100,
            "x-convert": {
              "trim": true
            }
          },
          "body": {
            "type": "string",
            "description": "Body of message",
            "example": "A message body",
            "nullable": true,
            "minLength": 0,
            "maxLength": 2000,
            "x-convert": {
              "trim": true
            }
          }
        }
      },
      "savedReplies": {
        "type": "array",
        "description": "Saved message reply templates",
        "nullable": true,
        "maxItems": 20,
        "items": {
          "$ref": "#/components/schemas/SavedReply"
        }
      },
      "serviceCategoryDisplay": {
        "type": "string",
        "enum": [
          "LIST",
          "GROUPED",
          "SEPARATED",
          "CATEGORY-FIRST"
        ],
        "nullable": true
      },
      "serviceCategoryOpenState": {
        "type": "string",
        "enum": [
          "OPEN_FIRST",
          "OPEN_NONE",
          "OPEN_ALL"
        ]
      },
      "serviceItemLayout": {
        "type": "string",
        "enum": [
          "LIST",
          "CARD"
        ]
      },
      "serviceWords": {
        "type": "array",
        "maxItems": 3,
        "items": {
          "type": "string",
          "description": "Short string",
          "example": "A short-sized string",
          "minLength": 1,
          "maxLength": 10,
          "x-convert": {
            "case": "upper",
            "trim": true
          }
        }
      },
      "resourceWords": {
        "type": "array",
        "maxItems": 3,
        "items": {
          "type": "string",
          "description": "Short string",
          "example": "A short-sized string",
          "minLength": 1,
          "maxLength": 10,
          "x-convert": {
            "case": "upper",
            "trim": true
          }
        }
      },
      "SignUpTrigger": {
        "type": "object",
        "properties": {
          "words": {
            "$ref": "#/components/schemas/words"
          },
          "serviceWords": {
            "$ref": "#/components/schemas/serviceWords"
          },
          "resourceWords": {
            "$ref": "#/components/schemas/resourceWords"
          }
        }
      },
      "signUpTriggers": {
        "type": "array",
        "description": "Sign up triggers for incoming messages",
        "nullable": true,
        "maxItems": 1,
        "items": {
          "$ref": "#/components/schemas/SignUpTrigger"
        }
      },
      "smsSignupAction": {
        "type": "string",
        "enum": [
          "ADD_TO_WAITLIST",
          "SEND_MESSAGE"
        ]
      },
      "theme": {
        "type": "string",
        "description": "Preset theme for public pages",
        "enum": [
          "white",
          "black",
          "red",
          "blue",
          "green",
          "yellow",
          "brown",
          "purple",
          "pink",
          "custom"
        ],
        "nullable": true,
        "x-convert": {
          "case": "lower"
        }
      },
      "ticketPrefixMode": {
        "type": "string",
        "enum": [
          "STATIC",
          "SERVICE"
        ]
      },
      "visitQrCodeAction": {
        "type": "string",
        "description": "Action URL to encode in QR code",
        "enum": [
          "SHOW-PUBLIC",
          "SHOW-APP",
          "SERVE-APP"
        ]
      },
      "before": {
        "type": "array",
        "minItems": 1,
        "maxItems": 6,
        "items": {
          "$ref": "#/components/schemas/Model10"
        }
      },
      "after": {
        "type": "array",
        "minItems": 1,
        "maxItems": 6,
        "items": {
          "$ref": "#/components/schemas/Model10"
        }
      },
      "when": {
        "type": "object",
        "properties": {
          "before": {
            "$ref": "#/components/schemas/before"
          },
          "after": {
            "$ref": "#/components/schemas/after"
          }
        },
        "required": [
          "before",
          "after"
        ]
      },
      "where": {
        "type": "array",
        "minItems": 1,
        "maxItems": 6,
        "items": {
          "$ref": "#/components/schemas/Model10"
        }
      },
      "anchor": {
        "type": "string",
        "enum": [
          "NONE",
          "BOOKING_START",
          "BOOKING_END",
          "BOOKING_DAY_START",
          "BOOKING_DAY_END"
        ]
      },
      "type7": {
        "type": "string",
        "default": "VISIT_UPDATE",
        "enum": [
          "VISIT_UPDATE"
        ]
      },
      "state3": {
        "type": "string",
        "description": "State of visit",
        "enum": [
          "PENDING",
          "DRAFT",
          "BOOKED",
          "WAITING",
          "SERVING",
          "COMPLETE"
        ],
        "x-convert": {
          "case": "upper"
        }
      },
      "Model18": {
        "type": "string",
        "description": "Tag associated with visit",
        "enum": [
          "NO-SHOW",
          "CANCELLED",
          "REMOVED",
          "ALERTED",
          "ARRIVED",
          "DELAYED",
          "CONFIRMED",
          "EXPIRED",
          "FLAGGED",
          "IMPORTED",
          "PRIORITIZED",
          "CAPACITY",
          "REJECTED"
        ],
        "x-convert": {
          "case": "upper"
        }
      },
      "VisitTags3": {
        "type": "array",
        "description": "Optional tags associated with visit",
        "maxItems": 10,
        "x-constraint": {
          "unique": true
        },
        "items": {
          "$ref": "#/components/schemas/Model18"
        }
      },
      "values": {
        "type": "array",
        "maxItems": 20,
        "items": {
          "anyOf": [
            {
              "type": "string",
              "description": "Medium string",
              "example": "A medium-sized string",
              "minLength": 0,
              "maxLength": 500,
              "x-convert": {
                "trim": true
              }
            },
            {
              "type": "boolean",
              "nullable": true
            },
            {
              "type": "number",
              "nullable": true
            }
          ]
        }
      },
      "VisitDataField": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier",
            "example": "FejxZ0WWpXTjzIScVEq0",
            "pattern": "^[a-zA-Z0-9]{20}$",
            "x-convert": {
              "trim": true
            }
          },
          "values": {
            "$ref": "#/components/schemas/values"
          }
        },
        "required": [
          "id",
          "values"
        ]
      },
      "dataFields": {
        "type": "array",
        "description": "Data-fields",
        "items": {
          "$ref": "#/components/schemas/VisitDataField"
        }
      },
      "data": {
        "type": "object",
        "properties": {
          "state": {
            "$ref": "#/components/schemas/state3"
          },
          "tags": {
            "$ref": "#/components/schemas/VisitTags3"
          },
          "dataFields": {
            "$ref": "#/components/schemas/dataFields"
          },
          "metadata": {
            "$ref": "#/components/schemas/metadata"
          }
        }
      },
      "action": {
        "type": "object",
        "properties": {
          "timeOffset": {
            "type": "integer",
            "description": "Integer",
            "example": 0,
            "nullable": true
          },
          "cron": {
            "type": "string"
          },
          "anchor": {
            "$ref": "#/components/schemas/anchor"
          },
          "type": {
            "$ref": "#/components/schemas/type7"
          },
          "data": {
            "$ref": "#/components/schemas/data"
          }
        },
        "required": [
          "anchor",
          "data"
        ]
      },
      "Model19": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Short string",
            "example": "A short-sized string",
            "minLength": 0,
            "maxLength": 100,
            "x-convert": {
              "trim": true
            }
          },
          "name": {
            "type": "string",
            "description": "Short string",
            "example": "A short-sized string",
            "minLength": 0,
            "maxLength": 100,
            "x-convert": {
              "trim": true
            }
          },
          "description": {
            "type": "string",
            "description": "Medium string",
            "example": "A medium-sized string",
            "minLength": 0,
            "maxLength": 500,
            "x-convert": {
              "trim": true
            }
          },
          "isActive": {
            "type": "boolean",
            "description": "Boolean flag",
            "example": true,
            "default": true
          },
          "when": {
            "$ref": "#/components/schemas/when"
          },
          "where": {
            "$ref": "#/components/schemas/where"
          },
          "action": {
            "$ref": "#/components/schemas/action"
          }
        },
        "required": [
          "id",
          "name",
          "action"
        ]
      },
      "visitRules": {
        "type": "array",
        "description": "Visit update rules",
        "maxItems": 10,
        "items": {
          "$ref": "#/components/schemas/Model19"
        }
      },
      "tag": {
        "type": "string",
        "description": "Tag associated with visit",
        "default": "PRIORITIZED",
        "enum": [
          "NO-SHOW",
          "CANCELLED",
          "REMOVED",
          "ALERTED",
          "ARRIVED",
          "DELAYED",
          "CONFIRMED",
          "EXPIRED",
          "FLAGGED",
          "IMPORTED",
          "PRIORITIZED",
          "CAPACITY",
          "REJECTED"
        ],
        "x-convert": {
          "case": "upper"
        }
      },
      "operator1": {
        "type": "string",
        "description": "Operator to use for comparison with attribute value",
        "example": "==",
        "enum": [
          "==",
          ">",
          ">=",
          "<",
          "<=",
          "!="
        ]
      },
      "VisitTagRule": {
        "type": "object",
        "properties": {
          "tag": {
            "$ref": "#/components/schemas/tag"
          },
          "attribute": {
            "type": "string",
            "description": "Visit attribute to use as value, use dot notation to navigate to child attributes.",
            "example": "resourceIds",
            "pattern": "[a-zA-Z\\\\.]{1,100}",
            "x-convert": {
              "trim": true
            }
          },
          "operator": {
            "$ref": "#/components/schemas/operator1"
          },
          "value": {
            "type": "string",
            "description": "Visit value to match",
            "example": "4rzVRWUNbNyRdOC1FJm5y1cs",
            "nullable": true,
            "minLength": 0,
            "maxLength": 100,
            "x-convert": {
              "trim": true
            }
          }
        }
      },
      "visitTagRules": {
        "type": "array",
        "description": "Rules for automatically add tags to visits, like prioritized",
        "nullable": true,
        "maxItems": 3,
        "items": {
          "$ref": "#/components/schemas/VisitTagRule"
        }
      },
      "coordinates": {
        "type": "object",
        "properties": {
          "lat": {
            "type": "number",
            "description": "Latitude in degrees.",
            "minimum": -90,
            "maximum": 90
          },
          "lng": {
            "type": "number",
            "description": "Longitude in degrees.",
            "minimum": -180,
            "maximum": 180
          },
          "geohash": {
            "type": "string",
            "description": "Geohash for latitude/longitude",
            "pattern": "^[0-9b-hj-km-z]{12}"
          }
        },
        "required": [
          "lat",
          "lng"
        ]
      },
      "LocationResponse": {
        "type": "object",
        "properties": {
          "address": {
            "$ref": "#/components/schemas/Address1"
          },
          "allowEstWaitToExceedHours": {
            "type": "boolean",
            "description": "Allow estimated wait to exceed location hours, if false estimated wait will be set to N/A when outside of hours",
            "example": true
          },
          "assignedPlugins": {
            "$ref": "#/components/schemas/assignedPlugins"
          },
          "bookingAllowOverbooking": {
            "type": "boolean",
            "description": "Flag to indicate if logged-in users are allowed to overbook slots",
            "example": true
          },
          "bookingHours": {
            "$ref": "#/components/schemas/HoursByDay"
          },
          "bookingHoursByDate": {
            "$ref": "#/components/schemas/HoursByDate"
          },
          "bookingRejectUnknownCustomers": {
            "type": "boolean",
            "description": "Flag to indicate if only existing customers may schedule a booking",
            "example": true
          },
          "bookingSlotColor": {
            "$ref": "#/components/schemas/bookingSlotColor"
          },
          "bookingWaitlistOrder": {
            "$ref": "#/components/schemas/bookingWaitlistOrder"
          },
          "businessName": {
            "type": "string",
            "description": "Name of company or organization",
            "example": "A short-sized string",
            "minLength": 1,
            "maxLength": 100,
            "x-convert": {
              "trim": true
            }
          },
          "businessType": {
            "$ref": "#/components/schemas/businessType1"
          },
          "currency": {
            "type": "string",
            "description": "Currency in ISO 4217 format",
            "example": "USD",
            "nullable": true,
            "minLength": 3,
            "maxLength": 3,
            "x-convert": {
              "case": "upper",
              "trim": true
            }
          },
          "customerSearchMethod": {
            "$ref": "#/components/schemas/customerSearchMethod"
          },
          "customerSessionOverlapMode": {
            "$ref": "#/components/schemas/customerSessionOverlapMode"
          },
          "defaultNumServers": {
            "type": "integer",
            "description": "Default number of servers",
            "example": 1,
            "nullable": true,
            "minimum": 1,
            "maximum": 1000
          },
          "defaultVisitOrderValue": {
            "type": "number",
            "description": "Default order value per served visit",
            "example": 100,
            "nullable": true,
            "minimum": 0
          },
          "defaultServeDuration": {
            "type": "integer",
            "description": "Default serve duration for serving one visit",
            "example": 900,
            "nullable": true,
            "minimum": 0
          },
          "displayName": {
            "type": "string",
            "description": "Display name used in customer facing pages",
            "example": "A short-sized string",
            "nullable": true,
            "minLength": 0,
            "maxLength": 100,
            "x-convert": {
              "trim": true
            }
          },
          "email": {
            "type": "string",
            "description": "Email address",
            "example": "test@test.com",
            "nullable": true,
            "maxLength": 100,
            "x-format": {
              "email": true
            },
            "x-convert": {
              "case": "lower",
              "trim": true
            }
          },
          "emailReplyToAddress": {
            "type": "string",
            "description": "Email reply-to address, in addition to default reply-to",
            "example": "test@test.com",
            "maxLength": 100,
            "x-format": {
              "email": true
            },
            "x-convert": {
              "case": "lower",
              "trim": true
            }
          },
          "enableResourceAutoAway": {
            "type": "boolean",
            "description": "Automatically set all location resources as away at midnight (per location timezone)",
            "example": true
          },
          "expiryRules": {
            "$ref": "#/components/schemas/VisitExpiryRules"
          },
          "externalCustomerIdValidation": {
            "type": "string",
            "description": "Optional regular expression validation of external customer id",
            "example": "A short-sized string",
            "nullable": true,
            "minLength": 0,
            "maxLength": 100,
            "x-convert": {
              "trim": true
            }
          },
          "goals": {
            "$ref": "#/components/schemas/Goals"
          },
          "addGoals": {
            "$ref": "#/components/schemas/Goals"
          },
          "removeGoals": {
            "$ref": "#/components/schemas/Goals"
          },
          "hours": {
            "$ref": "#/components/schemas/HoursByDay"
          },
          "hoursByDate": {
            "$ref": "#/components/schemas/HoursByDate"
          },
          "i18n": {
            "$ref": "#/components/schemas/LocationI18n"
          },
          "isActive": {
            "type": "boolean",
            "description": "Flag to indicate if active",
            "example": true
          },
          "isForceClosed": {
            "type": "boolean",
            "description": "Flag to indicate if waitlist is closed overriding other settings",
            "example": true
          },
          "isForceOpen": {
            "type": "boolean",
            "description": "Flag to indicate if waitlist is open overriding other settings",
            "example": true
          },
          "isGoogleWaitlist": {
            "type": "boolean",
            "description": "Flag to indicate if available on RwG",
            "example": true
          },
          "isMaxCapacityActive": {
            "type": "boolean",
            "description": "Flag to indicate if capacity management is enabled",
            "example": true
          },
          "isPublicBooking": {
            "type": "boolean",
            "description": "Flag to indicate if booking check-in is open to public",
            "example": true
          },
          "isPublicCheckIn": {
            "type": "boolean",
            "description": "Flag to indicate if waitlist check-in is open to public",
            "example": true
          },
          "isPublicIndexed": {
            "type": "boolean",
            "description": "Flag to indicate if location is indexable by search engines",
            "example": true
          },
          "isPublicSearch": {
            "type": "boolean",
            "description": "Flag to indicate if location is searchable",
            "example": true
          },
          "isPublicWaitlist": {
            "type": "boolean",
            "description": "Flag to indicate if waitlist is open to public",
            "example": true
          },
          "logoUrl": {
            "type": "string",
            "description": "URL to logo image",
            "example": "https://test.com/test",
            "nullable": true,
            "x-format": {
              "uri": {
                "scheme": [
                  "http",
                  "https"
                ]
              }
            }
          },
          "publicLogoUrl": {
            "type": "string",
            "description": "URL to public-facing location logo",
            "example": "https://test.com/test",
            "nullable": true,
            "x-format": {
              "uri": {
                "scheme": [
                  "http",
                  "https"
                ]
              }
            }
          },
          "labels": {
            "$ref": "#/components/schemas/Labels"
          },
          "addLabels": {
            "$ref": "#/components/schemas/Labels"
          },
          "removeLabels": {
            "$ref": "#/components/schemas/Labels"
          },
          "maxPartySize": {
            "type": "integer",
            "description": "Max party size",
            "example": 1,
            "nullable": true,
            "minimum": 1,
            "maximum": 1000
          },
          "maxPartySizeBookings": {
            "type": "integer",
            "description": "Max party size for bookings",
            "example": 1,
            "nullable": true,
            "minimum": 1,
            "maximum": 1000
          },
          "maxServing": {
            "type": "integer",
            "description": "Max number of parties allowed in SERVING state",
            "example": 2,
            "minimum": 0
          },
          "maxServingActive": {
            "type": "boolean",
            "description": "Flag to indicate if max serving is enforced",
            "example": true
          },
          "maxWaiting": {
            "type": "integer",
            "description": "Max number of parties allowed in WAITING state",
            "example": 2,
            "minimum": 0
          },
          "maxWaitingActive": {
            "type": "boolean",
            "description": "Flag to indicate if max waiting is enforced",
            "example": true
          },
          "metadata": {
            "$ref": "#/components/schemas/metadata"
          },
          "openWaitlistOnlyAtMaxCapacity": {
            "type": "boolean",
            "description": "Flag to indicate if waitlist should only be opened at max capacity",
            "example": true
          },
          "phone": {
            "type": "string",
            "description": "Phone number in E.164 format",
            "example": "+16005551234",
            "nullable": true,
            "x-convert": {
              "trim": true
            }
          },
          "publicLocales": {
            "$ref": "#/components/schemas/publicLocales1"
          },
          "publicTheme": {
            "$ref": "#/components/schemas/publicTheme"
          },
          "recaptchaIpAllowlist": {
            "$ref": "#/components/schemas/recaptchaIpAllowlist"
          },
          "recaptchaMinScore": {
            "type": "number",
            "description": "Required recaptcha score in public check-in, set to -1 to disable recaptcha check",
            "example": 0.3,
            "nullable": true,
            "minimum": -1,
            "maximum": 1
          },
          "replyTriggers": {
            "$ref": "#/components/schemas/replyTriggers"
          },
          "resourceCategoryDisplay": {
            "$ref": "#/components/schemas/resourceCategoryDisplay"
          },
          "resourceCategoryOpenState": {
            "$ref": "#/components/schemas/resourceCategoryOpenState"
          },
          "resourceItemLayout": {
            "$ref": "#/components/schemas/resourceItemLayout"
          },
          "savedReplies": {
            "$ref": "#/components/schemas/savedReplies"
          },
          "serviceCategoryDisplay": {
            "$ref": "#/components/schemas/serviceCategoryDisplay"
          },
          "serviceCategoryOpenState": {
            "$ref": "#/components/schemas/serviceCategoryOpenState"
          },
          "serviceItemLayout": {
            "$ref": "#/components/schemas/serviceItemLayout"
          },
          "showEmailQrCode": {
            "type": "boolean",
            "description": "Show QR code in visit email messages",
            "example": true
          },
          "signUpTriggers": {
            "$ref": "#/components/schemas/signUpTriggers"
          },
          "smsSignupAction": {
            "$ref": "#/components/schemas/smsSignupAction"
          },
          "theme": {
            "$ref": "#/components/schemas/theme"
          },
          "ticketPrefix": {
            "type": "string",
            "description": "Short string",
            "example": "A short-sized string",
            "minLength": 0,
            "maxLength": 100,
            "x-convert": {
              "trim": true
            }
          },
          "ticketPrefixMode": {
            "$ref": "#/components/schemas/ticketPrefixMode"
          },
          "visitLockDisabled": {
            "type": "boolean",
            "description": "Flag to indicate if location lock is disabled when creating or updating visits",
            "example": true
          },
          "visitQrCodeAction": {
            "$ref": "#/components/schemas/visitQrCodeAction"
          },
          "visitRules": {
            "$ref": "#/components/schemas/visitRules"
          },
          "visitTagRules": {
            "$ref": "#/components/schemas/visitTagRules"
          },
          "waitlistHours": {
            "$ref": "#/components/schemas/HoursByDay"
          },
          "waitlistHoursByDate": {
            "$ref": "#/components/schemas/HoursByDate"
          },
          "waitlistRejectUnknownCustomers": {
            "type": "boolean",
            "description": "Flag to indicate if only existing customers may add themselves to waitlists",
            "example": true
          },
          "website": {
            "type": "string",
            "description": "Public website",
            "example": "https://test.com/test",
            "nullable": true,
            "x-format": {
              "uri": {
                "scheme": [
                  "http",
                  "https"
                ]
              }
            }
          },
          "customStyleUrl": {
            "type": "string",
            "description": "URL with http or https protocol",
            "example": "https://test.com/test",
            "nullable": true,
            "x-format": {
              "uri": {
                "scheme": [
                  "http",
                  "https"
                ]
              }
            }
          },
          "externalId": {
            "type": "string",
            "description": "An optional property to use for storing an ID for the location that is manages by some external system",
            "example": "A short-sized string",
            "minLength": 0,
            "maxLength": 100,
            "x-convert": {
              "trim": true
            }
          },
          "name": {
            "type": "string",
            "description": "Name",
            "example": "A short-sized string",
            "nullable": true,
            "minLength": 0,
            "maxLength": 100,
            "x-convert": {
              "trim": true
            }
          },
          "publicStyleUrl": {
            "type": "string",
            "description": "Custom app stylesheet URL",
            "example": "https://test.com/test",
            "nullable": true,
            "x-format": {
              "uri": {
                "scheme": [
                  "http",
                  "https"
                ]
              }
            }
          },
          "shortName": {
            "type": "string",
            "description": "Short name for use in URLs",
            "example": "shortname",
            "maxLength": 30,
            "pattern": "^[a-z0-9-]{3,20}[0-9]{0,10}$",
            "x-convert": {
              "case": "lower",
              "trim": true
            }
          },
          "id": {
            "type": "string",
            "description": "Identifier of location",
            "example": "FejxZ0WWpXTjzIScVEq0",
            "pattern": "^[a-zA-Z0-9]{20}$",
            "x-convert": {
              "trim": true
            }
          },
          "timezone": {
            "type": "string",
            "description": "Timezone in xxx/yyy format",
            "example": "A short-sized string",
            "minLength": 0,
            "maxLength": 30,
            "x-convert": {
              "trim": true
            }
          },
          "coordinates": {
            "$ref": "#/components/schemas/coordinates"
          },
          "created": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time of creation",
            "example": "2020-01-01T17:00:00.000Z"
          },
          "updated": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time of last update",
            "example": "2020-01-01T17:00:00.000Z"
          },
          "createdBy": {
            "type": "string",
            "description": "Identifier of creator",
            "example": "CX66OjfGV7aFJoAhDq7p0b6PH2M2",
            "pattern": "^[a-zA-Z0-9-:]{8,36}$",
            "x-convert": {
              "trim": true
            }
          },
          "updatedBy": {
            "type": "string",
            "description": "Identifier of last updater",
            "example": "CX66OjfGV7aFJoAhDq7p0b6PH2M2",
            "pattern": "^[a-zA-Z0-9-:]{8,36}$",
            "x-convert": {
              "trim": true
            }
          }
        }
      },
      "PaginatedLocationsResults": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/LocationResponse"
        }
      },
      "PaginatedLocationsResponse": {
        "type": "object",
        "properties": {
          "results": {
            "$ref": "#/components/schemas/PaginatedLocationsResults"
          },
          "limit": {
            "type": "integer",
            "description": "Max number of results",
            "default": 20,
            "minimum": 1,
            "maximum": 100
          },
          "startAt": {
            "type": "string",
            "description": "Identifier(s) or value(s) to paginate results (comma-separated)"
          },
          "endAt": {
            "type": "string",
            "description": "Identifier(s) or value(s) to paginate results (comma-separated)"
          }
        }
      }
    }
  },
  "paths": {
    "/locations": {
      "get": {
        "summary": "List locations",
        "operationId": "getLocations",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "description": "Max number of results",
              "default": 20,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Max number of results"
          },
          {
            "name": "startAfter",
            "in": "query",
            "schema": {
              "type": "string",
              "description": "Identifier(s) or value(s) to paginate results (comma-separated)"
            },
            "description": "Identifier(s) or value(s) to paginate results (comma-separated)"
          },
          {
            "name": "desc",
            "in": "query",
            "schema": {
              "type": "boolean",
              "description": "Show result in descending order",
              "example": true
            },
            "description": "Show result in descending order"
          },
          {
            "name": "externalId",
            "in": "query",
            "schema": {
              "type": "string",
              "description": "External identifier, optionally provided by client",
              "example": "A short-sized string",
              "nullable": true,
              "minLength": 0,
              "maxLength": 100,
              "x-convert": {
                "trim": true
              }
            },
            "description": "External identifier, optionally provided by client"
          },
          {
            "name": "countryCode",
            "in": "query",
            "schema": {
              "type": "string",
              "description": "Country code",
              "example": "US",
              "pattern": "^[A-Z]{2}$",
              "x-convert": {
                "case": "upper",
                "trim": true
              }
            },
            "description": "Country code"
          }
        ],
        "tags": [
          "Locations"
        ],
        "responses": {
          "200": {
            "description": "Successful",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedLocationsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          },
          "429": {
            "description": "Too Many Requests"
          }
        }
      }
    }
  },
  "x-alt-definitions": {
    "string": {
      "type": "array",
      "items": {
        "anyOf": [
          {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "boolean"
              },
              {
                "type": "string",
                "nullable": true
              }
            ]
          },
          {
            "type": "string"
          }
        ]
      }
    },
    "locationIds": {
      "type": "array",
      "description": "Location identifiers",
      "example": "0bNUpoiBT1PoOZogGLeq",
      "x-constraint": {
        "unique": true,
        "single": true
      },
      "items": {
        "type": "string",
        "description": "Unique identifier",
        "example": "FejxZ0WWpXTjzIScVEq0",
        "pattern": "^[a-zA-Z0-9]{20}$",
        "x-convert": {
          "trim": true
        }
      }
    },
    "waitDurationQuantiles": {
      "type": "array",
      "items": {
        "type": "number",
        "description": "Zero or positive decimal",
        "example": 0.5,
        "minimum": 0
      }
    },
    "serveDurationQuantiles": {
      "type": "array",
      "items": {
        "type": "number",
        "description": "Zero or positive decimal",
        "example": 0.5,
        "minimum": 0
      }
    },
    "numWaitlistedByDayOfWeek": {
      "type": "array",
      "items": {
        "type": "integer",
        "description": "Zero or positive integer",
        "example": 2,
        "minimum": 0
      }
    },
    "numBookedByDayOfWeek": {
      "type": "array",
      "items": {
        "type": "integer",
        "description": "Zero or positive integer",
        "example": 2,
        "minimum": 0
      }
    },
    "numServedByDayOfWeek": {
      "type": "array",
      "items": {
        "type": "integer",
        "description": "Zero or positive integer",
        "example": 2,
        "minimum": 0
      }
    },
    "numNoShowedByDayOfWeek": {
      "type": "array",
      "items": {
        "type": "integer",
        "description": "Zero or positive integer",
        "example": 2,
        "minimum": 0
      }
    },
    "numWaitlistedByHourOfDay": {
      "type": "array",
      "items": {
        "type": "integer",
        "description": "Zero or positive integer",
        "example": 2,
        "minimum": 0
      }
    },
    "numBookedByHourOfDay": {
      "type": "array",
      "items": {
        "type": "integer",
        "description": "Zero or positive integer",
        "example": 2,
        "minimum": 0
      }
    },
    "numServedByHourOfDay": {
      "type": "array",
      "items": {
        "type": "integer",
        "description": "Zero or positive integer",
        "example": 2,
        "minimum": 0
      }
    },
    "numNoShowedByHourOfDay": {
      "type": "array",
      "items": {
        "type": "integer",
        "description": "Zero or positive integer",
        "example": 2,
        "minimum": 0
      }
    },
    "VisitAnalyticsStats": {
      "type": "object",
      "properties": {
        "numVisits": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "numWaitlisted": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "numBookingsMade": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "numBookings": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "numNoShowed": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "numServed": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "numCompleted": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "numCancelled": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "numRemoved": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "numCheckIns": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "numUniqueCustomers": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "numCustomers": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "serveRatio": {
          "type": "number",
          "description": "Zero or positive decimal",
          "example": 0.5,
          "minimum": 0
        },
        "cancelRatio": {
          "type": "number",
          "description": "Zero or positive decimal",
          "example": 0.5,
          "minimum": 0
        },
        "avgPartySize": {
          "type": "number",
          "description": "Zero or positive decimal",
          "example": 0.5,
          "minimum": 0
        },
        "avgWaitDuration": {
          "type": "number",
          "description": "Zero or positive decimal",
          "example": 0.5,
          "minimum": 0
        },
        "avgServeDuration": {
          "type": "number",
          "description": "Zero or positive decimal",
          "example": 0.5,
          "minimum": 0
        },
        "waitDurationQuantiles": {
          "$ref": "#/x-alt-definitions/waitDurationQuantiles"
        },
        "serveDurationQuantiles": {
          "$ref": "#/x-alt-definitions/serveDurationQuantiles"
        },
        "numWaitlistedByDayOfWeek": {
          "$ref": "#/x-alt-definitions/numWaitlistedByDayOfWeek"
        },
        "numBookedByDayOfWeek": {
          "$ref": "#/x-alt-definitions/numBookedByDayOfWeek"
        },
        "numServedByDayOfWeek": {
          "$ref": "#/x-alt-definitions/numServedByDayOfWeek"
        },
        "numNoShowedByDayOfWeek": {
          "$ref": "#/x-alt-definitions/numNoShowedByDayOfWeek"
        },
        "numWaitlistedByHourOfDay": {
          "$ref": "#/x-alt-definitions/numWaitlistedByHourOfDay"
        },
        "numBookedByHourOfDay": {
          "$ref": "#/x-alt-definitions/numBookedByHourOfDay"
        },
        "numServedByHourOfDay": {
          "$ref": "#/x-alt-definitions/numServedByHourOfDay"
        },
        "numNoShowedByHourOfDay": {
          "$ref": "#/x-alt-definitions/numNoShowedByHourOfDay"
        }
      }
    },
    "VisitAnalyticsGroupBy": {
      "type": "object",
      "properties": {
        "numVisits": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "numWaitlisted": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "numBookingsMade": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "numBookings": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "numNoShowed": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "numServed": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "numCompleted": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "numCancelled": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "numRemoved": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "numCheckIns": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "numUniqueCustomers": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "numCustomers": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "serveRatio": {
          "type": "number",
          "description": "Zero or positive decimal",
          "example": 0.5,
          "minimum": 0
        },
        "cancelRatio": {
          "type": "number",
          "description": "Zero or positive decimal",
          "example": 0.5,
          "minimum": 0
        },
        "avgPartySize": {
          "type": "number",
          "description": "Zero or positive decimal",
          "example": 0.5,
          "minimum": 0
        },
        "avgWaitDuration": {
          "type": "number",
          "description": "Zero or positive decimal",
          "example": 0.5,
          "minimum": 0
        },
        "avgServeDuration": {
          "type": "number",
          "description": "Zero or positive decimal",
          "example": 0.5,
          "minimum": 0
        },
        "waitDurationQuantiles": {
          "$ref": "#/x-alt-definitions/waitDurationQuantiles"
        },
        "serveDurationQuantiles": {
          "$ref": "#/x-alt-definitions/serveDurationQuantiles"
        },
        "numWaitlistedByDayOfWeek": {
          "$ref": "#/x-alt-definitions/numWaitlistedByDayOfWeek"
        },
        "numBookedByDayOfWeek": {
          "$ref": "#/x-alt-definitions/numBookedByDayOfWeek"
        },
        "numServedByDayOfWeek": {
          "$ref": "#/x-alt-definitions/numServedByDayOfWeek"
        },
        "numNoShowedByDayOfWeek": {
          "$ref": "#/x-alt-definitions/numNoShowedByDayOfWeek"
        },
        "numWaitlistedByHourOfDay": {
          "$ref": "#/x-alt-definitions/numWaitlistedByHourOfDay"
        },
        "numBookedByHourOfDay": {
          "$ref": "#/x-alt-definitions/numBookedByHourOfDay"
        },
        "numServedByHourOfDay": {
          "$ref": "#/x-alt-definitions/numServedByHourOfDay"
        },
        "numNoShowedByHourOfDay": {
          "$ref": "#/x-alt-definitions/numNoShowedByHourOfDay"
        },
        "id": {
          "type": "string",
          "description": "Unique identifier",
          "example": "FejxZ0WWpXTjzIScVEq0",
          "pattern": "^[a-zA-Z0-9]{20}$",
          "x-convert": {
            "trim": true
          }
        },
        "name": {
          "type": "string",
          "description": "Name",
          "example": "A short-sized string",
          "nullable": true,
          "minLength": 0,
          "maxLength": 100,
          "x-convert": {
            "trim": true
          }
        },
        "categoryId": {
          "type": "string",
          "description": "Unique identifier",
          "example": "FejxZ0WWpXTjzIScVEq0",
          "pattern": "^[a-zA-Z0-9]{20}$",
          "x-convert": {
            "trim": true
          }
        },
        "categoryName": {
          "type": "string",
          "description": "Name",
          "example": "A short-sized string",
          "nullable": true,
          "minLength": 0,
          "maxLength": 100,
          "x-convert": {
            "trim": true
          }
        }
      }
    },
    "locations": {
      "type": "array",
      "items": {
        "$ref": "#/x-alt-definitions/VisitAnalyticsGroupBy"
      }
    },
    "resources": {
      "type": "array",
      "items": {
        "$ref": "#/x-alt-definitions/VisitAnalyticsGroupBy"
      }
    },
    "services": {
      "type": "array",
      "items": {
        "$ref": "#/x-alt-definitions/VisitAnalyticsGroupBy"
      }
    },
    "dataFields": {
      "type": "array",
      "items": {
        "$ref": "#/x-alt-definitions/VisitAnalyticsGroupBy"
      }
    },
    "partySizes": {
      "type": "array",
      "items": {
        "$ref": "#/x-alt-definitions/VisitAnalyticsGroupBy"
      }
    },
    "users": {
      "type": "array",
      "items": {
        "$ref": "#/x-alt-definitions/VisitAnalyticsGroupBy"
      }
    },
    "VisitAnalyticsResponse": {
      "type": "object",
      "properties": {
        "locationIds": {
          "$ref": "#/x-alt-definitions/locationIds"
        },
        "fromDate": {
          "type": "string",
          "format": "date-time",
          "description": "Date in ISO-8601 format",
          "example": "2020-01-01T17:00:00.000Z"
        },
        "toDate": {
          "type": "string",
          "format": "date-time",
          "description": "Date in ISO-8601 format",
          "example": "2020-01-01T17:00:00.000Z"
        },
        "timezone": {
          "type": "string",
          "description": "Timezone in xxx/yyy format",
          "example": "A short-sized string",
          "minLength": 0,
          "maxLength": 30,
          "x-convert": {
            "trim": true
          }
        },
        "overall": {
          "$ref": "#/x-alt-definitions/VisitAnalyticsStats"
        },
        "locations": {
          "$ref": "#/x-alt-definitions/locations"
        },
        "resources": {
          "$ref": "#/x-alt-definitions/resources"
        },
        "services": {
          "$ref": "#/x-alt-definitions/services"
        },
        "dataFields": {
          "$ref": "#/x-alt-definitions/dataFields"
        },
        "partySizes": {
          "$ref": "#/x-alt-definitions/partySizes"
        },
        "users": {
          "$ref": "#/x-alt-definitions/users"
        }
      },
      "required": [
        "locationIds",
        "fromDate",
        "toDate",
        "timezone"
      ]
    },
    "MonthlyVisitAnalyticsPeriod": {
      "type": "object",
      "properties": {
        "period": {
          "type": "string",
          "description": "Year and month in YYYY-MM format",
          "example": "2020-01",
          "pattern": "^[0-9]{4}-(1[0-2]|0[1-9])$",
          "x-convert": {
            "trim": true
          }
        },
        "businessName": {
          "type": "string",
          "description": "Name",
          "example": "A short-sized string",
          "nullable": true,
          "minLength": 0,
          "maxLength": 100,
          "x-convert": {
            "trim": true
          }
        },
        "accountId": {
          "type": "string",
          "description": "Account identifier",
          "example": "FejxZ0WWpXTjzIScVEq0",
          "pattern": "^[a-zA-Z0-9]{20}$",
          "x-convert": {
            "trim": true
          }
        },
        "locationName": {
          "type": "string",
          "description": "Name",
          "example": "A short-sized string",
          "nullable": true,
          "minLength": 0,
          "maxLength": 100,
          "x-convert": {
            "trim": true
          }
        },
        "locationShortName": {
          "type": "string",
          "description": "Short name for use in URLs",
          "example": "shortname",
          "maxLength": 30,
          "pattern": "^[a-z0-9-]{3,20}[0-9]{0,10}$",
          "x-convert": {
            "case": "lower",
            "trim": true
          }
        },
        "locationId": {
          "type": "string",
          "description": "Identifier of location",
          "example": "FejxZ0WWpXTjzIScVEq0",
          "pattern": "^[a-zA-Z0-9]{20}$",
          "x-convert": {
            "trim": true
          }
        },
        "numVisits": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "numBookingsMade": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "numBookings": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "servedVisits": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "completedVisits": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "noShowedVisits": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "cancelledVisits": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "removedVisits": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "uniqueCustomers": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "numCustomers": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "serveRatio": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "cancelRatio": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "avgPartySize": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "avgWaitDuration": {
          "type": "number",
          "description": "Zero or positive decimal",
          "example": 0.5,
          "minimum": 0
        },
        "avgServeDuration": {
          "type": "number",
          "description": "Zero or positive decimal",
          "example": 0.5,
          "minimum": 0
        },
        "numSmsSent": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "numEmailSent": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        }
      }
    },
    "MonthlyVisitAnalyticsResponse": {
      "type": "array",
      "items": {
        "$ref": "#/x-alt-definitions/MonthlyVisitAnalyticsPeriod"
      }
    },
    "messageType": {
      "type": "string",
      "enum": [
        "BOOKING-ALERT",
        "WAITLIST-ALERT",
        "BOOKING-RESCHEDULED",
        "WAITLIST-RESCHEDULED",
        "BOOKING-CANCEL",
        "WAITLIST-CANCEL",
        "BOOKING-COMPLETE",
        "WAITLIST-COMPLETE",
        "BOOKING-FOLLOW-UP",
        "WAITLIST-FOLLOW-UP",
        "BOOKING-CONFIRM",
        "WAITLIST-CONFIRM",
        "WAITLIST-NEXT",
        "BOOKING-NO-SHOW",
        "WAITLIST-NO-SHOW",
        "BOOKING-REMINDER",
        "BOOKING-SERVE",
        "WAITLIST-SERVE",
        "BOOKING-REJECTED",
        "BOOKING-REQUESTED",
        "USER-BOOKING-ARRIVED",
        "USER-WAITLIST-ARRIVED",
        "USER-BOOKING-CANCEL",
        "USER-WAITLIST-CANCEL",
        "USER-BOOKING-COMPLETE",
        "USER-WAITLIST-COMPLETE",
        "USER-BOOKING-CONFIRM",
        "USER-BOOKING-WAITING",
        "USER-WAITLIST-CONFIRM",
        "USER-BOOKING-NOSHOW",
        "USER-WAITLIST-NOSHOW",
        "USER-BOOKING-REMOVE",
        "USER-WAITLIST-REMOVE",
        "USER-BOOKING-SERVE",
        "USER-WAITLIST-SERVE",
        "USER-BOOKING-ALERTED",
        "USER-WAITLIST-ALERTED",
        "USER-BOOKING-DELAYED",
        "USER-WAITLIST-DELAYED",
        "USER-BOOKING-CONFIRMED",
        "USER-WAITLIST-CONFIRMED",
        "USER-INCOMING-MESSAGE",
        "USER-BOOKING-RESCHEDULED",
        "USER-WAITLIST-RESCHEDULED",
        "USER-BOOKING-REQUESTED",
        "USER-SURVEY-ANSWERED"
      ]
    },
    "type": {
      "type": "string",
      "enum": [
        "FCM"
      ]
    },
    "Model1": {
      "type": "object",
      "properties": {
        "type": {
          "$ref": "#/x-alt-definitions/type"
        },
        "token": {
          "type": "string",
          "description": "FCM token or similar",
          "minLength": 1,
          "maxLength": 2000
        }
      },
      "required": [
        "type",
        "token"
      ]
    },
    "VisitMessagingTokens": {
      "type": "array",
      "description": "Tokens used for sending visit messages",
      "x-meta": {
        "publicDocsVisibility": false
      },
      "maxItems": 5,
      "items": {
        "$ref": "#/x-alt-definitions/Model1"
      }
    },
    "liveActivityToken": {
      "type": "object",
      "description": "Update token for customer live activity",
      "x-meta": {
        "publicDocsVisibility": false
      },
      "nullable": true,
      "properties": {
        "fcmToken": {
          "type": "string",
          "description": "FCM token or similar",
          "minLength": 1,
          "maxLength": 2000
        },
        "apnsToken": {
          "type": "string",
          "description": "FCM token or similar",
          "minLength": 1,
          "maxLength": 2000
        }
      }
    },
    "VisitServicesById": {
      "type": "object",
      "description": "Services of visit, ***deprecated*** use serviceIds instead",
      "nullable": true
    },
    "VisitResourcesById": {
      "type": "object",
      "description": "Resources of visit, ***deprecated*** use resourceIds instead",
      "nullable": true
    },
    "VisitDataFieldsById": {
      "type": "object",
      "description": "Data-fields of visit, ***deprecated*** use dataFields instead"
    },
    "serviceIds": {
      "type": "array",
      "description": "Service identifiers",
      "nullable": true,
      "x-constraint": {
        "unique": true,
        "single": true
      },
      "items": {
        "type": "string",
        "description": "Identifier of service",
        "example": "FejxZ0WWpXTjzIScVEq0",
        "pattern": "^[a-zA-Z0-9]{20}$",
        "x-convert": {
          "trim": true
        }
      }
    },
    "resourceIds": {
      "type": "array",
      "description": "Resource identifiers",
      "nullable": true,
      "x-constraint": {
        "unique": true,
        "single": true
      },
      "items": {
        "type": "string",
        "description": "Identifier of resource",
        "example": "FejxZ0WWpXTjzIScVEq0",
        "pattern": "^[a-zA-Z0-9]{20}$",
        "x-convert": {
          "trim": true
        }
      }
    },
    "values": {
      "type": "array",
      "maxItems": 20,
      "items": {
        "anyOf": [
          {
            "type": "string",
            "description": "Medium string",
            "example": "A medium-sized string",
            "minLength": 0,
            "maxLength": 500,
            "x-convert": {
              "trim": true
            }
          },
          {
            "type": "boolean",
            "nullable": true
          },
          {
            "type": "number",
            "nullable": true
          }
        ]
      }
    },
    "VisitDataField": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Unique identifier",
          "example": "FejxZ0WWpXTjzIScVEq0",
          "pattern": "^[a-zA-Z0-9]{20}$",
          "x-convert": {
            "trim": true
          }
        },
        "values": {
          "$ref": "#/x-alt-definitions/values"
        }
      },
      "required": [
        "id",
        "values"
      ]
    },
    "dataFields1": {
      "type": "array",
      "description": "Data-fields",
      "nullable": true,
      "items": {
        "$ref": "#/x-alt-definitions/VisitDataField"
      }
    },
    "state": {
      "type": "string",
      "description": "State of visit",
      "enum": [
        "PENDING",
        "DRAFT",
        "BOOKED",
        "WAITING",
        "SERVING",
        "COMPLETE"
      ],
      "x-convert": {
        "case": "upper"
      }
    },
    "Model2": {
      "type": "string",
      "description": "Tag associated with visit",
      "enum": [
        "NO-SHOW",
        "CANCELLED",
        "REMOVED",
        "ALERTED",
        "ARRIVED",
        "DELAYED",
        "CONFIRMED",
        "EXPIRED",
        "FLAGGED",
        "IMPORTED",
        "PRIORITIZED",
        "CAPACITY",
        "REJECTED"
      ],
      "x-convert": {
        "case": "upper"
      }
    },
    "VisitTags": {
      "type": "array",
      "description": "Optional tags associated with visit",
      "maxItems": 10,
      "x-constraint": {
        "unique": true
      },
      "items": {
        "$ref": "#/x-alt-definitions/Model2"
      }
    },
    "source": {
      "type": "string",
      "description": "Source where visit was created",
      "enum": [
        "WEB-APP",
        "IOS-APP",
        "ANDROID-APP",
        "PUBLIC",
        "KIOSK",
        "QR",
        "SMS",
        "EMAIL",
        "API",
        "RWG",
        "IMPORT",
        "IOS-APP-CLIP"
      ],
      "x-convert": {
        "case": "upper"
      }
    },
    "locale": {
      "type": "string",
      "description": "Locale in xx-YY format, where the first part is language and second country code",
      "example": "en-US",
      "enum": [
        "ca-AD",
        "ar-AE",
        "ps-AF",
        "tk-AF",
        "uz-AF",
        "en-AG",
        "en-AI",
        "sq-AL",
        "hy-AM",
        "pt-AO",
        "en-AQ",
        "ru-AQ",
        "gn-AR",
        "es-AR",
        "en-AS",
        "sm-AS",
        "de-AT",
        "en-AU",
        "nl-AW",
        "pa-AW",
        "sv-AX",
        "az-AZ",
        "bs-BA",
        "hr-BA",
        "sr-BA",
        "en-BB",
        "bn-BD",
        "de-BE",
        "fr-BE",
        "nl-BE",
        "fr-BF",
        "ff-BF",
        "bg-BG",
        "ar-BH",
        "fr-BI",
        "rn-BI",
        "fr-BJ",
        "fr-BL",
        "en-BM",
        "ms-BN",
        "ay-BO",
        "qu-BO",
        "es-BO",
        "nl-BQ",
        "pt-BR",
        "en-BS",
        "dz-BT",
        "nn-BV",
        "nb-BV",
        "no-BV",
        "en-BW",
        "tn-BW",
        "be-BY",
        "ru-BY",
        "en-BZ",
        "es-BZ",
        "en-CA",
        "fr-CA",
        "en-CC",
        "fr-CD",
        "kg-CD",
        "ln-CD",
        "lu-CD",
        "sw-CD",
        "fr-CF",
        "sg-CF",
        "fr-CG",
        "ln-CG",
        "de-CH",
        "fr-CH",
        "it-CH",
        "rm-CH",
        "fr-CI",
        "en-CK",
        "rar-CK",
        "es-CL",
        "en-CM",
        "fr-CM",
        "zh-CN",
        "es-CO",
        "es-CR",
        "es-CU",
        "pt-CV",
        "en-CW",
        "nl-CW",
        "pa-CW",
        "en-CX",
        "el-CY",
        "hy-CY",
        "tr-CY",
        "cs-CZ",
        "sk-CZ",
        "de-DE",
        "ar-DJ",
        "fr-DJ",
        "da-DK",
        "en-DM",
        "es-DO",
        "ar-DZ",
        "es-EC",
        "et-EE",
        "ar-EG",
        "es-EH",
        "aa-ER",
        "ar-ER",
        "byn-ER",
        "en-ER",
        "kun-ER",
        "nrb-ER",
        "ssy-ER",
        "tig-ER",
        "ti-ER",
        "ca-ES",
        "es-ES",
        "eu-ES",
        "am-ET",
        "fi-FI",
        "sv-FI",
        "en-FJ",
        "fj-FJ",
        "hif-FJ",
        "rtm-FJ",
        "en-FK",
        "en-FM",
        "fo-FO",
        "fr-FR",
        "fr-GA",
        "en-GB",
        "en-GD",
        "ka-GE",
        "fr-GF",
        "en-GG",
        "fr-GG",
        "en-GH",
        "en-GI",
        "kl-GL",
        "en-GM",
        "fr-GN",
        "ff-GN",
        "fr-GP",
        "fan-GQ",
        "fr-GQ",
        "pt-GQ",
        "es-GQ",
        "el-GR",
        "en-GS",
        "es-GT",
        "ch-GU",
        "en-GU",
        "es-GU",
        "pt-GW",
        "en-GY",
        "en-HK",
        "zh-HK",
        "en-HM",
        "es-HN",
        "hr-HR",
        "fr-HT",
        "ht-HT",
        "hu-HU",
        "id-ID",
        "en-IE",
        "ga-IE",
        "ar-IL",
        "he-IL",
        "en-IM",
        "gv-IM",
        "en-IN",
        "hi-IN",
        "en-IO",
        "ar-IQ",
        "ku-IQ",
        "fa-IR",
        "is-IS",
        "it-IT",
        "en-JE",
        "fr-JE",
        "en-JM",
        "ar-JO",
        "ja-JP",
        "en-KE",
        "sw-KE",
        "ky-KG",
        "ru-KG",
        "km-KH",
        "en-KI",
        "ar-KM",
        "fr-KM",
        "en-KN",
        "ko-KP",
        "ko-KR",
        "ar-KW",
        "en-KY",
        "kk-KZ",
        "ru-KZ",
        "lo-LA",
        "ar-LB",
        "fr-LB",
        "en-LC",
        "de-LI",
        "si-LK",
        "ta-LK",
        "en-LR",
        "en-LS",
        "st-LS",
        "lt-LT",
        "de-LU",
        "fr-LU",
        "lb-LU",
        "lv-LV",
        "ar-LY",
        "ar-MA",
        "fr-MC",
        "ro-MD",
        "bs-ME",
        "hr-ME",
        "sq-ME",
        "sr-ME",
        "en-MF",
        "fr-MF",
        "nl-MF",
        "fr-MG",
        "mg-MG",
        "en-MH",
        "mh-MH",
        "mk-MK",
        "fr-ML",
        "my-MM",
        "mn-MN",
        "pt-MO",
        "zh-MO",
        "ch-MP",
        "en-MP",
        "fr-MQ",
        "ar-MR",
        "en-MS",
        "en-MT",
        "mt-MT",
        "en-MU",
        "dv-MV",
        "en-MW",
        "ny-MW",
        "es-MX",
        "ms-MY",
        "pt-MZ",
        "af-NA",
        "en-NA",
        "fr-NC",
        "fr-NE",
        "en-NF",
        "en-NG",
        "es-NI",
        "nl-NL",
        "nn-NO",
        "nb-NO",
        "no-NO",
        "ne-NP",
        "en-NR",
        "na-NR",
        "en-NU",
        "en-NZ",
        "mi-NZ",
        "ar-OM",
        "es-PA",
        "es-PE",
        "fr-PF",
        "en-PG",
        "en-PH",
        "en-PK",
        "ur-PK",
        "pl-PL",
        "fr-PM",
        "en-PN",
        "en-PR",
        "es-PR",
        "ar-PS",
        "pt-PT",
        "en-PW",
        "gn-PY",
        "es-PY",
        "ar-QA",
        "fr-RE",
        "ro-RO",
        "sr-RS",
        "ru-RU",
        "en-RW",
        "fr-RW",
        "rw-RW",
        "ar-SA",
        "en-SB",
        "en-SC",
        "fr-SC",
        "ar-SD",
        "en-SD",
        "sv-SE",
        "en-SG",
        "ms-SG",
        "ta-SG",
        "zh-SG",
        "en-SH",
        "sl-SI",
        "no-SJ",
        "sk-SK",
        "en-SL",
        "it-SM",
        "fr-SN",
        "ar-SO",
        "so-SO",
        "nl-SR",
        "en-SS",
        "pt-ST",
        "es-SV",
        "en-SX",
        "nl-SX",
        "ar-SY",
        "en-SZ",
        "ss-SZ",
        "en-TC",
        "ar-TD",
        "fr-TD",
        "fr-TF",
        "fr-TG",
        "th-TH",
        "ru-TJ",
        "tg-TJ",
        "en-TK",
        "pt-TL",
        "ru-TM",
        "tk-TM",
        "ar-TN",
        "en-TO",
        "to-TO",
        "tr-TR",
        "en-TT",
        "en-TV",
        "zh-TW",
        "en-TZ",
        "sw-TZ",
        "uk-UA",
        "en-UG",
        "sw-UG",
        "en-UM",
        "en-US",
        "es-UY",
        "ru-UZ",
        "uz-UZ",
        "de-VA",
        "fr-VA",
        "it-VA",
        "la-VA",
        "en-VC",
        "es-VE",
        "en-VG",
        "en-VI",
        "vi-VN",
        "bi-VU",
        "en-VU",
        "fr-VU",
        "fr-WF",
        "en-WS",
        "sm-WS",
        "sq-XK",
        "sr-XK",
        "ar-YE",
        "fr-YT",
        "af-ZA",
        "en-ZA",
        "nr-ZA",
        "st-ZA",
        "ss-ZA",
        "tn-ZA",
        "ts-ZA",
        "ve-ZA",
        "xh-ZA",
        "zu-ZA",
        "en-ZM",
        "en-ZW",
        "nd-ZW",
        "sn-ZW"
      ]
    },
    "channel": {
      "type": "string",
      "description": "Message channel",
      "enum": [
        "EMAIL",
        "SMS",
        "APP"
      ],
      "x-convert": {
        "case": "upper",
        "trim": true
      }
    },
    "state1": {
      "type": "string",
      "description": "Current state of message",
      "enum": [
        "PENDING",
        "BLOCKED",
        "FAILED",
        "DELIVERED",
        "UNCONFIRMED",
        "RECEIVED"
      ],
      "x-convert": {
        "case": "upper"
      }
    },
    "lastOutgoing": {
      "type": "object",
      "nullable": true,
      "properties": {
        "messageId": {
          "type": "string",
          "description": "Unique identifier",
          "example": "FejxZ0WWpXTjzIScVEq0",
          "pattern": "^[a-zA-Z0-9]{20}$",
          "x-convert": {
            "trim": true
          }
        },
        "channel": {
          "$ref": "#/x-alt-definitions/channel"
        },
        "body": {
          "type": "string",
          "description": "Body of message",
          "example": "A message body",
          "nullable": true,
          "minLength": 0,
          "maxLength": 2000,
          "x-convert": {
            "trim": true
          }
        },
        "state": {
          "$ref": "#/x-alt-definitions/state1"
        },
        "type": {
          "type": "string",
          "description": "Type of message",
          "example": "A short-sized string",
          "minLength": 0,
          "maxLength": 100,
          "x-convert": {
            "trim": true
          }
        },
        "errorCode": {
          "type": "string",
          "description": "Name",
          "example": "A short-sized string",
          "nullable": true,
          "minLength": 0,
          "maxLength": 100,
          "x-convert": {
            "trim": true
          }
        },
        "errorMessage": {
          "type": "string",
          "description": "Name",
          "example": "A short-sized string",
          "nullable": true,
          "minLength": 0,
          "maxLength": 100,
          "x-convert": {
            "trim": true
          }
        },
        "created": {
          "type": "string",
          "format": "date-time",
          "description": "Date and time of creation",
          "example": "2020-01-01T17:00:00.000Z"
        }
      }
    },
    "lastIncoming": {
      "type": "object",
      "nullable": true,
      "properties": {
        "messageId": {
          "type": "string",
          "description": "Unique identifier",
          "example": "FejxZ0WWpXTjzIScVEq0",
          "pattern": "^[a-zA-Z0-9]{20}$",
          "x-convert": {
            "trim": true
          }
        },
        "channel": {
          "$ref": "#/x-alt-definitions/channel"
        },
        "body": {
          "type": "string",
          "description": "Body of message",
          "example": "A message body",
          "nullable": true,
          "minLength": 0,
          "maxLength": 2000,
          "x-convert": {
            "trim": true
          }
        },
        "created": {
          "type": "string",
          "format": "date-time",
          "description": "Date and time of creation",
          "example": "2020-01-01T17:00:00.000Z"
        }
      }
    },
    "numOutgoing": {
      "type": "object",
      "properties": {
        "SMS": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "EMAIL": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        }
      }
    },
    "numIncoming": {
      "type": "object",
      "properties": {
        "SMS": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "EMAIL": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        }
      }
    },
    "numAlerts": {
      "type": "object",
      "properties": {
        "SMS": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        },
        "EMAIL": {
          "type": "integer",
          "description": "Zero or positive integer",
          "example": 2,
          "minimum": 0
        }
      }
    },
    "messageInfo": {
      "type": "object",
      "properties": {
        "lastOutgoing": {
          "$ref": "#/x-alt-definitions/lastOutgoing"
        },
        "lastIncoming": {
          "$ref": "#/x-alt-definitions/lastIncoming"
        },
        "numOutgoing": {
          "$ref": "#/x-alt-definitions/numOutgoing"
        },
        "numIncoming": {
          "$ref": "#/x-alt-definitions/numIncoming"
        },
        "numAlerts": {
          "$ref": "#/x-alt-definitions/numAlerts"
        }
      }
    },
    "Model3": {
      "type": "string",
      "description": "Tag associated with visit",
      "enum": [
        "NO-SHOW",
        "CANCELLED",
        "REMOVED",
        "ALERTED",
        "ARRIVED",
        "DELAYED",
        "CONFIRMED",
        "EXPIRED",
        "FLAGGED",
        "IMPORTED",
        "PRIORITIZED",
        "CAPACITY",
        "REJECTED"
      ],
      "x-convert": {
        "case": "upper"
      }
    },
    "VisitTags1": {
      "type": "array",
      "description": "Adds specified tags to existing tags",
      "maxItems": 10,
      "x-constraint": {
        "unique": true,
        "single": true
      },
      "items": {
        "$ref": "#/x-alt-definitions/Model3"
      }
    },
    "Model4": {
      "type": "string",
      "description": "Tag associated with visit",
      "enum": [
        "NO-SHOW",
        "CANCELLED",
        "REMOVED",
        "ALERTED",
        "ARRIVED",
        "DELAYED",
        "CONFIRMED",
        "EXPIRED",
        "FLAGGED",
        "IMPORTED",
        "PRIORITIZED",
        "CAPACITY",
        "REJECTED"
      ],
      "x-convert": {
        "case": "upper"
      }
    },
    "VisitTags2": {
      "type": "array",
      "description": "Removes specified tags from existing tags",
      "maxItems": 10,
      "x-constraint": {
        "unique": true,
        "single": true
      },
      "items": {
        "$ref": "#/x-alt-definitions/Model4"
      }
    },
    "metadata": {
      "type": "object",
      "description": "Store metadata about your objects. You can store 20 keys with max length 40. Values can be strings of max length 500.",
      "nullable": true
    },
    "orderValue": {
      "type": "object",
      "description": "The order value assigned to a visit",
      "properties": {
        "value": {
          "type": "number",
          "description": "Order value",
          "example": 59,
          "minimum": 0
        },
        "currency": {
          "type": "string",
          "description": "Currency in ISO 4217 format",
          "example": "USD",
          "minLength": 3,
          "maxLength": 3,
          "x-convert": {
            "case": "upper",
            "trim": true
          }
        }
      }
    },
    "CreateVisitPayload": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Identifier of visit",
          "example": "FejxZ0WWpXTjzIScVEq0",
          "pattern": "^[a-zA-Z0-9]{20}$",
          "x-convert": {
            "trim": true
          }
        },
        "locationId": {
          "type": "string",
          "description": "Identifier of location",
          "example": "FejxZ0WWpXTjzIScVEq0",
          "pattern": "^[a-zA-Z0-9]{20}$",
          "x-convert": {
            "trim": true
          }
        },
        "customerId": {
          "type": "string",
          "description": "Identifier of customer, automatically derived from visitor contact information if not provided.",
          "example": "qbysnjcWCNLyOkmC6K4QMI",
          "pattern": "^[a-zA-Z0-9]{22}$",
          "x-convert": {
            "trim": true
          }
        },
        "externalCustomerId": {
          "type": "string",
          "description": "External customer identifier, optionally provided by client. Will take priority over other contact info when deriving customerId",
          "example": "A short-sized string",
          "nullable": true,
          "minLength": 0,
          "maxLength": 100,
          "x-convert": {
            "trim": true
          }
        },
        "name": {
          "type": "string",
          "description": "Name of customer",
          "example": "A short-sized string",
          "nullable": true,
          "minLength": 0,
          "maxLength": 100,
          "x-convert": {
            "trim": true
          }
        },
        "firstName": {
          "type": "string",
          "description": "First name of customer",
          "example": "A short-sized string",
          "nullable": true,
          "minLength": 0,
          "maxLength": 100,
          "x-convert": {
            "trim": true
          }
        },
        "lastName": {
          "type": "string",
          "description": "Last name of customer",
          "example": "A short-sized string",
          "nullable": true,
          "minLength": 0,
          "maxLength": 100,
          "x-convert": {
            "trim": true
          }
        },
        "phone": {
          "type": "string",
          "description": "Phone number in E.164 format",
          "example": "+16005551234",
          "nullable": true,
          "x-convert": {
            "trim": true
          }
        },
        "email": {
          "type": "string",
          "description": "Email address",
          "example": "test@test.com",
          "nullable": true,
          "maxLength": 100,
          "x-format": {
            "email": true
          },
          "x-convert": {
            "case": "lower",
            "trim": true
          }
        },
        "addMessagingTokens": {
          "$ref": "#/x-alt-definitions/VisitMessagingTokens"
        },
        "removeMessagingTokens": {
          "$ref": "#/x-alt-definitions/VisitMessagingTokens"
        },
        "liveActivityToken": {
          "$ref": "#/x-alt-definitions/liveActivityToken"
        },
        "notes": {
          "type": "string",
          "description": "Optional notes - ***Deprecated*** please use notes on [customer/notes](#operation/getCustomersCustomeridNotes)",
          "example": "A long-sized string",
          "nullable": true,
          "minLength": 0,
          "maxLength": 1000,
          "x-convert": {
            "trim": true
          }
        },
        "services": {
          "$ref": "#/x-alt-definitions/VisitServicesById"
        },
        "resources": {
          "$ref": "#/x-alt-definitions/VisitResourcesById"
        },
        "fields": {
          "$ref": "#/x-alt-definitions/VisitDataFieldsById"
        },
        "sessionSeriesId": {
          "type": "string",
          "description": "Unique identifier",
          "example": "FejxZ0WWpXTjzIScVEq0",
          "nullable": true,
          "pattern": "^[a-zA-Z0-9]{20}$",
          "x-convert": {
            "trim": true
          }
        },
        "serviceIds": {
          "$ref": "#/x-alt-definitions/serviceIds"
        },
        "resourceIds": {
          "$ref": "#/x-alt-definitions/resourceIds"
        },
        "dataFields": {
          "$ref": "#/x-alt-definitions/dataFields1"
        },
        "partySize": {
          "type": "integer",
          "description": "Party size",
          "example": 5,
          "minimum": 1,
          "maximum": 100
        },
        "quotedWaitDuration": {
          "type": "integer",
          "description": "Wait duration estimated by client",
          "example": 900,
          "minimum": 0
        },
        "position": {
          "type": "integer",
          "description": "Current position in line",
          "example": 1,
          "nullable": true,
          "minimum": 1
        },
        "state": {
          "$ref": "#/x-alt-definitions/state"
        },
        "tags": {
          "$ref": "#/x-alt-definitions/VisitTags"
        },
        "date": {
          "type": "string",
          "description": "Date and time of booking, must be in YYYY-MM-DDThh:mm format",
          "example": "2020-01-01T15:00",
          "nullable": true,
          "x-convert": {
            "trim": true
          }
        },
        "duration": {
          "type": "integer",
          "description": "Duration of booking in seconds",
          "example": 900,
          "nullable": true,
          "minimum": 0,
          "maximum": 86400
        },
        "isBlock": {
          "type": "boolean",
          "description": "Flag to indicate if booking visit is used to block out calendar",
          "example": true
        },
        "source": {
          "$ref": "#/x-alt-definitions/source"
        },
        "locale": {
          "$ref": "#/x-alt-definitions/locale"
        },
        "policyConsent": {
          "type": "boolean",
          "description": "Flag to indicate if policy and terms has been accepted",
          "example": true
        },
        "messageInfo": {
          "$ref": "#/x-alt-definitions/messageInfo"
        },
        "addTags": {
          "$ref": "#/x-alt-definitions/VisitTags1"
        },
        "removeTags": {
          "$ref": "#/x-alt-definitions/VisitTags2"
        },
        "metadata": {
          "$ref": "#/x-alt-definitions/metadata"
        },
        "orderValue": {
          "$ref": "#/x-alt-definitions/orderValue"
        },
        "pluginData": {
          "type": "string",
          "x-meta": {}
        }
      }
    },
    "VisitsPayload": {
      "type": "array",
      "minItems": 1,
      "maxItems": 200,
      "x-constraint": {
        "unique": {
          "ignoreUndefined": true
        }
      },
      "items": {
        "$ref": "#/x-alt-definitions/CreateVisitPayload"
      }
    },
    "locationIds1": {
      "type": "string",
      "enum": [
        "ALL"
      ]
    },
    "Model5": {
      "type": "object"
    },
    "Model6": {
      "type": "array",
      "items": {
        "$ref": "#/x-alt-definitions/Model5"
      }
    }
  }
}
```