Перейти к содержанию

Справочник кодов ошибок

Каждая ошибка API Pert возвращается в едином JSON-формате:

{
  "error": "Описание ошибки для пользователя",
  "code": "MACHINE_READABLE_CODE",
  "details": {
    "field": "name",
    "reason": "required"
  }
}
  • error — человекочитаемое сообщение.
  • code — стабильный машиночитаемый код. Имеет смысл использовать его для условной логики обработки ошибки в клиенте.
  • details (опционально) — структурированные данные о причине ошибки (например, field и reason для валидационных ошибок).

HTTP-статус выводится из поля Kind ошибки:

Kind HTTP
validation 400 Bad Request
malformed 400 Bad Request
unauthorized 401 Unauthorized
forbidden 403 Forbidden
not_found 404 Not Found
conflict 409 Conflict
unavailable 503 Service Unavailable
internal 500 Internal Server Error

Общие

FORBIDDEN

Клиенту запрещён доступ к ресурсу.

  • HTTP: 403 Forbidden
  • Kind: forbidden

Подробности

Клиент аутентифицирован, но у него нет нужных прав для операции. Не выдаётся при отсутствии ресурса — для этого используется *_NOT_FOUND.

INTERNAL_ERROR

Внутренняя ошибка сервиса.

  • HTTP: 500 Internal Server Error
  • Kind: internal

Подробности

Непредвиденная ошибка на стороне сервера; клиент не должен пытаться автоматически восстановиться по этому коду — нужно повторить операцию позже или обратиться в поддержку.

MALFORMED_JSON

Некорректное тело запроса (не парсится как JSON).

  • HTTP: 400 Bad Request
  • Kind: malformed

Подробности

Тело запроса невалидное (битый JSON, неверная структура).

UNAUTHORIZED

Клиент не аутентифицирован.

  • HTTP: 401 Unauthorized
  • Kind: unauthorized

Подробности

Отсутствует или невалиден bearer-токен / сессионная кука. Клиенту нужно повторить аутентификацию.

VALIDATION_ERROR

Ошибка валидации входных данных.

  • HTTP: 400 Bad Request
  • Kind: validation

Подробности

Значение хотя бы одного поля запроса не соответствует требованиям. Дополнительные данные (имя поля, причина) приходят в Details.

Workspace

WORKSPACE_ALREADY_ASSOCIATED

Workspace уже связан с MPC-конфигурацией.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Попытка повторно ассоциировать workspace с конфигами после того, как ассоциация уже произведена.

WORKSPACE_ALREADY_EXISTS

Конфликт уникальности при создании workspace.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Workspace с таким же уникальным набором атрибутов уже существует.

WORKSPACE_ALREADY_FROZEN

Workspace уже заморожен.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Попытка заморозить workspace, который уже находится в замороженном состоянии.

WORKSPACE_FROZEN

Workspace заморожен, доступны только операции чтения.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Попытка выполнить изменяющую операцию в замороженном workspace. Пока workspace заморожен, разрешены только операции чтения.

WORKSPACE_NOT_FOUND

Workspace не найден.

  • HTTP: 404 Not Found
  • Kind: not_found

Подробности

Запрошенный workspace отсутствует в БД или недоступен текущему пользователю.

WORKSPACE_NOT_FROZEN

Workspace не заморожен.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Попытка разморозить workspace, который не находится в замороженном состоянии.

WORKSPACE_STATUS_INCOMPATIBLE

Статус workspace не позволяет операцию.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Операция требует определённого статуса workspace (например, активации нужен статус new), но текущий статус другой.

WORKSPACE_UNFREEZE_FORBIDDEN

Недостаточно прав для разморозки workspace.

  • HTTP: 403 Forbidden
  • Kind: forbidden

Подробности

Workspace был заморожен администратором платформы и может быть разморожен только администратором платформы.

Vault

VAULT_ALREADY_EXISTS

Vault с таким именем уже существует в workspace.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Имя vault должно быть уникальным в рамках workspace.

VAULT_FROZEN

Операция недопустима над замороженным vault.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Vault находится в статусе frozen — действие требует предварительной разморозки.

VAULT_NOT_FOUND

Vault не найден.

  • HTTP: 404 Not Found
  • Kind: not_found

Подробности

