Перейти к содержимому
Разделы

Руководства

Опубликованные витрины и поиск по домену

Получите опубликованное представление и подключённые точки после защищённой настройки ресторана.

Подготовьте действующую публикацию

Уполномоченный сотрудник ресторана создаёт черновик бренда или заведения, публикует проверенную ревизию, включает подключение HOSTED и подтверждает необходимые полномочия домена. Бренд принадлежит одной организации; точка — реальное заведение, явно подключённое к этому соединению. Черновик, отключённое подключение или непроверенный домен не являются публичной публикацией.

Административная настройка и учётные данные провайдеров остаются в защищённой рабочей зоне Hallify. Публичные методы чтения не создают черновики, не публикуют контент, не подтверждают домен и не включают подключение. Документация не создаёт ресторан, одноразовое тестовое заведение или доступ к развёртыванию.

Маршруты кабинета: /venues/:venueId/settings/storefront для настройки заведения и /organizations/:organizationId/storefront для настройки бренда. Доступ к разделу заведения проверяется правилом Hallify venueSettings; настройка бренда организации требует organization.manage. Выберите действующую организацию или заведение в своём разрешённом рабочем пространстве Hallify.

Получите опубликованное представление

Используйте опубликованный publicHandle подключения. Общая hosted-страница открывается по /s/{publicHandle}, выбранная точка — по /s/{publicHandle}/venues/{venueId}. Публичные REST-запросы идут на https://api.hallify.co. Для чтения не нужны cookie аккаунта или общий ключ ресторана; оно не предоставляет полномочий для гостевых транзакций.

Пример содержит вымышленные данные и не отправляет запрос со страницы документации. В собственном браузерном приложении используйте credentials: 'omit'. При генерации транспортных типов из скачанного публичного OpenAPI используйте StorefrontPublicPresentationDto, не создавая параллельный контракт представления.

  1. Получите настоящий опубликованный handle у уполномоченного сотрудника; не выводите его из идентификатора организации или заведения.
  2. Прочитайте представление по handle и проверьте HTTP-статус перед использованием типизированного документа, сведений о публикации и канонического URL.
  3. Для бренда получите ограниченную страницу точек с limit от 1 до 50. Используйте возвращённый nextCursor до значения null; не создавайте курсор самостоятельно и не переносите его между брендами.
  4. Выберите одно из возвращённых реальных заведений и прочитайте представление выбранной точки. Сохраняйте её валюту и часовой пояс в последующем гостевом процессе соответствующего домена.
Примеры запросов
const publicHandle = 'demo-restaurant';
const url = new URL(
  `/public/storefronts/${encodeURIComponent(publicHandle)}`,
  'https://api.hallify.co'
);

const response = await fetch(url, { credentials: 'omit' });

if (!response.ok) {
  throw new Error(`HTTP ${response.status}`);
}

const presentation = await response.json();
const representationEtag = response.headers.get('ETag');

Используйте нативный locator заказа выбранной точки

Выбранное представление и каждая точка каталога могут содержать nullable ordering discovery. У бренда без выбранного заведения ordering отсутствует; null означает недоступный заказ, а не разрешение угадать канал. Непустая запись возвращает точные connectionId, привязанный PREORDER resourceId, venueId, publicChannelId и publicChannelHandle. Handle нативного канала отличается от handle представления витрины.

Сохраняйте locator при открытии нативного каталога и draft flow; не объединяйте точки, валюты и tenant-контекст. При выдаче черновика передавайте его connectionId в объявленном несекретном x-hallify-connection-id, в том числе на каноническом Origin Hallify. Сервер определяет и фиксирует точную текущую нативную привязку; не придумывайте поля тела для остальных значений locator и не меняйте привязку последующих приватных вызовов.

allowedOrigins каталога и активные нативные политики исполнения остаются отдельными полномочиями. Привязанный канал или успешное публичное чтение Storefront не допускают ваш origin автоматически и не подтверждают готовность ASAP/планового заказа. Прочитайте фактические каталог и fulfillmentOptions, затем пройдите корзину, проверку, зафиксированный quote и исходное управление. Ошибка проекции не разрешает подмену канала; STOREFRONT_ORDERING_UNAVAILABLE обозначает недоступную scoped discovery.

