К содержимому
Type — API сайта
Разделы

Безопасность

С ключом API можно читать каталог компании и создавать заявки от имени её сайта. Обращайтесь с ним как с паролем.

Ключ — только на сервере

  • Храните ключ в переменных окружения сервера (TYPE_API_KEY), а не в коде.
  • Никогда — в браузере: ни в клиентских компонентах, ни в переменных NEXT_PUBLIC_* / VITE_*, ни в HTML и JS страницы. CRM всё равно не отвечает браузеру (нет CORS), а пакет @type/site-client при импорте в браузерную сборку бросает ошибку.
  • Никогда — в репозитории: добавьте .env* в .gitignore; в README и примерах — только заглушки вида tk_<key_id>_<secret>. Ключи начинаются с tk_ — это помогает сканерам секретов находить утечки.
  • Не пишите в логи ключ и заголовок Authorization. Пакет не включает ключ в сообщения ошибок.
  • Ключ — только в заголовке. В адресе, cookie или теле CRM его отклоняет (400 api_key_misplaced): такие места оседают в логах прокси и истории браузера.

Минимум прав

  • Дайте ключу сайта только право «Аренда: сайт» (rental:site). Лишние права (leads:write, deals:read…) увеличивают ущерб при утечке.
  • Задайте срок действия (рекомендуем год) и, если у сервера постоянный IP, список разрешённых IP.
  • Один ключ — один сайт. Для тестового стенда заведите отдельный ключ.

Если ключ утёк

  1. В CRM: Настройки → Интеграции → API → ключ → «Отозвать». Ключ перестаёт работать сразу.
  2. Создайте новый ключ (или «Перевыпустить» с немедленным отзывом старого секрета) и обновите TYPE_API_KEY на сервере.
  3. Посмотрите в списке ключей последнее использование (время, IP, маршрут) — было ли что-то необычное.
  4. Если ключ попал в репозиторий — удалить коммит недостаточно: ключ уже скомпрометирован, его нужно отозвать.

Вебхук

  • Всегда проверяйте подпись (X-Type-Signature) и время (X-Type-Timestamp, окно 300 с), прежде чем что-то делать. Иначе кто угодно сможет сбрасывать кэш сайта. Как — в разделе «Вебхуки».
  • Сравнивайте подпись за постоянное время.
  • Храните секрет вебхука так же, как ключ, — в переменной окружения сервера.
  • Если секрет утёк — «Новый секрет» в Настройки → Аренда → Сайт; старый сразу перестаёт работать.

Данные посетителей

  • Форма брони передаёт в CRM имя, телефон, e-mail и сообщение гостя. Отправляйте их только по HTTPS со своего сервера и не храните на сайте дольше, чем нужно для повтора заявки.
  • Поле consent — согласие посетителя на обработку данных: передавайте true, только если посетитель его действительно дал.
  • Ответы occupancy() не содержат гостей и сумм — только занятые интервалы.