Запрошенный vault отсутствует, удалён или принадлежит другому workspace.

VAULT_UNFREEZE_BLOCKED_BY_AML

Admin не может разморозить AML-замороженный vault.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

AML-провайдер запретил админам снимать заморозку. Для разморозки нужны более широкие полномочия или изменение настроек провайдера.

Wallet

WALLET_ALREADY_EXISTS

Wallet с такой комбинацией параметров уже существует.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Попытка создать wallet/asset для существующей пары vault+currency.

WALLET_ASSET_NOT_FOUND

Asset кошелька не найден.

  • HTTP: 404 Not Found
  • Kind: not_found

Подробности

Запрошенный asset отсутствует или принадлежит другому workspace.

WALLET_CURRENCY_UNKNOWN

Клиент указал неизвестный currency_id.

  • HTTP: 400 Bad Request
  • Kind: validation

Подробности

Currency_id из запроса не зарегистрирован в системе. Поле currency_id приходит в WebError.Details.

WALLET_NETWORK_MISMATCH

Валюта не соответствует сети воркспейса.

  • HTTP: 400 Bad Request
  • Kind: validation

Подробности

Попытка создать кошелёк для mainnet-валюты в testnet-воркспейсе или testnet-валюты в mainnet-воркспейсе.

WALLET_NOT_FOUND

Кошелёк не найден.

  • HTTP: 404 Not Found
  • Kind: not_found

Подробности

Запрошенный wallet/asset отсутствует или принадлежит другому workspace.

Whitelisted Address

WHITELISTED_ADDRESS_ALREADY_EXISTS

Whitelisted address уже существует.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Указанный адрес уже добавлен в этот whitelisted-кошелёк.

WHITELISTED_ADDRESS_DUPLICATE_IN_WORKSPACE

Адрес уже добавлен в другой кошелёк этого workspace.

  • HTTP: 400 Bad Request
  • Kind: validation

Подробности

Указанный адрес уже зарегистрирован в рамках данного workspace. Поле address приходит в WebError.Details.

WHITELISTED_ADDRESS_NOT_FOUND

Whitelisted address не найден.

  • HTTP: 404 Not Found
  • Kind: not_found

Подробности

Запрошенный whitelisted-адрес отсутствует или принадлежит другому кошельку.

WHITELISTED_CURRENCY_UNKNOWN

Клиент указал неизвестный currency_id.

  • HTTP: 400 Bad Request
  • Kind: validation

Подробности

Currency_id из запроса не зарегистрирован в системе. Поле currency_id приходит в WebError.Details.

WHITELISTED_WALLET_ALREADY_EXISTS

Whitelisted wallet с таким именем уже существует.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Имя whitelisted-кошелька должно быть уникальным в рамках workspace.

WHITELISTED_WALLET_NOT_FOUND

Whitelisted wallet не найден.

  • HTTP: 404 Not Found
  • Kind: not_found

Подробности

Запрошенный whitelisted-кошелёк отсутствует или принадлежит неактивному workspace.

AML

AML_PROVIDER_ALREADY_EXISTS

AML-провайдер уже используется.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

В workspace уже подключен AML-провайдер. Необходимо сначала удалить подключенного AML-провайдера, а затем подключить нового.

AML_PROVIDER_INVALID_API_KEY

Некорректный API-ключ AML-провайдера.

  • HTTP: 400 Bad Request
  • Kind: malformed

Подробности

Предоставленный API-ключ был отклонён провайдером при попытке подключения. Нужно перепроверить ключ и повторить запрос.

AML_PROVIDER_NOT_FOUND

AML-провайдер не найден.

  • HTTP: 404 Not Found
  • Kind: not_found

Подробности

Workspace ссылается на AML-провайдера, которого нет среди зарегистрированных в системе. Клиенту следует выбрать другого провайдера из списка доступных.

AML_SCREENING_UNAVAILABLE

Сервис AML-скрининга временно недоступен.

  • HTTP: 503 Service Unavailable
  • Kind: unavailable

Подробности

Система скрининга не ответила или ответила временной ошибкой. Запрос можно повторить позже; транзакция, уже принятая в обработку, будет допроверена автоматически.

Backup

BACKUP_NOT_FOUND

Backup не найден.

  • HTTP: 404 Not Found
  • Kind: not_found

