Ir para o conteúdo

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