Padrões de respostas

Alguns status HTTP mais utilizados nas respostas da nossa API:

| Status | Descrição | | :- | :- | | 200 | Requisição bem sucedida. | | 201 | Requisição bem sucedida. | | 204 | Requisição bem sucedida, porém sem conteúdo. | | 400 | Requisição mal formada. | | 401 | Requisição não autorizada. | | 403 | Requisição não permitida. | | 404 | Requisição não encontrada. | | 405 | Método não permitido. | | 409 | Conflito de dados. | | 422 | Dados inválidos. | | 500 | Erro interno do servidor. | | 503 | Serviç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": {}
}