Skip to content
Sections

Reservations & waitlist

Get the public booking projection

GET/public/reservations/{publicHandle}/config

Returns the published venue identity, booking policy, service periods, and guest-facing configuration allowed for the requesting origin. This discovery operation is intentionally public and does not require authentication.

Authentication

x-hallify-widget-context: <HALLIFY_STOREFRONT_WIDGET_CONTEXT>

Short-lived server-authenticated widget presentation proof. It binds the configured frame origin to the exact verified parent binding and connection authority. Widget new demand requires this proof; existing native capabilities remain separate and retain their original authority and deadlines.

Connection guide

Parameters

publicHandlePath · Required

Opaque public channel handle used to resolve one venue’s published guest-facing configuration; it is not a credential.

string
Full definition
{
  "type": "string",
  "example": "example"
}
originHeader · Optional

Actual browser request Origin used for current presentation authorization. New demand and Storefront-bound continuations require it. Canonical Hallify browser requests use the origin configured by HALLIFY_PUBLIC_APP_URL. This header provides request context and does not authenticate a caller or replace the applicable guest credential.

string · uri
Full definition
{
  "type": "string",
  "format": "uri",
  "maxLength": 2048,
  "example": "https://example.test/resource"
}
x-hallify-connection-idHeader · Optional

Optional nonsecret connection locator for initial public channel resolution. It never grants authority or replaces an issued grant snapshot.

string · uuid
Full definition
{
  "type": "string",
  "format": "uuid",
  "minLength": 36,
  "maxLength": 36,
  "example": "9b6163a8-afea-4877-818b-8e2ae28a2845"
}

Responses

200Returns the public reservation channel configuration without private venue data.
ReservationPublicConfigResultDto
Full definition
{
  "$ref": "#/components/schemas/ReservationPublicConfigResultDto"
}
Example response · 200 · application/json
{
  "publicHandle": "example",
  "publicChannelId": "9bee613d-3322-4a03-8b9f-8a6259984eee",
  "venue": {
    "id": "fbc6db41-f1c2-4f74-862d-210bd28ee2a0",
    "name": "Example name",
    "timeZone": "Asia/Tbilisi"
  },
  "termsVersion": "example",
  "privacyVersion": "example",
  "waitlistStatus": "CLOSED",
  "verificationOptions": [
    {
      "contactType": "EMAIL",
      "deliveryChannel": "EMAIL"
    }
  ],
  "bookingPolicy": {
    "holdMinutes": 0,
    "waitlistVerificationMinutes": 0,
    "defaultDurationMinutes": 0,
    "turnBufferMinutes": 0,
    "graceMinutes": 0
  },
  "waitlistPolicy": {
    "maxPartySize": 0,
    "maxEntries": 0,
    "claimMinutes": 0
  },
  "serverTime": "2026-01-15T12:00:00.000Z",
  "servicePeriods": [
    {
      "guaranteeKind": null,
      "guaranteeAmountBasis": "FIXED",
      "guaranteeUnitAmount": null,
      "guaranteeMinimumPartySize": 1,
      "guaranteeDueBeforeMinutes": 0,
      "guaranteeFreeCancellationBeforeMinutes": 0,
      "guaranteeForfeitOnLateCancellation": true,
      "guaranteeForfeitOnNoShow": true,
      "id": "b926f345-3866-4e0a-8870-720a7d6d91be",
      "name": "Example name",
      "dayOfWeek": 0,
      "startsAtMinute": 0,
      "endsAtMinute": 0,
      "slotIntervalMinutes": 0,
      "maxPartySize": 0,
      "minimumLeadMinutes": 0,
      "bookingHorizonDays": 0,
      "publicBookingCutoffMinutes": 0,
      "bookingMode": "INSTANT"
    }
  ]
}

Schemas

ReservationPublicConfigResultDto

Guest-safe public booking configuration.

publicHandleRequired

Public booking channel handle.

string
Full definition
{
  "type": "string",
  "description": "Public booking channel handle.",
  "example": "example"
}
publicChannelIdRequired

Native reservation public-channel UUID for this venue.

string · uuid
Full definition
{
  "type": "string",
  "description": "Native reservation public-channel UUID for this venue.",
  "format": "uuid",
  "example": "9bee613d-3322-4a03-8b9f-8a6259984eee"
}
venueRequired

