Ejecutar Acción
Ejecute la acción programáticamente dentro de mindzieStudio.
Visión general
El endpoint Ejecutar Acción le permite activar una acción específica dentro de mindzieStudio. Las acciones se encolan para su ejecución asincrónica y recibe un ID de ejecución para seguir el progreso.
Ejecutar Acción
GET /api/{tenantId}/{projectId}/action/execute/{actionId}
Ejecute una acción específica por su ID. La acción se añade a una cola de ejecución y se procesa de forma asincrónica.
Solicitud
GET https://your-mindzie-instance.com/api/{tenantId}/{projectId}/action/execute/{actionId}
Authorization: Bearer {your-access-token}
Parámetros de ruta
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
tenantId |
GUID | Sí | Su identificador de tenant |
projectId |
GUID | Sí | Su identificador de proyecto |
actionId |
GUID | Sí | La acción a ejecutar |
Respuesta
Éxito (200 OK):
{
"actionId": "87654321-4321-4321-4321-210987654321",
"actionExecutionId": "11111111-2222-3333-4444-555555555555",
"dateStarted": "2024-01-15T10:30:00Z",
"dateEnded": null,
"status": "Queued",
"notes": null
}
Campos de respuesta
| Campo | Tipo | Descripción |
|---|---|---|
actionId |
GUID | El ID de la acción que se está ejecutando |
actionExecutionId |
GUID | Identificador único para esta instancia de ejecución |
dateStarted |
datetime | Cuándo fue encolada la ejecución |
dateEnded |
datetime | Cuándo finalizó la ejecución (null si sigue en ejecución) |
status |
string | Estado actual de la ejecución |
notes |
string | Notas adicionales o mensajes de error de la ejecución |
Respuestas de error
Acción no encontrada (404):
{
"error": "Action not found",
"actionId": "87654321-4321-4321-4321-210987654321"
}
Error al crear ejecución (404):
{
"error": "Action can't create execution",
"actionId": "87654321-4321-4321-4321-210987654321"
}
No autorizado (401):
HTTP/1.1 401 Unauthorized
{mensaje de error que describe la falla en la autorización}
Valores del estado de ejecución
| Estado | Descripción |
|---|---|
| Queued | La acción está en cola y esperando para ser procesada |
| Running | La acción se está ejecutando actualmente |
| Completed | La acción se completó exitosamente |
| Failed | La ejecución de la acción falló |
Ejemplos de implementación
cURL
curl -X GET "https://your-mindzie-instance.com/api/12345678-1234-1234-1234-123456789012/87654321-4321-4321-4321-210987654321/action/execute/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
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';
const executeAction = async (actionId, token) => {
const url = `${BASE_URL}/api/${TENANT_ID}/${PROJECT_ID}/action/execute/${actionId}`;
try {
const response = await fetch(url, {
method: 'GET',
headers: {
'Authorization': `Bearer ${token}`
}
});
if (response.ok) {
const result = await response.json();
console.log('Acción en cola:', result);
console.log('ID de ejecución:', result.actionExecutionId);
return result;
} else if (response.status === 404) {
const error = await response.json();
console.error('Acción no encontrada:', error);
throw new Error(error.error);
} else {
throw new Error(`Ejecución fallida: ${response.status}`);
}
} catch (error) {
console.error('Error al ejecutar la acción:', error);
throw error;
}
};
// Ejemplo de uso
executeAction('aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee', 'your_token')
.then(result => {
// Almacenar actionExecutionId para seguimiento
const executionId = result.actionExecutionId;
});
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 execute_action(action_id, token):
"""Ejecuta una acción y retorna detalles de la ejecución."""
url = f'{BASE_URL}/api/{TENANT_ID}/{PROJECT_ID}/action/execute/{action_id}'
headers = {
'Authorization': f'Bearer {token}'
}
response = requests.get(url, headers=headers)
if response.ok:
result = response.json()
print(f'Acción en cola: {result}')
print(f'ID de ejecución: {result["actionExecutionId"]}')
return result
elif response.status_code == 404:
error = response.json()
print(f'Acción no encontrada: {error}')
raise Exception(error['error'])
else:
raise Exception(f'Ejecución fallida: {response.status_code}')
# Ejemplo de uso
result = execute_action('aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee', 'your_token')
execution_id = result['actionExecutionId']
C#
using System;
using System.Net.Http;
using System.Text.Json;
using System.Threading.Tasks;
public class ActionExecutionResult
{
public Guid ActionId { get; set; }
public Guid ActionExecutionId { get; set; }
public DateTime? DateStarted { get; set; }
public DateTime? DateEnded { get; set; }
public string Status { get; set; }
public string Notes { get; set; }
}
public class ActionApiClient
{
private readonly HttpClient _httpClient;
private readonly string _baseUrl;
private readonly Guid _tenantId;
private readonly Guid _projectId;
public ActionApiClient(string baseUrl, Guid tenantId, Guid projectId, string accessToken)
{
_baseUrl = baseUrl;
_tenantId = tenantId;
_projectId = projectId;
_httpClient = new HttpClient();
_httpClient.DefaultRequestHeaders.Authorization =
new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken);
}
public async Task<ActionExecutionResult> ExecuteActionAsync(Guid actionId)
{
var url = $"{_baseUrl}/api/{_tenantId}/{_projectId}/action/execute/{actionId}";
var response = await _httpClient.GetAsync(url);
if (response.IsSuccessStatusCode)
{
var json = await response.Content.ReadAsStringAsync();
var result = JsonSerializer.Deserialize<ActionExecutionResult>(json,
new JsonSerializerOptions { PropertyNameCaseInsensitive = true });
Console.WriteLine($"Acción en cola. ID de ejecución: {result.ActionExecutionId}");
return result;
}
else if (response.StatusCode == System.Net.HttpStatusCode.NotFound)
{
throw new Exception($"Acción {actionId} no encontrada");
}
else
{
throw new Exception($"Ejecución fallida: {response.StatusCode}");
}
}
}
Mejores prácticas
- Almacene el ID de ejecución: Siempre guarde el
actionExecutionIddevuelto para realizar el seguimiento del progreso de la ejecución - Verifique que la acción existe: Use primero el endpoint Get Action para verificar que la acción existe y está habilitada
- Maneje la naturaleza asincrónica: Las acciones se ejecutan de forma asincrónica; la respuesta indica que la acción fue encolada, no completada
- Manejo de errores: Implemente un manejo adecuado de errores para respuestas 404 (acción no encontrada) y 401 (no autorizado)
- Idempotencia: Cada llamada crea una nueva ejecución; evite llamadas duplicadas si no es intencionado