Pular para o conteúdo principal

Fontes de dados de execuções

Dentre todas as fontes de dados existentes, a ferramenta de Scripts conta com quatro delas destinadas às execuções dos artefatos, sejam eles de relatórios ou scripts. Essas fontes estão disponíveis no explorador de fonte de dados, dentro do grupo Fontes de dados da Plataforma para Dados de Execuções.

fontes-dados

Cada uma das fontes possui sua função específica, sendo:

  • execucoes.busca: busca todas as execuções passando alguns filtros;
  • execuções.movimentacoes: retorna as movimentaçẽos de uma execução dado um protocolo de execução;
  • execucoes.propriedades: retorna as propriedades de uma execução dado um protocolo de execução;
  • parametros.busca: busca as execuções a partir dos dados de seus parâmetros.

Consulta execuções

É uma fonte que consulta as execuções de scripts e relatórios, permitindo visualizar algumas propriedades, como: dados do agendamento, usuário, status, mensagens de inconsistência, endereço dos arquivos gerados e no caso de relatórios, endereços dos arquivos assinados digitalmente.

A fonte disponibiliza uma série de campos para visualização, ordenação e filtros, que estão dispostas nas abas de mesmo nome.

Exemplificando: execução de integração com outro sistema, onde seja necessário enviar os relatórios assinados digitalmente dentro de um período. Essa fonte lhe fornecerá os endereços dos relatórios e demais funcionalidades do script que lhe proverão o restante.

No exemplo abaixo é exibido um script utilizando a fonte mencionada:

fontes-dados

Consulta de propriedades de execução

Essa é uma fonte de dados que retorna as propriedades de uma execução, como o formato de exportação do arquivo gerado. Nessa consulta é obrigatório informar o código do protocolo, sendo esse o único filtro disponível.

Exemplificando: determinar o formato de exportação de um determinado arquivo ou se o mesmo foi enviado por e-mail.

No código abaixo é demonstrado um exemplo de uso:

fontes-dados

Consulta de movimentações de execução

Essa fonte é semelhante a fonte de consulta de propriedades de execução, porém exibe informações relacionadas aos passos de execução do artefato, bem como métricas de tempo de execução em cada um.

Exemplificando: determinar o tempo que uma execução levou para ocorrer, desde o momento que foi requisitado até ser finalizado.

No código abaixo é demonstrado um exemplo de uso:

fontes-dados

Consulta de execuções por parâmetros

Essa fonte é semelhante à fonte de consulta de execuções, porém o retorno das execuções se dará a partir dos parâmetros usados para execução da mesma.

A fonte disponibiliza uma série de campos para visualização, ordenação e filtros, que estão dispostas nas abas de mesmo nome.

Exemplificando: determinar as execuções onde fora fornecido um valor para um parâmetro e o valor seja igual ao desejado.

No código abaixo é demonstrado um exemplo de uso:

fontes-dados

API de Gerenciamento de Acessos, Bloqueios e Permissões de Usuários

Esta documentação detalha uma API e fontes de dados projetada para automatizar o gerenciamento de acessos de usuários. Elas possibilitam que sistemas, como o de Folha de Pagamento, possam desativar e gerenciar programaticamente os acessos de um servidor em todos os sistemas licenciados, especialmente em um cenário
de rescisão de contrato.

As funcionalidades permitem:

  1. Listar todos os acessos de um usuário em uma entidade.
  2. Bloquear (com data de término ou indefinidamente) e desbloquear o acesso de um usuário.
  3. Gerenciar permissões granulares, alterando o acesso a funcionalidades específicas (via PageMappings) e a grupos de permissão, sem a necessidade de bloquear o usuário por completo.

Estes recursos estão disponíveis tanto via Endpoints de API (para integrações sistema-a-sistema) quanto via Fontes de Dados no Gerenciador de Scripts.