Подробности

Backup отсутствует, ещё не подготовлен или больше не доступен для запрошенной операции.

BACKUP_STATUS_INCOMPATIBLE

Статус backup не позволяет операцию.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Ожидался один статус, найден другой (например, для подтверждения нужен received).

BACKUP_WORKSPACE_INACTIVE

Workspace неактивен для backup-операции.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Для активного workspace разрешено создавать/проверять backup; в неактивном статусе операция отклонена.

Co-signer

COSIGNER_PART_NOT_FOUND

Co-signer part не найден.

  • HTTP: 404 Not Found
  • Kind: not_found

Подробности

Запрошенный part отсутствует, уже закоммичен (его конфиг очищен) или связанный pending-intent недоступен.

COSIGNER_PART_STATUS_INVALID

Некорректный статус part для операции.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Part находится в состоянии, при котором запрошенная операция недопустима (например, попытка commit без предварительного receive).

Gas station

GAS_STATION_CANNOT_ASSIGN_SELF

Попытка активировать auto-fuel на вольте, который сам является gas station.

  • HTTP: 400 Bad Request
  • Kind: validation

Подробности

Gas station vault не может быть источником пополнения для самого себя — выберите другой vault.

GAS_STATION_NETWORK_MISMATCH

Валюта не соответствует сети воркспейса.

  • HTTP: 400 Bad Request
  • Kind: validation

Подробности

Попытка настроить gas station для mainnet-валюты в testnet-воркспейсе или testnet-валюты в mainnet-воркспейсе. Поле currency_id приходит в WebError.Details.

GAS_STATION_NOT_FOUND

Gas station или связанная конфигурация не найдены.

  • HTTP: 404 Not Found
  • Kind: not_found

Подробности

Для workspace/vault не назначена gas station, либо отсутствует asset-конфигурация в назначенной gas station.

Intent

INTENT_BATCH_ACQUIRE_WRONG_ENDPOINT

Batch-sign intent acquire через неверный эндпоинт.

  • HTTP: 400 Bad Request
  • Kind: validation

Подробности

Batch-sign intent должен acquire-ться через /pending-intent/{id}/acquire-sign, а не через /acquire.

INTENT_NOT_ACQUIRABLE

Intent нельзя acquire текущим пользователем.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Пользователь не подходит на роль acquire-er (нет прав либо intent адресован другому target).

INTENT_NOT_FOUND

Pending intent не найден.

  • HTTP: 404 Not Found
  • Kind: not_found

Подробности

Запрошенный pending intent отсутствует, отозван или принадлежит другому workspace.

INTENT_NOT_REJECTABLE

Sign intent нельзя отклонить.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Отклонить запрос на подпись можно, только пока подпись собирается. Приходит, если intent не типа sign, уже исполнен или отозван, его подпись уже ушла в исполнение, либо транзакция уже в терминальном статусе. Текущие статусы приходят в WebError.Details (intent_status, transaction_status).

INTENT_NOT_SIGNABLE

Intent нельзя подписать.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Для операции AcquireSign intent должен быть типа sign.

INTENT_PAYLOAD_MISSING

Payload intent отсутствует или null.

  • HTTP: 400 Bad Request
  • Kind: validation

Подробности

Тело pending intent не содержит обязательной секции intent.

INTENT_SIGNING_UNAVAILABLE

Не удалось подписать intent.

  • HTTP: 503 Service Unavailable
  • Kind: unavailable

Подробности

Внешняя система подписи временно недоступна; операцию можно повторить.

INTENT_STATUS_INVALID

Некорректный статус intent для операции.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Операция требует определённого статуса (active/acquired); текущий статус другой и приходит в WebError.Details.

Transaction

TRANSACTION_ALREADY_EXISTS

Идемпотентный ключ уже использован.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

По этому X-Idempotency-Key транзакция уже создана. Повторный запрос не создаёт новую и не выполняет балансовую проверку заново. ID уже существующей транзакции кладётся в WebError.Details под ключом transaction_id, чтобы клиент мог её получить.

TRANSACTION_APPROVAL_ALREADY_RECORDED