Public venue identity and scheduling time zone.

object
Full definition
{
  "type": "object",
  "description": "Public venue identity and scheduling time zone.",
  "required": [
    "id",
    "name",
    "timeZone"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Venue identifier.",
      "format": "uuid",
      "example": "fbc6db41-f1c2-4f74-862d-210bd28ee2a0"
    },
    "name": {
      "type": "string",
      "description": "Venue display name.",
      "example": "Example name"
    },
    "timeZone": {
      "type": "string",
      "description": "IANA time zone used for booking schedules.",
      "example": "Asia/Tbilisi"
    }
  },
  "example": {
    "id": "fbc6db41-f1c2-4f74-862d-210bd28ee2a0",
    "name": "Example name",
    "timeZone": "Asia/Tbilisi"
  }
}
termsVersionRequired

Terms version that a new booking must accept.

string
Full definition
{
  "type": "string",
  "description": "Terms version that a new booking must accept.",
  "example": "example"
}
privacyVersionRequired

Privacy notice version that a new booking must accept.

string
Full definition
{
  "type": "string",
  "description": "Privacy notice version that a new booking must accept.",
  "example": "example"
}
waitlistStatusRequired

Effective waitlist availability after scheduled pause expiry.

string
Full definition
{
  "type": "string",
  "description": "Effective waitlist availability after scheduled pause expiry.",
  "enum": [
    "CLOSED",
    "OPEN",
    "PAUSED"
  ],
  "example": "CLOSED"
}
verificationOptionsRequired

Actual enabled native contact-verification options for this venue. An empty list means no verification method is currently available; these options do not promise provider delivery.

array
Full definition
{
  "type": "array",
  "description": "Actual enabled native contact-verification options for this venue. An empty list means no verification method is currently available; these options do not promise provider delivery.",
  "items": {
    "type": "object",
    "description": "One enabled contact type and its native delivery channel.",
    "additionalProperties": false,
    "required": [
      "contactType",
      "deliveryChannel"
    ],
    "properties": {
      "contactType": {
        "type": "string",
        "description": "Contact type accepted by the native verification owner.",
        "enum": [
          "EMAIL",
          "PHONE"
        ],
        "example": "EMAIL"
      },
      "deliveryChannel": {
        "type": "string",
        "description": "Current native delivery channel selected for this contact type.",
        "enum": [
          "EMAIL",
          "SMS",
          "WHATSAPP"
        ],
        "example": "EMAIL"
      }
    },
    "example": {
      "contactType": "EMAIL",
      "deliveryChannel": "EMAIL"
    }
  },
  "example": [
    {
      "contactType": "EMAIL",
      "deliveryChannel": "EMAIL"
    }
  ]
}
bookingPolicyRequired

Current public intent windows and native default occupancy rules. Date-specific exceptions and turn rules remain authoritative during availability and conversion.

object
Full definition
{
  "type": "object",
  "description": "Current public intent windows and native default occupancy rules. Date-specific exceptions and turn rules remain authoritative during availability and conversion.",
  "additionalProperties": false,
  "required": [
    "holdMinutes",
    "waitlistVerificationMinutes",
    "defaultDurationMinutes",
    "turnBufferMinutes",
    "graceMinutes"
  ],
  "properties": {
    "holdMinutes": {
      "type": "integer",
      "description": "Public-channel booking-intent and capacity-hold duration in minutes.",
      "example": 0
    },
    "waitlistVerificationMinutes": {
      "type": "integer",
      "description": "Public-channel waitlist-intent duration in minutes. The actual contact-code expiry is returned separately and may be earlier.",
      "example": 0
    },
    "defaultDurationMinutes": {
      "type": "integer",
      "description": "Native default booking duration in minutes before applicable turn rules.",
      "example": 0
    },
    "turnBufferMinutes": {
      "type": "integer",
      "description": "Native default turn buffer in minutes before applicable turn rules.",
      "example": 0
    },
    "graceMinutes": {
      "type": "integer",
      "description": "Native configured arrival grace period in minutes.",
      "example": 0
    }
  },
  "example": {
    "holdMinutes": 0,
    "waitlistVerificationMinutes": 0,
    "defaultDurationMinutes": 0,
    "turnBufferMinutes": 0,
    "graceMinutes": 0
  }
}
waitlistPolicyRequired

