Aktionsverwaltung
Vollständige CRUD-Operationen zum Verwalten von Aktionen in Ihrem mindzieStudio-Projekt. Aktionen sind Workflow-Komponenten, die ausgeführt werden können, um automatisierte Aufgaben durchzuführen.
API-Endpunkte
| Methode | Endpunkt | Beschreibung |
|---|---|---|
| GET | /api/{tenantId}/{projectId}/action |
Alle Aktionen auflisten |
| GET | /api/{tenantId}/{projectId}/action/{actionId} |
Aktionsdetails abrufen |
| POST | /api/{tenantId}/{projectId}/action |
Aktion erstellen |
| PUT | /api/{tenantId}/{projectId}/action/{actionId} |
Aktion aktualisieren |
| DELETE | /api/{tenantId}/{projectId}/action/{actionId} |
Aktion löschen |
| POST | /api/{tenantId}/{projectId}/action/{actionId}/enable |
Aktion aktivieren |
| POST | /api/{tenantId}/{projectId}/action/{actionId}/disable |
Aktion deaktivieren |
Alle Aktionen auflisten
GET /api/{tenantId}/{projectId}/action
Alle für ein Projekt konfigurierten Aktionen abrufen.
Pfadparameter
| Parameter | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
tenantId |
GUID | Ja | Ihr Mandantenbezeichner |
projectId |
GUID | Ja | Ihr Projektbezeichner |
Antwort (200 OK)
{
"actions": [
{
"actionId": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"projectId": "87654321-4321-4321-4321-210987654321",
"name": "Daily Data Refresh",
"description": "Aktualisiert täglich Daten aus Quellsystemen",
"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
}
Aktionsdetails abrufen
GET /api/{tenantId}/{projectId}/action/{actionId}
Detaillierte Informationen zu einer bestimmten Aktion abrufen.
Pfadparameter
| Parameter | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
tenantId |
GUID | Ja | Ihr Mandantenbezeichner |
projectId |
GUID | Ja | Ihr Projektbezeichner |
actionId |
GUID | Ja | Die abzurufende Aktion |
Antwort (200 OK)
{
"actionId": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"projectId": "87654321-4321-4321-4321-210987654321",
"name": "Daily Data Refresh",
"description": "Aktualisiert täglich Daten aus Quellsystemen",
"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": "Datenaktualisierungsskript ausführen",
"settings": "{\"script\": \"refresh_data.py\"}",
"dateCreated": "2024-01-01T10:00:00Z"
}
]
}
Antwortfelder
| Feld | Typ | Beschreibung |
|---|---|---|
actionId |
GUID | Einzigartige Aktions-ID |
projectId |
GUID | Projekt, zu dem die Aktion gehört |
name |
string | Anzeigename |
description |
string | Aktionsbeschreibung |
isEnabled |
boolean | Ob die Aktion aktiviert ist |
maxRunTime |
integer | Maximale Laufzeit in Sekunden |
actionStatus |
string | Aktueller Status (Idle, Running, etc.) |
nextRunTime |
datetime | Nächste geplante Ausführung |
lastRunTime |
datetime | Zeit der letzten Ausführung |
lastRunResult |
string | Ergebnis der letzten Ausführung |
triggers |
array | Trigger-Konfigurationen |
steps |
array | Definitionen der Aktionsschritte |
Aktion erstellen
POST /api/{tenantId}/{projectId}/action
Eine neue Aktion im Projekt erstellen.
Pfadparameter
| Parameter | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
tenantId |
GUID | Ja | Ihr Mandantenbezeichner |
projectId |
GUID | Ja | Ihr Projektbezeichner |
Anfragekörper
{
"name": "Weekly Report",
"description": "Wochenbericht erstellen",
"isEnabled": true,
"maxRunTime": 1800,
"steps": [
{
"stepNumber": 1,
"stepType": "Python",
"description": "Bericht erstellen",
"settings": "{\"script\": \"generate_report.py\"}"
},
{
"stepNumber": 2,
"stepType": "Email",
"description": "Bericht per E-Mail senden",
"settings": "{\"recipients\": [\"team@company.com\"]}"
}
],
"triggers": [
{
"triggerType": "WeeklyScheduler",
"frequency": 1,
"startDate": "2024-01-08"
}
]
}
Anfragefelder
| Feld | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
name |
string | Ja | Aktionsname (muss im Projekt einzigartig sein) |
description |
string | Nein | Aktionsbeschreibung |
isEnabled |
boolean | Nein | Ob die Aktion aktiviert ist (Standard: true) |
maxRunTime |
integer | Nein | Maximale Laufzeit in Sekunden (Standard: 3600) |
steps |
array | Ja | Mindestens ein Schritt erforderlich |
triggers |
array | Nein | Optionale Trigger-Konfigurationen |
Schritt-Objekt
| Feld | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
stepNumber |
integer | Nein | Ausführungsreihenfolge (wird automatisch vergeben, wenn nicht angegeben) |
stepType |
string | Ja | Typ: Python, Email, Webhook, etc. |
description |
string | Nein | Schrittbeschreibung |
settings |
string | Ja | JSON-Konfiguration für den Schritt |
Trigger-Objekt
| Feld | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
triggerType |
string | Ja | Typ: HourlyScheduler, DailyScheduler, WeeklyScheduler, MonthlyScheduler, EventTrigger |
frequency |
integer | Nein | Frequenzmultiplikator |
startDate |
date | Nein | Startdatum für den Zeitplan |
eventName |
string | Nein | Ereignisname (für EventTrigger) |
settings |
string | Nein | Zusätzliche Trigger-Einstellungen |
Antwort (201 Created)
Gibt die erstellte Aktion mit zugewiesenen IDs zurück.
Fehlerantworten
Konflikt (409) - Doppelte Namen
{
"Error": "Eine Aktion mit diesem Namen existiert bereits im Projekt"
}
Aktion aktualisieren
PUT /api/{tenantId}/{projectId}/action/{actionId}
Eine vorhandene Aktion aktualisieren.
Pfadparameter
| Parameter | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
tenantId |
GUID | Ja | Ihr Mandantenbezeichner |
projectId |
GUID | Ja | Ihr Projektbezeichner |
actionId |
GUID | Ja | Die zu aktualisierende Aktion |
Anfragekörper
{
"name": "Aktualisierter Wochenbericht",
"description": "Aktualisierte Beschreibung",
"isEnabled": true,
"maxRunTime": 2400,
"steps": [
{
"stepId": "22222222-2222-2222-2222-222222222222",
"stepNumber": 1,
"stepType": "Python",
"description": "Aktualisierter Schritt",
"settings": "{\"script\": \"updated_report.py\"}"
}
],
"triggers": [
{
"triggerId": "11111111-1111-1111-1111-111111111111",
"triggerType": "DailyScheduler",
"frequency": 1,
"startDate": "2024-02-01"
}
]
}
Alle Felder sind optional – nur angegebene Felder werden aktualisiert.
Antwort (200 OK)
Gibt die aktualisierte Aktion zurück.
Aktion löschen
DELETE /api/{tenantId}/{projectId}/action/{actionId}
Eine Aktion dauerhaft löschen.
Pfadparameter
| Parameter | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
tenantId |
GUID | Ja | Ihr Mandantenbezeichner |
projectId |
GUID | Ja | Ihr Projektbezeichner |
actionId |
GUID | Ja | Die zu löschende Aktion |
Antwort (204 No Content)
Leere Antwort bei Erfolg.
Aktion aktivieren
POST /api/{tenantId}/{projectId}/action/{actionId}/enable
Eine deaktivierte Aktion aktivieren.
Antwort (200 OK)
Gibt die aktualisierte Aktion mit isEnabled: true zurück.
Aktion deaktivieren
POST /api/{tenantId}/{projectId}/action/{actionId}/disable
Eine Aktion deaktivieren.
Antwort (200 OK)
Gibt die aktualisierte Aktion mit isEnabled: false zurück.
Implementierungsbeispiele
cURL
# Alle Aktionen auflisten
curl -X GET "https://your-mindzie-instance.com/api/{tenantId}/{projectId}/action" \
-H "Authorization: Bearer YOUR_API_KEY"
# Aktion erstellen
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": "Daily Report",
"description": "Erstelle täglichen Bericht",
"isEnabled": true,
"steps": [
{
"stepNumber": 1,
"stepType": "Python",
"description": "Berichtsskript ausführen",
"settings": "{\"script\": \"daily_report.py\"}"
}
],
"triggers": [
{
"triggerType": "DailyScheduler",
"frequency": 1,
"startDate": "2024-01-15"
}
]
}'
# Aktion aktualisieren
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": "Aktualisierter Tagesbericht"}'
# Aktion löschen
curl -X DELETE "https://your-mindzie-instance.com/api/{tenantId}/{projectId}/action/{actionId}" \
-H "Authorization: Bearer YOUR_API_KEY"
# Aktion aktivieren/deaktivieren
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):
"""Alle Aktionen auflisten."""
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):
"""Aktionsdetails abrufen."""
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):
"""Eine neue Aktion erstellen."""
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):
"""Eine Aktion aktualisieren."""
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):
"""Eine Aktion löschen."""
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):
"""Eine Aktion aktivieren."""
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):
"""Eine Aktion deaktivieren."""
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()
# Verwendung
manager = ActionManager('your-api-key')
# Aktion erstellen
action = manager.create_action(
name='Daily Report',
description='Erstelle täglichen Analysebericht',
steps=[
{
'stepNumber': 1,
'stepType': 'Python',
'description': 'Bericht generieren',
'settings': '{"script": "daily_report.py"}'
}
],
triggers=[
{
'triggerType': 'DailyScheduler',
'frequency': 1,
'startDate': '2024-01-15'
}
]
)
print(f"Aktions-ID erstellt: {action['actionId']}")
# Deaktivieren und dann aktivieren
manager.disable_action(action['actionId'])
print("Aktion deaktiviert")
manager.enable_action(action['actionId'])
print("Aktion aktiviert")
# Aktion aktualisieren
updated = manager.update_action(action['actionId'], name='Aktualisierter Tagesbericht')
# Aktion löschen
manager.delete_action(action['actionId'])
print("Aktion gelöscht")
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(`Fehler: ${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(`Fehler: ${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(`Fehler: ${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(`Fehler: ${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(`Fehler: ${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(`Fehler: ${response.status}`);
return response.json();
}
}
// Verwendung
const manager = new ActionManager('your-api-key');
// Aktion erstellen
const action = await manager.createAction(
'Daily Report',
[{ stepNumber: 1, stepType: 'Python', description: 'Skript ausführen', settings: '{}' }],
'Täglichen Bericht generieren',
[{ triggerType: 'DailyScheduler', frequency: 1, startDate: '2024-01-15' }]
);
// Aktivieren/Deaktivieren umschalten
await manager.disableAction(action.actionId);
await manager.enableAction(action.actionId);
// Löschen
await manager.deleteAction(action.actionId);
Beste Praxis
- Eindeutige Namen: Aktionsnamen müssen innerhalb eines Projekts eindeutig sein
- Schritt-Reihenfolge: Schritte werden in der Reihenfolge von
stepNumberausgeführt - Aktivieren/Deaktivieren: Verwenden Sie die Aktivieren-/Deaktivieren-Endpunkte statt Löschen und Neuerstellen
- Trigger: Verwenden Sie geeignete Trigger-Typen für Ihre Zeitplanungsanforderungen
- MaxRunTime: Setzen Sie angemessene Zeitlimits, um unkontrollierte Aktionen zu verhindern