Referência de Erros

Todos os códigos de status HTTP retornados pela API de Integração Fhinck e como interpretá-los.

Shape padrão de resposta

Toda resposta da API — com sucesso ou erro — inclui o campo booleano err:

Sucesso
{
  "err": false,
  "result": { ... }
}
Erro
{
  "err": true,
  "message": "Descrição do erro"
}

Códigos HTTP

Status Nome Quando ocorre Ação recomendada
200 OK Requisição processada com sucesso. Verificar err: false antes de consumir result.
400 Bad Request Campo key ausente, nulo ou com formato inválido. Verificar se a key está presente e não foi truncada.
401 Unauthorized A key não pôde ser descriptografada ou resulta em empresa nula. Solicitar nova key ao time Fhinck.
422 Unprocessable Entity Campos obrigatórios ausentes ou com formato inválido (ex.: data fora do padrão, tipo errado). Verificar o schema do endpoint na documentação específica.
429 Too Many Requests Limite de requisições atingido. Aguardar o período de cooldown indicado e retentar.
500 Internal Server Error Falha inesperada no servidor Fhinck. Retentar após alguns segundos. Se persistir, contato@fhinck.com.

Exemplos de resposta por código

400 — Bad Request

JSON — key ausente
{
  "err": true,
  "message": "Parametro key não informado ou inválido",
  "code": "MISSING_KEY"
}

401 — Unauthorized

JSON — key inválida
{
  "err": true,
  "message": "Parametro key não informado ou inválido",
  "code": "INVALID_KEY"
}

422 — Unprocessable Entity

JSON — campos ausentes
{
  "err": true,
  "message": "Campos obrigatórios ausentes: user, reqMinutes",
  "code": "MISSING_REQUIRED_FIELDS"
}

429 — Too Many Requests

JSON — rate limit
{
  "err": true,
  "message": "Rate limit excedido. Aguarde 1 minuto e retente.",
  "retryAfter": 60
}

500 — Internal Server Error

JSON — erro interno
{
  "err": true,
  "message": "Erro interno ao processar a requisição",
  "code": 500
}

Tratamento recomendado

Implemente sempre verificação do campo err antes de consumir a resposta:

JavaScript
const res = await fetch('https://integrations.fhinck.com/masterData', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ key: process.env.FHINCK_KEY, data: { employees: [] } })
});

const data = await res.json();

if (data.err) {
  switch (res.status) {
    case 400:
    case 401:
      throw new Error('Chave de integração inválida');
    case 422:
      throw new Error(`Dados inválidos: ${data.message}`);
    case 429:
      // retentar com backoff exponencial
      break;
    case 500:
      throw new Error('Erro interno Fhinck — tente novamente');
    default:
      throw new Error(data.message || 'Erro desconhecido');
  }
}

// Sucesso
console.log(data.result);

Campo err vs. HTTP status

Alguns endpoints de leitura retornam HTTP 200 mesmo quando não há dados, com err: false e result: []. Sempre cheque o campo err em vez de confiar apenas no status HTTP.

Nunca ignore o campo err. Um endpoint pode retornar HTTP 200 com err: true em casos legados de erros de negócio.