Autenticação
Login de usuário via sessão (cookies HttpOnly). Integrações externas devem usar chave de API — não este fluxo.
Base: https://api.nivesistemas.com.br · 16 endpoints
POST /auth/login
Seção intitulada “POST /auth/login”Login — define cookies de sessão e retorna o usuário
Corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
username |
string | sim | Usuário |
password |
string | sim | Senha |
Resposta: { user, storeSlug } em sucesso; ou { requiresTwoFactor, pendingToken } / { requiresEnrollment, enrollmentToken } quando 2FA estiver ativo
curl -X POST "https://api.nivesistemas.com.br/auth/login" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo" \ -H "Content-Type: application/json" \ -d '{"username":"","password":""}'const res = await fetch("https://api.nivesistemas.com.br/auth/login", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "username": "", "password": "" }),});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/auth/login", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "username": "", "password": "" },)print(res.json())Exemplo de corpo
{ "username": "admin", "password": "admin123" }Exemplo de resposta
{ "user": { "id": "...", "username": "admin" }, "storeSlug": "minha-loja" }POST /auth/2fa/verify
Seção intitulada “POST /auth/2fa/verify”Confirmar login com código 2FA
Corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
pendingToken |
string | sim | Token retornado no login |
code |
string | sim | Código TOTP |
curl -X POST "https://api.nivesistemas.com.br/auth/2fa/verify" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo" \ -H "Content-Type: application/json" \ -d '{"pendingToken":"","code":""}'const res = await fetch("https://api.nivesistemas.com.br/auth/2fa/verify", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "pendingToken": "", "code": "" }),});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/auth/2fa/verify", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "pendingToken": "", "code": "" },)print(res.json())POST /auth/2fa/recover
Seção intitulada “POST /auth/2fa/recover”Login com código de recuperação 2FA
Corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
pendingToken |
string | sim | Token retornado no login |
backupCode |
string | sim | Código de backup |
curl -X POST "https://api.nivesistemas.com.br/auth/2fa/recover" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo" \ -H "Content-Type: application/json" \ -d '{"pendingToken":"","backupCode":""}'const res = await fetch("https://api.nivesistemas.com.br/auth/2fa/recover", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "pendingToken": "", "backupCode": "" }),});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/auth/2fa/recover", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "pendingToken": "", "backupCode": "" },)print(res.json())POST /auth/2fa/enroll/setup
Seção intitulada “POST /auth/2fa/enroll/setup”Iniciar cadastro de 2FA (quando exigido)
Corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
enrollmentToken |
string | sim | Token retornado no login (requiresEnrollment) |
curl -X POST "https://api.nivesistemas.com.br/auth/2fa/enroll/setup" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo" \ -H "Content-Type: application/json" \ -d '{"enrollmentToken":""}'const res = await fetch("https://api.nivesistemas.com.br/auth/2fa/enroll/setup", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "enrollmentToken": "" }),});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/auth/2fa/enroll/setup", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "enrollmentToken": "" },)print(res.json())POST /auth/2fa/enroll/confirm
Seção intitulada “POST /auth/2fa/enroll/confirm”Confirmar cadastro de 2FA
Corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
enrollmentToken |
string | sim | Token de enrollment |
code |
string | sim | Código TOTP |
curl -X POST "https://api.nivesistemas.com.br/auth/2fa/enroll/confirm" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo" \ -H "Content-Type: application/json" \ -d '{"enrollmentToken":"","code":""}'const res = await fetch("https://api.nivesistemas.com.br/auth/2fa/enroll/confirm", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "enrollmentToken": "", "code": "" }),});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/auth/2fa/enroll/confirm", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "enrollmentToken": "", "code": "" },)print(res.json())GET /auth/me
Seção intitulada “GET /auth/me”Dados do usuário autenticado (sessão ou API key)
Resposta: { id, username, name, permissions, … }
curl -X GET "https://api.nivesistemas.com.br/auth/me" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/auth/me", { 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/auth/me", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())POST /auth/presence
Seção intitulada “POST /auth/presence”Heartbeat de presença (usuário online no ERP agora)
curl -X POST "https://api.nivesistemas.com.br/auth/presence" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/auth/presence", { 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/auth/presence", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())PATCH /auth/me/print-target
Seção intitulada “PATCH /auth/me/print-target”Atualizar destino de impressão do usuário
Corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
printTarget |
string | não | Destino de impressão (LOCAL ou AGENT) |
printA4ViaAgent |
boolean | não | Se true, folha A4 também vai direto ao ponto (padrão false) |
curl -X PATCH "https://api.nivesistemas.com.br/auth/me/print-target" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo" \ -H "Content-Type: application/json" \ -d '{"printTarget":"","printA4ViaAgent":true}'const res = await fetch("https://api.nivesistemas.com.br/auth/me/print-target", { method: "PATCH", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "printTarget": "", "printA4ViaAgent": true }),});const data = await res.json();import requests
res = requests.request( "PATCH", "https://api.nivesistemas.com.br/auth/me/print-target", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "printTarget": "", "printA4ViaAgent": True },)print(res.json())PATCH /auth/me/ui-preferences
Seção intitulada “PATCH /auth/me/ui-preferences”Atualizar preferências de interface do usuário (favoritos da navegação)
Corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
navFavorites |
string[] | não | Rotas fixadas (máx. 5) |
curl -X PATCH "https://api.nivesistemas.com.br/auth/me/ui-preferences" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo" \ -H "Content-Type: application/json" \ -d '{"navFavorites":null}'const res = await fetch("https://api.nivesistemas.com.br/auth/me/ui-preferences", { method: "PATCH", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "navFavorites": null }),});const data = await res.json();import requests
res = requests.request( "PATCH", "https://api.nivesistemas.com.br/auth/me/ui-preferences", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "navFavorites": None },)print(res.json())POST /auth/logout
Seção intitulada “POST /auth/logout”Logout (limpa cookies de sessão)
curl -X POST "https://api.nivesistemas.com.br/auth/logout" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/auth/logout", { 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/auth/logout", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())GET /auth/permissions/catalog
Seção intitulada “GET /auth/permissions/catalog”Catálogo de permissões
curl -X GET "https://api.nivesistemas.com.br/auth/permissions/catalog" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/auth/permissions/catalog", { 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/auth/permissions/catalog", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())POST /auth/refresh
Seção intitulada “POST /auth/refresh”Renovar cookies de sessão
Resposta: { user, storeSlug }
curl -X POST "https://api.nivesistemas.com.br/auth/refresh" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/auth/refresh", { 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/auth/refresh", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())POST /auth/forgot-password
Seção intitulada “POST /auth/forgot-password”Solicitar redefinição de senha por e-mail
Corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
email |
string | sim | E-mail do usuário |
curl -X POST "https://api.nivesistemas.com.br/auth/forgot-password" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo" \ -H "Content-Type: application/json" \ -d '{"email":""}'const res = await fetch("https://api.nivesistemas.com.br/auth/forgot-password", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "email": "" }),});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/auth/forgot-password", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "email": "" },)print(res.json())POST /auth/reset-password
Seção intitulada “POST /auth/reset-password”Redefinir senha com o token recebido
Corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
token |
string | sim | Token do e-mail |
password |
string | sim | Nova senha |
curl -X POST "https://api.nivesistemas.com.br/auth/reset-password" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo" \ -H "Content-Type: application/json" \ -d '{"token":"","password":""}'const res = await fetch("https://api.nivesistemas.com.br/auth/reset-password", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "token": "", "password": "" }),});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/auth/reset-password", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "token": "", "password": "" },)print(res.json())GET /auth/my-stores
Seção intitulada “GET /auth/my-stores”Lojas às quais o usuário tem acesso (sessão)
curl -X GET "https://api.nivesistemas.com.br/auth/my-stores" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/auth/my-stores", { 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/auth/my-stores", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())POST /auth/switch-store
Seção intitulada “POST /auth/switch-store”Trocar de loja na sessão atual
Corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
storeSlug |
string | sim | Slug da loja |
curl -X POST "https://api.nivesistemas.com.br/auth/switch-store" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo" \ -H "Content-Type: application/json" \ -d '{"storeSlug":""}'const res = await fetch("https://api.nivesistemas.com.br/auth/switch-store", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "storeSlug": "" }),});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/auth/switch-store", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "storeSlug": "" },)print(res.json())
