v1.4.17
Oktober 2026October 2026 AktuellLatest Neu: Kundenkonditionen, Lagernamen und mehr StammdatenNew: customer terms, warehouse names and more master data
- +
/customer-terms liefert Kreditlimit und Rabatt je Kunde, im MCP dazu list_customer_terms und get_customer_terms. Die Konditionen haben eine eigene Freigabe./customer-terms returns credit limit and discount per customer, with list_customer_terms and get_customer_terms in MCP. Customer terms have their own permission. - +
/customers liefert weitere Stammdaten, darunter USt-IdNr., Kundengruppe, Zahlungsart, Zahlungsziel und Sprache./customers returns more master data, including VAT ID, customer group, payment method, payment term and language. - +
/products liefert Gewicht, Versandgewicht und Maße./products returns weight, shipping weight and dimensions. - +
/purchase-orders und /goods-receipts nennen das Lager mit Namen, Wareneingänge auch den Lagerplatz./purchase-orders and /goods-receipts name the warehouse by name, and goods receipts also name the bin. - • Damit die neuen Angaben ankommen, bereitet SQL2REST die Daten nach dem Update einmal neu auf.For the new values to arrive, SQL2REST prepares the data once more after the update.
Filter und ListenFilters and lists
- ✓ Das Bis-Datum schließt den ganzen Tag ein, in allen Listen und im MCP.The end date includes the whole day, in every list and in MCP.
- ✓ Lange Listen lassen sich lückenlos durchblättern, jeder Datensatz kommt genau einmal.Long lists page through without gaps, every record arrives exactly once.
API-DokumentationAPI documentation
- ✓ Die API-Dokumentation (
/docs) ist am Server und im eigenen Netzwerk erreichbar.The API documentation (/docs) is reachable on the server and within your own network.
Remote-ZugriffRemote access
- ✓ Der Remote-Zugriff funktioniert auch, wenn SQL2REST nicht auf Port 8000 läuft. Nach einer Port-Änderung schaltest du ihn einmal aus und wieder ein.Remote access also works when SQL2REST does not run on port 8000. After changing the port, turn it off and on once.
v1.4.16
Oktober 2026October 2026 Nach Verkaufskanal und nach Marke filternFilter by sales channel and by brand
- +
/orders und /reports/product-sales nehmen jetzt einen Verkaufskanal entgegen, im MCP ebenso (list_orders, get_product_sales). Gefiltert wird auf den Namen des Kanals: wer alle Kassensysteme meint, nennt sie einzeln./orders and /reports/product-sales now accept a sales channel, and so do the MCP tools (list_orders, get_product_sales). The filter matches the channel name: if you mean every point-of-sale system, name them individually. - +
/products nimmt ?manufacturer=, search_products den gleichen Parameter. Ist das Herstellerfeld bei dir abgeschaltet, sagt die Antwort das, statt wortlos die ganze Artikelliste zurückzugeben, die wie eine Antwort aussieht./products accepts ?manufacturer=, and search_products takes the same parameter. If you switched the manufacturer field off, the answer says so, instead of silently returning the full product list, which looks like an answer.
Bestand: Variante, Artikel und ob er noch geführt wirdStock: variant, product, and whether it is still carried
- +
/stock liefert je Zeile zwei neue Angaben: zu welchem Artikel eine Variante gehört und ob der Artikel aktiv ist. Damit lassen sich Varianten eines Artikels zusammenfassen, ohne sie aus der Artikelnummer zu erraten./stock returns two new values per row: which product a variant belongs to, and whether the product is active. That lets you group the variants of a product without guessing them from the article number. - • Damit die neuen Angaben ankommen, muss SQL2REST die Daten einmal neu aufbereiten. Verwaltet SQL2REST die Aufbereitung selbst, passiert das nach dem Update von allein, sobald du das Dashboard öffnest. Sonst sagt es die Oberfläche und der Assistent erledigt es.For the new values to arrive, SQL2REST has to prepare the data once more. Where SQL2REST manages that preparation itself, it happens on its own after the update, the next time you open the dashboard. Otherwise the interface says so and the wizard handles it.
Add-ons: Analytics zeigt in "Lager & Reichweite" und "Bestellvorschläge", was zu bestellen istAdd-ons: Analytics shows what to order in "Stock & coverage" and "Reorder suggestions"
- + Beide Dashboards lassen inaktive und gelöschte Artikel jetzt weg. Wer sie braucht, blendet sie mit dem Schalter "Inaktive und gelöschte Artikel mitzeigen" wieder ein.Both dashboards now leave out inactive and deleted products. If you need them, the "Include inactive and deleted articles" switch brings them back.
- + Die Kacheln nennen zwei Zahlen: wie viele Artikel und wie viele Varianten. Bei einem Katalog mit vielen Varianten liegt die Variantenzahl um ein Vielfaches über der Artikelzahl. Bestellt wird je Variante.The tiles now carry two figures: how many products, and how many variants. On a catalogue with many variants the variant count runs several times higher than the product count, and you order per variant.
- ✓ Ein Artikel, der sich im gewählten Zeitraum nicht verkauft hat, heißt jetzt "Kein Absatz" statt "Kritisch". Ein gut gefülltes Lager ohne Verkäufe ist kein Notfall.A product with no sales in the selected period now reads "No sales" instead of "Critical". A well-stocked product without sales is not an emergency.
- ✓ Wurde eine Abfrage wegen ihrer Größe gekürzt, sagt die Antwort das jetzt in jedem Fall.If a query was shortened because of its size, the answer now says so in every case.
- ✓ Bei großen Katalogen ist das Dashboard schneller da. Die Zahl auf der Kachel und die Liste darunter stammen aus derselben Abfrage, sie können also nicht auseinanderlaufen.On large catalogues the dashboard arrives faster, and the figure on the tile and the list below it come from the same query and therefore cannot drift apart.
v1.4.15
September 2026September 2026 Mehr Daten aus dem JTL-Shop für das Shopify-Sync Add-onMore data from the JTL shop for the Shopify-Sync add-on
- • Diese Version bringt nichts Neues für die REST-Schnittstelle. Sie stellt bereit, was das Shopify-Sync Add-on 0.2.37 braucht, damit Artikelname und Beschreibungen aus dem gewählten JTL-Ausgabeweg kommen können. Was sich dadurch für dich ändert, steht im Changelog des Add-ons.This release adds nothing new to the REST API. It provides what the Shopify-Sync add-on 0.2.37 needs so the product name and descriptions can come from the selected JTL output channel. What changes for you is described in the add-on changelog.
- • Wenn du das Add-on nutzt: zuerst SQL2REST aktualisieren, dann das Add-on. Sonst meldet das Add-on, dass es die Auswahl noch nicht anbieten kann.If you use the add-on: update SQL2REST first, then the add-on. Otherwise the add-on will tell you it cannot offer the choice yet.
v1.4.14
September 2026September 2026 Einrichtung und VerbindungSetup and connection
- + Im Einrichtungs-Assistenten stehen in Schritt 1 die auf dem Rechner gefundenen SQL-Server-Instanzen zur Auswahl. Das Textfeld bleibt: die Liste kennt nur Instanzen auf diesem Rechner, und eine Adresse im Netzwerk wird weiter eingetragen. Eine bereits gespeicherte Adresse bleibt stehen; die Liste ändert sie nicht von selbst.In the setup wizard, step 1 now offers the SQL Server instances found on this machine. The text field stays: the list only knows instances on this machine, and an address on the network is still typed in. An address you already saved stays as it is; the list does not change it on its own.
- ✓ Eine Abfrage kann nicht mehr endlos stehen. Läuft sie in die Zeitgrenze, kommt eine Antwort, die das benennt. Vorher lautete die Meldung "Server nicht gefunden", und dann sucht man an der falschen Stelle, obwohl die Verbindung stand.A query can no longer stand indefinitely. If it runs into its time limit, the answer names that. The message used to read "server not found", which sends you looking in the wrong place while the connection was fine.
Meldungen sagen jetzt, woran es liegtMessages now say what the reason is
- ✓ Jede Absage nennt jetzt ihren Fall: eine Frage des Tarifs, etwas, das es nicht gibt, etwas, das gerade nicht geprüft werden konnte, oder eine echte Störung. Die vier lesen sich unterschiedlich und nennen unterschiedliche nächste Schritte. Vorher stand meist nur da, dass es nicht ging.Every refusal now names its case: a question of your plan, something that does not exist, something that could not be checked right now, or a genuine malfunction. The four read differently and suggest different next steps. Before, the message usually only said that it failed.
Eine fehlende Datenaufbereitung bleibt nicht mehr unbemerktMissing data preparation is no longer invisible
- ✓ Ist die Datenaufbereitung nicht eingerichtet, sagt das Dashboard es jetzt. Vorher zeigte es gar keinen Hinweis, während die Abrufe fehlschlugen, und kein Hinweis liest sich wie "alles in Ordnung".If data preparation is not set up, the dashboard now says so. Before it showed no notice at all while requests were failing, and no notice reads as "everything is fine".
- ✓ Kann SQL2REST nicht prüfen, ob alles eingerichtet ist, sagt es das jetzt, statt zu schweigen.If SQL2REST cannot check whether everything is set up, it now says so instead of staying silent.
Korrekturen an der OberflächeInterface corrections
- ✓ Die Aufbewahrungsfrist im Protokoll zeigt den wirklich gespeicherten Wert, und sagt es, wenn er sich nicht laden lässt. Vorher stand dort ein Vorgabewert, der aussah wie der gespeicherte.The log retention period shows the value that is really stored, and says so when it cannot be loaded. Before, it showed a default that looked like the stored one.
- ✓ Die Liste der Add-ons sagt jetzt, wenn sie sich nicht laden lässt. Vorher stand dort eine leere Liste, und die liest sich wie "es gibt keine".The add-ons list now says when it cannot be loaded. Before, an empty list was shown, and that reads as "there are none".
- • Wird der Zugriff auf die Konfiguration abgelehnt, nennt der Hinweis jetzt zuerst den Schritt, der die Ursache berühren kann. Vorher riet das Dashboard zum Neu-Einrichten, und das soll eine laufende Installation nicht tun.If a request for the configuration is refused, the notice now names the step that can actually address the cause first. Before, the dashboard advised setting up again, which a running installation should not do.
Add-ons: Analytics-OptimierungenAdd-ons: Analytics improvements
- ✓ Firmenname, Zwölf-Monats-Verlauf und Umsatz je Verkaufskanal sind wieder da. Auf manchen Installationen blieben sie leer, und die Meldung dazu legte es den eigenen Daten zur Last. Die Ursache lag bei uns.The company name, the twelve-month history and revenue per sales channel are back. On some installations they stayed empty, and the message blamed the data for it. The cause was on our side.
- ✓ Der Bestellwert in den Bestellvorschlägen zeigt jetzt einen Betrag statt 0 EUR. Wo kein Einkaufspreis gepflegt ist, steht "Unbekannt" statt einer Null, und die Summe nennt daneben, wie viele Zeilen ihr fehlen.The order value in the reorder suggestions now shows an amount instead of 0 EUR. Where no purchase price is maintained it says "Unknown" instead of a zero, and the total names how many rows it is missing.
- ✓ In den Artikellisten ist die Spalte Warengruppe jetzt gefüllt, und unter Lager & Reichweite steht in der Spalte Artikel der Artikelname statt der Artikelnummer. Die Spalte SKU heißt auf Deutsch außerdem Artikelnummer; im Englischen bleibt SKU.In the product lists the product group column is now filled, and under Inventory & Reach the product column shows the product name instead of the article number. The SKU column is also called Artikelnummer in German now; in English it stays SKU.
- + Ein Hinweis nennt jetzt die Zahl der ausgewerteten Datensätze und sagt, dass ein kürzerer Zeitraum die Auswertung vollständig macht. Vorher zeigte die Seite die Zahlen so, als wären sie vollständig, obwohl sie zu niedrig waren. Betrifft nur Zeiträume mit sehr vielen Aufträgen.A notice now names how many records were evaluated and says that a shorter date range gives a complete result. Before, the page presented the figures as if they were complete even though they were too low. This only affects date ranges with a very high number of orders.
v1.4.13
September 2026September 2026 Add-ons: Analytics und Listing-Optimizer zeigen wieder die aktuellen ZahlenAdd-ons: Analytics and Listing Optimizer show current figures again
- ✓ Beide Add-ons greifen jetzt auf dieselben aufbereiteten Daten zu wie die übrige API. Auf manchen Installationen lasen sie zuvor noch an der Stelle, an der diese Daten vor einem früheren Update lagen.Both add-ons now use the same prepared data as the rest of the API. On some installations they previously read from where that data sat before an earlier update.
Berechtigungen: Erweitern wird jetzt übernommenPermissions: widening is now applied
- ✓ Gibst du einem API-Schlüssel weitere Datenbereiche frei, wird das jetzt gespeichert. Nutzer waren davon nicht betroffen.Granting additional data areas to an API key is now saved. Users were not affected.
- • Wer die Berechtigungen eines Schlüssels seit 1.4.x erweitert hat, sollte sie einmal nachsehen: möglicherweise gilt noch der engere Stand.If you widened a key’s permissions at any point in 1.4.x, it is worth checking them once: the narrower set may still be in force.
Zugriffsberechtigung: alle freigegebenen Endpunkte sichtbarAuthorization: every endpoint a scope opens is now listed
- ✓ Jeder Bereich zeigt vollständig, welche Endpunkte er freigibt. Der Bereich für Workflows gibt
/workflow-logs und /workflow-definitions frei und heißt deshalb jetzt Workflow-Protokolle und -Definitionen.Every scope now lists the endpoints it opens in full. The workflow scope opens /workflow-logs and /workflow-definitions, so it is now called Workflow logs and definitions. - • Auch Artikel (
/products und /shops), Bestand (/stock und /warehouses) und Lieferscheine (/delivery-notes und /shipments) geben je zwei Endpunkte frei. Angezeigt werden jetzt beide.Products (/products and /shops), Stock (/stock and /warehouses) and Delivery notes (/delivery-notes and /shipments) each open two endpoints as well. Both are now listed.
v1.4.12
September 2026September 2026 Adressblock der Aufträge: acht neue Felder je SeiteOrder address block: eight new fields per side
- + Rechnungs- und Lieferadresse eines Auftrags tragen jetzt acht weitere Felder: Adresszusatz, Firmenzusatz, Länderkennung, Bundesland, Anrede, Titel, Mobilnummer und Fax -- jeweils für
BillingAddress und ShippingAddress.The billing and shipping address of an order now carry eight more fields: address addition, company addition, country code, state, salutation, title, mobile number and fax -- for both BillingAddress and ShippingAddress. - •
AddressAddition kann bei einer Packstation-Lieferung die Postnummer tragen.AddressAddition can hold the post number on a packstation delivery. - ✓ Wie überall gilt die Feldauswahl: in Schritt 3 der Einrichtung entscheidest du für jedes der sechzehn neuen Felder einzeln, ob es herausgeht.The field selection applies as everywhere: in step 3 of the setup you decide individually for each of the sixteen new fields whether it goes out.
- • Damit die neuen Felder ankommen, muss SQL2REST die Daten einmal neu aufbereiten. Verwaltet deine Anlage das selbst, passiert es nach dem Update automatisch und dauert einen Moment.To make the new fields available, SQL2REST has to prepare the data once more. If your installation handles that itself, it happens automatically after the update and takes a moment.
v1.4.11
September 2026September 2026 Picklisten: neu über die API und im ChatPick lists: new over the API and in chat
- + Deine Picklisten aus der Wawi sind jetzt abrufbar: welche es gibt, wann sie angelegt wurden und von wem, mit welchem Status, und welche Artikel in welcher Menge daraufstehen.Your pick lists from the Wawi are now available: which ones exist, when they were created and by whom, what status they carry, and which articles in which quantity are on them.
- + Suchen kannst du nach Zeitraum, nach Status und nach Auftrag. Die Frage „welche Picklisten gehören zu Auftrag 15715" wird dabei serverseitig beantwortet, auch bei zehntausenden Picklisten.You can search by date range, by status and by order. The question "which pick lists belong to order 15715" is answered on the server, even across tens of thousands of pick lists.
- • Eine Pickliste hat keine eigene Auftragsnummer, denn sie kann mehrere Aufträge abdecken und ein Auftrag kann über mehrere Picklisten laufen. Die Auftragsnummer steht deshalb auf der Zeile, wo sie eindeutig ist.A pick list has no order number of its own, because it can cover several orders and one order can run through several pick lists. The order number therefore sits on the line, where it is unambiguous.
- + Im Chat (via MCP) gibt es dazu
list_picklists, get_picklist und get_picklist_items.In chat (via MCP) this comes with list_picklists, get_picklist and get_picklist_items. - ✓ Picklisten haben eine eigene Berechtigung. Wer Aufträge lesen darf, sieht damit nicht automatisch, was im Lager bewegt wird und wer es zusammenstellt.Pick lists have a permission of their own. Being allowed to read orders does not automatically show what moves in the warehouse and who picks it.
- ✓ Wie überall gilt die Feldauswahl: in Schritt 3 der Einrichtung entscheidest du Spalte für Spalte, was herausgeht. Der Name des Mitarbeiters, der eine Pickliste angelegt hat, ist ein eigener Schalter.The field selection applies here as everywhere: in step 3 of the setup you decide column by column what goes out. The name of the employee who created a pick list has a switch of its own.
Einkaufspreise haben jetzt eine eigene BerechtigungPurchase prices now have a permission of their own
- • Der Einkauf ist in drei Berechtigungen geteilt: Lieferanten (Stammdaten), Lieferantenbestellungen (
/purchase-orders) und Wareneingänge (/goods-receipts). Bisher deckte eine einzige alle drei ab.Procurement is split into three permissions: suppliers (master data), purchase orders (/purchase-orders) and goods receipts (/goods-receipts). Until now a single one covered all three. - • Warum: wer den Namen und die Anschrift eines Lieferanten lesen darf, soll damit nicht automatisch sehen, was du einkaufst und zu welchem Preis. Einkaufspreis je Position und Einstandspreis je Wareneingang stehen in diesen beiden Bereichen, und sie sind etwas anderes als eine Adresse.Why: being allowed to read a supplier's name and address should not automatically mean seeing what you buy and at what price. The purchase price per line and the unit cost per receipt live in those two areas, and they are not the same thing as an address.
- ✓ Es bricht nichts. Jeder bestehende Schlüssel, bei dem heute Lieferanten angehakt ist, bekommt die zwei neuen Bereiche beim Update einmalig dazu, Teammitglieder eingeschlossen. Schlüssel mit vollem Zugriff erreichen wie bisher alles. Bei einer bereits verbundenen KI-App kommen die Bereiche erst mit dem Neuverbinden an, siehe unten.Nothing breaks. Every existing key that has suppliers ticked today gains the two new areas once with the update, team members included. Keys with full access reach everything as before. On an already connected AI app the areas only arrive once you reconnect, see below.
- ✓ Bei neuen Schlüsseln legst du ab sofort genauer fest, worauf sie zugreifen dürfen: Wareneingang ohne Bestellungen, Bestellungen ohne Stammdaten, jede Kombination. Bei den mitgezogenen Schlüsseln steht die Freigabe sichtbar im Reiter Schlüssel und lässt sich dort abwählen.For new keys you can now set more precisely what they may access: goods receipts without purchase orders, purchase orders without master data, any combination. On the keys that were carried over, the grant is visible in the Keys tab and can be un-ticked there.
- • Im Chat (via MCP) gilt dasselbe:
list_purchase_orders und get_purchase_order hängen an den Lieferantenbestellungen, list_goods_receipts und get_goods_receipt am Wareneingang.The same holds in chat (via MCP): list_purchase_orders and get_purchase_order sit on purchase orders, list_goods_receipts and get_goods_receipt on goods receipts.
Damit die Änderungen im Chat ankommenGetting the changes into chat
- • Eine bestehende Verbindung behält die Bereiche, mit denen sie angelegt wurde. Das betrifft beides: die neuen Picklisten-Werkzeuge und die zwei Einkaufsbereiche, die dein Schlüssel beim Update dazubekommt.An existing connection keeps the areas it was created with. That affects both: the new pick list tools and the two procurement areas your key gains with the update.
- • Bist du über einen Konnektor verbunden: „Tool-Liste aktualisieren" reicht nicht. Trenne den Konnektor in Claude erst („Trennen"), danach erscheint ein „Verbinden"-Knopf. Läuft die Verbindung über die Konfigurationsdatei, etwa in Claude Desktop, Claude Code oder Cursor, reicht ein vollständiger Neustart.If you are connected through a connector: "Update tools list" is not enough. First "Disconnect" the connector in Claude, then a "Connect" button appears. If the connection runs through the configuration file, as in Claude Desktop, Claude Code or Cursor, a full restart is enough.
- ✓ Hat dein Schlüssel einzelne Bereiche angehakt statt vollem Zugriff, hake Picklisten vorher im Reiter Schlüssel an. Anders als beim Einkauf gibt es hier keine automatische Übernahme: Picklisten sind neu, kein Schlüssel verliert etwas, und niemand bekommt still mehr Rechte, als er hatte.If your key has individual areas ticked rather than full access, tick pick lists in the Keys tab first. Unlike procurement there is no automatic carry-over here: pick lists are new, no key loses anything, and nobody silently gains more rights than they had.
AI Listing Optimizer: echte Artikel, gemessene ZahlenAI Listing Optimizer: real articles, measured numbers
- ✓ Wenn der Abruf deiner Artikel scheiterte, zeigte der Optimizer Beispielartikel, die wie deine eigenen aussahen. Man konnte sie auswählen und einen Lauf darauf starten. Jetzt kommen in diesem Fall keine Artikel, dafür eine klare Meldung, und der Ablauf bleibt gesperrt, bis der Abruf wieder geht.When fetching your articles failed, the Optimizer showed sample articles that looked like your own. You could select them and start a run on them. In that case you now get no articles, a clear message instead, and the flow stays blocked until the fetch works again.
- ✓ Die Token-Zahlen je Artikel im Lauffenster waren geschätzt, nicht gemessen. Bei eigenem API-Schlüssel liest du genau daran deine Kosten ab. Jetzt steht dort nur, was wirklich gemessen wurde; ohne Messung ein Strich mit „Noch nicht gemessen".The token counts per article in the run view were estimated, not measured. With your own API key that is exactly what you read your cost off. Now only measured values appear there; without a measurement you get a dash and "Not measured yet".
- ✓ Die Laufhistorie zeigte zwölf Beispiel-Läufe mit Datum, Modell und Beträgen, sowohl auf einer frischen Installation als auch wenn der Abruf scheiterte. Beides sind jetzt zwei verschiedene Zustände: leer ist leer, ein Fehler ist ein Fehler.The run history showed twelve sample runs with dates, models and amounts, both on a fresh installation and when the fetch failed. Those are now two separate states: empty is empty, an error is an error.
- • Wo etwas nicht abrufbar ist, steht jetzt der Grund und was zu tun ist statt „Daten konnten nicht geladen werden". Das gilt auch für die Analytics-Ansichten.Where something cannot be loaded you now get the reason and what to do instead of "Data could not be loaded". This applies to the Analytics views as well.
v1.4.10
September 2026September 2026 Einrichtungsassistent: mehr Kontrolle über deine FelderSetup wizard: more control over your fields
- + In dieser Ausgabe kommen 88 Felder in die Feldauswahl, die bisher immer mitgeliefert wurden und dort nicht auftauchten: 28 bei den Aufträgen – darunter Name, Firma, Straße, Postleitzahl, Ort, E-Mail und Telefonnummer aus Rechnungs- und Lieferadresse, dazu Anmerkung, Hinweis, voraussichtliches Lieferdatum und Vorgangsfarbe – und 60 bei Lieferanten, Gutschriften, Merkmalen und Mitarbeitern.This release brings 88 fields into the field list that were always delivered and never appeared there: 28 for orders – among them name, company, street, postal code, city, email and phone from the billing and shipping address, plus annotation, hint, expected delivery date and order colour – and 60 for suppliers, credit notes, attributes and employees.
- ✓ Die Mitarbeiterfelder sind dabei der Grund, warum es diese Auswahl gibt: Name, Anmeldename, Abteilung und E-Mail deiner eigenen Leute gehen nur noch heraus, wenn du es willst.The employee fields are why this selection exists: name, login, department and email of your own staff only leave the building if you want them to.
- • Abgeschaltete Felder bleiben in der Antwort stehen und sind leer. So ändert sich die Form der Antwort nicht, wenn du deine Auswahl änderst – dein Skript läuft weiter. Dasselbe gilt für ein Feld, das deine JTL-Version gar nicht führt: es steht dabei, und die Spalte bleibt leer.Switched-off fields stay in the response and are empty. That way the shape of the response does not change when you change your selection – your script keeps working. The same holds for a field your JTL version does not keep at all: it says so, and the column stays empty.
- ✓ Ein Feld, das du im Einrichtungsassistenten abgeschaltet hast, konnte nach einem Update wieder mitgeliefert werden. Behoben: deine Auswahl gilt ab sofort für jede Abfrage, und ein Update ändert daran nichts. Auch bei den Retouren, wo sie bisher wirkungslos war.A field you switched off in the setup wizard could be delivered again after an update. Fixed: your selection now applies to every query, and an update does not change it. Including returns, where it had no effect until now.
- + Bei der Feldauswahl steht neben jedem Feld ein Beispiel aus deiner Wawi – und zwar aus einem einzigen, zusammengehörenden Datensatz statt aus lauter verschiedenen. Du siehst also vor dem Anhaken, was ein Feld wirklich liefert.When you pick fields, each one now shows a sample from your own JTL-Wawi – taken from one single, coherent record instead of a different one per field. You see what a field actually delivers before you tick it.
- + Du kannst den Datensatz selbst wählen: eine Nummer eintippen, die du kennst, oder mit den Pfeilen blättern. Trifft die Nummer nichts, sagt der Assistent das – er zeigt nie stillschweigend einen anderen Datensatz.You can choose the record: type a number you know, or step through with the arrows. If the number matches nothing, setup says so – it never quietly shows a different record instead.
- ✓ Ist ein Feld in deinen Daten leer, steht jetzt daneben, wie oft – zum Beispiel „leer in 48 von 50 geprüften Datensätzen". Ein einzelner Strich sah bisher aus wie „gibt es nicht".If a field is empty in your data, you now see how often – for example "empty in 48 of 50 records checked". A bare dash used to read as "does not exist".
Jeder Bereich hat jetzt eine deutsche BezeichnungEvery area now carries a proper name
- ✓ Der Schritt, der deine Daten erkennt, zeigt zu jedem gefundenen Bereich die deutsche Bezeichnung – „Auftragsdetails", „Mahnhistorie", „Retouren-Positionen" – und benutzt dieselben wie die Feldauswahl im Schritt danach.The step that detects your data names every area it found, and uses the same names as the field list in the step after it.
Lieferanten findest du jetzt über ihre NummerSuppliers can now be found by their number
- ✓ Unter
GET /suppliers findest du einen Lieferanten über beide Nummern: die Lieferantennummer und deine eigene Kundennummer bei diesem Lieferanten. Firmenname und Ansprechpartner suchen sich wie bisher.Under GET /suppliers you can find a supplier by either number: the supplier number and your own customer number at that supplier. Company name and contact search as before. - ✓ Welche der beiden Nummern welche ist, steht überall dabei: im Einrichtungsassistenten, in der API-Dokumentation und in den KI-Werkzeugen.Which of the two numbers is which is stated everywhere: in the setup wizard, in the API documentation and in the AI tools.
Wer die API erreichen darfWho may reach the API
- + Beim letzten Schritt des Einrichtungsassistenten stellst du ein, von wo deine Instanz erreichbar ist: nur von diesem Rechner, aus deinem Netzwerk oder von außerhalb. Was du gewählt hast, bleibt sichtbar, ohne dass alles gleichzeitig aufgeklappt ist – und ändern lässt sich später alles in den Einstellungen.In the final step of the setup wizard you set where your instance can be reached from: this machine only, your network, or from outside. What you chose stays visible without everything being open at once, and you can change all of it later in Settings.
Frisch eingerichtete InstallationenFreshly set-up installations
- ✓ Auf einigen Systemen wurden die Daten der Stammadresse (Straße, Postleitzahl, Ort, Telefonnummer und Firmenname) unter
GET /customers und GET /sync/customers nicht korrekt angezeigt. Behoben.On some systems the master address details (street, postal code, city, phone number and company name) were not displayed correctly under GET /customers and GET /sync/customers. Fixed. - ✓ Die Festlegung des Steuersatzes aus 1.4.9 greift jetzt auch dann, wenn der Einrichtungsassistent frisch durchlaufen wurde. Führt deine Wawi nur eine Steuerzone, ändert sich nichts.The tax-rate determination from 1.4.9 now also applies when the setup wizard has just been run. If your JTL-Wawi keeps a single tax zone, nothing changes.
Kleinere KorrekturenSmaller fixes
- + Die Zahlungsart ist jetzt mit Namen wählbar. Wo vorher eine Nummer stand, steht jetzt der Name, den deine Wawi dafür führt – zum Beispiel „Amazon" oder „PayPal".The payment method can now be picked by name. Where a number used to stand, you now read the name your JTL-Wawi keeps for it – "Amazon" or "PayPal", for example.
- ✓ Der Retouren-Wert
Value erscheint jetzt auch dann in der Feldauswahl, wenn du nur aktualisiert und den Einrichtungsassistenten nicht noch einmal durchlaufen hast.The return value Value now also appears in the field list when you only updated and did not run the setup wizard again. - ✓ Der letzte Schritt des Einrichtungsassistenten zählt die Felder des Einkaufs mit. Die Zahl dort stimmt jetzt mit der aus der Feldauswahl überein.The final step of the setup wizard now counts the procurement fields too. The number there now matches the one in the field list.
Nach dem UpdateAfter the update
- • Verwaltet SQL2REST das bei dir selbst, passiert es nach dem Update von allein und dauert einen Moment. Sonst meldet sich das API-Dashboard mit der Schaltfläche „Views neu generieren". Danach stehen die Angaben richtig, ohne dass du etwas nachtragen musst.If SQL2REST manages this for you, it happens by itself after the update and takes a moment. Otherwise the API dashboard tells you, with a "Regenerate Views" button. After that the details are correct, with nothing for you to fill in.
v1.4.9
September 2026September 2026 Anmerkung und Hinweis: jetzt überall gefülltAnnotation and hint: now filled everywhere
- ✓
OrderAnnotation und OrderHint tragen die Werte aus dem Auftrag, über GET /orders, GET /orders/{nummer} und GET /sync/orders. Kamen die beiden Felder bei dir leer zurück, genügt das Update.OrderAnnotation and OrderHint carry the values from the order, via GET /orders, GET /orders/{number} and GET /sync/orders. If the two fields came back empty for you, the update is all it takes.
Der Steuersatz eines Artikels ist eindeutig bestimmtThe tax rate of a product is unambiguous
- + Führt deine Wawi mehrere Steuerzonen, ist festgelegt, welcher Satz für einen Artikel gilt. Das trägt
ProductVAT und den daraus berechneten Bruttopreis. Die Werte bleiben, wie sie sind.Where your JTL-Wawi keeps more than one tax zone, it is defined which rate applies to a product. That carries ProductVAT and the gross price derived from it. The values stay as they are. - ✓ Berechnete Angaben wie Steuersatz und Bruttopreis kommen mit der automatischen Erneuerung der Sichten mit. Das Update genügt.Derived values such as tax rate and gross price arrive with the automatic refresh of the database views. The update is enough.
Nach dem UpdateAfter the update
- • Verwaltet SQL2REST das bei dir selbst, passiert es nach dem Update von allein und dauert einen Moment. Sonst meldet sich das API-Dashboard mit der Schaltfläche „Views neu generieren". Auch der Einrichtungsassistent bringt dich auf den neuen Stand.If SQL2REST manages this for you, it happens by itself after the update and takes a moment. Otherwise the API dashboard tells you, with a "Regenerate Views" button. Running the setup assistant brings you up to date as well.
- ✓ Keine neue Berechtigung, kein Neuverbinden im Chat. Es kommt kein neues Werkzeug dazu.No new permission, no reconnecting in chat. No new tool is added.
v1.4.8
September 2026September 2026 Workflow-Definitionen lesbar: warum ein Workflow so entschieden hatWorkflow definitions you can read: why a workflow decided as it did
- + Die Definitionen deiner JTL-Workflows sind abrufbar: bei welchem Ereignis ein Workflow startet, welche Bedingungen er prüft und welche Aktionen er ausführt. Im Chat über
list_workflow_definitions und get_workflow_definition, über die API unter GET /workflow-definitions.The definitions of your JTL workflows can now be retrieved: which event starts a workflow, which conditions it checks and which actions it runs. In chat via list_workflow_definitions and get_workflow_definition, over the API under GET /workflow-definitions. - + Das gehört zusammen: Das Protokoll zeigt den Abbruch, der Workflow dahinter zeigt den Grund. Beide führen dieselbe Workflow-Kennung, du musst also nichts zuordnen. Meldet das Protokoll etwa, ein Auslieferungs-Workflow sei an der Bedingung
Auftragspositionen.KomplettLieferbarAusLager abgebrochen, zeigt dir der Workflow die Bedingung selbst: die geprüfte Eigenschaft, den Vergleich und den Wert, ohne dass du in die Wawi wechselst.The two belong together: the log shows the abort, the workflow behind it shows the reason. Both carry the same workflow id, so there is nothing to match up by hand. If the log says a shipping workflow aborted on the condition Auftragspositionen.KomplettLieferbarAusLager, the workflow shows you the condition itself: the property being checked, the comparison and the value, without switching to JTL-Wawi. - + Vergleicht eine Bedingung gegen ein Lager, steht der Name des Lagers daneben und nicht nur seine Nummer. Aus „ist gleich 1" wird so eine Angabe, mit der du etwas anfangen kannst.Where a condition compares against a warehouse, the name of that warehouse sits next to it instead of just its number. "equals 1" becomes something you can actually act on.
- ✓ Keine neue Berechtigung nötig. Wer Workflows bereits freigegeben hat, sieht die Definitionen mit dem Update, ohne etwas anzuhaken.No new permission needed. If you have already granted workflows, the definitions arrive with the update and there is nothing to tick.
- • Die Parameter kommen je Aktionsart aus einer festen Feldauswahl: Empfänger, Betreff, Text, Anhänge, Versandart, Lager und so weiter. Eine Aktionsart ohne hinterlegte Felder erscheint mit ihrer Bezeichnung, damit du siehst, dass sie läuft.Parameters come from a fixed set of fields per action type: recipient, subject, body, attachments, shipping method, warehouse and so on. An action type with no fields on file appears with its name, so you can still see that it runs.
- • Die Bezeichnung des Ereignisses kommt aus dem Ereigniskatalog der Wawi, und der ist in gewachsenen Beständen oft nur teilweise gefüllt. Deshalb sind
ObjectType und EventType die tragenden Angaben: sie stehen immer, und danach wird auch gefiltert.The name of the event comes from the JTL-Wawi event catalogue, which in grown installations is often only partly filled. That is why ObjectType and EventType are the load-bearing values: they are always there, and that is what you filter on.
Anmerkung und Hinweis am AuftragAnnotation and hint on the order
- + Aufträge führen jetzt ihre Anmerkung und ihren Hinweis: als
OrderAnnotation und OrderHint über GET /orders, GET /orders/{nummer} und GET /sync/orders.Orders now carry their annotation and their hint: as OrderAnnotation and OrderHint via GET /orders, GET /orders/{number} and GET /sync/orders. - • Beide Werte kommen unverändert zurück, nicht getrimmt und nicht formatiert. Wer dort einen Dateipfad hinterlegt, den eine Anbindung weiterverarbeitet, bekommt ihn so zurück, wie er drinsteht.Both values come back unchanged, not trimmed and not reformatted. If you keep a file path there that an integration processes further, you get it back exactly as it stands.
Nach dem Update: zwei HandgriffeAfter the update: two things to do
- • Damit die neuen Angaben ankommen, müssen die Datenbanksichten einmal erneuert werden. Verwaltet deine Anlage ihre Sichten selbst, passiert das nach dem Update automatisch und dauert einen Moment.To make the new values available, the database views need refreshing once. If your installation manages its views itself, this happens automatically after the update and takes a moment.
- • Sonst meldet sich das API-Dashboard: dort erscheint ein Hinweis mit der Schaltfläche „Views neu generieren". Sie führt dich einmal durch die Einrichtung, danach sind die neuen Angaben da.Otherwise the API dashboard tells you: a note appears there with a "Regenerate Views" button. It walks you through setup once, and then the new values are there.
- • Und damit die neuen Werkzeuge im Chat auftauchen, muss die Verbindung die neuen Bereiche kennen. Bist du über einen Konnektor verbunden: „Tool-Liste aktualisieren" reicht nicht. Trenne den Konnektor in Claude erst („Trennen"), danach erscheint ein „Verbinden"-Knopf. Eine bestehende Verbindung behält die Bereiche, mit denen sie angelegt wurde. Läuft die Verbindung über die Konfigurationsdatei, etwa in Claude Desktop, Claude Code oder Cursor, reicht ein vollständiger Neustart.And for the new tools to appear in chat, the connection has to know about the new areas. If you are connected through a connector: "Update tools list" is not enough. First "Disconnect" the connector in Claude, then a "Connect" button appears. An existing connection keeps the areas it was created with. If the connection runs through the configuration file, as in Claude Desktop, Claude Code or Cursor, a full restart is enough.
v1.4.7
September 2026September 2026 Neue Berechtigungen: Auswertungen, Mitarbeiter, Gutschriften, Workflow-ProtokolleNew permissions: reports, employees, credit notes, workflow logs
- • Vier Bereiche haben ab sofort eine eigene Berechtigung: Auswertungen (
/reports), Mitarbeiter (/employees), Gutschriften (/credit-notes) und Workflow-Protokolle (/workflow-logs). Jeder Bereich wird einzeln freigegeben, keiner hängt mehr an der Berechtigung eines anderen.Four areas now have a permission of their own: reports (/reports), employees (/employees), credit notes (/credit-notes) and workflow logs (/workflow-logs). Each is granted separately; none rides on another area's permission any more. - ✓ Schlüssel mit vollem Zugriff erreichen alles wie bisher. Wer mit eingeschränkten Schlüsseln arbeitet, aktiviert die neuen Bereiche in den Berechtigungen im Reiter Schlüssel.Keys with full access reach everything as before. If you work with restricted keys, enable the new areas under the permissions in the Keys tab.
- • Warum: wer Aufträge lesen darf, soll damit nicht automatisch den Umsatz je Mitarbeiter sehen. Eine Auswertung ist etwas anderes als die Daten, aus denen sie entsteht, und Mitarbeiterdaten sind keine Kundendaten. Betroffen sind auch die Verkaufszahlen je Artikel, die seit 1.4.6 unter
/reports liegen.Why: being allowed to read orders should not automatically mean seeing revenue per employee. A report is not the same thing as the data behind it, and employee records are not customer records. This also covers the sales figures per product, which have lived under /reports since 1.4.6.
Neu am Auftrag: wer dahintersteht und wann geliefert werden sollNew on orders: who is behind them, and when delivery is due
- + Jeder Auftrag führt drei getrennte Angaben: wer ihn erstellt hat, welcher Mitarbeiter am Auftrag hinterlegt ist, und wer den Kunden betreut. Drei Angaben und nicht eine, weil sie verschiedene Fragen beantworten.Every order carries three separate values: who created it, which employee is assigned to the order, and who looks after the customer. Three and not one, because they answer different questions.
- • Der Unterschied, der zählt: Ersteller und Mitarbeiter am Auftrag stehen fest. Der Kundenbetreuer ist eine Momentaufnahme. Ordnest du einen Kunden einem anderen Betreuer zu, ändert sich die Angabe auch bei seinen alten Aufträgen. Für „wer betreut den Kunden heute" ist das richtig, für „wer hat diesen Auftrag gemacht" nicht.The difference that matters: the creator and the employee on the order stay put. The account manager is a snapshot. Reassign a customer to a different manager and the value changes on their past orders too. Right for "who looks after this customer today", wrong for "who made this order".
- + Dazu das voraussichtliche Lieferdatum, das du in JTL unter Details / Versand pflegst: als
ExpectedDeliveryDate an jedem Auftrag, über GET /orders und GET /sync/orders.Plus the expected delivery date you maintain in JTL under Details / Versand: as ExpectedDeliveryDate on every order, via GET /orders and GET /sync/orders. - • Es ist eine Planungsangabe: sie sagt, wann geliefert werden soll, nie dass geliefert wurde. Für den tatsächlichen Versand bleibt
ShippingDate die richtige Angabe.It is a planning value: it says when delivery is expected, never that a delivery took place. For actual dispatch, ShippingDate remains the right field.
Mitarbeiterverzeichnis, auch für AusgeschiedeneEmployee directory, including former staff
- + Zu jeder Mitarbeiter-Angabe gibt es jetzt Name, Abteilung und ob die Person noch aktiv ist. Abrufbar über
GET /employees und GET /employees/{id}, im Chat (via MCP) als list_employees und get_employee.For every employee value there is now a name, a department and whether the person is still active. Available via GET /employees and GET /employees/{id}, and in chat (via MCP) as list_employees and get_employee. - ✓ Ausgeschiedene Mitarbeiter bleiben auffindbar. Das ist der Punkt daran: eine Auswertung über das letzte Jahr bleibt richtig, auch wenn jemand das Unternehmen inzwischen verlassen hat.Former staff stay findable. That is the point of it: a report covering last year stays correct even if someone has since left the company.
Umsatz je Mitarbeiter in einer einzigen AntwortRevenue per employee in a single answer
- + Frag Claude oder ChatGPT „was hat jeder im August verkauft?" und bekomm je Mitarbeiter Aufträge, Kunden, Netto- und Bruttoumsatz, den durchschnittlichen Auftragswert und die Stornos. In einer Abfrage, nicht in tausenden Seiten.Ask Claude or ChatGPT "what did each person sell in August?" and get orders, customers, net and gross revenue, average order value and cancellations per employee. In one query, not across thousands of pages.
- + Du entscheidest, wem der Umsatz zugerechnet wird: dem Ersteller des Auftrags, dem Mitarbeiter am Auftrag oder dem Kundenbetreuer. Die Antwort nennt die getroffene Wahl mit, denn derselbe Auftrag zählt je nach Wahl auf eine andere Person.You decide who the revenue is attributed to: the person who created the order, the employee assigned to it, or the account manager. The answer states which choice was used, because the same order counts towards a different person depending on the choice.
- • Auf Wunsch kommt der Rohertrag dazu. Gerechnet wird mit dem heutigen Einkaufspreis aus dem Artikelstamm, nicht mit dem zum Verkaufszeitpunkt. Bei alten Aufträgen oder geänderten Einkaufspreisen weicht der Wert deshalb ab, und jede Antwort schreibt das dazu.On request the gross profit comes with it. It is computed with today's purchase price from the product master, not the price at the time of sale. On older orders or after a price change the figure therefore differs, and every answer states this.
- • Verfügbar im Chat (via MCP) und in der REST-API: als Werkzeug
get_sales_by_employee und über GET /reports/sales-by-employee, mit deinem gewohnten API-Schlüssel.Available in chat (via MCP) and in the REST API: as the get_sales_by_employee tool and via GET /reports/sales-by-employee, with your usual API key.
Mahnstufe steht an der Rechnung, mit BezeichnungDunning level on the invoice, with its label
- + Rechnungen führen ihre Mahnstufe, und zwar mit der Bezeichnung, die die Wawi auch anzeigt, also „2. Mahnung" statt einer blanken Zahl. Dazu Mahndatum, Mahngebühr und der offene Betrag.Invoices carry their dunning level, with the label JTL-Wawi shows as well, so "2. Mahnung" instead of a bare number. Plus dunning date, dunning fee and the open amount.
- + Fragen wie „welche Rechnungen stehen mindestens auf der 2. Mahnung?" oder „was ist noch gar nicht angemahnt?" werden direkt beantwortet, ohne alles durchzublättern. Über REST mit
GET /invoices?min_dunning_level=3; min_dunning_level=0 liefert die noch nicht angemahnten.Questions like "which invoices are at the second reminder or beyond?" or "what has not been dunned at all yet?" are answered directly, without paging through everything. Over REST with GET /invoices?min_dunning_level=3; min_dunning_level=0 returns the ones not dunned yet. - • Auch hier eine Momentaufnahme: benennst du eine Mahnstufe in der Wawi um, ändert sich die Bezeichnung rückwirkend auch bei alten Mahnungen.A snapshot here too: rename a dunning level in JTL-Wawi and the label changes retroactively on old dunnings as well.
Gutschriften als eigene ListeCredit notes as a list of their own
- + Gutschriften sind abrufbar wie Rechnungen: mit Nummer, Datum, Betrag, Status, dem Kunden, der zugehörigen Rechnung und dem Mitarbeiter. Über
GET /credit-notes und GET /credit-notes/{nummer}, im Chat als list_credit_notes und get_credit_note.Credit notes can be retrieved like invoices: with number, date, amount, status, the customer, the related invoice and the employee. Via GET /credit-notes and GET /credit-notes/{number}, in chat as list_credit_notes and get_credit_note. - • Du bekommst den Gesamtbetrag je Gutschrift, nicht die einzelnen Artikelzeilen. Welche Artikel in welcher Menge gutgeschrieben wurden, kommt in einer späteren Version.You get the total amount per credit note, not the individual line items. Which products were credited, and how many, is coming in a later version.
Firmenname in den Sync-DatenCompany name in the sync data
- ✓ Die Auftragsdaten für CRM-Anbindungen führen den Firmennamen zum Auftrag: den Namen, unter dem dieser Auftrag abgerechnet wurde. Damit ist es der Stand zum Zeitpunkt des Auftrags, und benennt sich ein Kunde später um, bleiben alte Aufträge, wie sie waren.The order data for CRM integrations carries the company name for the order: the name this order was billed under. So it is the state at the time of the order, and if a customer renames itself later, old orders stay as they were.
- • Befüllt ist er bei allen Firmenkunden. Privatkunden führen keinen Firmennamen, dort bleibt das Feld erwartungsgemäß leer.It is populated for all business customers. Private customers have no company name, so the field stays empty there as expected.
Kundendaten für CRM-Anbindungen: mit Anschrift und KontaktCustomer data for CRM integrations: with address and contact
- + Die Kundendaten unter
GET /sync/customers führen Firma, Vor- und Nachname, E-Mail, Telefon und die vollständige Anschrift. Damit reicht ein Aufruf für einen vollständigen Kundensatz im CRM.The customer data under GET /sync/customers carries company, first and last name, email, phone and the full address. One call is enough for a complete customer record in your CRM. - • Es ist die Standardadresse aus dem Kundenstamm, also die, die du in JTL am Kunden pflegst. Nicht die Anschrift eines einzelnen Auftrags, und damit auch bei Kunden vorhanden, die noch nichts bestellt haben.It is the default address from the customer record, the one you maintain on the customer in JTL. Not the address of an individual order, so it is there for customers who have not ordered yet.
Workflow-Protokolle im Chat, mit eigener BerechtigungWorkflow logs in chat, with a permission of their own
- + Du kannst jetzt auch im Chat nach Workflow-Läufen fragen, mit denselben Filtern wie in der Oberfläche: Zeitraum, Schweregrad, einzelner Workflow, Volltextsuche.You can now ask about workflow runs in chat as well, with the same filters as in the interface: time range, severity, a single workflow, full-text search.
- • Das Protokoll sagt, was passiert ist. Die Regeln selbst, also warum ein Workflow so entschieden hat, waren zu diesem Zeitpunkt noch nicht abrufbar. Seit 1.4.8 sind sie es.The log says what happened. The rules themselves, meaning why a workflow decided as it did, were not available at that point. Since 1.4.8 they are.
- • Die Protokolle haben dafür eine eigene Berechtigung. Wer mit eingeschränkten Schlüsseln arbeitet, gibt sie dort frei; Schlüssel mit vollem Zugriff sind nicht betroffen. Im Testzeitraum sind sie nicht abrufbar, sie gehören zum laufenden Betrieb.The logs have a permission of their own for this. If you work with restricted keys, enable it there; keys with full access are unaffected. They are not available during the trial period: they belong to day-to-day operation.
Behoben: Sortierrichtung bei Rechnungen und LieferscheinenFixed: sort direction on invoices and delivery notes
- ✓ Bei
/invoices und /delivery-notes teilte sich der Filter nach Auftragsnummer den Parameternamen mit der Sortierrichtung. Jede angegebene Sortierrichtung wurde deshalb als Auftragsnummer gelesen und lieferte eine leere Seite — auch ?order=asc, also das ausdrückliche Setzen der Standardrichtung. Wer die Richtung wegließ, bekam Daten; wer sie mitschickte, nicht. Der Filter hat jetzt einen eigenen Namen: ?order_number=.On /invoices and /delivery-notes the order-number filter shared its parameter name with the sort direction. Any sort direction you passed was therefore read as an order number and returned an empty page — including ?order=asc, the explicit form of the default. Leaving the direction out returned data; passing it did not. The filter now has a name of its own: ?order_number=. - • Bestehende Aufrufe bleiben gültig.
?order=86957 wird weiterhin als Auftragsnummer verstanden, denn eine Auftragsnummer ist keine Sortierrichtung. Du musst nichts umstellen; wer nach Datum absteigend sortieren will, kann es ab jetzt.Existing calls stay valid. ?order=86957 is still understood as an order number, because an order number is not a sort direction. Nothing needs changing on your side; sorting by date descending simply works now.
Nach dem Update: zwei HandgriffeAfter the update: two things to do
- • Damit die neuen Angaben ankommen, müssen die Datenbanksichten einmal erneuert werden. Verwaltet deine Anlage ihre Sichten selbst, passiert das nach dem Update automatisch und dauert einen Moment.To make the new values available, the database views need refreshing once. If your installation manages its views itself, this happens automatically after the update and takes a moment.
- • Sonst meldet sich das API-Dashboard: dort erscheint ein Hinweis mit der Schaltfläche „Views neu generieren". Sie führt dich einmal durch die Einrichtung, danach sind die neuen Angaben da.Otherwise the API dashboard tells you: a note appears there with a "Regenerate Views" button. It walks you through setup once, and then the new values are there.
- • Und damit die neuen Werkzeuge im Chat auftauchen, muss die Verbindung die neuen Bereiche kennen. Bist du über einen Konnektor verbunden: „Tool-Liste aktualisieren" reicht nicht. Trenne den Konnektor in Claude erst („Trennen"), danach erscheint ein „Verbinden"-Knopf. Eine bestehende Verbindung behält die Bereiche, mit denen sie angelegt wurde. Läuft die Verbindung über die Konfigurationsdatei, etwa in Claude Desktop, Claude Code oder Cursor, reicht ein vollständiger Neustart.And for the new tools to appear in chat, the connection has to know about the new areas. If you are connected through a connector: "Update tools list" is not enough. First "Disconnect" the connector in Claude, then a "Connect" button appears. An existing connection keeps the areas it was created with. If the connection runs through the configuration file, as in Claude Desktop, Claude Code or Cursor, a full restart is enough.
v1.4.6
September 2026September 2026 Verkaufszahlen liegen unter /reportsSales figures live under /reports
- • Die Verkaufszahlen je Artikel liegen unter
GET /reports/product-sales. Der Pfad hat sich geändert und es gibt keine Weiterleitung. Wer /api/dashboard/product-sales verdrahtet hat, stellt auf die neue Adresse um.Sales figures per product live at GET /reports/product-sales. The path has changed and there is no redirect. If you wired up /api/dashboard/product-sales, point it at the new address. - ✓ Wen das betrifft: nur, wer den alten Pfad seit 1.4.5 selbst verdrahtet hat. Dann ist es eine Zeile. Im Chat (via MCP) ändert sich nichts, das Werkzeug heißt weiter
get_product_sales und findet den neuen Weg von allein.Who this affects: only those who wired up the old path themselves since 1.4.5. In that case it is a one-line change. Nothing changes in chat (via MCP): the tool is still called get_product_sales and finds the new route by itself. - • Grund für die Änderung: es folgen weitere Auswertungs-Endpunkte, und die gehören gemeinsam unter
/reports.Why the change: more reporting endpoints are on the way, and they belong together under /reports.
Shopify-Protokoll: Fehler zuerst, im KlartextShopify log: errors first, in plain language
- ✓ Klappst du einen Artikeldaten-Lauf auf, stehen die Fehler auf der ersten Seite.Expand a product-data run and the errors are on the first page.
- + Die häufigen Shopify-Meldungen werden jetzt auch in verständlichem Deutsch angezeigt. Der Originaltext bleibt erreichbar, wenn du mit der Maus darauf zeigst.The common Shopify messages are now also shown in plain language. The original text stays available on hover.
- ✓ Ein Lauf mit Fehlern heißt „Fertig, mit Fehlern". Und der Filter bleibt bedienbar: wer auf „Alle" stellt, sieht die übrigen Zeilen sofort, und die Wahl bleibt beim nächsten Öffnen erhalten.A run with errors is labelled "Done, with errors". And the filter stays usable: switching to "All" shows the remaining rows right away, and your choice is kept the next time you open it.
Unklarer Metafeld-Stand ist sichtbarUnclear metafield state is visible
- + Auf der Shopify-Sync-Karte steht, bei wie vielen Artikeln unklar ist, ob ihre Metafelder in Shopify aktuell sind.The Shopify Sync card states for how many products it is unclear whether their metafields in Shopify are up to date.
- • Nachziehen lassen sich diese Artikel im Shopify-Add-on, mit dem Update, das zusammen mit dieser Version erscheint.These products can be caught up in the Shopify add-on, with the update released alongside this version.
v1.4.5
September 2026September 2026 Verkaufszahlen je Artikel in einer AntwortSales figures per product in a single answer
- + Frag Claude oder ChatGPT „wie oft wurde ART-1024 in diesem Jahr verkauft?", und die Antwort kommt in Sekunden, mit Menge, Anzahl der Aufträge und Netto-Umsatz. Mehrere Artikelnummern auf einmal gehen genauso.Ask Claude or ChatGPT "how often did ART-1024 sell this year?", and the answer arrives in seconds, with quantity, number of orders and net revenue. Several SKUs at once work just as well.
- + Du bekommst die Zahl, die du meinst: die bestellte Menge aus nicht stornierten Verkaufsaufträgen, dieselbe Abgrenzung wie „verkauft pro Tag" in der Wawi, oder auf Wunsch die ausgelieferte Menge nach Lieferscheinen. Jede Antwort sagt dazu, welche der beiden sie ist.You get the number you mean: the ordered quantity from non-cancelled sales orders, the same scope as "sold per day" in JTL-Wawi, or, on request, the shipped quantity based on delivery notes. Every answer states which of the two it is.
- ✓ Ausgewertet wird direkt in der Datenbank, über deine gesamte Historie. Ein Zeitraum ist optional; ohne Angabe zählt alles.The figures are computed directly in the database, across your full history. A date range is optional; without one, everything counts.
- • Verfügbar im Chat (via MCP) und in der REST-API: als Werkzeug
get_product_sales und über GET /api/dashboard/product-sales, mit deinem gewohnten API-Schlüssel.Available in chat (via MCP) and in the REST API: as the get_product_sales tool and via GET /api/dashboard/product-sales, with your usual API key.
Start per Doppelklick, Dashboard im StartmenüStart with a double-click, dashboard in the Start menu
- ✓ Ein Doppelklick auf
sql2rest.exe richtet ein. Windows fragt einmal nach Administrator-Rechten, die der letzte Schritt braucht, um den Dienst einzurichten, danach läuft der Einrichtungs-Assistent durch.A double-click on sql2rest.exe sets everything up. Windows asks once for administrator rights, which the final step needs to install the service, and then the Setup Wizard runs through. - + Im Startmenü liegt danach ein Eintrag SQL2REST Dashboard. Von dort kommst du jederzeit zurück, ohne den Installationsordner zu öffnen. Wenn du SQL2REST schon installiert hast, ist der Eintrag nach dem Update da.A SQL2REST Dashboard entry then sits in your Start menu. It takes you back at any time, without opening the installation folder. If you already have SQL2REST installed, the entry is there after the update.
Gekauftes Tunnel-Add-on sofort verfügbarPurchased tunnel add-on available right away
- ✓ Nach dem Kauf des Tunnel-Add-ons steht dir der Remote-Zugriff sofort offen: du wählst direkt deine Adresse und legst los.After buying the tunnel add-on, remote access is open to you immediately: you pick your address and get going.
- ✓ Und wenn du gerade in einem anderen Fenster gekauft hast: „Add-on bereits gekauft? Jetzt prüfen" holt deinen Lizenzstand auf Knopfdruck.And if you bought it in another window a moment ago: "Already purchased the add-on? Check now" refreshes your licence state at the press of a button.
v1.4.4
September 2026September 2026 Klarere Angaben für die VerbindungClearer information about connecting
- ✓ Adressen, Zugangsdaten und Einstellungen zeigen genau das, was zu deiner Installation passt: die Netzwerk-Adresse erscheint erst, wenn du den Zugriff im Netzwerk erlaubt hast, im Einrichtungs-Assistenten oder unter Einstellungen, Remote-Zugriff.Addresses, credentials and settings show exactly what fits your installation: the network address appears only once you have allowed network access, in the Setup Wizard or under Settings, Remote Access.
- ✓ Remote-MCP ist die Voraussetzung für die Verbindung über einen Konnektor: Claude im Browser, in der Desktop-App und am Handy, einmal anmelden statt Konfigurationsdatei. Auch ChatGPT verbindet sich darüber. Anbieter ohne Anmeldung im Browser verbinden sich weiterhin über die Konfigurationsdatei.Remote-MCP is what a connector needs: Claude in the browser, in the desktop app and on your phone, sign in once instead of editing a configuration file. ChatGPT connects this way too. Providers without a browser sign-in still connect via the configuration file.
Kleinere Verbesserungen im Einrichtungs-Assistenten und auf schmalen BildschirmenSmaller improvements in the Setup Wizard and on narrow screens
- ✓ Der Einrichtungs-Assistent ist an mehreren Stellen aufgeräumt, und die Übersicht bricht auf Telefonbreite sauber um.The Setup Wizard is tidied up in several places, and the overview wraps cleanly at phone width.
v1.4.3
September 2026September 2026 Ein erneutes Durchlaufen des Setup-Wizards behält deine EinstellungenRunning the Setup Wizard again keeps your settings
- ✓ Du kannst den Setup-Wizard jederzeit erneut durchlaufen, um etwas anzupassen. Deine Claude-Anbindung, deine Verwaltungsrechte und die Adresse deines Tunnels bleiben dabei erhalten.You can run the Setup Wizard again at any time to adjust something. Your Claude connection, your admin rights and your tunnel address are kept.
- ✓ Jeder Schritt schreibt genau die Einstellungen, für die er zuständig ist, und lässt den Rest deiner Konfiguration unberührt.Each step writes exactly the settings it is responsible for and leaves the rest of your configuration untouched.
- ✓ Bevor SQL2REST etwas an seiner eigenen Konfigurationsdatei (
config.ini im SQL2REST-Ordner) ändert, sichert es den bisherigen Stand als config.ini.bak. Pro Vorgang eine Sicherung, sodass darin immer der Stand vor der gesamten Änderung steht und nicht ein Zwischenstand daraus. An deiner JTL-Wawi wird nichts verändert.Before SQL2REST changes anything in its own configuration file (config.ini in the SQL2REST folder), it saves the previous state as config.ini.bak. One backup per operation, so it always holds the state from before the whole change rather than some point inside it. Nothing in your JTL-Wawi is touched. - ✓ Du siehst genau die Adressen, die zu deiner gewählten Einstellung passen. Bei „nur dieser Rechner" steht dort eine Adresse; die Netzwerk-Adresse kommt dazu, sobald du den Zugriff im Netzwerk erlaubst.You see exactly the addresses that match the setting you chose. With "this computer only" there is one address; the network address appears as soon as you allow network access.
Klartext bei Datenbank-BerechtigungenPlain language about database permissions
- ✓ SQL2REST prüft die nötigen Berechtigungen direkt in deiner Datenbank und meldet dir, falls dort welche fehlen.SQL2REST checks the required permissions directly in your database and tells you if any are missing there.
- ✓ Fehlt eine Berechtigung, nennt der Setup-Wizard sie beim Namen, sagt dir, was ohne sie nicht geht, und lässt dich bewusst fortfahren.If a permission is missing, the Setup Wizard names it, tells you what will not work without it, and lets you deliberately continue.
- ✓ Meldungen im Einrichtungs-Verlauf nennen die Ursache, an der es tatsächlich liegt.Messages during setup name the cause it is actually down to.
Belegte Plätze auf der ÜbersichtSeats in use on the overview
- ✓ Die Übersicht zeigt dieselbe Zahl wie der Reiter „Schlüssel": die Plätze, die dein Tarif zählt.The overview shows the same number as the "Keys" tab: the seats your plan counts.
- • Verbundene Apps zählen nicht gegen deine Plätze. Die Kachel weist dich direkt darauf hin.Connected apps do not count against your seats. The card points that out directly.
- ✓ Unter „Anfragen" siehst du „Aktive Clients (30 Tage)": die Apps und Personen, die in diesem Zeitraum tatsächlich Anfragen gestellt haben.Under "Requests" you see "Active clients (30 days)": the apps and people that actually made requests in that period.
v1.4.2
August 2026August 2026 Neue Felder an AufträgenNew fields on orders
- + E-Mail und Telefon aus Rechnungs- und Lieferadresse stehen jetzt an jedem Auftrag zur Verfügung.Email and phone from the billing and shipping address are now available on every order.
- + Vorgangsfarbe, Vorgangsstatus und Rückhaltegrund kommen mit, so wie du sie in der Wawi in der Auftragsliste siehst.Order colour, order status and hold reason come along, the way you see them in the Wawi order list.
Verwaltungsrechte beim erneuten EinrichtenAdmin rights when you run setup again
- ✓ Ein erneutes Einrichten behält deine Verwaltungsrechte. In seltenen Fällen ließen sich danach Verwaltungs-Aktionen im Dashboard nicht mehr ausführen, etwa das Einladen von Personen. Das ist behoben und wird beim Update automatisch mit erledigt.Running setup again keeps your admin rights. In rare cases some administrative actions in the dashboard, such as inviting people, could stop working afterwards. That is fixed, and the update takes care of it automatically.
- ✓ Der Zustand ist ab sofort sichtbar. Passt der Schlüssel in deiner Konfiguration zu keinem Eintrag in der Schlüssel-Liste, sagt das Dashboard das deutlich.The state is visible from now on. If the key in your configuration matches no entry in the key list, the dashboard says so plainly.
- ✓ Abgelehnte Verwaltungs-Aktionen erklären sich jetzt selbst. Statt "Als Administrator ausführen" nennt die Meldung den tatsächlichen Grund.A refused administrative action now explains itself. Instead of "run as Administrator", the message names the actual reason.
Verbinden mit ClaudeConnecting to Claude
- ✓ Ist einer Person MCP nicht freigegeben, sagt der Verbindungsbildschirm das jetzt und nennt die Einstellung, um die es geht. Vorher endete der Versuch in einer Anmeldeschleife, die nichts ändern konnte.If MCP is not enabled for a person, the consent screen now says so and names the setting in question. Previously the attempt ended in a sign-in loop that could not change anything.
v1.4.0
August 2026August 2026 Der Weg von deiner Wawi zu Claude ist jetzt komplettThe path from your Wawi to Claude is now complete
- + REST-API und MCP auf deinem Server, HTTPS-Tunnel, OAuth-Anmeldung: ab 1.4.0 greifen diese Teile ineinander. Du fügst SQL2REST in Claude als eigenen Konnektor hinzu, meldest dich an, fertig. Keine
claude_desktop_config.json, kein zusätzlicher Prozess auf dem Rechner, kein API-Schlüssel, der irgendwo eingetragen werden muss.REST API and MCP on your server, HTTPS tunnel, OAuth sign-in: from 1.4.0 these pieces fit together. You add SQL2REST in Claude as a custom connector, sign in, done. No claude_desktop_config.json, no extra process on the machine, no API key to paste anywhere. - + Damit läuft es auch dort, wo bisher nichts ging: im Browser auf claude.ai und in den Claude-Apps am Handy und Tablet. Bis jetzt war die Anbindung an Claude Desktop und seine Konfigurationsdatei gebunden.That also makes it work where nothing worked before: in the browser on claude.ai and in the Claude apps on phone and tablet. Until now the connection was tied to Claude Desktop and its configuration file.
- • Wie das Verbinden abläuft, steht Schritt für Schritt mit Screenshots hier: JTL-Wawi mit Claude verbinden.The whole connection flow, step by step with screenshots: Connect JTL-Wawi with Claude.
- + Jede Person meldet sich mit ihrem eigenen SQL2REST-Login an. Die Anmeldung läuft über OAuth, also so, wie du es von „Mit Google anmelden" kennst: Claude bekommt keinen Schlüssel, sondern eine eigene Freigabe pro Person, die du jederzeit einzeln zurückziehen kannst. Du legst dabei fest, welche Datenbereiche sie sehen darf (Aufträge, Artikel, Kunden, Bestand und so weiter). (Team-Tarif.)Everyone signs in with their own SQL2REST login. Sign-in runs over OAuth, the way you know it from "Sign in with Google": Claude receives no key, only its own per-person grant that you can withdraw individually at any time. You set which data areas they may see (orders, products, customers, stock and so on). (Team plan.)
- + Der Reiter „Schlüssel" enthält jetzt eine Liste für alle Zugriffe. Personen, ihre verbundenen Apps und ihre Schlüssel stehen an einer Stelle, mit Filtern und der Anzahl belegter Plätze. Jede Verbindung lässt sich einzeln trennen, ohne der Person den Zugang zu nehmen.The "Keys" tab now holds one list for every kind of access. People, their connected apps and their keys all in one place, with filters and the number of seats in use. Any single connection can be disconnected without taking away the access of that person.
- • Der Weg über die Konfigurationsdatei bleibt unverändert bestehen, ebenso für Claude Code, Cursor und Windsurf. Erweiterst du die Datenbereiche einer Person, während sie bereits verbunden ist, greift das erst nach einer neuen Verbindung. Die betroffene Verbindung sagt das jetzt selbst: Neu verbinden nötig.The configuration-file route stays exactly as it was, and likewise for Claude Code, Cursor and Windsurf. If you widen the data areas of a person while they are already connected, it only takes effect after they reconnect. The affected connection now says so itself: Reconnect needed.
Dein wichtigster Schlüssel ist jetzt geschütztYour most important key is now protected
- ✓ Mit Schlüssel 1 meldet sich dein Dashboard an, und auch MCP und die Add-ons arbeiten damit. Ein Ablaufdatum oder eine IP-Beschränkung darauf hätte nicht nur den Schlüssel eingeschränkt, sondern deine ganze Installation lahmgelegt. Beide Felder sind auf diesem einen Schlüssel jetzt schreibgeschützt.Your dashboard signs in with Schlüssel 1, and MCP and the add-ons authenticate with it too. An expiry date or an IP restriction on it would not just have limited the key, it would have taken down your whole installation. Both fields are now read-only on that one key.
- • Umbenennen und Rotieren bleiben möglich. Rotieren ist der richtige Weg, wenn ein Schlüssel kompromittiert ist. Für alle anderen Schlüssel ändert sich nichts. Ablaufdatum und IP-Beschränkung stehen dort unverändert zur Verfügung.Renaming and rotating both still work. Rotating is the right move if a key is compromised. Nothing changes for any other key: expiry and IP restriction work there as before.
Nach einem Update sofort der neue StandThe new version shows up right after an update
- ✓ Ein bereits geöffnetes Dashboard zeigte nach einem Update unter Umständen noch die alte Version, bis der Browser-Cache geleert wurde. Ein normales Neuladen genügt jetzt.A dashboard tab that was already open could keep showing the previous version after an update until the browser cache was cleared. A plain reload is now enough.
Richtige Uhrzeiten im ZugriffsprotokollCorrect times in the access log
- ✓ Die Zeiten im Zugriffsprotokoll und in der Nutzungs-Vorschau wurden in UTC statt in deiner lokalen Zeit angezeigt und lagen dadurch ein bis zwei Stunden zurück. Sie stimmen jetzt mit deiner Uhr und mit dem Server-Protokoll überein.Times in the access log and in the usage preview were shown in UTC rather than your local time, so they ran one to two hours behind. They now match your clock and the server log.
v1.3.33
August 2026August 2026 Einrichtung mit ähnlich benannten Eigenen FeldernSetup with similarly named custom fields
- ✓ Der Einrichtungs-Assistent bricht jetzt auch dann nicht mehr ab, wenn sich zwei Eigene Felder nur in der Groß-/Kleinschreibung unterscheiden (z.B. von zwei verschiedenen Plugins angelegt). Für SQL Server sind das dieselben Spaltennamen, weshalb die Views bisher nicht erstellt werden konnten. Beide Felder bleiben erhalten und bekommen eindeutige Namen.The setup wizard no longer aborts when two custom fields (Eigene Felder) differ only in upper/lower case (e.g. created by two different plugins). SQL Server treats those as the same column name, which previously prevented the views from being created. Both fields are kept and get unique names.
v1.3.32
August 2026August 2026 Zuverlässigere UpdatesMore reliable updates
- ✓ Updates werden jetzt vollständig und zuverlässig eingespielt. Der Updater prüft nach dem Kopieren, dass alle Dateien aktualisiert wurden, und meldet klar, falls einmal eine Datei blockiert ist, anstatt einfach weiterzumachen.Updates now install completely and reliably. After copying, the updater verifies that every file was updated and reports clearly if a file is ever blocked, instead of simply continuing.
- • Während eines Updates zeigt das Dashboard jetzt den Fortschritt an, während der Dienst neu startet.During an update, the dashboard now shows progress while the service restarts.
- + Neu: Mit
update.bat --repair lässt sich die aktuelle Version bei Bedarf jederzeit sauber neu einspielen.New: update.bat --repair cleanly re-installs the current version whenever you need it.
v1.3.31
August 2026August 2026 Stabilere Einrichtung bei doppelten Eigenen FeldernMore stable setup with duplicate custom fields
- ✓ Der Einrichtungs-Assistent bricht nicht mehr ab, wenn in JTL-Wawi zwei gleichnamige Eigene Felder existieren (z.B. von einem Plugin angelegt). Solche Felder werden jetzt sauber zusammengeführt, sodass die Views zuverlässig erstellt werden.The setup wizard no longer aborts when two identically named custom fields (Eigene Felder) exist in JTL-Wawi (e.g. created by a plugin). Such fields are now merged cleanly so the views are created reliably.
v1.3.30
August 2026August 2026 Zuverlässigerer Dienst-Neustart aus den EinstellungenMore reliable service restart from Settings
- ✓ Nach einer Konfigurationsänderung im Einstellungen-Reiter (z.B. Remote-MCP ein- oder ausschalten) startet der Dienst jetzt zuverlässig automatisch neu, statt in seltenen Fällen gestoppt zu bleiben.After a configuration change in the Settings tab (e.g. toggling Remote-MCP on or off), the service now reliably restarts on its own instead of, in rare cases, staying stopped.
- • Die Anleitung zur Claude-Desktop-Einrichtung ist im Remote-Zugriff jetzt als eigener Button klar sichtbar.The Claude Desktop setup guide is now a clearly visible button in Remote Access.
v1.3.29
August 2026August 2026 SQL2REST Tunnel (HTTPS): sicherer Zugriff von überallSQL2REST Tunnel (HTTPS): secure access from anywhere
- + Neu: SQL2REST Tunnel mit HTTPS. Mach deine SQL2REST-API mit einem Klick sicher über HTTPS von überall erreichbar, ohne am Server Ports nach außen freizugeben und ohne selbst einen Reverse Proxy einzurichten. Der Datenverkehr läuft direkt von deinem Rechner, unsere Server sehen ihn nicht. Im Team-Tarif enthalten, im Einzeltarif als Add-on (19 €/Monat).New: SQL2REST Tunnel with HTTPS. Make your SQL2REST API securely reachable over HTTPS from anywhere with a single click, without opening inbound ports on the server and without setting up a reverse proxy yourself. Traffic runs directly from your machine, and our servers never see it. Included in the Team plan, available as an add-on (19 €/month) on the single plan.
- ✓ Remote-MCP wird mit dem Tunnel zum Kinderspiel: KI-Clients wie Claude Desktop, Claude Code, Cursor oder Windsurf auf anderen Arbeitsplätzen erreichen deine zentrale SQL2REST-Installation jetzt ohne eigene HTTPS-Einrichtung. Die passende MCP-Adresse und eine fertige Systemanweisung für Claude kannst du direkt kopieren, ein Link führt zur Anleitung für die
claude_desktop_config.json. (Team-Tarif.)Remote-MCP becomes effortless with the tunnel: AI clients like Claude Desktop, Claude Code, Cursor or Windsurf on other workstations now reach your central SQL2REST installation without setting up HTTPS yourself. You can copy the matching MCP address and a ready-made system prompt for Claude directly, and a link leads to the guide for the claude_desktop_config.json. (Team plan.) - • Alternativ bleibt der Zugriff über deine eigene Domain hinter einem Reverse Proxy kostenlos möglich.Alternatively, access through your own domain behind a reverse proxy remains available for free.
Konfiguration im neuen Einstellungen-ReiterConfiguration in the new Settings tab
- + Schnelleres Fine-Tuning: Konfiguriere SQL2REST (Port, Firewall, Remote-Zugriff usw.) jetzt direkt über den neuen Einstellungen-Reiter, statt den Einrichtungs-Assistenten noch einmal durchlaufen zu müssen. Die Einstellungen selbst gab es schon, sie sind nur bequemer erreichbar.Faster fine-tuning: Configure SQL2REST (port, firewall, remote access, and more) directly from the new Settings tab instead of running through the setup assistant again. These settings already existed; they are simply easier to reach now.
Neue Artikelfelder: Zolltarifnummer und HerkunftslandNew product fields: customs tariff number and country of origin
- + Zolltarifnummer (TARIC) und Herkunftsland jetzt verfügbar. Diese beiden zusätzlichen Artikelfelder müssen bei der Einrichtung in der Feldauswahl aktiviert werden, damit sie über API und MCP ausgegeben werden. Standardmäßig sind sie aus. Praktisch für Zoll, Export und Marktplatz-Listings.Customs tariff number (TARIC) and country of origin are now available. Enable these two additional product fields in the field selection during setup so they are returned by the API and MCP. They are off by default. Handy for customs, export and marketplace listings.
Saubere DeinstallationClean uninstall
- ✓ Sauber deinstallieren aus den Einstellungen: Die Deinstallation entfernt jetzt auf Wunsch die Datenbank-Ansichten, den Nur-Lese-Benutzer, die lokale Konfiguration und den Windows-Dienst in einem Schritt. Deine JTL-Wawi Daten bleiben unberührt.Clean uninstall from Settings: Uninstalling now removes the database views, the read-only user, the local configuration and the Windows service in one step. Your JTL-Wawi data stays untouched.
Weitere VerbesserungenFurther improvements
- • Ein übersichtlicherer Einrichtungs-Assistent (Lizenz und Verbindung in einem Schritt) und viele kleinere Verbesserungen an Oberfläche und Texten.A clearer setup assistant (license and connection in one step) and many smaller improvements to the interface and wording.
v1.3.28
August 2026August 2026 Übersicht zeigt nur erreichbare AdressenOverview shows only reachable addresses
- ✓ Übersicht im API-Dashboard zeigt nur erreichbare Adressen: Die Netzwerk-Adresse erscheint in der Übersicht nur noch, wenn die API tatsächlich im Netzwerk freigegeben ist. Bei der Einstellung "nur lokal" wird sie ausgeblendet, damit keine Adresse angezeigt wird, die andere Rechner ohnehin nicht erreichen.The overview in the API Dashboard shows only reachable addresses: The network address now appears in the overview only when the API is actually exposed on the network. With the "local only" setting it is hidden, so no address is shown that other machines could not reach anyway.
v1.3.27
August 2026August 2026 Zuverlässigere KI-Abfragen bei großen ListenMore reliable AI queries on large lists
- ✓ Große KI-Abfragen laufen nicht mehr in eine Größengrenze: Umfangreiche Abfragen von Bestellungen, Rechnungen oder Lieferscheinen über die KI-Anbindung (z.B. Claude Desktop) stoßen bei sehr großen Datenmengen nicht mehr an die Größengrenze der Antwort. Statt einer Fehlermeldung kommt eine kompakte Antwort mit dem Hinweis, die Abfrage einzugrenzen (z.B. per Zeitraum oder Filter).Large AI queries no longer hit a response-size limit: Extensive queries of orders, invoices or delivery notes via the AI connection (e.g. Claude Desktop) no longer run into the response size limit on very large data sets. Instead of an error message, you get a compact answer with a hint to narrow the query (e.g. by date range or filter).
v1.3.26
August 2026August 2026 Schnellere, zuverlässigere UpdatesFaster, more reliable updates
- ✓ Updates und Downloads über unser eigenes CDN: Neue Versionen und der Erst-Download werden jetzt über ein globales Content-Delivery-Netzwerk ausgeliefert. Das macht Downloads schneller und zuverlässiger. Das Update startest du wie gewohnt selbst: per Klick im API-Dashboard oder über
update.bat.Updates and downloads via our own CDN: New versions and the initial download are now delivered over a global content delivery network, making downloads faster and more reliable. You start the update yourself as usual: with one click in the API Dashboard or via update.bat.
v1.3.25
August 2026August 2026 Öffentliche API-Adresse und klar beschriftete URLsPublic API address and clearly labeled URLs
- + Hinterlege eine öffentliche Adresse für deine API: Für den Zugriff von anderen Arbeitsplätzen oder aus der Cloud trägst du deine externe Adresse (z.B. über einen Reverse Proxy) einmal ein. Verfügbar in allen Tarifen.Set a public address for your API: For access from other workstations or the cloud, enter your external address (e.g. via a reverse proxy) once. Available on all plans.
- ✓ Die Übersicht zeigt deine REST-API-Adressen jetzt klar beschriftet: Lokal, Netzwerk und Öffentlich. Die passenden MCP-Endpunkte werden direkt daraus abgeleitet.The overview now shows your REST API addresses clearly labeled: Local, Network and Public. The matching MCP endpoints are derived directly from them.
- ✓ Retouren-Felder im Setup-Wizard behoben: Status, Retourengrund, Artikelzustand und Positionsstatus werden bei einer Neuinstallation jetzt automatisch zugeordnet.Returns fields fixed in the setup wizard: Status, return reason, article condition and line-item status now map automatically on a fresh install.
KI-Abfragen und Claude DesktopAI queries and Claude Desktop
- ✓ Neueste zuerst: Abfragen wie „die letzten Bestellungen" oder „die letzten Retouren" liefern jetzt zuverlässig die aktuellsten Datensätze zuerst.Newest first: Queries like "the latest orders" or "the latest returns" now reliably return the most recent records first.
- + Verbesserte Claude-Desktop-Anleitung: aktualisierte Einrichtung inklusive macOS und Linux, plus Retouren im mitgelieferten Projekt-Template.Improved Claude Desktop guide: updated setup including macOS and Linux, plus returns in the bundled project template.
v1.3.24
August 2026August 2026 Neu: Retouren über die APINew: returns over the API
- + Drei neue Endpunkte für Retouren (RMA):
GET /returns listet die Kopfdaten mit Filtern nach Kunde, Status, RMA-Nummer und Zeitraum, GET /returns/{rma_number} liefert eine einzelne Retoure und GET /returns/{rma_number}/items die zugehörigen Positionen.Three new endpoints for returns (RMA): GET /returns lists the header data with filters by customer, status, RMA number and date range, GET /returns/{rma_number} returns a single return, and GET /returns/{rma_number}/items its line items. - ✓ Jede Retoure bringt Auftragsbezug, Status, Warenwert (netto und brutto) sowie erstattete Versandkosten mit. Auch als MCP-Tool für KI-Clients verfügbar.Each return includes the order reference, status, goods value (net and gross) and refunded shipping. Also available as an MCP tool for AI clients.
v1.3.23
Juli 2026July 2026 Grundlage für Tags und Metafelder im Shopify-SyncFoundation for tags and metafields in Shopify-Sync
- ✓ Die API stellt jetzt die Attributgruppe des JTL-Shopify-Connectors bereit, damit der Shopify-Sync Tags und eigene Metafelder aus deiner JTL-Wawi lesen und zu Shopify übertragen kann.The API now exposes the JTL Shopify-Connector attribute group, so Shopify-Sync can read tags and custom metafields from your JTL-Wawi and push them to Shopify.
v1.3.22
Juli 2026July 2026 Bestandssuche über den ganzen KatalogStock search across the whole catalog
- ✓ Die Bestandsabfrage kann jetzt serverseitig nach SKU suchen: Ein SKU-Filter durchsucht den kompletten Katalog und findet auch bei zehntausenden Artikeln alle Treffer.The stock endpoint can now filter by SKU server-side: a SKU filter searches the whole catalog and finds every match even across tens of thousands of articles.
v1.3.21
Juli 2026July 2026 Produktlisten bei großen KatalogenProduct listings on large catalogs
- ✓ Die Produktlisten-Abfrage bleibt auch bei sehr großen Katalogen schnell: Die Liste blättert jetzt effizient durch zehntausende Artikel, ohne mit wachsender Katalogtiefe langsamer zu werden.The product-listing query stays fast even on very large catalogs: the list now pages efficiently through tens of thousands of articles without slowing down as the catalog grows.
v1.3.20
Juli 2026July 2026 Bestand bei großen KatalogenStock on large catalogs
- ✓ Bestandsabfragen bleiben auch bei sehr großen Katalogen schnell: Die Bestandsdaten laden jetzt zuverlässig, auch bei zehntausenden Artikeln über mehrere Lager. Die Übersicht läuft nicht mehr in eine Zeitüberschreitung und bleibt nicht mehr leer.Stock queries stay fast even on very large catalogs: Stock data now loads reliably, even with tens of thousands of articles across multiple warehouses. The overview no longer times out or shows up empty.
- + Aufbewahrung der Protokolle frei wählbar: Die Aufbewahrungsdauer der API-Protokolle lässt sich jetzt auf eine beliebige Anzahl Tage einstellen, inklusive einer kurzen 7-Tage-Option.Custom log retention: The retention period for the API logs can now be set to any number of days, including a short 7-day option.
v1.3.18
Juli 2026July 2026 SEO-Texte je VerkaufskanalSEO text per sales channel
- + SEO-Daten aus dem JTL-Shop lesbar: Die API kann Meta-Titel, Meta-Beschreibung und Meta-Keywords jetzt aus dem Ausgabeweg eines JTL-Shops liefern statt nur aus JTL-Wawi. Felder, die im Shop leer sind, fallen feldweise auf die JTL-Wawi-Daten zurück.Read SEO data from JTL-Shop: The API can now serve meta title, meta description and meta keywords from a JTL-Shop output channel instead of only from JTL-Wawi. Fields left empty in the shop fall back to the JTL-Wawi values field by field.
- • Die Datenbank-Ansichten werden einmalig aktualisiert: Dieses Update erweitert die Ansichten. Mit selbst-aktualisierenden Ansichten passiert das automatisch, sonst erscheint der gewohnte Hinweis zum Neu-Erzeugen. Der Zugriff bleibt reiner Lesezugriff auf deine Daten.Database views are updated once: This update extends the views. With self-updating views this happens automatically, otherwise you get the familiar regenerate prompt. Access to your data stays read-only throughout.
v1.3.17
Juli 2026July 2026 Datenbank-Ansichten werden aktualisiertDatabase views get refreshed
- • Dieses Update frischt die API-Ansichten auf: Bei der Aktualisierung erneuert SQL2REST seine eigenen Datenbank-Ansichten. Auf Systemen mit selbst-aktualisierenden Ansichten passiert das automatisch. Sonst erscheint der gewohnte Ein-Klick-Hinweis zum Neu-Erzeugen. Der Zugriff bleibt reiner Lesezugriff auf deine Daten.This update refreshes the API views: On update, SQL2REST regenerates its own database views. On systems with self-updating views this happens automatically. Otherwise the familiar one-click regenerate prompt appears. Access to your data stays read-only throughout.
v1.3.16
Juli 2026July 2026 Updates, die sich selbst einspielenUpdates that apply themselves
- + Selbst-aktualisierende Datenbank-Ansichten: Nach einem Update bringt SQL2REST seine eigenen API-Ansichten automatisch auf den neuesten Stand. Du musst nicht mehr nach jedem Update dein SQL-Admin-Passwort eingeben oder die Ansichten von Hand neu erzeugen.Self-updating database views: After an update, SQL2REST brings its own API views up to date on its own. You no longer need to re-enter your SQL admin password or regenerate the views by hand after every update.
- • Einmalig aktivieren, danach sicher und automatisch: Du schaltest die Option einmal bei der Einrichtung frei, dein Admin-Zugang wird nur dieses eine Mal gebraucht. Danach laufen Updates ohne weiteres Zutun. Bleibt die Option aus, ist alles wie bisher mit dem gewohnten Hinweis zum Neu-Erzeugen. Der Zugriff bleibt reiner Lesezugriff auf deine Daten.Enable once, then safe and automatic: You enable the option once during setup, and your admin login is only needed that one time. After that, updates just work. Leave the option off and everything stays as before with the familiar regenerate prompt. Access to your data stays read-only throughout.
v1.3.8
Juli 2026July 2026 Bestand pro JTL-Shop abrufenQuery stock per JTL shop
- + Shop-genauer Bestandsabruf: Der Bestandsabruf lässt sich jetzt auf einen einzelnen JTL-Shop eingrenzen, sodass du nur die Artikel dieses Shops bekommst statt deines gesamten Katalogs. Bei großen Katalogen wird die Abfrage dadurch deutlich schlanker und schneller.Shop-specific stock: Stock queries can now be scoped to a single JTL shop, so you get only that shop's articles instead of your whole catalog. For large catalogs this makes the query noticeably leaner and faster.
- • Optional und abwärtskompatibel: Ohne Angabe eines Shops verhält sich der Abruf wie bisher. Bestehende Integrationen bleiben unverändert. So funktioniert der shop_id-Parameter.Optional and backward-compatible: Without a shop specified, the query behaves exactly as before. Existing integrations stay unchanged. How the shop_id parameter works.
v1.3.4
Juli 2026July 2026 Analytics für die JTL-Wawi (Beta)Analytics for JTL-Wawi (Beta)
- + Neu: eingebaute Dashboards für deine JTL-Wawi. Direkt im API-Dashboard siehst du deine wichtigsten Kennzahlen auf einen Blick, ohne Export und ohne zweites Tool. Sieben Ansichten: Übersicht, Kanäle, Bestand & Reichweite, Bestseller, Retouren, Nachbestellung und Netto-Marge. Deine Daten bleiben auf deinem Server.New: built-in dashboards for your JTL-Wawi. Right inside the API dashboard you see your key figures at a glance, no export and no second tool. Seven views: Overview, Channels, Stock & reach, Bestsellers, Returns, Reorder, and Net margin. Your data stays on your server.
- + Echte Netto-Marge, nicht nur Umsatz: Die Marge-Ansicht rechnet Umsatz minus Einkaufspreis minus Versandkosten, damit du siehst, was pro Artikel wirklich übrig bleibt.Real net margin, not just revenue: The margin view computes revenue minus cost of goods minus shipping, so you see what each article actually leaves behind.
- • Während der Beta im Personal-Tarif enthalten. Aktivieren im API-Dashboard unter Add-ons. Die Ansichten sind mit einem Beta-Hinweis markiert und werden laufend erweitert; wir freuen uns über dein Feedback.Included in the Personal plan during the beta. Enable it in the API dashboard under Add-ons. The views carry a Beta badge and are being expanded continuously; we welcome your feedback.
Fertige Vorlagen für n8n, Make und ZapierReady-made templates for n8n, Make, and Zapier
- + SQL2REST in deinen Automatisierungen: Rufe jeden SQL2REST-Endpunkt aus n8n, Make oder Zapier auf, mit deinem bestehenden API-Schlüssel. Fertige Vorlagen zum Importieren decken die typischen Fälle ab: neue Aufträge melden, täglicher Produkt-Export in eine Tabelle und Warnung bei niedrigem Bestand.SQL2REST in your automations: Call any SQL2REST endpoint from n8n, Make, or Zapier using your existing API key. Ready-to-import templates cover the common cases: notify on new orders, daily product export to a sheet, and a low-stock alert.
- • Anleitungen und Downloads: Schritt-für-Schritt für n8n, Make und Zapier. Für Cloud-Dienste ist SQL2REST über einen Reverse-Proxy erreichbar zu machen; die Anleitung ist verlinkt.Guides and downloads: Step-by-step for n8n, Make, and Zapier. For cloud services, make SQL2REST reachable via a reverse proxy; the guide is linked.
Protokoll-Einstellungen an einem OrtLog settings in one place
- + Ein gemeinsamer Einstellungs-Dialog für alle Protokolle: Über das Zahnrad in Nutzung & Protokoll öffnest du jetzt einen einzigen Dialog für die Einstellungen von API-Abrufen, Shopify-Sync und Workflow-Log, statt an drei verschiedenen Stellen. Die bisherigen verstreuten Einstellungen sind hier zusammengefasst.One shared settings dialog for every log: Via the gear in Usage & Log you now open a single dialog for the settings of API calls, Shopify Sync, and the Workflow Log, instead of three separate places. The previously scattered settings are consolidated here.
- + Neu: Aufbewahrung des Shopify-Sync-Protokolls wählbar: Du legst jetzt selbst fest, wie lange die Protokollzeilen des Shopify-Sync aufbewahrt werden: 30, 90 oder 365 Tage oder unbegrenzt. Vorher waren es fest 90 Tage.New: choose Shopify Sync log retention: You now decide how long the Shopify Sync log rows are kept: 30, 90, or 365 days, or unlimited. Previously this was fixed at 90 days.
Nach dem UpdateAfter the update
- • Views einmal neu generieren: Damit alle Änderungen dieses Updates greifen (u.a. die Datenbasis für Analytics und den Shopify-Produktdaten-Sync), im Setup-Wizard einmal die Views neu generieren. Das API-Dashboard zeigt dazu einen Hinweis.Regenerate the views once: So all changes in this update take effect (including the data basis for Analytics and the Shopify product-data sync), regenerate the views once in the setup wizard. The API dashboard shows a prompt for this.
v1.2.21
Juli 2026July 2026 Protokoll: Grund-Spalte und CSV-Export für das Shopify-Sync-Add-onLog: reason column and CSV export for the Shopify Sync add-on
- + Sieh auf einen Blick, warum eine Zeile markiert ist: Im Sync-Protokoll zeigt jede solche Zeile jetzt eine Grund-Spalte. Du siehst sofort den Grund für "Ohne Treffer" oder "Fehler", statt raten zu müssen.See at a glance why a row is flagged: In the sync log, every flagged row now shows a reason column. You see the reason behind "No match" or "Error" right away, instead of having to guess.
- + Kompletten Lauf als CSV exportieren: Ein Klick lädt das gesamte Protokoll eines Sync-Laufs als CSV herunter, ideal zum Abgleichen in Excel.Export a full run as CSV: One click downloads a sync run's complete log as CSV, ideal for reconciling in Excel.
- ✓ Protokoll auch nach der Aktivierung sichtbar: Die Sync-Läufe erscheinen jetzt zuverlässig im Protokoll, auch wenn der Abgleich im Hintergrund als Dienst läuft.Log visible after activation too: Sync runs now appear reliably in the log, even while the sync runs in the background as a service.
Stabilere Installation und UpdatesSteadier installation and updates
- ✓ Updates laufen zuverlässiger durch: Auf Systemen, auf denen der Windows-Dienst bereits lief, konnte ein Update mit "Dienst-Installation fehlgeschlagen" abbrechen. Das ist behoben, auch auf deutschsprachigen Servern.Updates run more reliably: On systems where the Windows service was already running, an update could fail with a service-installation error. That is fixed, including on German-language servers.
- ✓ Der Dienst läuft beim Neugenerieren weiter: Views neu generieren stoppt den laufenden Dienst nicht mehr, und die wiederholte Aufforderung zum Neugenerieren erscheint nicht mehr ohne Grund.The service keeps running during regeneration: Regenerating views no longer stops the running service, and the repeated prompt to regenerate no longer appears without reason.
- ✓ Add-on-Updates robuster: Beim Aktualisieren eines Add-ons wird der laufende Prozess sauber beendet und der geplante Task pausiert, bevor Dateien überschrieben werden.Sturdier add-on updates: When an add-on updates, its running process is stopped cleanly and its scheduled task is paused before any files are overwritten.
- • Hinweis bei ungünstigem Installationsort: Liegt SQL2REST an einem Ort wie dem Desktop oder in OneDrive, an dem der Windows-Dienst seine Konfiguration nicht dauerhaft speichern kann, weist das Setup jetzt darauf hin und empfiehlt einen lokalen Ordner wie
C:\SQL2REST.Warning for an unsuitable install location: If SQL2REST sits somewhere like the Desktop or in OneDrive, where the Windows service cannot persist its configuration, setup now points this out and recommends a plain local folder such as C:\SQL2REST.
Nach dem UpdateAfter the update
- • Views einmal neu generieren: Damit alle Änderungen dieses Updates greifen, im Setup-Wizard einmal die Views neu generieren. Das API-Dashboard zeigt dazu einen Hinweis.Regenerate the views once: So all changes in this update take effect, regenerate the views once in the setup wizard. The API dashboard shows a prompt for this.
v1.2.13
Juli 2026July 2026 Shopify-Bestand-Sync: Lagerbestände automatisch zu ShopifyShopify inventory sync: stock levels to Shopify, automatically
- + Neues Add-on: SQL2REST synchronisiert die Lagerbestände aus deiner JTL-Wawi jetzt automatisch zu deinen Shopify-Standorten. Lokal über deine eigene Shopify-App, geschrieben wird ausschließlich nach Shopify, deine Wawi bleibt rein lesend. Artikel werden automatisch über die SKU abgeglichen. Zur Einrichtung.New add-on: SQL2REST now syncs the stock levels from your JTL-Wawi to your Shopify locations automatically. Locally, through your own Shopify app, writing only ever to Shopify, your Wawi stays read-only. Products are matched automatically by SKU. Setup guide.
- + Pro Lager steuerbar: Du schaltest je JTL-Lager ein, ob es synchronisiert wird, und ordnest jedem einen Shopify-Standort zu. Ein Standort gehört dabei genau einem aktiven Lager. Enthalten ab Personal (2 Standorte), Team (10 Standorte) und Agency (unbegrenzt).Per warehouse: You switch on, per JTL warehouse, whether it syncs, and assign each one a Shopify location. A location belongs to exactly one active warehouse. Included from Personal (2 locations), Team (10 locations), and Agency (unlimited).
Workflow-Log: das JTL-Workflow-Protokoll endlich durchsuchbarWorkflow log: your JTL workflow protocol, finally searchable
- + Integriertes Add-on, bereits vorinstalliert: Im API-Dashboard unter Nutzung & Protokoll findest du jetzt das Workflow-Log, einen rein lesenden Viewer über das JTL-eigene Workflow-Protokoll. Volltextsuche, Filter, Workflow-Picker und Statistiken auf einen Blick, statt dich in JTL von Objekt zu Objekt zu klicken. In allen Tarifen enthalten. Mehr erfahren.Integrated add-on, already pre-installed: In the API dashboard under Usage & Log you now find the Workflow Log, a read-only viewer over JTL's own workflow protocol. Full-text search, filters, a workflow picker, and statistics at a glance, instead of clicking object by object in JTL. Included in every plan. Learn more.
Nach dem UpdateAfter the update
- • Views einmal neu generieren: Damit die Änderungen dieses Updates vollständig greifen (Shopify-Bestand-Sync und Workflow-Log), im Setup-Wizard einmal die Views neu generieren.Regenerate the views once: So the changes in this update take full effect (Shopify inventory sync and Workflow Log), regenerate the views once in the setup wizard.
v1.2.12
Juni 2026June 2026 Schnelleres Protokoll, das sich selbst sauber hältA faster access log that keeps itself tidy
- + Auch bei sehr vielen Abrufen schnell: Der Zugriffslog (Nutzung & Protokoll) ist jetzt indiziert und lädt zügig, selbst bei Hunderttausenden Abrufen pro Tag. Alte Detailzeilen werden automatisch nach 90 Tagen aufgeräumt, damit der Speicher auf deinem Server nicht unbegrenzt wächst.Fast even at high volume: The access log (Usage & Log) is now indexed and loads quickly, even at hundreds of thousands of calls per day. Old detail rows are cleaned up automatically after 90 days, so storage on your server does not grow without bound.
- + Deine Gesamtzahl der Abrufe pro Schlüssel bleibt dabei dauerhaft erhalten, auch wenn alte Detailzeilen aufgeräumt werden.Your total request count per key is preserved permanently, even after old detail rows are cleaned up.
Aufbewahrung der Detailprotokolle selbst festlegenSet your own detail-log retention
- + Über das Zahnrad im Nutzung & Protokoll-Tab legst du fest, wie lange detaillierte Protokollzeilen aufbewahrt werden: 30, 90 oder 365 Tage, oder unbegrenzt. Standard bleibt 90 Tage. Die Einstellung wirkt sofort, ohne Neustart des Dienstes.Using the gear in the Usage & Log tab you choose how long detailed log rows are kept: 30, 90, or 365 days, or unlimited. The default stays 90 days. The setting takes effect immediately, with no service restart.
- • Dein Nutzungsdiagramm behält die volle Historie, egal wie kurz du die Detailaufbewahrung stellst, weil die Tageswerte separat zusammengefasst gespeichert werden.Your usage chart keeps its full history no matter how short you set the detail retention, because daily totals are stored separately as a compact rollup.
v1.2.10
Juni 2026June 2026 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 (nicht storniert und Auftragstyp 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 (not cancelled and order type 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 (Kopf und Positionen der Lieferantenbestellungen aus der JTL-Wawi, flach in einer Zeile je Position).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 (JTL-Wawi supplier purchase orders, header and lines flattened to one row per line). - + 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 (die Sprache mit der niedrigsten Sprach-ID in der Wawi, ü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 (the language with the lowest language ID in the Wawi, 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