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 Su identificador de tenant
projectId GUID Su identificador de proyecto
actionId GUID 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 actionExecutionId devuelto 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