Platform API (Java Spring Boot)¶
Base URL: http://localhost:8085
Tecnologia: Spring Boot 4.0.0 / Java 21
Autenticacao: JWT Bearer Token (HS512)
Swagger UI
Documentacao interativa disponivel em GET /swagger-ui.html e OpenAPI JSON em GET /v3/api-docs.
Autenticacao¶
Login¶
POST /auth/login
Autentica um usuario e retorna um token JWT.
Request Body:
Response 200 OK:
{
"token": "eyJhbGciOiJIUzUxMiJ9...",
"userId": "550e8400-e29b-41d4-a716-446655440000",
"email": "usuario@exemplo.com",
"name": "Nome do Usuario"
}
Response 401 Unauthorized:
Registro¶
POST /auth/register
Registra um novo usuario.
Request Body:
Response 201 Created:
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Nome do Usuario",
"email": "usuario@exemplo.com",
"createdAt": "2025-01-15T10:30:00Z"
}
Reset de Senha (Admin)¶
POST /auth/admin/reset-password
Reseta a senha de um usuario. Requer adminKey.
Request Body:
Usuarios¶
Autenticacao obrigatoria
Todos os endpoints /api/* requerem o header Authorization: Bearer {token}.
Listar Usuarios¶
GET /api/users
Retorna todos os usuarios.
Response 200 OK:
[
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Nome",
"email": "usuario@exemplo.com",
"createdAt": "2025-01-15T10:30:00Z",
"updatedAt": "2025-01-15T10:30:00Z"
}
]
Usuario Atual¶
GET /api/users/me
Retorna o usuario autenticado (extraido do JWT).
Buscar Usuario por ID¶
GET /api/users/{id}
| Parametro | Tipo | Descricao |
|---|---|---|
id |
UUID (path) | ID do usuario |
Criar Usuario¶
POST /api/users
Request Body:
Atualizar Usuario¶
PUT /api/users/{id}
| Parametro | Tipo | Descricao |
|---|---|---|
id |
UUID (path) | ID do usuario |
Request Body:
Deletar Usuario¶
DELETE /api/users/{id}
| Parametro | Tipo | Descricao |
|---|---|---|
id |
UUID (path) | ID do usuario |
Response 204 No Content
Datasources (Landing Pages)¶
Datasources representam as landing pages monitoradas pelo Oraculo.
Listar Datasources¶
GET /api/datasources
Retorna todos os datasources do usuario autenticado.
Response 200 OK:
[
{
"id": "660e8400-e29b-41d4-a716-446655440000",
"name": "Minha Landing Page",
"url": "https://minha-lp.com",
"type": "VSL",
"status": "ACTIVE",
"initialCheckpoint": 10000,
"retrainCheckpoint": 50000,
"createdAt": "2025-01-15T10:30:00Z"
}
]
Listar Datasources (Paginado)¶
GET /api/datasources/paginated
| Parametro | Tipo | Default | Descricao |
|---|---|---|---|
page |
int (query) | 0 | Numero da pagina |
size |
int (query) | 10 | Tamanho da pagina |
Buscar Datasource¶
GET /api/datasources/{id}
| Parametro | Tipo | Descricao |
|---|---|---|
id |
UUID (path) | ID do datasource |
Criar Datasource¶
POST /api/datasources
Request Body:
{
"name": "Minha Landing Page",
"url": "https://minha-lp.com",
"type": "VSL",
"initialCheckpoint": 10000,
"retrainCheckpoint": 50000
}
| Campo | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
name |
string | Sim | Nome identificador |
url |
string | Sim | URL da landing page |
type |
enum | Sim | VSL ou SVSL |
initialCheckpoint |
int | Nao | Sessoes para 1o treino (default: 10000) |
retrainCheckpoint |
int | Nao | Sessoes para retreino (default: 50000) |
Status possiveis do Datasource:
| Status | Descricao |
|---|---|
CREATED |
Recem-criado, sem configuracao |
INSTALLED |
SDK instalado na landing page |
TESTED |
Eventos de teste recebidos |
DONE |
Configuracao completa |
ACTIVE |
Ativo e coletando dados |
INACTIVE |
Desativado |
Atualizar Datasource¶
PUT /api/datasources/{id}
| Parametro | Tipo | Descricao |
|---|---|---|
id |
UUID (path) | ID do datasource |
Deletar Datasource¶
DELETE /api/datasources/{id}
| Parametro | Tipo | Descricao |
|---|---|---|
id |
UUID (path) | ID do datasource |
Success Events (Eventos de Conversao)¶
Definem o que constitui uma conversao na landing page (ex: clique em botao de compra).
Listar Success Events¶
GET /api/datasources/{datasourceId}/success-events
| Parametro | Tipo | Descricao |
|---|---|---|
datasourceId |
UUID (path) | ID do datasource |
Response 200 OK:
[
{
"id": "770e8400-e29b-41d4-a716-446655440000",
"name": "Clique no Botao Comprar",
"selector": "ID",
"selectorValue": "btn-comprar",
"datasourceId": "660e8400-e29b-41d4-a716-446655440000"
}
]
Listar Success Events (Paginado)¶
GET /api/datasources/{datasourceId}/success-events/paginated
| Parametro | Tipo | Default | Descricao |
|---|---|---|---|
datasourceId |
UUID (path) | - | ID do datasource |
page |
int (query) | 0 | Numero da pagina |
size |
int (query) | 10 | Tamanho da pagina |
Buscar Success Event¶
GET /api/datasources/{datasourceId}/success-events/{id}
Criar Success Event¶
POST /api/datasources/{datasourceId}/success-events
Request Body:
| Campo | Tipo | Descricao |
|---|---|---|
name |
string | Nome descritivo do evento |
selector |
enum | Tipo de seletor: CLASS, ID ou HREF |
selectorValue |
string | Valor do seletor CSS |
Atualizar Success Event¶
PUT /api/datasources/{datasourceId}/success-events/{id}
Deletar Success Event¶
DELETE /api/datasources/{datasourceId}/success-events/{id}
Actions (Acoes/Modais)¶
Configuracoes de intervencao que sao disparadas quando o modelo preve abandono.
Listar Actions¶
GET /api/datasources/{datasourceId}/actions
| Parametro | Tipo | Descricao |
|---|---|---|
datasourceId |
UUID (path) | ID do datasource |
Response 200 OK:
[
{
"id": "880e8400-e29b-41d4-a716-446655440000",
"secondsExit": 5,
"percentageExit": 30,
"action": "MODAL",
"actionValue": "<div class='modal'>...</div>",
"datasourceId": "660e8400-e29b-41d4-a716-446655440000"
}
]
Listar Actions (Paginado)¶
GET /api/datasources/{datasourceId}/actions/paginated
Buscar Action¶
GET /api/datasources/{datasourceId}/actions/{id}
Criar Action¶
POST /api/datasources/{datasourceId}/actions
Request Body:
{
"secondsExit": 5,
"percentageExit": 30,
"action": "MODAL",
"actionValue": "<div class='modal'><h2>Espere!</h2><p>Temos uma oferta especial</p></div>"
}
| Campo | Tipo | Descricao |
|---|---|---|
secondsExit |
int (nullable) | Tempo minimo (segundos) antes de exibir modal |
percentageExit |
int (nullable) | Threshold de probabilidade (0-100) para trigger |
action |
string | Tipo de acao: MODAL ou REDIRECT |
actionValue |
text | HTML do modal ou URL de redirecionamento |
Como funciona o threshold
Se percentageExit = 30, o modal sera disparado quando a probabilidade de conversao for menor que 30%. Ou seja, quanto menor a probabilidade, mais provavel que o usuario abandone.
Atualizar Action¶
PUT /api/datasources/{datasourceId}/actions/{id}
Deletar Action¶
DELETE /api/datasources/{datasourceId}/actions/{id}
Health & Metricas¶
Health Check¶
GET /actuator/health
Response:
Metricas Prometheus¶
GET /actuator/prometheus
Retorna metricas no formato Prometheus para scraping.