errors só aparece quando o erro é atribuível a campos específicos. Trate pelo errorCode, não pela message: a mensagem é para humanos e pode mudar.
Códigos
Detalhes que valem saber
404 e não 403 para recurso de outro projeto
404 e não 403 para recurso de outro projeto
Pedir um registro que existe mas pertence a outro projeto devolve
404, não 403. É deliberado: um 403 confirmaria que o id existe. Na prática, trate 404 como “não existe para você”.TOO_MANY_REQUESTS traz o tempo de espera
TOO_MANY_REQUESTS traz o tempo de espera
O array
errors vem com um item de field: "RETRY_AFTER" indicando quanto esperar antes de tentar de novo.LOCK_TIMEOUT costuma ser transitório
LOCK_TIMEOUT costuma ser transitório
Ele indica que outra operação está segurando o mesmo recurso. Uma nova tentativa depois de um intervalo curto geralmente passa. Vale tratar com backoff, diferente dos outros 4xx.