Guia
Erros
Todo erro das duas superfícies responde no mesmo formato, com umcode estável para o seu código tratar e uma mensagem em português para você ler.
O formato
{
"error": "campo não filtrável: notes",
"code": "FilterFieldNotAllowed",
"requestId": "req-8f3c1a2e"
}| Campo | É |
|---|---|
code | O identificador estável do erro. Trate por ele, nunca pelo texto da mensagem |
error | A mensagem legível. Nos erros 4xx ela é a instrução de como corrigir |
requestId | Identifica esta requisição no nosso log. Guarde ao relatar |
O code faz parte do contrato e não muda dentro dav1 — veja Versionamento. Já o texto de error pode ser reescrito a qualquer momento para ficar mais claro. Código que compara a mensagem quebra numa melhoria de redação.
Acesso
| Código | HTTP | O que houve e o que fazer |
|---|---|---|
Unauthorized | 401 | Token ausente, inválido, revogado ou expirado. Confira o cabeçalhoAuthorization: Bearer oag_…; se estiver certo, o token não vale mais — crie outro em Integrações |
IpNotAllowed | 403 | O token tem lista de IPs e a chamada veio de fora dela. Ajuste a lista ou use um token sem restrição de origem |
ScopeMissing | 403 | O token não carrega o escopo daquela coleção. Escopo não se acrescenta depois: crie um token novo com os escopos certos |
OpenAGROsNotLicensed | 403 | A organização não tem o OpenAGROs no contrato. Nenhum token vai funcionar até isso mudar |
RateLimited | 429 | Passou do limite por minuto do token. Espere a virada do minuto e repita — veja Limite de requisições |
Consulta
São erros de como a consulta foi escrita. Todos trazem, na mensagem, o campo ou o trecho que causou o problema.
| Código | HTTP | O que houve e o que fazer |
|---|---|---|
FilterRequired | 400 | A coleção exige uma janela de datas e a consulta não trouxe nenhuma. No REST não há como declará-la: use a versão OData |
FilterFieldNotAllowed | 400 | O campo existe, mas não é filtrável. Os filtráveis estão marcados na página da coleção |
FilterInvalid | 400 | O $filter não é uma expressão OData válida. Aspas simples em texto, datas em AAAA-MM-DD |
OrderByFieldNotAllowed | 400 | O campo existe, mas não é ordenável |
OrderByInvalid | 400 | Direção inválida no $orderby: só asc edesc |
SelectFieldUnknown | 400 | O $select pediu um campo que a coleção não tem. Confira a grafia — os nomes são em inglês e diferenciam maiúsculas |
UnsupportedPaging | 400 | Combinação de paginação que a coleção não aceita. Veja os limites depageSize em REST |
validation_error | 400 | Um parâmetro está fora do formato esperado. A mensagem nomeia o campo |
NotFound | 404 | Coleção ou registro inexistente para este token |
Capacidade não suportada
O 501 é diferente do 400: a consulta está correta, e é a coleção que não sabe aplicar aquela operação no servidor.
| Código | HTTP | O que houve e o que fazer |
|---|---|---|
FilterUnsupported | 501 | A coleção não filtra no servidor |
OrderByUnsupported | 501 | A coleção não ordena no servidor |
Filtrar depois de paginar filtraria só a página, e a API devolveria um pedaço da coleção com cara de resultado completo — o erro só apareceria no total do seu relatório, semanas depois. Preferimos recusar: o Power BI entende o 501 e passa a filtrar do lado dele.
Erros nossos
Qualquer 5xx é problema do nosso lado. A mensagem é deliberadamente genérica e vem com uma referência:
{
"error": "Erro ao consultar a origem dos dados. Informe a referência 3f2c1c20-d4ad-4386-bc44-097bf481792a.",
"code": "ErpQueryError",
"requestId": "req-11b0d7c4"
}O detalhe técnico fica no nosso log, não na resposta — mensagem de erro de banco carrega nome de tabela, de coluna e endereço de servidor, e isso não pode viajar numa API aberta. Guarde a referência: é ela que localiza a ocorrência exata quando você nos procurar.
Limite de requisições
O limite é por token, por minuto, no valor escolhido na criação, até o teto de 240 da superfície aberta. A janela é fixa: ao receber 429, espere a virada do minuto e repita.
Se você importa muito volume, o caminho não é subir o limite — é pedir menos vezes. No OData, $filter e $select reduzem o que trafega por requisição; no REST, pageSize=200 é o maior salto por página.