...
Em discussões identificamos até o momento duas soluções de como resolver este problema, conforme descritas abaixo.
Soluções
Solução 1 - Documentação separada: PDVSync
- Primeira versão criada de documentação PDVSync: Microserviços - TOTVS Varejo PDV Omni - TDN . Nesta documentação como pode ser vista é focada apenas no PDVSync abordando os seguintes pontos:
- Como implementar a integração
- O que é e detalhes dos Microsserviços
- APIs separadas por microsserviços
- APIs com detalhes de seus métodos (POST, GET, PUT, DELETE e PATCH)
- Payloads detalhados com seus tipos (Tabelas com tipos de campos, limites de caracteres, versões, etc...)
- Detalhe do retorno esperado para sucesso (200 ok) e erro (400 Bad Request)
- Englobanco Englobando o processo offline e online
- Troubleshooting
...
- ✅ Vantagens:
- ✔ Liberdade para estruturação da documentação - Sem depender de como a documentação do PDV esta disposta.
- ✔ Maior visibilidade para desenvolvedores externos – Facilita o acesso para parceiros, startups e integradores focado na integração.
- ✔ Facilidade de versionamento – É mais fácil gerenciar e documentar versões diferentes da API sem interferir no produto.
- ❌ Desvantagens:
- ✖ Pode gerar desconexão do produto – Se não houver sincronização eficiente, a documentação pode ficar desatualizada em relação ao produto.
- ✖ Exige manutenção separada – A equipe pode precisar de um esforço adicional para manter a documentação alinhada com as mudanças do produto.
1️⃣ Modelo da Doc da API 1: Apenas os dados da API
Este formato foca exclusivamente nos campos da API, sem mencionar sua relação com o produto.
...
...
- ✅ Vantagens Modelo 1:
- ✔ Mais objetiva e técnica – Evita informações desnecessárias para desenvolvedores que só precisam da API.
- ✔ Fácil manutenção – Não precisa ser alterada caso a interface do produto mude.
- ✔ Facilidade para integradores externos – Desenvolvedores que não usam o produto podem entender os dados sem precisar de contexto extra.
- ❌ Desvantagens Modelo 1:
- ✖ Desconexão com o produto – Quem usa o produto pode não saber como esses dados se refletem na interface.✖ Pouca usabilidade para equipes internas – Se um analista de suporte ou um gerente de produto precisar entender os dados da API, pode ter dificuldades.
2️⃣ Modelo da Doc da API 2: Relacionando os dados da API com o produto
Aqui, a documentação explica como os campos da API interagem com o produto.
...
...
✅ Vantagens Modelo 2:
...
❌ Desvantagens Modelo 2:
...
Pontos de melhoria - Solução 1
- Incluir referências de link da documentação do PDV, onde a integração pode ser utilizada. Isto auxilia ao desenvolvedor a identificar melhor a necessidade dos campos a serem utilizados e melhor entendimento da API.
- Melhoria na estrutura de como está o layout da documentação atualmente:
- Precisamos realmente de tantas abas na interface principal do produto?
- Dificuldade de instruir o usuario com tantas informações logo de cara
- Ajustes no modelo da doc das API's
- Adicionar as informações referentes a versões de forma clara
- Centralizar todos os tipos de Dados existentes em apenas um lugar
- Melhor descrição das API's, para que serve e a sua relação entre elas
- Exemplo: ProcessoOnline com fluxos dependentes que não são claros NotaEntrada + NotaSaida
Solução 2 - Unificando a documentação: PDVSync com PDV
- Uma ideia de unificar as documentações, visando em facilitar aos desenvolvedores externos uma consulta unica, segue exemplo atual de uma documentação unificada: Produto.
- A documentação é separada nas seguintes abas:
- Descrição dos campos e regras: Exclusiva para detalhes de campos e regras referente as tabelas do banco PDV.
- Como integrar: Sessão PDVSync, contém os seguintes dados referente a API especifica:
- Métodos POST ou GET (Até o momento mais ou unicamente utilizados no PDV)
- Payloads detalhados com seus tipos (Tabelas com tipos de campos, limites de caracteres, versões, etc...)
- Detalhe do retorno esperado para sucesso (200 ok) e erro (400 Bad Request)
...
- ❌ Desvantagens:
- ✖ Pode dificultar a adoção por terceiros – Se a API for aberta, desenvolvedores externos podem ter dificuldade em encontrá-la.
- ✖ Menos flexibilidade na organização da documentação – Pode ser difícil criar uma documentação modular e expansível dentro da estrutura do produto.
- ✖ Risco de desatualização – Caso o foco esteja no produto principal, a documentação da API pode ficar desatualizada.
- ✖ Estrutura pré-definida com base na documentação do PDV - Uma documentação pensada no negócio em si ao invés de API
- Um exemplo nesse caso seria produto que é divido em varios itens na rotina do PDV, sendo que no envio do dado é apenas um payload
Image Added
Pontos de melhoria - Solução 2
- Estrutura separado pelos tipos de dados, sendo que o PDVSync é separado por microsserviços
- Em cada tipo de dados existe uma quantidade enorme de informações do PDV na primeira aba + as informações da API, pode ser tornar confuso para o usuário
- Necessidade de dar foco para a API e foco para o PDV quando o usuario for procurar informações especificas
- Ausência de processo de instalação do Sync
- Ausência de processo Troubleshooting
- Fluxos de subida de forma separada
- Em cada fluxo precisa adicionar a informação do microsserviço, pois atualmente temos apenas o endPoint o que pode se tornar confuso na hora de montar uma requisição
- Estudo de como implementar o processo online
Modelo da Doc de API geralgeral
- Independente da escolha dos modelos 1 e 2, estes dados são essenciais
- Toda documentação das API's subida, descida e online deve conter os seguintes dados:
- Estrutura das pastas dentro da doc
- MicrosServico
- ProcessoXPTO
- GET/endpoint/api/pdvsyncserver/retaguarda/v2/processoonlinecredito
- POST/endpoint/api/pdvsyncserver/retaguarda/v2/processoonlinecredito
- Exemplo:

...
Deck of Cards |
---|
|
Card |
---|
| Apenas nos casos que necessitam de parametros na requisição: Parametro | Descrição | Tipo | Obrigatório | Observação |
---|
idInquilino | Identificador do inquilino | String | Sim |
| idRetaguardaLoja | Identificador da loja da retaguarda | String | Sim |
| cpfCnpj | CPF / CNPJ | String | Sim | Parâmetro do tipo Header |
------------------------------------------------------------------------------------------------------------------------------RetornosEste método é responsável pela criação de uma regra de descontoX - Endpoint: /api/retaguarda/v3/dadosdinamicos/down/59/{versão}
- caso outras versoes estejam sendo utilizadas incluir
- v2
- v1
- Método: Post
- Autenticação: Bearer token
- Permissão: Retaguarda
- Microserviço: PDVSync.Core.Preco
Este endpoint recebe uma lista de regra de desconto e acrescimoX, permitindo vários em uma mesma requisição. (Com base nas novas atividades melhorar a descrição, envia x dado para tal função) Aviso |
---|
Para que a baixa da regra de desconto Y e acrescimo X criado ocorra no PDV Omni é necessário realizar a abertura de um lote do tipo 59 XXXX = regradescontoacrescimoYYYYY É necessário que o inquilino tenha o parametro 59 XXXX - regradescontoacrescimo YYYY cadastrado no controle. - Campo destinado a observações detalhes de atenção, pode variar de api para api
Pré-requisitos: Preenchimento correto no METADATA do inquilino. Endpoint LimiteCredito: Exemplo.: /api/limitecreditodetalhe O parâmetros desta requisição são enviado no header, abaixo estão listados os parâmetros |
Deck of Cards |
---|
| Card |
---|
| Requisição Section |
---|
Column |
---|
| Exemplo de body da requisição[ { "dataHoraVigenciaFinal": "2021-06-21T14:43:18.665Z", "dataHoraVigenciaInicial": "2021-06-21T14:43:18.665Z", "idInquilino": "string", "idProprietario": "string", "idRetaguarda": "string", } ] |
Column |
---|
| Definições dos campos do bodyCampo | Tipo | Descrição | Obrigatório | Observações |
---|
idInquilino | string | Identificador do inquilino | Sim |
| idProprietario | string | Identificador do proprietário | Sim |
| idRetaguarda | string | Identificador do grupo na retaguarda | Sim | Tamanho máximo: 100 caracteres | dataHoraVigenciaInicial | datetime | Data Inicial da vigência da regra | Sim |
| dataHoraVigenciaFinal | datetime | Data Final da vigência da regra | Sim |
|
|
|
Retorno Deck of Cards |
---|
| Card |
---|
| Column |
---|
| Exemplo de body de retorno{ "data": null, "errors": null, "message": null, "numberOfRecords": 8, "success": true, "totalTime": 2061 } |
Column |
---|
| Definições dos campos do retornoCampo | Tipo | Descrição |
---|
data | Objeto | Retorno dos dados caso tenha | errors | Objeto | Objeto contendo todos os erros encontrados. | message | String | Descrição do erro | numberOfRecords | Int | Número de arquivos processados | success | Bool | Status da requisição | totalTime | Int | Tempo total |
|
|
Card |
---|
| Column |
---|
| Exemplo de body de retorno{ "data": null, "errors": { "0": { "IdRetaguarda": [ "" ] } }, "message": null, "numberOfRecords": 9, "success": false, "totalTime": 4077 } |
Column |
---|
| Definições dos campos do retornoCampo | Tipo | Descrição |
---|
data | Objeto | Retorno dos dados caso tenha | errors | Objeto | Objeto contendo todos os erros encontrados. Cada propriedade desse objeto é o índice do grupo enviado que está com erro. | message | String | Descrição do erro | numberOfRecords | Int | Número de arquivos processados | success | Bool | Status da requisição | totalTime | Int | Tempo total |
|
|
|
|
|
|
|
1️⃣ Modelo da Doc da API 1: Apenas os dados da API
Este formato foca exclusivamente nos campos da API, sem mencionar sua relação com o produto.
Campo | Tipo | Obrigatório | Observações | Descrição |
---|
id | int | Sim |
| Identificador único do usuário |
name | string | Sim |
| Nome do usuário |
email | string | Sim |
| Endereço de e-mail do usuário |
created_at | string | Não |
| Data de criação do usuário (ISO 8601) |
- ✅ Vantagens Modelo 1:
- ✔ Mais objetiva e técnica – Evita informações desnecessárias para desenvolvedores que só precisam da API.
- ✔ Fácil manutenção – Não precisa ser alterada caso a interface do produto mude.
- ✔ Facilidade para integradores externos – Desenvolvedores que não usam o produto podem entender os dados sem precisar de contexto extra.
- ❌ Desvantagens Modelo 1:
- ✖ Desconexão com o produto – Quem usa o produto pode não saber como esses dados se refletem na interface.
- ✖ Pouca usabilidade para equipes internas – Se um analista de suporte ou um gerente de produto precisar entender os dados da API, pode ter dificuldades.
2️⃣ Modelo da Doc da API 2: Relacionando os dados da API com o produto
Aqui, a documentação explica como os campos da API interagem com o produto.
Campo | Tipo | Obrigatório | Descrição | Observações | Onde aparece no produto (no nosso caso os campos do PDV) |
---|
id | int | Sim | Identificador único do usuário |
| ID exibido na tela de detalhes do usuário |
name | string | Sim | Nome do usuário |
| Tabela: Nome - Campo - nome_usuario |
email | string | Sim | Endereço de e-mail do usuário |
| E-mail mostrado no perfil do usuário e nas notificações |
created_at | string | Não | Data de criação do usuário (ISO 8601) |
| Data de registro visível na aba "Histórico" do painel de administração |
✅ Vantagens Modelo 2:
- ✔ Maior clareza para usuários do produto – Ajuda a entender como os dados da API afetam a interface.
- ✔ Melhor suporte para equipes internas – Suporte técnico, gerentes de produto e QA podem relacionar os dados da API com o que veem no sistema.
- ✔ Facilita a integração com o front-end – Desenvolvedores que trabalham na interface do produto sabem exatamente onde cada campo é usado. (No nosso caso o banco de dados do PDV)
❌ Desvantagens Modelo 2:
- ✖ Pode ficar mais complexa e extensa – Mais informações significam mais detalhes para manter e atualizar.
- ✖ Maior chance de desatualização – Se o produto mudar, a documentação pode ficar obsoleta rapidamente.
- ✖ Menos útil para integradores externos – Quem não usa o produto pode achar irrelevante a relação dos campos com a interface.