Полная справка по всем кодам ошибок в GraphQL API Blue, организованная по категориям


Формат ответа об ошибке

GraphQL API Blue возвращает ошибки в стандартизированном формате в соответствии со спецификацией GraphQL. Когда происходит ошибка, ответ включает массив errors с подробной информацией о том, что пошло не так.

Пример ответа об ошибке

{
  "errors": [
    {
      "message": "Todo was not found.",
      "extensions": {
        "code": "TODO_NOT_FOUND"
      }
    }
  ]
}

Структура ошибки

Каждый объект ошибки содержит:

  • message: Читаемое человеком описание ошибки
  • extensions.code: Машиночитаемый код ошибки для программной обработки

Безопасность ошибок в производстве

Blue реализует систему безопасности для раскрытия ошибок:

  • Безопасные ошибки: Отображают фактические коды ошибок и сообщения клиентам
  • Небезопасные ошибки: Возвращают общий INTERNAL_SERVER_ERROR, чтобы скрыть чувствительные детали
  • Ресурс не найден: Все ошибки *_NOT_FOUND считаются безопасными и всегда раскрываются

Категории ошибок

Blue определяет 108 пользовательских кодов ошибок, организованных в следующие категории:

Ошибки аутентификации и авторизации

Код ошибки Сообщение Описание
UNAUTHENTICATED "Требуется аутентификация." Запрос требует аутентификации, но она не предоставлена
FORBIDDEN "Вы не авторизованы." Аутентифицирован, но не хватает необходимых разрешений

Ошибки "Ресурс не найден" (всего 52)

Основные ресурсы

Код ошибки Сообщение Описание
TODO_NOT_FOUND "Задача не найдена." Запись/задача не существует или у пользователя нет доступа
TODO_LIST_NOT_FOUND "Список задач не найден." Список не существует или у пользователя нет доступа
PROJECT_NOT_FOUND "Проект не найден." Проект не существует или у пользователя нет доступа
COMPANY_NOT_FOUND "Компания не найдена." Компания не существует или у пользователя нет доступа
USER_NOT_FOUND "Пользователь не найден." Пользователь не существует в системе

Пользовательские поля и формы

Код ошибки Сообщение Описание
CUSTOM_FIELD_NOT_FOUND "Пользовательское поле не найдено." Пользовательское поле не существует
CUSTOM_FIELD_OPTION_NOT_FOUND "Опция пользовательского поля не найдена." Опция выбора поля не существует
FORM_NOT_FOUND "Форма не найдена." Шаблон формы не существует
FORM_FIELD_NOT_FOUND "Поле формы не найдено." Поле формы не существует

Компоненты проекта

Код ошибки Сообщение Описание
TAG_NOT_FOUND "Тег не найден." Тег не существует в проекте
AUTOMATION_NOT_FOUND "Автоматизация не найдена." Правило автоматизации не существует
CHART_NOT_FOUND "График не найден." График панели управления не существует
WEBHOOK_NOT_FOUND "Webhook не найден." Конфигурация webhook не существует
TEMPLATE_NOT_FOUND "Шаблон не найден." Шаблон проекта не существует

Комментарии и действия

Код ошибки Сообщение Описание
COMMENT_NOT_FOUND "Комментарий не найден." Комментарий не существует
ACTIVITY_NOT_FOUND "Действие не найдено." Запись в журнале действий не существует
REACTION_NOT_FOUND "Реакция не найдена." Реакция на комментарий не существует

Другие ресурсы

Код ошибки Сообщение Описание
FILE_NOT_FOUND "Файл не найден." Вложение файла не существует
SUBSCRIPTION_NOT_FOUND "Подписка не найдена." Подписка на оплату не существует
INVOICE_NOT_FOUND "Счет не найден." Запись счета не существует
CHECKLIST_NOT_FOUND "Чек-лист не найден." Чек-лист не существует
CHECKLIST_ITEM_NOT_FOUND "Элемент чек-листа не найден." Элемент чек-листа не существует
PROJECT_ROLE_NOT_FOUND "Роль проекта не найдена." Пользовательская роль проекта не существует
PROJECT_ACCESS_NOT_FOUND "Доступ к проекту не найден." Доступ пользователя к проекту не существует
NOTIFICATION_NOT_FOUND "Уведомление не найдено." Уведомление не существует
DASHBOARD_NOT_FOUND "Панель управления не найдена." Панель управления не существует
KEY_NOT_FOUND "Ключ не найден." Ключ настроек не существует

