Actiebeheer

Volledige CRUD-bewerkingen voor het beheren van acties in uw mindzieStudio-project. Acties zijn workflowcomponenten die kunnen worden uitgevoerd om geautomatiseerde taken uit te voeren.


API-eindpunten

Methode Eindpunt Beschrijving
GET /api/{tenantId}/{projectId}/action Toon alle acties
GET /api/{tenantId}/{projectId}/action/{actionId} Toon details van een actie
POST /api/{tenantId}/{projectId}/action Maak actie aan
PUT /api/{tenantId}/{projectId}/action/{actionId} Werk actie bij
DELETE /api/{tenantId}/{projectId}/action/{actionId} Verwijder actie
POST /api/{tenantId}/{projectId}/action/{actionId}/enable Schakel actie in
POST /api/{tenantId}/{projectId}/action/{actionId}/disable Schakel actie uit

Toon alle acties

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

Haal alle geconfigureerde acties voor een project op.

Padparameters

Parameter Type Vereist Beschrijving
tenantId GUID Ja Uw tenant-identificatie
projectId GUID Ja Uw projectidentificatie

Respons (200 OK)

{
  "actions": [
    {
      "actionId": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
      "projectId": "87654321-4321-4321-4321-210987654321",
      "name": "Daily Data Refresh",
      "description": "Ververs dagelijks gegevens uit bronsystemen",
      "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
}

Toon actiedetails

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

Haal gedetailleerde informatie op over een specifieke actie.

Padparameters

Parameter Type Vereist Beschrijving
tenantId GUID Ja Uw tenant-identificatie
projectId GUID Ja Uw projectidentificatie
actionId GUID Ja De op te halen actie

Respons (200 OK)

{
  "actionId": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
  "projectId": "87654321-4321-4321-4321-210987654321",
  "name": "Daily Data Refresh",
  "description": "Ververs dagelijks gegevens uit bronsystemen",
  "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": "Voer data refresh-script uit",
      "settings": "{\"script\": \"refresh_data.py\"}",
      "dateCreated": "2024-01-01T10:00:00Z"
    }
  ]
}

Responsvelden

Veld Type Beschrijving
actionId GUID Unieke actie-identificatie
projectId GUID Project waartoe deze actie behoort
name string Weergavenaam
description string Beschrijving van de actie
isEnabled boolean Of de actie is ingeschakeld
maxRunTime integer Maximale uitvoeringstijd in seconden
actionStatus string Huidige status (Idle, Running, etc.)
nextRunTime datetime Volgende geplande uitvoering
lastRunTime datetime Laatste uitvoeringstijd
lastRunResult string Resultaat van laatste uitvoering
triggers array Triggerconfiguraties
steps array Actiestapdefinities

Maak actie aan

POST /api/{tenantId}/{projectId}/action

Maak een nieuwe actie aan in het project.

Padparameters

Parameter Type Vereist Beschrijving
tenantId GUID Ja Uw tenant-identificatie
projectId GUID Ja Uw projectidentificatie

Verzoekbody

{
  "name": "Weekly Report",
  "description": "Genereer wekelijkse analyse rapport",
  "isEnabled": true,
  "maxRunTime": 1800,
  "steps": [
    {
      "stepNumber": 1,
      "stepType": "Python",
      "description": "Genereer rapport",
      "settings": "{\"script\": \"generate_report.py\"}"
    },
    {
      "stepNumber": 2,
      "stepType": "Email",
      "description": "Verzend rapport per e-mail",
      "settings": "{\"recipients\": [\"team@company.com\"]}"
    }
  ],
  "triggers": [
    {
      "triggerType": "WeeklyScheduler",
      "frequency": 1,
      "startDate": "2024-01-08"
    }
  ]
}

Velden in verzoek

Veld Type Vereist Beschrijving
name string Ja Actienaam (moet uniek zijn binnen het project)
description string Nee Beschrijving van de actie
isEnabled boolean Nee Of de actie is ingeschakeld (standaard: true)
maxRunTime integer Nee Maximale uitvoeringstijd in seconden (standaard: 3600)
steps array Ja Minimaal één stap is verplicht
triggers array Nee Optionele triggerconfiguraties

Stapobject

Veld Type Vereist Beschrijving
stepNumber integer Nee Uitvoeringsvolgorde (automatisch toegekend als niet meegegeven)
stepType string Ja Type: Python, Email, Webhook, etc.
description string Nee Beschrijving van de stap
settings string Ja JSON-configuratie voor de stap

Triggerobject

Veld Type Vereist Beschrijving
triggerType string Ja Type: HourlyScheduler, DailyScheduler, WeeklyScheduler, MonthlyScheduler, EventTrigger
frequency integer Nee Frequentievermenigvuldiger
startDate date Nee Wanneer de planning start
eventName string Nee Eventnaam (voor EventTrigger)
settings string Nee Extra triggerinstellingen

Respons (201 Created)

Geeft de aangemaakte actie terug met toegewezen ID's.

Foutresponsen

Conflict (409) - Dubbele naam

{
  "Error": "Er bestaat al een actie met deze naam in het project"
}

Werk actie bij

PUT /api/{tenantId}/{projectId}/action/{actionId}

Werk een bestaande actie bij.

Padparameters

