Skip to content

Erros e Respostas

A API segue os códigos HTTP padrão e retorna respostas JSON consistentes.

Formato da resposta

Sucesso — item único

json
{
  "data": {
    "id": 1,
    "name": "Produto Exemplo"
  }
}

Sucesso — listagem paginada

json
{
  "data": [
    { "id": 1, "name": "Produto A" },
    { "id": 2, "name": "Produto B" }
  ],
  "links": {
    "first": "https://sualoja.com.br/api/v1/products?page=1",
    "last": "https://sualoja.com.br/api/v1/products?page=5",
    "prev": null,
    "next": "https://sualoja.com.br/api/v1/products?page=2"
  },
  "meta": {
    "current_page": 1,
    "from": 1,
    "last_page": 5,
    "per_page": 25,
    "to": 25,
    "total": 120
  }
}

Sucesso — exclusão

json
{
  "message": "Produto removido."
}

Códigos de status

CódigoSignificadoQuando ocorre
200OKRequisição processada com sucesso
201CreatedRecurso criado com sucesso (POST)
401UnauthorizedAPI key ausente, inválida ou expirada
404Not FoundRecurso não encontrado
422Unprocessable EntityErro de validação ou restrição de integridade
429Too Many RequestsRate limit excedido (60 req/min)
500Server ErrorErro interno do servidor

Erros de validação

Quando os dados enviados não passam na validação, a API retorna 422 com os campos e mensagens de erro:

http
HTTP/1.1 422 Unprocessable Entity
json
{
  "message": "Dados inválidos.",
  "errors": {
    "name": [
      "O campo nome é obrigatório."
    ],
    "price": [
      "O campo preço deve ser um número.",
      "O campo preço deve ser pelo menos 0."
    ]
  }
}

Erros de integridade

Ao tentar excluir um recurso que possui vínculos:

http
HTTP/1.1 422 Unprocessable Entity
json
{
  "message": "Não é possível excluir: 15 produto(s) vinculado(s)."
}

Paginação

Todas as listagens suportam paginação via query params:

ParâmetroPadrãoMáximoDescrição
page1Página atual
per_page25100Itens por página

Exemplo:

bash
GET /api/v1/products?page=2&per_page=50

Ordenação

A maioria das listagens suporta ordenação:

ParâmetroPadrãoDescrição
sortvaria por recursoCampo para ordenação
directiondescasc ou desc

Exemplo:

bash
GET /api/v1/products?sort=price&direction=asc

Content-Type

Todas as requisições que enviam dados (POST, PUT) devem incluir:

Content-Type: application/json
Accept: application/json