# Fluxo de interação com API para Ecommerce

> Observação: os nomes exatos de alguns campos podem variar conforme a sua configuração. Use esta referência como guia prático e confira o esquema no Swagger quando precisar do detalhe de cada propriedade. ([api.novo.infovarejo.com.br](https://api.novo.infovarejo.com.br/docs/public/ "Swagger UI"))

# 1) Leitura de cadastro de produtos

Rota: **Buscar produtos para PDV** (cadastro básico para e-commerce/PDV) ([api.novo.infovarejo.com.br](https://api.novo.infovarejo.com.br/docs/public/ "Swagger UI"))

- **Método/URL**: `GET /v1/public/produto/pdv`
- **Autenticação**: `Authorization: Bearer <token>`
- **Uso**: obter produtos novos/alterados para sincronização.

**Parâmetros (query) comuns**

- `dataInclusaoInicio`, `dataInclusaoFim` — ISO 8601.
- `dataAlteracaoCadastroInicio`, `dataAlteracaoCadastroFim`.
- `dataAlteracaoPrecoInicio`, `dataAlteracaoPrecoFim`.
- (Opcional) filtros como `ean`, `departamentoId`, `ativo` (quando aplicável).
- **Paginação** (quando disponível no seu tenant): `page`, `pageSize` (ou equivalentes).

**Resposta (resumo)**

- Lista de produtos com campos como: `produtoId`, `descricao`, `eanPrincipal`, `ncm`, `unidade`, `ativo`, metadados de inclusão/alteração.

**Exemplo cURL**

```bash
curl -X GET \
  'https://api.novo.infovarejo.com.br/v1/public/produto/pdv?dataInclusaoInicio=2022-04-02T07:00:00.000&dataInclusaoFim=2022-08-24T23:59:00.000&dataAlteracaoCadastroInicio=2022-04-02T07:00:00.000&dataAlteracaoCadastroFim=2022-08-24T23:59:00.000&dataAlteracaoPrecoInicio=2022-04-02T07:00:00.000&dataAlteracaoPrecoFim=2022-08-24T23:59:00.000&page=1&pageSize=100' \
  -H 'Authorization: Bearer <SEU_TOKEN>'

```

---

# 2) Leitura de Estoque e Preço

Rota: **Retorna fichas financeiras do produto** (preço/estoque para vitrine) ([api.novo.infovarejo.com.br](https://api.novo.infovarejo.com.br/docs/public/ "Swagger UI"))

- **Método/URL**: `GET /v1/public/produto/fichaFinanceira`
- **Autenticação**: `Authorization: Bearer <token>`
- **Uso**: consultar preço, promoções e, em alguns ambientes, saldo/estoque por filial.

**Parâmetros (query) comuns**

- Identificador do produto (um ou mais): `ean`, `produtoId` (ou `sku`), etc.
- (Opcional) `filialId` para preço/estoque específico por loja.
- **Paginação** quando retornar múltiplos itens.

**Resposta (resumo)**

- Campos típicos: `produtoId`, `ean`, `precoVenda`, `precoPromocional` (se houver), `dataVigencia`, e possivelmente `estoqueAtual`/`saldo` por filial.

**Exemplo cURL**

```bash
curl -X GET \
  'https://api.novo.infovarejo.com.br/v1/public/produto/fichaFinanceira?ean=79075&filialId=123' \
  -H 'Authorization: Bearer <SEU_TOKEN>'

```

---

# 3) Consulta de clientes

Rota: **Retornar lista de clientes por empresa** ([api.novo.infovarejo.com.br](https://api.novo.infovarejo.com.br/docs/public/ "Swagger UI"))

- **Método/URL**: `GET /v1/public/pessoa/clientes` (nome do path pode variar no Swagger sob Pessoa → Clientes)
- **Autenticação**: `Authorization: Bearer <token>`
- **Uso**: listar clientes para cadastro/checkout e-commerce.

**Parâmetros (query) comuns**

- `empresaId` (obrigatório na maioria dos cenários).
- Filtros: `cpfCnpj`, `nome`, `email`.
- Janelas de atualização: `dataAlteracaoInicio`, `dataAlteracaoFim`.
- **Paginação**: `page`, `pageSize`.

**Resposta (resumo)**

- Lista com `clienteId`, `nome`, `cpfCnpj`, `email`, `telefone`, endereços, flags (ativo), datas de alteração.

**Exemplo cURL**

```bash
curl -X GET \
  'https://api.novo.infovarejo.com.br/v1/public/pessoa/clientes?empresaId=1023&page=1&pageSize=100' \
  -H 'Authorization: Bearer <SEU_TOKEN>'

```

---

# 4) Gravação (upsert) de clientes

Rota: **Cadastra ou atualiza cliente** ([api.novo.infovarejo.com.br](https://api.novo.infovarejo.com.br/docs/public/ "Swagger UI"))

- **Método/URL**: `POST /v1/public/pessoa/cliente`
- **Autenticação**: `Authorization: Bearer <token>`
- **Uso**: criar/atualizar cliente (CPF/CNPJ único).

**Body (JSON) — exemplo mínimo**

```json
{
  "empresaId": 1023,
  "cpfCnpj": "12345678901",
  "nome": "Maria Compradora",
  "email": "maria@exemplo.com",
  "telefone": "31999990000",
  "enderecos": [
    {
      "tipo": "ENTREGA",
      "logradouro": "Rua A, 100",
      "bairro": "Centro",
      "cidade": "Belo Horizonte",
      "uf": "MG",
      "cep": "30130000"
    }
  ]
}

```

**Exemplo cURL**

```bash
curl -X POST 'https://api.novo.infovarejo.com.br/v1/public/pessoa/cliente' \
  -H 'Authorization: Bearer <SEU_TOKEN>' \
  -H 'Content-Type: application/json' \
  -d @cliente.json

```

---

# 5) Consulta de vendedores

Rota: **Retornar lista de vendedores por empresa** ([api.novo.infovarejo.com.br](https://api.novo.infovarejo.com.br/docs/public/ "Swagger UI"))

- **Método/URL**: `GET /v1/public/pessoa/vendedores`
- **Autenticação**: `Authorization: Bearer <token)`
- **Uso**: obter IDs/códigos de vendedores para atrelar em pedidos.

**Parâmetros (query)**

- `empresaId` (geralmente obrigatório).
- (Opcional) filtros por `ativo`, `matricula`, etc.
- **Paginação**: `page`, `pageSize`.

**Resposta (resumo)**

- `vendedorId`/`codigo`, `nome`, `ativo`, dados de contato.

**Exemplo cURL**

```bash
curl -X GET \
  'https://api.novo.infovarejo.com.br/v1/public/pessoa/vendedores?empresaId=1023&page=1&pageSize=100' \
  -H 'Authorization: Bearer <SEU_TOKEN>'

```

---

# 6) Gravação (upsert) de vendedores

Rota: **Upsert dados de vendedores** ([api.novo.infovarejo.com.br](https://api.novo.infovarejo.com.br/docs/public/ "Swagger UI"))

- **Método/URL**: `POST /v1/public/pessoa/vendedores`
- **Autenticação**: `Authorization: Bearer <token)`
- **Uso**: criar/atualizar cadastro de vendedores.

**Body (JSON) — exemplo**

```json
{
  "empresaId": 1023,
  "vendedores": [
    {
      "codigo": "VEN001",
      "nome": "João Vendas",
      "email": "joao@exemplo.com",
      "ativo": true
    }
  ]
}

```

**Exemplo cURL**

```bash
curl -X POST 'https://api.novo.infovarejo.com.br/v1/public/pessoa/vendedores' \
  -H 'Authorization: Bearer <SEU_TOKEN>' \
  -H 'Content-Type: application/json' \
  -d @vendedores.json

```

---

# 7) Gravação de Pedido de Vendas (CPF/CNPJ)

Rota: **Pedido de venda por CPF/CNPJ** ([api.novo.infovarejo.com.br](https://api.novo.infovarejo.com.br/docs/public/ "Swagger UI"))

- **Método/URL**: `POST /v1/public/pedido/venda/cpfcnpj`
- **Autenticação**: `Authorization: Bearer <token)`
- **Uso**: criar pedido de venda para cliente identificado (e-commerce / força de vendas).

**Body (JSON) — exemplo prático**

```json
{
  "empresaId": 1023,
  "filialId": 1901,
  "cliente": { "cpfCnpj": "12345678901" },
  "vendedorCodigo": "VEN001",
  "itens": [
    { "produtoId": 55555, "quantidade": 2, "precoUnitario": 19.9, "ean": "7891234567890" }
  ],
  "pagamentos": [
    { "meio": "CARTAO", "valor": 39.8, "parcelas": 1 }
  ],
  "observacao": "Pedido originado no e-commerce",
  "origem": "ECOMMERCE"
}

```

**Exemplo cURL**

```bash
curl -X POST 'https://api.novo.infovarejo.com.br/v1/public/pedido/venda/cpfcnpj' \
  -H 'Authorization: Bearer <SEU_TOKEN>' \
  -H 'Content-Type: application/json' \
  -d @pedido.json

```

---

## Convenções gerais

**Autenticação**

- Header: `Authorization: Bearer <token>` para todas as rotas públicas autenticadas. ([api.novo.infovarejo.com.br](https://api.novo.infovarejo.com.br/docs/public/ "Swagger UI"))

**Paginação**

- Quando disponível, use `page` (1-based) e `pageSize` (ex.: 50/100). As respostas costumam trazer metadados de total/última página.

**Códigos de resposta (mais comuns)**

- `200/201`: sucesso (lista/criação).
- `400`: validação de campos.
- `401/403`: token inválido/sem permissão.
- `404`: recurso não encontrado.
- `409`: conflito (ex.: CPF/CNPJ duplicado em upsert).
- `422`: erro de domínio (quando aplicável).
- `500`: erro interno.

**Boas práticas**

- Filtrar por janelas de **data de inclusão/alteração** para cargas incrementais.
- Tratar **timeout** e **retries** para rotas que retornam grandes volumes.
- Registrar `empresaId` e `filialId` corretamente para operações sensíveis a contexto (preço, estoque, pedido).
- Logar `requestId`/`correlationId` (se fornecido) para rastreabilidade.

Acesso a documentação Swagger completa em: https://api.novo.infovarejo.com.br/docs/public/