Skip to content

API do Copilot — Sessão ​

Documentação dos endpoints de abertura e encerramento de sessão do Copilot (Mini Maggu).

Base URL: https://api.localhost (local) ou a URL de API configurada no ambiente.

Autenticação: Token de configuração da loja via Authorization: Token <token>.


Abrir ou restaurar sessão ​

POST /copilot/sessoes

Cria uma nova sessão ou restaura uma sessão existente. Retorna a URL da Mini Maggu para ser aberta no PDV.

Corpo da requisição ​

CampoTipoObrigatórioDescrição
sessaoIdUUIDNãoID de uma sessão existente. Se fornecido e válido, a sessão é restaurada.
deviceIdstringNãoIdentificador do dispositivo (PDV/terminal). Máx. 256 caracteres.
versaoErpstringNãoVersão do ERP/PDV que está abrindo o copilot. Máx. 64 caracteres.
metadadosobjectNãoMetadados livres do dispositivo (ex: {"so": "windows"}).

Exemplo — nova sessão:

json
{
  "deviceId": "POS-001",
  "versaoErp": "1.2.3",
  "metadados": { "so": "windows" }
}

Exemplo — restaurar sessão:

json
{
  "sessaoId": "550e8400-e29b-41d4-a716-446655440000"
}

Respostas ​

200 — Loja apta:

json
{
  "ativo": true,
  "sessaoId": "550e8400-e29b-41d4-a716-446655440000",
  "url": "http://copilot.localhost/mini-maggu/v1/?token=abc&sala_id=550e8400-e29b-41d4-a716-446655440000"
}

Abrir url no iframe/webview do PDV inicia a interface do Mini Maggu. Guardar sessaoId para encerrar a sessão depois.

200 — Loja inapta:

json
{
  "ativo": false,
  "status": "BLOQUEADO"
}

Quando ativo é false, a url não é retornada e o copilot não deve ser exibido. Valores possíveis de status:

ValorCausa
BLOQUEADOLoja bloqueada
CHURN_VOLUNTARIOLoja cancelou o serviço
DISPOSITIVO_DESATIVADOO deviceId enviado está desativado nas configurações da loja

Encerrar sessão enviando a pré-venda ​

POST /copilot/sessoes/{sessaoId}/encerrar

Encerra a sessão do copilot e registra a pré-venda completa. Deve ser chamado quando o vendedor finaliza o atendimento no PDV.

Parâmetro de rota ​

ParâmetroTipoDescrição
sessaoIdUUIDID da sessão retornado na abertura (sessaoId do POST).

Corpo da requisição ​

CampoTipoObrigatórioDescrição
codigoExternoUsuariostringSimCódigo do vendedor no ERP. Máx. 256 caracteres.
codigoExternoPreVendastringSimCódigo da pré-venda no ERP. Máx. 256 caracteres.
cpfCnpjDoClientestringNãoCPF ou CNPJ do cliente (apenas dígitos).
itensarraySimLista de itens da pré-venda. Máx. 500 itens.
itens[].eanstringSimEAN do produto.
itens[].quantidadeintegerSimQuantidade do produto.
itens[].codigoExternoUsuariostringNãoCódigo do vendedor responsável por este item no ERP.

Exemplo:

json
{
  "codigoExternoUsuario": "VENDEDOR-1",
  "codigoExternoPreVenda": "PV-123",
  "cpfCnpjDoCliente": "30769867081",
  "itens": [
    {
      "ean": "7896000000000",
      "quantidade": 2,
      "codigoExternoUsuario": "VENDEDOR-1"
    },
    {
      "ean": "7891234567890",
      "quantidade": 1
    }
  ]
}

Respostas ​

StatusDescrição
201Pré-venda registrada com sucesso. Sessão encerrada.
400Dados inválidos. O corpo da resposta detalha os campos com erro.
403Token inválido ou sem permissão.

Fluxo completo ​

PDV                                      API Copilot
 |                                            |
 |-- POST /copilot/sessoes -----------------> |
 |                                            | verifica elegibilidade da loja
 |                                            | verifica se device_id está ativo
 |<-- 200 { ativo: true, sessaoId, url } ---- |
 |                                            |
 | [abre url no iframe/webview]               |
 | [vendedor usa o Mini Maggu]                |
 |                                            |
 |-- POST /copilot/sessoes/{sessaoId}/encerrar|
 |   { itens, codigoExternoPreVenda, ... } -> |
 |                                            | registra pré-venda
 |<-- 201 ----------------------------------- |
 |                                            |
 | [fecha o iframe/webview]                   |