Invocar reglas manuales
ajat invoke ejecuta una regla de Jira Cloud Automation de activación manual contra uno o varios objetos objetivo, igual que hace el botón “Trigger rule” en la interfaz de Jira. Las reglas manuales se disparan bajo demanda contra incidencias o alertas concretas en lugar de programarse, y este comando permite dispararlas desde un script o pipeline de CI mediante POST /rest/v1/rule/manual/{ruleId}/invocation.
ajat invoke ejecuta la regla contra tu tenant de Jira
Cloud en vivo. Es plan previo: el plan (UUID de la regla resuelto,
lista de objetivos y entradas) se imprime y se te pide confirmación antes de
disparar la regla. Usa —dry-run para previsualizar y salir; usa
—yes para omitir la confirmación en automatización (obligatorio
cuando stdin no es un TTY).
ajat funciona únicamente con Atlassian Jira Cloud Automation. No es compatible con Jira Server ni con Jira Data Center.
Uso
ajat invoke <rule-uuid> \
--target <PROJ-KEY|issue-key|ARI> [--target ...]... \
[--from-file <path>] \
[--input KEY=VALUE]... \
[--inputs-file <path>] \
[--dry-run] [--yes] [--format table|json]Identifica la regla por su UUID. Usa ajat rule manual list para descubrir las reglas manuales que aplican a un objetivo y sus UUIDs.
Flags
| Flag | Predeterminado | Descripción |
|---|---|---|
--target <key|ari> | [] | Objeto objetivo como ARI o clave de incidencia de Jira. Repetible. |
--from-file <path> | (ninguno) | Archivo con un objetivo por línea (se ignoran líneas en blanco y comentarios #). |
--input KEY=VALUE | [] | Entrada de usuario, enviada con inputType=TEXT. Repetible. |
--inputs-file <path> | (ninguno) | Archivo JSON con el mapa userInputs. Anula a --input. |
--dry-run | false | Imprime el plan y sale sin invocar la regla. |
--yes | false | Omite la confirmación interactiva. |
--format table|json | table | Formato de salida. |
Objetivos
--target acepta dos formas equivalentes. Las entradas se detectan por prefijo: todo lo que empieza por ari: se trata como un ARI; cualquier otra cosa se trata como una clave de incidencia.
| Forma | Ejemplo | Qué ocurre |
|---|---|---|
| ARI | ari:cloud:jira:<cloudId>:issue/10042 | Se pasa a la API tal cual. También funciona para ARIs que no son incidencias, como alertas. |
| Clave de incidencia | PROJ-123 | Se resuelve al ARI canónico de la incidencia mediante GET /rest/api/3/issue/{key} antes de la invocación. La resolución se muestra en el plan impreso. |
Un error tipográfico en un ARI se intentará como clave de incidencia y fallará indicando la entrada infractora en el error: vuelve a ejecutar con el objetivo corregido. Ambas formas pueden mezclarse en un mismo comando, y el orden de entrada se conserva en el plan y la salida.
Para ejecuciones masivas, escribe un objetivo por línea en un archivo y pásalo con --from-file. Se ignoran las líneas en blanco y los comentarios #:
# targets.txt
PROJ-123
PROJ-124
ari:cloud:jira:<tenant>:alert/abcajat invoke 11111111-2222-3333-4444-555555555555 --from-file ./targets.txt --yesEntradas de usuario
Una regla manual en Jira puede declarar entradas tipadas: los campos que el usuario ve en el diálogo de la interfaz. ajat invoke las suministra de dos maneras.
--input KEY=VALUE (conveniencia, solo TEXT)
Cada valor se envía como {"inputType": "TEXT", "value": "<string>"}, lo que cubre el caso común:
ajat invoke 11111111-2222-3333-4444-555555555555 \
--target ari:cloud:jira:<tenant>:issue/10042 \
--input reason="re-triage" --yes--inputs-file <path> (tipado completo)
Escribe el objeto userInputs como JSON y pásalo tal cual. Usa esto cuando la regla declara entradas NUMBER, BOOLEAN u otras que no sean texto:
{
"priority": { "inputType": "NUMBER", "value": 1 },
"escalate": { "inputType": "BOOLEAN", "value": true }
}ajat invoke 11111111-2222-3333-4444-555555555555 \
--target ari:cloud:jira:<tenant>:issue/10042 \
--inputs-file ./inputs.json --yes—inputs-file anula a —input cuando se suministran
ambos: el archivo es la vía de escape para el tipado explícito, así que un
operador que se molestó en escribirlo casi con seguridad quería que prevaleciera.
Modelo de seguridad
- El plan siempre se imprime primero: UUID de la regla resuelto, lista de objetivos y entradas resueltas.
--dry-runsale antes de cualquier llamada a la API.--yeses obligatorio cuando stdin no es un TTY.- Los resultados por objetivo de la API se muestran en la salida. Si algún objetivo devuelve un estado distinto de
SUCCESS, el comando sale con código2.
Ejemplos
# Previsualiza una invocación contra una única incidencia.
ajat invoke 11111111-2222-3333-4444-555555555555 \
--target ari:cloud:jira:<tenant>:issue/1001 --dry-run
# Dispara la regla contra esa incidencia.
ajat invoke 11111111-2222-3333-4444-555555555555 \
--target ari:cloud:jira:<tenant>:issue/1001 --yes
# Ejecución masiva desde un archivo de objetivos.
ajat invoke 11111111-2222-3333-4444-555555555555 \
--from-file ./targets.txt --yesSalida
Tabla (predeterminada)
Invocation results
TARGET STATUS
ari:cloud:jira:<tenant>:issue/1001 SUCCESS
ari:cloud:jira:<tenant>:issue/1002 INVALID_TARGET_OBJECTJSON
ajat invoke 11111111-2222-3333-4444-555555555555 \
--target ari:cloud:jira:<tenant>:issue/1001 --yes --format json{
"rule_id": "11111111-2222-3333-4444-555555555555",
"results": {
"ari:cloud:jira:<tenant>:issue/1001": "SUCCESS",
"ari:cloud:jira:<tenant>:issue/1002": "INVALID_TARGET_OBJECT"
}
}Códigos de salida
| Código | Significado |
|---|---|
0 | Todos los objetivos devolvieron SUCCESS. |
1 | Fallo de arranque / configuración / argumentos. |
2 | Al menos un objetivo devolvió un estado distinto de SUCCESS. |
130 | Interrumpido por SIGINT / SIGTERM. |
Descubrir reglas manuales
Para encontrar el UUID de una regla manual, usa ajat rule manual list:
ajat rule manual list --target PROJ-123
ajat rule manual list --from-file ./targets.txt --format jsonRelacionado
- Operaciones masivas sobre reglas —
rule manual listdescubre reglas manuales; el gruporuletambién desactiva, activa, elimina y recalibra el alcance de reglas en masa. - Export — una instantánea completa captura también las reglas manuales.