Pular para conteúdo

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:

{
  "email": "usuario@exemplo.com",
  "password": "senha123"
}

Response 200 OK:

{
  "token": "eyJhbGciOiJIUzUxMiJ9...",
  "userId": "550e8400-e29b-41d4-a716-446655440000",
  "email": "usuario@exemplo.com",
  "name": "Nome do Usuario"
}

Response 401 Unauthorized:

{
  "status": 401,
  "message": "Invalid credentials"
}

Registro

POST /auth/register

Registra um novo usuario.

Request Body:

{
  "name": "Nome do Usuario",
  "email": "usuario@exemplo.com",
  "password": "senha123"
}

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:

{
  "email": "usuario@exemplo.com",
  "newPassword": "novaSenha123",
  "adminKey": "chave-admin"
}

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:

{
  "name": "Nome",
  "email": "usuario@exemplo.com",
  "password": "senha123"
}

Atualizar Usuario

PUT /api/users/{id}

Parametro Tipo Descricao
id UUID (path) ID do usuario

Request Body:

{
  "name": "Novo Nome",
  "email": "novo@exemplo.com"
}

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:

{
  "name": "Clique no Botao Comprar",
  "selector": "ID",
  "selectorValue": "btn-comprar"
}
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:

{
  "status": "UP",
  "components": {
    "db": { "status": "UP" },
    "diskSpace": { "status": "UP" }
  }
}

Metricas Prometheus

GET /actuator/prometheus

Retorna metricas no formato Prometheus para scraping.