REST · Bearer · property scope

Документация Open API

Чтение и запись объектов, гостей, броней, занятости, цен и чатов. Ключ gld_… или OAuth из GlampStore.

Введение

Возможности

Open API Глэмп CRM поддерживает работу с данными портала базы: объекты размещения, гости, брони, занятость, расчёт цен и диалоги контакт-центра. Это позволяет синхронизировать CRM с OTA, чат-центрами и собственными бэкендами.

Как это работает?

  1. Зарегистрируйтесь на partners.glampcrm.ru и подтвердите email.
  2. В кабинете выпустите API-ключ (показывается один раз).
  3. Попросите владельца базы подключить вашу интеграцию к порталу (указать ваш email; API /api/crm/developer-grants).
  4. Для чатов: приложение в GlampStore со scopes chats.* — после установки в контакт-центре появляется карточка приложения.
  5. Вызывайте https://api.glampcrm.ru/api/v1/… с ключом и кодом объекта.

Base URL: https://api.glampcrm.ru/api/v1/

Авторизация

Заголовок запроса

Передавайте ключ из кабинета разработчика в заголовке Authorization:

Authorization: Bearer gld_…

Ключ принадлежит интегратору, а не отдельной базе. Доступ к конкретным порталам подключает владелец базы.

X-Property-Code

Обязательный заголовок (или query ?property=) — публичный код или subdomain портала, к которому подключена ваша интеграция:

X-Property-Code: sysert

Без подключения API отвечает 403. Для OAuth access token (gla_at_…) заголовок не нужен.

OAuth / GlampStore

Партнёр регистрирует app на partners.glampcrm.ru/cabinet/apps, проходит модерацию; база подключает приложение в GlampStore.

  1. База подтверждает scopes → redirect_uri?code=…&state=…
  2. Обмен: POST https://api.glampcrm.ru/oauth/token
  3. Вызовы: Authorization: Bearer gla_at_…
curl -s -X POST https://api.glampcrm.ru/oauth/token \
  -H "Content-Type: application/json" \
  -d '{
    "grant_type": "authorization_code",
    "code": "glc_…",
    "redirect_uri": "https://your.app/oauth/callback",
    "client_id": "gla_…",
    "client_secret": "gls_…"
  }'

Scopes: units.read/write, guests.read/write, bookings.read/write, availability.read, quote.read, chats.read/write.

Открытие из CRM (popup)

После подключения в GlampStore приложение открывается во всплывающем окне на ваш redirect_uri (OAuth code + state). Можно также открыть deep-link портала /store/apps/{id} — он сразу покажет popup и вернёт пользователя в каталог.

Встраивание в iframe больше не используется: не требуется frame-ancestors / снятие X-Frame-Options ради UI в портале. Если позже понадобится виджет внутри CRM — отдельно согласуйте CSP.

Объекты

Scope: units.read / units.write.

Список объектов

GET https://api.glampcrm.ru/api/v1/units

Список объектов (домиков) портала.

curl -s \
  -H "Authorization: Bearer $KEY" \
  -H "X-Property-Code: sysert" \
  https://api.glampcrm.ru/api/v1/units

Получить объект

GET https://api.glampcrm.ru/api/v1/units/{id}

Один объект по id.

Добавить объект

POST https://api.glampcrm.ru/api/v1/units

Поля: name, type, capacity, basePrice и др.

curl -s -X POST \
  -H "Authorization: Bearer $KEY" \
  -H "X-Property-Code: sysert" \
  -H "Content-Type: application/json" \
  -d '{"name":"Дом у озера","type":"cabin","capacity":4,"basePrice":8000}' \
  https://api.glampcrm.ru/api/v1/units

Изменить объект

PATCH https://api.glampcrm.ru/api/v1/units/{id}

Частичное обновление полей объекта.

Удалить объект

DELETE https://api.glampcrm.ru/api/v1/units/{id}

Удаление объекта портала.

Гости

Scope: guests.read / guests.write.

Список гостей

GET https://api.glampcrm.ru/api/v1/guests

curl -s \
  -H "Authorization: Bearer $KEY" \
  -H "X-Property-Code: sysert" \
  https://api.glampcrm.ru/api/v1/guests

Получить гостя

GET https://api.glampcrm.ru/api/v1/guests/{id}

Карточка гостя с бронями.

Добавить гостя

POST https://api.glampcrm.ru/api/v1/guests

curl -s -X POST \
  -H "Authorization: Bearer $KEY" \
  -H "X-Property-Code: sysert" \
  -H "Content-Type: application/json" \
  -d '{
    "firstName": "Иван",
    "lastName": "Иванов",
    "phone": "+79001234567",
    "email": "guest@example.com"
  }' \
  https://api.glampcrm.ru/api/v1/guests

Изменить гостя

PATCH https://api.glampcrm.ru/api/v1/guests/{id}

Частичное обновление карточки гостя.

Удалить гостя

