---
updatedAt: 2025-09-24T02:01:03.000Z
agentTools:
  projectIndex: https://developers.waitwhile.com/llms.txt
---

# Create a user invite

# 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": "Invites",
      "description": "\nInvites contain operations for retrieving and updating account invites. Invites are used to invite new users to the account.\n            "
    }
  ],
  "openapi": "3.0.0",
  "components": {
    "securitySchemes": {
      "api_key": {
        "type": "apiKey",
        "name": "apikey",
        "in": "header"
      }
    },
    "schemas": {
      "locationIds2": {
        "type": "array",
        "description": "Location identifiers",
        "example": "0bNUpoiBT1PoOZogGLeq",
        "minItems": 1,
        "x-constraint": {
          "unique": true,
          "single": true
        },
        "items": {
          "type": "string",
          "description": "Unique identifier",
          "example": "FejxZ0WWpXTjzIScVEq0",
          "pattern": "^[a-zA-Z0-9]{20}$",
          "x-convert": {
            "trim": true
          }
        }
      },
      "roles1": {
        "type": "array",
        "description": "User roles for invite",
        "minItems": 1,
        "maxItems": 10,
        "x-constraint": {
          "unique": true
        },
        "items": {
          "type": "string",
          "description": "User role",
          "pattern": "^[A-Z][A-Z0-9-]{1,29}$",
          "x-convert": {
            "case": "upper"
          }
        }
      },
      "InviteResponse": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of user",
            "example": "A short-sized string",
            "minLength": 3,
            "maxLength": 100,
            "x-convert": {
              "trim": true
            }
          },
          "email": {
            "type": "string",
            "description": "Email address",
            "example": "test@test.com",
            "maxLength": 100,
            "x-format": {
              "email": true
            },
            "x-convert": {
              "case": "lower",
              "trim": true
            }
          },
          "phone": {
            "type": "string",
            "description": "Phone number in E.164 format",
            "example": "+16005551234",
            "nullable": true,
            "x-convert": {
              "trim": true
            }
          },
          "defaultLocationId": {
            "type": "string",
            "description": "Identifier of location",
            "example": "FejxZ0WWpXTjzIScVEq0",
            "nullable": true,
            "pattern": "^[a-zA-Z0-9]{20}$",
            "x-convert": {
              "trim": true
            }
          },
          "locationIds": {
            "$ref": "#/components/schemas/locationIds2"
          },
          "roles": {
            "$ref": "#/components/schemas/roles1"
          },
          "resourceId": {
            "type": "string",
            "description": "Identifier of resource",
            "example": "FejxZ0WWpXTjzIScVEq0",
            "nullable": true,
            "pattern": "^[a-zA-Z0-9]{20}$",
            "x-convert": {
              "trim": true
            }
          },
          "id": {
            "type": "string",
            "description": "Identifier of user",
            "example": "CX66OjfGV7aFJoAhDq7p0b6PH2M2",
            "pattern": "^[a-zA-Z0-9-:]{8,36}$",
            "x-convert": {
              "trim": true
            }
          },
          "businessName": {
            "type": "string",
            "description": "Name of company or organization",
            "example": "A short-sized string",
            "minLength": 1,
            "maxLength": 100,
            "x-convert": {
              "trim": true
            }
          },
          "accountId": {
            "type": "string",
            "description": "Account identifier",
            "example": "FejxZ0WWpXTjzIScVEq0",
            "pattern": "^[a-zA-Z0-9]{20}$",
            "x-convert": {
              "trim": true
            }
          },
          "created": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time of creation",
            "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
            }
          }
        },
        "required": [
          "name",
          "email"
        ]
      },
      "locationIds10": {
        "type": "array",
        "description": "Location identifiers",
        "example": "0bNUpoiBT1PoOZogGLeq",
        "minItems": 1,
        "x-constraint": {
          "unique": true,
          "single": true
        },
        "items": {
          "type": "string",
          "description": "Unique identifier",
          "example": "FejxZ0WWpXTjzIScVEq0",
          "pattern": "^[a-zA-Z0-9]{20}$",
          "x-convert": {
            "trim": true
          }
        }
      },
      "roles2": {
        "type": "array",
        "description": "User roles for invite",
        "minItems": 1,
        "maxItems": 10,
        "x-constraint": {
          "unique": true
        },
        "items": {
          "type": "string",
          "description": "User role",
          "pattern": "^[A-Z][A-Z0-9-]{1,29}$",
          "x-convert": {
            "case": "upper"
          }
        }
      },
      "CreateInvitePayload": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of user",
            "example": "A short-sized string",
            "minLength": 3,
            "maxLength": 100,
            "x-convert": {
              "trim": true
            }
          },
          "email": {
            "type": "string",
            "description": "Email address",
            "example": "test@test.com",
            "maxLength": 100,
            "x-format": {
              "email": true
            },
            "x-convert": {
              "case": "lower",
              "trim": true
            }
          },
          "phone": {
            "type": "string",
            "description": "Phone number in E.164 format",
            "example": "+16005551234",
            "nullable": true,
            "x-convert": {
              "trim": true
            }
          },
          "defaultLocationId": {
            "type": "string",
            "description": "Identifier of location",
            "example": "FejxZ0WWpXTjzIScVEq0",
            "nullable": true,
            "pattern": "^[a-zA-Z0-9]{20}$",
            "x-convert": {
              "trim": true
            }
          },
          "locationIds": {
            "$ref": "#/components/schemas/locationIds10"
          },
          "roles": {
            "$ref": "#/components/schemas/roles2"
          },
          "resourceId": {
            "type": "string",
            "description": "Identifier of resource",
            "example": "FejxZ0WWpXTjzIScVEq0",
            "nullable": true,
            "pattern": "^[a-zA-Z0-9]{20}$",
            "x-convert": {
              "trim": true
            }
          }
        },
        "required": [
          "name",
          "email"
        ]
      }
    }
  },
  "paths": {
    "/invites": {
      "post": {
        "summary": "Create a user invite",
        "operationId": "postInvites",
        "parameters": [
          {
            "name": "sendInvitationEmail",
            "in": "query",
            "schema": {
              "type": "boolean",
              "description": "Boolean flag",
              "example": true
            },
            "description": "Boolean flag"
          }
        ],
        "tags": [
          "Invites"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateInvitePayload"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InviteResponse"
                }
              }
            }
          },
          "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"
      }
    }
  }
}
```