Используйте нативный локатор бронирования выбранного заведения

Выбранное представление и каждое заведение списка могут содержать nullable reservations discovery. У бренда без выбранного заведения reservations: null. Непустая запись содержит ровно connectionId, resourceId прикреплённого RESERVATION, venueId, publicChannelId и publicChannelHandle. Нативный handle бронирования отличается от handle представления; прикреплённые MENU или канал предзаказа не создают прав бронирования.

Следуйте точному нативному каналу к конфигурации, доступности, предложению гарантии, намерению и проверке контакта. Передавайте его connectionId как объявленный несекретный x-hallify-connection-id при разрешении нативного канала, в том числе на каноническом Origin. Сохраняйте фактический Origin браузера и исходную привязку presentation; не придумывайте поля тела для остальных discovery-значений и не объединяйте заведения. Статус канала, разрешённые origin, вместимость и реальная проверка контакта остаются нативными правилами.

Null отключает обнаружение бронирования и не разрешает угаданный handle, canonical fallback или скопированный manage-доступ. STOREFRONT_RESERVATIONS_UNAVAILABLE означает невозможность безопасной проекции бронирования в текущем scope. Успешное чтение Storefront не создаёт удержание, бронь, запись ожидания, согласие на гарантию или платёжный доступ. Продолжайте приватное управление и checkout гарантии только с собственными выданными нативными правами.

Hosted-бронирование использует /s/{publicHandle}/venues/{venueId}/book на общем хосте Hallify и /venues/{venueId}/book на проверенном собственном хосте. WIDGET использует изолированный frame /widgets/:connectionId с точным проверенным parent binding и приватным bootstrap. Нативный поиск resource/channel сохраняет силу.

Повторно проверяйте контент и подтверждённые домены

Публикация сохраняет неизменные идентификатор, исходную ревизию, версию схемы и хеш контента. Публичные поля профиля заведения остаются актуальными. ETag представления и политика public, max-age=0, must-revalidate требуют повторной проверки; опубликованный документ не означает бессрочных полномочий. При совпадении If-None-Match чтение по handle возвращает 304 без тела: используйте только ранее сохранённое представление той же публичной области.

Поиск по домену сопоставляет нормализованное имя с одним действующим проверенным hosted-подключением. Ответ содержит текущее представление и, когда применимо, проверенный канонический адрес. Имя домена служит для поиска. Оно не предоставляет доступ к бронированию, заказу, участию в сессии стола или платежу и не заменяет несвязанный публичный handle. Неизвестные или утратившие полномочия домены отклоняются.

На собственном hosted-домене представление открывается по /, а подключённая точка — по /venues/{venueId}. Runtime определяет фактический доверенный host запроса; переданное клиентом имя домена или подмена forwarded-host не выбирают организацию. Снятие публикации или отключение одного hosted-подключения само по себе не разрешает менять исходный канал заказов или другое подключение.

Границы текущей реализации

Документ представления поддерживает проверенный типизированный контент и безопасные токены темы, а ресторанный контент — английский, грузинский и русский языки. Произвольные HTML, CSS и скрипты не принимаются. Опубликованное представление не является доступным для заказа меню, гостевой оплатой или общим счётом.

Нативные заказы, бронирования и платежи сохраняют отдельные ресурсные и финансовые права. Виджеты добавляют proof проверенного parent/frame без объединения нативных доступов. JS/TS SDK раскрывает только выбранные канонические операции. Курьерская диспетчеризация, npm publication и live browser/domain/provider квалификации остаются отдельными.

Изменение DNS клиента, подключение домена к провайдеру развёртывания, сертификаты и приёмка действующего домена требуют фактической операционной настройки и проверки. Сохранённая привязка домена или исходный код не подтверждают активацию production-домена провайдером.

Hallify использует обязательные cookies и опциональную аналитику.

Обязательные cookies поддерживают вход, язык и тему. Аналитика выключена, пока вы явно ее не разрешите.