Padrões de respostas

Alguns status HTTP mais utilizados nas respostas da nossa API:

StatusDescrição
200Requisição bem sucedida.
201Requisição bem sucedida.
204Requisição bem sucedida, porém sem conteúdo.
400Requisição mal formada.
401Requisição não autorizada.
403Requisição não permitida.
404Requisição não encontrada.
405Método não permitido.
409Conflito de dados.
422Dados inválidos.
500Erro interno do servidor.
503Serviço indisponível.

Item único:

// com resultados
{
  "id": "1",
  "name": "Fulano da Silva",
  "birthdate": "1995-12-01"
}
// sem resultados
404 - Recurso não encontrado

Lista sem paginação:

// com resultados
{
  "items": [
    {
      "id": "1",
      "name": "Fulano da Silva",
      "birthdate": "1995-12-01"
    },
    {
      "id": "2",
      "name": "Ciclano Beltrano",
      "birthdate": "1989-08-13"
    }
  ]
}
// sem resultados
{
  "items": []
}

Lista com paginação:

// com resultados
// /v1/items?page=1&itemsPerPage=10
{
  "pages": 100,
  "page": 1,
  "itemsPerPage": 10,
  "totalItems": 101,
  "items": [
    {
      "id": "1",
      "name": "Fulano da Silva",
      "birthdate": "1995-12-01"
    },
    {
      "id": "2",
      "name": "Ciclano Beltrano",
      "birthdate": "1989-08-13"
    }
  ]
}
// sem resultados
{
  "pages": 1,
  "page": 1,
  "itemsPerPage": 10,
  "totalItems": 0,
  "items": []
}

Erro genérico:

{
  "message": "Some error",
  "code": "ERR_XPTO",
  "link": "https://documentacao-api.eduzz.com/suporte?error=ERR_XPTO",
  "debug": {}
}

Erro de validação:

{
  "message": "Saldo insuficiente para transferência",
  "code": "TRF_001",
  "link": "https://documentacao-api.eduzz.com/suporte?error=TRF_001",
  "errors": [
    {
        "field": "amount",
        "message": "saldo insuficiente",
        "data": {
          "requested": 12000.00,
          "available": 10500.00
        }
    }
  ],
  "debug": {}
}