Historial de Ejecución de Acciones
Realice el seguimiento y monitoreo del historial de ejecución de acciones y descargue los paquetes de resultados.
Visión General
La API de Ejecución de Acciones proporciona endpoints para rastrear el historial de ejecución de acciones, monitorear el estado y descargar los resultados de la ejecución. Esta API usa un controlador separado del API principal de Acciones.
URL Base: /api/{tenantId}/{projectId}/actionexecution
Obtener Historial de Ejecución de una Acción
GET /api/{tenantId}/{projectId}/actionexecution/action/{actionId}
Recupera todo el historial de ejecución para una acción específica.
Solicitud
GET https://your-mindzie-instance.com/api/{tenantId}/{projectId}/actionexecution/action/{actionId}
Authorization: Bearer {your-access-token}
Parámetros de Ruta
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
tenantId |
GUID | Sí | Identificador de tu tenant |
projectId |
GUID | Sí | Identificador de tu proyecto |
actionId |
GUID | Sí | La acción para obtener el historial de ejecución |
Respuesta
Éxito (200 OK):
{
"items": [
{
"actionId": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"actionExecutionId": "11111111-2222-3333-4444-555555555555",
"dateStarted": "2024-01-15T10:30:00Z",
"dateEnded": "2024-01-15T10:32:15Z",
"status": "Completed",
"notes": null
},
{
"actionId": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"actionExecutionId": "22222222-3333-4444-5555-666666666666",
"dateStarted": "2024-01-14T10:30:00Z",
"dateEnded": "2024-01-14T10:31:45Z",
"status": "Completed",
"notes": null
}
]
}
Obtener Última Ejecución de una Acción
GET /api/{tenantId}/{projectId}/actionexecution/lastaction/{actionId}
Recupera la ejecución más reciente para una acción específica.
Solicitud
GET https://your-mindzie-instance.com/api/{tenantId}/{projectId}/actionexecution/lastaction/{actionId}
Authorization: Bearer {your-access-token}
Parámetros de Ruta
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
tenantId |
GUID | Sí | Identificador de tu tenant |
projectId |
GUID | Sí | Identificador de tu proyecto |
actionId |
GUID | Sí | La acción para obtener la última ejecución |
Respuesta
Éxito (200 OK):
{
"actionId": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"actionExecutionId": "11111111-2222-3333-4444-555555555555",
"dateStarted": "2024-01-15T10:30:00Z",
"dateEnded": "2024-01-15T10:32:15Z",
"status": "Completed",
"notes": null
}
No Encontrado (404):
{
"error": "Can't find action",
"actionId": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
}
Obtener Detalles de una Ejecución Específica
GET /api/{tenantId}/{projectId}/actionexecution/{executionId}
Recupera detalles para una ejecución específica por su ID de ejecución.
Solicitud
GET https://your-mindzie-instance.com/api/{tenantId}/{projectId}/actionexecution/{executionId}
Authorization: Bearer {your-access-token}
Parámetros de Ruta
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
tenantId |
GUID | Sí | Identificador de tu tenant |
projectId |
GUID | Sí | Identificador de tu proyecto |
executionId |
GUID | Sí | La ejecución a recuperar |
Respuesta
Éxito (200 OK):
{
"actionId": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"actionExecutionId": "11111111-2222-3333-4444-555555555555",
"dateStarted": "2024-01-15T10:30:00Z",
"dateEnded": "2024-01-15T10:32:15Z",
"status": "Completed",
"notes": null
}
No Encontrado (404):
{
"error": "Can't find action",
"executionId": "11111111-2222-3333-4444-555555555555"
}
Descargar Paquete de Ejecución
GET /api/{tenantId}/{projectId}/actionexecution/downloadpackage/{executionId}
Descarga el paquete de resultados (archivo ZIP) para una ejecución completada.
Solicitud
GET https://your-mindzie-instance.com/api/{tenantId}/{projectId}/actionexecution/downloadpackage/{executionId}
Authorization: Bearer {your-access-token}
Parámetros de Ruta
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
tenantId |
GUID | Sí | Identificador de tu tenant |
projectId |
GUID | Sí | Identificador de tu proyecto |
executionId |
GUID | Sí | La ejecución para la cual descargar resultados |
Respuesta
Éxito (200 OK):
Devuelve la descarga de un archivo ZIP que contiene los resultados de la ejecución, reportes y artefactos.
HTTP/1.1 200 OK
Content-Type: application/zip
Content-Disposition: attachment; filename="{executionId}.zip"
[binary ZIP file content]
No Encontrado (404):
{
"error": "Execution not found",
"executionId": "11111111-2222-3333-4444-555555555555"
}
{
"error": "Zip file not found",
"executionId": "11111111-2222-3333-4444-555555555555"
}
Campos de Respuesta de Ejecución
| Campo | Tipo | Descripción |
|---|---|---|
actionId |
GUID | La acción que fue ejecutada |
actionExecutionId |
GUID | Identificador único de esta ejecución |
dateStarted |
datetime | Momento en que se inició la ejecución |
dateEnded |
datetime | Momento en que la ejecución finalizó (null si sigue en ejecución) |
status |
string | Estado actual de la ejecución |
notes |
string | Notas de la ejecución o mensajes de error |
Valores de Estado de la Ejecución
| Estado | Descripción |
|---|---|
| Queued | La ejecución está en cola, esperando para iniciar |
| Running | La ejecución está en progreso |
| Completed | La ejecución finalizó exitosamente |
| Failed | La ejecución encontró un error |
Ejemplos de Implementación
cURL
# Obtener historial de ejecución para una acción
curl -X GET "https://your-mindzie-instance.com/api/12345678-1234-1234-1234-123456789012/87654321-4321-4321-4321-210987654321/actionexecution/action/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
# Obtener última ejecución
curl -X GET "https://your-mindzie-instance.com/api/12345678-1234-1234-1234-123456789012/87654321-4321-4321-4321-210987654321/actionexecution/lastaction/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
# Obtener ejecución específica
curl -X GET "https://your-mindzie-instance.com/api/12345678-1234-1234-1234-123456789012/87654321-4321-4321-4321-210987654321/actionexecution/11111111-2222-3333-4444-555555555555" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
# Descargar paquete de ejecución
curl -X GET "https://your-mindzie-instance.com/api/12345678-1234-1234-1234-123456789012/87654321-4321-4321-4321-210987654321/actionexecution/downloadpackage/11111111-2222-3333-4444-555555555555" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-o execution_results.zip
JavaScript/Node.js
const TENANT_ID = '12345678-1234-1234-1234-123456789012';
const PROJECT_ID = '87654321-4321-4321-4321-210987654321';
const BASE_URL = 'https://your-mindzie-instance.com';
// Obtener historial de ejecución para una acción
const getExecutionHistory = async (actionId, token) => {
const url = `${BASE_URL}/api/${TENANT_ID}/${PROJECT_ID}/actionexecution/action/${actionId}`;
const response = await fetch(url, {
headers: { 'Authorization': `Bearer ${token}` }
});
if (response.ok) {
const result = await response.json();
return result.items;
}
throw new Error(`Failed: ${response.status}`);
};
// Obtener última ejecución para una acción
const getLastExecution = async (actionId, token) => {
const url = `${BASE_URL}/api/${TENANT_ID}/${PROJECT_ID}/actionexecution/lastaction/${actionId}`;
const response = await fetch(url, {
headers: { 'Authorization': `Bearer ${token}` }
});
if (response.ok) {
return await response.json();
} else if (response.status === 404) {
return null;
}
throw new Error(`Failed: ${response.status}`);
};
// Obtener detalles de una ejecución específica
const getExecution = async (executionId, token) => {
const url = `${BASE_URL}/api/${TENANT_ID}/${PROJECT_ID}/actionexecution/${executionId}`;
const response = await fetch(url, {
headers: { 'Authorization': `Bearer ${token}` }
});
if (response.ok) {
return await response.json();
}
throw new Error(`Failed: ${response.status}`);
};
// Descargar paquete de ejecución
const downloadPackage = async (executionId, token) => {
const url = `${BASE_URL}/api/${TENANT_ID}/${PROJECT_ID}/actionexecution/downloadpackage/${executionId}`;
const response = await fetch(url, {
headers: { 'Authorization': `Bearer ${token}` }
});
if (response.ok) {
const blob = await response.blob();
// Guardar o procesar el archivo ZIP
return blob;
}
throw new Error(`Failed: ${response.status}`);
};
Python
import requests
TENANT_ID = '12345678-1234-1234-1234-123456789012'
PROJECT_ID = '87654321-4321-4321-4321-210987654321'
BASE_URL = 'https://your-mindzie-instance.com'
def get_execution_history(action_id, token):
"""Obtener todas las ejecuciones para una acción."""
url = f'{BASE_URL}/api/{TENANT_ID}/{PROJECT_ID}/actionexecution/action/{action_id}'
headers = {'Authorization': f'Bearer {token}'}
response = requests.get(url, headers=headers)
response.raise_for_status()
return response.json()['items']
def get_last_execution(action_id, token):
"""Obtener la ejecución más reciente para una acción."""
url = f'{BASE_URL}/api/{TENANT_ID}/{PROJECT_ID}/actionexecution/lastaction/{action_id}'
headers = {'Authorization': f'Bearer {token}'}
response = requests.get(url, headers=headers)
if response.status_code == 404:
return None
response.raise_for_status()
return response.json()
def get_execution(execution_id, token):
"""Obtener detalles de una ejecución específica."""
url = f'{BASE_URL}/api/{TENANT_ID}/{PROJECT_ID}/actionexecution/{execution_id}'
headers = {'Authorization': f'Bearer {token}'}
response = requests.get(url, headers=headers)
response.raise_for_status()
return response.json()
def download_package(execution_id, token, output_path):
"""Descargar el paquete de resultados de la ejecución."""
url = f'{BASE_URL}/api/{TENANT_ID}/{PROJECT_ID}/actionexecution/downloadpackage/{execution_id}'
headers = {'Authorization': f'Bearer {token}'}
response = requests.get(url, headers=headers)
response.raise_for_status()
with open(output_path, 'wb') as f:
f.write(response.content)
return output_path
# Ejemplo: Monitorear la ejecución hasta que finalice
def wait_for_completion(execution_id, token, max_wait_seconds=300):
import time
start_time = time.time()
while time.time() - start_time < max_wait_seconds:
execution = get_execution(execution_id, token)
status = execution['status']
if status == 'Completed':
print(f'Ejecución completada exitosamente')
return execution
elif status == 'Failed':
print(f'Ejecución fallida: {execution.get("notes", "Error desconocido")}')
return execution
else:
print(f'Estado: {status}, esperando...')
time.sleep(5)
raise TimeoutError('La ejecución no finalizó dentro del tiempo de espera')
Mejores Prácticas
- Consultar el Estado: Después de ejecutar una acción, consulte el endpoint de ejecución para monitorear el progreso
- Manejar Acciones de Larga Duración: Use tiempos de espera adecuados al esperar la finalización
- Descargar Resultados: Para acciones que generen salida, descargue el paquete después de la finalización
- Manejo de Errores: Consulte el campo
notespara detalles de errores cuando el estado sea "Failed" - Historial de Ejecución: Use los endpoints de historial para auditoría y depuración de ejecuciones pasadas