REST Api v2 (Wawi 1.11.7)

morpheusd

Mitglied
5. Juni 2024
73
8
Hallo zusammen,

wir nutzen die JTL REST API (OnPrem) für ein internes Web-Tool, das Produktionsnummern (Eigene Felder), Lieferanten-Artikelnummern und Versandklassen von Artikeln ändert.

Über v1 funktioniert alles einwandfrei. Wir möchten aber auf v2 umstellen, insbesondere um mehrere Änderungen in einem Call zu bündeln (PATCH /itemdetails/change mit Custom Fields + Suppliers + ShippingClass).


Unser Setup
- JTL-Wawi: 1.11.7
- REST API Server: OnPrem (Windows-Dienst)
- App-Registrierung: Version 3.0.0 mit Scopes: all.read, items.read, items.write, suppliers.read, item.updateitem, item.updateitemsupplier, item.createitemsupplier


Was funktioniert

v1-Endpoints (alle OK):
- GET /v1/items/{id} — Artikel lesen
- PATCH /v1/items/{id} — Versandklasse ändern
- PATCH /v1/items/{id}/customfields/201 — Eigenes Feld ändern
- PATCH /v1/items/{id}/suppliers/{id} — Lieferanten-Sku ändern

v2-Lesen (über api-version: 2 Header, NICHT über /v2/ im Pfad):
- GET /items/{id} mit Header api-version: 2 liefert Daten
- GET /items/{id}/suppliers mit Header api-version: 2 liefert Daten
- GET /shippingClasses mit Header api-version: 2 liefert Daten

v2 mit /v2/ im URL-Pfad:
- Gibt immer 400 UnsupportedApiVersion zurück


Das Problem: v2-Write ändert nichts

PATCH /itemdetails/change mit Header api-version: 2 gibt HTTP 200 (leere Response) zurück, ändert aber keine Daten in der Datenbank. Teilweise kommt auch HTTP 404.


Was wir alles getestet haben:

1. Einfacher Request (einzelnes Objekt):

curl -X PATCH '<server>/api/eazybusiness/itemdetails/change' \
-H 'Authorization: Wawi <token>' \
-H 'X-AppId: produktionsnummer-tool-v3' \
-H 'X-AppVersion: 3.0.0' \
-H 'api-version: 2' \
-H 'Content-Type: application/json' \
-d '{"ItemId": 151147, "ShippingClassId": 7}'

Ergebnis: HTTP 200, leere Response, ShippingClassId bleibt unverändert bei 4.


2. Mit Variations (laut OpenAPI-Spec ein required-Feld):

{"ItemId": 151147, "ShippingClassId": 7, "Variations": {"Variations": []}}

Ergebnis: HTTP 200, keine Änderung.


3. Als Array (Bulk-Format):

[{"ItemId": 151147, "ShippingClassId": 7, "Variations": {"Variations": []}}]

Ergebnis: HTTP 404.


4. Mit Wrapper-Objekt:

{"items": [{"ItemId": 151147, "ShippingClassId": 7}]}

Ergebnis: HTTP 200, keine Änderung.


5. camelCase statt PascalCase:

{"itemId": 151147, "shippingClassId": 7, "variations": {"variations": []}}

Ergebnis: HTTP 200, keine Änderung.


6. Vollständiger Payload (Custom Fields + Suppliers + Variations):

{
"itemId": 151147,
"shippingClassId": 7,
"customFields": {
"fieldValues": [{"fieldId": 201, "value": "TEST", "valueCultureName": ""}]
},
"suppliers": {
"suppliers": [{"supplierId": 2, "supplierItemNumber": "TEST"}]
},
"variations": {"variations": []}
}

Ergebnis: HTTP 404.


7. api-version: 2.0 statt api-version: 2:

Ergebnis: HTTP 404.


Zum Vergleich — v1 funktioniert sofort:

curl -X PATCH '<server>/api/eazybusiness/v1/items/151147' \
-H 'Authorization: Wawi <token>' \
-H 'Content-Type: application/json' \
-d '{"ShippingClassId": 7}'

Ergebnis: ShippingClassId sofort auf 7 geändert.


Zusätzliche Info:
- Swagger UI ist auf dem Server nicht erreichbar (404 unter /swagger, /api/eazybusiness/swagger und /api/eazybusiness/swagger.json)
- Wir können das erwartete Request-Schema deshalb nicht direkt am Server prüfen


Zusammenfassung:

