API de Bases
A API de Bases é responsável por gerenciar as bases de dados, seus dados externos, e as permissões de acesso dos usuários a essas bases (grupos).
Nota – Autenticação Todos os endpoints descritos abaixo requerem autenticação via JWT.
Para acessá-los, é necessário enviar um token de autorização no cabeçalho da requisição:Authorization: Bearer <seu_token_jwt>
Gerenciamento de Bases
Endpoints focados na criação, leitura, atualização e exclusão (CRUD) das bases de dados e seu conteúdo.
1. Listar todas as bases do usuário
Este método retorna uma lista com todas as bases às quais o usuário autenticado tem acesso.
Endpoint:
GET /getAllBases
Exemplo de Resposta (200 OK):
[
{
"key": 1,
"name_base": "base_vendas_2024",
"description": "Dados de vendas do ano de 2024"
},
{
"key": 2,
"name_base": "base_clientes_ativos",
"description": "Lista de clientes com compras recentes"
}
]
2. Buscar dados externos de uma base
Recupera os dados armazenados em uma base específica, identificada pelo nome.
Endpoint:
GET /base/:name_base/externaldata
Parâmetros de Rota:
| Parâmetro | Tipo | Descrição |
|---|---|---|
name_base |
string |
Nome da base a ser consultada. |
3. Buscar base por chave (ID)
Recupera os detalhes de uma base específica com base em sua chave (key).
Endpoint:
GET /base/key/:key
Parâmetros de Rota:
| Parâmetro | Tipo | Descrição |
|---|---|---|
key |
number |
Chave (ID) da base a ser consultada. |
4. Buscar base por nome
Recupera os detalhes de uma base específica com base no seu nome.
Endpoint:
GET /base/:nome_base
Parâmetros de Rota:
| Parâmetro | Tipo | Descrição |
|---|---|---|
nome_base |
string |
Nome da base a ser consultada. |
5. Criar uma nova base
Cria uma nova estrutura de base de dados.
Endpoint:
POST /base
Corpo da Requisição (application/json):
O corpo deve conter o objeto Base com a estrutura da nova base.
{
"name_base": "nova_base_marketing",
"description": "Campanhas de marketing do Q3",
"fields": [
{ "name": "id_campanha", "type": "INTEGER" },
{ "name": "nome_campanha", "type": "TEXT" },
{ "name": "orcamento", "type": "REAL" }
]
}
6. Atualizar uma base
Atualiza a estrutura ou os metadados de uma base existente.
Observação: Não é possível alterar o nome de campos nem tipos de dados (datatype) após a criação de uma base.
Endpoint:
PUT /base
Corpo da Requisição (application/json):
O corpo deve conter o objeto Base com os dados a serem atualizados, incluindo sua key.
{
"key": 3,
"name_base": "nova_base_marketing_2025",
"description": "Campanhas de marketing do ano de 2025"
}
7. Atualizar dados externos de uma base
Atualiza (insere ou modifica) os registros de dados dentro de uma base específica.
Endpoint:
PUT /base/:nome_base/externaldata
Parâmetros de Rota:
| Parâmetro | Tipo | Descrição |
|---|---|---|
nome_base |
string |
Nome da base a ser atualizada. |
Corpo da Requisição (application/json):
Um array de objetos contendo os dados a serem inseridos/atualizados.
[
{ "id_campanha": 1, "nome_campanha": "Natal Feliz", "orcamento": 5000.00 },
{ "id_campanha": 2, "nome_campanha": "Black Friday", "orcamento": 15000.00 }
]
8. Deletar uma base
Remove permanentemente uma base e todos os seus dados.
Endpoint:
DELETE /base/:key
Parâmetros de Rota:
| Parâmetro | Tipo | Descrição |
|---|---|---|
key |
number |
Chave (ID) da base a ser deletada. |
9. Obter JSON Schema de uma base por Chave(ID)
Recupera o JSON Schema de uma base específica a partir da sua chave única.
Endpoint:
GET /getJsonSchema/:base_key
Parâmetros de Rota:
| Parâmetro | Tipo | Descrição |
|---|---|---|
base_key |
number |
Chave (ID) da base. |
Exemplo de Resposta (200 OK):
{
"$schema": "http://json-schema.org/draft-07/schema",
"$id": 83,
"title": "base",
"description": "base simples",
"type": "object",
"properties": {
"arquivo": {
"type": "array",
"items": {
"type": "object",
"properties": {
"uuid": {
"type": "string"
},
"id_file": {
"type": "string"
},
"mimetype": {
"type": "string"
},
"filesize": {
"type": "number"
},
"date_upload": {
"type": "string"
},
"idioma": {
"type": "string"
}
},
"required": [
"uuid",
"id_file",
"mimetype",
"filesize",
"date_upload"
],
"additionalProperties": false
},
"description": "campo arquivo"
},
"_metadata": {
"type": "object",
"additionalProperties": true
},
"externaldata": {
"type": "object",
"additionalProperties": true
}
},
"required": [],
"additionalProperties": false
}
10. Obter JSON Schema de uma base por Nome
Recupera o JSON Schema de uma base específica usando o nome dela (restrito ao contexto do usuário logado).
Endpoint:
GET /getJsonSchema/:nome_base
Parâmetros de Rota:
| Parâmetro | Tipo | Descrição |
|---|---|---|
nome_base |
string |
Nome da base. |
| ----- |
Gerenciamento e Permissões de Grupos
Endpoints para gerenciar o acesso dos usuários às bases. Neste contexto, um "Grupo" representa a associação de um usuário a uma base.
11. Listar usuários de uma base (grupo)
Retorna uma lista de usuários associados a uma base específica.
Endpoint:
GET /group/getGroupByUser/:id
Parâmetros de Rota:
| Parâmetro | Tipo | Descrição |
|---|---|---|
id |
number |
ID da base para consultar os usuários. |
12. Listar bases de um usuário (grupos)
Retorna uma lista de bases (grupos) às quais um usuário específico tem permissão.
Endpoint:
GET /group/getGroupByUserId/:id
Parâmetros de Rota:
| Parâmetro | Tipo | Descrição |
|---|---|---|
id |
number |
ID do usuário para consultar suas bases. |
13. Adicionar usuário a um grupo (associar à base)
Cria uma nova associação entre um usuário e uma base.
Endpoint:
POST /group/addGroup
Corpo da Requisição (application/json):
O objeto GrupoDTO deve conter o ID do usuário e o ID da base.
{
"id_user": 10,
"id_base": 3,
"permissao": "leitura"
}
14. Atualizar permissão de um grupo
Altera as permissões de um usuário em uma base específica.
Endpoint:
PUT /group/updateGroup
Corpo da Requisição (application/json):
O objeto GrupoDTO deve conter o ID do grupo (associação) e a nova permissão.
{
"id_grupo": 15,
"permissao": "escrita"
}
15. Remover usuário de um grupo (desassociar da base)
Remove a associação entre um usuário e uma base.
Endpoint:
DELETE /group/deleteGroup
Corpo da Requisição (application/json):
O corpo deve conter o ID do grupo (associação) a ser removido.
{
"id_grupo": 15
}
16. Deletar permissões de um usuário
Remove permissões específicas de um usuário.
Endpoint:
DELETE /permissoes/:idUser/
Parâmetros de Rota:
| Parâmetro | Tipo | Descrição |
|---|---|---|
idUser |
number |
ID do usuário para remover permissões. |
Corpo da Requisição (application/json):
O corpo deve conter a permissão a ser removida.
{
"permissao": "escrita"
}
Reindexação e Elasticsearch
Endpoints focados na indexação de bases.
17. Reindexar Base
Atualiza o mapping do índice do Elasticsearch da base e reindexa os registros. Como é uma operação assíncrona, ela retorna um jobId para acompanhamento.
Endpoint:
POST /base/:idBase/reindex
Parâmetros de Rota:
| Parâmetro | Tipo | Descrição |
|---|---|---|
idBase |
number |
ID da Base a ser reindexada. |
Parâmetros de Query (Opcional):
| Parâmetro | Tipo | Descrição |
|---|---|---|
strategy |
string |
Estratégia de reindexação (auto ou rebuild). Padrão auto. |
Exemplo de Resposta (201 Created):
{
"jobId": "1782740640521_U2R9y47YHU",
"mode": "in_place",
"index": "gb_reg_user_2d967c2bd8112c741cb4b6b204359c"
}
18. Consultar Status da Reindexação
Consulta o status de execução de um job de reindexação gerado anteriormente.
Endpoint:
GET /base/reindex/:jobId
Exemplo de Resposta (200 OK):
{
"jobId": "1782740640521_U2R9y47YHU",
"baseId": 117,
"index": "gb_reg_user_2d967c2bd8112c741cb4b6b204359c",
"url": "http://elasticsearch:9200",
"mode": "in_place",
"status": "completed",
"startedAt": "2026-06-29T13:44:00.522Z",
"step": "done",
"esTaskId": "N6Ur5ZyeTu2mhp0YSq5jtw:1132",
"finishedAt": "2026-06-29T13:44:01.419Z",
"task": {
"completed": true,
"task": {
"node": "N6Ur5ZyeTu2mhp0YSq5jtw",
"id": 1132,
"type": "transport",
"action": "indices:data/write/update/byquery",
"status": {
"total": 4,
"updated": 4,
"created": 0,
"deleted": 0,
"batches": 1,
"version_conflicts": 0,
"noops": 0,
"retries": {
"bulk": 0,
"search": 0
},
"throttled_millis": 0,
"requests_per_second": -1,
"throttled_until_millis": 0
},
"description": "update-by-query [gb_reg_fillipe_2d967c2bd8112c741cb4b6b204359c]",
"start_time_in_millis": 1782740641246,
"running_time_in_nanos": 433368500,
"cancellable": true,
"cancelled": false,
"headers": {}
},
"response": {
"took": 350,
"timed_out": false,
"total": 4,
"updated": 4,
"created": 0,
"deleted": 0,
"batches": 1,
"version_conflicts": 0,
"noops": 0,
"retries": {
"bulk": 0,
"search": 0
},
"throttled": "0s",
"throttled_millis": 0,
"requeFRests_per_second": -1,
"throttled_until": "0s",
"throttled_until_millis": 0,
"failures": []
}
}
}
Parâmetros de Rota:
| Parâmetro | Tipo | Descrição |
|---|---|---|
jobId |
string |
ID do job retornado pela rota de reindexação. |
19. Aplicar Mapping Personalizado
Aplica um mapping do Elasticsearch informado no corpo da requisição, realiza a validação (dry-run) e reindexa os registros. Também retorna um jobId.
Endpoint:
POST /base/:idBase/mapping
Parâmetros de Rota:
| Parâmetro | Tipo | Descrição |
|---|---|---|
idBase |
number |
ID da base. |
Parâmetros de Query (Opcional):
| Parâmetro | Tipo | Descrição |
|---|---|---|
strategy |
string |
Estratégia (auto ou rebuild). Forçado para rebuild se houver settings no body. |
Corpo da Requisição (application/json):
O corpo deve conter o objeto de mapping e settings do Elasticsearch.
{
"mappings": {
"properties": {
"nome_campo": { "type": "text" }
}
},
"settings": {}
}
Gerenciamento e Permissões de Usuários
Endpoints para gerenciar a permissão dos usuários às bases.
20. Adicionar Permissão Individual
Cria uma nova permissão para uma base específica. Deve ser usado para conceder acesso a um usuário de forma individualizada. A ação registra o usuário autenticado como o responsável pela concessão (grantedBy).
Endpoint:
POST /addPermissao
Corpo da Requisição (application/json):
O corpo deve conter o objeto com a estrutura da nova permissão.
{
"idUser": 10,
"idBase": 20,
"grantedBy": 1,
"canRead": true,
"canWrite": false,
"canDelete": false
}
21. Adicionar Permissões em Lote
Cria múltiplas permissões simultaneamente em uma ou mais bases, evitando a necessidade de realizar diversas chamadas individuais.
Endpoint:
POST /addPermissaoLote
Corpo da Requisição (application/json):
O corpo deve conter um array de objetos com a estrutura das novas permissões.
[
{
"idUser": 10,
"idBase": 20,
"grantedBy": 1,
"canRead": true,
"canWrite": false,
"canDelete": false
},
{
"idUser": 11,
"idBase": 20,
"grantedBy": 1,
"canRead": true,
"canWrite": true,
"canDelete": false
}
]
22. Atualizar Permissão
Modifica os níveis de acesso (canRead, canWrite, canDelete) de uma permissão já existente.
Endpoint:
PUT /updatePermissao
Corpo da Requisição (application/json):
O corpo deve conter o objeto com a estrutura da permissão atualizada.
{
"idUser": 10,
"idBase": 20,
"grantedBy": 1,
"canRead": true,
"canWrite": false,
"canDelete": false
}
23. Remover Permissão
Revoga permanentemente o acesso de um usuário a uma base a partir do ID da permissão informado na rota.
Endpoint:
DELETE /deletePermissao/:id
24. Listar Permissões Recebidas
Retorna todas as permissões que foram concedidas ao usuário autenticado, permitindo que ele veja a quais bases de terceiros possui acesso.
Endpoint:
GET /getPermissoesRecebidas
25. Listar Permissões Concedidas
Retorna todas as permissões que o usuário autenticado distribuiu, permitindo mapear quem possui acesso às bases gerenciadas por ele.
Endpoint:
GET /getPermissoesConcedidas