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

A Hallify account session is not required. Follow this operation’s prerequisites and restrictions.

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 · Required

Browser Origin evaluated against the public channel allowlist; a missing or disallowed origin is rejected without exposing private venue configuration.

string
Full definition
{
  "type": "string",
  "example": "example"
}

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",
  "venue": {
    "id": "fbc6db41-f1c2-4f74-862d-210bd28ee2a0",
    "name": "Example name",
    "timeZone": "Asia/Tbilisi"
  },
  "termsVersion": "example",
  "privacyVersion": "example",
  "waitlistStatus": "CLOSED",
  "servicePeriods": [
    {
      "id": "b926f345-3866-4e0a-8870-720a7d6d91be",
      "name": "Example name",
      "dayOfWeek": 0,
      "startsAtMinute": 0,
      "endsAtMinute": 0,
      "slotIntervalMinutes": 0,
      "maxPartySize": 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"
}
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"
}
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"
    ],
    "properties": {
      "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
      },
      "bookingMode": {
        "type": "string",
        "description": "Whether a booking is confirmed instantly or requires review.",
        "enum": [
          "INSTANT",
          "REQUEST"
        ],
        "example": "INSTANT"
      }
    },
    "example": {
      "id": "b926f345-3866-4e0a-8870-720a7d6d91be",
      "name": "Example name",
      "dayOfWeek": 0,
      "startsAtMinute": 0,
      "endsAtMinute": 0,
      "slotIntervalMinutes": 0,
      "maxPartySize": 0,
      "bookingMode": "INSTANT"
    }
  },
  "example": [
    {
      "id": "b926f345-3866-4e0a-8870-720a7d6d91be",
      "name": "Example name",
      "dayOfWeek": 0,
      "startsAtMinute": 0,
      "endsAtMinute": 0,
      "slotIntervalMinutes": 0,
      "maxPartySize": 0,
      "bookingMode": "INSTANT"
    }
  ]
}
Full definition
{
  "type": "object",
  "description": "Guest-safe public booking configuration.",
  "required": [
    "publicHandle",
    "venue",
    "termsVersion",
    "privacyVersion",
    "waitlistStatus",
    "servicePeriods"
  ],
  "properties": {
    "publicHandle": {
      "type": "string",
      "description": "Public booking channel handle.",
      "example": "example"
    },
    "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"
    },
    "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"
        ],
        "properties": {
          "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
          },
          "bookingMode": {
            "type": "string",
            "description": "Whether a booking is confirmed instantly or requires review.",
            "enum": [
              "INSTANT",
              "REQUEST"
            ],
            "example": "INSTANT"
          }
        },
        "example": {
          "id": "b926f345-3866-4e0a-8870-720a7d6d91be",
          "name": "Example name",
          "dayOfWeek": 0,
          "startsAtMinute": 0,
          "endsAtMinute": 0,
          "slotIntervalMinutes": 0,
          "maxPartySize": 0,
          "bookingMode": "INSTANT"
        }
      },
      "example": [
        {
          "id": "b926f345-3866-4e0a-8870-720a7d6d91be",
          "name": "Example name",
          "dayOfWeek": 0,
          "startsAtMinute": 0,
          "endsAtMinute": 0,
          "slotIntervalMinutes": 0,
          "maxPartySize": 0,
          "bookingMode": "INSTANT"
        }
      ]
    }
  },
  "example": {
    "publicHandle": "example",
    "venue": {
      "id": "fbc6db41-f1c2-4f74-862d-210bd28ee2a0",
      "name": "Example name",
      "timeZone": "Asia/Tbilisi"
    },
    "termsVersion": "example",
    "privacyVersion": "example",
    "waitlistStatus": "CLOSED",
    "servicePeriods": [
      {
        "id": "b926f345-3866-4e0a-8870-720a7d6d91be",
        "name": "Example name",
        "dayOfWeek": 0,
        "startsAtMinute": 0,
        "endsAtMinute": 0,
        "slotIntervalMinutes": 0,
        "maxPartySize": 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.