Попытка изменить уже принятое решение по транзакции.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Решение этого пользователя по запросу на подтверждение уже учтено и не может быть изменено. Ранее записанное решение приходит в WebError.Details под ключом approval_status. Повтор того же самого решения ошибкой не считается и возвращает успех — ретрай после потери ответа безопасен.

TRANSACTION_APPROVAL_INVALID

Попытка апрува невалидным пользователем или для неактуального запроса на подтверждение.

  • HTTP: 403 Forbidden
  • Kind: forbidden

Подробности

Пользователь не входит в список approvers, запрос на подтверждение уже завершён / отозван, либо указанная транзакция не относится к этому запросу на подтверждение.

TRANSACTION_APPROVERS_UNAVAILABLE

Ни у одного апрувера нет привязанного устройства.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Правила политики потребовали аппрувал, но у выбранных апруверов нет ни одного зарегистрированного устройства, через которое можно подтвердить транзакцию. Транзакция помечается failed. Клиенту нужно сначала зарегистрировать устройства апруверов и создать транзакцию заново.

TRANSACTION_ASSET_MISMATCH

Source и target asset не совпадают.

  • HTTP: 400 Bad Request
  • Kind: validation

Подробности

Для перевода между внутренними кошельками источник и приёмник должны относиться к одной и той же валюте.

TRANSACTION_BLOCKED_BY_POLICY

Транзакция заблокирована правилами политики переводов.

  • HTTP: 403 Forbidden
  • Kind: forbidden

Подробности

Правила политики не разрешают эту операцию. Причина и метаданные решения едут в WebError.Details.

TRANSACTION_BROADCAST_REJECTED

Сеть отклонила транзакцию при отправке.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Внешняя система обработки транзакций отклонила транзакцию при попытке отправить её в сеть (общий случай, без более специфичной причины).

TRANSACTION_DROPPED_BY_PLATFORM

Платформа отменила транзакцию до отправки в сеть.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Платформа приняла решение не отправлять транзакцию в сеть (например, после ручного вмешательства оператора).

TRANSACTION_EXPIRED_BEFORE_BROADCAST

Транзакция истекла до отправки в сеть.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Срок действия транзакции истёк раньше, чем её успели отправить в сеть (например, устарел использованный blockhash/nonce-контекст).

TRANSACTION_FEE_LIMIT_TOO_LOW

fee_limit не покрывает комиссию уже на этапе создания транзакции.

  • HTTP: 400 Bad Request
  • Kind: validation

Подробности

Сеть подорожала между котировкой и созданием транзакции. В отличие от CodeTransactionFeeStale (устарела после подписания), тут транзакция ещё не создана — нужна свежая котировка и повтор с новым fee_limit.

TRANSACTION_FEE_STALE

Комиссия успела устареть до отправки в сеть.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Между расчётом комиссии и отправкой транзакции сеть успела подорожать настолько, что рассчитанная комиссия больше не актуальна. Нужно пересоздать транзакцию со свежей котировкой комиссии.

TRANSACTION_INSUFFICIENT_BALANCE

На источнике недостаточно available-баланса.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Available-баланс источника меньше суммы перевода (плюс комиссия, если она списывается из того же актива). В WebError.Details кладутся available и required в атомарных единицах.

TRANSACTION_INSUFFICIENT_FEE_BALANCE

У источника не хватает базового актива на комиссию сети.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Переводится токен, а комиссия сети списывается в базовом активе сети (нативной монете), а не в самом токене. Available-баланса этого базового актива меньше комиссии. В WebError.Details кладутся available, required (в атомарных единицах базового актива) и asset (идентификатор базового актива). Если для вольта включена авто-заправка, она запускается в фоне — повтор перевода может пройти позже, когда заправка дойдёт.

TRANSACTION_NOT_CANCELABLE

Транзакцию уже нельзя отменить.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Отмена возможна, только пока транзакция не передана в сеть. Как только подпись собрана и транзакция ушла на рассылку, отменить её средствами платформы нельзя — исход определяет блокчейн. Также возвращается, если транзакция уже в терминальном статусе (в том числе отменена ранее). Текущий статус кладётся в WebError.Details под ключом status.

TRANSACTION_NOT_FOUND

Транзакция не найдена.

  • HTTP: 404 Not Found
  • Kind: not_found

Подробности

Запрошенная транзакция отсутствует или принадлежит другому workspace.

