Formato das respostas
Todas as respostas da API são JSON, em UTF-8, e seguem o mesmo formato — o envelope.
O envelope
{
"success": true,
"message": "Travel retrieved successfully",
"data": {},
"errors": [],
"status": 200
}
| Campo | Tipo | Descrição |
|---|---|---|
success | booleano | true quando a requisição deu certo (status 2xx) e false nos demais casos. |
message | texto | Uma frase curta em inglês sobre o resultado. É informativa: não use o texto para tomar decisões no seu código. |
data | objeto, lista paginada ou null | O conteúdo da resposta. Veja a seguir. |
errors | lista ou objeto | Vazio ([]) quando deu certo. Em erros de validação (422), é um objeto com as mensagens de cada parâmetro. Veja Erros. |
status | número | O mesmo código HTTP da resposta. |
Para saber se deu certo, use o código HTTP (ou success), nunca o texto de message.
O conteúdo de data
O formato de data depende do endpoint:
- Um objeto único, quando você consulta um item ou um recurso que só existe uma vez por agência. É o caso de Consultar uma viagem, Consultar a empresa e Consultar o SEO.
- Uma página de itens, nas listas (viagens e depoimentos). Os itens ficam em
data.data, ao lado dos campos de paginação. Veja Paginação. null, quando o item procurado não existe (404).
Uma resposta de lista tem esta forma:
{
"success": true,
"message": "Testimonials retrieved successfully",
"data": {
"current_page": 1,
"data": [
{ "id": 3, "name": "Maria Souza" }
],
"per_page": 15,
"total": 1
},
"errors": [],
"status": 200
}
O exemplo mostra só alguns campos. A lista completa dos campos de paginação está em Paginação.
Respostas que não usam o envelope
Duas respostas são geradas antes de a requisição chegar aos endpoints e trazem apenas um campo message:
401— token ausente ou inválido:{ "message": "Unauthenticated." }429— limite de requisições excedido:{ "message": "Too Many Attempts." }
Veja Erros e Limites de requisições.
Convenções dos campos
- Nomes em
snake_case, comoshort_descriptionestart_date. Há uma exceção: as listas de itens inclusos de uma viagem se chamamincludedenotIncluded. - Valores vazios. Um campo de texto opcional sem valor vem como
null. Campos de link de imagem (featured_image,logo_url,favicon_url) vêm como texto vazio ("") quando não há imagem. Confira cada campo na referência. - Preços como texto. Os preços vêm como texto com duas casas decimais (
"1290.00"), para evitar erros de arredondamento. Veja Boas práticas. - Datas. Veja Datas e horários.
- A ordem das chaves de um objeto JSON não é garantida. Leia os campos pelo nome.