

AWS O Mainframe Modernization Service (experiência em Managed Runtime Environment) não está mais aberto a novos clientes. Para recursos semelhantes ao AWS Mainframe Modernization Service (experiência em Managed Runtime Environment), explore o AWS Mainframe Modernization Service (experiência autogerenciada). Os clientes atuais podem continuar usando o serviço normalmente. Para obter mais informações, consulte Alteração na [disponibilidade AWS da modernização do mainframe](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html).

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# AWS Transformação para mainframe Runtime APIs
<a name="ba-runtime-endpoints"></a>

O AWS Transform for mainframe Runtime usa vários aplicativos da web para expor endpoints REST, fornecendo maneiras de interagir com os aplicativos modernizados usando clientes REST (por exemplo, chamando trabalhos usando um agendador).

O objetivo deste documento é listar os endpoints REST disponíveis, fornecendo detalhes sobre:
+ O perfil.
+ A maneira de usá-los corretamente. 

A lista de endpoints é organizada em categorias, dependendo da natureza do serviço fornecido e da aplicação web que expõe os endpoints.

Presumimos que você já tenha um conhecimento básico do uso de endpoints REST usando ferramentas dedicadas, como [POSTMAN](https://www.postman.com/), [Thunder Client](https://www.thunderclient.com/), [CURL](https://curl.se/), navegadores da web, etc.) ou escrever seu próprio trecho de código para fazer uma chamada de API.

**Topics**
+ [Endpoints disponíveis para o usuário ao criar URLs](ba-endpoints-build-urls.md)
+ [Endpoints para o aplicativo Gapwalk no AWS Transform for mainframe](ba-endpoints-gapwalk.md)
+ [Blusamendpoints REST do console de aplicativos](ba-endpoints-bac.md)
+ [Gerencie o console do aplicativo JICS no AWS Transform for mainframe](ba-endpoints-jac.md)
+ [Estruturas de dados do AWS Transform para usuário de mainframe](ba-endpoints-apx.md)

# Endpoints disponíveis para o usuário ao criar URLs
<a name="ba-endpoints-build-urls"></a>

Este tópico lista URLs os caminhos raiz para endpoints. Cada aplicação da web abaixo está definindo um **caminho raiz**, compartilhado por todos os endpoints. **Em seguida, cada endpoint adiciona seu próprio caminho dedicado**. O URL resultante a ser usado é o resultado da concatenação dos caminhos. Por exemplo, levando em conta o primeiro endpoint para a aplicação Gapwalk, temos:
+ `/gapwalk-application` para o caminho raiz da aplicação web.
+ `/scripts` para o caminho de endpoint dedicado.

O URL resultante a ser usado será `http://server:port/gapwalk-application/scripts`

**servidor**  
aponta para o nome do servidor (aquele que hospeda a determinada aplicação web).

**porta**  
a porta exposta pelo servidor.

# Endpoints para o aplicativo Gapwalk no AWS Transform for mainframe
<a name="ba-endpoints-gapwalk"></a>

Neste tópico, conheça os endpoints da aplicação web Gapwalk. Eles usam o caminho raiz `/gapwalk-application`.

**Topics**
+ [Endpoints relacionados a trabalhos em lote (modernizados JCLs e similares)](#ba-endpoints-gapwalk-batch)
+ [Endpoints de métricas](#ba-endpoints-gapwalk-metrics)
+ [Outros endpoints](#ba-endpoints-gapwalk-other)
+ [Endpoints relacionados a filas de trabalhos](#ba-endpoints-gapwalk-jobq)

## Endpoints relacionados a trabalhos em lote (modernizados JCLs e similares)
<a name="ba-endpoints-gapwalk-batch"></a>

Os trabalhos em lote podem ser executados de forma síncrona ou assíncrona (veja os detalhes abaixo). Os trabalhos em lote estão sendo executados usando scripts groovy que são o resultado da modernização dos scripts antigos (JCL).

**Topics**
+ [Listar scripts implantados](#ba-list-deployed-scripts)
+ [Inicie um script de forma síncrona](#ba-launch-script-synchronously)
+ [Inicie um script de forma assíncrona](#ba-launch-script-asynchronously)
+ [Listando scripts acionados](#ba-launch-script-triggered)
+ [Recuperando detalhes da execução do trabalho](#ba-retrieve-job-execution-details)
+ [Listando scripts lançados de forma assíncrona que podem ser eliminados](#ba-list-async-scripts)
+ [Listando scripts lançados de forma síncrona que podem ser eliminados](#ba-list-sync-scripts)
+ [Matando a execução de um determinado trabalho](#ba-kill-job-execution)
+ [Listando os pontos de verificação existentes para capacidade de reinicialização](#ba-list-existing-checkpoints)
+ [Reiniciando um trabalho (de forma síncrona)](#ba-restart-job-sync)
+ [Reiniciando um trabalho (de forma assíncrona)](#ba-restart-job-async)
+ [Definir o limite de threads para execuções de trabalhos assíncronas](#ba-set-thread-limit)

### Listar scripts implantados
<a name="ba-list-deployed-scripts"></a>
+ Método compatível: GET

  Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/scripts`
+ Argumentos: nenhum
+ Esse endpoint retorna a lista de scripts groovy implantados no servidor, como uma string. Esse endpoint deve ser usado principalmente em um navegador da Web, já que a String resultante é uma página HTML, com links ativos (um link por script iniciável — veja o exemplo abaixo).

Resposta de exemplo:

```
<p><a href=./script/COMBTRAN>COMBTRAN</a></p><p><a href=./script/CREASTMT>CREASTMT</a></p><p><a href=./script/INTCALC>INTCALC</a></p><p><a href=./script/POSTTRAN>POSTTRAN</a></p><p><a href=./script/REPROC>REPROC</a></p><p><a href=./script/TRANBKP>TRANBKP</a></p><p><a href=./script/TRANREPT>TRANREPT</a></p><p><a href=./script/functions>functions</a></p>
```

**nota**  
Os links representam o URL a ser usado para iniciar cada script listado de forma **síncrona.**
+ Método suportado: GET/POST

  Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/triggerscripts`
+ Argumentos: nenhum
+ Esse endpoint retorna a lista de scripts groovy implantados no servidor, como uma string. Esse endpoint deve ser usado principalmente em um navegador da web, já que a string resultante é uma página HTML, com links ativos (um link por script iniciável; veja o exemplo abaixo).

  Ao contrário da resposta anterior do endpoint, os links representam o URL a ser usado para iniciar cada script listado de forma **assíncrona**.  
![\[Exemplo de scripts de listagem (visualização do navegador)\]](http://docs.aws.amazon.com/pt_br/m2/latest/userguide/images/trigger_scripts.png)

### Inicie um script de forma síncrona
<a name="ba-launch-script-synchronously"></a>

Esse endpoint tem duas variantes com caminhos dedicados para uso de GET e POST (veja abaixo).
+ Método compatível: GET

  Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/script/{scriptId:.+}`
+ Método compatível: POST

  Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/post/script/{scriptId:.+}`
+ Argumentos:
  + identificador do script para iniciar a **validação de entrada**: o ID do script não deve estar em branco, não pode exceder 255 caracteres e deve corresponder ao padrão: `^[a-zA-Z0-9._-]+$`
  + opcionalmente: parâmetros a serem passados para o script, usando parâmetros de solicitação (vistos como `Map<String,String>`). Os parâmetros fornecidos serão adicionados automaticamente às [ligações](https://docs.groovy-lang.org/latest/html/api/groovy/lang/Binding.html) do script groovy invocado. **Validação de entrada**: o mapa de parâmetros não pode exceder 50 entradas.
+ A chamada executa o script (identificado pelo ScriptID) com parâmetros opcionais e aguarda a conclusão antes de retornar um com: *ResponseEntityString* 
  + HTTP 200: “Concluído”. ou mensagem de sucesso JSON sobre execução bem-sucedida
  + HTTP 200: uma mensagem de erro JSON com detalhes da falha na execução. Informações adicionais disponíveis nos registros do servidor.
**nota**  
O Runtime agora suporta o retorno do código de status HTTP 500 para execuções de tarefas com falha. Consulte [Propriedades disponíveis do aplicativo principal](https://docs.aws.amazon.com/m2/latest/userguide/ba-runtime-key-value.html#ba-runtime-key-value-main) para configurar esse código de resposta.
  + **Validação de entrada**: ID de script ou parâmetros inválidos retornarão HTTP 400 Bad Request com detalhes do erro de validação.

    ```
    {
        "exitCode": -1,
        "stepName": "STEP15",
        "program": "CBACT04C",
        "status": "Error"
    }
    ```

    Analisando os logs do servidor, podemos descobrir que esse é um problema de implantação (o programa esperado não foi implantado corretamente e, portanto, não pode ser encontrado, fazendo com que a execução do trabalho falhe):  
![\[Exemplo de erro de execução de script\]](http://docs.aws.amazon.com/pt_br/m2/latest/userguide/images/script_exec_error_logs.png)

**nota**  
As chamadas síncronas devem ser reservadas para trabalhos de curta duração. Trabalhos de longa duração devem ser iniciados de forma assíncrona (consulte o endpoint dedicado abaixo).

### Inicie um script de forma assíncrona
<a name="ba-launch-script-asynchronously"></a>
+ Métodos compatíveis: GET/POST

  Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/triggerscript/{scriptId:.+}`
+ Argumentos:
  + identificador do script para iniciar a **validação de entrada**: o ID do script não deve estar em branco, não pode exceder 255 caracteres e deve corresponder ao padrão: `^[a-zA-Z0-9._-]+$`
  + opcionalmente: parâmetros a serem passados para o script, usando parâmetros de solicitação (vistos como `Map<String,String>`). Os parâmetros fornecidos serão adicionados automaticamente às [ligações](https://docs.groovy-lang.org/latest/html/api/groovy/lang/Binding.html) do script groovy invocado. **Validação de entrada**: o mapa de parâmetros não pode exceder 50 entradas.
+ Ao contrário do modo síncrono acima, o endpoint não espera a conclusão da execução do trabalho para enviar uma resposta. A execução do trabalho é iniciada de uma só vez, se for possível encontrar um thread disponível para fazer isso, e uma resposta é enviada imediatamente ao chamador, com o id de execução do trabalho, um identificador exclusivo que representa a execução do trabalho, que pode ser usado para consultar o status da execução do trabalho ou forçar o encerramento de uma execução de trabalho que deveria estar com defeito. O formato da resposta é:

  ```
  Triggered script <script identifier> [unique job execution id] @ <date and time>
  ```
+ Como a execução assíncrona do trabalho depende de um número fixo limitado de threads, a execução do trabalho pode não ser iniciada se nenhum thread disponível for encontrado. Nesse caso, a mensagem retornada se parecerá com:

  ```
  Script [<script identifier>] NOT triggered - Thread limit reached (<actual thread limit>) - Please retry later or increase thread limit.
  ```

  Consulte o endpoint `settriggerthreadlimit` abaixo para saber como aumentar o limite de threads.

Resposta de exemplo:

```
Triggered script INTCALC [d43cbf46-4255-4ce2-aac2-79137573a8b4] @ 06-12-2023 16:26:15
```

O identificador exclusivo de execução de tarefas permite recuperar rapidamente as entradas de log relacionadas nos logs do servidor, se necessário. Ele também é usado por vários outros endpoints detalhados abaixo.

### Listando scripts acionados
<a name="ba-launch-script-triggered"></a>
+ Métodos compatíveis: GET/POST

  Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminhos: `/triggeredscripts/{status:.+}`, `/triggeredscripts/{status:.+}/{namefilter}`
+ Argumentos:
  + Status (obrigatório): o status dos scripts acionados a serem recuperados. **Validação de entrada**: o status não deve estar em branco e não pode exceder 50 caracteres. Os valores possíveis são:
    + `all`: mostre todos os detalhes da execução do trabalho, independentemente de os trabalhos ainda estarem em execução ou não.
    + `running`: mostre somente os detalhes dos trabalhos que estão sendo executados no momento.
    + `done`: mostre somente os detalhes dos trabalhos cuja execução acabou. 
    + `killed`: mostre somente os detalhes dos trabalhos cuja execução foi encerrada à força usando o endpoint dedicado (veja abaixo). 
    + `triggered`: mostre somente os detalhes dos trabalhos que foram acionados, mas ainda não foram lançados.
    + `failed`: mostre somente os detalhes dos trabalhos cuja execução foi marcada como falhada.
    + \$1namefilter (opcional) \$1: recupera somente execuções para o identificador de script fornecido. **Validação de entrada**: não pode exceder 255 caracteres
+ Retorna uma coleção de detalhes de execuções de trabalhos como JSON. Para obter mais informações, consulte [Estrutura de mensagens de detalhes de execução de trabalhos](ba-endpoints-apx.md#job-execution-details).

Resposta de exemplo:

```
[
    {
      "scriptId": "INTCALC",
      "caller": "127.0.0.1",
      "identifier": "d43cbf46-4255-4ce2-aac2-79137573a8b4",
      "startTime": "06-12-2023 16:26:15",
      "endTime": "06-12-2023 16:26:15",
      "status": "DONE",
      "executionResult": "{ \"exitCode\": -1, \"stepName\": \"STEP15\", \"program\": \"CBACT04C\", \"status\": \"Error\" }",
      "executionMode": "ASYNCHRONOUS"
    }
  ]
```

### Recuperando detalhes da execução do trabalho
<a name="ba-retrieve-job-execution-details"></a>
+ Método compatível: GET

  Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/getjobexecutioninfo/{jobexecutionid:.+}`
+ Argumentos:
  + jobexecutionid (obrigatório): o identificador exclusivo de execução do trabalho para recuperar os detalhes correspondentes da execução do trabalho. **Validação de entrada**: o ID de execução do trabalho não deve estar em branco e não pode exceder 255 caracteres
+ Exibe: uma string JSON que representa um único detalhe da execução do trabalho (consulte [Estrutura de mensagens de detalhes de execução de trabalhos](ba-endpoints-apx.md#job-execution-details)) ou uma resposta vazia se nenhum detalhe da execução do trabalho puder ser encontrado para o identificador fornecido.

### Listando scripts lançados de forma assíncrona que podem ser eliminados
<a name="ba-list-async-scripts"></a>
+ Método compatível: GET

  Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/killablescripts`
+ Retorna uma coleção de identificadores de execução de trabalhos que foram iniciados de forma assíncrona e que ainda estão em execução e podem ser eliminados à força (consulte o endpoint `/kill` abaixo).

### Listando scripts lançados de forma síncrona que podem ser eliminados
<a name="ba-list-sync-scripts"></a>
+ Método compatível: GET

  Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/killablesyncscripts`
+ Retorna uma coleção de identificadores de execução de trabalhos que foram iniciados de forma síncrona, ainda estão em execução e podem ser eliminados à força (consulte o endpoint `/kill` abaixo).

### Matando a execução de um determinado trabalho
<a name="ba-kill-job-execution"></a>
+ Método compatível: POST

  Requer autenticação e uma das seguintes funções: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN
+ Caminho: `/kill/{identifier:.+}`
+ Argumento: identificador de execução do trabalho (obrigatório): o identificador exclusivo de execução do trabalho que aponta para que a execução do trabalho seja eliminada a força. **Validação de entrada**: o identificador não deve estar em branco e não pode exceder 255 caracteres
+ Exibe: uma mensagem de texto detalhando o resultado da tentativa de eliminação da execução do trabalho; a mensagem conterá o identificador do script, o identificador exclusivo da execução do trabalho e a data e hora em que a eliminação da execução ocorreu. Se nenhuma execução de trabalho em execução for encontrada para o identificador fornecido, uma mensagem de erro será retornada em vez disso. 

**Atenção**  
 O runtime se esforça ao máximo para eliminar bem a execução do trabalho de destino. Portanto, a resposta do endpoint /kill pode levar um pouco de tempo para chegar ao chamador, pois o tempo de execução do AWS Transform for mainframe tentará minimizar o impacto comercial da eliminação do trabalho.
A eliminação forçada da execução de um trabalho não deve ser feita de ânimo leve, pois pode ter consequências comerciais diretas, incluindo possível perda ou corrupção de dados. Ele deve ser reservado para casos em que a execução de um determinado trabalho tenha ocorrido mal e os meios de remediação de dados estejam claramente identificados.
A eliminação de um emprego deve levar a investigações adicionais (análise post-mortem) para descobrir o que deu errado e tomar as medidas corretivas adequadas.
De qualquer forma, a tentativa de eliminar um trabalho em execução será registrada nos logs do servidor com mensagens de nível de aviso.

### Listando os pontos de verificação existentes para capacidade de reinicialização
<a name="ba-list-existing-checkpoints"></a>

A reinicialização do trabalho depende da capacidade dos scripts de registrar pontos de verificação no `CheckpointRegistry` para rastrear o progresso da execução do trabalho. Se a execução de um trabalho não terminar corretamente e os pontos de verificação de reinicialização tiverem sido registrados, basta reiniciar a execução do trabalho a partir do último ponto de verificação registrado conhecido (sem precisar executar as etapas predecessoras acima do ponto de verificação).
+ Método compatível: POST

  Requer autenticação e uma das seguintes funções: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN
+ Caminho: `/restarts/{scriptId}/{jobId}`
+ Argumentos:
  + scriptId (opcional - string): o script que está sendo reiniciado.
  + jobId (opcional - string): o identificador exclusivo da execução de um trabalho.
+ Exibe uma lista formatada em JSON de pontos de reinicialização existentes, que podem ser usados para reiniciar um trabalho cuja execução não foi concluída corretamente ou acionar uma reinicialização atrasada ignorando as etapas executadas anteriormente. Se nenhum ponto de verificação tiver sido registrado por nenhum script, o conteúdo da página será “Nenhum ponto de verificação registrado”.

### Reiniciando um trabalho (de forma síncrona)
<a name="ba-restart-job-sync"></a>
+ Método compatível: POST

  Requer autenticação e uma das seguintes funções: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN
+ Caminho: `/restart/{hashcode}/{scriptId}/{skipflag}`
+ Argumentos: 
  + hashcode (inteiro: obrigatório): reinicie a execução mais recente de um trabalho, usando o hashcode fornecido como valor do ponto de verificação (consulte o endpoint `/restarts` acima para saber como recuperar um valor de ponto de verificação válido).
  + scriptId (opcional - string): o script que está sendo reiniciado.
  + skipflag (opcional: booliano): ignore a execução da etapa selecionada (ponto de verificação) e execute uma reinicialização a partir da etapa sucessora imediata (se houver).
+ Devoluções: veja a descrição da `/script` devolução acima.

### Reiniciando um trabalho (de forma assíncrona)
<a name="ba-restart-job-async"></a>
+ Método compatível: GET

  Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/triggerrestart/{hashcode}/{scriptId}/{skipflag}`
+ Argumentos: 
  + hashcode (inteiro: obrigatório): reinicie a execução mais recente de um trabalho, usando o hashcode fornecido como valor do ponto de verificação (consulte o endpoint `/restarts` acima para saber como recuperar um valor de ponto de verificação válido).
  + scriptId (opcional - string): o script que está sendo reiniciado.
  + skipflag (opcional: booliano): ignore a execução da etapa selecionada (ponto de verificação) e execute uma reinicialização a partir da etapa sucessora imediata (se houver).
+ Devoluções: veja a descrição da `/triggerscript` devolução acima.

### Definir o limite de threads para execuções de trabalhos assíncronas
<a name="ba-set-thread-limit"></a>

A execução de trabalhos assíncronas depende de um grupo dedicado de threads na JVM. Esse grupo tem um limite fixo em relação ao número de threads disponíveis. O usuário tem a capacidade de ajustar o limite de acordo com as capacidades do host (número CPUs, memória disponível, etc...). Por padrão, o limite de threads é definido como cinco threads.
+ Método compatível: POST

  Requer autenticação e uma das seguintes funções: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN
+ Caminho: `/settriggerthreadlimit/{threadlimit:.+}`
+ Argumento (inteiro): o novo limite de threads a ser aplicado. **Validação de entrada**: deve estar entre 1 e 1000, inclusive.
+ Retorna uma mensagem (`String`) fornecendo o novo limite de threads e o anterior, ou uma mensagem de erro se o valor limite de threads fornecido não for válido (não é um número inteiro estritamente positivo).

Resposta de exemplo:

```
Set thread limit for Script Tower Control to 10 (previous value was 5)
```

#### Contando as execuções de trabalhos acionadas atualmente em execução
<a name="ba-count-current-jobs"></a>
+ Método compatível: GET

  Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/countrunningtriggeredscripts`
+ Retorna uma mensagem indicando o número de trabalhos em execução iniciados de forma assíncrona e o limite de threads (ou seja, o número máximo de trabalhos acionados que podem ser executados simultaneamente).

Resposta de exemplo:

```
0 triggered script(s) running (limit =10)
```

**nota**  
Isso pode ser usado para verificar, antes de iniciar um trabalho, se o limite de threads não foi atingido (o que impediria que o trabalho fosse iniciado). 

#### Limpar informações sobre execuções de trabalhos
<a name="ba-purge-job-info"></a>

As informações de execução do trabalho permanecem na memória do servidor enquanto o servidor estiver ativo. Pode ser conveniente limpar as informações mais antigas da memória, pois elas não são mais relevantes; esse é o propósito desse endpoint.
+ Método compatível: POST

  Requer autenticação e uma das seguintes funções: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN
+ Caminho: `/purgejobinformation/{age:.+}`
+ Argumentos: um valor inteiro estritamente positivo que representa a idade em horas das informações a serem eliminadas. **Validação de entrada**: deve estar entre 0 e 365, inclusive.
+ Retorna uma mensagem com as seguintes informações:
  + Nome do arquivo de limpeza em que as informações de execução do trabalho eliminado estão sendo armazenadas para fins de arquivamento.
  + Número de informações de execução do trabalho eliminadas.
  + Número de informações restantes sobre a execução do trabalho no memorando

## Endpoints de métricas
<a name="ba-endpoints-gapwalk-metrics"></a>

**Validação de entrada**: todos os endpoints de métricas validam os parâmetros da solicitação e retornam HTTP 400 Bad Request para valores inválidos.

### JVM
<a name="ba-metrics-jvm"></a>

Esse endpoint retorna as métricas disponíveis relacionadas à JVM.
+ Método compatível: GET

  Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/metrics/jvm`
+ Argumentos: nenhum
+ Retorna uma mensagem com as seguintes informações:
  + threadActiveCount: Número de segmentos ativos.
  + jvmMemoryUsed: Memória usada ativamente pela Java Virtual Machine.
  + jvmMemoryMax: Memória máxima permitida para a Java Virtual Machine.
  + jvmMemoryFree: Memória disponível que não está sendo usada atualmente pela Java Virtual Machine.

### Sessão
<a name="ba-metrics-session"></a>

Esse endpoint retorna métricas relacionadas às sessões HTTP abertas atualmente.
+ Método compatível: GET

  Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/metrics/session`
+ Argumentos: nenhum
+ Retorna uma mensagem com as seguintes informações:
  + sessionCount: Número de sessões de usuário ativas atualmente mantidas pelo servidor.

### Batch
<a name="ba-metrics-batch"></a>
+ Método compatível: GET

  Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/metrics/batch`
+ Argumentos:
  + startTimestamp (opcional, número): carimbo de data/hora inicial para filtragem de dados. **Validação de entrada**: deve ser um valor numérico válido.
  + endTimestamp (opcional, número): carimbo de data/hora final para filtragem de dados. **Validação de entrada**: deve ser um valor numérico válido.
  + page (opcional, número): Número da página para paginação. **Validação de entrada**: deve ser um número inteiro positivo.
  + pageSize (opcional, número): Número de itens por página na paginação. **Validação de entrada**: deve ser um número inteiro estritamente positivo, no máximo 500.
  + **Validação de entrada**: o mapa de parâmetros não pode exceder 20 entradas
+ Retorna uma mensagem com as seguintes informações:
  + content: lista de métricas de execução em lote.
  + pageNumber: número da página atual na paginação.
  + pageSize: Número de itens exibidos por página.
  + totalPages: Número total de páginas disponíveis.
  + numberOfElements: Contagem de itens na página atual.
  + last: bandeira booleana para a última página.
  + first: bandeira booleana para a primeira página.

### TRANSACTION
<a name="ba-metrics-transaction"></a>
+ Método compatível: GET

  Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/metrics/transaction`
+ Argumentos:
  + startTimestamp (opcional, número): carimbo de data/hora inicial para filtragem de dados. **Validação de entrada**: deve ser um valor numérico válido.
  + endTimestamp (opcional, número): carimbo de data/hora final para filtragem de dados. **Validação de entrada**: deve ser um valor numérico válido.
  + page (opcional, número): Número da página para paginação. **Validação de entrada**: deve ser um número inteiro positivo.
  + pageSize (opcional, número): Número de itens por página na paginação. **Validação de entrada**: deve ser um número inteiro estritamente positivo, no máximo 500.
  + **Validação de entrada**: o mapa de parâmetros não pode exceder 20 entradas
+ Retorna uma mensagem com as seguintes informações:
  + content: lista de métricas de execução de transações.
  + pageNumber: número da página atual na paginação.
  + pageSize: Número de itens exibidos por página.
  + totalPages: Número total de páginas disponíveis.
  + numberOfElements: Contagem de itens na página atual.
  + last: bandeira booleana para a última página.
  + first: bandeira booleana para a primeira página.

## Outros endpoints
<a name="ba-endpoints-gapwalk-other"></a>

Use esses endpoints para listar programas ou serviços registrados, descobrir o status de saúde e gerenciar transações do JICS.

**Topics**
+ [Lista de programas registrados](#ba-list-registered-programs)
+ [Listando serviços registrados](#ba-list-registered-services)
+ [Status de integridade](#ba-health-status)
+ [Lista de transações JICS disponíveis](#ba-list-jics-transactions)
+ [Inicie uma transação JICS](#ba-launch-jics-transaction)
+ [Iniciar uma transação JICS (alternativa)](#ba-launch-jics-transaction-alt)
+ [Listar as sessões ativas](#ba-active-session-list)

### Lista de programas registrados
<a name="ba-list-registered-programs"></a>
+ Método compatível: GET

  Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/programs`
+ Retorna a lista de programas registrados, como uma página html. Cada programa é designado pelo identificador principal do programa. Tanto os programas antigos modernizados quanto os programas utilitários (IDCAMS, IEBGENER, etc.) estão sendo retornados na lista. Observe que os programas utilitários disponíveis dependerão das aplicações Web de utilitários que foram implantados no servidor tomcat. Por exemplo, programas de suporte de z/OS utilitários podem não estar disponíveis para ativos modernizados do iSeries, pois não são relevantes. 

### Listando serviços registrados
<a name="ba-list-registered-services"></a>
+ Método compatível: GET

  Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/services`
+ Retorna a lista de serviços de runtime registrados, como uma página html. Os serviços fornecidos são trazidos pelo AWS Transform for mainframe runtime como utilitários, que podem ser usados, por exemplo, em scripts groovy. Os serviços de carregamento Blusam (para criar conjuntos de dados Blusam a partir de conjuntos de dados antigos) se enquadram nessa categoria.

Resposta de exemplo:

```
<p>BluesamESDSFileLoader</p><p>BluesamKSDSFileLoader</p><p>BluesamRRDSFileLoader</p>
```

### Status de integridade
<a name="ba-health-status"></a>
+ Método compatível: GET

  Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/`
+ Retorna uma mensagem simples, indicando que a aplicação gapwalk está funcionando (`Jics application is running.`)

### Lista de transações JICS disponíveis
<a name="ba-list-jics-transactions"></a>
+ Método compatível: GET

  Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/transactions`
+ Retorna uma página html listando todas as transações JICS disponíveis. Isso só faz sentido para ambientes com elementos JICS (modernização de elementos antigos do CICS).

Resposta de exemplo:

```
<p>INQ1</p><p>MENU</p><p>MNT2</p><p>ORD1</p><p>PRNT</p>
```

### Inicie uma transação JICS
<a name="ba-launch-jics-transaction"></a>
+ Métodos compatíveis: POST

  Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/jicstransrunner/{jtrans:.+}`
+ Argumentos:
  + Identificador de transação JICS (string, obrigatório): identificador da transação JICS a ser iniciada (8 caracteres no máximo)
  + obrigatório: dados de entrada adicionais para passar para a transação, como um Map<String,Object>. O conteúdo desse mapa será usado para alimentar a [COMMAREA](https://www.ibm.com/docs/en/cics-ts/5.4?topic=programs-commarea) que será consumida pela transação do JICS. O mapa pode ficar vazio se nenhum dado for necessário para executar a transação.
  + opcional: entradas de cabeçalhos HTTP, para personalizar o ambiente de runtime da transação em questão. As seguintes chaves de cabeçalho estão sendo suportadas:
    + `jics-channel`: o nome do JICS CHANNEL a ser usado pelo programa que será lançado com o lançamento dessa transação. 
    + `jics-container`: o nome do JICS CONTAINER a ser usado para o lançamento dessa transação JICS.
    + `jics-startcode`: o STARTCODE (string, até 2 caracteres) a ser usado no início da transação JICS. Consulte [STARTCODE](https://www.ibm.com/docs/en/cics-ts/5.5?topic=summary-assign) para valores possíveis (navegue pela página).
    + `jicxa-xid`: o XID (estrutura XID do identificador de transação X/Open) de uma “transação global” ([XA](https://en.wikipedia.org/wiki/X/Open_XA)), iniciada pelo chamador, da qual participará o lançamento atual da transação JICS. **Validação de entrada**: o XID não deve estar em branco e não pode exceder 255 caracteres.
+ Exibe uma serialização JSON `com.netfective.bluage.gapwalk.rt.shared.web.TransactionResultBean`, que representa o resultado da inicialização da transação JICS.
+ **Validação de entrada**: valores de XID inválidos (em branco ou com mais de 255 caracteres) retornarão HTTP 400 Bad Request com detalhes do erro de validação.

Para obter mais informações sobre os detalhes da estrutura, consulte [Estrutura de resultados do lançamento da transação](ba-endpoints-apx.md#transaction-outcome).

### Iniciar uma transação JICS (alternativa)
<a name="ba-launch-jics-transaction-alt"></a>
+ métodos suportados: POST

  Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ caminho: `/jicstransaction/{jtrans:.+}`
+ Argumentos:  
**Identificador de transação JICS (string, obrigatório)**  
identificador da transação JICS a ser iniciada (8 caracteres no máximo)  
**obrigatório: dados de entrada adicionais para passar para a transação, como um Map<String,Object>**  
O conteúdo desse mapa será usado para alimentar a [COMMAREA](https://www.ibm.com/docs/en/cics-ts/5.4?topic=programs-commarea) que será consumida pela transação do JICS. O mapa pode ficar vazio se nenhum dado for necessário para executar a transação.  
**opcional: entradas de cabeçalhos HTTP, para personalizar o ambiente de runtime da transação em questão.**  
As seguintes chaves de cabeçalho estão sendo suportadas:  
  + `jics-channel`: o nome do JICS CHANNEL a ser usado pelo programa que será lançado com o lançamento dessa transação. 
  + `jics-container`: o nome do JICS CONTAINER a ser usado para o lançamento dessa transação JICS.
  + `jics-startcode`: o STARTCODE (string, até 2 caracteres) a ser usado no início da transação JICS. Para valores possíveis, consulte [STARTCODE](https://www.ibm.com/docs/en/cics-ts/5.5?topic=summary-assign) (navegue pela página).
  + `jicxa-xid`: o XID (estrutura XID do identificador de transação X/Open) de uma “transação global” ([XA](https://en.wikipedia.org/wiki/X/Open_XA)), iniciada pelo chamador, da qual participará o lançamento atual da transação JICS. **Validação de entrada**: o XID não deve estar em branco e não pode exceder 255 caracteres.
+ Exibe uma serialização JSON `com.netfective.bluage.gapwalk.rt.shared.web.RecordHolderBean`, que representa o resultado da inicialização da transação JICS. Os detalhes da estrutura podem ser encontrados em[Estrutura de resultados do registro de lançamento da transação](ba-endpoints-apx.md#transaction-record-outcome). 
+ **Validação de entrada**: valores de XID inválidos (em branco ou com mais de 255 caracteres) retornarão HTTP 400 Bad Request com detalhes do erro de validação.

### Listar as sessões ativas
<a name="ba-active-session-list"></a>
+ métodos suportados: GET

  Requer autenticação e uma das seguintes funções: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN
+ caminho: `/activesessionlist`
+ Argumentos: nenhum
+ **Validação de entrada**: o mapa de parâmetros não pode exceder 20 entradas
+ Exibe uma lista de `com.netfective.bluage.gapwalk.application.web.sessiontracker.SessionTrackerObject` em serialização JSON, representando a lista de sessões ativas do usuário. Quando o rastreamento da sessão estiver desativado, uma lista vazia será exibida.

## Endpoints relacionados a filas de trabalhos
<a name="ba-endpoints-gapwalk-jobq"></a>

 As filas de trabalhos são o suporte do AWS Transform for mainframe para o mecanismo de envio de AS400 trabalhos. As filas de trabalhos são usadas AS400 para executar trabalhos em grupos de threads específicos. Uma fila de trabalhos é definida por um nome e um número máximo de threads que corresponde ao número máximo de programas que podem ser executados simultaneamente nessa fila. Se mais trabalhos forem enviados na fila do que o número máximo de threads, os trabalhos aguardarão até que um tópico esteja disponível.

Para obter uma lista completa do status de um trabalho em uma fila, consulte. [Possível status de trabalho em uma fila](ba-endpoints-apx.md#jobs-status)

As operações nas filas de trabalhos são realizadas por meio dos seguintes endpoints dedicados. É possível invocar essas operações por meio do URL da aplicação Gapwalk com o seguinte URL raiz: `http://server:port/gapwalk-application/jobqueue`.

**Topics**
+ [Listar filas disponíveis](#ba-list-available-queues)
+ [Iniciar ou reiniciar uma fila de trabalhos](#ba-start-restart-queue)
+ [Envie um trabalho para lançamento](#ba-submit-job-launch)
+ [Listar todos os trabalhos enviados](#ba-list-scheduled-jobs)
+ [Libere todos os trabalhos que estão “em espera”](#ba-release-held-jobs)
+ [Libere todos os trabalhos que estão “em espera” para um determinado nome de trabalho](#ba-release-held-jobs-name)
+ [Libere um determinado trabalho para um número de trabalho](#ba-release-job-number)
+ [Enviar um trabalho em um agendamento repetido](#ba-submit-job-on-repeating-schedule)
+ [Listar todos os trabalhos repetidos enviados](#ba-list-all-submitted-repeating-jobs)
+ [Cancelar o agendamento de um trabalho repetido](#ba-cancel-scheduling-of-repeating-job)

### Listar filas disponíveis
<a name="ba-list-available-queues"></a>
+ Método compatível: GET

  Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `list-queues`
+ Retorna a lista de filas disponíveis junto com seu status, como uma lista JSON de valores-chave.

Resposta de exemplo:

```
{"Default":"STAND_BY","queue1":"STARTED","queue2":"STARTED"}
```

Os possíveis status de uma fila de trabalhos são:

**EM ESPERA**  
a fila de trabalhos está esperando para ser iniciada.

**STARTED**  
a fila de trabalhos está ativa e funcionando.

**UNKNOWN**  
o status da fila de trabalhos não pode ser determinado.

### Iniciar ou reiniciar uma fila de trabalhos
<a name="ba-start-restart-queue"></a>
+ Método compatível: POST

  Requer autenticação e uma das seguintes funções: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN
+ Caminho: `/restart/{name}`
+ Argumento: o nome da fila a ser iniciada/reiniciada, como uma string — obrigatório. **Validação de entrada**: o nome da fila não deve estar em branco e não pode exceder 255 caracteres.
+ O endpoint não retorna nada, mas depende do status http para indicar o resultado da start/restart operação:  
**HTTP 200**  
a start/restart operação correu bem: a fila de trabalhos fornecida agora está INICIADA.  
**HTTP 404**  
a fila de trabalhos não existe.  
**HTTP 503**  
ocorreu uma exceção durante a start/restart tentativa (os registros do servidor devem ser inspecionados para descobrir o que deu errado).

### Envie um trabalho para lançamento
<a name="ba-submit-job-launch"></a>
+ Método compatível: POST

  Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/submit`
+ Argumento: obrigatório como corpo da solicitação, uma serialização JSON de um objeto `com.netfective.bluage.gapwalk.rt.jobqueue.SubmitJobMessage`. Para obter mais informações, consulte [Enviar um trabalho e agendar a entrada do trabalho](ba-endpoints-apx.md#submit-job).
+ Exibe um JSON que contém a `SubmitJobMessage` original e um log indicando se o trabalho foi enviado ou não.

### Listar todos os trabalhos enviados
<a name="ba-list-scheduled-jobs"></a>
+ Método compatível: GET

  Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/list-jobs?status={status}&size={size}&page={page}&sort={sort}`
+ Argumentos:
  + página: Número da página a ser recuperada (padrão = 1)
  + tamanho: Tamanho da página (padrão = 50, máximo = 300)
  + ordenar: A ordem dos trabalhos. (padrão = “executionId”). Atualmente, “executionId” é o único valor aceito
  + status: (opcional) Se houver, ele filtrará o status.
+ Exibe uma lista de todos os trabalhos agendados, como uma string JSON. Para obter um exemplo de resposta, consulte [Lista de respostas de trabalhos agendados](ba-endpoints-apx.md#list-scheduled-jobs).

### Libere todos os trabalhos que estão “em espera”
<a name="ba-release-held-jobs"></a>
+ Método compatível: POST

  Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/release-all`
+ Exibe uma mensagem indicando o resultado da operação de tentativa de liberação. Dois casos possíveis aqui:
  + HTTP 200 e uma mensagem “Todos os trabalhos foram lançados com sucesso\$1” se todos os trabalhos foram liberados com sucesso.
  + HTTP 503 e uma mensagem “Trabalhos não lançados. Ocorreu um erro desconhecido. Consulte o log para obter mais detalhes” se algo deu errado com a tentativa de lançamento.

### Libere todos os trabalhos que estão “em espera” para um determinado nome de trabalho
<a name="ba-release-held-jobs-name"></a>

Para um nome de trabalho específico, vários trabalhos podem ser enviados, com números de trabalho diferentes (a unicidade da execução de um trabalho é garantida por uma dupla <nome do trabalho, número do trabalho>). O endpoint tentará liberar todos os envios de trabalhos com o nome de trabalho fornecido, que estão “em espera”.
+ Método compatível: POST

  Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/release/{name}`
+ Argumentos: o nome do trabalho a ser procurado, como uma string. Obrigatório.
+ Exibe uma mensagem indicando o resultado da operação de tentativa de liberação. Dois casos possíveis aqui:
  + HTTP 200 e uma mensagem “Jobs in group <name>(<number of released jobs>) lançados com sucesso\$1” os trabalhos foram liberados com sucesso.
  + HTTP 503 e uma mensagem “Trabalhos no grupo <name>não lançados. Ocorreu um erro desconhecido. Consulte o log para obter mais detalhes” se algo deu errado com a tentativa de lançamento.

### Libere um determinado trabalho para um número de trabalho
<a name="ba-release-job-number"></a>

<job name, job number>O endpoint tentará liberar o envio exclusivo do trabalho, que está “suspenso”, para o casal em questão.
+ Método compatível: POST

  Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/release/{name}/{number}`
+ Argumentos:  
**name**  
o nome do trabalho a ser procurado, como uma string. Obrigatório.  
**número**  
o número do trabalho a ser procurado, como um número inteiro. Obrigatório.  
**retorna**  
 uma mensagem indicando o resultado da operação de tentativa de liberação. Dois casos possíveis aqui:  
  + HTTP 200 e uma mensagem “Job <name/number> released with success\$1” se o trabalho foi lançado com sucesso.
  + HTTP 503 e uma mensagem “Job <name/number>> not released. Ocorreu um erro desconhecido. Consulte o log para obter mais detalhes” se algo deu errado com a tentativa de lançamento.

### Enviar um trabalho em um agendamento repetido
<a name="ba-submit-job-on-repeating-schedule"></a>

Agende um trabalho que será executado com um agendamento repetido.
+ Método compatível: POST

  Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/schedule`
+ Argumento: o corpo obrigatório deve conter uma serialização JSON de um objeto `com.netfective.bluage.gapwalk.rt.jobqueue.SubmitJobMessage`. 

### Listar todos os trabalhos repetidos enviados
<a name="ba-list-all-submitted-repeating-jobs"></a>
+ Método compatível: GET

  Requer autenticação e uma das seguintes funções: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN
+ Caminho: `/schedule/list?status={status}&size={size}&page={page}&sort={sort}`
+ Argumentos:

  1. página: Número da página a ser recuperada (padrão = 1)

  1. tamanho: Tamanho da página (padrão = 50, máximo = 300)

  1. ordenar: A ordem dos trabalhos. (padrão = “id”). “id” é o único valor aceito no momento.

  1. status: (opcional) Se houver, ele filtrará o status. Os valores possíveis são os mencionados na seção 1.

  1. status: (opcional) Se houver, ele filtrará o status. Os valores possíveis são os mencionados na seção 1.

  1. Exibe uma lista de todos os trabalhos agendados, como uma string JSON.

### Cancelar o agendamento de um trabalho repetido
<a name="ba-cancel-scheduling-of-repeating-job"></a>

Remove um trabalho que foi criado em um agendamento repetido. O status do agendamento do trabalho está definido como INATIVO.
+ Método compatível: POST

  Requer autenticação e uma das seguintes funções: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN
+ Caminho: `/schedule/remove/{schedule_id}`
+ Argumento: `schedule_id`, o identificador do trabalho agendado a ser removido.

# Blusamendpoints REST do console de aplicativos
<a name="ba-endpoints-bac"></a>

Nesta seção, você pode aprender sobre o console do Blusam aplicativo, que é uma API projetada para simplificar o gerenciamento de conjuntos de dados VSAM modernizados. Os endpoints do aplicativo Blusam web usam o caminho `/bac` raiz.

**Topics**
+ [Conjuntos de dados relacionados a endpoints](#ba-endpoints-bac-datasets)
+ [Conjuntos de dados em massa relacionados a endpoints](#ba-endpoints-bac-bulk)
+ [Registros](#ba-endpoints-bac-records)
+ [Máscaras](#ba-endpoints-bac-masks)
+ [Outros](#ba-endpoints-bac-other)
+ [Endpoints de gerenciamento de usuários do BAC](#ba-endpoints-bac-users)

## Conjuntos de dados relacionados a endpoints
<a name="ba-endpoints-bac-datasets"></a>

Use os seguintes endpoints para criar ou gerenciar um conjunto de dados específico.

**Topics**
+ [Criar um conjunto de dados](#ba-create-data-set)
+ [Carregar um arquivo](#ba-upload-file)
+ [Carregar um conjunto de dados (POST)](#ba-load-data-set-post)
+ [Carregar um conjunto de dados (GET)](#ba-load-data-set-get)
+ [Carregar um conjunto de dados de um bucket do Amazon S3](#ba-load-data-set-s3)
+ [Exportar um conjunto de dados para um bucket do Amazon S3](#ba-export-data-set-s3)
+ [Limpar um conjunto de dados](#ba-clear-data-set)
+ [Excluir um conjunto de dados](#ba-delete-data-set)
+ [Contar registros do conjunto de dados](#ba-count-data-set-records)

### Criar um conjunto de dados
<a name="ba-create-data-set"></a>

É possível usar esse endpoint para criar uma definição de conjunto de dados.
+ Métodos compatíveis: POST
+ Requer autenticação e o perfil ROLE\$1ADMIN.
+ Caminho: `/api/services/rest/bluesamservice/createDataSet`
+ Argumentos:  
name  
(obrigatório, string): o nome do conjunto de dados.   
type  
(obrigatório, string): o tipo de conjunto de dados. Os valores possíveis são: `ESDS`, `KSDS` `RRDS`.   
recordSize  
(opcional, string): tamanho máximo de cada registro do conjunto de dados.   
fixedLength  
(opcional, booleano): indica se o tamanho dos registros é fixo.   
compression  
(opcional, booleano): indica se o conjunto de dados está compactado.   
cacheEnable  
(opcional, booleano): indica se o armazenamento em cache está ativado para o conjunto de dados.   
alternativeKeys  
(opcional, lista de chaves):  
  + deslocamento (obrigatório, número)
  + comprimento (obrigatório, número)
  + nome (obrigatório, número)
+ Exibe um arquivo JSON que representa o conjunto de dados recém-criado.

Exemplo de solicitação:

```
POST /api/services/rest/bluesamservice/createDataSet
{
  "name": "DATASET",
  "checked": false,
  "records": [],
  "primaryKey": {
    "name": "PK"
  },
  "alternativeKeys": [
    {
      "offset": 10,
      "length": 10,
      "name": "ALTK_0"
    }
  ],
  "type": "ESDS",
  "recordSize": 10,
  "compression": true,
  "cacheEnable": true
}
```

Resposta de exemplo:

```
{
    "dataSet": {
      "name": "DATASET",
      "checked": false,
      "nbRecords": 0,
      "keyLength": -1,
      "recordSize": 10,
      "compression": false,
      "fixLength": true,
      "type": "ESDS",
      "cacheEnable": false,
      "cacheWarmup": false,
      "cacheEviction": "100ms",
      "creationDate": 1686744961234,
      "modificationDate": 1686744961234,
      "records": [],
      "primaryKey": {
        "name": "PK",
        "offset": null,
        "length": null,
        "columns": null,
        "unique": true
      },
      "alternativeKeys": [
        {
          "offset": 10,
          "length": 10,
          "name": "ALTK_0"
        }
      ],
      "readLimit": 0,
      "readEncoding": null,
      "initCharacter": null,
      "defaultCharacter": null,
      "blankCharacter": null,
      "strictZoned": null,
      "decimalSeparator": null,
      "currencySign": null,
      "pictureCurrencySign": null
    },
    "message": null,
    "result": true
  }
```

### Carregar um arquivo
<a name="ba-upload-file"></a>

É possível usar esse endpoint para fazer upload de arquivos para o servidor. O arquivo é armazenado em uma pasta temporária que corresponde a cada usuário específico. Use esse endpoint sempre que precisar fazer upload de um arquivo.
+ Métodos compatíveis: POST
+ Requer autenticação e o perfil ROLE\$1ADMIN.
+ Caminho: `/api/services/rest/bluesamservice/upload`
+ Argumentos:  
arquivo  
(obrigatório, multipartes/dados de formulário): o arquivo a ser carregado.
+ Retorna um booleano que reflete o status do carregamento

### Carregar um conjunto de dados (POST)
<a name="ba-load-data-set-post"></a>

Depois de usar `createDataSet` para criar a definição do conjunto de dados, você poderá carregar registros associados ao arquivo carregado em um conjunto de dados específico.
+ Métodos compatíveis: POST
+ Requer autenticação e o perfil ROLE\$1ADMIN.
+ Caminho: `/api/services/rest/bluesamservice/loadDataSet`
+ Argumentos:  
name  
(obrigatório, string): o nome do conjunto de dados.
+ Retorna o status da solicitação e do conjunto de dados carregado.

### Carregar um conjunto de dados (GET)
<a name="ba-load-data-set-get"></a>
+ Métodos compatíveis: GET
+ Requer autenticação e o perfil ROLE\$1ADMIN.
+ Caminho: `/api/services/rest/bluesamservice/loadDataSet`
+ Argumentos:  
listcatFileOrDatasetName  
(obrigatório, string): o nome do conjunto de dados.  
Arquivo de conjunto de dados  
(obrigatório, string): o nome do arquivo do conjunto de dados.
+ Retorna o status da solicitação e do conjunto de dados carregado.

### Carregar um conjunto de dados de um bucket do Amazon S3
<a name="ba-load-data-set-s3"></a>

Carrega um conjunto de dados usando um arquivo listcat de um bucket do Amazon S3.
+ Métodos compatíveis: GET
+ Requer autenticação e o perfil ROLE\$1ADMIN.
+ Caminho: `/api/services/rest/bluesamservice/loadDataSetFromS3`
+ Argumentos:  
listcatFileS3Location  
(obrigatório, string): a localização do arquivo listcat no Amazon S3.  
datasetFileS3Location  
(obrigatório, string): a localização do Amazon S3 do arquivo do conjunto de dados.  
region  
(obrigatório, string): o Amazon S3 Região da AWS onde os arquivos são armazenados.
+ Retorna o conjunto de dados recém-criado

Exemplo de solicitação:

```
/BAC/api/services/rest/bluesamservice/loadDataSetFromS3?region=us-east-1&listcatFileS3Location=s3://bucket-name/listcat.json&datasetFileS3Location=s3://bucket-name/dataset.DAT
```

### Exportar um conjunto de dados para um bucket do Amazon S3
<a name="ba-export-data-set-s3"></a>

Exporta um conjunto de dados para o bucket do Amazon S3 especificado.
+ Métodos compatíveis: GET
+ Requer autenticação e o perfil ROLE\$1ADMIN.
+ Caminho: `/api/services/rest/bluesamservice/exportDataSetToS3`
+ Argumentos:  
s3Location  
(obrigatório, string): o local do Amazon S3 para o qual exportar o conjunto de dados.  
datasetName   
(obrigatório, string): o nome do conjunto de dados a ser exportado.  
region  
(obrigatório, string): o Região da AWS do bucket do Amazon S3.  
kmsKeyId  
(opcional, string): o AWS KMS ID a ser usado para criptografia do conjunto de dados exportado para o bucket do Amazon S3.
+ Retorna o conjunto de dados exportado

Exemplo de solicitação:

```
/BAC/api/services/rest/bluesamservice/exportDataSetToS3?region=eu-west-1&s3Location=s3://bucket-name/dump&datasetName=dataset
```

### Limpar um conjunto de dados
<a name="ba-clear-data-set"></a>

 Limpa todos os registros de um conjunto de dados.
+ Métodos compatíveis: GET, POST
+ Requer autenticação e o perfil ROLE\$1ADMIN.
+ Caminho: `/api/services/rest/bluesamservice/clearDataSet`
+ Argumentos:   
name  
(obrigatório, string): o nome do conjunto de dados a ser limpo. Ao usar o método GET, o nome do parâmetro é`datasetName`.
+ Retorna o status da solicitação.

### Excluir um conjunto de dados
<a name="ba-delete-data-set"></a>

Exclui a definição e os registros do conjunto de dados.
+ Métodos compatíveis: POST
+ Requer autenticação e o perfil ROLE\$1ADMIN.
+ Caminho: `/api/services/rest/bluesamservice/deleteDataSet`
+ Argumentos:  
name  
(obrigatório, string): o nome do conjunto de dados a ser excluído.
+ Retorna o status da solicitação e do conjunto de dados excluído.

### Contar registros do conjunto de dados
<a name="ba-count-data-set-records"></a>

Esse endpoint exibe o número de registros associados a um conjunto de dados.
+ Métodos compatíveis: POST
+ Requer autenticação e o perfil ROLE\$1USER.
+ Caminho: `/api/services/rest/bluesamservice/countRecords`
+ Argumentos:  
name  
(obrigatório, string): o nome do conjunto de dados.
+ Retornos: o número de registros

## Conjuntos de dados em massa relacionados a endpoints
<a name="ba-endpoints-bac-bulk"></a>

Use os seguintes endpoints para criar ou gerenciar vários conjuntos de dados ao mesmo tempo.

**Topics**
+ [Exportar conjuntos de dados (GET)](#ba-export-data-sets-get)
+ [Exportar conjuntos de dados (POST)](#ba-export-data-sets-post)
+ [Criar vários conjuntos de dados](#ba-create-multiple-data-sets)
+ [Listar todos os conjuntos de dados](#ba-list-all-data-sets)
+ [Listar diretamente todos os conjuntos de dados](#ba-direct-list-all-data-sets)
+ [Listar diretamente todos os conjuntos de dados por página](#ba-direct-list-all-data-sets-by-page)
+ [Fazer o streaming de dados](#ba-stream-data-sets)
+ [Excluir todos os conjuntos de dados](#ba-delete-all-data-sets)
+ [Tenha as definições do conjunto de dados do arquivo listcat](#ba-get-definitions-listcat)
+ [Obtenha as definições do conjunto de dados do arquivo cat da lista carregado](#ba-get-definitions-uploaded-listcat)
+ [Receber um conjunto de dados](#ba-get-data-set)
+ [Carregar listcat do arquivo JSON](#ba-load-listcat)

### Exportar conjuntos de dados (GET)
<a name="ba-export-data-sets-get"></a>
+ Métodos compatíveis: GET
+ Requer autenticação e o perfil ROLE\$1ADMIN.
+ Caminho: `/api/services/rest/bluesamservice/exportDataSet`
+ Argumentos:  
datasetName  
(obrigatório, string): o nome do conjunto de dados a ser exportado.   
datasetOutputFile  
(obrigatório, string): o caminho da pasta em que você deseja armazenar o conjunto de dados exportado no servidor.  
vermelho  
(obrigatório, booliano): se você deseja que a palavra descritora de registro (RDW) faça parte dos registros exportados. Se o conjunto de dados tiver registros de tamanho fixo, o valor desse parâmetro será ignorado.
+ Exibe o status da solicitação e o caminho do arquivo que contém o conjunto de dados exportado (se houver). Se o conjunto de dados for nulo na resposta, isso significa que o sistema não conseguiu localizar um conjunto de dados com o nome fornecido.

### Exportar conjuntos de dados (POST)
<a name="ba-export-data-sets-post"></a>
+ Métodos compatíveis: POST
+ Requer autenticação e o perfil ROLE\$1USER.
+ Caminho: `/api/services/rest/bluesamservice/exportDataSet`
+ Argumentos:  
dumpParameters  
(obrigatório, BACRead Parâmetros): parâmetros de leitura do Bluesam.
+ Exibe o status do conjunto de dados exportado.

### Criar vários conjuntos de dados
<a name="ba-create-multiple-data-sets"></a>
+ Métodos compatíveis: POST
+ Requer autenticação e o perfil ROLE\$1ADMIN.
+ Caminho: `/api/services/rest/bluesamservice/createAllDataSets`
+ Argumentos:
  + Lista de conjuntos de dados  
name  
(obrigatório, string): o nome do conjunto de dados.   
type  
(obrigatório, string): o tipo de conjunto de dados. Os valores possíveis são: `ESDS`, `KSDS` `RRDS`.   
recordSize  
(opcional, string): tamanho máximo de cada registro do conjunto de dados.  
fixedLength  
(opcional, booleano): indica se o tamanho dos registros é fixo.  
compression  
(opcional, booleano): indica se o conjunto de dados está compactado.   
cacheEnable  
(opcional, booleano): indica se o armazenamento em cache está ativado para o conjunto de dados.
+ Retornos: o status da solicitação e o conjunto de dados recém-criado.

### Listar todos os conjuntos de dados
<a name="ba-list-all-data-sets"></a>
+ Métodos compatíveis: GET
+ Requer autenticação e o perfil ROLE\$1USER.
+ Caminho: `/api/services/rest/bluesamservice/listDataSet`
+ Argumentos: nenhum
+ Retornos: o status da solicitação e a lista dos conjuntos de dados.

### Listar diretamente todos os conjuntos de dados
<a name="ba-direct-list-all-data-sets"></a>
+ Métodos compatíveis: GET
+ Requer autenticação e o perfil ROLE\$1USER.
+ Caminho: `/api/services/rest/bluesamservice/directListDataSet`
+ Argumentos: nenhum
+ Retornos: o status da solicitação e a lista dos conjuntos de dados.

### Listar diretamente todos os conjuntos de dados por página
<a name="ba-direct-list-all-data-sets-by-page"></a>
+ Métodos compatíveis: GET
+ Requer autenticação e o perfil ROLE\$1USER.
+ Caminho: `/api/services/rest/bluesamservice/directListDataSetByPage`
+ Argumentos:  
name  
(obrigatório, string): o nome do conjunto de dados. O padrão é `%` (todos os conjuntos de dados) se não for especificado.  
page  
(obrigatório, int): o número da página (mínimo 0).  
pageSize  
(obrigatório, int): o tamanho da página (mínimo 1, máximo 500).
+ Retornos: o status da solicitação e a lista dos conjuntos de dados.

### Fazer o streaming de dados
<a name="ba-stream-data-sets"></a>
+ Métodos compatíveis: GET
+ Requer autenticação e o perfil ROLE\$1ADMIN.
+ Caminho: `/api/services/rest/bluesamservice/streamDataset`
+ Argumentos:  
datasetName  
(obrigatório, string): o nome do conjunto de dados.
+ Exibe: um fluxo dos conjuntos de dados solicitados.

### Excluir todos os conjuntos de dados
<a name="ba-delete-all-data-sets"></a>
+ Métodos compatíveis: POST
+ Requer autenticação e o perfil ROLE\$1ADMIN.
+ Caminho: `/api/services/rest/bluesamservice/removeAll`
+ Argumentos: nenhum
+ Exibe: um booliano que representa o status da solicitação.

### Tenha as definições do conjunto de dados do arquivo listcat
<a name="ba-get-definitions-listcat"></a>
+ Métodos compatíveis: POST
+ Requer autenticação e o perfil ROLE\$1ADMIN.
+ Caminho: `/api/services/rest/bluesamservice/getDataSetsDefinitionFromListcat`
+ Argumentos:   
paramFilePath  
(obrigatório, string): o caminho para o arquivo listcat.
+ Retornos: uma lista de conjuntos de dados

### Obtenha as definições do conjunto de dados do arquivo cat da lista carregado
<a name="ba-get-definitions-uploaded-listcat"></a>
+ Métodos compatíveis: POST
+ Requer autenticação e o perfil ROLE\$1ADMIN.
+ Caminho: `/api/services/rest/bluesamservice/getDataSetsDefinitionFromUploadedListcat`
+ Argumentos: nenhum
+ Retornos: uma lista de conjuntos de dados

### Receber um conjunto de dados
<a name="ba-get-data-set"></a>
+ Métodos compatíveis: GET
+ Requer autenticação e o perfil ROLE\$1USER.
+ Caminho: `/api/services/rest/bluesamservice/getDataSet`
+ Argumentos:  
name  
(obrigatório, string): o nome do conjunto de dados.
+ Exibe o conjunto de dados solicitado.

### Carregar listcat do arquivo JSON
<a name="ba-load-listcat"></a>
+ Métodos compatíveis: GET
+ Requer autenticação e o perfil ROLE\$1ADMIN.
+ Caminho: `/api/services/rest/bluesamservice/loadListcatFromJsonFile`
+ Argumentos:   
filePath  
(obrigatório, string): o caminho para o arquivo listcat.
+ Retornos: uma lista de conjuntos de dados

## Registros
<a name="ba-endpoints-bac-records"></a>

Use os seguintes endpoints para criar ou gerenciar registros em um conjunto de dados.

**Topics**
+ [Criar um registro](#ba-create-record)
+ [Leia um conjunto de dados](#ba-read-data-set)
+ [Excluir um registro](#ba-delete-record)
+ [Atualizar um registro](#ba-update-record)
+ [Salvar um registro](#ba-save-record)
+ [Validar um registro](#ba-validate-record)
+ [Receber uma árvore de registros](#ba-get-record-tree)

### Criar um registro
<a name="ba-create-record"></a>

É possível usar esse endpoint para criar um registro.
+ Métodos compatíveis: POST
+ Requer autenticação e o perfil ROLE\$1USER.
+ Caminho: `/api/services/rest/crud/createRecord`
+ Argumentos:  
conjunto de dados  
(obrigatório, DataSet): o objeto do conjunto de dados  
máscara  
(obrigatório, máscara): o objeto da máscara.
+ Retorna o status da solicitação e o registro criado.

### Leia um conjunto de dados
<a name="ba-read-data-set"></a>

É possível usar esse endpoint para ler um conjunto de dados.
+ Métodos compatíveis: POST
+ Requer autenticação e o perfil ROLE\$1USER.
+ Caminho: `/api/services/rest/crud/readDataSet`
+ Argumentos:  
conjunto de dados  
(obrigatório, DataSet): o objeto do conjunto de dados.
+ Retorna o status da solicitação e o conjunto de dados com os registros.

### Excluir um registro
<a name="ba-delete-record"></a>

É possível usar esse endpoint para excluir um registro de um conjunto de dados.
+ Métodos compatíveis: POST
+ Requer autenticação e o perfil ROLE\$1USER.
+ Caminho: `/api/services/rest/crud/deleteRecord`
+ Argumentos:  
conjunto de dados  
(obrigatório, DataSet): o objeto do conjunto de dados  
registro  
(obrigatório, Registro): o registro a ser excluído
+ Retorna o status da exclusão.

### Atualizar um registro
<a name="ba-update-record"></a>

É possível usar esse endpoint para atualizar um registro associado a um conjunto de dados.
+ Métodos compatíveis: POST
+ Requer autenticação e o perfil ROLE\$1USER.
+ Caminho: `/api/services/rest/crud/updateRecord`
+ Argumentos:  
conjunto de dados  
(obrigatório, DataSet): o objeto do conjunto de dados  
registro  
(obrigatório, Registro): o registro a ser atualizado  
máscara  
(opcional, Máscara): o objeto de máscara a ser aplicado durante a atualização.
+ Retorna o status da solicitação e o conjunto de dados com os registros.

### Salvar um registro
<a name="ba-save-record"></a>

É possível usar esse endpoint para salvar um registro em um conjunto de dados e usar uma máscara.
+ Métodos compatíveis: POST
+ Requer autenticação e o perfil ROLE\$1USER.
+ Caminho: `/api/services/rest/crud/saveRecord`
+ Argumentos:  
conjunto de dados  
(obrigatório, DataSet): o objeto do conjunto de dados  
registro  
(obrigatório, Registro): o registro a ser salvo  
máscara  
(opcional, Máscara): o objeto de máscara a ser aplicado durante o salvamento.
+ Retorna o status da solicitação e o conjunto de dados com os registros.

### Validar um registro
<a name="ba-validate-record"></a>

Use esse endpoint para validar um registro.
+ Métodos compatíveis: POST
+ Requer autenticação e o perfil ROLE\$1USER.
+ Caminho: `/api/services/rest/crud/validateRecord`
+ Argumentos:  
conjunto de dados  
(obrigatório, DataSet): o objeto do conjunto de dados  
registro  
(opcional, Registro): o registro a ser validado.  
máscara  
(opcional, Máscara): o objeto de máscara a ser aplicado durante a validação.
+ Retorna o status da solicitação e o conjunto de dados com os registros.

### Receber uma árvore de registros
<a name="ba-get-record-tree"></a>

Use esse endpoint para receber a árvore hierárquica de um registro.
+ Métodos compatíveis: POST
+ Requer autenticação e o perfil ROLE\$1USER.
+ Caminho: `/api/services/rest/crud/getRecordTree`
+ Argumentos:  
conjunto de dados  
(obrigatório, DataSet): o objeto do conjunto de dados  
registro  
(obrigatório, Registro): o registro a buscar  
máscara  
(opcional, Máscara): o objeto da máscara.
+ Exibe o status da solicitação e a árvore hierárquica do registro solicitado.

## Máscaras
<a name="ba-endpoints-bac-masks"></a>

Use os seguintes endpoints para carregar ou aplicar máscaras a um conjunto de dados.

**Topics**
+ [Carregue máscaras](#ba-load-mask)
+ [Aplicar máscara](#ba-apply-mask)
+ [Aplicar filtro de máscara](#ba-apply-mask-filter)

### Carregue máscaras
<a name="ba-load-mask"></a>

É possível usar esse endpoint para recuperar todas as máscaras associadas a um conjunto de dados específico.
+ Métodos compatíveis: POST
+ Requer autenticação e o perfil ROLE\$1USER.
+ Caminho: `/api/services/rest/crud/loadMasks`
+ Variáveis de caminho:  
recordSize: .../loadMasks/\$1recordSize\$1  
(opcional, numérico): o tamanho do registro, máscaras carregadas com filtro que correspondem a esse tamanho de registro
+ Argumentos:  
conjunto de dados  
(obrigatório, DataSet): o objeto do conjunto de dados
+ Retorna o status da solicitação e a lista das máscaras.

### Aplicar máscara
<a name="ba-apply-mask"></a>

É possível usar esse endpoint para aplicar uma máscara a um conjunto de dados específico.
+ Métodos compatíveis: POST
+ Requer autenticação e o perfil ROLE\$1USER.
+ Caminho: `/api/services/rest/crud/applyMask`
+ Argumentos:  
conjunto de dados  
(obrigatório, DataSet): o objeto do conjunto de dados  
máscara  
(obrigatório, Máscara): o objeto do conjunto de dados
+ Retorna o status da solicitação e do conjunto de dados com a máscara aplicada.

### Aplicar filtro de máscara
<a name="ba-apply-mask-filter"></a>

É possível usar esse endpoint para aplicar uma máscara e um filtro a um conjunto de dados específico.
+ Métodos compatíveis: POST
+ Requer autenticação e o perfil ROLE\$1USER.
+ Caminho: `/api/services/rest/crud/applyMaskFilter`
+ Argumentos:  
conjunto de dados  
(obrigatório, DataSet): o objeto do conjunto de dados  
máscara  
(obrigatório, Máscara): o objeto de máscara  
filtrar  
(obrigatório, Filtro): o objeto de filtro a ser aplicado.
+ Retorna o status da solicitação e do conjunto de dados com a máscara e o filtro aplicados.

## Outros
<a name="ba-endpoints-bac-other"></a>

Use os seguintes endpoints para gerenciar o cache de um conjunto de dados ou verificar as características do conjunto de dados:

**Topics**
+ [Verificar o cache de aquecimento](#ba-check-warm-up-cache)
+ [Verifique o cache ativado](#ba-check-cache-enabled)
+ [Habilitar cache](#ba-enable-cache)
+ [Conferir o cache de RAM alocado](#ba-check-allocated-ram-cache)
+ [Verificar a persistência](#ba-check-persistence)
+ [Verifique os tipos de conjuntos de dados compatíveis](#ba-check-supported-data-set-types)
+ [Verificar a integridade do servidor](#ba-check-server-health)
+ [Verifique a configuração de vários esquemas do PostgreSQL](#ba-check-postgres-multi-schema)

### Verificar o cache de aquecimento
<a name="ba-check-warm-up-cache"></a>

Verifica se o cache de aquecimento está ativado para um conjunto de dados específico.
+ Métodos compatíveis: POST
+ Requer autenticação e o perfil ROLE\$1ADMIN.
+ Caminho: `/api/services/rest/bluesamservice/warmupCache`
+ Argumentos:  
name  
(obrigatório, string): o nome do conjunto de dados. 
+ Retorna: verdadeiro se o cache de aquecimento estiver ativado e falso caso contrário.

### Verifique o cache ativado
<a name="ba-check-cache-enabled"></a>

Verifica se o cache está habilitado para um conjunto de dados específico.
+ Métodos compatíveis: GET
+ Requer autenticação e o perfil ROLE\$1USER.
+ Caminho: `/api/services/rest/bluesamservice/isEnableCache`
+ Argumentos: nenhum
+ Retorna verdadeiro se o armazenamento em cache estiver ativado.

### Habilitar cache
<a name="ba-enable-cache"></a>
+ Métodos compatíveis: POST
+ Requer autenticação e os perfis ROLE\$1ADMIN e ROLE\$1SUPER\$1ADMIN.
+ Caminho: `/api/services/rest/bluesamservice/enableDisableCache/{enable}`
+ Argumentos:   
habilitar  
(obrigatório, booliano): se definido como verdadeiro, ele habilitará o armazenamento em cache.  
conjunto de dados  
(obrigatório, DataSet): o objeto do conjunto de dados.
+ Retornos: nenhum

### Conferir o cache de RAM alocado
<a name="ba-check-allocated-ram-cache"></a>

É possível usar esse endpoint para recuperar a memória cache de RAM alocado.
+ Métodos compatíveis: GET
+ Requer autenticação e o perfil ROLE\$1USER.
+ Caminho: `/api/services/rest/bluesamservice/allocatedRamCache`
+ Argumentos: nenhum
+ Retorna: o tamanho da memória como uma string

### Verificar a persistência
<a name="ba-check-persistence"></a>
+ Métodos compatíveis: GET
+ Requer autenticação e o perfil ROLE\$1USER.
+ Caminho: `/api/services/rest/bluesamservice/persistence`
+ Argumentos: nenhum
+ Retorna: a persistência usada como uma string

### Verifique os tipos de conjuntos de dados compatíveis
<a name="ba-check-supported-data-set-types"></a>
+ Métodos compatíveis: GET
+ Caminho: `/api/services/rest/bluesamservice/getDataSetTypes`
+ Requer autenticação e o perfil ROLE\$1USER.
+ Argumentos: nenhum
+ Retorna: a lista de tipos de conjuntos de dados compatíveis como uma lista de cadeias de caracteres.

### Verificar a integridade do servidor
<a name="ba-check-server-health"></a>
+ Métodos compatíveis: GET
+ Caminho: `/api/services/rest/bluesamserver/serverIsUp`
+ Argumentos: nenhum
+ Exibe: Nenhum. O código de status de resposta HTTP 200 indica que o servidor JICS está ativo e funcionando.

### Verifique a configuração de vários esquemas do PostgreSQL
<a name="ba-check-postgres-multi-schema"></a>

Verifica se a configuração de vários esquemas do PostgreSQL está habilitada.
+ Métodos compatíveis: GET
+ Requer autenticação e o perfil ROLE\$1USER.
+ Caminho: `/api/services/rest/bluesamservice/isPostgresMultiSchema`
+ Argumentos: nenhum
+ Retorna: true se a configuração de vários esquemas do PostgreSQL estiver habilitada e false caso contrário.

## Endpoints de gerenciamento de usuários do BAC
<a name="ba-endpoints-bac-users"></a>

Use os seguintes endpoints para gerenciar as interações do usuário.

**Topics**
+ [Fazer login como usuário em](#ba-log-user-in)
+ [Verificar se existe pelo menos um usuário no sistema](#ba-verify-at-least-one-user-exists)
+ [Gravar um novo usuário](#ba-record-new-user)
+ [Ter informações sobre o usuário](#ba-user-info)
+ [Listar usuários](#ba-list-users)
+ [Excluir um usuário](#ba-delete-user)
+ [Fazer logout do usuário atual](#ba-log-user-out)

### Fazer login como usuário em
<a name="ba-log-user-in"></a>
+ Método compatível: POST
+ Caminho: `/api/services/security/servicelogin/login`
+ Argumentos: nenhum
+ Retorna a serialização JSON de um objeto `com.netfective.bluage.bac.entities.SignOn`, representando o usuário cujas credenciais são fornecidas na solicitação atual. A senha está oculta da exibição no objeto retornado. As funções atribuídas ao usuário estão sendo listadas.

Resposta de exemplo:

```
{
     "login": "some-admin",
     "password": null,
     "roles": [
       {
         "id": 0,
         "roleName": "ROLE_ADMIN"
       }
     ]
   }
```

### Verificar se existe pelo menos um usuário no sistema
<a name="ba-verify-at-least-one-user-exists"></a>
+ Método compatível: GET
+ Caminho: `/api/services/security/servicelogin/hasAccount`
+ Argumentos: nenhum
+ Exibe o valor booliano `true` se pelo menos um usuário diferente do usuário superadministrador padrão tiver sido criado. Caso contrário, exibe `false`.

### Gravar um novo usuário
<a name="ba-record-new-user"></a>
+ Método compatível: POST
+ Requer autenticação e o perfil ROLE\$1ADMIN.
+ Caminho: `/api/services/security/servicelogin/recorduser`
+ Argumentos: a serialização JSON de um objeto `com.netfective.bluage.bac.entities.SignOn`, que representa o usuário a ser adicionado ao armazenamento. Os perfis do usuário devem ser definidos, caso contrário, o usuário talvez não consiga usar o recurso e os endpoints do BAC.
+ Exibirá o valor booliano `true` se o usuário tiver sido criado com êxito. Caso contrário, exibe `false`.
+ Exemplo de solicitação JSON:

  ```
   {
       "login": "simpleuser",
       "password": "simplepassword",
       "roles": [
         {
           "id": 2,
           "roleName": "ROLE_USER"
         }
       ]
     }
  ```

  Estes são os dois valores válidos para `roleName`: 
  + `ROLE_ADMIN`: pode gerenciar Blusam recursos e usuários.
  + `ROLE_USER`: pode gerenciar Blusam recursos, mas não usuários.

### Ter informações sobre o usuário
<a name="ba-user-info"></a>
+ Método compatível: GET
+ Caminho: `/api/services/security/servicelogin/userInfo`
+ Argumentos: nenhum
+ Exibe o nome de usuário e o perfil do usuário atualmente conectado

### Listar usuários
<a name="ba-list-users"></a>
+ Método compatível: GET
+ Requer autenticação e o perfil ROLE\$1ADMIN.
+ Caminho: `/api/services/security/servicelogin/listusers`
+ Argumentos: nenhum
+ Retorna uma lista de`com.netfective.bluage.bac.entities.SignOn`, serializada como JSON.

### Excluir um usuário
<a name="ba-delete-user"></a>

**Importante**  
Esta ação não pode ser desfeita. O usuário excluído não poderá se conectar à aplicação BAC novamente.
+ Método compatível: POST
+ Requer autenticação e o perfil ROLE\$1ADMIN.
+ Caminho: `/api/services/security/servicelogin/deleteuser`
+ Argumentos: a serialização JSON de um objeto `com.netfective.bluage.bac.entities.SignOn`, que representa o usuário a ser removido do armazenamento.
+ Exibirá o valor booliano `true` se o usuário tiver sido removido com êxito.

### Fazer logout do usuário atual
<a name="ba-log-user-out"></a>
+ Método compatível: GET
+ Caminho: `/api/services/security/servicelogout/logout`
+ Argumentos: nenhum
+ Exibirá a mensagem JSON `{"success":true}` se o usuário atual tiver sido desconectado com êxito. A sessão HTTP relacionada será invalidada.

# Gerencie o console do aplicativo JICS no AWS Transform for mainframe
<a name="ba-endpoints-jac"></a>

O componente JICS é o AWS Transform for mainframe, suporte para modernização dos recursos antigos do CICS. A aplicação web do console de aplicações JICS é dedicada a administrar os recursos do JICS. Os seguintes endpoints permitem realizar as tarefas de administração sem precisar interagir com a interface de usuário do JAC. Sempre que um endpoint exigir autenticação, a solicitação deverá incluir detalhes de autenticação (nome de usuário/senha normalmente, conforme exigido pela Autenticação Básica). Os endpoints da aplicação web do console de aplicações JICS usam o caminho raiz `/jac/`.

**Topics**
+ [Gerenciamento de recursos do JICS](#ba-endpoints-jac-resources)
+ [Outros](#ba-endpoints-jac-other)
+ [Endpoints de gerenciamento de usuários do JAC](#ba-endpoints-jac-users)

## Gerenciamento de recursos do JICS
<a name="ba-endpoints-jac-resources"></a>

Todos os endpoints a seguir estão relacionados ao gerenciamento de recursos do JICS, permitindo que os administradores do JICS lidem com os recursos diariamente.

**Topics**
+ [Listar LISTAS E GRUPOS DO JICS](#list-jics-lists-groups)
+ [Recuperar recursos do JICS](#retrieve-jics-resources)
+ [Listar GRUPOS JICS](#list-jics-groups)
+ [Listar GRUPOS JICS para uma determinada LISTA](#list-jics-groups-given-list)
+ [LISTAR recursos JICS para um determinado GRUPO](#list-jics-resources-given-group)
+ [LISTAR recursos JICS para um determinado GRUPO (alternativa usando um nome)](#list-jics-resources-given-group-alt)
+ [Editando os GRUPOS próprios de várias LISTAS](#edit-owned-groups-lists)
+ [Excluir uma LISTA](#delete-list)
+ [Excluir um grupo](#delete-group)
+ [Excluir uma TRANSAÇÃO](#delete-transaction)
+ [Como excluir um programa](#delete-program)
+ [Excluir um arquivo](#delete-file)
+ [Excluir um TDQUEUE](#delete-tdqueue)
+ [Exclui um TSMODEL](#delete-tsmodel)
+ [Excluir elementos](#delete-elements)
+ [Criar uma LISTA](#create-list)
+ [Criar um GRUPO](#create-group)
+ [Considerações comuns sobre a criação de RECURSOS](#common-create-considerations)
+ [Crie um ID de transação.](#create-transaction)
+ [Como criar um programa](#create-program)
+ [Crie um ARQUIVO](#create-file)
+ [Crie um TDQUEUE](#create-tdqueue)
+ [Cria um modelo.](#create-tsmodel)
+ [Criar elementos](#create-elements)
+ [Atualizar um link](#update-list)
+ [Atualiza um grupo.](#update-group)
+ [Considerações sobre a atualização de RECURSOS COMUNS](#common-update-considerations)
+ [Atualizar uma TRANSAÇÃO](#update-transaction)
+ [Atualizar um PROGRAMA](#update-program)
+ [Atualizar um ARQUIVO](#update-file)
+ [Atualizar um TDQUEUE](#update-tdqueue)
+ [Atualiza um modelo.](#update-tsmodel)
+ [Atualizar elementos](#update-elements)
+ [Inserir elementos](#upsert-elements)
+ [Recuperar elementos](#retrieve-elements)
+ [Operação CRUD do JICS](#jics-crud-operation)

### Listar LISTAS E GRUPOS DO JICS
<a name="list-jics-lists-groups"></a>

A LISTA e os GRUPOS são os principais recursos de contêiner proprietários dentro do componente JICS. Todos os recursos do JICS devem pertencer a um GRUPO. Os grupos podem pertencer às LISTAS, mas isso não é obrigatório. As LISTAS podem até não existir em um determinado ambiente JICS, mas, na maioria das vezes, as LISTAS existem para fornecer uma camada extra de organização dos recursos. Para obter mais informações sobre a organização de recursos do CICS, consulte os [recursos do CICS.](https://www.ibm.com/docs/en/cics-ts/6.1?topic=fundamentals-how-it-works-cics-resources)
+ Método compatível: GET
+ Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/api/services/rest/jicsservice/listJicsListsAndGroups`
+ Argumentos: nenhum
+ Retorna: uma lista de JicsContainer objetos serializados, tanto LISTS quanto GROUPS, como JSON.

Resposta de exemplo:

```
[
    {
      "name": "Resources",
      "children": [
        {
          "jacType": "JACList",
          "name": "MURACHS",
          "isActive": true,
          "children": [
            {
              "jacType": "JACGroup",
              "name": "MURACHS",
              "isActive": true,
              "children": []
            }
          ]
        },
        {
          "jacType": "JACGroup",
          "name": "TEST",
          "isActive": true,
          "children": []
        }
      ],
      "isExpanded": true
    }
  ]
```

### Recuperar recursos do JICS
<a name="retrieve-jics-resources"></a>
+ Método compatível: POST
+ Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/api/services/rest/jicsservice/retrieveJicsResources`
+ Argumentos: uma carga útil JSON que representa os recursos do JICS que você deseja recuperar. Essa é a serialização JSON de um objeto `com.netfective.bluage.jac.entities.request.RetrieveOperationRequest`.
+ Retornos: uma lista de JicsResource objetos serializados. Os objetos estão sendo exibidos em nenhuma ordem específica e são de tipos diferentes, como PROGRAM, TRANSACTION, FILE, etc.

### Listar GRUPOS JICS
<a name="list-jics-groups"></a>
+ Método compatível: GET
+ Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/api/services/rest/jicsservice/listJicsGroups`
+ Argumentos: nenhum
+ Retorna uma lista de JicsContainer objetos serializados (GROUPS) como JSON. Os GRUPOS são exibidos sem suas próprias informações de LISTA.

Resposta de exemplo:

```
[
    {
      "jacType": "JACGroup",
      "name": "MURACHS",
      "isActive": true,
      "children": []
    },
    {
      "jacType": "JACGroup",
      "name": "TEST",
      "isActive": true,
      "children": []
    }
  ]
```

### Listar GRUPOS JICS para uma determinada LISTA
<a name="list-jics-groups-given-list"></a>
+ Método compatível: POST
+ Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/api/services/rest/jicsservice/listGroupsForList`
+ Argumentos: uma carga útil JSON que representa a LISTA JICS cujos GRUPOS você está procurando. Essa é a serialização JSON de um objeto `com.netfective.bluage.jac.entities.JACList`.

  Exemplo de solicitação:

  ```
  {
      "jacType":"JACList",
      "name":"MURACHS",
      "isActive":true
    }
  ```
+ Retorna uma lista de JicsContainer objetos serializados (GROUPS) como JSON, que estão anexados à LIST fornecida. Os GRUPOS são exibidos sem suas próprias informações de LISTA.

  Resposta de exemplo:

  ```
  [
      {
        "jacType": "JACGroup",
        "name": "MURACHS",
        "isActive": true,
        "children": []
      }
    ]
  ```

### LISTAR recursos JICS para um determinado GRUPO
<a name="list-jics-resources-given-group"></a>
+ Método compatível: POST
+ Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/api/services/rest/jicsservice/listResourcesForGroup`
+ Argumentos: uma carga útil JSON que representa o GRUPO JICS cujos recursos você está procurando. Essa é a serialização JSON de um objeto `com.netfective.bluage.jac.entities.JACGroup`. Você não precisa especificar todos os campos para o GRUPO, mas o nome é obrigatório.

  Exemplo de solicitação:

  ```
  {
      "jacType":"JACGroup",
      "name":"MURACHS",
      "isActive":true
    }
  ```
+ Retorna uma lista de JicsResource objetos serializados, de propriedade do DETERMINADO GRUPO. Os objetos estão sendo exibidos em nenhuma ordem específica e são de tipos diferentes, como PROGRAM, TRANSACTION, FILE, etc.

### LISTAR recursos JICS para um determinado GRUPO (alternativa usando um nome)
<a name="list-jics-resources-given-group-alt"></a>
+ Método compatível: POST
+ Requer autenticação
+ Caminho: `/api/services/rest/jicsservice/listResourcesForGroupName`
+ Argumentos: o nome do GRUPO que possui os recursos que você está procurando.
+ Retorna: uma lista de JicsResource objetos serializados, de propriedade do DETERMINADO GRUPO. Os objetos estão sendo exibidos em nenhuma ordem específica e são de tipos diferentes, como PROGRAM, TRANSACTION, FILE, etc.

### Editando os GRUPOS próprios de várias LISTAS
<a name="edit-owned-groups-lists"></a>
+ Método compatível: POST
+ Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/api/services/rest/jicsservice/editGroupsList`
+ Argumentos: uma representação JSON de uma coleção de LISTAS com grupos infantis;

  Exemplo de solicitação:

  ```
  [      
    {
          "jacType": "JACList",
          "name": "MURACHS",
          "isActive": true,
          "children": [
            {
              "jacType": "JACGroup",
              "name": "MURACHS",
              "isActive": true,
              "children": []
            },
            {
              "jacType": "JACGroup",
              "name": "TEST",
              "isActive": true,
              "children": []
            }
          ]
    }
  ]
  ```

  Antes dessa edição, somente o grupo chamado “MURACHS” pertencia à LISTA chamada “MURACHS”. Com essa edição, “adicionamos” o grupo chamado “TESTE” à LISTA chamada “MURACHS”.
+ Retorna um valor Booleano. Se o valor for “true”, as modificações de LISTAS foram mantidas com êxito no armazenamento JICS subjacente.

### Excluir uma LISTA
<a name="delete-list"></a>
+ Método compatível: POST
+ Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/api/services/rest/jicsservice/deleteList`
+ Argumentos: uma carga JSON, representando a LISTA JICS a ser excluída. Essa é a serialização JSON de um objeto `com.netfective.bluage.jac.entities.JACList`.
+ Retorna um valor Booleano. Se o valor for “true”, a exclusão de LISTA foi realizada com êxito no armazenamento JICS subjacente.

### Excluir um grupo
<a name="delete-group"></a>
+ Método compatível: POST
+ Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/api/services/rest/jicsservice/deleteGroup`
+ Argumentos: uma carga JSON, representando o GRUPO JICS a ser excluído. Essa é a serialização JSON de um objeto `com.netfective.bluage.jac.entities.JACGroup`.
+ Retorna um valor Booleano. Se o valor for “true”, a exclusão de GRUPO foi realizada com êxito no armazenamento JICS subjacente.

### Excluir uma TRANSAÇÃO
<a name="delete-transaction"></a>
+ Método compatível: POST
+ Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/api/services/rest/jicsservice/deleteTransaction`
+ Argumentos: uma carga JSON, representando a transação JICS a ser excluída. Essa é a serialização JSON de um objeto `com.netfective.bluage.jac.entities.JACTransaction`.
+ Retorna um valor Booleano. Se o valor for “true”, a exclusão de TRANSAÇÃO foi realizada com êxito no armazenamento JICS subjacente.

### Como excluir um programa
<a name="delete-program"></a>
+ Método compatível: POST
+ Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/api/services/rest/jicsservice/deleteProgram`
+ Argumentos: uma carga JSON, representando o programa JICS a ser excluído. Essa é a serialização JSON de um objeto `com.netfective.bluage.jac.entities.JACProgram`.
+ Retorna um valor Booleano. Se o valor for “true”, a exclusão de PROGRAMA foi realizada com êxito no armazenamento JICS subjacente.

### Excluir um arquivo
<a name="delete-file"></a>
+ Método compatível: POST
+ Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/api/services/rest/jicsservice/deleteFile`
+ Argumentos: uma carga JSON, representando o arquivo JICS a ser excluído. Essa é a serialização JSON de um objeto `com.netfective.bluage.jac.entities.JACFile`.
+ Retorna um valor Booleano. Se o valor for 'true', a exclusão de ARQUIVO foi realizada com êxito no armazenamento JICS subjacente.

### Excluir um TDQUEUE
<a name="delete-tdqueue"></a>
+ Método compatível: POST
+ Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/api/services/rest/jicsservice/deleteTDQueue`
+ Argumentos: uma carga JSON, representando o JICS TDQUEUE a ser excluído. Essa é a serialização JSON de um `com.netfective.bluage.jac.entities. JACTDQueue`objeto.
+ Retorna um valor Booleano. Se o valor for “true”, a exclusão de TDQUEUE foi realizada com êxito no armazenamento JICS subjacente.

### Exclui um TSMODEL
<a name="delete-tsmodel"></a>
+ Método compatível: POST
+ Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/api/services/rest/jicsservice/deleteTSModel`
+ Argumentos: uma carga JSON, representando o JICS TSMODEL a ser excluído. Essa é a serialização JSON de um `com.netfective.bluage.jac.entities. JACTSModel`objeto.
+ Retorna um valor Booleano. Se o valor for “true”, a exclusão de TSMODEL foi realizada com êxito no armazenamento JICS subjacente.

### Excluir elementos
<a name="delete-elements"></a>
+ Método compatível: POST
+ Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/api/services/rest/jicsservice/deleteElements`
+ Argumentos: uma carga útil JSON que representa os elementos JICS a serem excluídos.
+ Exibe um valor booliano em que `true` indica que a exclusão foi realizada com êxito no armazenamento JICS subjacente.

### Criar uma LISTA
<a name="create-list"></a>
+ Método compatível: POST
+ Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/api/services/rest/jicsservice/createList`
+ Argumentos: uma carga JSON, representando a LISTA JICS a ser criada. Essa é a serialização JSON de um `com.netfective.bluage.jac.entities. JACList`objeto.
+ Retorna um valor Booleano. Se o valor for “true”, a criação de LISTA foi realizada com êxito no armazenamento JICS subjacente.

**nota**  
A LISTA sempre será criada vazia. Anexar GRUPOS à LISTA exigirá outra operação.

### Criar um GRUPO
<a name="create-group"></a>
+ Método compatível: POST
+ Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/api/services/rest/jicsservice/createGroup`
+ Argumentos: uma carga JSON, representando o GRUPO JICS a ser criado. Essa é a serialização JSON de um objeto `com.netfective.bluage.jac.entities.JACGroup`.
+ Retorna um valor Booleano. Se o valor for 'true', o GRUPO foi criado corretamente no armazenamento JICS subjacente.

**nota**  
O GRUPO sempre será criado vazio. Anexar RECURSOS ao GRUPO exigirá operações adicionais (a criação de recursos os anexará automaticamente a um determinado GRUPO).

### Considerações comuns sobre a criação de RECURSOS
<a name="common-create-considerations"></a>

Todos os endpoints a seguir estão relacionados à criação de JICS RESOURCES e compartilham algumas restrições comuns: na carga útil da solicitação a ser enviada ao endpoint, o campo `groupName` precisa ser valorizado.

Restrição de propriedade do GRUPO:

Nenhum recurso pode ser criado sem ser anexado a um grupo existente, e o endpoint usa o groupName para recuperar o grupo ao qual esse recurso será anexado. O `groupName` deve ser igual ao nome de um GRUPO existente. Uma mensagem de erro com HTTP STATUS 400 será enviada se não `groupName` estiver apontando para um grupo existente no armazenamento subjacente do JICS.

Restrição de unicidade dentro de um GRUPO:

Um recurso especificado com um nome especificado deve ser exclusivo dentro de um grupo especificado. A verificação da unicidade será realizada por cada endpoint de criação de recursos. Se a carga útil fornecida não respeitar a restrição de unicidade, o endpoint enviará uma resposta com HTTP STATUS 400 (BAD REQUEST) — veja o exemplo de resposta abaixo.

Exemplo de carga útil: você tenta criar a transação “ARIT” no grupo “TESTE”, mas uma transação com esse nome já existe nesse grupo.

```
{
    "jacType":"JACTransaction",
    "name":"ARIT", 
    "groupName":"TEST", 
    "isActive":true
  }
```

Você receberá a seguinte resposta de erro:

```
{
    "timestamp": 1686759054510,
    "status": 400,
    "error": "Bad Request",
    "path": "/jac/api/services/rest/jicsservice/createTransaction"
  }
```

A inspeção dos logs dos servidores confirmará a origem do problema:

```
2023-06-14 18:10:54 default         TRACE - o.s.w.m.HandlerMethod                    - Arguments: [java.lang.IllegalArgumentException: Transaction already present in the group, org.springframework.security.web.header.HeaderWriterFilter$HeaderWriterResponse@e34f6b8]
2023-06-14 18:10:54 default         ERROR - c.n.b.j.a.WebConfig                      - 400
java.lang.IllegalArgumentException: Transaction already present in the group
	at com.netfective.bluage.jac.server.services.rest.impl.JicsServiceImpl.createElement(JicsServiceImpl.java:1280)
```

### Crie um ID de transação.
<a name="create-transaction"></a>
+ Método compatível: POST
+ Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/api/services/rest/jicsservice/createTransaction`
+ Argumentos: uma carga JSON, representando a TRANSAÇÃO JICS a ser criada. Essa é a serialização JSON de um objeto `com.netfective.bluage.jac.entities.JACTransaction`.
+ Retorna um valor Booleano. Se o valor for “true”, a criação de TRANSAÇÃO foi realizada com êxito no armazenamento JICS subjacente.

### Como criar um programa
<a name="create-program"></a>
+ Método compatível: POST
+ Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/api/services/rest/jicsservice/createProgram`
+ Argumentos: uma carga JSON, representando o PROGRAMA JICS a ser criado. Essa é a serialização JSON de um objeto `com.netfective.bluage.jac.entities.JACProgram`.
+ Retorna um valor Booleano. Se o valor for “true”, a criação de PROGRAMA foi realizada com êxito no armazenamento JICS subjacente.

### Crie um ARQUIVO
<a name="create-file"></a>
+ Método compatível: POST
+ Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/api/services/rest/jicsservice/createFile`
+ Argumentos: uma carga JSON, representando o ARQUIVO JICS a ser criado. Essa é a serialização JSON de um objeto `com.netfective.bluage.jac.entities.JACFile`.
+ Retorna um valor Booleano. Se o valor for “true”, a criação de ARQUIVO foi realizada com êxito no armazenamento JICS subjacente.

### Crie um TDQUEUE
<a name="create-tdqueue"></a>
+ Método compatível: POST
+ Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/api/services/rest/jicsservice/createTDQueue`
+ Argumentos: uma carga JSON, representando o JICS TDQUEUE a ser criado. Essa é a serialização JSON de um objeto `com.netfective.bluage.jac.entities.JACTDQueue`.
+ Retorna um valor Booleano. Se o valor for “true”, a criação de TDQUEUE foi realizada com êxito no armazenamento JICS subjacente.

### Cria um modelo.
<a name="create-tsmodel"></a>
+ Método compatível: POST
+ Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/api/services/rest/jicsservice/createTSModel`
+ Argumentos: uma carga JSON, representando o JICS TSMODEL a ser criado. Essa é a serialização JSON de um objeto `com.netfective.bluage.jac.entities.JACTSModel`.
+ Exibe um valor booliano em que `true` indica que a criação de elementos foi realizada com êxito no armazenamento JICS subjacente.

### Criar elementos
<a name="create-elements"></a>
+ Método compatível: POST
+ Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/api/services/rest/jicsservice/createElements`
+ Argumentos: uma carga útil JSON que representa os elementos JICS a serem criados.
+ Retorna um valor Booleano. Se o valor for “true”, os elementos foram criados com êxito no armazenamento JICS subjacente.

### Atualizar um link
<a name="update-list"></a>
+ Método compatível: POST
+ Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/api/services/rest/jicsservice/updateList`
+ Argumentos: uma carga JSON, representando a LISTA JICS a ser atualizada. Essa é a serialização JSON de um objeto `com.netfective.bluage.jac.entities.JACList`. Não há necessidade de fornecer os filhos da LISTA; o mecanismo de atualização da LISTA não levará os filhos em consideração. 
+ Retorna um valor Booleano. Se o valor for “true”, a atualização de LISTA foi realizada com êxito no armazenamento JICS subjacente.

A atualização do sinalizador LIST 'isActive' será propagada para todos os elementos de propriedade da LIST, ou seja, todos os GRUPOS pertencentes à LIST e todos os RECURSOS pertencentes a esses GRUPOS. Essa é uma maneira conveniente de desativar muitos recursos com uma única operação, em vários GRUPOS.

### Atualiza um grupo.
<a name="update-group"></a>
+ Método compatível: POST
+ Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/api/services/rest/jicsservice/updateGroup`
+ Argumentos: uma carga JSON, representando o JICS GRUPO a ser atualizado. Essa é a serialização JSON de um objeto `com.netfective.bluage.jac.entities.JACGroup`. Não há necessidade de fornecer os filhos do GRUPO, o mecanismo de atualização do GRUPO não levará isso em consideração. 
+ Retorna um valor Booleano. Se o valor for “true”, a atualização do GRUPO foi realizada com êxito no armazenamento JICS subjacente.

**nota**  
A atualização do sinalizador GRUPO 'isActive' se propagará para todos os elementos de propriedade do GRUPO, ou seja, todos os RECURSOS de propriedade do GRUPO. Essa é uma maneira conveniente de desativar muitos recursos com uma única operação em um GRUPO específico.

### Considerações sobre a atualização de RECURSOS COMUNS
<a name="common-update-considerations"></a>

Todos os endpoints a seguir tratam da atualização do JICS RESOURCES. Usando o campo `groupName`, é possível alterar o GRUPO proprietário de qualquer RECURSO do JICS, desde que o valor do campo aponte para um GRUPO existente no armazenamento JICS subjacente (caso contrário, você receberá uma resposta BAD REQUEST (HTTP STATUS 400) do endpoint).

### Atualizar uma TRANSAÇÃO
<a name="update-transaction"></a>
+ Método compatível: POST
+ Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/api/services/rest/jicsservice/updateTransaction`
+ Argumentos: uma carga JSON, representando a TRANSAÇÃO JICS a ser atualizada. Essa é a serialização JSON de um objeto `com.netfective.bluage.jac.entities.JACTransaction`.
+ Retorna um valor Booleano. Se o valor for “true”, a atualização da TRANSAÇÃO foi realizada com êxito no armazenamento JICS subjacente.

### Atualizar um PROGRAMA
<a name="update-program"></a>
+ Método compatível: POST
+ Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/api/services/rest/jicsservice/updateProgram`
+ Argumentos: uma carga JSON, representando o PROGRAMA JICS a ser atualizado. Essa é a serialização JSON de um objeto `com.netfective.bluage.jac.entities.JACProgram`.
+ Retorna um valor Booleano. Se o valor for “true”, a atualização de PROGRAMA foi realizada com êxito no armazenamento JICS subjacente.

### Atualizar um ARQUIVO
<a name="update-file"></a>
+ Método compatível: POST
+ Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/api/services/rest/jicsservice/updateFile`
+ Argumentos: uma carga JSON, representando o ARQUIVO JICS a ser atualizado. Essa é a serialização JSON de um objeto `com.netfective.bluage.jac.entities.JACFile`.
+ Retorna um valor Booleano. Se o valor for “true”, a atualização de ARQUIVO foi realizada com êxito no armazenamento JICS subjacente.

### Atualizar um TDQUEUE
<a name="update-tdqueue"></a>
+ Método compatível: POST
+ Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/api/services/rest/jicsservice/updateTDQueue`
+ Argumentos: uma carga JSON, representando o JICS TDQUEUE a ser atualizado. Essa é a serialização JSON de um objeto `com.netfective.bluage.jac.entities.JACTDQueue`.
+ Retorna um valor Booleano. Se o valor for 'true', TDQueue ele foi atualizado com sucesso no armazenamento JICS subjacente.

### Atualiza um modelo.
<a name="update-tsmodel"></a>
+ Método compatível: POST
+ Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/api/services/rest/jicsservice/updateTSModel`
+ Argumentos: uma carga JSON, representando o JICS TSMODEL a ser atualizado. Essa é a serialização JSON de um objeto `com.netfective.bluage.jac.entities.JACTSModel`.
+ Retorna um valor Booleano. Se o valor for “true”, a atualização de TSMODEL foi realizada com êxito no armazenamento JICS subjacente.

### Atualizar elementos
<a name="update-elements"></a>
+ Método compatível: POST
+ Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/api/services/rest/jicsservice/updateElements`
+ Argumentos: uma carga útil JSON que representa os elementos a serem atualizados.
+ Exibe um valor booliano em que `true` indica que a atualização de elementos foi realizada com êxito no armazenamento JICS subjacente.

### Inserir elementos
<a name="upsert-elements"></a>
+ Método compatível: POST
+ Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/api/services/rest/jicsservice/upsertElements`
+ Argumentos: uma carga útil JSON que representa os elementos a serem inseridos.
+ Exibe um valor booliano em que `true` indica que a inserção de elementos foi realizada com êxito no armazenamento JICS subjacente.

### Recuperar elementos
<a name="retrieve-elements"></a>
+ Método compatível: GET
+ Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/api/services/rest/jicsservice/retrieveElements`
+ Argumentos: nenhum
+ Exibe uma lista de todos os recursos serializados do JICS.

### Operação CRUD do JICS
<a name="jics-crud-operation"></a>
+ Método compatível: POST
+ Requer autenticação e um dos seguintes perfis: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Caminho: `/api/services/rest/jicsservice/jicsCrudOperation`
+ Argumentos: uma carga útil JSON que representa os recursos JICS que você está procurando. Essa é a serialização JSON de um objeto `com.netfective.bluage.jac.entities.request.JicsCrudOperationRequest`.
+ Exibe uma carga útil JSON que representa a resposta. Essa é a serialização JSON de um objeto `com.netfective.bluage.jac.entities.request.JicsCrudOperationResponse`.

## Outros
<a name="ba-endpoints-jac-other"></a>

**Topics**
+ [Estado de integridade do servidor JICS](#jics-server-health)

### Estado de integridade do servidor JICS
<a name="jics-server-health"></a>
+ Método compatível: GET
+ Caminho: `/api/services/rest/jicsserver/serverIsUp`
+ Argumentos: nenhum
+ Exibe: Nenhum. Uma resposta HTTP STATUS 200 indica que o servidor está ativo e funcionando.

## Endpoints de gerenciamento de usuários do JAC
<a name="ba-endpoints-jac-users"></a>

Use os seguintes endpoints para gerenciar as interações do usuário.

**Topics**
+ [Fazer login como usuário](#log-user)
+ [Testando se existe pelo menos um usuário no sistema](#test-user-exist)
+ [Gravação de um novo usuário](#record-new-user)
+ [Informações sobre o usuário](#user-info)
+ [Listar usuários](#list-users)
+ [Excluir um usuário](#delete-user)
+ [Fazer logout do usuário atual](#logout-user)

### Fazer login como usuário
<a name="log-user"></a>
+ Método compatível: POST
+ Caminho: `/api/services/security/servicelogin/login`
+ Argumentos: nenhum
+ Retorna a serialização JSON de um objeto `com.netfective.bluage.jac.entities.SignOn`, representando o usuário cujas credenciais são fornecidas na solicitação atual. A senha está oculta da exibição no objeto retornado. As funções atribuídas ao usuário estão sendo listadas.

Resposta de exemplo:

```
{
    "login": "some-admin",
    "password": null,
    "roles": [
      {
        "id": 0,
        "roleName": "ROLE_ADMIN"
      }
    ]
  }
```

### Testando se existe pelo menos um usuário no sistema
<a name="test-user-exist"></a>
+ Método compatível: GET
+ Caminho: `/api/services/security/servicelogin/hasAccount`
+ Argumentos: nenhum
+ Exibe o valor booliano `true` se pelo menos um usuário diferente do usuário superadministrador padrão tiver sido criado. Caso contrário, exibe `false`.

### Gravação de um novo usuário
<a name="record-new-user"></a>
+ Método compatível: POST
+ Requer autenticação e o perfil ROLE\$1ADMIN.
+ Caminho: `/api/services/security/servicelogin/recorduser`
+ Argumentos: a serialização JSON de um objeto `com.netfective.bluage.jac.entities.SignOn`, representando o usuário a ser adicionado ao armazenamento. As funções do usuário devem ser definidas, caso contrário, o usuário talvez não consiga usar o recurso e os endpoints do JAC.
+ Exibirá o valor booliano `true` se o usuário tiver sido criado com êxito. Caso contrário, exibe `false`.

Exemplo de solicitação:

```
{
    "login": "simpleuser",
    "password": "simplepassword",
    "roles": [
      {
        "id": 2,
        "roleName": "ROLE_USER"
      }
    ]
  }
```

Somente as seguintes funções podem ser usadas ao gravar um novo usuário:
+ ROLE\$1ADMIN: pode gerenciar recursos e usuários do JICS.
+ ROLE\$1USER: pode gerenciar recursos do JICS, mas não usuários.

### Informações sobre o usuário
<a name="user-info"></a>
+ Método compatível: GET
+ Caminho: `/api/services/security/servicelogin/userInfo`
+ Argumentos: nenhum
+ Exibe o nome de usuário e os perfis do usuário atualmente conectado.

### Listar usuários
<a name="list-users"></a>
+ Método compatível: GET
+ Requer autenticação e o perfil ROLE\$1ADMIN.
+ Caminho: `/api/services/security/servicelogin/listusers`
+ Argumentos: nenhum
+ Retorna uma lista de`com.netfective.bluage.jac.entities.SignOn`, serializada como JSON.

### Excluir um usuário
<a name="delete-user"></a>
+ Método compatível: POST
+ Requer autenticação e o perfil ROLE\$1ADMIN.
+ Caminho: `/api/services/security/servicelogin/deleteuser`
+ Argumentos: a serialização JSON de um objeto `com.netfective.bluage.jac.entities.SignOn`, que representa o usuário a ser removido do armazenamento.
+ Exibirá o valor booliano `true` se o usuário tiver sido removido com êxito.

**Importante**  
Esta ação não pode ser desfeita. O usuário excluído não poderá se conectar à aplicação JAC novamente.

### Fazer logout do usuário atual
<a name="logout-user"></a>
+ Método compatível: GET
+ Caminho: `/api/services/security/servicelogout/logout`
+ Argumentos: nenhum
+ Exibirá a mensagem JSON `{"success":true}` se o usuário atual tiver sido desconectado com êxito. A sessão HTTP relacionada será invalidada.

# Estruturas de dados do AWS Transform para usuário de mainframe
<a name="ba-endpoints-apx"></a>

Você pode aprender sobre várias estruturas de dados do AWS Transform for mainframe engine na seção a seguir.

**Topics**
+ [Estrutura de mensagens de detalhes de execução de trabalhos](#job-execution-details)
+ [Estrutura de resultados do lançamento da transação](#transaction-outcome)
+ [Estrutura de resultados do registro de lançamento da transação](#transaction-record-outcome)
+ [Possível status de trabalho em uma fila](#jobs-status)
+ [Enviar um trabalho e agendar a entrada do trabalho](#submit-job)
+ [Lista de respostas de trabalhos agendados](#list-scheduled-jobs)
+ [Lista de respostas de trabalhos repetidos](#list-on-hold-jobs)

## Estrutura de mensagens de detalhes de execução de trabalhos
<a name="job-execution-details"></a>

Cada detalhe da execução do trabalho terá os seguintes campos:

scriptId  
o identificador do script chamado.

chamador  
Endereço IP do chamador.

Identifier  
identificador exclusivo de execução do trabalho.

startTime  
data e hora em que a execução de trabalho foi iniciada.

endTime  
data e hora em que a execução de trabalho foi encerrada.

status  
um status para a execução do trabalho. Um valor possível entre:  
+ `DONE`: a execução do trabalho terminou normalmente.
+ `TRIGGERED`: a execução do trabalho foi acionada, mas ainda não foi lançada.
+ `RUNNING`: a execução do trabalho está em execução.
+ `KILLED`: a execução do trabalho foi interrompida.
+ `FAILED`: a execução do trabalho falhou.

executionResult  
uma mensagem para resumir o resultado da execução do trabalho. Essa mensagem pode ser uma mensagem simples se a execução do trabalho ainda não tiver sido concluída ou uma estrutura JSON com os seguintes campos:  
+ exitCode: código de saída numérico; valores negativos indicam situações de falha.
+ program: último programa lançado pelo cargo.
+ status: um valor possível entre:
  + `Error`: quando exitCode = -1; isso corresponde a um erro (técnico) que ocorre durante a execução do trabalho.
  + `Failed`: quando exitCode = -2; Isso corresponde a uma falha que ocorre durante a execução de um programa de serviço (como uma situação ABEND).
  + `Succeeded`: quando exitCode >= 0;
+ stepName: nome da última etapa executada no trabalho.

executionMode  
síncrona ou assíncrona, dependendo da forma como a tarefa foi iniciada.

Exemplo de saída:

```
{
    "scriptId": "INTCALC",
    "caller": "127.0.0.1",
    "identifier": "97d410be-efa7-4bd3-b7b9-d080e5769771",
    "startTime": "06-09-2023 11:42:41",
    "endTime": "06-09-2023 11:42:42",
    "status": "DONE",
    "executionResult": "{ \"exitCode\": -1, \"stepName\": \"STEP15\", \"program\": \"CBACT04C\", \"status\": \"Error\" }",
    "executionMode": "ASYNCHRONOUS"
  }
```

## Estrutura de resultados do lançamento da transação
<a name="transaction-outcome"></a>

 A estrutura pode conter os seguintes campos:

outCome  
uma string representando o resultado da execução da transação. Os valores possíveis são:  
+ `Success`: a execução da transação foi até o final corretamente.
+ `Failure`: a execução da transação falhou ao terminar corretamente, alguns problemas foram encontrados.

commarea  
uma string representando o valor final COMMAREA, como uma matriz de bytes codificada em byte64. Pode ser uma string vazia.

containerRecord  
(Opcional) Uma string que represente o conteúdo do registro do CONTAINER como uma matriz de bytes codificada em byte64.

serverDescription  
Pode conter informações sobre o servidor que atendeu à solicitação (para fins de depuração). Pode ser uma string vazia.

abendCode  
(Opcional) Se o programa referenciado pela transação iniciada for alterado, o valor do código de abend será exibido como uma string nesse campo.

Respostas de exemplo:

Bem-sucedida

```
{
    "outCome": "Success",
    "commarea": "",
    "serverDescription": ""
  }
```

Falha

```
{
    "outCome": "Failure",
    "commarea": "",
    "serverDescription": "",
    "abendCode": "AEIA"
  }
```

## Estrutura de resultados do registro de lançamento da transação
<a name="transaction-record-outcome"></a>

A estrutura pode conter os seguintes campos:

recordContent  
uma string representando o conteúdo do registro do COMMAREA como uma matriz de bytes codificada em byte64.

containerRecord  
uma string representando o conteúdo do registro do CONTAINER como uma matriz de bytes codificada em byte64.

serverDescription  
Pode conter informações sobre o servidor que atendeu à solicitação (para fins de depuração). Pode ser uma string vazia.

Respostas de exemplo:

Bem-sucedida

```
{
    "recordContent": "",
    "serverDescription": ""
}
```

## Possível status de trabalho em uma fila
<a name="jobs-status"></a>

Em uma fila, os trabalhos podem ter o seguinte status:

ATIVO  
O trabalho está sendo executado atualmente na fila.

EXECUTION\$1WAIT  
O trabalho está aguardando a disponibilidade de um thread.

SCHEDULED  
Os trabalhos são programados para execução em uma data e hora específicas.

HOLD  
Job está esperando para ser lançado antes de ser executado.

CONCLUÍDO  
Job foi executado com sucesso.

FAILED  
Houve falha na execução de trabalho.

UNKNOWN  
O status é desconhecido.

## Enviar um trabalho e agendar a entrada do trabalho
<a name="submit-job"></a>

A entrada do trabalho de envio e do trabalho de programação é a serialização JSON de um objeto `com.netfective.bluage.gapwalk.rt.jobqueue.SubmitJobMessage`. O exemplo de entrada abaixo exibe todos os campos desse tipo de feijão.

Exemplo de entrada para enviar um trabalho:

```
{
    "messageQueueName":null,
    "scheduleDate":null,
    "scheduleTime":null,
    "programName":"PTA0044",
    "programParams":
     {"wmind":"B"},
    "localDataAreaValue":"",
    "userName":"USER1",
    "jobName":"PTA0044",
    "jobNumber":9,
    "jobPriority":5,
    "executionDate":"20181231",
    "jobQueue":"queue1",
    "jobOnHold":false
}
```

Exemplo de entrada para agendar um trabalho:

```
{
     "scheduleCron": "*/2 * * * * ?",
     "programName":"LOGPGM",
     "programParams": {
         "cl_sbmjob_param_json": "[\"./output/schedule-job-log.txt\", \"Every 2 seconds!\"]"
     },
     "localDataAreaValue":"",
     "userName":"PVO",
     "jobName":"LOGGERJOB",
     "jobPriority":5,
     "jobQueue":"queue1",
     "scheduleMisfirePolicy": 4,
     "startTime": "2003/05/04 07:00:00.000 GMT-06:00",
     "endTime": "2003/05/04 07:00:07.000 GMT-06:00"
 }
```

jobNumber  
Se o número do trabalho for 0, o número do trabalho será gerado automaticamente usando o próximo número na sequência numérica do trabalho. Esse valor deve ser definido como 0 (exceto para fins de teste).

jobPriority  
A prioridade de trabalho padrão em AS400 é 5. O intervalo válido é de 0 a 9, sendo 0 a prioridade mais alta.

jobOnHold  
Se um trabalho for enviado em espera, ele não será executado imediatamente, mas somente quando alguém o “liberar”. Um trabalho pode ser lançado usando a API REST (/release ou /release-all).

scheduleDate e scheduleTime  
Se esses valores não forem nulos, o trabalho será executado na data e hora especificadas. 

Data  
Pode ser fornecido com formato MMddyy ou dd MMyyyy (o tamanho da entrada determinará qual formato será usado)

Hora  
Pode ser fornecido com formato HHmm ou HHmmss (o tamanho da entrada determinará qual formato será usado)

programParams  
Isso será transmitido para o programa como um mapa.

scheduleMisfirePolicy  
Define a estratégia usada quando um gatilho falha no disparo. Os valores possíveis são os seguintes:  

1. Libere a primeira falha no disparo e descarte as outras.

1. Envie um trabalho suspenso para a primeira falha no disparo e descarte as outras falhas.

1. Descarte a falha no disparo.

1. Libere todas as falhas no disparo. A fila de trabalhos executará todos os trabalhos.

## Lista de respostas de trabalhos agendados
<a name="list-scheduled-jobs"></a>

 Essa é a estrutura do endpoint da fila de trabalhos list-jobs. A mensagem de trabalho de envio que foi usada para enviar esse trabalho faz parte da resposta. Isso pode ser usado para fins de rastreamento, teste/reenvio. Quando um trabalho for concluído, a data de início e a data de término também serão preenchidas.

```
[
  {
    "jobName": "PTA0044",
    "userName": "USER1",
    "jobNumber": 9,
    "jobPriority": 5,
    "status": "HOLD",
    "jobDelay": 0,
    "startDate": null,
    "endDate": null,
    "jobQueue": "queue1",
    "message": {
      "messageQueueName": null,
      "scheduleDate": null,
      "scheduleTime": null,
      "programName": "PTA0044",
      "programParams": {"wmind": "B"},
      "localDataAreaValue": "",
      "userName": "USER1",
      "jobName": "PTA0044",
      "jobNumber": 9,
      "jobPriority": 5,
      "executionDate": "20181231",
      "jobQueue": "queue1",
      "jobOnHold": true,
      "scheduleCron": null,
      "save": false,
      "scheduleMisfirePolicy": 4,
      "omitdates": null
    },
    "executionId": 1,
    "jobScheduledId": 0,
    "jobScheduledAt": null
  },
  {
    "jobName": "PTA0044",
    "userName": "USER1",
    "jobNumber": 9,
    "jobPriority": 5,
    "status": "COMPLETED",
    "jobDelay": 0,
    "startDate": "2022-10-13T22:48:34.025+00:00",
    "endDate": "2022-10-13T22:52:54.475+00:00",
    "jobQueue": "queue1",
    "message": {
      "messageQueueName": null,
      "scheduleDate": null,
      "scheduleTime": null,
      "programName": "PTA0044",
      "programParams": {"wmind": "B"},
      "localDataAreaValue": "",
      "userName": "USER1",
      "jobName": "PTA0044",
      "jobNumber": 9,
      "jobPriority": 5,
      "executionDate": "20181231",
      "jobQueue": "queue1",
      "jobOnHold": true,
      "scheduleCron": "*/20 * * * * ?",
      "save": false,
      "scheduleMisfirePolicy": 4,
      "omitdates": null
    },
    "executionId": 2,
    "jobScheduledId": 0,
    "jobScheduledAt": null
  }
]
```

## Lista de respostas de trabalhos repetidos
<a name="list-on-hold-jobs"></a>

Essa é a estrutura do endpoint da fila de trabalhos /schedule/list.

```
[
  {
    "id": 1,
    "status": "ACTIVE",
    "jobNumber": 1,
    "userName": "PVO",
    "msg": {
      "messageQueueName": null,
      "scheduleDate": null,
      "scheduleTime": null,
      "startTime": "2024/03/07 21:12:00.000 UTC",
      "endTime": "2024/03/07 21:13:59.000 UTC",
      "programName": "LOGPGM",
      "programParams": {"cl_sbmjob_param_json": "[\"./output/schedule-job-log.txt\", \"Every 20 seconds!\"]"},
      "localDataAreaValue": "",
      "userName": "PVO",
      "jobName": "LOGGERJOB",
      "jobNumber": 1,
      "jobScheduleId": 1,
      "jobPriority": 5,
      "executionDate": null,
      "jobQueue": "queue1",
      "jobOnHold": false,
      "scheduleCron": "*/20 * * * * ?",
      "save": false,
      "scheduleMisfirePolicy": 4,
      "omitdates": null
    },
    "lastUpdatedAt": "2024-03-07T21:11:13.282+00:00",
    "lastUpdatedBy": ""
  }
]
```