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]                   |