Ein praktischer Einstieg für Workflow-Automatisierung mit n8n
Einleitung
Das ComBinder PIM bringt seit Version 6.5 eine REST API mit, über die externe Systeme wie n8n die Anwendung programmatisch steuern können. Damit lassen sich wiederkehrende Aufgaben — das Öffnen bestimmter Workspaces, das Starten von Prozessen oder die Integration in übergeordnete Automatisierungsflows — vollständig ohne manuellen Eingriff am Desktop realisieren.
Dieser Beitrag beschreibt alle verfügbaren Endpunkte, erklärt das Authentifizierungskonzept und zeigt anhand eines vollständigen n8n-Workflows, wie ein typischer Ablauf aussieht.
Voraussetzungen
- ComBinder PIM läuft auf dem Host-System, REST API ist in den Einstellungen aktiviert (Standard-Port: 8765)
- n8n läuft in Docker Desktop — die Basis-URL für alle Requests lautet daher:
http://host.docker.internal:8765 - Ein ComBinder-Benutzer mit den notwendigen Rechten ist angelegt
Authentifizierung
Die ComBinder REST API verwendet Bearer-Token-Authentifizierung. Der Token wird beim Login erzeugt und muss bei allen nachfolgenden Requests im HTTP-Header mitgeschickt werden. Er ist für 24 Stunden gültig.
Wichtig für n8n: Den Authorization-Header im HTTP-Request-Node manuell setzen und Authentication auf
Nonebelassen — kein n8n-Credential-System verwenden.
Endpunkte im Überblick
POST /api/auth/login
Meldet einen Benutzer an und gibt einen Bearer-Token zurück.
Request
POST http://host.docker.internal:8765/api/auth/loginContent-Type: application/json{ "username": "n8n-user", "password": "meinPasswort"}
Response 200 OK
{ "success": true, "data": { "token": "59f37b0d-dbc3-42eb-a993-d9445c855214", "username": "n8n-user", "role": "ADMIN" }}
Mögliche Fehler
| Status | Bedeutung |
|---|---|
401 | Falsches Passwort oder unbekannter Benutzer |
401 | Benutzer bereits auf einem anderen Rechner eingeloggt |
400 | Pflichtfelder username oder password fehlen |
POST /api/auth/logout
Meldet den Benutzer ab und invalidiert den Token. Die Sitzung wird vollständig beendet.
Request
POST http://host.docker.internal:8765/api/auth/logoutAuthorization: Bearer 59f37b0d-dbc3-42eb-a993-d9445c855214
Response 200 OK
{ "success": true}
Nach dem Logout ist der Token dauerhaft ungültig. Für nachfolgende Operationen muss ein neuer Login-Request durchgeführt werden.
GET /api/workspace
Liefert eine Liste aller verfügbaren Workspaces mit ihrem Status.
Request
GET http://host.docker.internal:8765/api/workspaceAuthorization: Bearer 59f37b0d-dbc3-42eb-a993-d9445c855214
Response 200 OK
{ "success": true, "data": [ { "id": 1, "name": "Produktkatalog 2025", "rootpath": "C:\\ComBinder\\workspaces\\katalog2025", "active": false }, { "id": 2, "name": "Ersatzteile", "rootpath": "C:\\ComBinder\\workspaces\\ersatzteile", "active": true } ]}
Das Feld active: true zeigt den aktuell geöffneten Workspace an.
POST /api/workspace/open
Öffnet einen Workspace — entweder über seinen Namen oder seine ID.
Request per Name
POST http://host.docker.internal:8765/api/workspace/openAuthorization: Bearer 59f37b0d-dbc3-42eb-a993-d9445c855214Content-Type: application/json{ "workspaceName": "Produktkatalog 2025"}
Request per ID
{ "workspaceId": 1}
Response 200 OK
{ "success": true, "data": { "id": 1, "name": "Produktkatalog 2025", "rootpath": "C:\\ComBinder\\workspaces\\katalog2025", "active": true }}
Mögliche Fehler
| Status | Bedeutung |
|---|---|
404 | Kein Workspace mit diesem Namen / dieser ID gefunden |
400 | Workspace-Ordner nicht vorhanden, Datenbank nicht erreichbar o. Ä. |
400 | Dieser Workspace ist bereits geöffnet |
401 | Kein gültiger Token / Token abgelaufen |
Vollständiger n8n-Workflow
Der folgende Workflow führt den kompletten Ablauf durch:
- Login — Benutzer anmelden, Token empfangen
- Token zwischenspeichern — für nachfolgende Nodes verfügbar machen
- Workspaces listen — alle verfügbaren Workspaces abrufen
- Workspace öffnen — einen bestimmten Workspace aus der Liste auswählen und öffnen
- Logout — Sitzung ordentlich beenden

