Rock Conecta (API REST)¶
API oficial de integração de PDV (Frente de Caixa) da Rock Conecta. É uma API REST/JSON que o caixa do varejista consome em três momentos de uma compra: identificar o cliente, autorizar descontos e registrar a venda.
Esta é a integração recomendada
Para novas integrações de PDV, utilize as APIs Rock Conecta desta seção. A integração Bnex (WSDL/SOAP) está depreciada e é mantida apenas para consulta de integrações existentes.
As três operações¶
O PDV consome três endpoints, um para cada momento da compra:
| Ordem | Operação | Endpoint | Quando chamar |
|---|---|---|---|
| 1 | Identificar cliente | POST /api/v1/tenants/{tenantId}/customers/identify |
Ao informar o CPF/CNPJ no início da compra |
| 2 | Autorizar descontos | POST /api/v1/tenants/{tenantId}/discounts/authorizations |
Com o carrinho montado, para obter os descontos exclusivos por item |
| 3 | Registrar venda | POST /api/v1/tenants/{tenantId}/sales |
Ao fechar a compra, para registrar a venda finalizada |
-
1. Identificar Cliente
Confirma o cliente pelo CPF/CNPJ e retorna dados cadastrais, classificação e código de preço diferenciado.
-
2. Autorizar Descontos
Recebe o carrinho + cliente e devolve os descontos exclusivos autorizados por item. Não grava nada — apenas lê ofertas.
-
3. Registrar Venda
Registra a venda finalizada. Responde
202 Acceptede processa de forma assíncrona.
Pontos que o integrador deve conhecer desde já:
- As três operações são independentes: o PDV pode chamar apenas a identificação, ou pular direto para registrar a venda (sem cliente identificado). O fluxo completo (1 → 2 → 3) é o caso de uso principal, mas não é obrigatório.
- Autorizar descontos apenas lê ofertas e devolve o carrinho com descontos — não grava nada.
- Registrar venda responde
202 Acceptedde imediato e processa a venda de forma assíncrona; o PDV não deve esperar processamento síncrono. - Todos os valores monetários de desconto no response usam até 8 casas decimais.
Requisitos para integrar¶
Antes de começar, o parceiro precisa dos itens abaixo — todos fornecidos pela Rock Conecta durante o onboarding:
| Requisito | Descrição |
|---|---|
tenantId |
UUID público que identifica o varejista. Vai no path de todas as chamadas. |
| Credenciais | clientId + clientSecret para o Basic Auth. O clientSecret é exibido uma única vez na criação — armazene com segurança. |
| URL base | Endereço do ambiente (homologação e produção). |
O cliente HTTP do PDV precisa ser capaz de:
- Enviar requisições
POSTcomContent-Type: application/json. - Enviar header
Authorization: Basic ...(HTTP Basic Auth). - Tratar respostas de erro no formato RFC 9457 (Problem Details).
- Enviar datas em ISO 8601 com offset de timezone (ex:
2026-05-26T16:00:00.000-03:00).
Onboarding
A criação do tenantId e das credenciais é feita internamente pela Rock Conecta.
Solicite o acesso ao time de integração para receber os dados do seu ambiente.
Autenticação¶
A API usa HTTP Basic Auth, por tenant.
- As credenciais são validadas contra o
tenantIddo path. OclientIddeve pertencer ao tenant da URL — caso contrário a requisição é rejeitada. - Credenciais inválidas ou ausentes retornam
401 Unauthorized. - O
clientSecreté armazenado de forma não recuperável pela plataforma. Se perdido, deve ser rotacionado (nova credencial gerada pela Rock Conecta).
Exemplo de header já codificado em Base64:
Headers comuns a todas as operações¶
| Header | Obrigatório | Descrição |
|---|---|---|
Authorization |
Sim | Basic base64(clientId:clientSecret) |
Content-Type |
Sim | application/json |
X-Correlation-Id |
Não | UUID para rastreabilidade ponta a ponta (ecoado nas respostas de erro) |
Path parameter comum¶
| Parâmetro | Tipo | Descrição |
|---|---|---|
tenantId |
UUID | Identificador público do varejista (fornecido pela Rock Conecta) |
Guia rápido (quickstart)¶
Sequência das três chamadas com curl. Substitua <BASE_URL>, <TENANT_ID>,
<CLIENT_ID> e <CLIENT_SECRET> pelos valores do seu ambiente.
curl -X POST "https://<BASE_URL>/api/v1/tenants/<TENANT_ID>/customers/identify" \
-u "<CLIENT_ID>:<CLIENT_SECRET>" \
-H "Content-Type: application/json" \
-H "X-Correlation-Id: 550e8400-e29b-41d4-a716-446655440000" \
-d '{ "sessionId": "abc-123", "protocol": "ROCK", "customer": { "id": "10098075012", "type": "CPF" } }'
curl -X POST "https://<BASE_URL>/api/v1/tenants/<TENANT_ID>/discounts/authorizations" \
-u "<CLIENT_ID>:<CLIENT_SECRET>" \
-H "Content-Type: application/json" \
-d '{ "sessionId": "abc-10", "protocol": "ROCK", "customer": { "id": "10098075012", "type": "CPF" }, "sale": { "store": { "id": "LOJA-001" }, "date": "2026-05-26T16:00:00.000-03:00", "items": [ { "id": "1", "gtin": "7891234567890", "unitPrice": 25.00, "unitMeasure": "UN", "quantity": 1 } ] } }'
curl -X POST "https://<BASE_URL>/api/v1/tenants/<TENANT_ID>/sales" \
-u "<CLIENT_ID>:<CLIENT_SECRET>" \
-H "Content-Type: application/json" \
-d '{ "protocol": "ROCK_V1", "customer": { "id": "10098075012", "type": "CPF" }, "sale": { "id": 45821, "store": { "id": "LOJA-001", "posId": "PDV-01" }, "channel": "1", "date": "2024-06-15T14:30:00Z", "amount": 25.00, "amountPayable": 25.00, "items": [ { "id": "1", "gtin": "7891234567890", "description": "Produto", "unitPrice": 25.00, "quantity": 1 } ], "payments": [ { "id": 1, "amount": 25.00, "method": "PIX" } ] } }'
Próximos passos¶
- Identificar Cliente — Operação 1
- Autorizar Descontos — Operação 2
- Registrar Venda — Operação 3
- Tratamento de Erros — RFC 9457 e tabela de status codes
- Boas práticas
Boas práticas para o integrador¶
- Envie sempre
X-Correlation-Id(UUID) para facilitar rastreabilidade e suporte. - Use um
sessionIdúnico por atendimento/compra nas operações 1 e 2. - Armazene o
clientSecretde forma segura; nunca versione em código. - Envie datas em ISO 8601 com offset explícito de timezone.
- Trate o
202 Accepteddo registro de venda como confirmação de recebimento, não de gravação final. - Preserve e reenvie os descontos autorizados (operação 2) ao registrar a venda (operação 3), mantendo o
promotionId. - Implemente retry com backoff para erros
5xx/503. Não faça retry automático de400/401/404.