Convenções de Payload
Esta seção do padrão descreve as estruturas padrões de requisição e resposta para todos os endpoints das APIs, assim como as convenções de nomenclatura para os atributos.
Estrutura de requisição
Cada requisição deve ser um objeto JSON contendo um objeto data
para armazenar os dados primários da requisição.
No mesmo nível do objeto data
, poderá existir um objeto meta
se assim for especificado pelo endpoint. O objeto meta
é usado para fornecer informações adicionais ao endpoint, como parâmetros de paginação, contagens de paginação ou outros propósitos complementares ao funcionamento da API.
A definição do conteúdo para o objeto data
será definida separadamente para cada endpoint.
Estrutura da requisição
{
"data": {
"..."
}
}
Estrutura de resposta
Cada endpoint retornará um objeto JSON contendo os atributos abaixo.
Se a resposta for bem-sucedida (200 OK), o objeto JSON irá conter:
obrigatoriamente um objeto
data
;obrigatoriamente um objeto
links
;opcionalmente um objeto
meta
, se necessário pela definição do endpoint requisitado.
Se a resposta for malsucedida (não 200 OK), o objeto JSON poderá conter:
um objeto
errors
(conforme a definição específica do endpoint).
A definição do conteúdo para os objetos data
e meta
será definida separadamente para cada endpoint.
O objeto links
irá conter hypermedia (referências para recursos relacionados) para outros recursos da API requisitada.
O objeto de links
sempre irá conter o atributo self
que irá apontar para a URI da solicitação atual.
O objeto
errors
será um array de zero ou mais objetos. Os atributos deste objeto serão os descritos abaixo:obrigatoriamente o atributo
code
contendo um código de erro específico do endpoint;obrigatoriamente o atributo
title
contendo um título legível por humanos do erro deste erro específico;obrigatoriamente o atributo
detail
contendo uma descrição legível por humanos deste erro específico;opcionalmente o objeto
meta
contendo dados adicionais sobre o endpoint que seja relevante para o erro.
Estrutura de resposta
{
"data": {
"..."
},
"links":{
"..."
},
"meta": {
"..."
}
}
Estrutura de resposta de erros
{
"errors": [
{
"code": "...",
"title": "...",
"detail": "..."
}
],
"meta":{
"..."
}
}
Convenções de nomenclatura de atributos
Caracteres válidos em nomes de atributos
Todos os nomes de objetos e atributos definidos nos objetos JSON de requisição e resposta devem ser nomeados seguindo o padrão camelCase, tendo seu nome composto apenas por letras (a-z, A-Z) e números (0-9).
Qualquer outro caractere não deve ser usado nos nomes dos objetos e atributos, com exceção do caractere -
(hífen), que poderá ser utilizado apenas conforme descrito na seção Extensibilidade.
Estilo de nomeação de atributos
Os nomes dos objetos e atributos devem ser nomes significativos e em língua inglesa. Quando houver diferença entre inglês americano e inglês britânico no termo a ser utilizado, deverá ser utilizado o termo em inglês britânico. P. ex: utilizar o termo Post Code (Reino Unido) ao invés de Zip Code (Estados Unidos).
Arrays devem ser nomeados no plural. Demais atributos deverão ser nomeados no singular.
Convenções de propriedade dos atributos
Tipos de dados dos atributos
Cada atributo deverá estar associado a um tipo de dado. A lista de tipos de dados válidos está definida na seção tipos de dados comuns. Se um tipo de dado personalizado é necessário para um atributo, o mesmo deverá ser classificado como uma string com uma descrição clara de como o valor da propriedade deve ser interpretado.