#Лимиты и ограничения

Все числовые ограничения контракта собраны здесь, чтобы не искать их по статьям. Значения приведены по умолчанию — для конкретного подключения их можно обсудить при онбординге.

#Форматы и длины полей

Поле Ограничение
encounter_id Строка до 255 символов. Только цифры или UUID в форме 8-4-4-4-12
user_email Валидный email до 255 символов. Регистр не учитывается
user_full_name Непустая строка до 255 символов
template До 255 символов
fields До 80 элементов в массиве
fields[].id До 128 символов, непустой, уникальный внутри бланка
fields[].label До 255 символов, непустой
cursor До 512 символов

Превышение любого из этих значений вернёт 422 с разбивкой по полям в объекте errors.

Уникальность fields[].id — единственное ограничение из таблицы, которое не приводит к 422. Если в бланке два поля с одним id, приём врача не срывается: мы берём первое вхождение, остальные пропускаем, а в ответе возвращаем предупреждение duplicate_field_id. Подробнее: Дубликаты id в бланке.

#Частота запросов к Smartica

Лимиты считаются на пару «клиника + ключ», в минуту.

Запрос Лимит
Получение SSO-ссылки 30 в минуту
Список записей 60 в минуту
Забор протокола, привязка, подтверждение 120 в минуту

Отдельно ограничены неудачные попытки авторизации — 30 в минуту на клинику. Если вы упёрлись в этот лимит, значит ключ неверен: перебор не поможет, проверьте секрет.

При превышении приходит 429 с заголовком Retry-After. Дождитесь указанного времени. Не запускайте цикл немедленных повторов — он только продлит блокировку.

#Как выбрать частоту опроса при pull

Лимит в 60 запросов к списку в минуту — это потолок, а не рекомендация. На практике достаточно опрашивать список статуса ready раз в 30–60 секунд на клинику. Заполнение протокола занимает от десятков секунд до нескольких минут, поэтому более частый опрос ничего не ускорит.

#Время жизни и задержки

Что Значение
Одноразовая ссылка для входа врача 60 секунд
Задержка перед началом заполнения после остановки записи около 5 секунд
Timeout запросов Smartica к вашей МИС 30 секунд
Окно действия предыдущего ключа при ротации 72 часа

Время жизни ссылки приходит в поле expires_in ответа. Используйте значение из ответа, а не зашивайте 60 в код — так интеграция переживёт изменение настройки.

Timeout в 30 секунд — это верхний предел, за которым мы считаем запрос неуспешным, а не ориентир. Ваши GET и PUT должны отвечать за доли секунды: читать готовые данные и быстро сохранять payload. Тяжёлую обработку выполняйте после того, как надёжно приняли данные и ответили 200.

#Окно списка записей

Что Значение
Глубина списка по умолчанию 30 дней
Максимальная глубина через since 90 дней
Размер страницы по умолчанию 50 записей
Максимальный размер страницы 100 записей

Запрос с since глубже 90 дней вернёт 422. Записи старше этого окна через партнёрский API недоступны.

#Лимит перезаполнений

Один приём можно перезаполнить не более 10 раз. Счётчик растёт каждый раз, когда протокол генерируется заново, — например, когда врач дописывает приём.

При достижении лимита приём переходит в статус failed. Это защита от бесконечного цикла: в нормальной работе врач не приближается к этому числу.

#Ротация ключа

При выпуске нового API-ключа клиники предыдущий продолжает работать 72 часа. За это время пропишите новый ключ во всех окружениях вашей МИС.

После истечения окна старый ключ перестаёт действовать: SSO начнёт возвращать 401, а при pull протоколы перестанут забираться.

#Что не входит в контракт

Что Статус
Аудиофайл записи Не передаётся. Нужен — согласуйте отдельное расширение
Персональные данные пациента Не передаются и не должны передаваться
Заголовок Idempotency-Key Не используется. Ключ операции — encounter_id
Массовая привязка нескольких записей одним запросом Не поддерживается, только по одной
Отдельный запрос за списком бланков Не нужен: бланк передаётся в теле запроса
Гарантированная повторная доставка на каждую ошибку Не гарантируется, см. ниже
Гарантия ровно одной доставки Не гарантируется, ваш PUT обязан быть идемпотентным

#Повторная доставка

Контракт не гарантирует автоматический повтор каждого неуспешного запроса. Фактические способы повторения:

  • после ошибки GET врач заново открывает приём;
  • после ошибки PUT врач нажимает повтор отправки в интерфейсе Smartica;
  • новая запись или перезаполнение в том же приёме порождает новый PUT.

Отсюда два обязательных требования к вашей стороне: PUT должен быть идемпотентным по encounter_id, и МИС не должна рассчитывать на фиксированное число попыток.

Подробнее: Авторизация, ошибки и повторная доставка.

#Требования к вашему endpoint

Требование Обязательность
HTTPS с публично доверенным сертификатом Обязательно
Ответ 200 с валидным JSON-объектом Обязательно
Кодировка UTF-8, поддержка многострочного текста Обязательно
Ответ 204, пустое тело или HTML Считается ошибкой интеграции
Поддержка тела запроса в несколько мегабайт Желательно: длинная стенограмма может быть объёмной

#Связанные статьи

← Все статьи: Интеграция с МИС Поиск по базе знаний