Ошибки валидации

Код ошибки Сообщение Описание
BAD_USER_INPUT "Неверный ввод." Общая ошибка валидации ввода
VALIDATION_ERROR "Неверные параметры" Параметры запроса не прошли валидацию
BAD_EMAIL "Вы должны ввести действительный адрес электронной почты." Неверный формат электронной почты
INVALID_IDS "Неверные идентификаторы." Один или несколько идентификаторов в запросе неверны
PHONE_INVALID "Телефон неверный." Неверный формат номера телефона
URL_INVALID "URL неверный." Неверный формат URL
INVALID_RECURRING_DUE_DATE "Неверная дата выполнения для повторяющейся задачи" Ошибка валидации даты повторяющейся задачи
INVALID_COLOR "Неверный цвет" Значение цвета не соответствует ожидаемому формату

Ошибки бизнес-логики

Ограничения и квоты

Код ошибки Сообщение Описание
COMPANY_LIMIT "Вы достигли лимита компаний для вашей учетной записи." Достигнут максимальный лимит компаний
PROJECT_LIMIT "Вы достигли лимита проектов для вашей компании." Достигнут максимальный лимит проектов
USER_LIMIT "Вы достигли лимита пользователей для вашей компании." Достигнут максимальный лимит пользователей
PROJECT_TEMPLATE_LIMIT "Вы достигли лимита шаблонов для вашей компании." Достигнут максимальный лимит шаблонов
CUSTOM_FIELD_LIMIT "Достигнут лимит пользовательских полей." Достигнут максимальный лимит пользовательских полей
TODO_LIST_LIMIT "Вы достигли лимита списков для вашего проекта." Максимальное количество списков на проект
TOO_MANY_TODOS "Слишком много задач." Превышен лимит записей
TOO_MANY_OPTIONS "Слишком много опций." Превышен лимит опций выбора
MAX_FILE_SIZE "Максимальный размер файла 4.8 ГБ" Превышен лимит размера загружаемого файла

Конфликты ресурсов

Код ошибки Сообщение Описание
TAG_ALREADY_EXISTS "Тег уже существует." Тег с таким же именем существует в проекте
COMPANY_SLUG_ALREADY_EXISTS "Компания уже существует." Слаг/URL компании занят
USER_ALREADY_EXISTS "Пользователь уже существует." Электронная почта пользователя уже зарегистрирована
ALREADY_INVITED "Пользователь уже приглашен." У пользователя уже есть ожидающее приглашение
USER_ALREADY_IN_PROJECT "Пользователь уже в этом проекте." У пользователя уже есть доступ к проекту
FILE_TYPE_NOT_ALLOWED "Тип файла не разрешен." Загруженный тип файла ограничен

Ошибки разрешений и доступа

Код ошибки Сообщение Описание
UNABLE_TO_DELETE_ONLY_ADMIN "Невозможно удалить единственного администратора в компании." Нельзя удалить последнего администратора
UNABLE_TO_UPDATE_OWNER "Невозможно обновить ВЛАДЕЛЬЦА." Невозможно изменить разрешения владельца
TODO_LIST_IS_HIDDEN "Список задач скрыт." Список скрыт от роли пользователя
COMPANY_NOT_ACTIVE "Компания не активна." Подписка компании неактивна
PROJECT_NOT_ACTIVE "Проект не активен." Проект архивирован/неактивен

Ошибки целостности данных

Код ошибки Сообщение Описание
UNABLE_TO_DELETE_LIST_WITH_TODOS "Невозможно удалить список с задачами." Список должен быть пустым для удаления
UNABLE_TO_DELTE_FILE "Невозможно удалить файл." Удаление файла не удалось (опечатка в коде)
UNABLE_TO_MOVE_TODO "Невозможно переместить задачу." Невозможно переместить запись между списками
DEPENDENCY_HAS_DEPENDENCY "Зависимость имеет зависимость" Обнаружена циклическая зависимость
TODO_DEPENDS_ON_ITSELF "Задача зависит от самой себя" Само-ссылающаяся зависимость

Ошибки Stripe/платежей

