401 unauthorized |
нет ключа или токена, токен просрочен |
передайте X-API-Key или войдите заново через /api/v1/auth/login |
401 invalid_credentials |
вход: неверный логин или пароль (ответ одинаковый) |
проверьте логин и пароль; аккаунта нет — /api/v1/auth/register |
403 forbidden, csrf |
ключ не подходит; не та роль (пациент вызвал маршрут врача); нет доступа к пациенту; запрос с cookie без X-Justmedit: 1 |
проверьте ключ, роль и срок доступа |
403 password_required |
по токену API: новый токен, ссылка врачу или «выйти везде» без поля password |
добавьте в тело "password" — пароль аккаунта; с cookie сайта он не нужен |
403 wrong_password |
неверный пароль: удаление аккаунта, смена пароля (поле old), токен, ссылка врачу, «выйти везде» по токену |
передайте текущий пароль; действие не выполнено (при удалении — ничего не удалено) |
404 not_found |
нет такой записи или маршрута |
проверьте путь и id (32 шестнадцатеричных знака) |
404 share_invalid |
ссылка врачу уже использована, отозвана или истекла (48 ч) |
попросите пациента создать новую ссылку |
409 login_taken |
регистрация: логин занят (регистр не важен) |
выберите другой логин или войдите |
413 payload_too_large |
тело или файл больше 10 МБ |
разбейте пакет на части |
413 record_too_large |
запись кабинета: вход анализа больше 16 КБ |
уберите лишние показатели, референсы или patient_ref |
415 unsupported_media_type |
тело запроса кабинета без Content-Type: application/json |
отправьте JSON с этим заголовком |
422 invalid_*, file_required… |
ошибка ввода: возраст вне 18–120, нет гемоглобина, неизвестная единица, не тот файл |
исправьте поле из field по тексту message |
422 unknown_analyte |
кабинет и референсы врача: показатель не из справочника |
коды и названия — GET /api/v1/reference |
422 missing_field |
PATCH /api/v1/doctor/lab-refs/{id} с пустым телом |
передайте хотя бы одно из полей name, default, ranges |
422 too_many_tokens, quota_exceeded |
именованных токенов уже 20; данных пользователя больше 5 МБ |
отзовите ненужный токен; удалите старые записи |
429 rate_limited |
превышен лимит запросов в минуту |
повторите через Retry-After секунд |
503 service_busy, storage_unavailable |
заняты оба слота тяжёлых расчётов; хранилище кабинета недоступно |
повторите через Retry-After секунд |
503 signups_paused |
регистрация: достигнут суточный предел новых аккаунтов |
повторите позже (Retry-After); вход работает |
507 storage_full |
хранилище кабинета заполнено: новые записи, наборы, ссылки и регистрации не принимаются |
повторите позже; чтение, выгрузка и удаление работают |
500 internal |
внутренняя ошибка; подробностей и трассировки в ответе нет |
повторите позже; если ошибка повторяется — сообщите время запроса |