Funktion | v1 (Pfad-basiert) | v2 (api-version Header)
Artikel lesen | OK | OK
Lieferanten lesen | OK | OK
Versandklassen lesen | OK | OK
Artikel ändern | OK | 200 aber keine Änderung
Custom Fields ändern | OK | 200 aber keine Änderung
Suppliers ändern | OK | 200 aber keine Änderung


Unsere Fragen:

1. Hat jemand PATCH /itemdetails/change mit api-version: 2 Header erfolgreich im Einsatz? Wenn ja — wie sieht der Request-Body genau aus?
2. Wie kann man die Swagger UI auf dem OnPrem-Server aktivieren, um das erwartete Schema direkt zu prüfen?
3. Werden v2-Write-Endpoints eventuell erst mit einem neueren Wawi-Update freigeschaltet?
4. Ist es korrekt, dass der api-version Header der richtige Weg für v2 ist (und nicht /v2/ im Pfad)?

Danke für jeden Hinweis!
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
8.341
2.531
Berlin
Firma
css-umsetzung
Es wurden in der V2 viele Variablen geändert, der Name ist gleich aber ein ->Id wurde nun zu ->id, ->Name zu ->name

Die Version die du verwenden möchtest kannst du mit /v2/ oder /v1/ in der URL übergeben, nimmst du diese Übergabe nicht, nimmt er die aktuelle der WAWI.

Die Version kann auch über Parameter im Header übergeben werden "api-version"
 
Zuletzt bearbeitet:

morpheusd

Mitglied
5. Juni 2024
73
8
Es wurden in der V2 viele Variablen geändert, der Name ist gleich aber ein ->Id wurde nun zu ->id, ->Name zu ->name

Die Version die du verwenden möchtest kannst du mit /v2/ oder /v1/ in der URL übergeben, nimmst du diese Übergabe nicht, nimmt er die aktuelle der WAWI.

Die Version kann auch über Parameter im Header übergeben werden "api-version"
Danke für die Hinweise!

Wir haben das direkt getestet, leider ohne Erfolg:

1. /v2/ im Pfad: Gibt bei uns bei ALLEN Endpoints "400 UnsupportedApiVersion" zurück — auch bei reinen GET-Abfragen:

GET /v2/shippingClasses → 400 UnsupportedApiVersion
GET /v2/items/151147 → 400 UnsupportedApiVersion
GET /v2/items/151147/suppliers → 400 UnsupportedApiVersion

2. camelCase haben wir ebenfalls getestet (itemId statt ItemId, shippingClassId statt ShippingClassId) — in Kombination mit /v2/ im Pfad, mit api-version: 2 Header, und ohne Versionsangabe. Kein Unterschied.

3. Ohne Versionsangabe im Pfad (also z.B. GET /shippingClasses) funktioniert die API — scheint aber auf v1 zu fallen, da die Response-Struktur identisch mit /v1/ ist.

Es sieht so aus, als ob unser REST API Server v2 schlicht nicht kennt. Swagger UI ist bei uns ebenfalls nicht erreichbar (404 auf /swagger und allen Varianten).

Zwei Fragen dazu:
- Muss der REST API Server möglicherweise separat aktiviert oder konfiguriert werden, damit v2 verfügbar ist?
- Gibt es eine Möglichkeit zu prüfen welche API-Version der laufende REST-Server tatsächlich unterstützt (z.B. ein Info- oder Health-Endpoint)?

Danke!
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
8.341
2.531
Berlin
Firma
css-umsetzung
Also ich habe gestern nur den Registrierungsvorgang und einige andere kleine Sachen durchgetestet.
Die Registrierung hat nachdem ich die Variablen angepasst hatte geklappt.

Am WE wollte ich mich da weiter mit beschäftigen.

Ist schon doof, wenn die Variablen auf einmal anders sind.
 
  • Gefällt mir
Reaktionen: wawi-dl

wawi-dl

Sehr aktives Mitglied
29. April 2008
6.658
805
Also ich habe gestern nur den Registrierungsvorgang und einige andere kleine Sachen durchgetestet.
Die Registrierung hat nachdem ich die Variablen angepasst hatte geklappt.

Am WE wollte ich mich da weiter mit beschäftigen.

Ist schon doof, wenn die Variablen auf einmal anders sind.
genau dafür ist ja eine API eigentlich da, dass die Endpunkte immer gleich bleiben ... man sollte das eigentlich vermeiden, unschön von JTL
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
8.341
2.531
Berlin
Firma
css-umsetzung
Ja es ist grausig und ich finde dazu auch nichts weiter in der Doku.

