Pular para o conteúdo
Menu de documentos

API REST

Erros

A estrutura do erro, cada código de erro e como repetir com segurança.

Erros usam códigos HTTP normais e um corpo JSON com um code estável que você pode verificar no seu código, e um message escrito para pessoas.

json
{
  "error": {
    "code": "validation_error",
    "message": "Some fields are invalid.",
    "issues": [
      {
        "path": "products.0.listPrice",
        "message": "Too small: expected number to be >=0"
      }
    ]
  }
}

issues existe apenas para validation_error. Cada problema tem path apontando para o campo, com posições de lista contadas a partir de 0.

Códigos de erroLink para esta seção#

StatusCódigoO que aconteceuO que fazer
400validation_errorUm parâmetro de consulta ou campo do corpo está faltando ou inválido.Corrija os campos listados em issues.
400invalid_jsonO corpo não é JSON válido.Envie JSON com Content-Type: application/json.
400invalid_requestA solicitação é válida, mas não é permitida no momento, por exemplo, marcando um novo pedido como concluído.Leia message; não tente novamente sem alterações.
401unauthorizedChave de API ausente, desconhecida ou revogada.Verifique o cabeçalho Authorization: Bearer e que a chave ainda está ativa.
401key_owner_removedA pessoa que criou a chave saiu do workspace.Crie uma nova chave a partir de alguém que ainda tenha acesso.
403insufficient_scopeUma chave somente leitura tentou gravar.Use uma chave de Leitura e Gravação.
403read_onlyGravações via API estão indisponíveis na atual entidade Free do workspace.O proprietário gerencia o plano no site. As chaves existentes ainda leem.
403forbiddenA pessoa que criou a chave não tem permissão para fazer isso.Pergunte ao proprietário do workspace, ou crie uma chave de alguém com essa permissão.
403workspace_suspendedTradeCatalog suspendeu o workspace. O proprietário foi notificado sobre o motivo.As chaves funcionam novamente quando a suspensão é levantada.
404not_foundNenhum endpoint, produto, cliente, pedido ou alteração de preço neste workspace.Verifique o id, SKU ou código da conta.
405method_not_allowedO caminho existe, mas não com este método.Use um método do cabeçalho Allow.
429rate_limitedMais de 120 solicitações por minuto com esta chave.Espere Retry-After segundos (60), depois tente novamente.
500internal_errorAlgo deu errado do nosso lado.Tente novamente com backoff. Se continuar acontecendo, entre em contato com o suporte.

IDs de outro workspace sempre retornam 404 not_found, nunca dados de terceiros.

Tentativa de novoLink para esta seção#

Tente novamente as respostas 429 e 5xx com backoff. Não tente novamente outras respostas 4xx: elas falharão da mesma forma.

Todas as gravações da API são seguras para repetir: PUT corresponde às linhas pelo SKU ou código de conta, e PATCH /orders/{id} falha com invalid_request se o pedido já tiver avançado. Assim, uma nova tentativa após um timeout de rede não duplicará nada.

js
async function api(path, init = {}, attempt = 0) {
  const res = await fetch(`https://tradecatalog.app/api/v1${path}`, {
    ...init,
    headers: {
      Authorization: `Bearer ${process.env.TRADECATALOG_API_KEY}`,
      'Content-Type': 'application/json',
      ...init.headers,
    },
  })
  if ((res.status === 429 || res.status >= 500) && attempt < 5) {
    const wait = Number(res.headers.get('Retry-After')) || 2 ** attempt
    await new Promise((resolve) => setTimeout(resolve, wait * 1000))
    return api(path, init, attempt + 1)
  }
  const body = await res.json()
  if (!res.ok) {
    const error = new Error(`${body.error.code}: ${body.error.message}`)
    error.status = res.status
    error.code = body.error.code
    error.issues = body.error.issues
    throw error
  }
  return body
}

Mensagens comunsLink para esta seção#

RequisiçãoStatus e mensagem
GET /prices com SKU desconhecido404 “Nenhum produto com SKU HX-9999”
Qualquer endpoint com cliente desconhecido404 “Cliente OAK99 não encontrado”
PATCH /orders/{id} novo → concluído400 “Um pedido recebido não pode ser marcado como concluído”
PATCH /orders/{id} para cancelado sem observação400 “Forneça um motivo para o cancelamento”
PUT /products com o mesmo SKU duas vezes400 erro de validação “SKU duplicado hx-8510”