Код ошибки Сообщение Описание
STRIPE_CREATING_CUSTOMER "Ошибка при создании клиента в Stripe." Создание клиента Stripe не удалось
STRIPE_ALREADY_SUBSCRIBED "Уже подписан." Активная подписка существует
STRIPE_MISSING_PAYMENT_METHOD "Отсутствует способ оплаты." Нет способа оплаты в файле
STRIPE_CREATING_SUBSCRIPTION "Ошибка при создании подписки в Stripe." Создание подписки не удалось
STRIPE_UPDATING_SUBSCRIPTION "Ошибка при обновлении подписки в Stripe." Обновление подписки не удалось
STRIPE_CHECKOUT_SESSION "Ошибка при создании сессии оформления заказа в Stripe." Создание сессии оформления заказа не удалось
STRIPE_CUSTOMER_PORTAL "Ошибка при создании портала клиента в Stripe." Создание сессии портала не удалось
STRIPE_TAX_ID "Не удалось сохранить налоговый идентификатор" Валидация/сохранение налогового идентификатора не удалось
PAYMENT_REQUIRED "Требуется оплата." Функция требует активной подписки
NO_PAYMENT_REQUIRED "Оплата не требуется." Оплата не нужна для операции

Ошибки аутентификации и сессии

Код ошибки Сообщение Описание
INVALID_CREDENTIALS "Неверные учетные данные." Неправильное имя пользователя/пароль
EXPIRED_RESET_TOKEN "Токен сброса истек." Токен сброса пароля истек
OAUTH_FAILED "Процесс OAuth не удался." Аутентификация OAuth не удалась
SAML_NOT_ENABLED "SSO (SAML) не включен." SAML SSO не настроен
SSO_AUTO_PROVISION_DISABLED "Авто-пр Provision отключен." Невозможно автоматически создать пользователей SSO

Ограничение частоты

Ограничение частоты обрабатывается пакетом graphql-rate-limit с различными конфигурациями:

Тип ограничения Окно Максимум запросов Применяется к
Standard 60s 500 Most queries/mutations
Sensitive 300s 10 Password reset, auth operations
Expensive 60s 20 Complex queries, bulk operations
Search 60s 60 Search operations
File Upload 60s 100 File upload operations

Когда вы достигаете ограничения частоты, вы получите стандартную ошибку GraphQL с сообщением, указывающим на превышение лимита.

Системные и внутренние ошибки

Код ошибки Сообщение Описание
INTERNAL_SERVER_ERROR "Внутренняя ошибка сервера." Общая ошибка для небезопасных ошибок в производстве
UNKNOWN_ERROR "Неизвестная ошибка." Произошла неожиданная ошибка
RESOLVER_NOT_FOUND "Решатель не найден" Отсутствует GraphQL решатель
FIELD_NOT_IN_SCHEMA "Поле отсутствует в схеме" Запрашиваемое поле не существует

Рекомендации по обработке ошибок

Обработка на стороне клиента

try {
  const result = await client.mutate({
    mutation: CREATE_TODO,
    variables: { input }
  });
} catch (error) {
  if (error.graphQLErrors?.length > 0) {
    const errorCode = error.graphQLErrors[0].extensions?.code;
    
    switch (errorCode) {
      case 'UNAUTHENTICATED':
        // Redirect to login
        break;
      case 'TODO_NOT_FOUND':
        // Show "Record not found" message
        break;
      case 'VALIDATION_ERROR':
        // Display validation errors
        break;
      default:
        // Show generic error message
    }
  }
}

Распространенные сценарии ошибок

  1. Требуется аутентификация: UNAUTHENTICATED - Пользователь должен войти в систему
  2. Доступ запрещен: FORBIDDEN - У пользователя нет необходимых ролей/разрешений
  3. Ресурс не найден: *_NOT_FOUND - Ресурс не существует или пользователь не может получить к нему доступ
  4. Ошибка валидации: VALIDATION_ERROR, BAD_USER_INPUT - Проверьте параметры ввода
  5. Превышен лимит частоты: Проверьте заголовки ограничения частоты и реализуйте откат
  6. Требуется оплата: PAYMENT_REQUIRED - Функция требует подписки

Связанная документация

AI Ассистент

Ответы генерируются с использованием ИИ и могут содержать ошибки.

Как я могу вам помочь?

Спросите меня о чем угодно, связанном с Blue или этой документацией.

Введите для отправки • Shift+Enter для новой строки • ⌘I для открытия