

AWS El servicio de modernización de mainframes (experiencia en entornos de ejecución gestionados) ya no está abierto a nuevos clientes. Para obtener prestaciones similares a las del Servicio de Modernización de AWS Mainframe (experiencia en entornos de ejecución gestionados), explore el Servicio de Modernización de AWS Mainframe (experiencia autogestionada). Los clientes existentes pueden seguir utilizando el servicio con normalidad. Para obtener más información, consulte Cambio en la disponibilidad de la modernización del [AWS mainframe.](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html)

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# AWS Tiempo de ejecución Blu Age APIs
<a name="ba-runtime-endpoints"></a>

El AWS Blu Age Runtime utiliza varias aplicaciones web para exponer los puntos finales REST, lo que proporciona formas de interactuar con las aplicaciones modernizadas mediante clientes REST (por ejemplo, para llamar a las tareas mediante un programador).

El propósito de este documento es enumerar los puntos de conexión REST disponibles, proporcionando detalles sobre:
+ Su rol
+ La forma de utilizarlos correctamente 

La lista de puntos de conexión está organizada en categorías, según la naturaleza del servicio prestado y la aplicación web que muestre los puntos de conexión.

Suponemos que ya tiene conocimientos básicos sobre el uso de puntgos de conexión REST (utilizando herramientas específicas como [POSTMAN](https://www.postman.com/), [Thunder Client](https://www.thunderclient.com/), [CURL, navegadores web](https://curl.se/), etc.) o escribir su propio código para realizar una llamada a la API.

**Topics**
+ [Puntos finales disponibles para el usuario al construir URLs](ba-endpoints-build-urls.md)
+ [Puntos finales para la aplicación Gapwalk en Blu Age AWS](ba-endpoints-gapwalk.md)
+ [Blusampuntos finales REST de la consola de aplicaciones](ba-endpoints-bac.md)
+ [Administre la consola de aplicaciones JICS en AWS Blu Age](ba-endpoints-jac.md)
+ [Estructuras de datos para usuarios de AWS Blu Age](ba-endpoints-apx.md)

# Puntos finales disponibles para el usuario al construir URLs
<a name="ba-endpoints-build-urls"></a>

En este tema se enumeran URLs las rutas raíz de los puntos finales. Cada aplicación web que aparece a continuación define una **ruta raíz**, compartida por todos los puntos de conexión. **Luego, cada punto de conexión agrega su propia ruta dedicada**. La URL resultante que se utilizará es el resultado de la concatenación de las rutas. Por ejemplo, si consideramos el primer punto de conexión de la aplicación Gapwalk, tenemos:
+ `/gapwalk-application` para la ruta raíz de la aplicación web.
+ `/scripts` para la ruta de punto de conexión dedicada.

La URL resultante que se utilizará será `http://server:port/gapwalk-application/scripts`

**server**  
apunta al nombre del servidor (el que aloja la aplicación web en cuestión).

**port**  
el puerto expuesto por el servidor.

# Puntos finales para la aplicación Gapwalk en Blu Age AWS
<a name="ba-endpoints-gapwalk"></a>

En este tema, obtenga más información sobre los puntos de conexión de la aplicación web Gapwalk. Utilizan la ruta raíz `/gapwalk-application`.

**Topics**
+ [Terminales relacionados con trabajos por lotes (modernizados JCLs y similares)](#ba-endpoints-gapwalk-batch)
+ [Métricas para puntos de conexión](#ba-endpoints-gapwalk-metrics)
+ [Otros puntos de conexión](#ba-endpoints-gapwalk-other)
+ [Puntos de conexión relacionados con las colas de trabajos](#ba-endpoints-gapwalk-jobq)

## Terminales relacionados con trabajos por lotes (modernizados JCLs y similares)
<a name="ba-endpoints-gapwalk-batch"></a>

Los trabajos por lotes se pueden ejecutar de forma sincrónica o asincrónica (consulte los detalles a continuación). Los trabajos por lotes se ejecutan mediante scripts groovy que son el resultado de la modernización de los scripts heredados (JCL).

**Topics**
+ [Enumere los scripts implementados](#ba-list-deployed-scripts)
+ [Lanzar un script de forma sincrónica](#ba-launch-script-synchronously)
+ [Lanzar un script de forma asincrónica](#ba-launch-script-asynchronously)
+ [Listado de scripts activados](#ba-launch-script-triggered)
+ [Recuperar los detalles de la ejecución del trabajo](#ba-retrieve-job-execution-details)
+ [Lista los scripts lanzados de forma asincrónica que se pueden eliminar](#ba-list-async-scripts)
+ [Lista los scripts lanzados de forma sincrónica que se pueden eliminar](#ba-list-sync-scripts)
+ [Eliminar una ejecución de trabajo determinada](#ba-kill-job-execution)
+ [Listado de los puntos de comprobación existentes para la reiniciabilidad](#ba-list-existing-checkpoints)
+ [Reiniciar un trabajo (de forma sincrónica)](#ba-restart-job-sync)
+ [Reiniciar un trabajo (de forma asincrónica)](#ba-restart-job-async)
+ [Establecer el límite de subprocesos para la ejecución de trabajos asincrónica](#ba-set-thread-limit)

### Enumere los scripts implementados
<a name="ba-list-deployed-scripts"></a>
+ Método compatible: GET

  Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/scripts`
+ Argumentos: ninguno
+ Este punto de conexión devuelve la lista de scripts groovy desplegados en el servidor, en forma de cadena. Este punto de conexión está diseñado principalmente para ser utilizado desde un navegador web, ya que la cadena resultante es una página HTML, con enlaces activos (un enlace por script que se pueda iniciar; consulte el ejemplo siguiente).

Respuesta de ejemplo:

```
<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**  
Los enlaces representan la URL que se utilizará para lanzar cada script de la lista de forma **sincrónica.**
+ Método compatible: GET/POST

  Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/triggerscripts`
+ Argumentos: ninguno
+ Este punto de conexión devuelve la lista de scripts groovy desplegados en el servidor, en forma de cadena. Este punto de conexión está diseñado principalmente para ser utilizado desde un navegador web, ya que la cadena resultante es una página HTML, con enlaces activos (un enlace por script que se pueda iniciar; consulte el ejemplo siguiente).

  **A diferencia de la respuesta anterior del punto de conexión, los enlaces representan la URL que se debe utilizar para lanzar cada script de la lista de forma asincrónica.**  
![\[Ejemplo de scripts de listado (vista de navegador)\]](http://docs.aws.amazon.com/es_es/m2/latest/userguide/images/trigger_scripts.png)

### Lanzar un script de forma sincrónica
<a name="ba-launch-script-synchronously"></a>

Este punto de conexión tiene dos variantes con rutas dedicadas para el uso de GET y POST (ver más abajo).
+ Método compatible: GET

  Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/script/{scriptId:.+}`
+ Método compatible: POST

  Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/post/script/{scriptId:.+}`
+ Argumentos:
  + identificador del script para iniciar la **validación de entrada**: el ID del script no debe estar en blanco, no puede superar los 255 caracteres y debe coincidir con el patrón: `^[a-zA-Z0-9._-]+$`
  + opcionalmente: parámetros para pasarlos al script, utilizando los parámetros de solicitud (vistos como un `Map<String,String>`). Los parámetros dados se añadirán automáticamente a los [enlaces](https://docs.groovy-lang.org/latest/html/api/groovy/lang/Binding.html) del script groovy invocado. **Validación de entrada**: el mapa de parámetros no puede superar las 50 entradas.
+ La llamada ejecuta el script (identificado mediante ScriptID) con parámetros opcionales y espera a que se complete antes de devolver un archivo con alguno de los siguientes parámetros: *ResponseEntityString* 
  + HTTP 200: «Listo». o mensaje de éxito JSON sobre una ejecución exitosa
  + HTTP 200: mensaje de error de JSON con detalles sobre el error de ejecución. Información adicional disponible en los registros del servidor.
**nota**  
Ahora, Runtime permite devolver el código de estado HTTP 500 en caso de ejecuciones de tareas fallidas. Consulte [las propiedades disponibles de la aplicación principal](https://docs.aws.amazon.com/m2/latest/userguide/ba-runtime-key-value.html#ba-runtime-key-value-main) para configurar este código de respuesta.
  + **Validación de entrada**: el identificador o los parámetros del script no válidos devolverán una solicitud incorrecta de HTTP 400 con detalles del error de validación.

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

    Al observar los registros del servidor, podemos darnos cuenta de que se trata de un problema de implementación (el programa esperado no se ha implementado correctamente, por lo que no se puede encontrar, lo que provoca un error en la ejecución del trabajo):  
![\[Ejemplo de error de ejecución de un script\]](http://docs.aws.amazon.com/es_es/m2/latest/userguide/images/script_exec_error_logs.png)

**nota**  
Las llamadas sincrónicas deben reservarse para tareas de corta duración. Los trabajos que se ejecutan durante mucho tiempo deberían lanzarse más bien de forma asincrónica (consulte el punto de conexión específico a continuación).

### Lanzar un script de forma asincrónica
<a name="ba-launch-script-asynchronously"></a>
+ Métodos compatibles: GET/POST

  Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/triggerscript/{scriptId:.+}`
+ Argumentos:
  + identificador del script para iniciar la **validación de entrada**: el ID del script no debe estar en blanco, no puede superar los 255 caracteres y debe coincidir con el patrón: `^[a-zA-Z0-9._-]+$`
  + opcionalmente: parámetros para pasarlos al script, utilizando los parámetros de solicitud (vistos como un `Map<String,String>`). Los parámetros dados se añadirán automáticamente a los [enlaces](https://docs.groovy-lang.org/latest/html/api/groovy/lang/Binding.html) del script groovy invocado. **Validación de entrada**: el mapa de parámetros no puede superar las 50 entradas.
+ A diferencia del modo sincrónico anterior, el punto de conexión no espera a que finalice la ejecución del trabajo para enviar una respuesta. La ejecución de la tarea se inicia al mismo tiempo, si se encuentra un subproceso disponible para hacerlo, y se envía inmediatamente una respuesta al programa que hace la llamada, con el identificador de ejecución de la tarea, un identificador único que representa la ejecución de la tarea, que se puede utilizar para consultar el estado de la ejecución de la tarea o forzar la finalización de una ejecución de tareas que se supone que no funciona correctamente. El formato de la respuesta es:

  ```
  Triggered script <script identifier> [unique job execution id] @ <date and time>
  ```
+ Dado que la ejecución asincrónica del trabajo se basa en un número fijo y limitado de subprocesos, es posible que la ejecución del trabajo no se inicie si no se encuentra ningún subproceso disponible. En ese caso, el mensaje devuelto se ve del siguiente modo:

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

  Consulte el siguiente punto de conexión `settriggerthreadlimit` para obtener información sobre cómo aumentar el límite de subprocesos.

Respuesta de ejemplo:

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

El identificador único de ejecución de tareas permite recuperar rápidamente las entradas de registro relacionadas en los registros del servidor, si es necesario. También lo utilizan varios otros puntos de conexión que se detallan a continuación.

### Listado de scripts activados
<a name="ba-launch-script-triggered"></a>
+ Métodos compatibles: GET/POST

  Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Rutas: `/triggeredscripts/{status:.+}`, `/triggeredscripts/{status:.+}/{namefilter}`
+ Argumentos:
  + Estado (obligatorio): el estado de los scripts activados para su recuperación. **Validación de entrada**: el estado no debe estar en blanco ni puede superar los 50 caracteres. Los valores posibles son los siguientes:
    + `all`: muestra todos los detalles de la ejecución de los trabajos, independientemente de si los trabajos siguen ejecutándose o no.
    + `running`: muestra solo los detalles de los trabajos que se están ejecutando actualmente.
    + `done`: muestra solo los detalles de los trabajos cuya ejecución ha finalizado. 
    + `killed`: solo muestra los detalles de los trabajos cuya ejecución se ha interrumpido forzosamente mediante el punto final específico (ver más abajo). 
    + `triggered`: muestra solo los detalles de los trabajos que se han activado pero que aún no se han lanzado.
    + `failed`: muestra solo los detalles de los trabajos cuya ejecución se ha marcado como fallida.
    + \$1namefilter (opcional) \$1: recupera solo las ejecuciones del identificador de script dado. **Validación de entrada**: no puede superar los 255 caracteres
+ Devuelve una colección de detalles de las ejecuciones de los trabajos en formato JSON. Para obtener más información, consulte [Estructura de mensajes de detalles de ejecución del trabajo](ba-endpoints-apx.md#job-execution-details).

Respuesta de ejemplo:

```
[
    {
      "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"
    }
  ]
```

### Recuperar los detalles de la ejecución del trabajo
<a name="ba-retrieve-job-execution-details"></a>
+ Método compatible: GET

  Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/getjobexecutioninfo/{jobexecutionid:.+}`
+ Argumentos:
  + jobexecutionid (obligatorio): el identificador único de ejecución de tareas para recuperar los detalles de ejecución de tareas correspondientes. **Validación de entrada**: el identificador de ejecución del trabajo no debe estar en blanco ni superar los 255 caracteres
+ Devuelve una cadena JSON que representa los detalles de la ejecución de una sola tarea (consulte [Estructura de mensajes de detalles de ejecución del trabajo](ba-endpoints-apx.md#job-execution-details)) o una respuesta vacía si no se pudieron encontrar detalles de ejecución de la tarea para el identificador dado.

### Lista los scripts lanzados de forma asincrónica que se pueden eliminar
<a name="ba-list-async-scripts"></a>
+ Método compatible: GET

  Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/killablescripts`
+ Devuelve una colección de identificadores de ejecución de tareas que se han lanzado de forma asincrónica y que aún se están ejecutando y que se pueden cerrar por la fuerza (consulte el punto de conexión `/kill` a continuación).

### Lista los scripts lanzados de forma sincrónica que se pueden eliminar
<a name="ba-list-sync-scripts"></a>
+ Método compatible: GET

  Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/killablesyncscripts`
+ Devuelve una colección de identificadores de ejecución de tareas que se han lanzado de forma sincrónica y que aún se están ejecutando y que se pueden cerrar por la fuerza (consulte el punto de conexión `/kill` a continuación).

### Eliminar una ejecución de trabajo determinada
<a name="ba-kill-job-execution"></a>
+ Método compatible: POST

  Requiere autenticación y una de las siguientes funciones: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN
+ Ruta: `/kill/{identifier:.+}`
+ Argumento: identificador de ejecución de la tarea (obligatorio): el identificador único de ejecución de la tarea que apunta a la ejecución de la tarea cuya finalización se va a forzar. **Validación de entrada**: el identificador no debe estar en blanco ni puede superar los 255 caracteres
+ Devuelve un mensaje textual en el que se detalla el resultado del intento de forzar la finalización de la ejecución de la tarea. El mensaje contendrá el identificador del script, el identificador único de la ejecución de la tarea, y la fecha y hora en que se produjo la finalización de la ejecución de la tarea. Si no se encuentra ninguna ejecución de trabajo en ejecución para el identificador indicado, se devolverá un mensaje de error en su lugar. 

**aviso**  
 El motor de ejecución hace todo lo posible para acabar de forma adecuada con la ejecución de la tarea objetivo. Por lo tanto, la respuesta del punto final /kill puede tardar un poco en llegar a la persona que llama, ya que el tiempo de ejecución de AWS Blu Age intentará minimizar el impacto empresarial de anular el trabajo.
Eliminar por la fuerza la ejecución de un trabajo no debe hacerse a la ligera, ya que puede tener consecuencias comerciales directas, incluida la posible pérdida o corrupción de datos. Debe reservarse para los casos en los que la ejecución de una determinada tarea no se haya realizado correctamente y los medios de corrección de datos estén claramente identificados.
Destruir un trabajo debería dar lugar a nuevas investigaciones (análisis post mortem) para averiguar qué fue lo que salió mal y tomar las medidas correctivas adecuadas.
En cualquier caso, el intento de interrumpir un trabajo en ejecución se anotará en los registros del servidor con mensajes de nivel de advertencia.

### Listado de los puntos de comprobación existentes para la reiniciabilidad
<a name="ba-list-existing-checkpoints"></a>

La reiniciabilidad de los trabajos se basa en la capacidad de los scripts de registrar puntos de comprobación en el `CheckpointRegistry` para seguir el progreso de la ejecución del trabajo. Si la ejecución de una tarea no finaliza correctamente y se han registrado los puntos de comprobación de reinicio, basta con reiniciar la ejecución de la tarea desde el último punto de comprobación registrado conocido (sin tener que ejecutar los pasos previos anteriores al punto de comprobación).
+ Método compatible: POST

  Requiere autenticación y una de las siguientes funciones: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN
+ Ruta: `/restarts/{scriptId}/{jobId}`
+ Argumentos:
  + scriptId (opcional: cadena): el script que se reinicia.
  + jobId (opcional: cadena): el identificador único de una ejecución de trabajo.
+ Devuelve una lista con formato JSON de puntos de reinicio existentes, que se pueden utilizar para reiniciar un trabajo cuya ejecución no ha finalizado correctamente, o para desencadenar un reinicio retrasado al omitir los pasos ejecutados anteriormente. Si ningún script ha registrado ningún punto de comprobación, el contenido de la página será No registered checkpoints.

### Reiniciar un trabajo (de forma sincrónica)
<a name="ba-restart-job-sync"></a>
+ Método compatible: POST

  Requiere autenticación y una de las siguientes funciones: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN
+ Ruta: `/restart/{hashcode}/{scriptId}/{skipflag}`
+ Argumentos: 
  + hashcode (entero: obligatorio): reinicia la ejecución más reciente de un trabajo, utilizando el código hash proporcionado como valor de punto de comprobación (consulte el punto de conexión `/restarts` anterior para obtener más información sobre cómo recuperar un valor de punto de comprobación válido).
  + scriptId (opcional: cadena): el script que se reinicia.
  + skipflag (opcional, booleano): omite la ejecución del paso (punto de comprobación) seleccionado y reinicia desde el paso inmediatamente posterior (de haberlo).
+ Devoluciones: consulte la descripción de devolución de `/script` anterior. 

### Reiniciar un trabajo (de forma asincrónica)
<a name="ba-restart-job-async"></a>
+ Método compatible: GET

  Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/triggerrestart/{hashcode}/{scriptId}/{skipflag}`
+ Argumentos: 
  + hashcode (entero: obligatorio): reinicia la ejecución más reciente de un trabajo, utilizando el código hash proporcionado como valor de punto de comprobación (consulte el punto de conexión `/restarts` anterior para obtener más información sobre cómo recuperar un valor de punto de comprobación válido).
  + scriptId (opcional: cadena): el script que se reinicia.
  + skipflag (opcional, booleano): omite la ejecución del paso (punto de comprobación) seleccionado y reinicia desde el paso inmediatamente posterior (de haberlo).
+ Devoluciones: consulte la descripción de devolución de `/triggerscript` anterior. 

### Establecer el límite de subprocesos para la ejecución de trabajos asincrónica
<a name="ba-set-thread-limit"></a>

La ejecución asincrónica del trabajo se basa en un grupo dedicado de subprocesos en la JVM. Ese grupo tiene un límite fijo en cuanto al número de subprocesos disponibles. El usuario tiene la capacidad de ajustar el límite de acuerdo con las capacidades del host (cantidad de CPUs memoria disponible, etc.). De forma predeterminada, el límite de subprocesos está establecido en 5 subprocesos.
+ Método compatible: POST

  Requiere autenticación y una de las siguientes funciones: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN
+ Ruta: `/settriggerthreadlimit/{threadlimit:.+}`
+ Argumento (entero): el nuevo límite de subprocesos que se aplicará. **Validación de entrada**: debe estar entre 1 y 1000, ambos inclusive.
+ Devuelve un mensaje (`String`) con el nuevo límite de subprocesos y el anterior, o un mensaje de error si el valor límite de subprocesos proporcionado no es válido (no es un entero estrictamente positivo).

Respuesta de ejemplo:

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

#### Contar las ejecuciones de trabajos desencadenados en curso
<a name="ba-count-current-jobs"></a>
+ Método compatible: GET

  Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/countrunningtriggeredscripts`
+ Devuelve un mensaje que indica el número de trabajos en ejecución lanzados de forma asincrónica y el límite de subprocesos (es decir, el número máximo de trabajos activados que se pueden ejecutar simultáneamente).

Respuesta de ejemplo:

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

**nota**  
Se puede utilizar para comprobar, antes de lanzar un trabajo, si no se ha alcanzado el límite de subprocesos (lo que impediría lanzar el trabajo). 

#### Purgar la información sobre las ejecuciones de trabajos
<a name="ba-purge-job-info"></a>

La información sobre las ejecuciones de los trabajos permanece en la memoria del servidor mientras el servidor esté activo. Puede ser conveniente purgar la información más antigua de la memoria, pues ya no es relevante; este es el propósito de este punto de conexión.
+ Método compatible: POST

  Requiere autenticación y una de las siguientes funciones: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN
+ Ruta: `/purgejobinformation/{age:.+}`
+ Argumentos: un valor entero estrictamente positivo que representa la antigüedad en horas de la información que se va a purgar. **Validación de entrada**: debe estar entre 0 y 365, ambos inclusive.
+ Devuelve un mensaje con la siguiente información:
  + Nombre del archivo de purga en el que se almacena la información de ejecución de los trabajos purgados con fines de archivado.
  + Número de información de ejecución de tareas purgadas.
  + Número de información restante sobre la ejecución del trabajo en la nota

## Métricas para puntos de conexión
<a name="ba-endpoints-gapwalk-metrics"></a>

**Validación de entrada**: todos los puntos finales de las métricas validan los parámetros de la solicitud y devuelven el HTTP 400 Bad Request si los valores no son válidos.

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

Este punto de conexión devuelve las métricas disponibles relacionadas con la JVM.
+ Método compatible: GET

  Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/metrics/jvm`
+ Argumentos: ninguno
+ Devuelve un mensaje con la siguiente información:
  + threadActiveCount: Número de hilos activos.
  + jvmMemoryUsed: Memoria utilizada activamente por la máquina virtual Java.
  + jvmMemoryMax: Memoria máxima permitida para la máquina virtual Java.
  + jvmMemoryFree: Memoria disponible que la máquina virtual Java no está utilizando actualmente.

### Sesión
<a name="ba-metrics-session"></a>

Este punto de conexión devuelve las métricas relacionadas con las sesiones HTTP abiertas en ese momento.
+ Método compatible: GET

  Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/metrics/session`
+ Argumentos: ninguno
+ Devuelve un mensaje con la siguiente información:
  + sessionCount: número de sesiones de usuario activas que actualmente mantiene el servidor.

### Lote
<a name="ba-metrics-batch"></a>
+ Método compatible: GET

  Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/metrics/batch`
+ Argumentos:
  + startTimestamp (opcional, número): marca de tiempo inicial para el filtrado de datos. **Validación de entrada**: debe ser un valor numérico válido.
  + startTimestamp (opcional, número): marca de tiempo final para el filtrado de datos. **Validación de entrada**: debe ser un valor numérico válido.
  + page (opcional, número): número de página para la paginación. **Validación de entrada**: debe ser un número entero positivo.
  + pageSize (opcional, número): número de elementos por página en la paginación. **Validación de entrada**: debe ser un entero estrictamente positivo, máximo 500.
  + **Validación de entrada**: el mapa de parámetros no puede superar las 20 entradas
+ Devuelve un mensaje con la siguiente información:
  + content: lista de métricas de ejecución por lotes.
  + pageNumber: número de página actual en la paginación.
  + pagesize: número de elementos mostrados por página.
  + totalPages: número total de páginas disponibles.
  + numberOfElements: Recuento de elementos de la página actual.
  + last: marca booleana para la última página.
  + first: marca booleana para la primera página.

### Transacción
<a name="ba-metrics-transaction"></a>
+ Método compatible: GET

  Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/metrics/transaction`
+ Argumentos:
  + startTimestamp (opcional, número): marca de tiempo inicial para el filtrado de datos. **Validación de entrada**: debe ser un valor numérico válido.
  + startTimestamp (opcional, número): marca de tiempo final para el filtrado de datos. **Validación de entrada**: debe ser un valor numérico válido.
  + page (opcional, número): número de página para la paginación. **Validación de entrada**: debe ser un número entero positivo.
  + pageSize (opcional, número): número de elementos por página en la paginación. **Validación de entrada**: debe ser un entero estrictamente positivo, máximo 500.
  + **Validación de entrada**: el mapa de parámetros no puede superar las 20 entradas
+ Devuelve un mensaje con la siguiente información:
  + content: lista de métricas de ejecución de transacciones.
  + pageNumber: número de página actual en la paginación.
  + pagesize: número de elementos mostrados por página.
  + totalPages: número total de páginas disponibles.
  + numberOfElements: Recuento de elementos de la página actual.
  + last: marca booleana para la última página.
  + first: marca booleana para la primera página.

## Otros puntos de conexión
<a name="ba-endpoints-gapwalk-other"></a>

Utilice estos puntos de conexión para listar los programas o servicios registrados, conocer el estado y administrar las transacciones del JICS.

**Topics**
+ [Visualización de los programas registrados](#ba-list-registered-programs)
+ [Listado de servicios registrados](#ba-list-registered-services)
+ [Estado](#ba-health-status)
+ [Listado de las transacciones JICS disponibles](#ba-list-jics-transactions)
+ [Lanzar una transacción de JICS](#ba-launch-jics-transaction)
+ [Lanzar una transacción de JICS (alternativa)](#ba-launch-jics-transaction-alt)
+ [Enumeración de las sesiones activas](#ba-active-session-list)

### Visualización de los programas registrados
<a name="ba-list-registered-programs"></a>
+ Método compatible: GET

  Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/programs`
+ Devuelve la lista de programas registrados, en forma de página html. Cada programa se designa mediante su identificador de programa principal. Se devuelven a la lista tanto los programas antiguos modernizados como los programas de utilidades (IDCAMS, IEBGENER, etc.). Tenga en cuenta que los programas de utilidades disponibles dependerán de las aplicaciones web de utilidades que se hayan implementado en su servidor Tomcat. Por ejemplo, es posible que los programas de soporte de z/OS servicios públicos no estén disponibles para los activos modernizados de iSeries, ya que no son relevantes. 

### Listado de servicios registrados
<a name="ba-list-registered-services"></a>
+ Método compatible: GET

  Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/services`
+ Devuelve la lista de servicios de tiempo de ejecución registrados, en forma de página html. El motor de ejecución AWS Blu Age ofrece estos servicios como utilidades, que se pueden utilizar, por ejemplo, en guiones geniales. Los servicios de carga de Blusam (para crear conjuntos de datos de Blusam a partir de conjuntos de datos antiguos) entran en esa categoría.

Respuesta de ejemplo:

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

### Estado
<a name="ba-health-status"></a>
+ Método compatible: GET

  Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/`
+ Devuelve un mensaje sencillo que indica que la aplicación Gapwalk está activa y en ejecución (`Jics application is running.`)

### Listado de las transacciones JICS disponibles
<a name="ba-list-jics-transactions"></a>
+ Método compatible: GET

  Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/transactions`
+ Devuelve una página html con una lista de todas las transacciones JICS disponibles. Esto solo tiene sentido para entornos con elementos JICS (modernización de elementos CICS heredados).

Respuesta de ejemplo:

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

### Lanzar una transacción de JICS
<a name="ba-launch-jics-transaction"></a>
+ Método compatible: POST

  Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/jicstransrunner/{jtrans:.+}`
+ Argumentos:
  + Identificador de transacción JICS (cadena, obligatorio): identificador de la transacción JICS que se va a lanzar (8 caracteres como máximo)
  + obligatorio: datos de entrada adicionales para pasarlos a la transacción, en forma de Map<String, Object>. El contenido de este mapa se utilizará para alimentar la [COMMAREA](https://www.ibm.com/docs/en/cics-ts/5.4?topic=programs-commarea) que consumirá la transacción del JICS. El mapa puede estar vacío si no se requieren datos para ejecutar la transacción.
  + opcional: entradas de encabezados HTTP para personalizar el entorno de ejecución de la transacción en cuestión. Se admiten las siguientes claves de encabezado:
    + `jics-channel`: el nombre del JICS CHANNEL que utilizará el programa que se lanzará al lanzar esta transacción. 
    + `jics-container`: el nombre del JICS CONTAINER que se utilizará para el lanzamiento de esta transacción de JICS.
    + `jics-startcode`: el STARTCODE (cadena, de hasta 2 caracteres) que se utilizará al iniciar la transacción con el JICS. Consulte [STARTCODE](https://www.ibm.com/docs/en/cics-ts/5.5?topic=summary-assign) para ver los valores posibles (desplácese hacia abajo en la página).
    + `jicxa-xid`: el XID (estructura XID del identificador de transacción X/Open) de una “transacción global” ([XA](https://en.wikipedia.org/wiki/X/Open_XA)), iniciada por el programa que hace la llamada, en la que participará el lanzamiento actual de la transacción del JICS. **Validación de entrada**: el XID no debe estar en blanco y no puede superar los 255 caracteres.
+ Devuelve una serialización de JSON `com.netfective.bluage.gapwalk.rt.shared.web.TransactionResultBean`, que representa la salida del inicio de la transacción del JICS.
+ **Validación de entrada**: los valores XID no válidos (en blanco o que superen los 255 caracteres) devolverán una solicitud incorrecta de HTTP 400 con detalles del error de validación.

Para obtener más información sobre los detalles de la estructura, consulte [Estructura de resultados del lanzamiento de la transacción](ba-endpoints-apx.md#transaction-outcome).

### Lanzar una transacción de JICS (alternativa)
<a name="ba-launch-jics-transaction-alt"></a>
+ métodos compatibles: POST

  Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ ruta: `/jicstransaction/{jtrans:.+}`
+ Argumentos:  
**identificador de transacción JICS (cadena, obligatorio)**  
identificador de la transacción JICS que se va a lanzar (8 caracteres como máximo)  
**obligatorio: datos de entrada adicionales para pasarlos a la transacción, en forma de Map<String, Object>.**  
El contenido de este mapa se utilizará para alimentar la [COMMAREA](https://www.ibm.com/docs/en/cics-ts/5.4?topic=programs-commarea) que consumirá la transacción del JICS. El mapa puede estar vacío si no se requieren datos para ejecutar la transacción.  
**opcional: entradas de encabezados HTTP para personalizar el entorno de ejecución de la transacción en cuestión.**  
Se admiten las siguientes claves de encabezado:  
  + `jics-channel`: el nombre del JICS CHANNEL que utilizará el programa que se lanzará al lanzar esta transacción. 
  + `jics-container`: el nombre del JICS CONTAINER que se utilizará para el lanzamiento de esta transacción de JICS.
  + `jics-startcode`: el STARTCODE (cadena, de hasta 2 caracteres) que se utilizará al iniciar la transacción con el JICS. Para ver los valores posibles, consulte [STARTCODE](https://www.ibm.com/docs/en/cics-ts/5.5?topic=summary-assign) (navegue hacia abajo en la página).
  + `jicxa-xid`: el XID (estructura XID del identificador de transacción X/Open) de una “transacción global” ([XA](https://en.wikipedia.org/wiki/X/Open_XA)), iniciada por el programa que hace la llamada, en la que participará el lanzamiento actual de la transacción del JICS. **Validación de entrada**: el XID no debe estar en blanco ni puede superar los 255 caracteres.
+ Devuelve una serialización de JSON `com.netfective.bluage.gapwalk.rt.shared.web.RecordHolderBean`, que representa la salida del inicio de la transacción del JICS. Los detalles de la estructura se pueden consultar en [Estructura de resultados del registro de lanzamiento de la transacción](ba-endpoints-apx.md#transaction-record-outcome). 
+ **Validación de entrada**: los valores XID no válidos (en blanco o que superen los 255 caracteres) devolverán una solicitud incorrecta de HTTP 400 con detalles del error de validación.

### Enumeración de las sesiones activas
<a name="ba-active-session-list"></a>
+ métodos compatibles: GET

  Requiere autenticación y una de las siguientes funciones: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN
+ ruta: `/activesessionlist`
+ Argumentos: ninguno
+ Validación de entrada: el mapa de parámetros no puede superar las **20 entradas**
+ Devuelve una lista de `com.netfective.bluage.gapwalk.application.web.sessiontracker.SessionTrackerObject` en la serialización de JSON, que representa la lista de sesiones de usuario activas. Si el seguimiento de sesiones está deshabilitado, se devolverá una lista vacía.

## Puntos de conexión relacionados con las colas de trabajos
<a name="ba-endpoints-gapwalk-jobq"></a>

 Las colas de trabajos son el soporte de la Era AWS Azul para el mecanismo de presentación de AS4 00 trabajos. Las colas de trabajos se utilizan en AS4 00 para ejecutar trabajos en grupos de subprocesos específicos. Una cola de trabajos se define mediante un nombre y un número máximo de subprocesos que corresponde al número máximo de programas que se pueden ejecutar simultáneamente en esa cola. Si se envían más trabajos a la cola que el número máximo de subprocesos, los trabajos esperarán a que haya un subproceso disponible.

Para obtener una lista exhaustiva del estado de un trabajo en cola, consulte [Los posibles estados de un trabajo en una cola son:](ba-endpoints-apx.md#jobs-status).

Las operaciones en las colas de trabajos se gestionan a través de los siguientes puntos de conexión específicos. Puede invocar estas operaciones desde la URL de la aplicación Gapwalk con la siguiente URL raíz: `http://server:port/gapwalk-application/jobqueue`.

**Topics**
+ [Listado de las colas disponibles](#ba-list-available-queues)
+ [Iniciar o reiniciar una cola de trabajo](#ba-start-restart-queue)
+ [Enviar un trabajo para su lanzamiento](#ba-submit-job-launch)
+ [Enumeración de todos los trabajos enviados](#ba-list-scheduled-jobs)
+ [Liberación de todos los trabajos que están “en espera”](#ba-release-held-jobs)
+ [Liberación de todos los trabajos que estén “en espera” de un nombre de trabajo determinado](#ba-release-held-jobs-name)
+ [Liberación de un trabajo determinado de un número de trabajo](#ba-release-job-number)
+ [Envío de un trabajo en una programación repetida](#ba-submit-job-on-repeating-schedule)
+ [Enumeración de todos los trabajos repetitivos enviados](#ba-list-all-submitted-repeating-jobs)
+ [Cancelación de la programación de un trabajo de repetición](#ba-cancel-scheduling-of-repeating-job)

### Listado de las colas disponibles
<a name="ba-list-available-queues"></a>
+ Método compatible: GET

  Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `list-queues`
+ Devuelve la lista de las colas disponibles junto con su estado, como una lista JSON de valores clave.

Respuesta de ejemplo:

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

Los posibles estados de una cola de trabajos son:

**STAND\$1BY**  
la cola de trabajos está esperando a que se inicie.

**STARTED**  
la cola de trabajos está activa y funcionando.

**UNKNOWN**  
no se puede determinar el estado de la cola de trabajos.

### Iniciar o reiniciar una cola de trabajo
<a name="ba-start-restart-queue"></a>
+ Método compatible: POST

  Requiere autenticación y una de las siguientes funciones: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN
+ Ruta: `/restart/{name}`
+ Argumento: el nombre de la cola que se va a iniciar o reiniciar, en forma de cadena: obligatorio. **Validación de entrada**: el nombre de la cola no debe estar en blanco ni superar los 255 caracteres.
+ El punto final no devuelve nada, sino que se basa en el estado http para indicar el resultado de la start/restart operación:  
**HTTP 200**  
la start/restart operación ha ido bien: la cola de trabajos indicada ya está INICIADA.  
**HTTP 404**  
la cola de trabajos no existe.  
**HTTP 503**  
se produjo una excepción durante el start/restart intento (se deben inspeccionar los registros del servidor para averiguar qué ha fallado).

### Enviar un trabajo para su lanzamiento
<a name="ba-submit-job-launch"></a>
+ Método compatible: POST

  Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/submit`
+ Argumento: obligatorio como cuerpo de la solicitud, una serialización JSON de un objeto `com.netfective.bluage.gapwalk.rt.jobqueue.SubmitJobMessage`. Para obtener más información, consulte [Entrada de envío y de programación del trabajo](ba-endpoints-apx.md#submit-job).
+ Devuelve: un JSON que contiene el `SubmitJobMessage` original y un registro que indica si el trabajo se ha enviado o no.

### Enumeración de todos los trabajos enviados
<a name="ba-list-scheduled-jobs"></a>
+ Método compatible: GET

  Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/list-jobs?status={status}&size={size}&page={page}&sort={sort}`
+ Argumentos:
  + page: número de página que se recuperará (predeterminado = 1)
  + size: tamaño de la página (predeterminado = 50, máximo = 300)
  + sort: el orden de los trabajos. (predeterminado = executionId). En la actualidad, executionId es el único valor admitido
  + status: (opcional) si está presente, filtrará el estado.
+ Devuelve una lista de todos los trabajos programados, como cadena JSON. Para ver un ejemplo de respuesta, consulte [Lista de respuestas a los trabajos programados](ba-endpoints-apx.md#list-scheduled-jobs).

### Liberación de todos los trabajos que están “en espera”
<a name="ba-release-held-jobs"></a>
+ Método compatible: POST

  Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/release-all`
+ Devuelve un mensaje que indica el resultado de la operación de intento de liberación. Aquí hay dos posibles casos:
  + HTTP 200 y el mensaje "All job released with success\$1" si todos los trabajos se han publicado correctamente.
  + HTTP 503 y un mensaje "Jobs not released. Se ha producido un error desconocido. See log for more details" si algo ha salido mal en el intento de publicación.

### Liberación de todos los trabajos que estén “en espera” de un nombre de trabajo determinado
<a name="ba-release-held-jobs-name"></a>

Para un nombre de trabajo determinado, se pueden enviar varios trabajos con diferentes números de trabajo (la unicidad de una ejecución de trabajo se concede por un par <job name, job number>). El punto de conexión intentará publicar todos los trabajos presentados con el nombre indicado, que estén “en espera”.
+ Método compatible: POST

  Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/release/{name}`
+ Argumentos: el nombre del trabajo que se va a buscar, en forma de cadena. Obligatorio.
+ Devuelve un mensaje que indica el resultado de la operación de intento de liberación. Aquí hay dos posibles casos:
  + HTTP 200 y el mensaje "Jobs in group <nombre> (<número de trabajos publicados>) released with success\$1" si los trabajos se han publicado correctamente.
  + HTTP 503 y un mensaje "Jobs in group <nombre> not released. An unknown error occured. See log for more details" si algo ha salido mal en el intento de publicación.

### Liberación de un trabajo determinado de un número de trabajo
<a name="ba-release-job-number"></a>

El punto de conexión intentará liberar la publicación de trabajo única que está “en espera” para el par en cuestión <job name, job number>.
+ Método compatible: POST

  Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/release/{name}/{number}`
+ Argumentos:  
**name**  
el nombre del trabajo que se va a buscar, en forma de cadena. Obligatorio.  
**number**  
el número de trabajo que se va a buscar, como un entero. Obligatorio.  
**returns**  
 un mensaje que indica la salida de la operación de intento de liberación. Aquí hay dos posibles casos:  
  + HTTP 200 y el mensaje ""Job <nombre/número> released with success\$1" si el trabajo se ha publicado correctamente.
  + HTTP 503 y un mensaje "Job <name/number>>not released. An unknown error occured. See log for more details" si algo ha salido mal en el intento de publicación.

### Envío de un trabajo en una programación repetida
<a name="ba-submit-job-on-repeating-schedule"></a>

Programe un trabajo que se ejecutará con una programación repetida.
+ Método compatible: POST

  Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/schedule`
+ Argumento: el cuerpo de la solicitud debe contener una serialización JSON de un objeto `com.netfective.bluage.gapwalk.rt.jobqueue.SubmitJobMessage`. 

### Enumeración de todos los trabajos repetitivos enviados
<a name="ba-list-all-submitted-repeating-jobs"></a>
+ Método compatible: GET

  Requiere autenticación y una de las siguientes funciones: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN
+ Ruta: `/schedule/list?status={status}&size={size}&page={page}&sort={sort}`
+ Argumentos:

  1. page: número de página que se recuperará (predeterminado = 1)

  1. size: tamaño de la página (predeterminado = 50, máximo = 300)

  1. sort: el orden de los trabajos. (predeterminado = id). id es el único valor admitido por el momento.

  1. status: (opcional) si está presente, filtrará el estado. Los valores posibles son los que se mencionan en la sección 1.

  1. status: (opcional) si está presente, filtrará el estado. Los valores posibles son los que se mencionan en la sección 1.

  1. Devuelve una lista de todos los trabajos programados, como cadena JSON.

### Cancelación de la programación de un trabajo de repetición
<a name="ba-cancel-scheduling-of-repeating-job"></a>

Elimina un trabajo que se creó según en una programación repetida. El estado de la programación del trabajo está establecido en INACTIVE.
+ Método compatible: POST

  Requiere autenticación y una de las siguientes funciones: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN
+ Ruta: `/schedule/remove/{schedule_id}`
+ Argumento: `schedule_id`, el identificador del trabajo programado que se eliminará.

# Blusampuntos finales REST de la consola de aplicaciones
<a name="ba-endpoints-bac"></a>

En esta sección, puede obtener información sobre la consola de Blusam aplicaciones, que es una API diseñada para simplificar la administración de conjuntos de datos de VSAM modernizados. Los puntos finales de la aplicación Blusam web utilizan la ruta raíz. `/bac`

**Topics**
+ [Puntos de conexión relacionados con conjuntos de datos](#ba-endpoints-bac-datasets)
+ [Puntos de conexión relacionados con conjuntos de datos en bloque](#ba-endpoints-bac-bulk)
+ [Registros](#ba-endpoints-bac-records)
+ [Máscaras](#ba-endpoints-bac-masks)
+ [Otro](#ba-endpoints-bac-other)
+ [Puntos de conexión de administración de usuarios de BAC](#ba-endpoints-bac-users)

## Puntos de conexión relacionados con conjuntos de datos
<a name="ba-endpoints-bac-datasets"></a>

Utilice los siguientes puntos de conexión para crear o administrar un conjunto de datos específico.

**Topics**
+ [Creación de un conjunto de datos](#ba-create-data-set)
+ [Carga de un archivo](#ba-upload-file)
+ [Carga de un conjunto de datos (POST)](#ba-load-data-set-post)
+ [Carga de un conjunto de datos (GET)](#ba-load-data-set-get)
+ [Puede cargar un conjunto de datos desde un bucket de Amazon S3.](#ba-load-data-set-s3)
+ [Exportar el conjunto de datos a un bucket de Amazon S3.](#ba-export-data-set-s3)
+ [Borrar un conjunto de datos](#ba-clear-data-set)
+ [Eliminar un conjunto de datos](#ba-delete-data-set)
+ [Contar los registros del conjunto de datos](#ba-count-data-set-records)

### Creación de un conjunto de datos
<a name="ba-create-data-set"></a>

Puede utilizar este punto de conexión para crear una definición de conjunto de datos.
+ Método compatible: POST
+ Requiere autenticación y el rol ROLE\$1ADMIN.
+ Ruta: `/api/services/rest/bluesamservice/createDataSet`
+ Argumentos:  
name  
(obligatorio, cadena): el nombre del conjunto de datos.   
type  
(obligatorio, cadena): el tipo de conjunto de datos. Los valores posibles son `ESDS`, `KSDS`, `RRDS`.   
recordSize  
(opcional, cadena): tamaño máximo de cada registro del conjunto de datos.   
fixedLength  
(opcional, booleano): indica si la longitud de los registros es fija.   
compression  
(opcional, booleano): indica si el conjunto de datos está comprimido.   
cacheEnable  
(opcional, booleano): indica si el almacenamiento en caché está habilitado para el conjunto de datos.   
alternativeKeys  
(opcional, lista de claves):  
  + offset (obligatorio, número)
  + length (obligatorio, número)
  + name (obligatorio, número)
+ Devuelve un archivo JSON que representa el conjunto de datos recién creado.

Solicitud de ejemplo:

```
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
}
```

Respuesta de ejemplo:

```
{
    "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
  }
```

### Carga de un archivo
<a name="ba-upload-file"></a>

Este punto de conexión permite cargar archivos al servidor. El archivo se almacena en una carpeta temporal que corresponde a cada usuario específico. Utilice este punto de conexión cada vez que necesite cargar un archivo.
+ Método compatible: POST
+ Requiere autenticación y el rol ROLE\$1ADMIN.
+ Ruta: `/api/services/rest/bluesamservice/upload`
+ Argumentos:  
archivo  
(obligatorio, datos de varias partes/formulario): el archivo que se va a cargar.
+ Devuelve un valor booleano que refleja el estado de la carga

### Carga de un conjunto de datos (POST)
<a name="ba-load-data-set-post"></a>

Después de utilizar `createDataSet` para crear la definición del conjunto de datos, puede cargar los registros asociados al archivo cargado en un conjunto de datos específico.
+ Método compatible: POST
+ Requiere autenticación y el rol ROLE\$1ADMIN.
+ Ruta: `/api/services/rest/bluesamservice/loadDataSet`
+ Argumentos:  
name  
(obligatorio, cadena): el nombre del conjunto de datos.
+ Devuelve el estado de la solicitud y del conjunto de datos cargado.

### Carga de un conjunto de datos (GET)
<a name="ba-load-data-set-get"></a>
+ Método compatible: GET
+ Requiere autenticación y el rol ROLE\$1ADMIN.
+ Ruta: `/api/services/rest/bluesamservice/loadDataSet`
+ Argumentos:  
name  
(obligatorio, cadena): el nombre del conjunto de datos.  
archivo de conjunto de datos  
(obligatorio, cadena): el nombre del archivo de conjunto de datos.
+ Devuelve el estado de la solicitud y del conjunto de datos cargado.

### Puede cargar un conjunto de datos desde un bucket de Amazon S3.
<a name="ba-load-data-set-s3"></a>

Carga un conjunto de datos mediante un archivo listcat de un bucket de Amazon S3.
+ Método compatible: GET
+ Requiere autenticación y el rol ROLE\$1ADMIN.
+ Ruta: `/api/services/rest/bluesamservice/loadDataSetFromS3`
+ Argumentos:  
listcatFileS3Location  
(obligatorio, cadena): la ubicación de Amazon S3 del archivo listcat.  
datasetFileS3Location  
(obligatorio, cadena): la ubicación de Amazon S3 del archivo de conjunto de datos.  
region  
(obligatorio, cadena): Amazon S3 Región de AWS donde se almacenan los archivos.
+ Devuelve el conjunto de datos recién creado

Solicitud de ejemplo:

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

### Exportar el conjunto de datos a un bucket de Amazon S3.
<a name="ba-export-data-set-s3"></a>

Exporta un conjunto de datos al bucket de Amazon S3 especificado.
+ Método compatible: GET
+ Requiere autenticación y el rol ROLE\$1ADMIN.
+ Ruta: `/api/services/rest/bluesamservice/exportDataSetToS3`
+ Argumentos:  
s3Location  
(obligatorio, cadena): la ubicación de Amazon S3 a la que exportar el conjunto de datos.  
datasetName   
(obligatorio, cadena): el nombre del conjunto de datos que se va a exportar.  
region  
(obligatorio, cadena): el Región de AWS del bucket de Amazon S3.  
kmsKeyId  
(opcional, cadena): el AWS KMS ID que se utilizará para cifrar el conjunto de datos exportado al bucket de Amazon S3.
+ Devuelve el conjunto de datos exportado

Solicitud de ejemplo:

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

### Borrar un conjunto de datos
<a name="ba-clear-data-set"></a>

 Borra todos los registros de un conjunto de datos.
+ Métodos compatibles: POST, GET
+ Requiere autenticación y el rol ROLE\$1ADMIN.
+ Ruta: `/api/services/rest/bluesamservice/clearDataSet`
+ Argumentos:   
nombre  
(obligatorio, cadena): el nombre del conjunto de datos que se va a borrar. 
+ Devuelve: el estado de la solicitud.

### Eliminar un conjunto de datos
<a name="ba-delete-data-set"></a>

Elimina la definición y los registros del conjunto de datos.
+ Método compatible: POST
+ Requiere autenticación y el rol ROLE\$1ADMIN.
+ Ruta: `/api/services/rest/bluesamservice/deleteDataSet`
+ Argumentos:  
nombre  
(obligatorio, cadena): el nombre del conjunto de datos que se va a eliminar.
+ Devuelve el estado de la solicitud y del conjunto de datos eliminado.

### Contar los registros del conjunto de datos
<a name="ba-count-data-set-records"></a>

Este punto de conexión devuelve el número de registros asociados a un conjunto de datos.
+ Método compatible: POST
+ Requiere autenticación y el rol ROLE\$1USER.
+ Ruta: `/api/services/rest/bluesamservice/countRecords`
+ Argumentos:  
name  
(obligatorio, cadena): el nombre del conjunto de datos.
+ Devuelve: el número de registros

## Puntos de conexión relacionados con conjuntos de datos en bloque
<a name="ba-endpoints-bac-bulk"></a>

Utilice los siguientes puntos de conexión para crear o administrar varios conjuntos de datos a la vez.

**Topics**
+ [Exportación de conjuntos de datos (GET)](#ba-export-data-sets-get)
+ [Exportación de conjuntos de datos (POST)](#ba-export-data-sets-post)
+ [Creación de varios conjuntos de datos](#ba-create-multiple-data-sets)
+ [Lista de todos los conjuntos de datos](#ba-list-all-data-sets)
+ [Lista directa de todos los conjuntos de datos](#ba-direct-list-all-data-sets)
+ [Lista directa de todos los conjuntos de datos por página](#ba-direct-list-all-data-sets-by-page)
+ [Flujo de conjunto de datos](#ba-stream-data-sets)
+ [Eliminación de todos los conjuntos de datos](#ba-delete-all-data-sets)
+ [Obtención de las definiciones de conjuntos de datos del archivo listcat](#ba-get-definitions-listcat)
+ [Obtener las definiciones de conjuntos de datos del archivo listcat cargado](#ba-get-definitions-uploaded-listcat)
+ [Obtención de un conjunto de datos](#ba-get-data-set)
+ [Carga de listcat desde el archivo JSON](#ba-load-listcat)

### Exportación de conjuntos de datos (GET)
<a name="ba-export-data-sets-get"></a>
+ Método compatible: GET
+ Requiere autenticación y el rol ROLE\$1USER.
+ Ruta: `/api/services/rest/bluesamservice/exportDataSet`
+ Argumentos:  
datasetName  
(obligatorio, cadena): el nombre del conjunto de datos que se va a exportar.   
datasetOutputFile  
(obligatorio, cadena): la ruta de la carpeta donde desea almacenar el conjunto de datos exportado en el servidor.  
rdw  
(obligatorio, booleano): si desea que la palabra descriptora del registro (RDW) forme parte de los registros exportados. Si el conjunto de datos tiene registros de longitud fija, se omite el valor de este parámetro.
+ Devuelve el estado de la solicitud y la ruta al archivo que contiene el conjunto de datos exportado (de haberlo). Si el conjunto de datos es nulo en la respuesta, significa que el sistema no ha podido localizar un conjunto de datos con el nombre especificado.

### Exportación de conjuntos de datos (POST)
<a name="ba-export-data-sets-post"></a>
+ Método compatible: POST
+ Requiere autenticación y el rol ROLE\$1USER.
+ Ruta: `/api/services/rest/bluesamservice/exportDataSet`
+ Argumentos:  
dumpParameters  
(obligatorio, BACRead parámetros): parámetros de lectura de Bluesam.
+ Devuelve el estado del conjunto de datos exportado.

### Creación de varios conjuntos de datos
<a name="ba-create-multiple-data-sets"></a>
+ Método compatible: POST
+ Requiere autenticación y el rol ROLE\$1ADMIN.
+ Ruta: `/api/services/rest/bluesamservice/createAllDataSets`
+ Argumentos:
  + Lista de conjuntos de datos  
nombre  
(obligatorio, cadena): el nombre del conjunto de datos.   
type  
(obligatorio, cadena): el tipo de conjunto de datos. Los valores posibles son `ESDS`, `KSDS`, `RRDS`.   
recordSize  
(opcional, cadena): tamaño máximo de cada registro del conjunto de datos.  
fixedLength  
(opcional, booleano): indica si la longitud de los registros es fija.  
compression  
(opcional, booleano): indica si el conjunto de datos está comprimido.   
cacheEnable  
(opcional, booleano): indica si el almacenamiento en caché está habilitado para el conjunto de datos.
+ Devuelve: el estado de la solicitud y el conjunto de datos recién creado.

### Lista de todos los conjuntos de datos
<a name="ba-list-all-data-sets"></a>
+ Método compatible: GET
+ Requiere autenticación y el rol ROLE\$1USER.
+ Ruta: `/api/services/rest/bluesamservice/listDataSet`
+ Argumentos: ninguno
+ Devuelve el estado de la solicitud y de la lista de conjuntos de datos.

### Lista directa de todos los conjuntos de datos
<a name="ba-direct-list-all-data-sets"></a>
+ Método compatible: GET
+ Requiere autenticación y el rol ROLE\$1USER.
+ Ruta: `/api/services/rest/bluesamservice/directListDataSet`
+ Argumentos: ninguno
+ Devuelve el estado de la solicitud y de la lista de conjuntos de datos.

### Lista directa de todos los conjuntos de datos por página
<a name="ba-direct-list-all-data-sets-by-page"></a>
+ Método compatible: GET
+ Requiere autenticación y el rol ROLE\$1USER.
+ Ruta: `/api/services/rest/bluesamservice/directListDataSetByPage`
+ Argumentos:  
datasetName  
(obligatorio, cadena): el nombre del conjunto de datos.  
pageNumber  
(obligatorio, int): el número de página.  
pageSize  
(obligatorio, int): el tamaño de la página.
+ Devuelve el estado de la solicitud y de la lista de conjuntos de datos.

### Flujo de conjunto de datos
<a name="ba-stream-data-sets"></a>
+ Método compatible: GET
+ Requiere autenticación y el rol ROLE\$1ADMIN.
+ Ruta: `/api/services/rest/bluesamservice/streamDataset`
+ Argumentos:  
datasetName  
(obligatorio, cadena): el nombre del conjunto de datos.
+ Devuelve: un flujo de los conjuntos de datos solicitados.

### Eliminación de todos los conjuntos de datos
<a name="ba-delete-all-data-sets"></a>
+ Método compatible: POST
+ Requiere autenticación y el rol ROLE\$1ADMIN.
+ Ruta: `/api/services/rest/bluesamservice/removeAll`
+ Argumentos: ninguno
+ Devuelve: un valor booleano que representa el estado de la solicitud.

### Obtención de las definiciones de conjuntos de datos del archivo listcat
<a name="ba-get-definitions-listcat"></a>
+ Método compatible: POST
+ Requiere autenticación y el rol ROLE\$1ADMIN.
+ Ruta: `/api/services/rest/bluesamservice/getDataSetsDefinitionFromListcat`
+ Argumentos:   
paramFilePath  
(obligatorio, cadena): la ruta al archivo listcat.
+ Devuelve: una lista de conjuntos de datos

### Obtener las definiciones de conjuntos de datos del archivo listcat cargado
<a name="ba-get-definitions-uploaded-listcat"></a>
+ Método compatible: POST
+ Requiere autenticación y el rol ROLE\$1ADMIN.
+ Ruta: `/api/services/rest/bluesamservice/getDataSetsDefinitionFromUploadedListcat`
+ Argumentos: ninguno
+ Devuelve: una lista de conjuntos de datos

### Obtención de un conjunto de datos
<a name="ba-get-data-set"></a>
+ Método compatible: GET
+ Requiere autenticación y el rol ROLE\$1USER.
+ Ruta: `/api/services/rest/bluesamservice/getDataSet`
+ Argumentos:  
name  
(obligatorio, cadena): el nombre del conjunto de datos.
+ Devuelve el conjunto de datos solicitado.

### Carga de listcat desde el archivo JSON
<a name="ba-load-listcat"></a>
+ Método compatible: GET
+ Requiere autenticación y el rol ROLE\$1ADMIN.
+ Ruta: `/api/services/rest/bluesamservice/loadListcatFromJsonFile`
+ Argumentos:   
filePath  
(obligatorio, cadena): la ruta al archivo listcat.
+ Devuelve: una lista de conjuntos de datos

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

Utilice los siguientes puntos de conexión para crear o administrar registros en un conjunto de datos.

**Topics**
+ [Creación de un registro](#ba-create-record)
+ [Lectura de un conjunto de datos](#ba-read-data-set)
+ [Eliminación de un registro](#ba-delete-record)
+ [Actualización de un registro](#ba-update-record)
+ [Guardar un registro](#ba-save-record)
+ [Validación de un registro](#ba-validate-record)
+ [Obtención de un árbol de registros](#ba-get-record-tree)

### Creación de un registro
<a name="ba-create-record"></a>

Puede utilizar este punto de conexión para crear un nuevo registro.
+ Método compatible: POST
+ Requiere autenticación y el rol ROLE\$1USER.
+ Ruta: `/api/services/rest/crud/createRecord`
+ Argumentos:  
conjunto de datos  
(obligatorio DataSet): el objeto del conjunto de datos  
mask  
(obligatorio, mask): el objeto de máscara.
+ Devuelve: el estado de la solicitud y el registro creado.

### Lectura de un conjunto de datos
<a name="ba-read-data-set"></a>

Puede usar este punto de conexión para leer un conjunto de datos.
+ Método compatible: POST
+ Requiere autenticación y el rol ROLE\$1USER.
+ Ruta: `/api/services/rest/crud/readDataSet`
+ Argumentos:  
conjunto de datos  
(obligatorio DataSet): el objeto del conjunto de datos.
+ Devuelve el estado de la solicitud y del conjunto de datos con los registros.

### Eliminación de un registro
<a name="ba-delete-record"></a>

Puede usar este punto de conexión para eliminar un registro de un conjunto de datos.
+ Método compatible: POST
+ Requiere autenticación y el rol ROLE\$1USER.
+ Ruta: `/api/services/rest/crud/deleteRecord`
+ Argumentos:  
conjunto de datos  
(obligatorio DataSet): el objeto del conjunto de datos  
record  
(obligatorio, Record): el registro que se va a eliminar
+ Devuelve el estado de la eliminación.

### Actualización de un registro
<a name="ba-update-record"></a>

Puede usar este punto de conexión para actualizar un registro asociado a un conjunto de datos.
+ Método compatible: POST
+ Requiere autenticación y el rol ROLE\$1USER.
+ Ruta: `/api/services/rest/crud/updateRecord`
+ Argumentos:  
conjunto de datos  
(obligatorio, DataSet): el objeto del conjunto de datos  
record  
(obligatorio, Record): el registro que se va a actualizar
+ Devuelve el estado de la solicitud y del conjunto de datos con los registros.

### Guardar un registro
<a name="ba-save-record"></a>

Puede usar este punto de conexión para guardar un registro en un conjunto de datos y usar una máscara.
+ Método compatible: POST
+ Requiere autenticación y el rol ROLE\$1USER.
+ Ruta: `/api/services/rest/crud/saveRecord`
+ Argumentos:  
conjunto de datos  
(obligatorio, DataSet): el objeto del conjunto de datos  
record  
(obligatorio, Record): el registro que se va a guardar
+ Devuelve el estado de la solicitud y del conjunto de datos con los registros.

### Validación de un registro
<a name="ba-validate-record"></a>

Utilice este punto de conexión para validar un registro.
+ Método compatible: POST
+ Requiere autenticación y el rol ROLE\$1USER.
+ Ruta: `/api/services/rest/crud/validateRecord`
+ Argumentos:  
conjunto de datos  
(obligatorio, DataSet): el objeto del conjunto de datos
+ Devuelve el estado de la solicitud y del conjunto de datos con los registros.

### Obtención de un árbol de registros
<a name="ba-get-record-tree"></a>

Utilice este punto de conexión para obtener el árbol jerárquico de un registro.
+ Método compatible: POST
+ Requiere autenticación y el rol ROLE\$1USER.
+ Ruta: `/api/services/rest/crud/getRecordTree`
+ Argumentos:  
conjunto de datos  
(obligatorio, DataSet): el objeto del conjunto de datos  
record  
(obligatorio, Record): el registro que se recuperará
+ Devuelve el estado de la solicitud y el árbol jerárquico del registro solicitado.

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

Utilice los siguientes puntos de conexión para cargar o aplicar máscaras a un conjunto de datos.

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

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

Puede usar este punto de conexión para recuperar todas las máscaras asociadas a un conjunto de datos específico.
+ Método compatible: POST
+ Requiere autenticación y el rol ROLE\$1USER.
+ Ruta: `/api/services/rest/crud/loadMasks`
+ Variables de ruta:  
recordSize: .../loadMasks/\$1recordSize\$1  
(opcional, numérico): el tamaño del registro, filtra las máscaras cargadas que coinciden con este tamaño de registro
+ Argumentos:  
conjunto de datos  
(obligatorio, DataSet): el objeto del conjunto de datos
+ Devuelve el estado de la solicitud y de la lista de máscaras.

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

Puede usar este punto de conexión para aplicar una máscara a un conjunto de datos específico.
+ Método compatible: POST
+ Requiere autenticación y el rol ROLE\$1USER.
+ Ruta: `/api/services/rest/crud/applyMask`
+ Argumentos:  
conjunto de datos  
(obligatorio, DataSet): el objeto del conjunto de datos  
mask  
(obligatorio, máscara): el objeto del conjunto de datos
+ Devuelve el estado de la solicitud y el conjunto de datos con la máscara aplicada.

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

Puede usar este punto de conexión para aplicar una máscara y un filtro a un conjunto de datos específico.
+ Método compatible: POST
+ Requiere autenticación y el rol ROLE\$1USER.
+ Ruta: `/api/services/rest/crud/applyMaskFilter`
+ Argumentos:  
conjunto de datos  
(obligatorio, DataSet): el objeto del conjunto de datos  
mask  
(obligatorio, máscara): el objeto del conjunto de datos
+ Devuelve el estado de la solicitud y el conjunto de datos con la máscara y el filtro aplicados.

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

Utilice los siguientes puntos de conexión para administrar la caché de un conjunto de datos o comprobar las características del conjunto de datos

**Topics**
+ [Comprobación de la memoria caché de preparación](#ba-check-warm-up-cache)
+ [Comprobar que la caché está habilitada](#ba-check-cache-enabled)
+ [Habilitar caché](#ba-enable-cache)
+ [Comprobación de la memoria caché RAM asignada](#ba-check-allocated-ram-cache)
+ [Comprobar la persistencia](#ba-check-persistence)
+ [Comprobar los tipos de conjuntos de datos compatibles](#ba-check-supported-data-set-types)
+ [Comprobar el estado del servidor](#ba-check-server-health)

### Comprobación de la memoria caché de preparación
<a name="ba-check-warm-up-cache"></a>

Comprueba si la caché de preparación está habilitada para un conjunto de datos específico.
+ Método compatible: POST
+ Requiere autenticación y el rol ROLE\$1ADMIN.
+ Ruta: `/api/services/rest/bluesamservice/warmupCache`
+ Argumentos:  
name  
(obligatorio, cadena): el nombre del conjunto de datos. 
+ Devuelve: true si la memoria caché de preparación está habilitada y false en caso contrario.

### Comprobar que la caché está habilitada
<a name="ba-check-cache-enabled"></a>

Comprueba si la caché está habilitada para un conjunto de datos específico.
+ Método compatible: GET
+ Requiere autenticación y el rol ROLE\$1USER.
+ Ruta: `/api/services/rest/bluesamservice/isEnableCache`
+ Argumentos: ninguno
+ Devuelve true si el almacenamiento en caché está habilitado.

### Habilitar caché
<a name="ba-enable-cache"></a>
+ Método compatible: POST
+ Requiere autenticación y los roles ROLE\$1ADMIN y ROLE\$1SUPER\$1ADMIN.
+ Ruta: `/api/services/rest/bluesamservice/enableDisableCache/{enable}`
+ Argumentos:   
enable  
(obligatorio, booleano): si se establece en true, habilitará el almacenamiento en caché.
+ Devuelve: nada

### Comprobación de la memoria caché RAM asignada
<a name="ba-check-allocated-ram-cache"></a>

Puede usar este punto de conexión para recuperar la memoria caché RAM asignada.
+ Método compatible: GET
+ Requiere autenticación y el rol ROLE\$1USER.
+ Ruta: `/api/services/rest/bluesamservice/allocatedRamCache`
+ Argumentos: ninguno
+ Devuelve: el tamaño de la memoria en forma de cadena

### Comprobar la persistencia
<a name="ba-check-persistence"></a>
+ Método compatible: GET
+ Requiere autenticación y el rol ROLE\$1USER.
+ Ruta: `/api/services/rest/bluesamservice/persistence`
+ Argumentos: ninguno
+ Devuelve: la persistencia utilizada como cadena

### Comprobar los tipos de conjuntos de datos compatibles
<a name="ba-check-supported-data-set-types"></a>
+ Método compatible: GET
+ Ruta: `/api/services/rest/bluesamservice/getDataSetTypes`
+ Requiere autenticación y el rol ROLE\$1USER.
+ Argumentos: ninguno
+ Devuelve: la lista de tipos de conjuntos de datos admitidos en forma de lista de cadenas.

### Comprobar el estado del servidor
<a name="ba-check-server-health"></a>
+ Método compatible: GET
+ Ruta: `/api/services/rest/bluesamserver/serverIsUp`
+ Argumentos: ninguno
+ Devuelve: nada. El código de estado de respuesta HTTP 200 indica que el servidor está en funcionamiento.

## Puntos de conexión de administración de usuarios de BAC
<a name="ba-endpoints-bac-users"></a>

Utilice los siguientes puntos de conexión para administrar las interacciones de los usuarios.

**Topics**
+ [Registro de usuarios](#ba-log-user-in)
+ [Verificación de si existe al menos un usuario en el sistema](#ba-verify-at-least-one-user-exists)
+ [Registro de usuarios nuevos](#ba-record-new-user)
+ [Obtención de la información de los usuarios](#ba-user-info)
+ [Enumeración de usuarios](#ba-list-users)
+ [Eliminación de un usuario](#ba-delete-user)
+ [Cierre de sesión del usuario actual](#ba-log-user-out)

### Registro de usuarios
<a name="ba-log-user-in"></a>
+ Método compatible: POST
+ Ruta: `/api/services/security/servicelogin/login`
+ Argumentos: ninguno
+ Devuelve la serialización JSON de un objeto `com.netfective.bluage.bac.entities.SignOn`, que representa al usuario cuyas credenciales se proporcionan en la solicitud actual. La contraseña está oculta en la vista del objeto devuelto. Se muestran las funciones asignadas al usuario.

Respuesta de ejemplo:

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

### Verificación de si existe al menos un usuario en el sistema
<a name="ba-verify-at-least-one-user-exists"></a>
+ Método compatible: GET
+ Ruta: `/api/services/security/servicelogin/hasAccount`
+ Argumentos: ninguno
+ Devuelve el valor booleano `true` si se ha creado al menos un usuario distinto de la superadministrador predeterminado. De lo contrario, devuelve `false`.

### Registro de usuarios nuevos
<a name="ba-record-new-user"></a>
+ Método compatible: POST
+ Requiere autenticación y el rol ROLE\$1ADMIN.
+ Ruta: `/api/services/security/servicelogin/recorduser`
+ Argumentos: la serialización en JSON de un objeto `com.netfective.bluage.bac.entities.SignOn` que representa al usuario que se agregará al almacenamiento. Se deben definir los roles de usuario; de lo contrario, es posible que el usuario no pueda utilizar las funciones y los puntos de conexión de BAC.
+ Devuelve el valor booleano `true` si el usuario se ha creado correctamente. De lo contrario, devuelve `false`.
+ JSON de solicitud de ejemplo:

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

  Los siguientes son los dos valores válidos para `roleName`: 
  + `ROLE_ADMIN`: puede gestionar Blusam recursos y usuarios.
  + `ROLE_USER`: puede gestionar Blusam los recursos pero no los usuarios.

### Obtención de la información de los usuarios
<a name="ba-user-info"></a>
+ Método compatible: GET
+ Ruta: `/api/services/security/servicelogin/userInfo`
+ Argumentos: ninguno
+ Devuelve el nombre de usuario y el rol del usuario actualmente conectado.

### Enumeración de usuarios
<a name="ba-list-users"></a>
+ Método compatible: GET
+ Requiere autenticación y el rol ROLE\$1ADMIN.
+ Ruta: `/api/services/security/servicelogin/listusers`
+ Argumentos: ninguno
+ Devuelve una lista de `com.netfective.bluage.bac.entities.SignOn`, serializada como JSON.

### Eliminación de un usuario
<a name="ba-delete-user"></a>

**importante**  
Esta acción no se puede deshacer. El usuario eliminado no podrá volver a conectarse a la aplicación de BAC.
+ Método compatible: POST
+ Requiere autenticación y el rol ROLE\$1ADMIN.
+ Ruta: `/api/services/security/servicelogin/deleteuser`
+ Argumentos: la serialización en JSON de un objeto `com.netfective.bluage.bac.entities.SignOn` que representa al usuario que se eliminará del almacenamiento.
+ Devuelve el valor booleano `true` si el usuario se ha eliminado correctamente.

### Cierre de sesión del usuario actual
<a name="ba-log-user-out"></a>
+ Método compatible: GET
+ Ruta: `/api/services/security/servicelogout/logout`
+ Argumentos: ninguno
+ Devuelve el mensaje JSON `{"success":true}` si la sesión del usuario se ha cerrado correctamente. La sesión HTTP relacionada será invalidada.

# Administre la consola de aplicaciones JICS en AWS Blu Age
<a name="ba-endpoints-jac"></a>

El componente JICS es el soporte de la Era AWS Azul para la modernización de los recursos antiguos del CICS. La aplicación web de la consola de aplicaciones JICS está dedicada a administrar los recursos del JICS. Los siguientes puntos de conexión permiten realizar las tareas de administración sin tener que interactuar con la interfaz de usuario de JAC. Siempre que un punto de conexión requiera autenticación, la solicitud deberá incluir los detalles de autenticación (normalmente, nombre de usuario/contraseña, tal y como exige la autenticación básica). Los puntos de conexión de la aplicación web de la consola de aplicaciones JICS utilizan la ruta raíz `/jac/`.

**Topics**
+ [Administración de recursos del JICS](#ba-endpoints-jac-resources)
+ [Otro](#ba-endpoints-jac-other)
+ [Puntos de conexión de administración de usuarios de JAC](#ba-endpoints-jac-users)

## Administración de recursos del JICS
<a name="ba-endpoints-jac-resources"></a>

Todos los puntos de conexión siguientes están relacionados con la administración de los recursos del JICS, lo que permite a los administradores del JICS gestionar los recursos a diario.

**Topics**
+ [Muestre las listas y los grupos del JICS](#list-jics-lists-groups)
+ [Recuperación de los recursos del JICS](#retrieve-jics-resources)
+ [Lista los grupos de JICS](#list-jics-groups)
+ [Lista de grupos de JICS para una lista determinada](#list-jics-groups-given-list)
+ [Lista de recursos del JICS para un grupo determinado](#list-jics-resources-given-group)
+ [Lista de los recursos del JICS para un grupo determinado (también puede usar un nombre)](#list-jics-resources-given-group-alt)
+ [Edición de los grupos propios de varias listas](#edit-owned-groups-lists)
+ [Eliminar una lista](#delete-list)
+ [Eliminación de un grupo](#delete-group)
+ [Eliminar una transacción](#delete-transaction)
+ [Eliminar un programa](#delete-program)
+ [Eliminar un archivo](#delete-file)
+ [Eliminar un objeto TDQUEUE](#delete-tdqueue)
+ [Eliminar un objeto TSMODEL](#delete-tsmodel)
+ [Eliminación de elementos](#delete-elements)
+ [Crear una lista](#create-list)
+ [Crear un grupo](#create-group)
+ [Consideraciones comunes sobre la creación de recursos](#common-create-considerations)
+ [Crear una transacción](#create-transaction)
+ [Crear un programa](#create-program)
+ [Crear un archivo](#create-file)
+ [Crear un objeto TDQUEUE](#create-tdqueue)
+ [Crear un objeto TSMODEL.](#create-tsmodel)
+ [Creación de elementos](#create-elements)
+ [Actualizar una lista](#update-list)
+ [Actualizar un grupo](#update-group)
+ [Consideraciones sobre la actualización de los recursos comunes](#common-update-considerations)
+ [Actualizar una transacción](#update-transaction)
+ [Actualizar un programa](#update-program)
+ [Actualizar un archivo](#update-file)
+ [Actualice un objeto TDQUEUE](#update-tdqueue)
+ [Actualizar un objeto TSMODEL](#update-tsmodel)
+ [Actualización de elementos](#update-elements)
+ [Creación o actualización de elementos](#upsert-elements)
+ [Recuperación de elementos](#retrieve-elements)
+ [Funcionamiento de CRUD de JICS](#jics-crud-operation)

### Muestre las listas y los grupos del JICS
<a name="list-jics-lists-groups"></a>

La lista y los grupos son los principales recursos de contenedores propietarios del componente JICS. Todos los recursos del JICS deben pertenecer a un grupo. Los grupos pueden pertenecer a listas, pero no es obligatorio. Es posible que las listas ni siquiera existan en un entorno JICS determinado, pero la mayoría de las veces, las listas están ahí para ofrecer una capa adicional de organización de los recursos. Para obtener más información sobre la organización de los recursos del CICS, consulte los [recursos del CICS](https://www.ibm.com/docs/en/cics-ts/6.1?topic=fundamentals-how-it-works-cics-resources).
+ Método compatible: GET
+ Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/api/services/rest/jicsservice/listJicsListsAndGroups`
+ Argumentos: ninguno
+ Devuelve: una lista de JicsContainer objetos serializados, tanto LISTAS como GRUPOS, en formato JSON.

Respuesta de ejemplo:

```
[
    {
      "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
    }
  ]
```

### Recuperación de los recursos del JICS
<a name="retrieve-jics-resources"></a>
+ Método compatible: POST
+ Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/api/services/rest/jicsservice/retrieveJicsResources`
+ Argumentos: una carga útil de JSON que representa los recursos del JICS que desea recuperar. Esta es la serialización en JSON de un objeto `com.netfective.bluage.jac.entities.request.RetrieveOperationRequest`.
+ Devuelve: una lista de objetos serializados. JicsResource Los objetos se devuelven sin ningún orden en particular y son de diferentes tipos, como PROGRAM, TRANSACTION, FILE, etc.

### Lista los grupos de JICS
<a name="list-jics-groups"></a>
+ Método compatible: GET
+ Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/api/services/rest/jicsservice/listJicsGroups`
+ Argumentos: ninguno
+ Devuelve una lista de JicsContainer objetos serializados (GRUPOS) en formato JSON. Los grupos se devuelven sin su propia información de LIST.

Respuesta de ejemplo:

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

### Lista de grupos de JICS para una lista determinada
<a name="list-jics-groups-given-list"></a>
+ Método compatible: POST
+ Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/api/services/rest/jicsservice/listGroupsForList`
+ Argumentos: una carga útil de JSON, que representa la lista de JICS cuyos grupos está buscando. Esta es la serialización en JSON de un objeto `com.netfective.bluage.jac.entities.JACList`.

  Solicitud de ejemplo:

  ```
  {
      "jacType":"JACList",
      "name":"MURACHS",
      "isActive":true
    }
  ```
+ Devuelve una lista de JicsContainer objetos serializados (GRUPOS) en formato JSON, que se adjuntan a la LISTA dada. Los grupos se devuelven sin su propia información de LIST.

  Respuesta de ejemplo:

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

### Lista de recursos del JICS para un grupo determinado
<a name="list-jics-resources-given-group"></a>
+ Método compatible: POST
+ Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/api/services/rest/jicsservice/listResourcesForGroup`
+ Argumentos: una carga útil de JSON, que representa el JICS GROUP cuyos recursos está buscando. Esta es la serialización en JSON de un objeto `com.netfective.bluage.jac.entities.JACGroup`. No es necesario especificar todos los campos para el grupo, pero el nombre sí es obligatorio.

  Solicitud de ejemplo:

  ```
  {
      "jacType":"JACGroup",
      "name":"MURACHS",
      "isActive":true
    }
  ```
+ Devuelve una lista de JicsResource objetos serializados, propiedad del GRUPO dado. Los objetos se devuelven sin ningún orden en particular y son de diferentes tipos, como PROGRAM, TRANSACTION, FILE, etc.

### Lista de los recursos del JICS para un grupo determinado (también puede usar un nombre)
<a name="list-jics-resources-given-group-alt"></a>
+ Método compatible: POST
+ Requiere autenticación
+ Ruta: `/api/services/rest/jicsservice/listResourcesForGroupName`
+ Argumentos: el nombre del GROUP propietario de los recursos que busca.
+ Devuelve: una lista de JicsResource objetos serializados, propiedad del GRUPO dado. Los objetos se devuelven sin ningún orden en particular y son de diferentes tipos, como PROGRAM, TRANSACTION, FILE, etc.

### Edición de los grupos propios de varias listas
<a name="edit-owned-groups-lists"></a>
+ Método compatible: POST
+ Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/api/services/rest/jicsservice/editGroupsList`
+ Argumentos: una representación en JSON de una colección de listas con grupos secundarios;

  Solicitud de ejemplo:

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

  Antes de esta edición, solo el grupo denominado MURACHS pertenecía a la lista denominada MURACHS. Con esta edición, agregamos el grupo denominado TEST a la lista denominada MURACHS.
+ Devuelve un valor booleano. Si el valor es “true”, las modificaciones de LISTS se han conservado correctamente en el almacenamiento de JICS subyacente.

### Eliminar una lista
<a name="delete-list"></a>
+ Método compatible: POST
+ Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/api/services/rest/jicsservice/deleteList`
+ Argumentos: una carga JSON, que representa la lista de JICS que se va a eliminar. Esta es la serialización en JSON de un objeto `com.netfective.bluage.jac.entities.JACList`.
+ Devuelve un valor booleano. Si el valor es “true”, la eliminación de LIST se ha realizado correctamente en el almacenamiento de JICS subyacente.

### Eliminación de un grupo
<a name="delete-group"></a>
+ Método compatible: POST
+ Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/api/services/rest/jicsservice/deleteGroup`
+ Argumentos: una carga JSON, que representa el grupo de JICS que se va a eliminar. Esta es la serialización en JSON de un objeto `com.netfective.bluage.jac.entities.JACGroup`.
+ Devuelve un valor booleano. Si el valor es “true”, la eliminación de GROUP se ha realizado correctamente en el almacenamiento de JICS subyacente.

### Eliminar una transacción
<a name="delete-transaction"></a>
+ Método compatible: POST
+ Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/api/services/rest/jicsservice/deleteTransaction`
+ Argumentos: una carga JSON, que representa la transacción de JICS que se va a eliminar. Esta es la serialización en JSON de un objeto `com.netfective.bluage.jac.entities.JACTransaction`.
+ Devuelve un valor booleano. Si el valor es “true”, la eliminación de TRANSACTION se ha realizado correctamente en el almacenamiento de JICS subyacente.

### Eliminar un programa
<a name="delete-program"></a>
+ Método compatible: POST
+ Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/api/services/rest/jicsservice/deleteProgram`
+ Argumentos: una carga JSON, que representa el programa de JICS que se va a eliminar. Esta es la serialización en JSON de un objeto `com.netfective.bluage.jac.entities.JACProgram`.
+ Devuelve un valor booleano. Si el valor es “true”, la eliminación de PROGRAM se ha realizado correctamente en el almacenamiento de JICS subyacente.

### Eliminar un archivo
<a name="delete-file"></a>
+ Método compatible: POST
+ Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/api/services/rest/jicsservice/deleteFile`
+ Argumentos: una carga JSON, que representa el archivo de JICS que se va a eliminar. Esta es la serialización en JSON de un objeto `com.netfective.bluage.jac.entities.JACFile`.
+ Devuelve un valor booleano. Si el valor es “true”, la eliminación de FILE se ha realizado correctamente en el almacenamiento de JICS subyacente.

### Eliminar un objeto TDQUEUE
<a name="delete-tdqueue"></a>
+ Método compatible: POST
+ Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/api/services/rest/jicsservice/deleteTDQueue`
+ Argumentos: una carga JSON que representa el TDQUEUE del JICS que se va a eliminar. Esta es la serialización en JSON de un archivo `com.netfective.bluage.jac.entities. JACTDQueue`objeto.
+ Devuelve un valor booleano. Si el valor es “true”, la eliminación del objeto TDQUEUE se ha realizado correctamente en el almacenamiento de JICS subyacente.

### Eliminar un objeto TSMODEL
<a name="delete-tsmodel"></a>
+ Método compatible: POST
+ Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/api/services/rest/jicsservice/deleteTSModel`
+ Argumentos: una carga JSON que representa el TSMODEL del JICS que se va a eliminar. Esta es la serialización en JSON de un `com.netfective.bluage.jac.entities. JACTSModel`objeto.
+ Devuelve un valor booleano. Si el valor es “true”, la eliminación de TSMODEL se ha realizado correctamente en el almacenamiento de JICS subyacente.

### Eliminación de elementos
<a name="delete-elements"></a>
+ Método compatible: POST
+ Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/api/services/rest/jicsservice/deleteElements`
+ Argumentos: una carga útil JSON que representa los elementos JICS que se eliminarán.
+ Devuelve un valor booleano donde `true` indica que la eliminación se ha realizado correctamente en el almacenamiento de JICS subyacente.

### Crear una lista
<a name="create-list"></a>
+ Método compatible: POST
+ Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/api/services/rest/jicsservice/createList`
+ Argumentos: una carga JSON, que representa la lista de JICS que se va a eliminar. Esta es la serialización en JSON de un `com.netfective.bluage.jac.entities. JACList`objeto.
+ Devuelve un valor booleano. Si el valor es “true”, la LIST se ha creado correctamente en el almacenamiento de JICS subyacente.

**nota**  
La lista siempre se creará vacía. Adjuntar grupos a la lista requerirá otra operación.

### Crear un grupo
<a name="create-group"></a>
+ Método compatible: POST
+ Requiere autenticación y los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/api/services/rest/jicsservice/createGroup`
+ Argumentos: una carga JSON, que representa el grupo de JICS que se va a crear. Esta es la serialización en JSON de un objeto `com.netfective.bluage.jac.entities.JACGroup`.
+ Devuelve un valor booleano. Si el valor es “true”, el grupo se ha creado correctamente en el almacenamiento JICS subyacente.

**nota**  
El grupo siempre se creará vacío. Adjuntar recursos al grupo requerirá operaciones adicionales (la creación de recursos los asociará automáticamente a un grupo determinado).

### Consideraciones comunes sobre la creación de recursos
<a name="common-create-considerations"></a>

Todos los puntos de conexión siguientes están relacionados con la creación de recursos de JICS y comparten algunas limitaciones comunes: en la carga de la solicitud que se va a enviar al punto de conexión, se debe valorar el campo `groupName`.

Restricción de propiedad del grupo:

No se puede crear ningún recurso sin estar asociado a un grupo existente, y el punto de conexión utiliza el groupName para recuperar el grupo al que se adjuntará este recurso. El `groupName` debe apuntar al nombre de un grupo existente. Se enviará un mensaje de error con el estado HTTP 400 si el `groupName` no apunta a un grupo existente en el almacenamiento subyacente del JICS.

Restricción de unicidad dentro de un grupo:

Un recurso determinado con un nombre determinado tiene que ser único en un grupo determinado. La comprobación de la unicidad la realizará cada punto de conexión de creación de recursos. Si la carga dada no respeta la restricción de unicidad, el punto de conexión enviará una respuesta HTTP STATUS 400 (BAD REQUEST); consulte el ejemplo de respuesta que aparece a continuación.

Ejemplo de carga útil: intentamos crear la transacción ARIT en el grupo TEST, pero ya existe una transacción con ese nombre en este grupo.

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

Recibe la siguiente respuesta de error:

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

Al inspeccionar los registros de los servidores, se confirmará el origen del 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)
```

### Crear una transacción
<a name="create-transaction"></a>
+ Método compatible: POST
+ Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/api/services/rest/jicsservice/createTransaction`
+ Argumentos: una carga JSON, que representa la transacción de JICS que se va a crear. Esta es la serialización en JSON de un objeto `com.netfective.bluage.jac.entities.JACTransaction`.
+ Devuelve un valor booleano. Si el valor es “true”, la TRANSACTION se ha creado correctamente en el almacenamiento de JICS subyacente.

### Crear un programa
<a name="create-program"></a>
+ Método compatible: POST
+ Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/api/services/rest/jicsservice/createProgram`
+ Argumentos: una carga JSON, que representa el programa de JICS que se va a crear. Esta es la serialización en JSON de un objeto `com.netfective.bluage.jac.entities.JACProgram`.
+ Devuelve un valor booleano. Si el valor es “true”, el PROGRAM se ha creado correctamente en el almacenamiento de JICS subyacente.

### Crear un archivo
<a name="create-file"></a>
+ Método compatible: POST
+ Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/api/services/rest/jicsservice/createFile`
+ Argumentos: una carga JSON, que representa el archivo de JICS que se va a crear. Esta es la serialización en JSON de un objeto `com.netfective.bluage.jac.entities.JACFile`.
+ Devuelve un valor booleano. Si el valor es “true”, el FILE se ha creado correctamente en el almacenamiento de JICS subyacente.

### Crear un objeto TDQUEUE
<a name="create-tdqueue"></a>
+ Método compatible: POST
+ Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/api/services/rest/jicsservice/createTDQueue`
+ Argumentos: una carga JSON, que representa el objeto TDQUEUE de JICS que se va a crear. Esta es la serialización en JSON de un objeto `com.netfective.bluage.jac.entities.JACTDQueue`.
+ Devuelve un valor booleano. Si el valor es “true”, el objeto TDQUEUE se ha creado correctamente en el almacenamiento de JICS subyacente.

### Crear un objeto TSMODEL.
<a name="create-tsmodel"></a>
+ Método compatible: POST
+ Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/api/services/rest/jicsservice/createTSModel`
+ Argumentos: una carga JSON, que representa el objeto TSMODEL de JICS que se va a crear. Esta es la serialización en JSON de un objeto `com.netfective.bluage.jac.entities.JACTSModel`.
+ Devuelve un valor booleano donde `true` indica que la creación de elementos se ha realizado correctamente en el almacenamiento de JICS subyacente.

### Creación de elementos
<a name="create-elements"></a>
+ Método compatible: POST
+ Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/api/services/rest/jicsservice/createElements`
+ Argumentos: una carga útil JSON, que representa los elementos JICS que se crearán.
+ Devuelve un valor booleano. Si el valor es “true”, los elementos se han creado correctamente en el almacenamiento de JICS subyacente.

### Actualizar una lista
<a name="update-list"></a>
+ Método compatible: POST
+ Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/api/services/rest/jicsservice/updateList`
+ Argumentos: una carga JSON, que representa la lista de JICS que se va a actualizar. Esta es la serialización en JSON de un objeto `com.netfective.bluage.jac.entities.JACList`. No es necesario proporcionar los elementos secundarios de la LIST; el mecanismo de actualización de la LIST no los tendrá en cuenta. 
+ Devuelve un valor booleano. Si el valor es “true”, la lista se ha actualizado correctamente en el almacenamiento de JICS subyacente.

Si se actualiza el indicador “isActive” de la lista, se propagará a todos los elementos que sean propiedad de la lista, es decir, a todos los grupos que sean propiedad de la lista y a todos los recursos que pertenezcan a dichos grupos. Esta es una forma cómoda de desactivar una gran cantidad de recursos con una sola operación, en varios GROUPS.

### Actualizar un grupo
<a name="update-group"></a>
+ Método compatible: POST
+ Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/api/services/rest/jicsservice/updateGroup`
+ Argumentos: una carga JSON, que representa el grupo de JICS que se va a actualizar. Esta es la serialización en JSON de un objeto `com.netfective.bluage.jac.entities.JACGroup`. No es necesario proporcionar los elementos secundarios del GROUP; el mecanismo de actualización del grupo no lo tendrá en cuenta. 
+ Devuelve un valor booleano. Si el valor es “true”, el GROUP se ha actualizado correctamente en el almacenamiento de JICS subyacente.

**nota**  
Si se actualiza el indicador “isActive” del grupo, se propagará a todos los elementos que sean propiedad del grupo, es decir, a todos los recursos que pertenezcan al grupo. Esta es una forma cómoda de desactivar una gran cantidad de recursos con una sola operación en un GROUP dado.

### Consideraciones sobre la actualización de los recursos comunes
<a name="common-update-considerations"></a>

Los siguientes puntos de conexión están relacionados con la actualización de recursos de JICS. Mediante el campo `groupName`, puede cambiar el GROUP propietario de cualquier JICS RESOURCE, siempre que el valor del campo señale a un grupo existente en el almacenamiento de JICS subyacente (de lo contrario, recibirá una respuesta de BAD REQUEST [HTTP STATUS 400] del punto de conexión).

### Actualizar una transacción
<a name="update-transaction"></a>
+ Método compatible: POST
+ Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/api/services/rest/jicsservice/updateTransaction`
+ Argumentos: una carga JSON, que representa la transacción de JICS que se va a actualizar. Esta es la serialización en JSON de un objeto `com.netfective.bluage.jac.entities.JACTransaction`.
+ Devuelve un valor booleano. Si el valor es “true”, la TRANSACTION se ha actualizado correctamente en el almacenamiento de JICS subyacente.

### Actualizar un programa
<a name="update-program"></a>
+ Método compatible: POST
+ Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/api/services/rest/jicsservice/updateProgram`
+ Argumentos: una carga JSON, que representa el programa de JICS que se va a actualizar. Esta es la serialización en JSON de un objeto `com.netfective.bluage.jac.entities.JACProgram`.
+ Devuelve un valor booleano. Si el valor es “true”, el PROGRAM se ha actualizado correctamente en el almacenamiento de JICS subyacente.

### Actualizar un archivo
<a name="update-file"></a>
+ Método compatible: POST
+ Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/api/services/rest/jicsservice/updateFile`
+ Argumentos: una carga JSON, que representa el archivo de JICS que se va a actualizar. Esta es la serialización en JSON de un objeto `com.netfective.bluage.jac.entities.JACFile`.
+ Devuelve un valor booleano. Si el valor es “true”, el FILE se ha actualizado correctamente en el almacenamiento de JICS subyacente.

### Actualice un objeto TDQUEUE
<a name="update-tdqueue"></a>
+ Método compatible: POST
+ Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/api/services/rest/jicsservice/updateTDQueue`
+ Argumentos: una carga JSON, que representa el objeto TDQUEUE de JICS que se va a actualizar. Esta es la serialización en JSON de un objeto `com.netfective.bluage.jac.entities.JACTDQueue`.
+ Devuelve un valor booleano. Si el valor es «verdadero», significa que TDQueue se actualizó correctamente en el almacenamiento JICS subyacente.

### Actualizar un objeto TSMODEL
<a name="update-tsmodel"></a>
+ Método compatible: POST
+ Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/api/services/rest/jicsservice/updateTSModel`
+ Argumentos: una carga útil de JSON, que representa el TSMODEL del JICS que se va a actualizar. Esta es la serialización en JSON de un objeto `com.netfective.bluage.jac.entities.JACTSModel`.
+ Devuelve un valor booleano. Si el valor es “true”, el objeto TSMODEL se ha actualizado correctamente en el almacenamiento de JICS subyacente.

### Actualización de elementos
<a name="update-elements"></a>
+ Método compatible: POST
+ Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/api/services/rest/jicsservice/updateElements`
+ Argumentos: carga útil de JSON, que representa los elementos que se actualizarán.
+ Devuelve un valor booleano donde `true` indica que la actualización de los elementos se ha realizado correctamente en el almacenamiento de JICS subyacente.

### Creación o actualización de elementos
<a name="upsert-elements"></a>
+ Método compatible: POST
+ Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/api/services/rest/jicsservice/upsertElements`
+ Argumentos: carga útil de JSON que representa los elementos que se crearán o actualizarán.
+ Devuelve un valor booleano donde `true` indica que la creación o actualización de elementos se ha realizado correctamente en el almacenamiento de JICS subyacente.

### Recuperación de elementos
<a name="retrieve-elements"></a>
+ Método compatible: GET
+ Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/api/services/rest/jicsservice/retrieveElements`
+ Argumentos: ninguno
+ Devuelve una lista de todos los recursos JICS serializados.

### Funcionamiento de CRUD de JICS
<a name="jics-crud-operation"></a>
+ Método compatible: POST
+ Requiere autenticación y uno de los siguientes roles: ROLE\$1ADMIN, ROLE\$1SUPER\$1ADMIN, ROLE\$1USER.
+ Ruta: `/api/services/rest/jicsservice/jicsCrudOperation`
+ Argumentos: carga útil de JSON que representa los recursos de JICS que busca. Esta es la serialización en JSON de un objeto `com.netfective.bluage.jac.entities.request.JicsCrudOperationRequest`.
+ Devuelve una carga útil de JSON que representa la respuesta. Esta es la serialización en JSON de un objeto `com.netfective.bluage.jac.entities.request.JicsCrudOperationResponse`.

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

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

### Estado del servidor de JICS
<a name="jics-server-health"></a>
+ Método compatible: GET
+ Ruta: `/api/services/rest/jicsserver/serverIsUp`
+ Argumentos: ninguno
+ Devuelve: nada. Una respuesta HTTP STATUS 200 indica que el servidor JICS está en funcionamiento.

## Puntos de conexión de administración de usuarios de JAC
<a name="ba-endpoints-jac-users"></a>

Utilice los siguientes puntos de conexión para administrar las interacciones de los usuarios.

**Topics**
+ [Registrar a un usuario .](#log-user)
+ [Probar si existe al menos un usuario en el sistema](#test-user-exist)
+ [Grabar a un usuario nuevo](#record-new-user)
+ [Información del usuario](#user-info)
+ [Mostrar usuarios](#list-users)
+ [Eliminar un usuario](#delete-user)
+ [Cierre de sesión del usuario actual](#logout-user)

### Registrar a un usuario .
<a name="log-user"></a>
+ Método compatible: POST
+ Ruta: `/api/services/security/servicelogin/login`
+ Argumentos: ninguno
+ Devuelve la serialización JSON de un objeto `com.netfective.bluage.jac.entities.SignOn`, que representa al usuario cuyas credenciales se proporcionan en la solicitud actual. La contraseña está oculta en la vista del objeto devuelto. Se muestran las funciones asignadas al usuario.

Respuesta de ejemplo:

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

### Probar si existe al menos un usuario en el sistema
<a name="test-user-exist"></a>
+ Método compatible: GET
+ Ruta: `/api/services/security/servicelogin/hasAccount`
+ Argumentos: ninguno
+ Devuelve el valor booleano `true` si se ha creado al menos un usuario distinto de la superadministrador predeterminado. De lo contrario, devuelve `false`.

### Grabar a un usuario nuevo
<a name="record-new-user"></a>
+ Método compatible: POST
+ Requiere autenticación y el rol ROLE\$1ADMIN.
+ Ruta: `/api/services/security/servicelogin/recorduser`
+ Argumentos: la serialización en JSON de un objeto `com.netfective.bluage.jac.entities.SignOn`, que representa al usuario que se va a añadir al almacenamiento. Se deben definir los roles del usuario; de lo contrario, es posible que el usuario no pueda utilizar las funciones y los puntos de conexión del JAC.
+ Devuelve el valor booleano `true` si el usuario se ha creado correctamente. De lo contrario, devuelve `false`.

Solicitud de ejemplo:

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

Al grabar a un usuario nuevo, solo se pueden usar los siguientes roles:
+ ROLE\$1ADMIN: puede administrar los recursos y usuarios de JICS.
+ ROLE\$1USER: puede administrar los recursos del JICS pero no los usuarios.

### Información del usuario
<a name="user-info"></a>
+ Método compatible: GET
+ Ruta: `/api/services/security/servicelogin/userInfo`
+ Argumentos: ninguno
+ Devuelve el nombre de usuario y los roles del usuario conectado actualmente.

### Mostrar usuarios
<a name="list-users"></a>
+ Método compatible: GET
+ Requiere autenticación y el rol ROLE\$1ADMIN.
+ Ruta: `/api/services/security/servicelogin/listusers`
+ Argumentos: ninguno
+ Devuelve una lista de `com.netfective.bluage.jac.entities.SignOn`, serializada como JSON.

### Eliminar un usuario
<a name="delete-user"></a>
+ Método compatible: POST
+ Requiere autenticación y el rol ROLE\$1ADMIN.
+ Ruta: `/api/services/security/servicelogin/deleteuser`
+ Argumentos: la serialización en JSON de un objeto `com.netfective.bluage.jac.entities.SignOn` que representa al usuario que se eliminará del almacenamiento.
+ Devuelve el valor booleano `true` si el usuario se ha eliminado correctamente.

**importante**  
Esta acción no se puede deshacer. El usuario eliminado no podrá volver a conectarse a la aplicación JAC.

### Cierre de sesión del usuario actual
<a name="logout-user"></a>
+ Método compatible: GET
+ Ruta: `/api/services/security/servicelogout/logout`
+ Argumentos: ninguno
+ Devuelve el mensaje JSON `{"success":true}` si la sesión del usuario se ha cerrado correctamente. La sesión HTTP relacionada será invalidada.

# Estructuras de datos para usuarios de AWS Blu Age
<a name="ba-endpoints-apx"></a>

Puede obtener información sobre las diversas estructuras de datos del motor AWS Blu Age en la siguiente sección.

**Topics**
+ [Estructura de mensajes de detalles de ejecución del trabajo](#job-execution-details)
+ [Estructura de resultados del lanzamiento de la transacción](#transaction-outcome)
+ [Estructura de resultados del registro de lanzamiento de la transacción](#transaction-record-outcome)
+ [Los posibles estados de un trabajo en una cola son:](#jobs-status)
+ [Entrada de envío y de programación del trabajo](#submit-job)
+ [Lista de respuestas a los trabajos programados](#list-scheduled-jobs)
+ [Lista de respuestas de trabajos recurrentes](#list-on-hold-jobs)

## Estructura de mensajes de detalles de ejecución del trabajo
<a name="job-execution-details"></a>

Los detalles de la ejecución de cada trabajo tendrán los siguientes campos:

ScriptId  
el identificador del script llamado.

caller  
dirección IP del programa que llama.

identificador  
identificador único de ejecución del trabajo.

startTime  
la fecha y hora de inicio de la ejecución del trabajo.

endTime  
la fecha y hora de fin de la ejecución del trabajo.

status  
un estado de la ejecución del trabajo. Un valor posible entre:  
+ `DONE`: la ejecución del trabajo ha finalizado con normalidad.
+ `TRIGGERED`: la ejecución del trabajo se ha activado pero aún no se ha iniciado.
+ `RUNNING`: la ejecución del trabajo se está ejecutando.
+ `KILLED`: la ejecución del trabajo ha sido cancelada.
+ `FAILED`: la ejecución del trabajo ha fallado.

executionResult  
un mensaje para resumir el resultado de la ejecución del trabajo. Este mensaje puede ser un mensaje simple si la ejecución del trabajo aún no ha finalizado o una estructura JSON con los siguientes campos:  
+ exitCode: código de salida numérico; los valores negativos indican situaciones de fallo.
+ program: último programa lanzado por el trabajo.
+ status: un valor posible entre:
  + `Error`: cuando exitCode = -1; corresponde a un error (técnico) que se produce durante la ejecución del trabajo.
  + `Failed`: cuando exitcode = -2; corresponde a un fallo que se produce durante la ejecución de un programa de servicio (como una situación ABEND).
  + `Succeeded`: cuando exitCode >= 0;
+ stepName: nombre del último paso ejecutado en el trabajo.

executionMode  
SYNCHRONOUS o ASYNCHRONOUS, según la forma en que se haya iniciado el trabajo.

Salida de ejemplo:

```
{
    "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"
  }
```

## Estructura de resultados del lanzamiento de la transacción
<a name="transaction-outcome"></a>

 La estructura podría contener los siguientes campos:

outCome  
una cadena que representa el resultado de la ejecución de la transacción. Los valores posibles son los siguientes:  
+ `Success`: la ejecución de la transacción ha finalizado correctamente.
+ `Failure`: la ejecución de la transacción no ha finalizado correctamente, se han producido algunos problemas.

commarea  
una cadena que representa el valor final de COMMAREA, como una matriz de bytes codificada en byte64. Puede ser una cadena vacía.

containerRecord  
(Opcional) Cadena que representa el contenido del registro de CONTAINER como matriz de bytes codificada en byte64.

serverDescription  
Puede contener información sobre el servidor que ha atendido la solicitud (con fines de depuración). Puede ser una cadena vacía.

abendCode  
(Opcional) Si el programa al que se hace referencia en la transacción iniciada está ausente, el valor del código de abend se devolverá en forma de cadena en este campo.

Respuestas de ejemplo

Success

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

Failure

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

## Estructura de resultados del registro de lanzamiento de la transacción
<a name="transaction-record-outcome"></a>

La estructura podría contener los siguientes campos:

recordContent  
una cadena que representa el contenido del registro del COMMAREA como una matriz de bytes codificada en byte64.

containerRecord  
una cadena que representa el contenido del registro del CONTAINER como una matriz de bytes codificada en byte64.

serverDescription  
Puede contener información sobre el servidor que ha atendido la solicitud (con fines de depuración). Puede ser una cadena vacía.

Respuestas de ejemplo

Success

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

## Los posibles estados de un trabajo en una cola son:
<a name="jobs-status"></a>

En una cola, los trabajos pueden tener el siguiente estado:

ACTIVE  
El trabajo se está ejecutando actualmente en la cola.

EXECUTION\$1WAIT  
El trabajo está esperando a que haya un subproceso disponible.

SCHEDULED  
La ejecución del trabajo está programada en una fecha y hora específicas.

HOLD  
El trabajo está esperando a ser publicado antes de ejecutarse.

COMPLETED  
El trabajo se ha ejecutado correctamente.

ERROR  
La ejecución del trabajo ha fallado.

UNKNOWN  
Se desconoce el estado.

## Entrada de envío y de programación del trabajo
<a name="submit-job"></a>

La entrada de envío y de programación del trabajo es la serialización en JSON de un objeto `com.netfective.bluage.gapwalk.rt.jobqueue.SubmitJobMessage`. El ejemplo de entrada que aparece a continuación muestra todos los campos de dicho bean.

Ejemplo de entrada para envío de trabajo:

```
{
    "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
}
```

Ejemplo de entrada para programación de trabajo:

```
{
     "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  
si el número de trabajo es 0, el número de trabajo se generará automáticamente utilizando el siguiente número de la secuencia de números de trabajo. Ese valor debe establecerse en 0 (excepto para fines de prueba).

jobPriority  
La prioridad de trabajo predeterminada en AS4 00 es 5. El rango válido es de 0 a 9, siendo 0 la prioridad más alta.

jobOnHold  
Si un trabajo se envía en espera, no se ejecutará de inmediato, sino cuando alguien lo “publique”. Se puede publicar un trabajo mediante la API de REST (/release o /release-all).

scheduleDate y scheduleTime  
Si estos valores no son null, el trabajo se ejecutará en la fecha y hora especificadas. 

Date  
Se puede proporcionar con formato MMddyy o dd MMyyyy (el tamaño de la entrada determinará el formato que se utilice)

Tiempo  
Se puede proporcionar con formato HHmm o HHmmss (el tamaño de la entrada determinará qué formato se utilizará)

programParams  
Esto se pasará al programa como mapa.

scheduleMisfirePolicy  
Define la estrategia utilizada cuando un desencadenador no se activa correctamente. A continuación se muestran los posibles valores:  

1. Libera la primera activación incorrecta y descarta las demás activaciones incorrectas.

1. Envíe un trabajo en espera para la primera activación incorrecta y descarte las demás activaciones incorrectas.

1. Descarte la activación incorrecta.

1. Libere todas las activaciones incorrectas. La cola de trabajos ejecutará todos los trabajos.

## Lista de respuestas a los trabajos programados
<a name="list-scheduled-jobs"></a>

 Esta es la estructura del punto de conexión de la cola de trabajos de la lista de trabajos. El mensaje de envío de trabajo que se ha utilizado para enviar ese trabajo forma parte de la respuesta. Este se puede utilizar para realizar un seguimiento, realizar pruebas o volver a enviarlo. Cuando se complete un trabajo, también se rellenarán la fecha de inicio y la fecha de finalización.

```
[
  {
    "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 respuestas de trabajos recurrentes
<a name="list-on-hold-jobs"></a>

Esta es la estructura del punto final de la cola de the /schedule/list trabajos.

```
[
  {
    "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": ""
  }
]
```