TRANSACTION_ONCHAIN_FAILED

Транзакция реально исполнилась в сети и завершилась неудачей.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Транзакция дошла до сети и была включена в блок, но её исполнение завершилось ошибкой (например, revert). Это финальный результат: в отличие от CodeTransactionProviderUnavailable, повторная попытка с теми же параметрами не поможет.

TRANSACTION_PROVIDER_UNAVAILABLE

Внешняя система обработки транзакций временно недоступна.

  • HTTP: 503 Service Unavailable
  • Kind: unavailable

Подробности

Не удалось получить статус транзакции из-за таймаута или сбоя на стороне внешней системы обработки транзакций. Можно повторить запрос позже.

TRANSACTION_STATUS_INCOMPATIBLE

Статус транзакции не позволяет операцию.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Операция требует определённого статуса (например, разморозка нужна только для frozen). Текущий статус кладётся в WebError.Details.

TRANSACTION_TARGET_MISSING

Не задан адрес/кошелёк назначения.

  • HTTP: 400 Bad Request
  • Kind: validation

Подробности

В запросе нужно указать либо target_address, либо target_wallet_id.

TRANSACTION_UNFREEZE_BLOCKED_BY_AML

Admin не может разморозить AML-замороженную транзакцию.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

AML-провайдер запретил админам снимать заморозку транзакций.

TRANSACTION_UPSTREAM_ERROR

Ошибка от внешней системы обработки транзакций.

  • HTTP: статус наследуется от Kind, который выводится из status_code в Details
  • Kind: validation | not_found | conflict | unauthorized | forbidden | unavailable | internal

Подробности

Внешняя система обработки транзакций вернула не-2xx ответ. Все полезные поля upstream-ответа (status_code, error_code, error_details, transaction_id, status, expired_at) доступны через WebError.Details. Если в upstream-ответе был error_code, именно он позволяет клиенту реагировать на конкретный сценарий.

Company

COMPANY_NOT_FOUND

Компания не найдена.

  • HTTP: 404 Not Found
  • Kind: not_found

Подробности

Запрошенная компания отсутствует в системе.

Webhook

WEBHOOK_LIMIT_EXCEEDED

Превышен лимит webhooks для workspace.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Для workspace настроено максимально допустимое количество webhooks. Удалите неактуальные перед созданием новых.

WEBHOOK_NOT_FOUND

Webhook не найден.

  • HTTP: 404 Not Found
  • Kind: not_found

Подробности

Запрошенный webhook отсутствует или принадлежит другому workspace.

WEBHOOK_SIGNING_KEY_UNAVAILABLE

KMS-подписант не сконфигурирован.

  • HTTP: 503 Service Unavailable
  • Kind: unavailable

Подробности

Попытка получить публичный ключ для проверки подписи, но trust-сервис не настроен. Скорее всего ошибка конфигурации сервиса.

WEBHOOK_URL_INVALID

URL вебхука не прошёл проверку.

  • HTTP: 400 Bad Request
  • Kind: validation

Подробности

URL не парсится, использует недопустимую схему, указывает на loopback/приватную сеть или хост не резолвится. Конкретная причина едет в WebError.Details.

User

TOTP_INVALID

Переданный TOTP-код не подошёл.

  • HTTP: 400 Bad Request
  • Kind: validation

Подробности

Код не совпал ни с основным TOTP, ни с backup-кодом. Неудачные попытки учитываются брутфорс-защитой (см. CodeTOTPTooManyAttempts).

TOTP_REQUIRED

Для операции требуется TOTP-код, но он не передан.

  • HTTP: 400 Bad Request
  • Kind: validation

Подробности

У пользователя включена 2FA — повторить запрос с totp_code. Если доступ к TOTP утерян (сценарий забытого пароля), обратиться в поддержку.

TOTP_RESET_TOO_MANY_ATTEMPTS

Превышен лимит неверных паролей при сбросе 2FA.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

По этой ссылке сброса накоплено слишком много неверных паролей за окно. Проверка временно заблокирована во избежание подбора пароля; если срок ссылки истёк или попытки исчерпаны, запросить новый сброс у поддержки.

TOTP_TOO_MANY_ATTEMPTS

Превышен лимит неудачных попыток ввода TOTP-кода.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

