Перейти к основному содержанию
Класс ошибки задаёт HTTP-статус, а точную причину несёт строковый код. Он приходит в заголовке X-Error-Reason и дублируется в теле ответа. Тело — стандартный google.rpc.Status, поэтому поле code в нём числовое (код gRPC), а не строка.
Для программной обработки ветвитесь по заголовку X-Error-Reason. Если заголовки недоступны, тот же код лежит в details[].metadata.code, а details[].reason — это он же с точками, заменёнными на подчёркивания. Текст message предназначен человеку и может меняться — не сопоставляйте с ним.
Не ветвитесь по числовому code в теле: это код gRPC, а не код ошибки Doodocs. Значение 7 в примере означает PermissionDenied, а не «недостаточно областей».
Для ошибок «ресурс не найден» в details добавляется второй элемент google.rpc.ResourceInfo с полями resourceType и resourceName.

Коды состояния

Коды ошибок

Ключ и доступ

Списки и параметры

Сотрудники

Документы

Файлы

Вебхуки

Ingest

Почему 404, а не 403

Чтобы API нельзя было использовать как оракул, «не существует», «нет доступа» и «черновик/удалён» для одиночных ресурсов возвращают одинаковый 404 — например EMPLOYEE_NOT_FOUND для сотрудника и DOCUMENT_NOT_FOUND для документа. По коду ответа нельзя выяснить, существует ли скрытый от вас ресурс.

Ограничения preview

  • Ошибка ограничителя частоты (429) приходит без X-Error-Reason и с пустым details. Опознавайте её по статусу, а паузу берите из заголовка Retry-After.
  • Опечатка в имени query-параметра обрабатывается транскодером до попадания в API и возвращает 500 с текстом unknown field in field path. Неизвестное значение параметра при этом даёт корректный 400.