Parameter Type Vereist Beschrijving
tenantId GUID Ja Uw tenant-identificatie
projectId GUID Ja Uw projectidentificatie
actionId GUID Ja De actie die moet worden bijgewerkt

Verzoekbody

{
  "name": "Updated Weekly Report",
  "description": "Bijgewerkte beschrijving",
  "isEnabled": true,
  "maxRunTime": 2400,
  "steps": [
    {
      "stepId": "22222222-2222-2222-2222-222222222222",
      "stepNumber": 1,
      "stepType": "Python",
      "description": "Bijgewerkte stap",
      "settings": "{\"script\": \"updated_report.py\"}"
    }
  ],
  "triggers": [
    {
      "triggerId": "11111111-1111-1111-1111-111111111111",
      "triggerType": "DailyScheduler",
      "frequency": 1,
      "startDate": "2024-02-01"
    }
  ]
}

Alle velden zijn optioneel - alleen opgegeven velden worden bijgewerkt.

Respons (200 OK)

Geeft de bijgewerkte actie terug.


Verwijder actie

DELETE /api/{tenantId}/{projectId}/action/{actionId}

Verwijder een actie definitief.

Padparameters

Parameter Type Vereist Beschrijving
tenantId GUID Ja Uw tenant-identificatie
projectId GUID Ja Uw projectidentificatie
actionId GUID Ja De te verwijderen actie

Respons (204 No Content)

Lege respons bij succes.


Schakel actie in

POST /api/{tenantId}/{projectId}/action/{actionId}/enable

Schakel een uitgeschakelde actie in.

Respons (200 OK)

Geeft de bijgewerkte actie terug met isEnabled: true.


Schakel actie uit

POST /api/{tenantId}/{projectId}/action/{actionId}/disable

Schakel een actie uit.

Respons (200 OK)

Geeft de bijgewerkte actie terug met isEnabled: false.


Implementatievoorbeelden

cURL

# Toon alle acties
curl -X GET "https://your-mindzie-instance.com/api/{tenantId}/{projectId}/action" \
  -H "Authorization: Bearer YOUR_API_KEY"

# Maak een actie aan
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": "Genereer dagelijks rapport",
    "isEnabled": true,
    "steps": [
      {
        "stepNumber": 1,
        "stepType": "Python",
        "description": "Voer rapportscript uit",
        "settings": "{\"script\": \"daily_report.py\"}"
      }
    ],
    "triggers": [
      {
        "triggerType": "DailyScheduler",
        "frequency": 1,
        "startDate": "2024-01-15"
      }
    ]
  }'

# Werk een actie bij
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": "Updated Daily Report"}'

# Verwijder een actie
curl -X DELETE "https://your-mindzie-instance.com/api/{tenantId}/{projectId}/action/{actionId}" \
  -H "Authorization: Bearer YOUR_API_KEY"

# Schakel actie in/uit
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):
        """Toon alle acties."""
        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):
        """Toon actiedetails."""
        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):
        """Maak een nieuwe actie aan."""
        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):
        """Werk een actie bij."""
        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):
        """Verwijder een actie."""
        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):
        """Schakel een actie in."""
        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):
        """Schakel een actie uit."""
        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()

# Gebruik
manager = ActionManager('your-api-key')

# Maak een actie aan
action = manager.create_action(
    name='Daily Report',
    description='Genereer dagelijks analyserapport',
    steps=[
        {
            'stepNumber': 1,
            'stepType': 'Python',
            'description': 'Genereer rapport',
            'settings': '{"script": "daily_report.py"}'
        }
    ],
    triggers=[
        {
            'triggerType': 'DailyScheduler',
            'frequency': 1,
            'startDate': '2024-01-15'
        }
    ]
)
print(f"Actie aangemaakt: {action['actionId']}")

# Schakel uit en daarna weer in
manager.disable_action(action['actionId'])
print("Actie uitgeschakeld")

manager.enable_action(action['actionId'])
print("Actie ingeschakeld")

# Werk de actie bij
updated = manager.update_action(action['actionId'], name='Updated Daily Report')

# Verwijder de actie
manager.delete_action(action['actionId'])
print("Actie verwijderd")

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(`Mislukt: ${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(`Mislukt: ${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(`Mislukt: ${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(`Mislukt: ${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(`Mislukt: ${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(`Mislukt: ${response.status}`);
    return response.json();
  }
}

// Gebruik
const manager = new ActionManager('your-api-key');

// Maak actie aan
const action = await manager.createAction(
  'Daily Report',
  [{ stepNumber: 1, stepType: 'Python', description: 'Voer script uit', settings: '{}' }],
  'Genereer dagelijks rapport',
  [{ triggerType: 'DailyScheduler', frequency: 1, startDate: '2024-01-15' }]
);

// Schakel in/uit
await manager.disableAction(action.actionId);
await manager.enableAction(action.actionId);

// Verwijder
await manager.deleteAction(action.actionId);

Beste praktijken

  1. Unieke namen: Actienamen moeten uniek zijn binnen een project
  2. Volgorde van stappen: Stappen worden uitgevoerd in volgorde van stepNumber
  3. In-/uitschakelen: Gebruik de in-/uitschakel-eindpunten in plaats van verwijderen en opnieuw aanmaken
  4. Triggers: Gebruik passende triggertypes voor uw planningsbehoeften
  5. MaxRunTime: Stel redelijke time-outs in om ongecontroleerde acties te voorkomen