По пользователю накоплено слишком много неверных попыток 2FA за окно. Проверка временно заблокирована во избежание брутфорса; повторить позже.

USER_CANNOT_PERFORM_OPERATION_ON_HIMSELF

Действие над собственной учётной записью не разрешено.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Пользователь-инициатор не может выполнить действие, где объектом является он сам. Например, изменить свою роль, удалить или заблокировать себя и тд.

USER_NOT_FOUND

Пользователь не найден.

  • HTTP: 404 Not Found
  • Kind: not_found

Подробности

Пользователь не существует в системе (в обычном или платформенном тенантах)

USER_STATE_INCOMPATIBLE

Состояние, в котором находится аккаунт пользователя не позволяет выполнить операцию.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Для выполнения операции требуется определенное состояние аккаунта пользователя. Это может быть конкретный статус, роль, факт регистрации в системе, наличие/отсутствие TOTP и тд.

Role

ROLE_NOT_FOUND

Роль не найдена.

  • HTTP: 404 Not Found
  • Kind: not_found

Подробности

Роль не существует в системе.

Permission

PERMISSION_NOT_FOUND

Пермишен не найден.

  • HTTP: 404 Not Found
  • Kind: not_found

Подробности

Пермишен не существует в системе.

Tenant

TENANT_INACTIVE

Тенант не активирован.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Для выполнения операции требуется, чтобы тенант был активирован

TENANT_NOT_FOUND

Тенант не найден.

  • HTTP: 404 Not Found
  • Kind: not_found

Подробности

Тенант не существует в системе.

TENANT_TYPE_INACTIVE

Тип тенанта не активирован.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Для выполнения операции требуется, чтобы тип тенант был активирован

TENANT_TYPE_NOT_FOUND

Тип тенанта не найден.

  • HTTP: 404 Not Found
  • Kind: not_found

Подробности

Тип тенанта не существует в системе.

Session

SESSION_ALREADY_LOGGED_OUT

Сессия уже завершена.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Невозможно выйти из сессии, которая уже завершена (logout уже выполнен).

SESSION_EXPIRED

Время действия сессии истекло.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Время действия сессии истекло

SESSION_NOT_FOUND

Сессия не найдена.

  • HTTP: 404 Not Found
  • Kind: not_found

Подробности

Сессия не существует в системе.

Device

DEVICE_ALREADY_EXISTS

Конфликт уникальности при привязке устройства пользователя.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Девайс с таким же уникальным набором атрибутов уже существует.

DEVICE_INACTIVE

Устройство не активировано.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Для выполнения операции требуется, чтобы устройство было активировано

DEVICE_NOT_FOUND

Устройство не найдено.

  • HTTP: 404 Not Found
  • Kind: not_found

Подробности

Устройство пользователя не существует в системе.

DEVICE_UNPAIR_FORBIDDEN

Отвязка устройства запрещена ролью пользователя.

  • HTTP: 403 Forbidden
  • Kind: forbidden

Подробности

Роль пользователя в тенанте помечена unpairable_device: true в roles.yml — отвязка/отзыв устройства запрещены для всех, включая самого пользователя и платформенного администратора.

API Key

API_KEY_ALREADY_REVOKED

API ключ уже был отозван.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Невозможно отозвать API ключ, который уже отозван.

API_KEY_EXPIRED

Время действия API ключа истекло.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Невозможно использовать API ключ, время действия которого истекло

API_KEY_NOT_FOUND

API ключ не найден.

  • HTTP: 404 Not Found
  • Kind: not_found

Подробности

API ключ не существует в системе.

API_KEY_RATE_LIMIT_REACHED

Превышен или достигнут лимит запросов.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Невозможно использовать API ключ, у которого достигнуто ограничение на количество запросов

Service Account

SERVICE_ACCOUNT_ALREADY_EXISTS

Конфликт уникальности при создании сервис аккаунта.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Сервис аккаунт с таким же уникальным набором атрибутов уже существует.

SERVICE_ACCOUNT_INACTIVE

Сервисный аккаунт не активирован.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Для выполнения операции требуется, чтобы сервисный аккаунт был активирован

SERVICE_ACCOUNT_NOT_FOUND

Сервисный аккаунт не найден.

  • HTTP: 404 Not Found
  • Kind: not_found

