Gestion des Actions
Opérations CRUD complètes pour gérer les actions dans votre projet mindzieStudio. Les actions sont des composants de workflow pouvant être exécutés pour réaliser des tâches automatisées.
Points de terminaison API
| Méthode | Point de terminaison | Description |
|---|---|---|
| GET | /api/{tenantId}/{projectId}/action |
Lister toutes les actions |
| GET | /api/{tenantId}/{projectId}/action/{actionId} |
Obtenir les détails d'une action |
| POST | /api/{tenantId}/{projectId}/action |
Créer une action |
| PUT | /api/{tenantId}/{projectId}/action/{actionId} |
Mettre à jour une action |
| DELETE | /api/{tenantId}/{projectId}/action/{actionId} |
Supprimer une action |
| POST | /api/{tenantId}/{projectId}/action/{actionId}/enable |
Activer une action |
| POST | /api/{tenantId}/{projectId}/action/{actionId}/disable |
Désactiver une action |
Lister toutes les actions
GET /api/{tenantId}/{projectId}/action
Récupère toutes les actions configurées pour un projet.
Paramètres de chemin
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
tenantId |
GUID | Oui | Identifiant de votre locataire |
projectId |
GUID | Oui | Identifiant de votre projet |
Réponse (200 OK)
{
"actions": [
{
"actionId": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"projectId": "87654321-4321-4321-4321-210987654321",
"name": "Actualisation quotidienne des données",
"description": "Actualise les données des systèmes sources quotidiennement",
"isEnabled": true,
"maxRunTime": 3600,
"actionStatus": "Idle",
"nextRunTime": "2024-01-16T06:00:00Z",
"lastRunTime": "2024-01-15T06:00:00Z",
"lastRunResult": "Success",
"dateCreated": "2024-01-01T10:00:00Z",
"dateModified": "2024-01-15T14:30:00Z",
"createdBy": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"modifiedBy": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"triggers": [...],
"steps": [...]
}
],
"totalCount": 1
}
Obtenir les détails d'une action
GET /api/{tenantId}/{projectId}/action/{actionId}
Récupère les informations détaillées d'une action spécifique.
Paramètres de chemin
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
tenantId |
GUID | Oui | Identifiant de votre locataire |
projectId |
GUID | Oui | Identifiant de votre projet |
actionId |
GUID | Oui | L'action à récupérer |
Réponse (200 OK)
{
"actionId": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"projectId": "87654321-4321-4321-4321-210987654321",
"name": "Actualisation quotidienne des données",
"description": "Actualise les données des systèmes sources quotidiennement",
"isEnabled": true,
"maxRunTime": 3600,
"actionStatus": "Idle",
"nextRunTime": "2024-01-16T06:00:00Z",
"lastRunTime": "2024-01-15T06:00:00Z",
"lastRunResult": "Success",
"dateCreated": "2024-01-01T10:00:00Z",
"dateModified": "2024-01-15T14:30:00Z",
"createdBy": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"modifiedBy": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"triggers": [
{
"triggerId": "11111111-1111-1111-1111-111111111111",
"actionId": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"triggerType": "DailyScheduler",
"settings": "{}",
"frequency": 1,
"eventName": null,
"startDate": "2024-01-01",
"dateCreated": "2024-01-01T10:00:00Z"
}
],
"steps": [
{
"stepId": "22222222-2222-2222-2222-222222222222",
"actionId": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"stepNumber": 1,
"stepType": "Python",
"description": "Exécuter le script d'actualisation des données",
"settings": "{\"script\": \"refresh_data.py\"}",
"dateCreated": "2024-01-01T10:00:00Z"
}
]
}
Champs de réponse
| Champ | Type | Description |
|---|---|---|
actionId |
GUID | Identifiant unique de l'action |
projectId |
GUID | Projet auquel appartient cette action |
name |
string | Nom affiché |
description |
string | Description de l'action |
isEnabled |
boolean | Indique si l'action est activée |
maxRunTime |
entier | Durée maximale d'exécution en secondes |
actionStatus |
string | Statut actuel (Idle, Running, etc.) |
nextRunTime |
datetime | Prochaine planification d'exécution |
lastRunTime |
datetime | Dernière exécution |
lastRunResult |
string | Résultat de la dernière exécution |
triggers |
tableau | Configurations des déclencheurs |
steps |
tableau | Définitions des étapes de l'action |
Créer une action
POST /api/{tenantId}/{projectId}/action
Créer une nouvelle action dans le projet.
Paramètres de chemin
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
tenantId |
GUID | Oui | Identifiant de votre locataire |
projectId |
GUID | Oui | Identifiant de votre projet |
Corps de la requête
{
"name": "Rapport hebdomadaire",
"description": "Générer le rapport d'analyse hebdomadaire",
"isEnabled": true,
"maxRunTime": 1800,
"steps": [
{
"stepNumber": 1,
"stepType": "Python",
"description": "Générer le rapport",
"settings": "{\"script\": \"generate_report.py\"}"
},
{
"stepNumber": 2,
"stepType": "Email",
"description": "Envoyer le rapport par email",
"settings": "{\"recipients\": [\"team@company.com\"]}"
}
],
"triggers": [
{
"triggerType": "WeeklyScheduler",
"frequency": 1,
"startDate": "2024-01-08"
}
]
}
Champs de la requête
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
name |
string | Oui | Nom de l'action (doit être unique dans le projet) |
description |
string | Non | Description de l'action |
isEnabled |
boolean | Non | Indique si l'action est activée (par défaut : true) |
maxRunTime |
integer | Non | Durée maximale d'exécution en secondes (par défaut : 3600) |
steps |
tableau | Oui | Au moins une étape est requise |
triggers |
tableau | Non | Configurations optionnelles des déclencheurs |
Objet Étape
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
stepNumber |
integer | Non | Ordre d'exécution (attribué automatiquement si non spécifié) |
stepType |
string | Oui | Type : Python, Email, Webhook, etc. |
description |
string | Non | Description de l'étape |
settings |
string | Oui | Configuration JSON de l'étape |
Objet Déclencheur
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
triggerType |
string | Oui | Type : HourlyScheduler, DailyScheduler, WeeklyScheduler, MonthlyScheduler, EventTrigger |
frequency |
integer | Non | Multiplicateur de fréquence |
startDate |
date | Non | Date de démarrage du planning |
eventName |
string | Non | Nom de l'événement (pour EventTrigger) |
settings |
string | Non | Paramètres supplémentaires du déclencheur |
Réponse (201 Created)
Retourne l'action créée avec les ID assignés.
Réponses d'erreur
Conflit (409) - Nom en double
{
"Error": "Une action avec ce nom existe déjà dans le projet"
}
Mettre à jour une action
PUT /api/{tenantId}/{projectId}/action/{actionId}
Mettre à jour une action existante.
Paramètres de chemin
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
tenantId |
GUID | Oui | Identifiant de votre locataire |
projectId |
GUID | Oui | Identifiant de votre projet |
actionId |
GUID | Oui | L'action à mettre à jour |
Corps de la requête
{
"name": "Rapport hebdomadaire mis à jour",
"description": "Description mise à jour",
"isEnabled": true,
"maxRunTime": 2400,
"steps": [
{
"stepId": "22222222-2222-2222-2222-222222222222",
"stepNumber": 1,
"stepType": "Python",
"description": "Étape mise à jour",
"settings": "{\"script\": \"updated_report.py\"}"
}
],
"triggers": [
{
"triggerId": "11111111-1111-1111-1111-111111111111",
"triggerType": "DailyScheduler",
"frequency": 1,
"startDate": "2024-02-01"
}
]
}
Tous les champs sont optionnels - seules les valeurs fournies seront mises à jour.
Réponse (200 OK)
Retourne l'action mise à jour.
Supprimer une action
DELETE /api/{tenantId}/{projectId}/action/{actionId}
Supprimer définitivement une action.
Paramètres de chemin
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
tenantId |
GUID | Oui | Identifiant de votre locataire |
projectId |
GUID | Oui | Identifiant de votre projet |
actionId |
GUID | Oui | L'action à supprimer |
Réponse (204 No Content)
Réponse vide en cas de succès.
Activer une action
POST /api/{tenantId}/{projectId}/action/{actionId}/enable
Activer une action désactivée.
Réponse (200 OK)
Retourne l'action mise à jour avec isEnabled: true.
Désactiver une action
POST /api/{tenantId}/{projectId}/action/{actionId}/disable
Désactiver une action.
Réponse (200 OK)
Retourne l'action mise à jour avec isEnabled: false.
Exemples d'implémentation
cURL
# Lister toutes les actions
curl -X GET "https://your-mindzie-instance.com/api/{tenantId}/{projectId}/action" \
-H "Authorization: Bearer YOUR_API_KEY"
# Créer une action
curl -X POST "https://your-mindzie-instance.com/api/{tenantId}/{projectId}/action" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Rapport quotidien",
"description": "Générer le rapport quotidien",
"isEnabled": true,
"steps": [
{
"stepNumber": 1,
"stepType": "Python",
"description": "Exécuter le script de rapport",
"settings": "{\"script\": \"daily_report.py\"}"
}
],
"triggers": [
{
"triggerType": "DailyScheduler",
"frequency": 1,
"startDate": "2024-01-15"
}
]
}'
# Mettre à jour une action
curl -X PUT "https://your-mindzie-instance.com/api/{tenantId}/{projectId}/action/{actionId}" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Rapport quotidien mis à jour"}'
# Supprimer une action
curl -X DELETE "https://your-mindzie-instance.com/api/{tenantId}/{projectId}/action/{actionId}" \
-H "Authorization: Bearer YOUR_API_KEY"
# Activer / désactiver une action
curl -X POST "https://your-mindzie-instance.com/api/{tenantId}/{projectId}/action/{actionId}/enable" \
-H "Authorization: Bearer YOUR_API_KEY"
curl -X POST "https://your-mindzie-instance.com/api/{tenantId}/{projectId}/action/{actionId}/disable" \
-H "Authorization: Bearer YOUR_API_KEY"
Python
import requests
BASE_URL = 'https://your-mindzie-instance.com'
TENANT_ID = '12345678-1234-1234-1234-123456789012'
PROJECT_ID = '87654321-4321-4321-4321-210987654321'
class ActionManager:
def __init__(self, api_key):
self.headers = {
'Authorization': f'Bearer {api_key}',
'Content-Type': 'application/json'
}
def list_actions(self):
"""Lister toutes les actions."""
url = f'{BASE_URL}/api/{TENANT_ID}/{PROJECT_ID}/action'
response = requests.get(url, headers=self.headers)
response.raise_for_status()
return response.json()
def get_action(self, action_id):
"""Obtenir les détails d'une action."""
url = f'{BASE_URL}/api/{TENANT_ID}/{PROJECT_ID}/action/{action_id}'
response = requests.get(url, headers=self.headers)
response.raise_for_status()
return response.json()
def create_action(self, name, steps, description=None, triggers=None):
"""Créer une nouvelle action."""
url = f'{BASE_URL}/api/{TENANT_ID}/{PROJECT_ID}/action'
data = {
'name': name,
'description': description,
'isEnabled': True,
'steps': steps,
'triggers': triggers or []
}
response = requests.post(url, json=data, headers=self.headers)
response.raise_for_status()
return response.json()
def update_action(self, action_id, **kwargs):
"""Mettre à jour une action."""
url = f'{BASE_URL}/api/{TENANT_ID}/{PROJECT_ID}/action/{action_id}'
response = requests.put(url, json=kwargs, headers=self.headers)
response.raise_for_status()
return response.json()
def delete_action(self, action_id):
"""Supprimer une action."""
url = f'{BASE_URL}/api/{TENANT_ID}/{PROJECT_ID}/action/{action_id}'
response = requests.delete(url, headers=self.headers)
response.raise_for_status()
def enable_action(self, action_id):
"""Activer une action."""
url = f'{BASE_URL}/api/{TENANT_ID}/{PROJECT_ID}/action/{action_id}/enable'
response = requests.post(url, headers=self.headers)
response.raise_for_status()
return response.json()
def disable_action(self, action_id):
"""Désactiver une action."""
url = f'{BASE_URL}/api/{TENANT_ID}/{PROJECT_ID}/action/{action_id}/disable'
response = requests.post(url, headers=self.headers)
response.raise_for_status()
return response.json()
# Utilisation
manager = ActionManager('your-api-key')
# Créer une action
action = manager.create_action(
name='Rapport quotidien',
description='Générer un rapport d\'analyse quotidien',
steps=[
{
'stepNumber': 1,
'stepType': 'Python',
'description': 'Générer le rapport',
'settings': '{"script": "daily_report.py"}'
}
],
triggers=[
{
'triggerType': 'DailyScheduler',
'frequency': 1,
'startDate': '2024-01-15'
}
]
)
print(f"Action créée : {action['actionId']}")
# Désactiver puis activer
manager.disable_action(action['actionId'])
print("Action désactivée")
manager.enable_action(action['actionId'])
print("Action activée")
# Mettre à jour l'action
updated = manager.update_action(action['actionId'], name='Rapport quotidien mis à jour')
# Supprimer l'action
manager.delete_action(action['actionId'])
print("Action supprimée")
JavaScript/Node.js
const BASE_URL = 'https://your-mindzie-instance.com';
const TENANT_ID = '12345678-1234-1234-1234-123456789012';
const PROJECT_ID = '87654321-4321-4321-4321-210987654321';
class ActionManager {
constructor(apiKey) {
this.headers = {
'Authorization': `Bearer ${apiKey}`,
'Content-Type': 'application/json'
};
}
async listActions() {
const url = `${BASE_URL}/api/${TENANT_ID}/${PROJECT_ID}/action`;
const response = await fetch(url, { headers: this.headers });
if (!response.ok) throw new Error(`Échec : ${response.status}`);
return response.json();
}
async createAction(name, steps, description = null, triggers = []) {
const url = `${BASE_URL}/api/${TENANT_ID}/${PROJECT_ID}/action`;
const response = await fetch(url, {
method: 'POST',
headers: this.headers,
body: JSON.stringify({ name, description, isEnabled: true, steps, triggers })
});
if (!response.ok) throw new Error(`Échec : ${response.status}`);
return response.json();
}
async updateAction(actionId, updates) {
const url = `${BASE_URL}/api/${TENANT_ID}/${PROJECT_ID}/action/${actionId}`;
const response = await fetch(url, {
method: 'PUT',
headers: this.headers,
body: JSON.stringify(updates)
});
if (!response.ok) throw new Error(`Échec : ${response.status}`);
return response.json();
}
async deleteAction(actionId) {
const url = `${BASE_URL}/api/${TENANT_ID}/${PROJECT_ID}/action/${actionId}`;
const response = await fetch(url, {
method: 'DELETE',
headers: this.headers
});
if (!response.ok) throw new Error(`Échec : ${response.status}`);
}
async enableAction(actionId) {
const url = `${BASE_URL}/api/${TENANT_ID}/${PROJECT_ID}/action/${actionId}/enable`;
const response = await fetch(url, { method: 'POST', headers: this.headers });
if (!response.ok) throw new Error(`Échec : ${response.status}`);
return response.json();
}
async disableAction(actionId) {
const url = `${BASE_URL}/api/${TENANT_ID}/${PROJECT_ID}/action/${actionId}/disable`;
const response = await fetch(url, { method: 'POST', headers: this.headers });
if (!response.ok) throw new Error(`Échec : ${response.status}`);
return response.json();
}
}
// Utilisation
const manager = new ActionManager('your-api-key');
// Créer une action
const action = await manager.createAction(
'Rapport quotidien',
[{ stepNumber: 1, stepType: 'Python', description: 'Exécuter le script', settings: '{}' }],
'Générer un rapport quotidien',
[{ triggerType: 'DailyScheduler', frequency: 1, startDate: '2024-01-15' }]
);
// Activer/désactiver
await manager.disableAction(action.actionId);
await manager.enableAction(action.actionId);
// Supprimer
await manager.deleteAction(action.actionId);
Bonnes pratiques
- Noms uniques : Les noms d'action doivent être uniques dans un projet
- Ordre des étapes : Les étapes s'exécutent dans l'ordre de stepNumber
- Activer/Désactiver : Utilisez les points de terminaison pour activer/désactiver plutôt que supprimer et recréer
- Déclencheurs : Choisissez les types de déclencheurs adaptés à vos besoins de planification
- MaxRunTime : Définissez des délais raisonnables pour éviter les actions incontrôlées