Para entender a API, imagine o seguinte fluxo de trabalho automatizado quando um funcionário é desligado da organização:

  1. Identificação: O sistema de RH identifica o userId do funcionário a ser desligado.
  2. Listagem de Acessos: O sistema consome a API para listar todos os accessId associados àquele userId na entidade.
  3. Remoção de Permissões (Opcional): Para cada accessId, o sistema pode remover o acesso a grupos específicos ou revogar permissões de módulos sensíveis (como o "Minha Folha").
  4. Bloqueio Total: Como passo final, o sistema realiza uma chamada para bloquear permanentemente o userId, garantindo que ele não possa mais acessar nenhum sistema da entidade.

Autenticação e autorização

Os endpoints GET exigem token com scope: aplicacoes.plataforma.betha.cloud/auth/dados/acessos.leitura

Os outros endpoints exigem token com scope: aplicacoes.plataforma.betha.cloud/auth/dados/acessos.escrita

Ambos os casos também aceitam escopo de suite.services porém o uso é restrito para o catálogo de dados e não deve ser utilizado para integrações diretas.

A solicitação para criação dos seguintes tokens deve ser solicitado a equipe de plataforma.

Também é necessário que o UserAccess utilizado seja de um admin no sistema Folha (systemId 33) da entidade a ser gerenciada, todos os endpoints a seguir tem escopo estrito a essa entidade.

Hosts

URL Teste: https://plataforma-autorizacoes-dados.test.betha.cloud/autorizacoes/v0.1/dados/api URL Produção: https://plataforma-autorizacoes-dados.betha.cloud/autorizacoes/v0.1/dados/api

Definição dos endpoints da fonte para bloqueio de acessos por usuário

Erros Gerais

Erros Gerais (aplicados a todos os endpoints)

Código HTTPMensagemCenário
403"O acesso utilizado deve ser dos sistema {allowedSystems} para utilizar essa fonte"Sistema não está na whitelist para funcionalidade de RH (HumanResourcesFilter)
403(sem mensagem específica)Usuário não é administrador ou é usuário técnico sem permissão (ManagementRequestFilter)

Formato dos erros

  {
"message": "O usuário 123456 não foi encontrado."
}

Endpoint para criação de bloqueio de um acesso

POST /management/access/blocks/block

Exemplo do body esperado na request:

{
"userId": "joel.filho",
"systemId": 33,
"finalDate": "2025-06-30"
}

Dicionário dados:

NomeTipoObservações
userIdString
finalDateStringData final do bloqueio no formato yyyy-MM-dd em GMT-3, o envio é opcional, caso não enviado o bloqueio é definido como tempo indeterminado
systemIdInteger

Resposta esperada em caso de sucesso:

Status code: 20O OK

Dicionário Erros

Código HTTPMensagemCenário
400"O usuário {userId} não foi encontrado."Usuário informado não existe no sistema
400"O usuário {userId} não possui acesso para o sistema {systemId} na entidade {entity} e no banco {database}"Usuário não tem acesso ao sistema/contexto especificado

Endpoint para buscar bloqueios dos acessos de um usuário

GET /management/access/blocks/{{userId}}/system/{{systemId}}

Exemplo de resposta esperada em caso de sucesso:

Status code: 200 OK

{
"userId": "joel.filho",
"entityId": 1,
"databaseId": 1,
"systemId": 1,
"finalDate": "2025-06-30",
"initialDate": "2025-06-01"
}

Dicionário dados:

NomeTipoObservações
userIdString
finalDateStringData final do bloqueio no formato yyyy-MM-dd em GMT-3, o envio é opcional, caso não enviado o bloqueio é definido como tempo indeterminado
initialDateStringData inicial do bloqueio no formato yyyy-MM-dd em GMT-3
entityIdInteger
databaseIdInteger
systemIdInteger

Dicionário Erros

Código HTTPMensagemCenário
404"O usuário {userId} não foi encontrado."Usuário informado não existe
404"O sistema {systemId} não foi encontrado."Sistema informado não existe
404"Bloqueio para o usuário {userId} não encontrado."Não existe bloqueio para o usuário/sistema

Endpoint para atualizar os bloqueios

PATCH /management/access/blocks/{{userId}}/system/{{systemId}}

Exemplo do body esperado na request:

{
"finalDate": "2025-06-30",
}

Dicionário dados:

NomeTipoObservações
finalDateStringData final do bloqueio no formato yyyy-MM-dd em GMT-3, o envio é opcional, caso não enviado o bloqueio é definido como tempo indeterminado