Подробности

Сервисный аккаунт не существует в системе.

Policy

POLICY_NOT_FOUND

Политика не найдена.

  • HTTP: 404 Not Found
  • Kind: not_found

Подробности

Политика не существует в воркспейсе.

POLICY_VERSION_NOT_FOUND

Версия политика не найдена.

  • HTTP: 404 Not Found
  • Kind: not_found

Подробности

Версия политики не существует в воркспейсе.

TRANSFER_POLICY_INVALID

Активная политика переводов настроена некорректно.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Сработавшее правило активной политики переводов невозможно применить к транзакции: в правиле нет действующих подписантов, набор апруверов пуст или после исключения инициатора и неактивных участников меньше требуемого порога, либо настройки подписантов противоречат друг другу. Транзакция помечается failed. Повторять её бессмысленно, пока администратор не исправит политику. Конкретная причина приходит в сообщении ошибки. В отличие от TRANSACTION_APPROVERS_UNAVAILABLE, проблема здесь в самой политике, а не в отсутствии устройств у корректно заданных апруверов.

Group

GROUP_MEMBERS_LIMIT_REACHED

Достигнут лимит числа членов группы.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

User_groups.max_members_per_group (roles.yml, дефолт 100, 0 = без лимита). Проверка на уровне приложения при добавлении членов.

GROUP_NAME_TAKEN

Имя группы занято.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

В тенанте уже существует группа с таким именем.

GROUP_NOT_FOUND

Группа не найдена.

  • HTTP: 404 Not Found
  • Kind: not_found

Подробности

Группа пользователей не существует в системе.

ROLE_FORBIDDEN_FOR_GROUP

Роль пользователя запрещает членство в группах.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Роль пользователя в тенанте группы входит в список user_groups.membership_forbidden_roles (roles.yml), по умолчанию VIEWER. Проверка выполняется только в момент добавления: смена роли уже состоящего в группе пользователя членство не пересматривает.

USER_ALREADY_IN_GROUP

Пользователь уже состоит в группе.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Повторное добавление пользователя в группу.

USER_NOT_IN_GROUP

Пользователь не состоит в группе.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Попытка удалить из группы пользователя, который в ней не состоит.

Rule

POLICY_RULE_INVALID_SIGNER_CONFIG

Противоречивая настройка подписантов в правиле политики.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

В правиле одновременно включён режим «подписывает инициатор» и заданы другие подписанты или группы. Правило нужно исправить.

POLICY_RULE_NO_ELIGIBLE_APPROVERS

В правиле политики недостаточно действующих апруверов.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Набор апруверов сработавшего правила пуст (например, указана пустая группа), либо после исключения инициатора или неактивных участников апруверов меньше требуемого порога. Транзакции по этому правилу невозможны, пока правило не исправят.

POLICY_RULE_NO_ELIGIBLE_INITIATORS

В правиле политики нет ни одного действующего инициатора.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Инициаторы правила активной политики заданы только группами пользователей, и ни в одной из них нет действующих участников. Правило не может сработать ни для кого, и решение по транзакции молча принимало бы следующее правило. Транзакции невозможны, пока правило не исправят.

POLICY_RULE_NO_ELIGIBLE_SIGNERS

В правиле политики нет ни одного действующего подписанта.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Сработавшее правило активной политики не содержит ни одного действующего подписанта (например, в подписантах указана пустая группа). Транзакции по этому правилу невозможны, пока правило не исправят.

Tags

TAG_ALREADY_EXISTS

Конфликт уникальности при создании tag.

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Tag с таким же уникальным набором атрибутов уже существует.

TAG_ATTACHED_TO_VAULT

Tag привязан к vault

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Невозможно выполнить операцию (обычно удаление) тк tag привязан к vault. Сначала необходимо отвязать tag от vault

TAG_IS_USED_IN_POLICY_RULE

Tag используется в правилах политик

  • HTTP: 409 Conflict
  • Kind: conflict

Подробности

Невозможно выполнить операцию (обычно удаление), тк tag используется в одном или нескольких правилах политик

TAG_NOT_FOUND

Tag не найден.

  • HTTP: 404 Not Found
  • Kind: not_found

Подробности

Запрошенный tag отсутствует, удалён или принадлежит другому workspace.