Zum Inhalt springen

Changelog

Alle Änderungen und Verbesserungen an SQL2REST.

+ NeuNew Behoben / VerbessertFixed / improved HinweisNote

v1.2.10

Juni 2026June 2026 AktuellLatest

Stornierte Aufträge ausschließen (Storno / Auftragsart)Exclude cancelled orders (Storno / OrderType)

  • + Echte Verkaufszahlen pro Tag: Bestellungen tragen jetzt die Felder Storno und OrderType. Mit ?storno=0&type=B filterst du auf echte, nicht stornierte Verkaufsaufträge. Das ist genau die Logik, die JTL selbst für die "verkauft pro Tag"-Zahl nutzt (tBestellung.nStorno = 0 und cType = B), ideal für tägliche Absatz- und Verbrauchs-Auswertungen. Felder und Filter gelten für /orders, /sync/orders und die Positionen unter /orders/{nr}/items.Real sold-per-day figures: Orders now carry the Storno and OrderType fields. With ?storno=0&type=B you filter to real, non-cancelled sales orders. That is exactly the logic JTL itself uses for its "sold per day" figure (tBestellung.nStorno = 0 and cType = B), ideal for daily sales and consumption reports. The fields and filters apply to /orders, /sync/orders, and the line items under /orders/{nr}/items.
  • + Auch über MCP verfügbar: Die Orders-Tools für Claude Desktop, Cursor und Windsurf akzeptieren jetzt storno und order_type, sodass Claude dieselbe nicht-stornierte Verkaufszahl abfragen kann.Available over MCP too: the orders tools for Claude Desktop, Cursor, and Windsurf now accept storno and order_type, so Claude can query the same non-cancelled sales figure.

Hinweis zum Neugenerieren der ViewsPrompt to regenerate views

  • + Wenn ein Update neue Datenfelder hinzufügt, zeigt das API-Dashboard jetzt einen Hinweis. Ein Klick auf "Setup-Wizard starten" führt dich durch das Neugenerieren der Views, damit die neuen Spalten aktiv werden.When an update adds new data fields, the API dashboard now shows a prompt. Clicking "Start Setup Wizard" walks you through regenerating the views so the new columns become active.

v1.2.3

Juni 2026June 2026

Zeitraum-Filter im ZugriffsprotokollTime-range filter in the access log

  • + Das Zugriffsprotokoll (Nutzung & Protokoll) lässt sich jetzt nach Zeitraum filtern: 24 Stunden, 7, 30 oder 90 Tage oder ein eigener Von-bis-Bereich. Der Filter durchsucht das vollständige Protokoll lokal in deiner SQL2REST-Installation, nicht nur die bereits geladenen Zeilen.The access log (Usage & Log) can now be filtered by time range: 24 hours, 7, 30, or 90 days, or a custom from/to range. The filter scans the complete log locally in your own SQL2REST install, not just the rows already loaded.

v1.2.2

Juni 2026June 2026

Updates bleiben im API-DashboardUpdates stay on the API dashboard

  • Nach einem Auto-Update läuft der Dienst direkt im API-Dashboard weiter. Der Setup-Wizard wird nur noch bei Erst-Installation gestartet.After an auto-update, the service comes back on the API dashboard directly. The setup wizard now only starts on first install.

v1.2.0

Juni 2026June 2026

Neu gestaltetes API-DashboardRedesigned API dashboard

  • + Eine Oberfläche für Schlüssel, Nutzung und Status: Das API-Dashboard wurde von Grund auf neu gestaltet. Die Tabs Übersicht, Schlüssel sowie Nutzung & Protokoll fassen alles an einem Ort zusammen. Du siehst auf einen Blick, ob der Dienst läuft, kopierst die API-URL und verwaltest deine Zugänge, ohne den Dienst zu stoppen.One surface for keys, usage, and status: The API dashboard was redesigned from the ground up. The Overview, Keys, and Usage & Log tabs bring everything into one place. See at a glance whether the service is running, copy the API URL, and manage your access without stopping the service.

Team-Tarif: Mehrere API-SchlüsselTeam plan: multiple API keys

  • + Ein eigener Schlüssel pro Teammitglied oder Integration: Im Team-Tarif sind 5 API-Schlüssel enthalten. Jeden Schlüssel kannst du einzeln anzeigen, rotieren oder deaktivieren, ohne die anderen zu beeinflussen.A dedicated key per team member or integration: The Team plan includes 5 API keys. Reveal, rotate, or deactivate each one on its own without affecting the others.
  • Diese Funktionen sind Teil des neuen Team-Tarifs. Use-Cases, Audit und Offboarding-Story auf der Team-Seite.These features are part of the new Team plan. Use cases, audit, and offboarding story on the Team page.

Berechtigungen pro SchlüsselPer-key permissions

  • + Zugriff gezielt einschränken: Lege je Schlüssel fest, auf welche Endpunkte er zugreifen darf (z.B. nur /customers und /orders). Optional mit IP-Freigabe und Ablaufdatum (30 Tage, 90 Tage, 1 Jahr oder eigenes Datum).Scope access precisely: For each key, choose which endpoints it may reach (e.g. only /customers and /orders). Optionally with an IP allowlist and an expiry date (30 days, 90 days, 1 year, or a custom date).

Nutzung & ProtokollUsage & audit log

  • + Sehen, was wirklich abgefragt wurde: Das neue Zugriffsprotokoll zeigt pro Schlüssel Zeitpunkt, Methode, den abgefragten Endpunkt inklusive Parameter, den Status und die IP. Das Protokoll bleibt auf deinem Server.See what was actually queried: The new access log shows, per key, the time, method, the endpoint that was queried including its parameters, the status, and the IP. The log stays on your server.

Remote-MCPRemote-MCP

  • Netzwerk-Zugang ab Team-Tarif: Remote-MCP (Claude Desktop, Cursor, Windsurf über mehrere Rechner) ist jetzt Teil des Team-Tarifs. Lokales MCP am selben Rechner bleibt in allen Tarifen verfügbar. Personal-Nutzer sehen im Wizard einen Upgrade-Hinweis.Network access on the Team plan: Remote-MCP (Claude Desktop, Cursor, Windsurf across machines) is now part of the Team plan. Local MCP on the same machine stays available on all plans. Personal users see an upgrade prompt in the wizard.

v1.1.99

Juni 2026June 2026

Setup-WizardSetup wizard

  • + Suchfeld im Spaltenwähler: Im Schritt "Felder konfigurieren" hat der Spaltenwähler jetzt ein Suchfeld. Wird ein Feld nicht automatisch erkannt, lässt sich die passende Spalte per Tippen filtern, statt durch die lange, nach Tabellen gruppierte Liste zu scrollen.Search in the column picker: In the "Configure fields" step, the column picker now has a search box. If a field is not auto-detected, you can filter to the right column by typing instead of scrolling the long, table-grouped list.

API-DashboardAPI dashboard

  • + API-Dashboard direkt öffnen: Die neue ApiDashboard.bat öffnet das API-Dashboard im Browser, ohne den Dienst zu stoppen. StartWizard.bat bleibt für die Ersteinrichtung erhalten.Open the API-Dashboard directly: The new ApiDashboard.bat opens the API Dashboard in your browser without stopping the service. StartWizard.bat remains for first-time setup.

v1.1.98

Juni 2026June 2026

ProduktdatenProduct data

  • + Neu: Warengruppe: Die JTL-Warengruppe eines Artikels ist jetzt als ProductGroup über /products, den MCP-Server und den Setup-Wizard verfügbar.New: product group: An article's JTL Warengruppe is now available as ProductGroup via /products, the MCP server and the setup wizard.
  • Hersteller und Kategorie werden befüllt: In manchen Installationen kamen ManufacturerName und Category bei allen Artikeln leer zurück. Beide Felder werden jetzt korrekt erkannt und in /products ausgegeben.Manufacturer and category now populated: In some installations ManufacturerName and Category came back empty for every article. Both fields are now detected correctly and returned in /products.
  • Nach dem Update einmal neu einrichten: Damit die neuen Felder gezogen werden, den Setup-Wizard einmal erneut durchlaufen. Ein reines Update genügt nicht, da die Datenbank-Views dabei neu erzeugt werden müssen.Re-run setup once after updating: To pick up the new fields, run through the schema setup in the wizard once more. A plain update is not enough, because the database views need to be regenerated.

v1.1.97

Juni 2026June 2026

1-Klick-Auto-Update1-Click Auto-Update

  • Updates auch in Firmennetzwerken: In Umgebungen mit SSL-Inspection oder strengen Proxys konnte der Update-Download mit einem 401-Fehler abbrechen. Das ist jetzt behoben. Betrifft sowohl das Update über das API-Dashboard als auch update.bat.Updates work behind corporate proxies: In environments with SSL inspection or strict proxies, the update download could fail with a 401 error. This is now fixed. Affects both the updater in the API dashboard and update.bat.

Windows-Dienst-InstallationWindows service installation

  • Setup fordert Administrator-Rechte an: StartWizard.bat startet sich jetzt automatisch mit erhöhten Rechten. Auf Systemen, auf denen das Setup ohne Administrator-Rechte lief, konnte die Registrierung des Windows-Dienstes fehlschlagen, während die API trotzdem lief und damit einen Server-Neustart nicht überstand. Mit der automatischen Rechteanforderung wird der Dienst zuverlässig eingerichtet.Setup requests Administrator rights: StartWizard.bat now self-elevates. On systems where setup ran without Administrator rights, the Windows service registration could fail while the API still ran, meaning it would not survive a server reboot. With the automatic elevation prompt the service is set up reliably.
  • Installation wird überprüft: Der Setup-Wizard meldet nur dann Erfolg, wenn der Dienst wirklich registriert und gestartet wurde. Andernfalls erscheint eine klare Handlungsanweisung statt einer falschen Erfolgsmeldung.Install is verified: The wizard only reports success once the service is actually registered and running. Otherwise you get a clear next step instead of a false success message.
  • Ehrliche Statusanzeige: Das API-Dashboard zeigt jetzt Läuft – nicht als Dienst installiert an, wenn SQL2REST nur als laufendes Programm und nicht als Windows-Dienst aktiv ist, inklusive Reparatur-Hinweis.Honest status indicator: The API dashboard now shows Running – not installed as a service when SQL2REST is only running as a bare program rather than a Windows service, including a repair hint.

API-DashboardAPI dashboard

  • Stabilere Anmeldung im API-Dashboard: Einzelne Aktionen konnten mit "Invalid setup token" abbrechen, etwa wenn ein Browser-Tab über einen Server-Neustart hinweg offen blieb. Das API-Dashboard erneuert das Token jetzt automatisch und wiederholt die Aktion, statt abzubrechen.Steadier authentication in the API dashboard: Individual actions could fail with "Invalid setup token", for example when a browser tab stayed open across a server restart. The API dashboard now refreshes the token automatically and retries the action instead of failing.
  • Health-Check direkt im API-Dashboard: Der /health-Schnellzugriff zeigt den Verbindungsstatus aller Mandanten-Datenbanken jetzt direkt an.Health check right in the API dashboard: The /health quick action now shows the connection status of all mandant databases inline.

v1.1.96

Juni 2026June 2026

Claude-Desktop-Projekt-TemplateClaude Desktop project template

  • + Mitgeliefertes Projekt-Template: Die Installation enthält jetzt den Ordner claude-desktop-template/ mit fertigen Projekt-Anweisungen (Deutsch und Englisch) plus Setup-README. In ein Claude-Desktop-Projekt einfügen, und Claude kennt Ihr JTL-Wawi-Datenmodell, die verfügbaren MCP-Tools und typische Workflows sofort.Bundled project template: The install now includes a claude-desktop-template/ folder with ready-to-paste project instructions (German and English) plus a setup README. Paste it into a Claude Desktop project and Claude knows your JTL-Wawi data model, the available MCP tools, and typical workflows out of the box.
  • Online-Anleitung: Schritt-für-Schritt-Einrichtung, Config-Snippet und Beispiel-Prompts unter JTL-Wawi mit Claude Desktop verbinden.Online guide: Step-by-step setup, config snippet, and example prompts at Connect JTL-Wawi to Claude Desktop.

v1.1.95

Juni 2026June 2026

Remote-MCP (Beta)Remote-MCP (Beta)

  • + Remote-MCP-Endpunkt: Optionaler HTTP-Transport unter /mcp. Claude Desktop, Claude Code, Cursor und Windsurf auf anderen Arbeitsplätzen können jetzt mit einer einzigen SQL2REST-Installation reden. Stdio-MCP (sql2rest.exe --mcp) läuft unverändert weiter.Remote-MCP endpoint: Optional HTTP transport at /mcp. Claude Desktop, Claude Code, Cursor, and Windsurf on other workstations can now talk to a single shared SQL2REST install. Stdio MCP (sql2rest.exe --mcp) keeps working unchanged.
  • + Setup-Wizard: Neuer Bereich "Remote-MCP" in Schritt 5 (Bereitstellen) mit Toggle, Lokal-URL (Kopier-Button) und öffentlicher URL für den Reverse-Proxy. Hinweis-Zeile bei Internet-Exponierung ohne HTTPS.Setup wizard: New "Remote-MCP" section in Step 5 (Deploy) with toggle, Local URL (copy button), and Public URL for the reverse proxy. Warning row when internet-exposed without HTTPS.
  • + Konfiguration: Neuer Abschnitt [MCP] in config.ini mit den Schlüsseln HttpEnabled (Default false), Path (Default /mcp), HttpTimeoutSeconds (Default 60), PublicUrl.Configuration: New [MCP] section in config.ini with keys HttpEnabled (default false), Path (default /mcp), HttpTimeoutSeconds (default 60), PublicUrl.
  • Authentifizierung: Verwendet den bestehenden [API] ApiKey über den Header X-API-Key. Kein neues Secret nötig. Für Internet-Exponierung Reverse-Proxy mit HTTPS empfohlen (Anleitung).Authentication: Reuses your existing [API] ApiKey via the X-API-Key header. No new secret. For internet exposure put SQL2REST behind a reverse proxy with HTTPS (guide).
  • Build-Härtung: Release-Pipeline führt jetzt einen Smoke-Test aus, der prüft, dass /mcp einen Auth-Fehler (403) und keinen Lifespan-Bug (500) liefert. Verhindert, dass der bekannte FastMCP "Task group not initialized"-Bug ausgeliefert wird.Build hardening: Release pipeline now runs a smoke test asserting /mcp returns auth-failure 403, not a lifespan 500. Prevents the known FastMCP "Task group not initialized" regression from shipping.

v1.1.94

Juni 2026June 2026

Bestellungen / OrdersOrders

  • Datumsfilter korrigiert: GET /orders?from=2026-05-25 wirft keinen HTTP-500 mehr und ?from=2026-05-01 liefert tatsächlich Aufträge vom 1. Mai (vorher: 5. Januar, durch Locale-Misinterpretation auf deutschen SQL-Server-Installationen).Date filter fixed: GET /orders?from=2026-05-25 no longer throws HTTP 500, and ?from=2026-05-01 now returns May 1 orders as expected (previously returned January 5 due to locale-driven DMY misinterpretation on German SQL Server installs).
  • Standard-Sortierung: GET /orders liefert jetzt standardmäßig nach OrderDate DESC sortiert (neueste zuerst). Vorher wurden Aufträge alphabetisch nach Auftragsnummer ausgegeben (Shopify-Aufträge vor Amazon-Aufträgen, unabhängig vom Datum). Mit ?sort= bleibt explizite Steuerung möglich.Default sort: GET /orders now defaults to OrderDate DESC (newest first). Previously, orders came back alphabetically by order number (Shopify orders before Amazon orders regardless of date). Explicit ?sort= still wins.

MCP-Tools (Einkauf)MCP Tools (Procurement)

  • + Wareneingang über Claude Desktop: Sechs neue MCP-Tools machen die v1.1.91-REST-Endpunkte für Claude und andere AI-Assistenten sichtbar: list_purchase_orders, get_purchase_order, list_suppliers, get_supplier, list_goods_receipts, get_goods_receipt. Voraussetzung: Einkauf-Toggle im Setup-Wizard aktiviert.Procurement via Claude Desktop: Six new MCP tools expose the v1.1.91 REST endpoints to Claude and other AI assistants: list_purchase_orders, get_purchase_order, list_suppliers, get_supplier, list_goods_receipts, get_goods_receipt. Requires the procurement toggle in the setup wizard.

v1.1.93

Juni 2026June 2026

Wizard & DashboardWizard & Dashboard

  • + Klarere Benennung: Der lokale Wizard-Landingscreen heißt jetzt "API-Dashboard" (vorher "Source Hub"). Der CTA der zum Web-Konto auf sql2rest.com führt heißt jetzt "Web-Dashboard öffnen". Macht die Unterscheidung lokal vs. online sichtbar.Clearer naming: The local wizard landing screen is now called "API Dashboard" (previously "Source Hub"). The CTA that opens the web account on sql2rest.com is now labeled "Open Web Dashboard". Makes the local vs online distinction visible.

SicherheitSecurity

  • Wizard-Schriftarten korrekt geladen: Die Content-Security-Policy blockierte zuvor die im Wizard inline eingebetteten Plus-Jakarta-Sans- und Geist-Mono-Schriftarten. Wizard rendert jetzt wieder in der vorgesehenen Typografie.Wizard fonts now load correctly: The Content Security Policy was blocking the inline-embedded Plus Jakarta Sans and Geist Mono fonts in the wizard. The wizard now renders in the intended typography again.

v1.1.92

Juni 2026June 2026

SicherheitSecurity

  • Sicherer Default-Bind: Frische Installationen starten den Setup-Wizard jetzt mit der Radio-Auswahl "Nur Localhost" vorausgewählt. Netzwerk-Zugriff ist eine bewusste Opt-in-Entscheidung statt stiller Default. Bestehende Installationen bleiben unverändert.Safer default bind: Fresh installs now land on the "Localhost only" radio in the setup wizard. Network exposure is an explicit opt-in instead of a silent default. Existing installs are unchanged.
  • + Source-Hub-Warnung bei öffentlicher Exponierung: Wenn die API auf allen Netzwerk-Schnittstellen lauscht, zeigt der Source Hub jetzt ein gelb hinterlegtes Warning-Badge mit Hinweis auf die Reverse-Proxy-Anforderung. Vorher war diese Auswahl im Badge nicht von "Spezifische IPs" unterscheidbar.Source Hub warning for public exposure: When the API is bound to all network interfaces, the Source Hub now renders a yellow warning badge pointing at the reverse-proxy requirement. Previously this case was indistinguishable from "Specific IPs" in the badge.
  • Wizard-Hinweis: Bei Auswahl der "Alle IPs"-Option erscheint im Wizard eine Hinweis-Zeile zur Reverse-Proxy + HTTPS-Anforderung.Wizard hint: Selecting the "All IPs" radio in the wizard now surfaces a hint row explaining the reverse-proxy + HTTPS requirement.

v1.1.91

Mai 2026May 2026

Einkauf (Wareneingang)Procurement (Wareneingang)

  • + Drei neue Endpunkte für den Einkauf: GET /goods-receipts (Wareneingänge auf Lagerbewegungs-Ebene), GET /suppliers (Lieferanten mit Adresse und Geschäftskonditionen) und GET /purchase-orders (flache Header+Position-Sicht aus tLieferantenBestellung).Three new endpoints for purchasing workflows: GET /goods-receipts (Wareneingänge / stock-movement-level receipts), GET /suppliers (Lieferanten with address and commercial terms), and GET /purchase-orders (flat header+line view from tLieferantenBestellung).
  • + Soll-Ist-Reporting gegen Lieferantenverträge: /goods-receipts liefert die verknüpfte Bestellposition mit po_qty_ordered, po_qty_delivered_total und po_qty_still_open für Buchungsart-10-Zeilen. /purchase-orders?open_only=true gibt Positionen mit offener Menge > 0 zurück.Soll-Ist reporting against supplier contracts: /goods-receipts exposes the linked PO position with po_qty_ordered, po_qty_delivered_total, and po_qty_still_open for Buchungsart 10 rows. /purchase-orders?open_only=true returns positions with qty_open > 0.
  • + Opt-in über Wizard-Toggle. Einkauf ist standardmäßig deaktiviert. Aktivieren im Setup-Wizard in Schritt 3 unter "Einkauf / Wareneingang" (oder [ENTITIES] ProcurementEnabled = true in config.ini setzen). Im Aus-Zustand sind die Endpunkte nicht registriert und liefern 404; die API-Oberfläche bleibt sauber für Kunden ohne Einkaufs-Bedarf.Opt-in via wizard toggle. Procurement is off by default. Enable it in the setup wizard at Step 3 under "Einkauf / Wareneingang" (or set [ENTITIES] ProcurementEnabled = true in config.ini). When off, the endpoints are not registered and return 404, keeping the API surface clean for customers who do not need procurement data.
  • + Filter auf /goods-receipts: booking_type, booking_type_not_in (CSV), supplier_id, sku, has_po, since, until.Filters on /goods-receipts: booking_type, booking_type_not_in (CSV), supplier_id, sku, has_po, since, until.
  • + Verfügbar in allen Lizenz-Tiers (Trial, Personal, Agency), sobald der Wizard-Toggle aktiv ist. Kein Tier-Gating auf den Einkauf-Endpunkten.Available on all license tiers (trial, personal, agency) when the wizard toggle is on. No tier gating on procurement endpoints.

HinweiseNotes

  • Wenn Sie von v1.1.90 oder älter updaten und die Einkauf-Endpunkte nutzen möchten, den Setup-Wizard einmal neu durchlaufen; der Toggle liegt in Schritt 3 ("Felder konfigurieren") unterhalb des "Rechnungs-PDFs"-Abschnitts.If you update from v1.1.90 or older and want the procurement endpoints, re-run the setup wizard once: the toggle is in Step 3 ("Felder konfigurieren") below the "Rechnungs-PDFs" section.
  • Dokumentation der neuen Endpunkte: /docs/#procurement.Docs for the new endpoints: /docs/#procurement.

v1.1.90

Mai 2026May 2026

BugfixesBug Fixes

  • Setup funktioniert jetzt auch auf gehosteten JTL-Wawi-Installationen mit erzwungenen SQL-Server-Passwortrichtlinien. Der SQL2REST-Login wird jetzt mit deaktivierten CHECK_POLICY und CHECK_EXPIRATION angelegt, damit der Wizard auf Managed-Hosting-Providern durchläuft, bei denen globale Passwortrichtlinien die Verbindung direkt nach dem Setup blockiert haben (SQL-Fehler 18456). Bestehende kaputte Installationen werden beim nächsten Wizard-Lauf automatisch repariert.Setup now succeeds on hosted JTL-Wawi installations with enforced SQL Server password policies. The SQL2REST login is now created with CHECK_POLICY and CHECK_EXPIRATION disabled, so the wizard works on managed-hosting providers where global password policies previously blocked the connection immediately after setup (SQL error 18456). Existing broken installs are healed on the next wizard run.

v1.1.89

Mai 2026May 2026

BugfixesBug Fixes

  • Der Setup-Wizard scheitert nicht mehr auf JTL-Installationen mit mehreren Shop-Sprachen, wenn dasselbe Eigene Feld (z. B. "Tracking URL") in mehreren Sprachen oder Attributgruppen definiert ist. Vorher produzierte das doppelte CF_*-Spalten in view_API_Orders und brach die View-Erstellung ab.Setup wizard no longer fails on JTL installations with multiple shop languages when the same custom field ("Eigenes Feld", e.g. "Tracking URL") is defined across several languages or attribute groups. Previously this produced duplicate CF_* columns in view_API_Orders and aborted the view creation.
  • Mehrsprachige Eigene Felder vervielfachen keine Auftrags- oder Artikel-Zeilen mehr in der API-Antwort. Die View joint jetzt einen Sprachwert pro Attribut.Multi-language custom fields no longer multiply order or article rows in the API response. The view now joins one language value per attribute.
  • Der nur-lesende SQL2REST-Benutzer wird auf diesen Installationen jetzt zuverlässig angelegt (vorher wurde durch die fehlgeschlagene View-Erstellung auch die Benutzer-Anlage zurückgerollt, was nach dem Wizard zu SQL-Server-Login-Fehler 18456 führte).The SQL2REST read-only user is now created reliably during setup on these installations (previously the failed view creation rolled back the user creation, causing SQL Server login error 18456 after the wizard).

HinweiseNotes

  • Bei mehrsprachigen Setups liefert die API jetzt den primärsprachigen Wert jedes Eigenen Felds (niedrigste kSprache, üblicherweise Deutsch). Wer im selben Eigenen Feld unterschiedliche Sprachwerte pflegt und beide über die API braucht, legt vorerst ein separates Eigenes Feld pro Sprache an. Sprach-spezifische API-Spalten stehen auf der Roadmap.On multi-language setups, the API now returns the primary-language value of each custom field (lowest kSprache, typically German). If you maintain different per-language values in the same Eigenes Feld and need both via API, define a separate Eigenes Feld per language for now. Per-language API columns are on the roadmap.

v1.1.88

Mai 2026May 2026

AI Listing OptimizerAI Listing Optimizer

  • + JTL-Artikelnamen und -Beschreibungen mit dem eigenen KI-Key optimieren. Lokal, DSGVO-konform, BYOK für OpenAI, Anthropic und Gemini. Kein Token-Aufschlag.Optimize JTL product titles and descriptions with your own AI key. Local, GDPR-compliant, BYOK for OpenAI, Anthropic, and Gemini. No token markup.
  • + Source-Hub-Launcher: Optimizer aus der Local-DB-Kachel als Vollbild-Overlay öffnen. Die aktive Quelle wird durch jeden Schritt durchgereicht.Source Hub launcher: open the Optimizer from the Local DB tile as a fullscreen overlay. Active source threaded through every step.
  • + Editierbarer Vorschau-Schritt: gerenderten Prompt pro Artikel vor dem Lauf prüfen und anpassen. Harte Obergrenze in EUR oder Tokens pausiert den Lauf bei Überschreitung.Editable Vorschau step: review and tweak the rendered prompt per product before launching the run. Hard cap in EUR or tokens pauses the run if it overshoots.
  • + Approval-Grid pro Artikel: annehmen, ablehnen, inline editieren oder eine einzelne Zeile mit angepasstem Prompt neu generieren. Klick irgendwo auf die Vorschlag-Karte aktiviert den Edit-Modus. Eingebettete Amazon-SERP-Vorschau zeigt, wie der neue Titel wirkt.Per-product approval grid: approve, reject, edit inline, or regenerate a single row with a tweaked prompt. Click anywhere on the generated card to enter edit mode. Embedded Amazon SERP preview shows how the new title looks.
  • + Ameise-CSV-Export an einem festen Pfad mit "Im Explorer öffnen"-Button. Standardmäßig UTF-8 mit BOM, CP1252 als Fallback.Ameise CSV export at a fixed path with "Open in Explorer" button. UTF-8 with BOM by default, CP1252 fallback.
  • + Verlaufs-Tab mit DPAPI-verschlüsseltem Audit-Drill-down pro Lauf. Jede Zeile speichert den genauen Prompt, der an das LLM gesendet wurde. Crash-Resume beim nächsten Start.History tab with DPAPI-encrypted per-run audit drill-down. Each row stores the exact prompt that was sent to the LLM. Crash-resume on next launch.

Source HubSource Hub

  • + Klickbarer Status-Chip: Klick auf "Aktiv" stoppt den SQL2REST-Windows-Dienst, Klick auf "Offline" startet ihn. Kein Umweg mehr über services.msc.Clickable status chip: click "Aktiv" to stop the SQL2REST Windows service, click "Offline" to start it. No more dropping into services.msc.
  • + Post-Install-Auto-Redirect: Wenn der Wizard die Dienst-Installation abschließt, leitet er auf den laufenden Production-Port weiter, mit sichtbarem "Source Hub öffnen"-CTA.Post-install auto-redirect: when the wizard finishes installing the service, it forwards you to the running production port with a visible "Open Source Hub" CTA.

BugfixesBug Fixes

  • API-Key wird jetzt über localStorage über Browser-Tabs und Neuinstallationen hinweg gespeichert. Vorher bei Tab-Schließung verloren, was den Post-Install-Handshake erzwang.API key now persists across browser tabs and reinstalls via localStorage. Previously cleared on tab close, forcing you to redo the post-install handshake.
  • Setup-Token-Refresh überflutet den Server im Normalmodus nicht mehr: In-flight-Dedupe, 5s-Failure-Backoff und ein früher Skip, wenn bereits ein API-Key geladen ist.Setup-token refresh no longer storms the server in normal mode: in-flight dedupe, 5s failure backoff, and an early skip when an API key is already loaded.
  • Token-Summen im Run-Schritt enthalten jetzt auch fehlgeschlagene Zeilen. Vorher zeigte das Live-KPI 0 Output-Tokens, obwohl die einzelnen Karten welche auswiesen.Token totals on the Run step now include failed rows. Previously the live KPI showed 0 output tokens even though per-row cards displayed them.

HinweiseNotes

  • Setup-Doku: /docs/optimizer/ · Verkaufsseite: /use-cases/ai-listing-optimizer/Setup docs: /docs/optimizer/ · Sales page: /use-cases/ai-listing-optimizer/
  • Wer auf v1.1.86 oder älter war: nach dem Update den Setup-Wizard einmal neu durchlaufen, damit die neue Spalte ProductDescription für die Optimizer-Variable {beschreibung} verfügbar ist.If you were on v1.1.86 or older, re-run the setup wizard once after updating so the new ProductDescription column is available to the Optimizer's {beschreibung} variable.

v1.1.86

Mai 2026May 2026

BugfixesBug Fixes

  • Attribut-Filter-Ergebnisse enthalten jetzt immer das attributes-Objekt. Bei einem Filter wie ?attribute[farbe]=rot bringt jeder Artikel in der Antwort seine Merkmale schon mit.Attribute filter results now always include the attributes object. When you filter by ?attribute[farbe]=rot, each product in the response already carries its attributes.
  • Behoben: Setup-Wizard scheiterte bei der Erstellung der Merkmal-Views (vw_merkmale_catalog, vw_article_merkmale) wegen einer ORDER BY-Klausel, die in SQL-Server-Views nicht erlaubt ist.Fixed setup wizard failing to create Merkmale views (vw_merkmale_catalog, vw_article_merkmale) due to an ORDER BY clause not allowed in SQL Server views.

v1.1.85

Mai 2026May 2026

Merkmale (Attribute)Attributes (Merkmale)

  • + Neuer Endpunkt: GET /attributes liefert den vollen Merkmal-Katalog gruppiert nach NameNew endpoint: GET /attributes returns the full Merkmale catalog grouped by name
  • + Artikel betten ein attributes-Objekt ein: GET /products/{sku} liefert {"Farbe": ["Rot"], "Größe": ["M"]}Products embed an attributes object: GET /products/{sku} returns {"Farbe": ["Rot"], "Größe": ["M"]}
  • + List-Opt-in: GET /products?include=attributes vermeidet N+1 bei BedarfList opt-in: GET /products?include=attributes avoids N+1 when needed
  • + Artikel nach Merkmal filtern: GET /products?attribute[farbe]=rot, mehrere Filter werden UND-verknüpftFilter products by attribute: GET /products?attribute[farbe]=rot, multiple filters AND-combined
  • + Advanced-Modus: ?advanced=true macht JTL_AttributeId und JTL_ValueId sichtbar, für Write-Back über die offizielle JTL-APIAdvanced mode: ?advanced=true exposes JTL_AttributeId and JTL_ValueId for write-back via the official JTL API
  • + Einzelne Merkmale über den Eintrag [MERKMALE] Disabled= in config.ini ausblendenHide individual attributes via the [MERKMALE] Disabled= entry in config.ini

MCP-ServerMCP Server

  • + Zwei neue MCP-Tools für KI-Assistenten: list_attributes und filter_products_by_attributeTwo new MCP tools for AI assistants: list_attributes and filter_products_by_attribute
  • Insgesamt jetzt 15 Tools und 2 RessourcenTotal now 15 tools and 2 resources

HinweiseNotes

  • Erfordert ein erneutes Durchlaufen des Setup-Wizards, damit die neuen Views vw_merkmale_catalog und vw_article_merkmale angelegt werdenRequires re-running the setup wizard to create the new vw_merkmale_catalog and vw_article_merkmale views
  • Übersetzungen werden beim Anlegen der View fixiert (standardmäßig Deutsch). Laufzeit-Umschaltung per Accept-Language ist noch nicht aktivTranslations are baked at view-creation time (German by default). Runtime Accept-Language switching is not active yet

v1.1.81

April 2026April 2026

Lagerbestand & IDsStock & IDs

  • + Neuer Endpunkt: GET /products/{sku}/stock: Lagerbestand pro LagerNew endpoint: GET /products/{sku}/stock - per-warehouse stock breakdown
  • + Stock-Antwort enthält SKU, AvailableStock, ReservedStock, IncomingStock, BlockedStock, JTL_ProductIdStock response includes SKU, AvailableStock, ReservedStock, IncomingStock, BlockedStock, JTL_ProductId
  • + Interne JTL-IDs jetzt entitätenübergreifend für Write-Back über die offizielle JTL-API verfügbar: JTL_CustomerId, JTL_SalesOrderId, JTL_ItemId, JTL_DeliveryNoteId, JTL_ShipmentId, JTL_ProductIdInternal JTL IDs exposed across entities for write-back via JTL's official API: JTL_CustomerId, JTL_SalesOrderId, JTL_ItemId, JTL_DeliveryNoteId, JTL_ShipmentId, JTL_ProductId
  • + Interne-ID-Felder sitzen im Wizard unter "Erweitert", standardmäßig deaktiviert. Der JTL_-Präfix macht ihren Zweck sofort sichtbarInternal-ID fields sit under an "Advanced" collapsible in the wizard, default disabled. The JTL_ prefix makes their purpose explicit at a glance

FilterFiltering

  • + Exact-Match-Filter ?customer_number= auf /customers und /ordersExact-match filter ?customer_number= on /customers and /orders
  • + Exact-Match-Filter ?sku= auf /productsExact-match filter ?sku= on /products
  • /stock?sku=-Filter funktioniert jetzt; schlug vorher mit "Filter column not available" fehl/stock?sku= filter now works - previously failed with "Filter column not available"

ZuverlässigkeitReliability

  • + Auto-Restart bei Crash über NSSM-Service-ConfigAuto-restart on crash via NSSM service config
  • /health liefert jetzt HTTP 503 mit Pro-Mandant-Detail, wenn eine DB-Verbindung scheitert; war vorher immer 200/health now returns HTTP 503 with per-mandant detail when any DB connection fails - was always 200
  • Getrieben von Production-Feedback unserer Early Adopters, danke für die Hinweise zu diesen Edge CasesDriven by production feedback from early adopters - thank you for reporting these edge cases

v1.1.79

April 2026April 2026

AdressenAddresses

  • + Aufträge enthalten jetzt verschachtelte BillingAddress- und ShippingAddress-ObjekteOrders now include nested BillingAddress and ShippingAddress objects
  • + Kunden enthalten jetzt ein verschachteltes Address-ObjektCustomers now include a nested Address object
  • + Sync-Endpunkte enthalten ebenfalls verschachtelte AdressenSync endpoints also include nested addresses
  • Felder: Street, PostalCode, City, Country, CompanyName, FirstName, LastNameFields: Street, PostalCode, City, Country, CompanyName, FirstName, LastName

LieferscheineDelivery Notes (Lieferscheine)

  • + Neuer Endpunkt: GET /delivery-notesNew endpoint: GET /delivery-notes
  • + Suche: GET /delivery-notes?search=TEXTSearch: GET /delivery-notes?search=TEXT
  • + Detail mit Positionen: GET /delivery-notes/{number}Detail with line items: GET /delivery-notes/{number}
  • + Positionen einbinden: ?include=items liefert ArticleNumber, ArticleName, QuantityInclude items: ?include=items for ArticleNumber, ArticleName, Quantity
  • Unterstützt Teillieferungen (ein Auftrag, mehrere Lieferscheine)Supports partial shipments (one order, multiple delivery notes)

Suche & FilterSearch & Filtering

  • ?page= funktioniert jetzt auf allen List-Endpunkten?page= now works on all list endpoints
  • + /orders unterstützt ?search=, ?order_number=, ?external_order_id=/orders supports ?search=, ?order_number=, ?external_order_id=
  • + /invoices und /shipments unterstützen ?search=/invoices and /shipments support ?search=

DokumentationDocumentation

  • + /docs, /redoc, /openapi.json jetzt auch im Production-Modus verfügbar/docs, /redoc, /openapi.json now available in production mode

v1.1.69

April 2026April 2026

Eigene FelderCustom Fields (Eigene Felder)

  • + Eigene Felder werden während des Setups automatisch erkanntCustom fields automatically discovered during setup
  • Unterstützt Eigene Felder auf Artikeln, Kunden und AufträgenSupports article, customer, and order custom fields
  • Felder im Setup-Wizard pro Feld an/aus schaltenToggle fields on/off in the setup wizard
  • Werte erscheinen mit CF_-Präfix in den API-AntwortenValues appear with CF_ prefix in API responses

Verbesserungen RechnungenInvoice Improvements

  • + Rechnungen enthalten die verknüpfte Auftragsnummer (OrderNumber)Invoices include linked order number (OrderNumber)
  • + Filter nach Auftrag: GET /invoices?order_number=12345Filter by order: GET /invoices?order_number=12345
  • Verbesserte PDF-Zuordnung für Rechnungsnummern mit BindestrichenImproved PDF matching for invoice numbers with hyphens

Verbesserungen Aufträge & VersandOrder & Shipment Improvements

  • + Auftragsnummer auf Versand- und AuftragspositionenOrder number on shipments and order items
  • + Sync- und Auftrags-Endpunkte nach Auftragsnummer filterbarFilter sync/orders by order number
  • Verbesserte Zahlungsstatus-Erkennung über JTL-Versionen hinwegImproved payment status detection across JTL versions

Setup-WizardSetup Wizard

  • + Konfigurierbarer API-Port (Standard: 8000)Configurable API port (default: 8000)
  • Klarere Beschreibungen für nicht gemappte FelderClearer descriptions for unmapped fields
  • Verbessertes Re-Run-Verhalten bei bestehenden InstallationenImproved re-run handling on existing installations

v1.1.x

März 2026March 2026

Auto-Update-SystemAuto-Update System

  • + Ein-Klick-Updates direkt aus dem Setup-WizardOne-click updates from within the setup wizard
  • + Live-Fortschritts-Streaming während des DownloadsLive progress streaming during download
  • Automatischer Dienst-Neustart nach dem UpdateAutomatic service restart after update

KompatibilitätCompatibility

  • + Automatische Spalten-Erkennung über alle JTL-Wawi-Versionen (1.5 – 2.0)Automatic column detection across all JTL-Wawi versions (1.5 - 2.0)
  • + Dynamischer JOIN-Aufbau passt sich an Ihre Datenbankstruktur anDynamic JOIN building adapts to your database structure
  • Groß-/Kleinschreibungs-tolerante Zuordnung für Schemas und SpaltenCase-insensitive matching for schemas and columns
  • Doppelte Zeilen in den Kunden-Views behobenFixed duplicate rows in customer views

Website & DokuWebsite & Docs

  • + Dokumentation auf sql2rest.com/docsDocumentation at sql2rest.com/docs
  • + Blog, Use-Case-Seiten, mehrsprachige InhalteBlog, use-case pages, bilingual content

v1.0.0

Februar 2026February 2026

Erstes ReleaseInitial Release

  • + Read-only REST-API für JTL-Wawi-DatenbankenRead-only REST API for JTL-Wawi databases
  • + Auto-Discovery-Wizard erkennt JTL-Version und mappt FelderAuto-discovery wizard detects JTL version and maps fields
  • 7 Endpunkte: Kunden, Aufträge, Auftragspositionen, Rechnungen, Artikel, Lagerbestand, Versand7 endpoints: customers, orders, order items, invoices, products, stock, shipments
  • Vorverbundene Sync-Views für CRM-IntegrationenPre-joined sync views for CRM integrations
  • Field-Level-Privacy-Kontrolle, Paginierung, Filter, SortierungField-level privacy controls, pagination, filtering, sorting
  • API-Key-Authentifizierung, nur-lesender SQL-BenutzerAPI key authentication, read-only SQL user
  • Unterstützt JTL-Wawi 1.5, 1.6, 1.8, 1.9, 1.10, 1.11 und 2.0Supports JTL-Wawi 1.5, 1.6, 1.8, 1.9, 1.10, 1.11, and 2.0