Visão Geral

Esta API permite que sistemas externos autentiquem usuários com o perfil ‘remote-login’ de forma transparente para acesso aos chatbots, sem expor senhas, utilizando um fluxo baseado em token de uso único. Há duas formas de autenticação disponíveis:

  • Login via browser: O usuário é redirecionado para a Nevolus, que realiza o login e o redireciona para a página desejada.
  • Login transparente (backend): O sistema externo autentica o usuário e injeta os cookies de sessão no navegador do usuário.

1. Gerar Token de Login

Endpoint

POST /wp-json/custom/v1/generate-login-token

Headers obrigatórios

HeaderValor
AuthorizationBearer {API_KEY}
Content-Typeapplication/json
Acceptapplication/json

Body (JSON)

{
  "username": "NOME_DO_USUARIO"
}

Resposta de Sucesso (200)

{
  "login_token": "TOKEN_GERADO",
  "expires": nnnnnnnnnn,
  "login_url": "https://sua_url_nevolus/custom-login?token=TOKEN_GERADO"
}
  • login_token: Token de uso único válido por 5 minutos.
  • expires: Timestamp de expiração do token.
  • login_url: URL para login via browser (pode ser complementada com o parâmetro redirect).

Erros comuns

  • 403: Token de API inválido ou usuário sem permissão.
    NOTA: A geração de token só funciona para usuários com perfil ‘remote-login’.
  • 404: Usuário não encontrado.
  • 429: Muitas requisições. Tente novamente em instantes.
    NOTA: O limite é de 100 requisições por minuto.

2. Login via Browser (Redirecionamento)

Fluxo

  1. Gere o token conforme acima.
  2. Redirecione o usuário para a URL retornada em login_url, podendo adicionar o parâmetro redirect para definir a página de destino após o login.

Exemplo de URL

https://sua_url_nevolus/custom-login?token=TOKEN_GERADO&redirect=https://seudominio.com/pagina-redirecionamento
  • O usuário será autenticado na Nevolus e redirecionado para a URL informada em redirect.
  • Se redirect não for informado, o usuário será direcionado para um página padrão de confirmação (OK).

Parâmetros

ParâmetroObrigatórioDescrição
tokenSimToken de login gerado no passo anterior
redirectNãoURL de destino após login (deve ser absoluta)

3. Login Transparente (Backend)

Endpoint

POST /wp-json/custom/v1/login-with-token

Headers obrigatórios

HeaderValor
AuthorizationBearer {API_KEY}
Content-Typeapplication/json
Acceptapplication/json

Body (JSON)

{
  "token": "TOKEN_GERADO"
}

Resposta de Sucesso (200)

{
  "cookies": [
    "w..._logged_in_...=...; path=/; HttpOnly; secure",
    "w..._sec_...=...; path=/w.-a...; HttpOnly; secure"
  ],
  "username": "NOME_DO_USUARIO"
}
  • cookies: Array com os cookies de sessão que devem ser enviados ao navegador do usuário via cabeçalho Set-Cookie.
  • username: Username autenticado.

Erros comuns

  • 400: Token ausente.
  • 403: Token inválido ou expirado.

Observações de Segurança

  • Sempre utilize HTTPS para todas as requisições.
  • O token de login é de uso único e expira em 5 minutos.
  • O endpoint requer autenticação via API Key no header Authorization.
  • O parâmetro redirect deve apontar para URLs confiáveis do próprio domínio.

Exemplo de Fluxo Completo

Login via Browser

  1. POST /wp-json/custom/v1/generate-login-token com username.
  2. Redirecione o usuário para a URL retornada em login_url, adicionando &redirect=URL_DE_DESTINO se desejar.

Login Transparente

  1. POST /wp-json/custom/v1/generate-login-token com username.
  2. POST /wp-json/custom/v1/login-with-token com o token retornado.
  3. Injete os cookies retornados no navegador do usuário via cabeçalho Set-Cookie.

Exemplo de Requisição cURL

Gerar Token

curl -X POST "https://sua_url_nevolus/wp-json/custom/v1/generate-login-token" \
  -H "Authorization: Bearer {API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{"username":"usuario"}'

Login Transparente

curl -X POST "https://sua_url_nevolus/wp-json/custom/v1/login-with-token" \
  -H "Authorization: Bearer {API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{"token":"TOKEN_GERADO"}'

Exemplo de Injeção de Cookies com PHP e Python para Login Transparente (Backend)

O fluxo consiste em:

  1. Gerar um token de login para o usuário.
  2. Trocar o token por cookies de sessão usando o endpoint login-with-token.
  3. Enviar (injetar) os cookies de sessão ao navegador do usuário via cabeçalho Set-Cookie, para que ele acesse os chatbots em modo autenticado.
PHP — Exemplo de Injeção de Cookies
<?php  
// 1. Gerar token de login
$apiKey = 'SUA_API_KEY';
$username = 'usuario';

$ch = curl_init('https://sua_url_nevolus/wp-json/custom/v1/generate-login-token');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
'Accept: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'username' => $username
]));
$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
$token = $data['login_token'];

// 2. Trocar token por cookies de sessão
$ch = curl_init('https://sua_url_nevolus/wp-json/custom/v1/login-with-token');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
'Accept: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'token' => $token
]));
$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
$cookies = $data['cookies'];

// 3. Injetar cookies no navegador do usuário
foreach ($cookies as $cookieHeader) {
header('Set-Cookie: ' . $cookieHeader, false);
}

// 4. Redirecionar usuário para a área logada (opcional)
header('Location: https://sua_url_nevolus/area-logada');
exit();
?>
Python (Flask) — Exemplo de Injeção de Cookies
from flask import Flask, redirect, make_response, request  
import requests

app = Flask(__name__)

API_KEY = 'SUA_API_KEY'
NEVOLUS_BASE_URL = 'https://sua_url_nevolus'

@app.route('/login_transparente')
def login_transparente():
username = request.args.get('username')

# 1. Gerar token de login
resp = requests.post(
f'{NEVOLUS_BASE_URL}/wp-json/custom/v1/generate-login-token',
headers={
'Authorization': f'Bearer {API_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
json={'username': username}
)
data = resp.json()
token = data['login_token']

# 2. Trocar token por cookies de sessão
resp2 = requests.post(
f'{NEVOLUS_BASE_URL}/wp-json/custom/v1/login-with-token',
headers={
'Authorization': f'Bearer {API_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
json={'token': token}
)
data2 = resp2.json()
cookies = data2['cookies']

# 3. Injetar cookies no navegador do usuário
response = make_response(redirect('https://sua_url_nevolus/area-logada'))
for cookie_header in cookies:
# Extraindo partes do cookie para setar manualmente
parts = cookie_header.split(';')
key, value = parts[0].split('=', 1)
options = {}
for part in parts[1:]:
if '=' in part:
k, v = part.strip().split('=', 1)
options[k.lower()] = v
else:
options[part.strip().lower()] = True
response.set_cookie(key, value, path=options.get('path', '/'), httponly=options.get('httponly', False), secure=options.get('secure', False))
return response

if __name__ == '__main__':
app.run(debug=True)

Dica: Adapte a extração e definição de opções do cookie conforme necessário; frameworks como Flask ou Django possuem métodos próprios para set_cookie.


Observações Importantes

  • Sempre utilize HTTPS.
  • O login_token é de uso único e expira em 5 minutos.
  • Após injetar os cookies, redirecione o usuário para a página do chatbot ou para outra página conforme seu fluxo.

Em caso de dúvidas sobre integração, entre em contato consoco.