Páginas filhas
  • Guia de implementacao das APIs TOTVS

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Bloco de código
languagejs
{
  ...
  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
languagejs
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
languagejs
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)