Workflow-Struktur
[Manual Trigger] ↓[HTTP Request: Login] POST /api/auth/login ↓[Set: Token speichern] Token für nachfolgende Nodes merken ↓[HTTP Request: List Workspaces] GET /api/workspace ↓[HTTP Request: Workspace öffnen] POST /api/workspace/open ↓[HTTP Request: Logout] POST /api/auth/logout
Node-Konfiguration im Detail
Login-Node
- Method:
POST - URL:
http://host.docker.internal:8765/api/auth/login - Authentication:
None - Body (JSON):
{ "username": "n8n-user", "password": "••••••" }
List Workspaces-Node
- Method:
GET - URL:
http://host.docker.internal:8765/api/workspace - Authentication:
None - Header:
Authorization=Bearer {{ $('HTTP Request').item.json.data.token }}
Workspace öffnen-Node
- Method:
POST - URL:
http://host.docker.internal:8765/api/workspace/open - Authentication:
None - Header:
Authorization=Bearer {{ $('HTTP Request').item.json.data.token }} - Body:
workspaceName=={{ $json.data[6].name }}(Index je nach gewünschtem Workspace)
Logout-Node
- Method:
POST - URL:
http://host.docker.internal:8765/api/auth/logout - Authentication:
None - Header:
Authorization=Bearer {{ $('HTTP Request').item.json.data.token }}
Häufige Fallstricke
„Credentials not found”
Der HTTP-Request-Node hat noch einen Authentication-Typ gesetzt. Lösung: Authentication auf None stellen, den Authorization-Header manuell unter Send Headers eintragen.
Token abgelaufen
Tokens sind 24 Stunden gültig. Bei nächtlichen oder seltenen Workflows empfiehlt es sich, Login und Logout in denselben Workflow einzubauen statt einen gespeicherten Token zu verwenden.
Workspace bereits geöffnet
Wenn ComBinder meldet, dass der Workspace bereits aktiv ist (400 – Workspace is already loaded), war ein vorheriger Lauf erfolgreich oder der Workspace wurde manuell geöffnet. Im Workflow kann dafür eine IF-Node prüfen, ob data.active bereits true ist, und den Open-Schritt überspringen.
host.docker.internal nicht erreichbar
Docker Desktop muss laufen und die REST API in den ComBinder-Einstellungen aktiviert sein. Auf dem Host lässt sich die Erreichbarkeit mit curl http://localhost:8765/api/workspace testen.
Tipps für den Produktivbetrieb
- Einen dedizierten n8n-Benutzer anlegen — nicht mit dem regulären Desktop-Account arbeiten, da Login und Logout auch die Desktop-Sitzung beeinflussen
- Logout immer am Ende einbauen — sonst bleibt die Sitzung bis zum Ablauf der 24h offen
- Workspace per Index referenzieren mit
$json.data[n].nameoder robuster per Name direkt im Body:{ "workspaceName": "Mein Workspace" } - Den Monitor in den ComBinder-Einstellungen (REST API → Monitor öffnen) nutzen, um alle eingehenden Requests live zu verfolgen