REST · Bearer · property scope
Документация Open API
Чтение и запись объектов, гостей, броней, занятости, цен и чатов. Ключ gld_… или OAuth из GlampStore.
Введение
Возможности
Open API Глэмп CRM поддерживает работу с данными портала базы: объекты размещения, гости, брони, занятость, расчёт цен и диалоги контакт-центра. Это позволяет синхронизировать CRM с OTA, чат-центрами и собственными бэкендами.
Как это работает?
- Зарегистрируйтесь на partners.glampcrm.ru и подтвердите email.
- В кабинете выпустите API-ключ (показывается один раз).
- Попросите владельца базы подключить вашу интеграцию к порталу (указать ваш email; API
/api/crm/developer-grants). - Для чатов: приложение в GlampStore со scopes
chats.*— после установки в контакт-центре появляется карточка приложения. - Вызывайте
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.
- База подтверждает scopes →
redirect_uri?code=…&state=… - Обмен:
POST https://api.glampcrm.ru/oauth/token - Вызовы:
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 (iframe)
После подключения в GlampStore открывается страница портала /store/apps/{id} (аналог Bitrix /marketplace/app/…). Адресная строка — домен CRM; UI партнёра загружается в iframe, его URL в интерфейсе не показывается.
Страница по redirect_uri (и дальнейшие экраны настройки) должна разрешать встраивание с доменов порталов Глэмп CRM:
- Не отдавайте
X-Frame-Options: DENYилиSAMEORIGINна этих страницах. - В
Content-Security-Policyукажите, например:
Content-Security-Policy: frame-ancestors https://*.glampcrm.ru https://glampcrm.ru;
Без этого iframe в CRM будет пустым (браузер заблокирует загрузку). Не вызывайте window.top.location для ухода из iframe — пользователь должен оставаться в портале.
Объекты
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 scopes400— валидация404— сущность не найдена
Тело: { "statusCode": 400, "message": "…" }