Dicionário Erros

Código HTTPMensagemCenário
404"O usuário {userId} não foi encontrado."Usuário informado não existe
404"Bloqueio para o usuário {userId} não encontrado."Não existe bloqueio para atualizar
400"O usuário {userId} não possui acesso para o sistema {systemId} na entidade {entity} e no banco {database}"Usuário não tem acesso ao sistema/contexto

Endpoint para desbloquear um usuário

POST /management/access/blocks/unblock

Exemplo do body esperado na request:

{
"userId": "joel.filho",
"systemId": 33,
}

Exemplo de resposta esperada em caso de sucesso:

Status code: 20O OK

Dicionário Erros

Código HTTPMensagemCenário
400"O usuário {userId} não foi encontrado."Usuário informado não existe
400"Bloqueio para o usuário {userId} não encontrado."Não existe bloqueio para o usuário especificado
400"O usuário {userId} não possui acesso para o sistema {systemId} na entidade {entity} e no banco {database}"Usuário não tem acesso ao sistema/contexto

Definição dos endpoints da fonte para listagem de acessos na entidade atual

Endpoint para listagem de acessos na entidade atual

GET /management/access/of-context

Definição dos endpoints da fonte para possibilitar atualizar as permissões de um usuário

Autenticação, autorização e hosts

São as mesmas dos outros endpoints acima

Endpoint para listar acessos de um usuário

GET /acessos

Parâmetros de query:

NomeTipoObrigatórioDescrição
offsetIntNãoÍndice inicial da paginação.
sortStringNãoCampo e ordenação, ex: user asc
limitIntNãoQuantidade máxima de registros por página.
filterStringSimFiltro para campos, utilize: user = "usuario"
fieldsStringNãoLista de campos que devem ser retornados, separados por vírgula. Ex: id

Exemplo de resposta esperada em caso de sucesso:

Status code: 200 OK

{
"content": [
{
"id": "68234ed379a39cbb7795ced4",
"user": "teste",
"userName": "ADRIANA SCHNEIDER DE LIMA"
}
],
"offset": 0,
"limit": 100,
"total": 1,
"hasNext": false
}

Dicionário de dados:

NomeTipoObservações
idStringIdentificador único do acesso
userStringLogin do usuário
userNameStringNome completo do usuário
offsetIntÍndice atual de início da lista (para paginação)
limitIntQuantidade de registros retornados
totalIntTotal de registros encontrados
hasNextBoolIndica se há mais registros além dos retornados na página atual

Dicionário de erros:

Status codeMensagemMotivo
400Requisição mal formatada
500Erro interno ao processar a requisição

Endpoint para adicionar acesso a um grupo

PUT /acessos/:accessId/groups/:groupId

Parâmetros de path:

NomeTipoObrigatórioDescrição
accessIdStringSimIdentificador do acesso
groupIdStringSimIdentificador do grupo a ser vinculado

Exemplo de requisição:

URL:


PUT /acessos/68234ed379a39cbb7795ced4/groups/6824cd822d70b9000113563e

Body: (nenhum corpo é enviado)

Exemplo de resposta esperada em caso de sucesso:

Status code: 200 OK

// Sem corpo de resposta

Dicionário de erros:

Status codeMensagemMotivo
400Requisição mal formatada ou dados inválidos
404Acesso ou grupo não encontrado
500Erro interno ao processar a requisição

Endpoint para remover acesso a um grupo

DELETE /acessos/:accessId/groups/:groupId

Parâmetros de path:

NomeTipoObrigatórioDescrição
accessIdStringSimIdentificador do acesso
groupIdStringSimIdentificador do grupo a ser vinculado

Exemplo de requisição:

URL:


DELETE /acessos/68234ed379a39cbb7795ced4/groups/6824cd822d70b9000113563e

Body: (nenhum corpo é enviado)

Exemplo de resposta esperada em caso de sucesso:

Status code: 200 OK

// Sem corpo de resposta

Dicionário de erros:

Status codeMensagemMotivo
400Requisição mal formatada ou dados inválidos
404Acesso ou grupo não encontrado
500Erro interno ao processar a requisição