Current native remote-waitlist party, queue and claim limits. Joining still requires the effective open status and native service-business-date admission.

object
Full definition
{
  "type": "object",
  "description": "Current native remote-waitlist party, queue and claim limits. Joining still requires the effective open status and native service-business-date admission.",
  "additionalProperties": false,
  "required": [
    "maxPartySize",
    "maxEntries",
    "claimMinutes"
  ],
  "properties": {
    "maxPartySize": {
      "type": "integer",
      "description": "Native maximum party size for joining the remote waitlist.",
      "example": 0
    },
    "maxEntries": {
      "type": "integer",
      "description": "Native maximum active waitlist entries; this does not disclose the current queue count.",
      "example": 0
    },
    "claimMinutes": {
      "type": "integer",
      "description": "Native offer claim window in minutes. An individual accepted offer is governed by its actual claimExpiresAt.",
      "example": 0
    }
  },
  "example": {
    "maxPartySize": 0,
    "maxEntries": 0,
    "claimMinutes": 0
  }
}
serverTimeRequired

Server instant for interpreting current policy windows in the venue time zone.

string · date-time
Full definition
{
  "type": "string",
  "description": "Server instant for interpreting current policy windows in the venue time zone.",
  "format": "date-time",
  "example": "2026-01-15T12:00:00.000Z"
}
servicePeriodsRequired

Active public service periods.

