Skip to content

REST API

Flowguard bietet eine RESTful API zum programmgesteuerten Verwalten und Ausführen von Flows.

Basis-URL

Alle API-Endpunkte haben das Präfix:

/wp-json/flowguard/v1/

Beispiel:

https://ihreseite.de/wp-json/flowguard/v1/flows

Authentifizierung

API-Endpunkte erfordern WordPress-Authentifizierung:

Für Anfragen aus dem WordPress-Admin:

  • Automatisch authentifiziert, wenn eingeloggt
  • Nonce-Verifizierung für Schreiboperationen erforderlich

Anwendungspasswörter

Für externe Anfragen:

  1. Erstellen Sie ein Anwendungspasswort im WordPress-Benutzerprofil
  2. Verwenden Sie HTTP-Basic-Authentifizierung
  3. Benutzername: WordPress-Benutzername
  4. Passwort: Anwendungspasswort

Beispiel mit cURL:

bash
curl -u 'benutzername:xxxx xxxx xxxx xxxx xxxx xxxx' \
  https://ihreseite.de/wp-json/flowguard/v1/flows

Berechtigungen

Flow-Endpunkte

Leseoperationen - Erfordert edit_posts-Berechtigung Schreiboperationen - Erfordert edit_posts-Berechtigung

Einstellungs-Endpunkte

Leseoperationen - Erfordert manage_options-Berechtigung Schreiboperationen - Erfordert manage_options-Berechtigung

Flow-Endpunkte

Flows auflisten

Ruft eine Liste aller Flows ab (verwendet WordPress-integrierten Posts-Endpunkt).

Endpunkt:

GET /wp-json/wp/v2/flowguard_flow

Parameter:

ParameterTypBeschreibung
per_pageintegerAnzahl Flows pro Seite (Standard: 10)
pageintegerSeitennummer (Standard: 1)
searchstringFlows nach Titel suchen
statusstringNach Status filtern (publish, draft, etc.)

Antwort:

json
[
  {
    "id": 123,
    "title": {
      "rendered": "Login-Test-Flow"
    },
    "status": "publish",
    "date": "2024-12-06T10:00:00",
    "modified": "2024-12-06T15:30:00",
    "meta": {
      "flowguard_status": "active",
      "flowguard_steps": [...],
      "flowguard_settings": {...},
      "flowguard_last_run": {...}
    }
  }
]

Einzelnen Flow abrufen

Ruft einen bestimmten Flow nach ID ab.

Endpunkt:

GET /wp-json/wp/v2/flowguard_flow/{id}

Parameter:

ParameterTypBeschreibung
idintegerDie Flow-Post-ID

Antwort:

json
{
  "id": 123,
  "title": {
    "rendered": "Login-Test-Flow"
  },
  "status": "publish",
  "meta": {
    "flowguard_status": "active",
    "flowguard_steps": [
      {
        "id": "step_1",
        "type": "navigate",
        "config": {
          "url": "https://ihreseite.de/login"
        }
      }
    ],
    "flowguard_settings": {
      "timeout": 30000,
      "retries": 0,
      "screenshot": true
    },
    "flowguard_last_run": {
      "timestamp": "2024-12-06T15:30:00",
      "status": "passed",
      "duration": 3450,
      "error": "",
      "results": [...]
    }
  }
}

Flow erstellen

Erstellt einen neuen Flow.

Endpunkt:

POST /wp-json/wp/v2/flowguard_flow

Anfragekörper:

json
{
  "title": "Neuer Test-Flow",
  "status": "publish",
  "meta": {
    "flowguard_status": "active",
    "flowguard_steps": [
      {
        "id": "step_1",
        "type": "navigate",
        "config": {
          "url": "https://ihreseite.de"
        }
      }
    ],
    "flowguard_settings": {
      "timeout": 30000,
      "retries": 0,
      "screenshot": true
    }
  }
}

Antwort: Gibt das erstellte Flow-Objekt zurück (gleiches Format wie Einzelnen Flow abrufen).

Flow aktualisieren

Aktualisiert einen bestehenden Flow.

Endpunkt:

PUT /wp-json/wp/v2/flowguard_flow/{id}

Parameter:

ParameterTypBeschreibung
idintegerDie Flow-Post-ID

Anfragekörper: Gleiches Format wie Flow erstellen (nur zu aktualisierende Felder einschließen).

Antwort: Gibt das aktualisierte Flow-Objekt zurück.

Flow löschen

Löscht einen Flow.

Endpunkt:

DELETE /wp-json/wp/v2/flowguard_flow/{id}

Parameter:

ParameterTypBeschreibung
idintegerDie Flow-Post-ID
forcebooleanPapierkorb umgehen und dauerhaft löschen (Standard: false)

Antwort:

json
{
  "deleted": true,
  "previous": {
    // Vorheriges Flow-Objekt
  }
}

Flow-Ausführungs-Endpunkte

Einzelnen Flow ausführen

Führt einen bestimmten Flow aus.

Endpunkt:

POST /wp-json/flowguard/v1/flows/{id}/run

Parameter:

ParameterTypBeschreibung
idintegerDie Flow-Post-ID

Antwort:

json
{
  "success": true,
  "message": "Flow-Ausführung gestartet.",
  "flow": {
    "id": 123,
    "title": "Login-Test-Flow",
    "steps": [...],
    "settings": {...},
    "siteUrl": "https://ihreseite.de"
  }
}

Hinweise:

  • Gibt sofort mit Flow-Daten zurück
  • Tatsächliche Ausführung erfolgt auf externem Runner (Node.js-Server)
  • Aktualisiert Flow-Meta mit "running"-Status

Flow-Ergebnisse abrufen

Ruft Ausführungsergebnisse für einen Flow ab.

Endpunkt:

GET /wp-json/flowguard/v1/flows/{id}/results

Parameter:

ParameterTypBeschreibung
idintegerDie Flow-Post-ID

Antwort:

json
{
  "id": 123,
  "title": "Login-Test-Flow",
  "last_run": {
    "timestamp": "2024-12-06T15:30:00",
    "status": "passed",
    "duration": 3450,
    "error": "",
    "results": [
      {
        "step": 1,
        "type": "navigate",
        "status": "passed",
        "duration": 1200,
        "error": ""
      },
      {
        "step": 2,
        "type": "click",
        "status": "passed",
        "duration": 350,
        "error": ""
      }
    ]
  }
}

Alle aktiven Flows ausführen

Führt alle Flows mit "active"-Status aus.

Endpunkt:

POST /wp-json/flowguard/v1/flows/run-all

Antwort:

json
{
  "success": true,
  "message": "Ausführung von 5 Flows gestartet.",
  "flows": [
    {
      "id": 123,
      "title": "Login-Test",
      "steps": [...],
      "settings": {...}
    },
    {
      "id": 124,
      "title": "Kontaktformular-Test",
      "steps": [...],
      "settings": {...}
    }
  ],
  "siteUrl": "https://ihreseite.de"
}

Flow-Statistiken abrufen

Ruft aggregierte Statistiken für alle Flows ab.

Endpunkt:

GET /wp-json/flowguard/v1/flows/stats

Antwort:

json
{
  "success": true,
  "stats": {
    "total": 10,
    "active": 7,
    "inactive": 3,
    "passed": 5,
    "failed": 2,
    "pending": 3,
    "running": 0
  }
}

Einstellungs-Endpunkte

Einstellungen abrufen

Ruft alle Plugin-Einstellungen ab.

Endpunkt:

GET /wp-json/flowguard/v1/settings

Antwort:

json
{
  "general": {
    "default_focus_mode": true
  },
  "test_mode": {
    "enabled": true,
    "email_strategy": "block",
    "test_email": "test@beispiel.de",
    "capture_error_screenshots": true
  },
  "execution": {
    "mode": "remote",
    "local_api_path": "",
    "local_port": 3000,
    "local_host": "localhost",
    "remote_url": ""
  }
}

Berechtigungen: Erfordert manage_options-Berechtigung

Einstellungen aktualisieren

Aktualisiert Plugin-Einstellungen.

Endpunkt:

PUT /wp-json/flowguard/v1/settings

Anfragekörper:

json
{
  "general": {
    "default_focus_mode": false
  },
  "execution": {
    "mode": "local",
    "local_api_path": "/var/www/flowguard-api",
    "local_port": 3000
  }
}

Antwort: Gibt das aktualisierte Einstellungs-Objekt zurück.

Berechtigungen: Erfordert manage_options-Berechtigung

Systemanforderungen prüfen

Prüft Systemanforderungen für lokalen Ausführungsmodus.

Endpunkt:

GET /wp-json/flowguard/v1/system/requirements

Antwort:

json
{
  "requirements": [
    {
      "id": "nodejs",
      "name": "Node.js",
      "status": "installed",
      "version": "v20.10.0",
      "required": ">=18.0.0",
      "message": "Node.js v20.10.0 ist installiert"
    },
    {
      "id": "npm",
      "name": "npm",
      "status": "installed",
      "version": "10.2.3",
      "required": ">=8.0.0",
      "message": "npm 10.2.3 ist installiert"
    }
  ],
  "allMet": true,
  "canEnableLocal": true
}

Statuswerte:

  • installed - Anforderung erfüllt
  • not_installed - Anforderung nicht erfüllt
  • error - Fehler bei Anforderungsprüfung

Berechtigungen: Erfordert manage_options-Berechtigung

Fehlerantworten

Standard-Fehlerformat

json
{
  "code": "rest_forbidden",
  "message": "Sie haben keine Berechtigung, Flows auszuführen.",
  "data": {
    "status": 403
  }
}

Häufige Fehlercodes

CodeStatusBeschreibung
rest_forbidden403Unzureichende Berechtigungen
rest_no_route404Endpunkt nicht gefunden
rest_flow_not_found404Flow-ID existiert nicht
rest_flow_empty400Flow hat keine Steps
rest_invalid_param400Ungültiger Parameterwert
rest_cannot_update500Aktualisierungsoperation fehlgeschlagen

Code-Beispiele

JavaScript (Fetch API)

javascript
// Alle Flows abrufen
fetch('/wp-json/wp/v2/flowguard_flow')
  .then(response => response.json())
  .then(flows => console.log(flows));

// Flow ausführen
fetch('/wp-json/flowguard/v1/flows/123/run', {
  method: 'POST',
  headers: {
    'X-WP-Nonce': wpApiSettings.nonce
  }
})
  .then(response => response.json())
  .then(result => console.log(result));

PHP

php
// Flow-Ergebnisse abrufen
$response = wp_remote_get(
  home_url('/wp-json/flowguard/v1/flows/123/results')
);
$results = json_decode(wp_remote_retrieve_body($response));

// Alle aktiven Flows ausführen
$response = wp_remote_post(
  home_url('/wp-json/flowguard/v1/flows/run-all')
);

Python

python
import requests
from requests.auth import HTTPBasicAuth

# Konfiguration
site_url = 'https://ihreseite.de'
username = 'admin'
app_password = 'xxxx xxxx xxxx xxxx xxxx xxxx'

# Flow-Statistiken abrufen
response = requests.get(
    f'{site_url}/wp-json/flowguard/v1/flows/stats',
    auth=HTTPBasicAuth(username, app_password)
)
stats = response.json()
print(stats)

# Flow ausführen
response = requests.post(
    f'{site_url}/wp-json/flowguard/v1/flows/123/run',
    auth=HTTPBasicAuth(username, app_password)
)
result = response.json()
print(result)

cURL

bash
# Alle Flows abrufen
curl https://ihreseite.de/wp-json/wp/v2/flowguard_flow

# Flow mit Authentifizierung ausführen
curl -X POST \
  -u 'benutzername:xxxx xxxx xxxx xxxx xxxx xxxx' \
  https://ihreseite.de/wp-json/flowguard/v1/flows/123/run

# Statistiken abrufen
curl https://ihreseite.de/wp-json/flowguard/v1/flows/stats

Best Practices

Geeignete HTTP-Methoden verwenden

  • GET zum Lesen von Daten
  • POST zum Erstellen und Ausführen
  • PUT oder PATCH zum Aktualisieren
  • DELETE zum Entfernen

Fehler elegant behandeln

Prüfen Sie immer den Antwortstatus und behandeln Sie Fehler:

javascript
fetch('/wp-json/flowguard/v1/flows/123/run', {
  method: 'POST'
})
  .then(response => {
    if (!response.ok) {
      throw new Error(`HTTP ${response.status}`);
    }
    return response.json();
  })
  .then(data => console.log(data))
  .catch(error => console.error('Fehler:', error));

Berechtigungen respektieren

Stellen Sie sicher, dass Ihr Benutzerkonto über die entsprechenden Berechtigungen verfügt, bevor Sie Anfragen stellen.

HTTPS verwenden

Verwenden Sie immer HTTPS in der Produktion, um Authentifizierungsdaten zu schützen.

Verwandte Dokumentation

Support

Bei API-Problemen:

  1. Prüfen Sie, ob die WordPress REST API aktiviert ist
  2. Überprüfen Sie, ob die Authentifizierung funktioniert
  3. Prüfen Sie Fehlerantworten auf Details
  4. Überprüfen Sie WordPress- und Flowguard-Protokolle
  5. Testen Sie mit einem REST-Client (Postman, Insomnia)