Все статьи справки
Открытый API клиники
REST API для сайта, колл-центра, своей CRM и аналитики: ключи с правами, лимит запросов, пациенты, расписание, свободное время, запись, счета, оплаты и прейскурант.
API отвечает по адресу <адрес DentOS>/api/clinic/v1. Полное описание в формате OpenAPI программа отдаёт сама: /api/clinic/v1/openapi.yaml.
Ключ
- Директор открывает «Настройки → API и вебхуки» и создаёт ключ: для чего он, какие права, сколько запросов в минуту.
- Ключ вида
dck_…показывается один раз. В базе хранится только его отпечаток. Потерял — отзови и создай новый. - Ключ передаётся заголовком
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 и вебхуки» у каждого ключа виден журнал запросов: метод, путь без параметров, статус, время. Параметры не пишутся: в них бывают телефоны.