Ich habe das also gestern noch ausgiebig getestet.
Der vernünftigste Weg ist, die 2.0er API gar nicht anzufassen und sich weiter im Verzeichnis /v1/ zu bewegen.

Ich habe auch irgendwie das Gefühl das, dass was in der Doku steht nicht mit dem jSon File zum Einspielen in Postman übereinstimmt, dort wird von diesen Variablen gesprochen:

  • X-AppID : Dies ist der Name Ihrer Anwendung, in diesem Fall „MyApp/1.0.0“. Er dient zur Identifizierung Ihrer Anwendung.
  • X-AppVersion : Hier wird die Versionsnummer Ihrer Anwendung eingegeben, in diesem Fall „1.0.0“.
  • X-RunAs : Hier kann ein JTL-Wawi-Benutzer angegeben werden, der in seinem Namen einen API-Aufruf durchführt (weitere Details in der Dokumentation).
  • X-ChallengeCode : Hier können Sie einen beliebigen Wert eingeben. Der X-ChallengeCode wird bei der App-Registrierung verwendet und muss für alle Registrierungsanfragen identisch sein. Die maximale Länge beträgt 30 Zeichen.
  • Autorisierung : Der API-Schlüssel. Beispiel: „Wawi 00000000-0000-00000-0000-000000000000“
Nach dem Einspielen in Postman sind diese in den Vorgaben aber alle kleingeschrieben.

gebe ich kein Verzeichnis /v1/ oder eben /v2/ ein, und gehe mit den Variablen wie hier beschrieben rein geht das, die Version kann ich dann über api-version umschalten.

Die Ausgabe der Variablen, wenn ich auf 2.0.0 gehe ist dann eben alles kleingeschrieben.
Irgendwie eigenartig.

Ausgabe für Company

Version (api-version) 1.0.0 (nur 1 geht auch):

Code:
[
    {
        "Id": 1,
        "Name": "css-Develope"
    }
]

Version (api-version) 2.0.0:

Code:
[
    {
        "id": 1,
        "name": "css-Develope"
    }
]
 
  • Gefällt mir
Reaktionen: no80

morpheusd

Mitglied
5. Juni 2024
73
8
Leider gibt es Funktionen die die V1 nicht kann und erst ab der V2 integriert wurden.
Wäre toll wenn sich der JTL REST-API Entwickler hier mal äußern könnte.
 