array
Full definition
{
  "type": "array",
  "description": "Active public service periods.",
  "items": {
    "type": "object",
    "description": "Publicly bookable service period projection.",
    "required": [
      "id",
      "name",
      "dayOfWeek",
      "startsAtMinute",
      "endsAtMinute",
      "slotIntervalMinutes",
      "maxPartySize",
      "bookingMode",
      "minimumLeadMinutes",
      "bookingHorizonDays",
      "publicBookingCutoffMinutes",
      "guaranteeKind",
      "guaranteeAmountBasis",
      "guaranteeUnitAmount",
      "guaranteeMinimumPartySize",
      "guaranteeDueBeforeMinutes",
      "guaranteeFreeCancellationBeforeMinutes",
      "guaranteeForfeitOnLateCancellation",
      "guaranteeForfeitOnNoShow"
    ],
    "properties": {
      "guaranteeKind": {
        "type": "string",
        "enum": [
          "DEPOSIT",
          "CARD_HOLD",
          "PREPAID",
          null
        ],
        "nullable": true,
        "description": "Required guarantee, or null for NONE.",
        "example": "DEPOSIT"
      },
      "guaranteeAmountBasis": {
        "type": "string",
        "enum": [
          "FIXED",
          "PER_GUEST"
        ],
        "description": "Exact fixed booking amount or amount per accepted guest.",
        "example": "FIXED"
      },
      "guaranteeUnitAmount": {
        "type": "string",
        "nullable": true,
        "pattern": "^(0|[1-9][0-9]{0,9})\\.[0-9]{2}$",
        "description": "Canonical two-decimal native unit amount, or null for NONE.",
        "example": "1.00"
      },
      "guaranteeMinimumPartySize": {
        "type": "integer",
        "minimum": 1,
        "maximum": 99,
        "description": "Minimum party size to which this policy applies.",
        "example": 1
      },
      "guaranteeDueBeforeMinutes": {
        "type": "integer",
        "minimum": 0,
        "description": "Elapsed minutes before the scheduled instant when payment is due.",
        "example": 0
      },
      "guaranteeFreeCancellationBeforeMinutes": {
        "type": "integer",
        "minimum": 0,
        "description": "Elapsed minutes before the scheduled instant when free cancellation ends.",
        "example": 0
      },
      "guaranteeForfeitOnLateCancellation": {
        "type": "boolean",
        "description": "Whether accepted late-cancel terms permit an explicit authorized staff forfeiture decision.",
        "example": true
      },
      "guaranteeForfeitOnNoShow": {
        "type": "boolean",
        "description": "Whether accepted no-show terms permit an explicit authorized staff forfeiture decision; never an automatic debit.",
        "example": true
      },
      "id": {
        "type": "string",
        "description": "Service period identifier.",
        "format": "uuid",
        "example": "b926f345-3866-4e0a-8870-720a7d6d91be"
      },
      "name": {
        "type": "string",
        "description": "Guest-facing service period name.",
        "example": "Example name"
      },
      "dayOfWeek": {
        "type": "integer",
        "description": "Recurring weekday in venue local time.",
        "example": 0
      },
      "startsAtMinute": {
        "type": "integer",
        "description": "Local opening minute after midnight.",
        "example": 0
      },
      "endsAtMinute": {
        "type": "integer",
        "description": "Local closing minute after midnight.",
        "example": 0
      },
      "slotIntervalMinutes": {
        "type": "integer",
        "description": "Minutes between offered start times.",
        "example": 0
      },
      "maxPartySize": {
        "type": "integer",
        "description": "Maximum bookable party size.",
        "example": 0
      },
      "minimumLeadMinutes": {
        "type": "integer",
        "description": "Native minimum advance booking lead in minutes for this period.",
        "example": 0
      },
      "bookingHorizonDays": {
        "type": "integer",
        "description": "Native maximum advance booking horizon in days for this period.",
        "example": 0
      },
      "publicBookingCutoffMinutes": {
        "type": "integer",
        "description": "Native public booking cutoff before the offered start, in minutes.",
        "example": 0
      },
      "bookingMode": {
        "type": "string",
        "description": "Whether a booking is confirmed instantly or requires review.",
        "enum": [
          "INSTANT",
          "REQUEST"
        ],
        "example": "INSTANT"
      }
    },
    "example": {
      "guaranteeKind": null,
      "guaranteeAmountBasis": "FIXED",
      "guaranteeUnitAmount": null,
      "guaranteeMinimumPartySize": 1,
      "guaranteeDueBeforeMinutes": 0,
      "guaranteeFreeCancellationBeforeMinutes": 0,
      "guaranteeForfeitOnLateCancellation": true,
      "guaranteeForfeitOnNoShow": true,
      "id": "b926f345-3866-4e0a-8870-720a7d6d91be",
      "name": "Example name",
      "dayOfWeek": 0,
      "startsAtMinute": 0,
      "endsAtMinute": 0,
      "slotIntervalMinutes": 0,
      "maxPartySize": 0,
      "minimumLeadMinutes": 0,
      "bookingHorizonDays": 0,
      "publicBookingCutoffMinutes": 0,
      "bookingMode": "INSTANT"
    }
  },
  "example": [
    {
      "guaranteeKind": null,
      "guaranteeAmountBasis": "FIXED",
      "guaranteeUnitAmount": null,
      "guaranteeMinimumPartySize": 1,
      "guaranteeDueBeforeMinutes": 0,
      "guaranteeFreeCancellationBeforeMinutes": 0,
      "guaranteeForfeitOnLateCancellation": true,
      "guaranteeForfeitOnNoShow": true,
      "id": "b926f345-3866-4e0a-8870-720a7d6d91be",
      "name": "Example name",
      "dayOfWeek": 0,
      "startsAtMinute": 0,
      "endsAtMinute": 0,
      "slotIntervalMinutes": 0,
      "maxPartySize": 0,
      "minimumLeadMinutes": 0,
      "bookingHorizonDays": 0,
      "publicBookingCutoffMinutes": 0,
      "bookingMode": "INSTANT"
    }
  ]
}
Full definition
{
  "type": "object",
  "description": "Guest-safe public booking configuration.",
  "required": [
    "publicHandle",
    "venue",
    "termsVersion",
    "privacyVersion",
    "waitlistStatus",
    "servicePeriods",
    "publicChannelId",
    "verificationOptions",
    "bookingPolicy",
    "waitlistPolicy",
    "serverTime"
  ],
  "properties": {
    "publicHandle": {
      "type": "string",
      "description": "Public booking channel handle.",
      "example": "example"
    },
    "publicChannelId": {
      "type": "string",
      "description": "Native reservation public-channel UUID for this venue.",
      "format": "uuid",
      "example": "9bee613d-3322-4a03-8b9f-8a6259984eee"
    },
    "venue": {
      "type": "object",
      "description": "Public venue identity and scheduling time zone.",
      "required": [
        "id",
        "name",
        "timeZone"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Venue identifier.",
          "format": "uuid",
          "example": "fbc6db41-f1c2-4f74-862d-210bd28ee2a0"
        },
        "name": {
          "type": "string",
          "description": "Venue display name.",
          "example": "Example name"
        },
        "timeZone": {
          "type": "string",
          "description": "IANA time zone used for booking schedules.",
          "example": "Asia/Tbilisi"
        }
      },
      "example": {
        "id": "fbc6db41-f1c2-4f74-862d-210bd28ee2a0",
        "name": "Example name",
        "timeZone": "Asia/Tbilisi"
      }
    },
    "termsVersion": {
      "type": "string",
      "description": "Terms version that a new booking must accept.",
      "example": "example"
    },
    "privacyVersion": {
      "type": "string",
      "description": "Privacy notice version that a new booking must accept.",
      "example": "example"
    },
    "waitlistStatus": {
      "type": "string",
      "description": "Effective waitlist availability after scheduled pause expiry.",
      "enum": [
        "CLOSED",
        "OPEN",
        "PAUSED"
      ],
      "example": "CLOSED"
    },
    "verificationOptions": {
      "type": "array",
      "description": "Actual enabled native contact-verification options for this venue. An empty list means no verification method is currently available; these options do not promise provider delivery.",
      "items": {
        "type": "object",
        "description": "One enabled contact type and its native delivery channel.",
        "additionalProperties": false,
        "required": [
          "contactType",
          "deliveryChannel"
        ],
        "properties": {
          "contactType": {
            "type": "string",
            "description": "Contact type accepted by the native verification owner.",
            "enum": [
              "EMAIL",
              "PHONE"
            ],
            "example": "EMAIL"
          },
          "deliveryChannel": {
            "type": "string",
            "description": "Current native delivery channel selected for this contact type.",
            "enum": [
              "EMAIL",
              "SMS",
              "WHATSAPP"
            ],
            "example": "EMAIL"
          }
        },
        "example": {
          "contactType": "EMAIL",
          "deliveryChannel": "EMAIL"
        }
      },
      "example": [
        {
          "contactType": "EMAIL",
          "deliveryChannel": "EMAIL"
        }
      ]
    },
    "bookingPolicy": {
      "type": "object",
      "description": "Current public intent windows and native default occupancy rules. Date-specific exceptions and turn rules remain authoritative during availability and conversion.",
      "additionalProperties": false,
      "required": [
        "holdMinutes",
        "waitlistVerificationMinutes",
        "defaultDurationMinutes",
        "turnBufferMinutes",
        "graceMinutes"
      ],
      "properties": {
        "holdMinutes": {
          "type": "integer",
          "description": "Public-channel booking-intent and capacity-hold duration in minutes.",
          "example": 0
        },
        "waitlistVerificationMinutes": {
          "type": "integer",
          "description": "Public-channel waitlist-intent duration in minutes. The actual contact-code expiry is returned separately and may be earlier.",
          "example": 0
        },
        "defaultDurationMinutes": {
          "type": "integer",
          "description": "Native default booking duration in minutes before applicable turn rules.",
          "example": 0
        },
        "turnBufferMinutes": {
          "type": "integer",
          "description": "Native default turn buffer in minutes before applicable turn rules.",
          "example": 0
        },
        "graceMinutes": {
          "type": "integer",
          "description": "Native configured arrival grace period in minutes.",
          "example": 0
        }
      },
      "example": {
        "holdMinutes": 0,
        "waitlistVerificationMinutes": 0,
        "defaultDurationMinutes": 0,
        "turnBufferMinutes": 0,
        "graceMinutes": 0
      }
    },
    "waitlistPolicy": {
      "type": "object",
      "description": "Current native remote-waitlist party, queue and claim limits. Joining still requires the effective open status and native service-business-date admission.",
      "additionalProperties": false,
      "required": [
        "maxPartySize",
        "maxEntries",
        "claimMinutes"
      ],
      "properties": {
        "maxPartySize": {
          "type": "integer",
          "description": "Native maximum party size for joining the remote waitlist.",
          "example": 0
        },
        "maxEntries": {
          "type": "integer",
          "description": "Native maximum active waitlist entries; this does not disclose the current queue count.",
          "example": 0
        },
        "claimMinutes": {
          "type": "integer",
          "description": "Native offer claim window in minutes. An individual accepted offer is governed by its actual claimExpiresAt.",
          "example": 0
        }
      },
      "example": {
        "maxPartySize": 0,
        "maxEntries": 0,
        "claimMinutes": 0
      }
    },
    "serverTime": {
      "type": "string",
      "description": "Server instant for interpreting current policy windows in the venue time zone.",
      "format": "date-time",
      "example": "2026-01-15T12:00:00.000Z"
    },
    "servicePeriods": {
      "type": "array",
      "description": "Active public service periods.",
      "items": {
        "type": "object",
        "description": "Publicly bookable service period projection.",
        "required": [
          "id",
          "name",
          "dayOfWeek",
          "startsAtMinute",
          "endsAtMinute",
          "slotIntervalMinutes",
          "maxPartySize",
          "bookingMode",
          "minimumLeadMinutes",
          "bookingHorizonDays",
          "publicBookingCutoffMinutes",
          "guaranteeKind",
          "guaranteeAmountBasis",
          "guaranteeUnitAmount",
          "guaranteeMinimumPartySize",
          "guaranteeDueBeforeMinutes",
          "guaranteeFreeCancellationBeforeMinutes",
          "guaranteeForfeitOnLateCancellation",
          "guaranteeForfeitOnNoShow"
        ],
        "properties": {
          "guaranteeKind": {
            "type": "string",
            "enum": [
              "DEPOSIT",
              "CARD_HOLD",
              "PREPAID",
              null
            ],
            "nullable": true,
            "description": "Required guarantee, or null for NONE.",
            "example": "DEPOSIT"
          },
          "guaranteeAmountBasis": {
            "type": "string",
            "enum": [
              "FIXED",
              "PER_GUEST"
            ],
            "description": "Exact fixed booking amount or amount per accepted guest.",
            "example": "FIXED"
          },
          "guaranteeUnitAmount": {
            "type": "string",
            "nullable": true,
            "pattern": "^(0|[1-9][0-9]{0,9})\\.[0-9]{2}$",
            "description": "Canonical two-decimal native unit amount, or null for NONE.",
            "example": "1.00"
          },
          "guaranteeMinimumPartySize": {
            "type": "integer",
            "minimum": 1,
            "maximum": 99,
            "description": "Minimum party size to which this policy applies.",
            "example": 1
          },
          "guaranteeDueBeforeMinutes": {
            "type": "integer",
            "minimum": 0,
            "description": "Elapsed minutes before the scheduled instant when payment is due.",
            "example": 0
          },
          "guaranteeFreeCancellationBeforeMinutes": {
            "type": "integer",
            "minimum": 0,
            "description": "Elapsed minutes before the scheduled instant when free cancellation ends.",
            "example": 0
          },
          "guaranteeForfeitOnLateCancellation": {
            "type": "boolean",
            "description": "Whether accepted late-cancel terms permit an explicit authorized staff forfeiture decision.",
            "example": true
          },
          "guaranteeForfeitOnNoShow": {
            "type": "boolean",
            "description": "Whether accepted no-show terms permit an explicit authorized staff forfeiture decision; never an automatic debit.",
            "example": true
          },
          "id": {
            "type": "string",
            "description": "Service period identifier.",
            "format": "uuid",
            "example": "b926f345-3866-4e0a-8870-720a7d6d91be"
          },
          "name": {
            "type": "string",
            "description": "Guest-facing service period name.",
            "example": "Example name"
          },
          "dayOfWeek": {
            "type": "integer",
            "description": "Recurring weekday in venue local time.",
            "example": 0
          },
          "startsAtMinute": {
            "type": "integer",
            "description": "Local opening minute after midnight.",
            "example": 0
          },
          "endsAtMinute": {
            "type": "integer",
            "description": "Local closing minute after midnight.",
            "example": 0
          },
          "slotIntervalMinutes": {
            "type": "integer",
            "description": "Minutes between offered start times.",
            "example": 0
          },
          "maxPartySize": {
            "type": "integer",
            "description": "Maximum bookable party size.",
            "example": 0
          },
          "minimumLeadMinutes": {
            "type": "integer",
            "description": "Native minimum advance booking lead in minutes for this period.",
            "example": 0
          },
          "bookingHorizonDays": {
            "type": "integer",
            "description": "Native maximum advance booking horizon in days for this period.",
            "example": 0
          },
          "publicBookingCutoffMinutes": {
            "type": "integer",
            "description": "Native public booking cutoff before the offered start, in minutes.",
            "example": 0
          },
          "bookingMode": {
            "type": "string",
            "description": "Whether a booking is confirmed instantly or requires review.",
            "enum": [
              "INSTANT",
              "REQUEST"
            ],
            "example": "INSTANT"
          }
        },
        "example": {
          "guaranteeKind": null,
          "guaranteeAmountBasis": "FIXED",
          "guaranteeUnitAmount": null,
          "guaranteeMinimumPartySize": 1,
          "guaranteeDueBeforeMinutes": 0,
          "guaranteeFreeCancellationBeforeMinutes": 0,
          "guaranteeForfeitOnLateCancellation": true,
          "guaranteeForfeitOnNoShow": true,
          "id": "b926f345-3866-4e0a-8870-720a7d6d91be",
          "name": "Example name",
          "dayOfWeek": 0,
          "startsAtMinute": 0,
          "endsAtMinute": 0,
          "slotIntervalMinutes": 0,
          "maxPartySize": 0,
          "minimumLeadMinutes": 0,
          "bookingHorizonDays": 0,
          "publicBookingCutoffMinutes": 0,
          "bookingMode": "INSTANT"
        }
      },
      "example": [
        {
          "guaranteeKind": null,
          "guaranteeAmountBasis": "FIXED",
          "guaranteeUnitAmount": null,
          "guaranteeMinimumPartySize": 1,
          "guaranteeDueBeforeMinutes": 0,
          "guaranteeFreeCancellationBeforeMinutes": 0,
          "guaranteeForfeitOnLateCancellation": true,
          "guaranteeForfeitOnNoShow": true,
          "id": "b926f345-3866-4e0a-8870-720a7d6d91be",
          "name": "Example name",
          "dayOfWeek": 0,
          "startsAtMinute": 0,
          "endsAtMinute": 0,
          "slotIntervalMinutes": 0,
          "maxPartySize": 0,
          "minimumLeadMinutes": 0,
          "bookingHorizonDays": 0,
          "publicBookingCutoffMinutes": 0,
          "bookingMode": "INSTANT"
        }
      ]
    }
  },
  "example": {
    "publicHandle": "example",
    "publicChannelId": "9bee613d-3322-4a03-8b9f-8a6259984eee",
    "venue": {
      "id": "fbc6db41-f1c2-4f74-862d-210bd28ee2a0",
      "name": "Example name",
      "timeZone": "Asia/Tbilisi"
    },
    "termsVersion": "example",
    "privacyVersion": "example",
    "waitlistStatus": "CLOSED",
    "verificationOptions": [
      {
        "contactType": "EMAIL",
        "deliveryChannel": "EMAIL"
      }
    ],
    "bookingPolicy": {
      "holdMinutes": 0,
      "waitlistVerificationMinutes": 0,
      "defaultDurationMinutes": 0,
      "turnBufferMinutes": 0,
      "graceMinutes": 0
    },
    "waitlistPolicy": {
      "maxPartySize": 0,
      "maxEntries": 0,
      "claimMinutes": 0
    },
    "serverTime": "2026-01-15T12:00:00.000Z",
    "servicePeriods": [
      {
        "guaranteeKind": null,
        "guaranteeAmountBasis": "FIXED",
        "guaranteeUnitAmount": null,
        "guaranteeMinimumPartySize": 1,
        "guaranteeDueBeforeMinutes": 0,
        "guaranteeFreeCancellationBeforeMinutes": 0,
        "guaranteeForfeitOnLateCancellation": true,
        "guaranteeForfeitOnNoShow": true,
        "id": "b926f345-3866-4e0a-8870-720a7d6d91be",
        "name": "Example name",
        "dayOfWeek": 0,
        "startsAtMinute": 0,
        "endsAtMinute": 0,
        "slotIntervalMinutes": 0,
        "maxPartySize": 0,
        "minimumLeadMinutes": 0,
        "bookingHorizonDays": 0,
        "publicBookingCutoffMinutes": 0,
        "bookingMode": "INSTANT"
      }
    ]
  }
}

Hallify uses essential cookies and optional analytics.

Essential cookies keep sign-in, locale, and theme preferences working. Analytics is off until you choose to allow it.