К содержанию
Все статьи справки
  1. Справка
  2. API и вебхуки

Открытый API клиники

REST API для сайта, колл-центра, своей CRM и аналитики: ключи с правами, лимит запросов, пациенты, расписание, свободное время, запись, счета, оплаты и прейскурант.

API отвечает по адресу <адрес DentOS>/api/clinic/v1. Полное описание в формате OpenAPI программа отдаёт сама: /api/clinic/v1/openapi.yaml.

Ключ

  1. Директор открывает «Настройки → API и вебхуки» и создаёт ключ: для чего он, какие права, сколько запросов в минуту.
  2. Ключ вида dck_… показывается один раз. В базе хранится только его отпечаток. Потерял — отзови и создай новый.
  3. Ключ передаётся заголовком Authorization: Bearer dck_….

Ключ привязан к одной клинике: данные других клиник через него недоступны даже по прямому идентификатору.

Права ключа

Право Что открывает
patients:read Поиск и просмотр пациентов
patients:write Создание пациентов
schedule:read Филиалы, врачи, кресла, расписание и свободное время
appointments:write Создание и отмена записей
billing:read Счета и оплаты
prices:read Прейскурант на сегодня

Без нужного права — 403 insufficient_scope. Давай ключу только те права, которые нужны интеграции: для онлайн-записи на сайте хватит schedule:read, patients:write и appointments:write.

Лимит

По умолчанию 120 запросов в минуту на ключ, лимит настраивается. В ответе — X-RateLimit-Limit и X-RateLimit-Remaining, при превышении — 429 и Retry-After в секундах.

Методы

Метод Что делает
GET /me Клиника, имя ключа, права и лимит
GET /patients Поиск по началу фамилии, имени, отчества, по телефону или номеру карты
POST /patients Создать пациента; если такой уже есть — вернётся он, без дубля
GET /patients/{id} Пациент
GET /branches, /doctors, /chairs Филиалы, врачи, кресла
GET /slots Свободное время: смены врачей минус занятое, шаг 15 минут
GET /appointments Записи на день
POST /appointments Записать; без кресла оно подберётся по графику врача
GET /appointments/{id} Запись
POST /appointments/{id}/cancel Отменить; при отмене пациентом администратору ставится задача перезвонить
GET /invoices, /invoices/{id} Счета со строками
GET /payments Оплаты; возврат — с отрицательной суммой
GET /prices Прейскурант на сегодня

Если время занято или вне смены врача, запись вернёт 409 slot_unavailable. Запись через API запускает те же автосценарии, что и запись администратором: подтверждение и напоминания.

Формат

  • Суммы — целые копейки.
  • Время — ISO 8601 с часовым поясом, даты — YYYY-MM-DD по времени клиники.
  • Ошибки — {"error": {"code": "...", "message": "..."}}.
  • Медицинских данных API не отдаёт: ни дневников, ни диагнозов, ни зубов, ни комментариев к приёму.

Подписка

Если подписка клиники не оплачена, API работает только на чтение (403 subscription_suspended на запись). Если клиника заблокирована — 403 clinic_blocked.

Журнал

В «API и вебхуки» у каждого ключа виден журнал запросов: метод, путь без параметров, статус, время. Параметры не пишутся: в них бывают телефоны.