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/flowsAuthentifizierung
API-Endpunkte erfordern WordPress-Authentifizierung:
Cookie-Authentifizierung
Für Anfragen aus dem WordPress-Admin:
- Automatisch authentifiziert, wenn eingeloggt
- Nonce-Verifizierung für Schreiboperationen erforderlich
Anwendungspasswörter
Für externe Anfragen:
- Erstellen Sie ein Anwendungspasswort im WordPress-Benutzerprofil
- Verwenden Sie HTTP-Basic-Authentifizierung
- Benutzername: WordPress-Benutzername
- Passwort: Anwendungspasswort
Beispiel mit cURL:
curl -u 'benutzername:xxxx xxxx xxxx xxxx xxxx xxxx' \
https://ihreseite.de/wp-json/flowguard/v1/flowsBerechtigungen
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_flowParameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
per_page | integer | Anzahl Flows pro Seite (Standard: 10) |
page | integer | Seitennummer (Standard: 1) |
search | string | Flows nach Titel suchen |
status | string | Nach Status filtern (publish, draft, etc.) |
Antwort:
[
{
"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:
| Parameter | Typ | Beschreibung |
|---|---|---|
id | integer | Die Flow-Post-ID |
Antwort:
{
"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_flowAnfragekörper:
{
"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:
| Parameter | Typ | Beschreibung |
|---|---|---|
id | integer | Die 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:
| Parameter | Typ | Beschreibung |
|---|---|---|
id | integer | Die Flow-Post-ID |
force | boolean | Papierkorb umgehen und dauerhaft löschen (Standard: false) |
Antwort:
{
"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}/runParameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
id | integer | Die Flow-Post-ID |
Antwort:
{
"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}/resultsParameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
id | integer | Die Flow-Post-ID |
Antwort:
{
"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-allAntwort:
{
"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/statsAntwort:
{
"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/settingsAntwort:
{
"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/settingsAnfragekörper:
{
"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/requirementsAntwort:
{
"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ülltnot_installed- Anforderung nicht erfüllterror- Fehler bei Anforderungsprüfung
Berechtigungen: Erfordert manage_options-Berechtigung
Fehlerantworten
Standard-Fehlerformat
{
"code": "rest_forbidden",
"message": "Sie haben keine Berechtigung, Flows auszuführen.",
"data": {
"status": 403
}
}Häufige Fehlercodes
| Code | Status | Beschreibung |
|---|---|---|
rest_forbidden | 403 | Unzureichende Berechtigungen |
rest_no_route | 404 | Endpunkt nicht gefunden |
rest_flow_not_found | 404 | Flow-ID existiert nicht |
rest_flow_empty | 400 | Flow hat keine Steps |
rest_invalid_param | 400 | Ungültiger Parameterwert |
rest_cannot_update | 500 | Aktualisierungsoperation fehlgeschlagen |
Code-Beispiele
JavaScript (Fetch API)
// 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
// 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
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
# 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/statsBest Practices
Geeignete HTTP-Methoden verwenden
GETzum Lesen von DatenPOSTzum Erstellen und AusführenPUToderPATCHzum AktualisierenDELETEzum Entfernen
Fehler elegant behandeln
Prüfen Sie immer den Antwortstatus und behandeln Sie Fehler:
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
- WordPress Actions - In die Flow-Ausführung einhängen
- WordPress Filters - API-Verhalten modifizieren
- Flows ausführen - Benutzerhandbuch zur Ausführung
Support
Bei API-Problemen:
- Prüfen Sie, ob die WordPress REST API aktiviert ist
- Überprüfen Sie, ob die Authentifizierung funktioniert
- Prüfen Sie Fehlerantworten auf Details
- Überprüfen Sie WordPress- und Flowguard-Protokolle
- Testen Sie mit einem REST-Client (Postman, Insomnia)