Histórico da Página
...
Bloco de código | ||
---|---|---|
| ||
{ ... hasNext: se for lista content: {} } |
Parâmetros expansíveis
Todos os endpoints DEVEM respeitar e suportar os campos expansíveis. E DEVEM retornar os campos retraídos a menos que especificado na requisição atráves do parâmetro de url expand.
As entidades de retorno DEVEM obedecer as regras:
- Todas as propriedades que representam listas DEVEM vir retraídas por padrão e DEVEM usar a notação de lista vazia (Ex.: [] ).
- Todas as propriedades que representam objetos DEVEM vir retraídos e usar a notação de objeto sem propriedades. (Ex.: {} )
Ao retornar uma entidade todas as suas propriedades que representam um objeto OU coleção DEVEM vir retraídas e a entidade DEVE conter um campo adicional com o nome _expandables. Esse campo é uma lista com o nome de cada uma das propriedades que podem ser passadas na url para que o endpoint inclua na responta.
Por exemplo, a entidade usuário possui propriedades que apontam para suas permissões, comunidades e detalhes e portanto estas devem estar retraídas:
Bloco de código | ||
---|---|---|
| ||
GET https://fluig.totvs.com/api/users/10 { _expandables: ["permissions", "communities", "detailedInformation"], id: 10, name: "Usuário", age: 25, permissions: [], communities: [], detailedInformation: {}, ... } |
Caso o cliente queira expandir as propriedades ele DEVE então fazer uma requisição informando o parâmetro expand na url e passando como valor uma lista separada por , (virgula) dos campos exatamente como descritos no campo _expandables.
Informações |
---|
Apenas o primeiro nível das propriedades deve ser expandido, ou seja, se o objeto expandido tiver propriedades expansíveis elas devem vir retraídas. |
Por exemplo, no cenário em que o cliente gostaria de expandir as comunidades da entidade usuário:
Bloco de código | ||
---|---|---|
| ||
GET https://fluig.totvs.com/api/users/10?expand=communities { _expandables: ["permissions", "detailedInformation"], id: 10, name: "Usuário", age: 25, permissions: [], communities: [{ _expandables: [permissions], name: "Vendas", photoUrl: "https://fluig.totvs.com/communities/1/photo", permissions: {} }, { _expandables: [permissions], name: "Outra comunidade", photoUrl: "https://fluig.totvs.com/communities/2/photo", permissions: {} }], detailedInformation: {}, ... } |
...
Versionamento
- API interna deve seguir esse padrão, mas é independe do versionamento. Deve estar documentado (tecnica) para as novas.
- Validar como passar a versão URL ou header. Testar com o Paulo.
Dicas de como implementar os métodos para tentar manter um padrão de implementação.
Documentação
- Tem que sair com swagger (json e documentação)