Historique d'Exécution des Actions

Suivez et surveillez l'historique d'exécution des actions et téléchargez les packages de résultats.

Vue d'ensemble

L'API d'Exécution des Actions fournit des points de terminaison pour suivre l'historique d'exécution des actions, surveiller le statut et télécharger les résultats d'exécution. Cette API utilise un contrôleur distinct de l'API principale des Actions.

URL de base : /api/{tenantId}/{projectId}/actionexecution

Obtenir l'Historique d'Exécution d'une Action

GET /api/{tenantId}/{projectId}/actionexecution/action/{actionId}

Récupère tout l'historique d'exécution pour une action spécifique.

Requête

GET https://your-mindzie-instance.com/api/{tenantId}/{projectId}/actionexecution/action/{actionId}
Authorization: Bearer {your-access-token}

Paramètres de chemin

Paramètre Type Obligatoire Description
tenantId GUID Oui Identifiant de votre tenant
projectId GUID Oui Identifiant de votre projet
actionId GUID Oui L'action pour laquelle obtenir l'historique d'exécution

Réponse

Succès (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
    }
  ]
}

Obtenir la Dernière Exécution d'une Action

GET /api/{tenantId}/{projectId}/actionexecution/lastaction/{actionId}

Récupère la dernière exécution pour une action spécifique.

Requête

GET https://your-mindzie-instance.com/api/{tenantId}/{projectId}/actionexecution/lastaction/{actionId}
Authorization: Bearer {your-access-token}

Paramètres de chemin

Paramètre Type Obligatoire Description
tenantId GUID Oui Identifiant de votre tenant
projectId GUID Oui Identifiant de votre projet
actionId GUID Oui L'action pour laquelle obtenir la dernière exécution

Réponse

Succès (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
}

Non trouvé (404) :

{
  "error": "Can't find action",
  "actionId": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
}

Obtenir les Détails d'une Exécution Spécifique

GET /api/{tenantId}/{projectId}/actionexecution/{executionId}

Récupère les détails d'une exécution spécifique par son identifiant d'exécution.

Requête

GET https://your-mindzie-instance.com/api/{tenantId}/{projectId}/actionexecution/{executionId}
Authorization: Bearer {your-access-token}

Paramètres de chemin

Paramètre Type Obligatoire Description
tenantId GUID Oui Identifiant de votre tenant
projectId GUID Oui Identifiant de votre projet
executionId GUID Oui L'exécution à récupérer

Réponse

Succès (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
}

Non trouvé (404) :

{
  "error": "Can't find action",
  "executionId": "11111111-2222-3333-4444-555555555555"
}

Télécharger le Package d'Exécution

GET /api/{tenantId}/{projectId}/actionexecution/downloadpackage/{executionId}

Télécharge le package de résultats (fichier ZIP) pour une exécution terminée.

Requête

GET https://your-mindzie-instance.com/api/{tenantId}/{projectId}/actionexecution/downloadpackage/{executionId}
Authorization: Bearer {your-access-token}

Paramètres de chemin

Paramètre Type Obligatoire Description
tenantId GUID Oui Identifiant de votre tenant
projectId GUID Oui Identifiant de votre projet
executionId GUID Oui L'exécution pour laquelle télécharger les résultats

Réponse

Succès (200 OK) :

Retourne un téléchargement de fichier ZIP contenant les résultats d'exécution, rapports et artefacts.

HTTP/1.1 200 OK
Content-Type: application/zip
Content-Disposition: attachment; filename="{executionId}.zip"

[binary ZIP file content]

Non trouvé (404) :

{
  "error": "Execution not found",
  "executionId": "11111111-2222-3333-4444-555555555555"
}
{
  "error": "Zip file not found",
  "executionId": "11111111-2222-3333-4444-555555555555"
}

Champs de la Réponse d'Exécution

Champ Type Description
actionId GUID L'action qui a été exécutée
actionExecutionId GUID Identifiant unique de cette exécution
dateStarted datetime Date de début de l'exécution
dateEnded datetime Date de fin de l'exécution (null si en cours)
status string Statut actuel de l'exécution
notes string Notes d'exécution ou messages d'erreur

Valeurs du Statut d'Exécution

Statut Description
Queued L'exécution est en file d'attente, en attente de démarrage
Running L'exécution est en cours
Completed L'exécution est terminée avec succès
Failed L'exécution a rencontré une erreur

Exemples d'Implémentation

cURL

# Obtenir l'historique d'exécution d'une action
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"

# Obtenir la dernière exécution
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"

# Obtenir une exécution spécifique
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"

# Télécharger le package d'exécution
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';

// Obtenir l'historique d'exécution d'une action
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}`);
};

// Obtenir la dernière exécution d'une action
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}`);
};

// Obtenir les détails d'une exécution spécifique
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}`);
};

// Télécharger le package d'exécution
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();
    // Enregistrez ou traitez le fichier 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):
    """Obtenir toutes les exécutions pour une action."""
    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):
    """Obtenir la dernière exécution pour une action."""
    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):
    """Obtenir les détails pour une exécution spécifique."""
    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):
    """Télécharger le package de résultats d'exécution."""
    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

# Exemple : Surveiller l'exécution jusqu'à sa fin
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'Exécution terminée avec succès')
            return execution
        elif status == 'Failed':
            print(f'Exécution échouée : {execution.get("notes", "Erreur inconnue")}')
            return execution
        else:
            print(f'Statut : {status}, en attente...')
            time.sleep(5)

    raise TimeoutError('L’exécution n’a pas été terminée dans le délai imparti')

Bonnes Pratiques

  • Interroger pour le statut : Après avoir exécuté une action, interrogez le point d'exécution pour surveiller la progression
  • Gérer les actions longues : Utilisez des délais d'attente appropriés lors de l'attente d'une complétion
  • Télécharger les résultats : Pour les actions produisant une sortie, téléchargez le package après la complétion
  • Gestion des erreurs : Vérifiez le champ notes pour les détails d'erreur lorsque le statut est "Failed"
  • Historique d'exécution : Utilisez les points d'historique pour l'audit et le débogage des exécutions passées