Erste Schritte
1. Installation
- ZIP-Datei auf Ihren Windows-Server entpacken (z.B.
C:\SQL2REST\) StartWizard.batdoppelklicken- 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.
| Kunden | |
| Aufträge | |
| Produkte | |
| Kategorien | |
| Lagerbestand |
Felder zuordnen
Live-Vorschau
Diesen Schlüssel in Apps & Automationen (n8n, Zapier, Make.com) verwenden, um auf Ihre JTL-Daten zuzugreifen.
sql2_sk_live_a1b2c3d4e5f6g7h8i9j0k1l2m3n4 2. Erster API-Aufruf
Nach Abschluss des Wizards ist Ihre API sofort einsatzbereit:
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:
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
Kunden auflisten mit optionaler Suche, Sortierung und Paginierung.
| Parameter | Typ | Beschreibung |
|---|---|---|
| search | string | LIKE-Suche über Name und Nummer |
curl -H "X-API-Key: YOUR_KEY" "http://YOUR-SERVER:8000/customers?search=Müller" {
"data": [
{
"CustomerNumber": "10001",
"Company": "Müller GmbH",
"Email": "[email protected]",
"City": "Frankfurt"
}
],
"total": 3,
"limit": 100,
"offset": 0
} Einzelnen Kunden nach Kundennummer abrufen.
curl -H "X-API-Key: YOUR_KEY" http://YOUR-SERVER:8000/customers/10001 {
"data": {
"CustomerNumber": "10001",
"Company": "Müller GmbH",
"FirstName": "Thomas",
"LastName": "Müller",
"Email": "[email protected]",
"City": "Frankfurt",
"Country": "DE"
}
} Aufträge
Aufträge auflisten mit Filtern nach Kunde, Status und Zeitraum.
| Parameter | Typ | Beschreibung |
|---|---|---|
| customer | string | Filter nach Kundennummer |
| status | string | Filter nach Status |
| from | date | Startdatum (YYYY-MM-DD) |
| to | date | Enddatum (YYYY-MM-DD) |
curl -H "X-API-Key: YOUR_KEY" "http://YOUR-SERVER:8000/orders?from=2024-01-01&status=Versendet" Einzelnen Auftrag nach Auftragsnummer abrufen.
Positionen eines Auftrags abrufen.
Rechnungen
Rechnungen auflisten mit Filtern nach Kunde, Status und Zeitraum.
| Parameter | Typ | Beschreibung |
|---|---|---|
| customer | string | Filter nach Kundennummer |
| status | string | Filter nach Status |
| from / to | date | Datumsbereich (YYYY-MM-DD) |
Produkte
Produkte auflisten mit optionaler Suche.
Einzelnes Produkt nach Artikelnummer (SKU) abrufen.
Bestand
Lagerbestand auflisten mit optionalem SKU-Filter.
Lieferungen
Lieferungen auflisten mit Filtern nach Auftrag, Versanddienstleister und Zeitraum.
| Parameter | Typ | Beschreibung |
|---|---|---|
| order | string | Filter nach Auftragsnummer |
| carrier | string | Filter nach Versanddienstleister |
| from / to | date | Datumsbereich (YYYY-MM-DD) |
| sort_order | string | Sortierrichtung: asc oder desc (statt order) |
Sync-Endpunkte
Vorverbundene Endpunkte für CRM-Integrationen. Liefern Daten aus mehreren Tabellen in einem Aufruf.
Aufträge mit Kunden-, Rechnungs- und Versanddaten in einem Aufruf.
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:
| Parameter | Verfü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.
| Parameter | Standard | Beschreibung |
|---|---|---|
| sort | — | Sortierfeld (beliebiger Spaltenname der View) |
| order | asc | Sortierrichtung: asc oder desc |
| limit | 100 | Ergebnisse pro Seite (1–500) |
| offset | 0 | Ergebnisse ü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
| Tarif | Mandanten |
|---|---|
| Trial | 1 |
| Personal | 1 |
| Agency | 5 |
| Enterprise | Unbegrenzt |
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
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.
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
{
"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)
- Rechtsklick auf
update.bat→ „Als Administrator ausführen" - Versionsvergleich prüfen und mit Y bestätigen
Manuelles Update (offline)
- Laden Sie die neueste Version aus Ihrem Dashboard herunter
- 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.iniwird gesichert und nach dem Update wiederhergestellt- Download wird per SHA-256-Hash verifiziert
- Dienst wird automatisch neu gestartet
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.inilöschen, um in den Setup-Modus zurückzukehren
Fehlercodes
| Status | Bedeutung |
|---|---|
| 200 | Erfolg |
| 402 | Lizenz erforderlich oder Tarif-Limit überschritten |
| 403 | Ungültiger API-Schlüssel |
| 404 | Ressource nicht gefunden / Mandant nicht konfiguriert |
| 500 | Datenbankfehler |
| 503 | Setup erforderlich (Wizard unter /setup ausführen) |
402-Antwortformat
{
"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:
| Merkmal | Trial | Bezahlt |
|---|---|---|
| Endpunkte | /customers, /orders, /products, /sync | Alle |
| Mandanten | 1 | Je nach Tarif |
| Laufzeit | 30 Tage | Unbegrenzt |
Nicht verfügbare Endpunkte liefern Status 402 mit Upgrade-Link. Upgraden Sie unter /jtl-wawi#pricing.