Zum Inhalt springen

JTL-Wawi API Dokumentation

SQL2REST bietet eine Read-Only REST-API Schnittstelle für JTL-Wawi. Hier finden Sie die vollständige Dokumentation zum Anbinden, Einrichten und Nutzen der API-Endpunkte.

Diese Entwicklerdokumentation beschreibt die REST-API Schnittstellen von SQL2REST für die Anbindung an JTL-Wawi. Mit SQL2REST können Sie externe Systeme effizient an Ihre Warenwirtschaft anbinden, Kundendaten und Artikeldaten auslesen, Bestellungen abrufen und Workflows automatisieren.

SQL2REST funktioniert als API-Anbindung zwischen Ihrer JTL-Wawi Datenbank und externen Anwendungen. Die Erweiterung läuft als Windows-Dienst lokal auf Ihrem Server und stellt zuverlässig Read-Only Endpunkte bereit. So können Sie JTL-Wawi API anbinden, ohne einen JTL-Connector oder teure Zusatzfunktionen zu benötigen.

Typische Anwendungsfälle sind die Integration in CRM-Systeme, E-Commerce Plattformen wie JTL-Shop oder Shopware, Multichannel-Handel über JTL-eazyAuction, sowie die zentrale Verwaltung von Prozessen über Tools wie n8n, Make oder Zapier.

SQL2REST hält Ihre Datenbank konsistent durch ausschliesslich lesende Zugriffe. Updates und neue Features werden regelmässig bereitgestellt. JTL Servicepartner und Entwickler können die API-Anbindung individuell anpassen und integrieren.

Inhalt

Erste Schritte

1. Installation

  1. ZIP-Datei auf Ihren Windows-Server entpacken (z.B. C:\SQL2REST\)
  2. StartWizard.bat doppelklicken
  3. Der Assistent führt Sie durch alles: Verbindung testen, Views erstellen, Dienst installieren

ODBC Driver 17 wird benötigt, ist aber auf den meisten JTL-Wawi-Servern bereits installiert. Der Assistent prüft die Verbindung automatisch.

Setup

So funktioniert es

Vom SQL Server zur REST API in 4 Schritten — vollautomatisch.

SQL2REST Wizard
DESKTOP-JTL01\JTLWAWI
sa
••••••••••
Admin-Konto nur für die Einrichtung. Der Assistent erstellt automatisch einen dedizierten Nur-Lese-Benutzer mit minimalen Berechtigungen. Ihre Admin-Zugangsdaten werden nicht gespeichert.
Reiner Lesezugriff — die API liest ausschließlich, kein Schreibzugriff möglich.

2. Erster API-Aufruf

Nach Abschluss des Wizards ist Ihre API sofort einsatzbereit:

bash
curl -H "X-API-Key: YOUR_KEY" http://YOUR-SERVER:8000/customers

Ersetzen Sie YOUR_KEY durch den API-Schlüssel aus dem Setup-Wizard (gespeichert in config.ini).

Ersetzen Sie YOUR-SERVER durch localhost (gleicher Rechner) oder die IP-Adresse Ihres Servers. Standard-Port ist 8000 — der Port kann im Setup-Wizard angepasst werden.

Authentifizierung

Jede API-Anfrage erfordert einen API-Schlüssel als HTTP-Header:

http
X-API-Key: your-api-key-here

Der Header-Name ist standardmäßig X-API-Key und kann in config.ini unter [API] HeaderName geändert werden.

Hinweis: Query-Parameter-Authentifizierung wird nicht unterstützt. Der API-Schlüssel muss als Header gesendet werden.

Endpunkte

Alle Daten-Endpunkte erfordern einen gültigen API-Schlüssel und eine aktive Lizenz. Feldnamen hängen von Ihrer Spaltenzuordnung im Setup-Wizard ab.

Alle Endpunkte unterstützen: sort, order, limit, offset, mandant — Details siehe unten.

Kunden

GET /customers

Kunden auflisten mit optionaler Suche, Sortierung und Paginierung.

ParameterTypBeschreibung
searchstringLIKE-Suche über Name und Nummer
bash
curl -H "X-API-Key: YOUR_KEY" "http://YOUR-SERVER:8000/customers?search=Müller"
json
{
  "data": [
    {
      "CustomerNumber": "10001",
      "Company": "Müller GmbH",
      "Email": "[email protected]",
      "City": "Frankfurt"
    }
  ],
  "total": 3,
  "limit": 100,
  "offset": 0
}
GET /customers/{number}

Einzelnen Kunden nach Kundennummer abrufen.

bash
curl -H "X-API-Key: YOUR_KEY" http://YOUR-SERVER:8000/customers/10001
json
{
  "data": {
    "CustomerNumber": "10001",
    "Company": "Müller GmbH",
    "FirstName": "Thomas",
    "LastName": "Müller",
    "Email": "[email protected]",
    "City": "Frankfurt",
    "Country": "DE"
  }
}

Aufträge

GET /orders

Aufträge auflisten mit Filtern nach Kunde, Status und Zeitraum.

ParameterTypBeschreibung
customerstringFilter nach Kundennummer
statusstringFilter nach Status
fromdateStartdatum (YYYY-MM-DD)
todateEnddatum (YYYY-MM-DD)
bash
curl -H "X-API-Key: YOUR_KEY" "http://YOUR-SERVER:8000/orders?from=2024-01-01&status=Versendet"
GET /orders/{number}

Einzelnen Auftrag nach Auftragsnummer abrufen.

GET /orders/{number}/items

Positionen eines Auftrags abrufen.

Rechnungen

GET /invoices

Rechnungen auflisten mit Filtern nach Kunde, Status und Zeitraum.

ParameterTypBeschreibung
customerstringFilter nach Kundennummer
statusstringFilter nach Status
from / todateDatumsbereich (YYYY-MM-DD)

Produkte

GET /products

Produkte auflisten mit optionaler Suche.

GET /products/{sku}

Einzelnes Produkt nach Artikelnummer (SKU) abrufen.

Bestand

GET /stock

Lagerbestand auflisten mit optionalem SKU-Filter.

Lieferungen

GET /shipments

Lieferungen auflisten mit Filtern nach Auftrag, Versanddienstleister und Zeitraum.

ParameterTypBeschreibung
orderstringFilter nach Auftragsnummer
carrierstringFilter nach Versanddienstleister
from / todateDatumsbereich (YYYY-MM-DD)
sort_orderstringSortierrichtung: asc oder desc (statt order)

Sync-Endpunkte

Vorverbundene Endpunkte für CRM-Integrationen. Liefern Daten aus mehreren Tabellen in einem Aufruf.

GET /sync/orders

Aufträge mit Kunden-, Rechnungs- und Versanddaten in einem Aufruf.

GET /sync/customers

Batch-Kundensynchronisation mit höherem Limit (bis zu 1000).

Filtern & Suchen

Zwei Arten von Filtern stehen zur Verfügung:

Textsuche (LIKE)

Der search-Parameter durchsucht Name und Nummer. Verfügbar auf /customers und /products.

Exakte Filter

Filterparameter liefern exakte Übereinstimmungen:

ParameterVerfügbar auf
customer/orders, /invoices, /sync/orders
status/orders, /invoices
sku/stock
order/shipments
carrier/shipments

Sortierung & Paginierung

Alle Listen-Endpunkte unterstützen Sortierung und Paginierung.

ParameterStandardBeschreibung
sortSortierfeld (beliebiger Spaltenname der View)
orderascSortierrichtung: asc oder desc
limit100Ergebnisse pro Seite (1–500)
offset0Ergebnisse überspringen

Hinweis: /shipments verwendet sort_order statt order.

Datumsfilter

Zeitraum-Filter über from/to-Parameter (jeweils einschließlich).

Multi-Mandant

Wenn Sie mehrere JTL-Datenbanken konfiguriert haben, verwenden Sie den mandant-Parameter, um die Zieldatenbank auszuwählen. Standard ist 1.

Mandanten-Limits nach Tarif

TarifMandanten
Trial1
Personal1
Agency5
EnterpriseUnbegrenzt

Auto-Discovery

Der Setup-Wizard analysiert automatisch Ihr JTL-Datenbankschema und erkennt die richtigen Spalten für jeden Endpunkt.

  • Erkennt Ihre JTL-Wawi Version automatisch (1.5 bis 2.0)
  • Ordnet Standardfelder automatisch zu (Kundennummer, Bestelldatum, SKU etc.)
  • Nicht erkannte Felder können manuell per Dropdown zugeordnet werden
  • Spaltenvorschau zeigt echte Beispieldaten aus Ihrer Datenbank

Community Mapping

Wenn Sie eine Spalte manuell zuordnen, können Sie diese Zuordnung anonym teilen, um die Erkennung für alle Nutzer zu verbessern.

  • Nur bei expliziter Zustimmung im Wizard (Opt-in)
  • Es werden nur Tabellen-/Spaltennamen geteilt — niemals Geschäftsdaten

Details zum Datenschutz: /datenschutz

Rechnungs-PDFs

GET /invoices/{number}/pdf

Rechnungs-PDF nach Rechnungsnummer herunterladen. Standardmäßig deaktiviert — kann im Setup-Wizard oder in config.ini aktiviert werden.

Die Suche extrahiert den numerischen Teil der Rechnungsnummer (RE-12345 → 12345) und sucht rekursiv in allen konfigurierten Ordnern. Bei mehreren Treffern wird die neueste Datei verwendet.

MCP Server (KI)

SQL2REST kann als MCP-Server für KI-Assistenten genutzt werden. 13 Tools und 2 Resources stehen zur Verfügung.

bash
sql2rest.exe --mcp

Voraussetzung: Die API muss als Windows-Dienst laufen. Der MCP-Server liest den API-Schlüssel aus config.ini.

Claude Desktop Konfiguration

json
{
  "mcpServers": {
    "sql2rest": {
      "command": "C:\\SQL2REST\\sql2rest.exe",
      "args": ["--mcp"]
    }
  }
}

Verfügbare Tools

search_customers get_customer list_orders get_order get_order_items list_invoices get_invoice_pdf search_products get_product get_stock list_shipments sync_orders sync_customers

Kompatibel mit: Claude Desktop, Claude Code, Cursor, Windsurf, ChatGPT Desktop und jedem MCP-Client.

Aktualisierung

SQL2REST enthält ein Auto-Update — einfach update.bat als Administrator ausführen. Das Skript prüft auf neue Versionen, lädt das Update herunter, verifiziert die Integrität (SHA-256) und wendet es automatisch an.

Update-Benachrichtigung

Wenn eine neue Version verfügbar ist, zeigt der Setup-Wizard automatisch einen Hinweis an. Öffnen Sie den Wizard über StartWizard.bat — das Banner erscheint zwischen Header und Schritt-Anzeige.

Auto-Update (empfohlen)

  1. Rechtsklick auf update.bat → „Als Administrator ausführen"
  2. Versionsvergleich prüfen und mit Y bestätigen

Manuelles Update (offline)

  1. Laden Sie die neueste Version aus Ihrem Dashboard herunter
  2. Führen Sie als Administrator aus: update.bat C:\Pfad\zur\sql2rest-latest.zip

Was passiert

  • Prüft auf neue Versionen (Auto-Update) oder nutzt die angegebene ZIP-Datei
  • Dienst wird über NSSM gestoppt (Fallback: taskkill)
  • config.ini wird gesichert und nach dem Update wiederhergestellt
  • Download wird per SHA-256-Hash verifiziert
  • Dienst wird automatisch neu gestartet

Wenn kein Windows-Dienst installiert ist, wird sql2rest.exe direkt beendet. Nach dem Update müssen Sie das Programm manuell neu starten.

Bereinigung

Die Bereinigungsfunktion entfernt alle SQL-Views und den Read-Only SQL2REST-Datenbankbenutzer. Vollständig reversibel — führen Sie den Wizard erneut aus, um alles neu einzurichten.

  • Zugänglich über den Erfolgsbildschirm des Wizards
  • Erfordert Admin-SQL-Zugangsdaten (der config.ini-Benutzer ist Read-Only)
  • Optional: config.ini löschen, um in den Setup-Modus zurückzukehren

Fehlercodes

StatusBedeutung
200Erfolg
402Lizenz erforderlich oder Tarif-Limit überschritten
403Ungültiger API-Schlüssel
404Ressource nicht gefunden / Mandant nicht konfiguriert
500Datenbankfehler
503Setup erforderlich (Wizard unter /setup ausführen)

402-Antwortformat

json
{
  "detail": {
    "message": "Valid license required",
    "url": "https://sql2rest.com/jtl-wawi#pricing"
  }
}

Testversion

Die 30-Tage-Testversion wird automatisch beim Setup erstellt und hat folgende Einschränkungen:

MerkmalTrialBezahlt
Endpunkte/customers, /orders, /products, /syncAlle
Mandanten1Je nach Tarif
Laufzeit30 TageUnbegrenzt

Nicht verfügbare Endpunkte liefern Status 402 mit Upgrade-Link. Upgraden Sie unter /jtl-wawi#pricing.