Aprovações
Pedidos de aprovação de ações sensíveis (cancelar ou reabrir venda, etc.) feitos por usuários sem liberação e respondidos por quem tem permissão de aprovar. Também podem ser respondidos pelo WhatsApp.
Base: https://api.nivesistemas.com.br · 6 endpoints
GET /approvals/policy
Seção intitulada “GET /approvals/policy”Como a tela deve confirmar ações sensíveis para o usuário logado
Resposta: { policy }. ADMIN = confirma com a própria senha de administrador; FREE = usuário liberado, executa na hora; APPROVAL = a ação vira um pedido de aprovação.
curl -X GET "https://api.nivesistemas.com.br/approvals/policy" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/approvals/policy", { method: "GET", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "GET", "https://api.nivesistemas.com.br/approvals/policy", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())GET /approvals/count
Seção intitulada “GET /approvals/count”Contadores de pedidos pendentes (para o selo de notificação)
Resposta: { canDecide, toDecide, mine }. toDecide = pedidos de outros usuários aguardando resposta (0 se o usuário não pode aprovar); mine = pedidos pendentes feitos pelo próprio usuário.
curl -X GET "https://api.nivesistemas.com.br/approvals/count" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/approvals/count", { method: "GET", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "GET", "https://api.nivesistemas.com.br/approvals/count", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())GET /approvals
Seção intitulada “GET /approvals”Listar pedidos de aprovação
Query params
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
scope |
string | não | mine (padrão: últimos 50 pedidos do próprio usuário), pending (pendentes de todos, mais antigos primeiro; só para quem aprova) ou history (já respondidos, últimos 100; só para quem aprova) |
Resposta: { canDecide, items }. Cada item traz id, type, typeLabel, entityType, entityId, status (PENDING, APPROVED, REJECTED, CANCELLED, EXPIRED ou FAILED), summary, justification, requestedByName, decidedByName, decidedAt, decidedVia (APP ou WHATSAPP), decisionNote, resultMessage, expiresAt e createdAt. Pedidos vencidos viram EXPIRED na leitura.
curl -X GET "https://api.nivesistemas.com.br/approvals" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/approvals", { method: "GET", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "GET", "https://api.nivesistemas.com.br/approvals", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())POST /approvals/:id/approve
Seção intitulada “POST /approvals/:id/approve”Aprovar o pedido — a ação solicitada é executada na hora (exige permissão de aprovar)
Parâmetros de rota: id
Corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
note |
string | não | Observação da decisão (até 300 caracteres) |
Resposta: { outcome, message, approval }. outcome: approved (ação executada; message traz o resultado), failed (aprovado mas a execução falhou; message traz o erro e o pedido fica FAILED), already (já respondido) ou expired. 403 se o usuário não pode aprovar ou se foi ele mesmo quem fez o pedido; 404 se não existe.
curl -X POST "https://api.nivesistemas.com.br/approvals/{id}/approve" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo" \ -H "Content-Type: application/json" \ -d '{"note":""}'const res = await fetch("https://api.nivesistemas.com.br/approvals/{id}/approve", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "note": "" }),});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/approvals/{id}/approve", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "note": "" },)print(res.json())POST /approvals/:id/reject
Seção intitulada “POST /approvals/:id/reject”Recusar o pedido — a ação solicitada não é executada (exige permissão de aprovar)
Parâmetros de rota: id
Corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
note |
string | não | Motivo da recusa (até 300 caracteres) |
Resposta: { outcome, message, approval }. outcome: rejected, already ou expired. 403 se o usuário não pode aprovar ou se foi ele mesmo quem fez o pedido.
curl -X POST "https://api.nivesistemas.com.br/approvals/{id}/reject" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo" \ -H "Content-Type: application/json" \ -d '{"note":""}'const res = await fetch("https://api.nivesistemas.com.br/approvals/{id}/reject", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "note": "" }),});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/approvals/{id}/reject", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "note": "" },)print(res.json())POST /approvals/:id/cancel
Seção intitulada “POST /approvals/:id/cancel”Desistir de um pedido ainda pendente (quem pediu ou um aprovador)
Parâmetros de rota: id
Resposta: { approval } com status CANCELLED. 403 se não for o solicitante nem aprovador; 409 se o pedido já foi respondido.
curl -X POST "https://api.nivesistemas.com.br/approvals/{id}/cancel" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/approvals/{id}/cancel", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/approvals/{id}/cancel", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())
