Objetivo

Propor e definir um padrão de documentação para o PDVSync, considerando integração com o PDV, organização clara dos dados e alinhamento entre os times envolvidos.

Descrição

Atualmente, a documentação do PDVSync apresenta problemas de fluidez e clareza, especialmente em relação às diferentes versões existentes e à integração com tabelas do PDV. Por vezes, dados relacionados a tabelas distintas do PDV são tratados na mesma API do Sync, o que resulta em descentralização de informações e dificuldade de uso.

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 





Pontos de melhoria - Solução 1


Solução 2 - Unificando a documentação: PDVSync com PDV





Pontos de melhoria - Solução 2


Modelo da Doc de API geral 


O dadoXPTO deve poderá ter a seguintes informações:



Apenas nos casos que necessitam de parametros na requisição:

Parametro

Descrição

Tipo

Obrigatório

Observação

idInquilinoIdentificador do inquilinoStringSim
idRetaguardaLojaIdentificador da loja da retaguardaStringSim
cpfCnpjCPF / CNPJStringSimParâmetro do tipo Header

------------------------------------------------------------------------------------------------------------------------------

Retornos

Este método é responsável pela criação de uma regra X

  • 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 X, permitindo vários em uma mesma requisição. (Com base nas novas atividades melhorar a descrição, envia x dado para tal função)

Para que a baixa da Y e X criado ocorra no PDV Omni é necessário realizar a abertura de um lote do tipo XXXX = YYYYY

É necessário que o inquilino tenha o parametro XXXX - 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

Requisição

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",
    }
]

Definições dos campos do body

Campo

Tipo

Descrição

Obrigatório

Observações

idInquilino

string

Identificador do inquilinoSim
idProprietariostringIdentificador do proprietárioSim
idRetaguardastringIdentificador do grupo na retaguardaSimTamanho máximo: 100 caracteres
dataHoraVigenciaInicialdatetimeData Inicial da vigência da regraSim
dataHoraVigenciaFinaldatetimeData Final da vigência da regraSim

Retorno

Exemplo de body de retorno

{
    "data": null,
    "errors": null,
    "message": null,
    "numberOfRecords": 8,
    "success": true,
    "totalTime": 2061
}

Definições dos campos do retorno

Campo

Tipo

Descrição

dataObjetoRetorno dos dados caso tenha
errorsObjeto

Objeto contendo todos os erros encontrados.

messageString

Descrição do erro

numberOfRecordsIntNúmero de arquivos processados
successBoolStatus da requisição
totalTimeIntTempo total

Exemplo de body de retorno

{
    "data": null,
    "errors": {
        "0": {
            "IdRetaguarda": [
                ""
            ]
        }
    },
    "message": null,
    "numberOfRecords": 9,
    "success": false,
    "totalTime": 4077
}

Definições dos campos do retorno

Campo

Tipo

Descrição

dataObjetoRetorno dos dados caso tenha
errorsObjeto

Objeto contendo todos os erros encontrados.

Cada propriedade desse objeto é o índice do grupo enviado que está com erro.

messageString

Descrição do erro

numberOfRecordsIntNúmero de arquivos processados
successBoolStatus da requisição
totalTimeIntTempo 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.

CampoTipoObrigatórioObservaçõesDescrição
idintSim
Identificador único do usuário
namestringSim
Nome do usuário
emailstringSim
Endereço de e-mail do usuário
created_atstringNão
Data de criação do usuário (ISO 8601)



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.

CampoTipoObrigatórioDescriçãoObservaçõesOnde aparece no produto (no nosso caso os campos do PDV)
idintSimIdentificador único do usuário
ID exibido na tela de detalhes do usuário
namestringSimNome do usuário
Tabela: Nome - Campo - nome_usuario
emailstringSimEndereço de e-mail do usuário
E-mail mostrado no perfil do usuário e nas notificações
created_atstringNãoData 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:

Desvantagens Modelo 2: