JTL API 2.0 Verbinden - HILFE GESUCHT

Scubarpro

Sehr aktives Mitglied
18. September 2015
271
28
Hi,

ich möchte gerne JTL mit unserer KI Dashboard Lovable verbinden und bekomme es noch nicht ganz hin. Wir haben erfolgreich die APP Registriert aber dann kommen wir nicht weiter. Kann jemand dabei unterstützen welche "Befehle" unsere KI and JTL API 2.0 senden muss, damit die Verbindung steht ? Ich denke wir benutzen die falschen Befehle und erhalten daher nicht die nötigen Rückmeldung für eine erfolgreiche Verbindung.

Wäre über Unterstützung sehr dankbar , da wir hier schon echt viele Stunden verbracht haben.

Viele Grüße
Daniel
 

Morimus

Sehr aktives Mitglied
16. Mai 2019
613
131
Läuft deine JTL-Wawi samt API lokal/auf einem eigenen Server oder nutzt du JTL Cloud?

Wo wird der API-Aufruf ausgeführt?
Direkt im Lovable-Frontend/Browser, in einer Supabase Edge Function oder auf einem anderen Backend-Server?

Welcher Schritt schlägt genau fehl und welche konkrete Fehlermeldung bzw. welcher HTTP-Statuscode erscheint?
 

Scubarpro

Sehr aktives Mitglied
18. September 2015
271
28
Bei uns läuft die JTL auf einem EcomServer.
Wir haben jetzt aber auch die JTL-Cloud angebunden und es darüber versucht.

Der Aufruf erfolgt direkt über Lovable´s KI bzw. dort haben wir Registrierung Button eingebaut.
 

Morimus

Sehr aktives Mitglied
16. Mai 2019
613
131
Frag Lovable bitte wie folgt:

Bitte prüfe unseren JTL-Registrierungsbutton, ohne den Code zu verändern.

Teile mir bitte verständlich mit:

1. Wird der API-Aufruf im Browser/Frontend oder serverseitig ausgeführt?
2. Welcher JTL-Endpunkt wird aufgerufen. Direkte Wawi-API oder JTL Cloud?
3. Welche HTTP-Methode, URL und Header werden verwendet?
4. Welchen HTTP-Status und welche genaue Fehlermeldung liefert JTL?
5. Was ist deiner Einschätzung nach die wahrscheinlichste Fehlerursache?

Bitte keine Passwörter, Tokens, API-Keys oder andere Zugangsdaten ausgeben.
 
  • Gefällt mir
Reaktionen: BioRabauken

Scubarpro

Sehr aktives Mitglied
18. September 2015
271
28
Gibt es da schon einen JTL API App in Wawi zu registrieren. Aber wir bekommen keinen Key. Die App wird mittlerweile Registriert aber dann muss ein API Key abgerufen werden. Ich glaube da hängt es gerade. Ich kläre das nochmal mit den Mitarbeiter der das gerade versucht zu verbinden und gebe nochmal feedback dazu.
 

Scubarpro

Sehr aktives Mitglied
18. September 2015
271
28
Hi anbei die Antwort von Lovable. @Morimus / @JordanHealy

Wir hatten beides Probiert - aber nichts richtig hinbekommen. T
Direktanbindung an JTL API fokussieren wir aber. Wir wollen nur ungerne mit JTL Cloud das abbilden, da der Service dann wieder Geld kosten wird und unsere Rechnungen jetzt schon echt hoch sind bei JTL.


Anbei die Antworten von der Fragen:

1. Wo läuft der Aufruf? Ausschließlich serverseitig. Der JTL-Call passiert in createServerFn-Handlern (src/lib/jtl-api.functions.ts → dynamischer Import von src/lib/jtl-api.server.ts) im Worker. Der Browser ruft nur /_serverFn/... auf; API-Key und Challenge-Code verlassen den Server nie.
2. Welcher Endpunkt? Direkte JTL-Wawi-API (OnPremise, eigener Server), nicht JTL Cloud. Basis: https://jtl-api.beispiel-domain.de/api/eazybusiness (über Cloudflare-Tunnel auf die lokale Wawi). API-Version 1, Pfade /v1/warehouses, /v1/items, /v1/stocks; Registrierung/Key-Abholung über /authentication.
3. Methode, URL, Header
  • Test: GET {base}/v1/warehouses?pageNumber=1&pageSize=100
  • Sync: GET {base}/v1/items und GET {base}/v1/stocks (paginiert)
  • Header: Authorization: Wawi <API-Key>, api-version: 1, x-appid: <App-GUID>, x-appversion: 1.0.0, x-challengecode: <Code>, Accept: application/json
  • Registrierung: POST {base}/authentication (Body mit AppId, Version, DisplayName, Description, Provider…, AppIcon, MandatoryApiScopes), Key-Abholung GET {base}/authentication/{RegistrationRequestId}.
4. HTTP-Status / Fehlermeldung aktuell Kein Fehler: Der letzte Live-Call lieferte 200 OK, Status in der DB ist connected, Meldung „17 Lager gefunden.". Historisch aufgetreten: 401 (falsches x-appid – behoben), 402 „No licence available…", 400 RegChallengeIpMismatch (wechselnde Egress-IP – per Retry/Header-Neutralisierung behoben).
5. Wahrscheinlichste Ursache (falls doch was klemmt) Der Auth-Teil ist sauber; das verbleibende Risiko liegt bei (a) wechselnder ausgehender IP des Workers bei erneuter Key-Abholung (RegChallengeIpMismatch), (b) Erreichbarkeit/Timeouts des Cloudflare-Tunnels zur lokalen Wawi, und (c) dem Response-Parsing bzw. Scope-Rechten für /v1/items und /v1/stocks – ein Sync wurde nämlich noch nie ausgeführt (last_sync_at ist leer). Ich würde als nächstes „Jetzt synchronisieren" starten, dann sehen wir dort den exakten Status.
 

Morimus

Sehr aktives Mitglied
16. Mai 2019
613
131
Ich vermute inzwischen stark, dass euer Problem mit dem JTL-Bug WAWI-87918 beziehungsweise derselben fehlerhaften v1-Modellvalidierung zusammenhängt.
Das Fehlerbild passt zumindest.
Gültige Zahlenwerte werden abgelehnt, obwohl sie eindeutig innerhalb des genannten Wertebereichs liegen.

Zur Prüfung könnt ihr Lovable folgende Punkte mitgeben:

Den tatsächlich unmittelbar vor fetch() erzeugten Rohrequest protokollieren: Methode, vollständiger Pfad, api-version, Content-Type und JSON-Body.
Prüfen, ob gleichzeitig /v1/ im Pfad und api-version: 1 verwendet werden. Besser die lokal unterstützte Version eindeutig verwenden, beispielsweise 1.0 oder 1.2.
Kontrollieren, ob die Zahlen wirklich als JSON-Zahlen gesendet werden, also 0 statt "0" oder null.

Mit einem Testartikel drei Fälle vergleichen:
POST nur mit SupplierId
POST mit allen beanstandeten Zahlenfeldern als 0
PATCH einer bestehenden Zuordnung mit unveränderten, zuvor per GET gelesenen Werten

Den identischen Request einmal über Lovable/Cloudflare und einmal direkt auf dem Wawi-Server gegen 127.0.0.1 ausführen.
Die tatsächlich gewährten Supplier-Schreib-Scopes kontrollieren, nicht nur die bei der Registrierung angeforderten Scopes.
Falls verfügbar, das lokale OpenAPI-Schema für CreateItemSupplier und UpdateItemSupplier mit dem erzeugten Request abgleichen.
 

TomH76

Aktives Mitglied
10. Februar 2021
87
5
Hallo zusammen,

wir sind hier nicht der Threadstarter, klinken uns aber mit eigenen Beobachtungen ein — Morimus' Checkliste (v1-Pfad/api-version, JSON-Zahlentypen, drei Testfälle, Proxy vs. direkt, gewährte Scopes, OpenAPI-Abgleich) passt nämlich verblüffend genau auf ein Problem, das wir seit ein paar Tagen unabhängig davon bei einem ganz anderen Endpunkt haben: POST/PATCH /items/{itemId}/suppliers (Lieferantenzuordnung) liefert bei uns durchgehend HTTP 400 ValidationError, obwohl alle gesendeten Werte eindeutig im laut Fehlermeldung selbst angegebenen gültigen Bereich liegen. Also vermutlich derselbe Bug-Familie wie WAWI-87918, nur an anderer Stelle als bei /salesOrders/{id}/lineitems.

Da die Checkliste so präzise auf unseren Fall passte, haben wir sie komplett durchgetestet — vielleicht hilft das bei der Eingrenzung, auch wenn unser Setup (kein Lovable/Cloudflare, direkter Server-Zugriff) ein anderes ist als das des Threadstarters:

1. Rohrequest protokolliert (Methode, vollständiger Pfad, api-version, Content-Type, JSON-Body):

Code:
POST /items/15137/suppliers
api-version: 1.0 | Content-Type: application/json
Body: {"SupplierId":1}
-> HTTP 400
{"ErrorCode":"ValidationError", ... "ErrorMessage":"Validation failed"}

2. /v1/-Pfad gleichzeitig mit api-version-Header: Getestet in allen fünf Kombinationen — /items/... und /v1/items/..., jeweils mit api-version: 1.0, api-version: 1 und ganz ohne den Header. Alle fünf liefern identisch HTTP 400 mit derselben Errors-Liste. Kein Zusammenhang bei uns.

3. Zahlen als echte JSON-Zahlen statt String/null: War bei uns von Anfang an korrekt — der Body enthält durchgehend echte JSON-Zahlen ({"SupplierId":1}, kein "1" oder null), verifiziert am rohen, unmittelbar vor dem Request erzeugten Payload.

4. Die drei vorgeschlagenen Vergleichsfälle, alle mit vollständigem Rohrequest protokolliert:

  • POST nur mit SupplierId: {"SupplierId":1} → HTTP 400, identische Fehlerliste.
  • POST mit allen beanstandeten Zahlenfeldern explizit als 0: {"SupplierId":1,"TaxRate":0,"Stocklevel":0,"DeliveryTime":0,"PurchasePriceNet":0,"AmountPackagingUnit":0,"MinimumPurchaseQuantity":0,"PermissibleOrderQuantity":0} → HTTP 400, identische Fehlerliste (also wird selbst der explizit gültige Wert 0 durchgehend als außerhalb des Bereichs "0 und 2147483647" abgelehnt).
  • PATCH einer bestehenden Zuordnung mit unveränderten, unmittelbar zuvor per GET gelesenen Werten: Erst GET /items/15132/suppliers (liefert eine seit Wochen bestehende, funktionierende Zuordnung mit realen Werten wie PurchasePriceNet: 4.72, TaxRate: 19), direkt im Anschluss dieselben Werte unverändert per PATCH /items/15132/suppliers/1 zurückgeschrieben → ebenfalls HTTP 400, identische Fehlerliste.
5. Anfrage über Proxy/CDN vs. direkt gegen den Wawi-Server: Bei uns kommt kein Lovable/Cloudflare oder ähnlicher Zwischen-Layer zum Einsatz — wir sprechen die Wawi-REST-API direkt über die feste Server-IP an (https://<IP>:5883/api/eazybusiness), ohne Proxy dazwischen. Ein Cloudflare-/CDN-bedingter Unterschied scheidet bei uns also als Ursache aus.

6. Tatsächlich gewährte Scopes (nicht nur angeforderte): Explizit geprüft — eigene, neue App-Registrierung durchgeführt (POST /authentication), in der Wawi freigeschaltet, Status per GET /authentication/{registrationId} abgefragt. Das GrantedScopes-Feld der Antwort enthält nachweislich item.createitemsupplier und item.updateitemsupplier. Mit dem so erhaltenen, frischen Token (eigene x-appid, eigener ApiKey) schlägt derselbe Request identisch fehl — Scope-Problem damit ausgeschlossen.

7. Abgleich mit dem lokalen OpenAPI-Schema: CreateItemSupplier laut /swagger/v1/swagger.json verlangt nur SupplierId als Pflichtfeld, alle beanstandeten Felder (TaxRate, Stocklevel, DeliveryTime, PurchasePriceNet, AmountPackagingUnit, MinimumPurchaseQuantity, PermissibleOrderQuantity) sind laut Schema optional, jeweils type: number/format: decimal bzw. bei DeliveryTime type: integer/format: int32. Unser gesendeter Payload entspricht dem Schema exakt (Typen und Pflichtfeld stimmen überein) — die serverseitige Validierung weicht davon ab.

Fazit unsererseits: Alle sieben Prüfpunkte durchlaufen, keiner erklärt oder behebt das Verhalten bei uns. Das Muster "gültiger, im Schema erlaubter Wert (auch 0) wird trotzdem als außerhalb des Bereichs abgelehnt" passt tatsächlich zum von euch vermuteten Zusammenhang mit der fehlerhaften v1-Modellvalidierung — bei uns ist es nur ein anderer Endpunkt (/items/{id}/suppliers statt /salesOrders/{id}/lineitems). Vielleicht hilft das als zweiter unabhängiger Beleg, dass es sich um ein grundsätzlicheres Validierungsproblem in diesem Wawi-Build handelt und nicht um einen isolierten Einzelfall an einem Endpunkt.

Wir stehen für weitere Tests gerne zur Verfügung, falls das bei der Eingrenzung hilft.
 

Morimus

Sehr aktives Mitglied
16. Mai 2019
613
131
Damit sind Payload, Zahlentypen, Versionierung, Proxy, Scopes und Abweichungen vom OpenAPI-Schema als Ursachen praktisch ausgeschlossen.
Das spricht sehr deutlich für eine fehlerhafte serverseitige v1-Modellvalidierung beim Supplier-Endpoint.

Da WAWI-87918 offiziell nur SalesOrder-LineItems betrifft, sollte JTL bestätigen, ob dessen Fix auch POST/PATCH /items/{id}/suppliers umfasst oder hierfür ein separates Ticket erforderlich ist.

Ich würde deshalb ein neues Ticket eröffnen und dabei auf WAWI-87918 sowie die hier dokumentierten Testergebnisse verweisen.
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu JTL-Wawi REST API (Beta): HTTP 402 "Zahlung erforderlich" auf allen Endpunkten trotz gebuchter Beta-Lizenz Schnittstellen Import / Export 2
Neu JTL REST API (on premise) - welche API Version ab welcher Wawi-Version? Changelog? Schnittstellen Import / Export 0
Neu Ab welcher JTL Wawi Version ist der OnPremise REST API Endpoint POST /v2/returns oder POST /v1/returns für Create Return verfügbar? Schnittstellen Import / Export 0
Bessere Greyhound-Anbindung ab 1.10 - JTL-API-Pflicht? JTL-Wawi 1.10 12
Neu Selektieren aller Artikel, bei denen NICHT 'Preis aus Registerkarte JTL Wawi" eingestellt ist? User helfen Usern - Fragen zu JTL-Wawi 0
Neu JTL-POS 2.0.0.4 – TSE-Signaturexport führt reproduzierbar zum Absturz JTL-POS - Fehler und Bugs 0
Neu Erfahrungen mit DHL Paket International Premium Tarife in der JTL-Shipping-Cloud ? JTL-ShippingLabels - Ideen, Lob und Kritik 1
Wichtig GLS auf JTL Shipping 2.0 — Webinar am 17. September (Live-Walkthrough & Migration) News, Events und Umfragen 0
Neu JTL-POS DATEV-Export – Kassendifferenz nicht nur bei Mehrzweckgutscheinen JTL-POS - Fehler und Bugs 2
Neu Biete: REPMOD — Lieferantendaten (BMECat, CSV, Preislisten) automatisch als fertiger JTL-Ameise-Import Dienstleistung, Jobs und Ähnliches 6
Neu Google Shopping ... seit JTL Wawi 2.0.6 steigende Zahl nicht genehmigte Produkte (Attribut „Preis“ [[price]]) User helfen Usern - Fragen zu JTL-Wawi 5
Neu JTL-POS DATEV-Export – Kassendifferenz bei Mehrzweckgutscheinen Allgemeine Fragen zu JTL-POS 0
Neu Plugin: Infinite Scroll / „Mehr laden“ für JTL-Shop 5 – einmalige Lizenz, kein Abo Plugins für JTL-Shop 0
Neu JTL-Shop 5.5 – „Rechnung nicht beilegen“ per Workflow anhand der Auftragsposition erkennen User helfen Usern - Fragen zu JTL-Wawi 0
Neu JTL-POS 2.0.0.3 - Barcodeschema lässt sich nicht speichern / alte sind weg JTL-POS - Fehler und Bugs 9
Neu JTL POS Crasht bei Druckerauswahl JTL-POS - Fehler und Bugs 11
Neu JTL-POS 2.0.0.2 Absturz nach Tagesabschluss JTL-POS - Fehler und Bugs 5
Neu JTL POS App Speicherverbrauch hoch, obwohl Datensicherung klein JTL-POS - Fehler und Bugs 8
Neu Seit heute früh kein Start von JTL-Wawi möglich - Datenbank nicht erreichbar User helfen Usern - Fragen zu JTL-Wawi 7
Neu Wie verarbeitet ihr B2B-Bestellungen aus E-Mail oder PDF in JTL-Wawi? Arbeitsabläufe in JTL-Wawi 16
Neu Fehler beim öffnen von JTL Hub JTL-ShippingLabels - Fehler und Bugs 2
Neu JTL-Wawi 2.0.6: eBay-Rahmenbedingungen bei bestehenden Angeboten/Vorlagen nicht mehr änderbar eBay-Anbindung - Fehler und Bugs 11
Neu Shipping 2.0 ist ein Grund für kleine Shops JTL zu verlassen bzw. gar nicht erst mit JTL anzufangen JTL-ShippingLabels - Ideen, Lob und Kritik 24
Neu guide.jtl-software.com seit mehreren Stunden nicht erreichbar JTL-Wawi - Fehler und Bugs 1
Neu Welche JTL-Shop Plugins oder Funktionen fehlen euch noch? – menuBuilder aktuell in Entwicklung Plugins für JTL-Shop 6
Neu Neuer JTL-Shop lässt sich nicht öffnen Installation / Updates von JTL-Shop 2
Neu Shopify-Connector auf neues JTL-Kundenkonto umstellen – App bleibt altem Konto zugeordnet Shopify-Connector 4
Neu 💚 Plugin: DZM Bonus Plus - das Treueprogramm für deinen JTL-Shop Plugins für JTL-Shop 8
Neu JTL-Ameise - Neue / aktualisierte Lieferadresse als Standard setzen User helfen Usern - Fragen zu JTL-Wawi 3
Neu JTL-Ameise - Neue / aktualisierte Lieferadresse als Standard setzen User helfen Usern 0
Neu Klarna (1.2.14) und JTL (5.7.2) nicht kompatibel Technische Fragen zu Plugins und Templates 0
Neu Amazon VCS-Lite – Fehlende Rechnungen nachträglich hochladen (JTL-Wawi 1.11.11)? Amazon-Anbindung - Fehler und Bugs 4
Neu 🔥 𝐍𝐮𝐫 𝟓× verfügbar 𝟓𝟎% 𝐑𝐚𝐛𝐚𝐭𝐭 auf dein Besucherticket für die kommende JTL-Connect am 02.10.2026 in Köln Dienstleistung, Jobs und Ähnliches 0
Neu Synchronisation Produkte Shopify > JTL Shopify-Connector 2
Mehrere Probleme mit JTL-Wawi und JTL-POS – hängen diese zusammen? JTL-Wawi 2.0 1
Neu Stripe plugin mit JTL SHOP Error 500 Plugins für JTL-Shop 2
Neu css Einstellungen Paypal Plugin von JTL JTL-Shop - Fehler und Bugs 1
Neu Eigenen JTL-SCX-Marktplatzkanal für Multi-Vendor-Marktplatz erstellen – Erfahrungen gesucht Einrichtung und Installation von JTL-eazyAuction 3
JTL-Wawi 2.0.6.0 sendet fehlerhafte multipart/form-data-Requests – ModSecurity blockt Datenabgleich mit 403 (scheinbar hosterabhängig) JTL-Wawi 2.0 20
Neu JTL-Shop 5.7.2: Zahlungsbetrag weicht vom Auftragswert ab JTL-Shop - Fehler und Bugs 4
Neu JTL-Shop 5.7.2: Unterschiedliche Standardsprachen in tsprache – widersprüchliche Canonical- und Hreflang-Ausgabe der Startseite Allgemeine Fragen zu JTL-Shop 4
Neu Versandetikett bei Aufträgen aus dem JTL Shop Arbeitsabläufe in JTL-Wawi 0
Neu JTL Search blockiert unsere Shops JTL-Shop - Fehler und Bugs 1
Wichtig JTL-ShippingLabels 1.0: Support-Ende GLS/DPD und Migration von JTL-Start-Kunden nach dem 30. September News, Events und Umfragen 14
Neu JTL Shop 5.7.2 NOVA - Akkordeon Überschriften herabstufen auf H3 Templates für JTL-Shop 3
Kasse in JTL-Wawi 2.0 einbinden JTL-Wawi 2.0 1
Neu JTL-WAWI 2.0.5 Worker läuft nicht mehr und Versandarten werden falsch ausgegeben. JTL-Wawi - Fehler und Bugs 1
JTL-WAWI 2.0.5 Worker läuft nicht mehr und Versandarten werden falsch ausgegeben. JTL-Wawi 2.0 10
Neu Login-Fehler 403 bei app.shipping.jtl-cloud.com seit 17.07.2026 JTL-ShippingLabels - Fehler und Bugs 7
Neu 🚨 Sicherheitswarnung für JTL-Shop-Betreiber: Manipulation des Checkout-Prozesses durch externes JavaScript (Magecart- / Payment-Skimmer) Betrieb / Pflege von JTL-Shop 11

Ähnliche Themen