DELETE https://api.glampcrm.ru/api/v1/guests/{id}

Удаление гостя.

Брони

Scope: bookings.read / bookings.write.

Список броней

GET https://api.glampcrm.ru/api/v1/bookings

Опционально ?from=&to= (YYYY-MM-DD).

Получить бронь

GET https://api.glampcrm.ru/api/v1/bookings/{id}

По CRM id или externalId канала Developer API.

Создать бронь

POST https://api.glampcrm.ru/api/v1/bookings

Два режима:

  • CRM: guestId + unitId + даты
  • OTA upsert: externalId + гость вложенным объектом
# CRM
curl -s -X POST \
  -H "Authorization: Bearer $KEY" \
  -H "X-Property-Code: sysert" \
  -H "Content-Type: application/json" \
  -d '{
    "unitId": "…",
    "guestId": "…",
    "checkIn": "2026-07-01",
    "checkOut": "2026-07-05",
    "totalPrice": 24000
  }' \
  https://api.glampcrm.ru/api/v1/bookings

# OTA upsert
curl -s -X POST \
  -H "Authorization: Bearer $KEY" \
  -H "X-Property-Code: sysert" \
  -H "Content-Type: application/json" \
  -d '{
    "externalId": "ota-12345",
    "unitId": "…",
    "checkIn": "2026-07-01",
    "checkOut": "2026-07-05",
    "totalPrice": 24000,
    "guest": {
      "firstName": "Иван",
      "lastName": "Иванов",
      "phone": "+79001234567"
    }
  }' \
  https://api.glampcrm.ru/api/v1/bookings

Изменить бронь

PATCH https://api.glampcrm.ru/api/v1/bookings/{id}

Изменение по CRM id.

Удалить бронь

DELETE https://api.glampcrm.ru/api/v1/bookings/{id}

Удаление брони по CRM id.

Отменить бронь

POST https://api.glampcrm.ru/api/v1/bookings/{id}/cancel

Отмена по CRM id или externalId (статус «Отказ» в CRM).

Занятость

Scope: availability.read.

Свободные объекты

GET https://api.glampcrm.ru/api/v1/availability

Query: checkIn, checkOut (YYYY-MM-DD), опционально unitId.

curl -s \
  -H "Authorization: Bearer $KEY" \
  -H "X-Property-Code: sysert" \
  "https://api.glampcrm.ru/api/v1/availability?checkIn=2026-07-01&checkOut=2026-07-05"

Цены

Scope: quote.read.

Расчёт цены

GET https://api.glampcrm.ru/api/v1/quote

Query: unitId, checkIn, checkOut; опционально tariffId, promoCode.

curl -s \
  -H "Authorization: Bearer $KEY" \
  -H "X-Property-Code: sysert" \
  "https://api.glampcrm.ru/api/v1/quote?unitId=…&checkIn=2026-07-01&checkOut=2026-07-05"

Чаты

Scope: chats.read / chats.write. Диалоги внешнего чат-центра появляются в разделе Чаты портала. На стороне базы: установить приложение из GlampStore — карточка в Каналы → Контакт-центр.

Список диалогов

GET https://api.glampcrm.ru/api/v1/chats

Опционально ?status=open.

Получить диалог

GET https://api.glampcrm.ru/api/v1/chats/{externalId}

Диалог и сообщения по ID во внешней системе.

Отправить сообщение

POST https://api.glampcrm.ru/api/v1/chats/messages

externalId — ID диалога у вас; authorKind: GUEST или STAFF. Опционально externalMessageId.

curl -s -X POST \
  -H "Authorization: Bearer $KEY" \
  -H "X-Property-Code: sysert" \
  -H "Content-Type: application/json" \
  -d '{
    "externalId": "dialog-42",
    "externalMessageId": "msg-1001",
    "authorKind": "GUEST",
    "body": "Здравствуйте, есть ли свободные домики на выходные?",
    "visitor": {
      "name": "Анна",
      "phone": "+79001234567"
    }
  }' \
  https://api.glampcrm.ru/api/v1/chats/messages

Альтернатива: POST /api/v1/chats/{externalId}/messages.

Изменить диалог

PATCH https://api.glampcrm.ru/api/v1/chats/{externalId}

Статус, контакты гостя, привязка guestId / bookingId.

Events webhook

Когда сотрудник отвечает в CRM, мы шлём POST на ваш URL:

PUT /api/v1/chats/events-webhook
{ "url": "https://…", "secret": "…", "rotateSecret": false }

Событие message.created, заголовок X-Glamp-Webhook-Signature: sha256=….

Ошибки

  • 401 — нет или неверный API-ключ
  • 403 — интеграция не подключена к порталу / недостаточно OAuth scopes
  • 400 — валидация
  • 404 — сущность не найдена

Тело: { "statusCode": 400, "message": "…" }

Глэмп CRM Open API — для интеграторов и разработчиков — Глэмп CRM