Ähnliche Themen
Titel Forum Antworten Datum
REST API (OnPrem) - Authorization: Wawi <ApiKey> gibt immer 401 JTL-Wawi 1.11 1
Neu JTL-Wawi REST-API – Performance & Monitoring JTL-Ameise - Ideen, Lob und Kritik 3
BUG in 2.0.0 - Rest Api Server startet nicht. JTL APP nicht benutzbar JTL-Wawi 2.0 4
Neu Umstellung auf DHL Versenden 4.0 (REST-API) JTL-ShippingLabels - Ideen, Lob und Kritik 43
Neu Grundsatzfrage JTL POS - JTL REST-API Einrichtung / Updates von JTL-POS 1
Neu JTL REST API einen Workflow ausführen und benutzerspezifischen Drucker ansteuern User helfen Usern 0
API salesorders JTL-Wawi 1.11 4
Neu Anbindung JTL <---> Greyhound via API funktioniert nicht sauber User helfen Usern - Fragen zu JTL-Wawi 0
Keine APP oder API Verbindung möglich JTL-Wawi App 0
Neu Amazon Angebotspreise per Stored Procedure/Function oder API setzen Amazon-Anbindung - Ideen, Lob und Kritik 0
Neu Wawi API 1.11.5 – App‑Registrierung: FormatNotParsable / GUID muss 32 Ziffern Arbeitsabläufe in JTL-Wawi 2
kaufland api erkennt product_safety_contact nicht JTL-Wawi 1.11 0
Neu Shopware 6.7.6.2 Fehler [No supported api version found.] 100 Shopware-Connector 1
Neu Referenznummer Grösse auf den Versand Etiketten von DPD-Cloudservice und GLS Api JTL-ShippingLabels - Ideen, Lob und Kritik 0
Neu Anbindung JTL Wawi an Speditionen Dienstleistung, Jobs und Ähnliches 0
Worker läuft, zieht aber keine Aufträge in die Wawi JTL-Wawi 2.0 1
Globale Textbausteine aus alter WAWI 0.9 JTL-Wawi 1.10 0
Direktupdate von JTL Wawi 1.10.11.0 auf 2.0 möglich? JTL-Wawi 2.0 4
Neu JTL-Wawi Update Historie User helfen Usern - Fragen zu JTL-Wawi 2
Fehlermeldung beim Anlegen einer zweiten JTL POS Kasse in JTL-Wawi JTL-Wawi 1.11 0
Text Vorbereitung für WAWI import JTL-Wawi 1.11 3
Neu Update Wawi 1.10.16.0 auf 1.11.7 -> JTL-POS Einrichtung / Updates von JTL-POS 1
Neu Seit Update auf JTL-WaWi 2.0.0.0 keine Abholung der Kundendaten bei MediaSaturn-Bestellungen JTL-Wawi - Fehler und Bugs 5
Neu Best Practices für den Export und die Automatisierung von täglichen Berichten in JTL‑WaWi User helfen Usern - Fragen zu JTL-Wawi 2
Neu WaWi wurde gehackt User helfen Usern - Fragen zu JTL-Wawi 26
Neu Bankdaten in Wawi V1.11.7 werden vererbt und nicht aktualisiert User helfen Usern - Fragen zu JTL-Wawi 2
Mobile Web-App für JTL-WaWi — Aufträge, Artikel & Lager direkt vom Smartphone JTL-Wawi App 0
JTL-Wawi eBay Fahrzeugverwendung (K-Typen) wird nicht aktiviert trotz Ameise-Import JTL-Wawi 1.10 0
Login Zeiten nach User in Wawi 1.6 JTL-Wawi 1.6 0
eBay-Vorlagenfenster rechts abgeschnitten (JTL-Wawi 2.0) JTL-Wawi 2.0 6
Neu Bestandsabgleich JTL Wawi mit Amazon JTL-Wawi - Fehler und Bugs 1
Neu Umsatzsteuernummer von Kunden wird nicht in Wawi übertragen Shopify-Connector 4
Neu Alte Produktbilder erscheinen im JTL-Shop trotz Löschung und neuem Upload immer wieder – JTL-Wawi enthält nur neue Bilder JTL-Wawi - Fehler und Bugs 16
Neu JTL Shop 5 Sync in JTL WAWI 2.0.0 zeigt Verbindungstest Fehlermeldung Onlineshop-Anbindung 4
Neu Die verwendete Version von JTL-Wawi wird nicht mehr unterstützt. Bitte nutzen Sie die Version 2.0.0.0 User helfen Usern - Fragen zu JTL-Wawi 1
Neu Pickliste wird auf Packtisch und in Wawi unter Picklisten nicht angezeigt. JTL-WMS / JTL-Packtisch+ - Fehler und Bugs 1
Neu JTW Wawi hängt beim Bearbeiten der Druckvorlage für Mahnungen User helfen Usern - Fragen zu JTL-Wawi 0
Neu JTL-Wawi 2.0.1 Stable Release Releaseforum 1
Neu Planung: Disposition ausgegraut, Produktionstücklisten nicht mehr buchbar (WaWi 1.11.7) JTL-Plan&Produce - Fehler und Bugs 4
Neu CSS GeoIP MwSt.-Finder 2.7.1 verhindert das Anlegen von Shop-Kundenkonten aus der Wawi Plugins für JTL-Shop 1
Neu Installation JTL-Wawi 1.5.55.8 - Startet Grundsätzlich im Report-/Druckmodul Installation von JTL-Wawi 4
erstes Feedback zur WAWI 2.0 (beta) JTL-Wawi 2.0 30
Neu [Erledigt] Installationsdatei JTL‑Wawi 1.5.55.8 erhalten! Installation von JTL-Wawi 0
Neu Onlineshop von Wawi entfernen Onlineshop-Anbindung 2
Neu Kategoriestruktur auf JTL-Wawi in WooCommerce Shop darstellen WooCommerce-Connector 2
Neu Zwei eBay-Aufträge (identische Adresse) zusammen versenden, aber getrennte Rechnungen behalten – JTL-Wawi 1.9.6.5 User helfen Usern - Fragen zu JTL-Wawi 1
JTL-WAWI Datenbankprofil für neue Windows Benutzer JTL-Wawi 1.11 2
Neu GPSR Herstellerinformationen JTL Wawi 1.9.6.4 anbinden User helfen Usern - Fragen zu JTL-Wawi 0
Neu DSGVO – Automatisierte Löschung von Kundendaten nach 10 Jahren (JTL-Wawi / JTL-Shop) User helfen Usern - Fragen zu JTL-Wawi 2
Neu Erstabgleich Showpare6 zu JTL-WaWi Shopware-Connector 0

Ähnliche Themen