Integração com APIs Vetor Soluções (E-commmerce/Tele-vendas)
Este documento visa facilitar a integração de sistemas externos que pretendem realizar consultas sobre posições de estoque e preços de produtos, bem como efetuar registros de pedidos de venda, nas empresas clientes que utilizam o sistema da Vetor Soluções. A integração é realizada através de APIs RESTful, proporcionando um método padronizado e eficiente para o intercâmbio de informações.
Requisito Geral
- Para utilizar deste recurso, a aplicação deve ser previamente homologada para integração com as APIs da Vetor Soluções. Em caso de dúvidas entre em contato com a equipe de atendimento da Zetti Tech para credenciamento/solicitação do token de acesso as APIs.
Requisitos de Produtos
As consultas da posição de estoque e valores de produtos devem ser realizadas com os seguintes parâmetros:
- URL: https://integracao.zetti.dev/api/ecommerce/produtos/consulta
- Headers: Authorization: ApiKey xxxxxxxxxxxx (onde “xxxxxxxxxxxx” corresponde ao token de acesso repassado pela Vetor Soluções para acesso à base da empresa)
- Método: GET
- Retorno: A API irá retornar um JSON com o seguinte formato:
campos com “?” podem retornar o valor nulo (“null”).
{
"status": int32,
"data": [
{
"cdFilial": int32,
"cdProduto": int32,
"descricao": string,
"descricaoUsual": string,
"codigoBarras": string,
"inativo": bool,
"cdMarca": int32?,
"nomeMarca" : string?,
"cdFabricante" : int32?,
"nomeFabricante" : string?,
"cdLinha" : int32?,
"nomeLinha" : string?,
"cdCategoria" : int32?,
"nomeCategoria" : string?,
"qtdEstoque" : double,
"vlrTabela": double,
"percDesconto": double,
"vlrOferta": double,
"dtUltimaAlteracao": dateTime,
"nsuRegistro": int32
}
],
"msg": string,
"total": int32
}
Onde:
“status”: indicará o resultado do processamento: 200 para sucesso, 500 para erros e advertências.
“data”: retornará uma lista de no máximo 500 registros de acordo com os critérios informados.
“msg”: retornará uma mensagem descrevendo o resultado do processamento da consulta (sucesso, erro ou advertência caso ocorra.
“total”: indicará a quantidade total de registros encontrados para os critérios informados. Esta propriedade irá retornar algum valor somente se for informado o parâmetro $count=true na URL de consulta. O uso deste parâmetro é opcional pois pode influenciar na performance da consulta.
Critérios de Consulta
Pode-se efetuar critérios avançados na consulta utilizando o protocolo de consulta OData através dos seguintes parâmetros na URL:
Parâmetro $filter
Utilizado para efetuar filtros dinâmicos de acordo com a estrutura de retorno dos registros, no formato $filter={função | propriedade operador valor}.
Deve ser utilizado seguindo o padrão:
Filtrando somente produtos que contenham a palavra “azul” na descrição.
...produtos/consulta?$filter=contains(descricao, ‘azul’)
Filtrando somente produtos ativos e com quantidade em estoque superior a zero.
...produtos/consulta?$filter=inativo eq false and qtdEstoque gt 0
A seguir estão alguns operadores disponíveis para utilização:
- eq: igual a
- ne: diferente de
- gt: maior que
- ge: maior ou igual a
- lt: menor que
- le: menor ou igual a
- and: "e" lógico
- or: "ou" lógico
Parâmetro $select
Utilizado para especificar os campos de retorno da API, dando a possibilidade de selecionar somente as propriedades desejadas a fim de diminuir o tráfego de dados.
Deve ser utilizado seguindo o padrão:
Para a API retornar somente o código e a descrição dos produtos.
...produtos/consulta?$select=codigo,descricao
Parâmetro $orderby
Utilizado para especificar a ordem de retorno dos resultados.
Deve ser utilizado seguindo o padrão:
Para ordenar os resultados da consulta por preço do maior para o menor.
...produtos/consulta?$orderby=vlrTabela asc
Parâmetro $top
Utilizado para especificar a quantidade de registros a serem retornados pela API.
Deve ser utilizado seguindo o padrão:
Para retornar somente os 100 primeiros resultados.
...produtos/consulta?$top=100
Parâmetro $skip
Utilizado para especificar a quantidade de registros a serem ignorados no retorno da API. Em conjunto com o parâmetro $top pode-se paginar os resultados para otimizar as consultas.
Deve ser utilizado seguindo o padrão:
Para retornar somente 100 registros ignorando os primeiros 200.
...produtos/consulta?$skip=200&$top=100
Parâmetro $count
Utilizado para indicar se a API deve ou não contabilizar a quantidade total de registros encontrados para os critérios informados na propriedade “total” do retorno.
Deve ser utilizado seguindo o padrão:
...produtos/consulta?$count=true
Para mais informações sobre o protocolo OData, consultar documentação disponível em https://www.odata.org/documentation/odata-version-2-0/uri-conventions/
Considerações
As informações dos produtos são atualizadas a cada 30 minutos. No caso de acompanhamento em tempo real, para evitar o consumo indevido da API, armazenar o maior valor da propriedade “nsuRegistro” dentre os resultados retornados, e na próxima consulta efetuada, informar o parâmetro $filter=nsuRegistro gt xxxx (onde xxxx é o número do nsu armazenado anteriormente) para que se retorne somente os produtos com novas alterações, repetindo o processo para cada ciclo de consumo.
Requisições de pedidos
Os pedidos deverão ser registrados por meio da API com os seguintes parâmetros:
- URL: https://integracao.zetti.dev/api/ecommerce/pedidos
- Headers: Authorization: ApiKey xxxxxxxxxxxx (onde “xxxxxxxxxxxx” corresponde ao token de acesso repassado pela Vetor Soluções para acesso a base da empresa).
- Método: POST
- Payload:
{
"cdOrigem": 0,
"cdFilial": 0,
"cgcFilial": "string", //Obrigatório informar uma das duas propriedades cgcFilial ou cdFilial
"cdVendedor": 0,
"dtEmissao": "2025-08-20T19:18:03.548Z",
"cliente": {
"codigo": 0,
"nome": "string",
"cpfCgc": "string",
"telefone": "string", //opcional
"sexo": "string", //M, F ou em branco
"dtNascimento": "2025-08-20T19:18:03.548Z", //opcional
"endereco": "string",
"numero": "string",
"complemento": "string",
"cep": "string",
"bairro": "string",
"cdCidade": 0,
"cidade": "string",
"uf": "string",
"cidadeIBGE": 0, //opcional
"referencia": "string",
"email": "string",
"inscEstadual": "string", //opcional
"inscMunicipal": "string" //opcional
"cdConvenio": 0,
"clienteFidelidade": true,
"nrCartaoFidelidade": "string",
"cadastroSimplificado": true
},
"cdConvenio": 0,
"vlrProdutos": 0,
"vlrDescontos": 0,
"vlrFrete": 0,
"vlrOutros": 0,
"vlrTotal": 0,
"vlrTrocoPara": 0,
"observacao": "string",
"nrPedido": "string", //obrigatório
"dadosPedido": "string",
"retirar": true,
"isTransportadora": true,
"transportadora": "string",
"itens": [
{
"id": "string",
"cdProduto": 0, //obrigatório
"cdProdutoEcommerce": "string",
"cdBarrasProduto": "string",
"nomeProduto": "string",
"quantidade": 0,
"vlrUnitario": 0,
"vlrDesconto": 0,
"vlrDescontoRateio": 0,
"vlrTotal": 0,
"cdTblDesc": 0,
"cdTpDesc": 0,
"cdVendedor": 0,
"infoDiversas": "string",
"receita": {
"cdMedico": 0,
"tpDocMedico": "string",
"nrDocMedico": "string",
"ufDocMedico": "string",
"nmMedico": "string",
"especialidadeMedico": "string",
"dtReceita": "2025-08-20T19:18:03.548Z",
"cdReceita": 0
},
"infoExtra": {
"tipoInfo": "ManipulacaoItem",
"info": "string"
}
}
],
"statusPedido": "Desconhecido",
"pagamentos": [
{
"formaPagamento": "Dinheiro",
"descricao": "string",
"valor": 0,
"nrAutorizacao": "string",
"nsu": "string",
"bandeiraCartao": "string",
"adquirente": "string",
"dataCaptura": "2025-08-20T19:18:03.548Z",
"qtdParcelas": 0,
"cdConvenio": 0,
"pagamentoNaEntrega": true,
"cdAdmCartao": 0,
"valeId": "string",
"valeCodigo": "string",
"identificador": "string"
}
],
"marketPlace": "Amazon"
}
- Retorno:
{
"status": 200,
"data": {
"situacao": 0,
"cdOrcamento": 123,
"mensagem": "Orçamento registrado com sucesso",
},
"msg": "Orçamento registrado com sucesso"
}
Onde:
A propriedade “situação” poderá ter os seguintes valores:
0. Não encontrado
1. Pendente
2. Em separação
3. Conferência
4. Faturado
5. Despachado
6. Entregue
7. Entrega não realizada
8. Cancelado
9. Devolvido
E na propriedade “cdOrcamento” será o código do orçamento gerado para o pedido.
- Para consultar a stuação de um pedido, deve-se realizar a seguinte requisição:
- URL: https://integracao.zetti.dev/api/Ecommerce/pedidos/status?numeroPedido=xxxxxxx&cdOrcamento=9999
Onde “xxxxxxx” corresponde ao número do pedido da plataforma enviado na propriedade “nrPedido” ao registrar o pedido, e “9999” o “cdOrcamento” retornado pela API ao registrar o pedido.
- URL: https://integracao.zetti.dev/api/Ecommerce/pedidos/status?numeroPedido=xxxxxxx&cdOrcamento=9999
- Headers: Authorization: ApiKey xxxxxxxxxxxx (onde “xxxxxxxxxxxx” corresponde ao token de acesso repassado pela Zetti Tech para acesso a base da empresa).
- Método GET:
- Esta requisição irá retornar o mesmo objeto retornado na API de registro de pedido, sendo atualizado a propriedade “situacao” no decorrer do processo do pedido na loja.
WebHook de notificação de alteração de status de pedidos
O cliente é responsável pelo desenvolvimento, publicação e integração do serviço conforme a documentação abaixo para o uso do WebHook da Vetor. As atualizações de status dos pedidos serão transmitidas por meio da API, incluindo os seguintes parâmetros:
- URL: https://seuservico.com/api/pedidos/notificar
- Headers:
- X-AppToken: token único de identificação para acesso a api.
- Método: POST
- Payload:
{ "pedidoId": "13951", "dataStatus": "2023-05-15T16:07:58", "status": "Faturado", "notaFiscal": { "dataEmissao": "2023-12-22T16:25:12", "serie": 15, "numero": 45685, "chaveAcesso": "52231216010431000250650010000015991664015477", "valor": 5.99 } }
CODE - Response:
retorne statuscode: 201-created
- OpenApi: a documentação pode ser baixada ao clicar aqui e pode utilizada no OpenAPI Generator para auxiliar na criação do serviço.
Explore outros conteúdos e descubra o passo a passo da operação.