Endpoint para listar as permissões de um acesso

GET /permissoes

Parâmetros de query:

NomeTipoObrigatórioDescrição
accessIdStringSimIdentificador do acesso

Exemplo de requisição:

URL:


GET /permissoes?accessId=68234ed379a39cbb7795ced4

Exemplo de resposta esperada em caso de sucesso:

Status code: 200 OK

[
{
"id": "AgenciaBancariaPage",
"revokedOperations": []
},
{
"id": "ProfissionaisPage",
"revokedOperations": []
},
{
"id": "OcorrenciaDisciplinarPage",
"revokedOperations": [
"atualizar",
"remover",
"salvar"
]
},
{
"id": "AvisoPrevioPage",
"revokedOperations": [
"cancelar",
"atualizar"
]
}
// demais páginas omitidas para brevidade
]

Dicionário de dados:

NomeTipoDescrição
idStringIdentificador da página ou funcionalidade
revokedOperationsString[]Lista de operações revogadas para esse acesso na respectiva funcionalidade

Dicionário de erros:

Status codeMensagemMotivo
400accessId ausente ou malformado
404Acesso não encontrado
500Erro interno ao processar a requisição

Endpoint para atualizar as permissões de um acesso

PUT /permissoes/\:accessId

Parâmetros de query:

NomeTipoObrigatórioDescrição
accessIdStringSimIdentificador do acesso

Corpo da requisição:

{
"permissions": [
{
"id": "ProfissionaisPage",
"revokedOperations": []
}
]
}

Resposta esperada:

Status code: 200 OK Body: (sem conteúdo)


Dicionário de dados:

CampoTipoDescrição
idStringIdentificador da permissão (geralmente representa uma página funcional)
revokedOperationsArrayLista de operações revogadas para a permissão. Pode estar vazia

Dicionário de erros:

Status codeMensagemDescrição
400-Requisição malformada ou inválida
404-Acesso não encontrado
500-Erro interno no servidor

Endpoint para listar grupos pelo id de acesso

GET /grupos/by-access-id/\:accessId

Query Parameters:

ParâmetroObrigatórioDescrição
fieldsNãoCampos a serem retornados (ex: id,name,createat)
sortNãoOrdenação (ex: name asc, createat desc)
offsetNãoPosição de início da paginação (padrão: 0)
limitNãoQuantidade máxima de itens a retornar (padrão: 25)

Exemplo de requisição:

GET /grupos/by-access-id/68234ed379a39cbb7795ced4?fields=id,name,createat&sort=name asc

Resposta:

{
"content": [
{
"id": "6824cd822d70b9000113563e",
"name": "grupo de teste"
},
{
"id": "68238893fcf750001feb4d9",
"name": "teste"
}
],
"offset": 0,
"limit": 25,
"hasNext": false
}

Dicionário de dados:

CampoTipoDescrição
idStringID do grupo vinculado ao acesso
nameStringNome do grupo
createatStringData de criação (se solicitado via fields)

Endpoint para listar permissoes de um grupo

GET /grupos/\:groupId/permissions

Path Parameters:

ParâmetroObrigatórioDescrição
groupIdSimID do grupo desejado

Exemplo de requisição:

GET /grupos/6824cd822d70b9000113563e/permissions

Resposta:

[
{
"id": "ConfiguracaoDirfPage",
"revokedOperations": []
},
{
"id": "ConfiguracaoIntegracaoContabilPage",
"revokedOperations": []
},
{
"id": "ConfiguracaoIntegracaoeSocialPage",
"revokedOperations": []
},
{
"id": "ConfiguracaoIntegracaoMinhaFolhaPage",
"revokedOperations": []
},
{
"id": "ConfiguracaoIntegracaoTransparenciaCloudPage",
"revokedOperations": []
},
{
"id": "ConfiguracaoRaisPage",
"revokedOperations": []
}
]

Dicionário de dados:

CampoTipoDescrição
idStringIdentificador da permissão (geralmente relacionado à página ou recurso)
revokedOperationsString[]Lista de operações revogadas para esta permissão no grupo (ex: "atualizar")