OnPremise API: Keine Daten aus API-Anbindung mittels externer APP

martin_mm

Neues Mitglied
5. Juni 2026
5
0
Liebe Community,

erster Post - und dann gleich etwas sehr spezielles. Leider konnte mit der Support nicht helfen.
Steinigt mich, aber wir entwickeln Inhouse mittels AI (Lovable & Claude) ein Tool, das uns KPIs - auch außerhalb von JTL - in einem Dashboard liefern soll. Das läuft so weit auch gut, aber es fehlt noch ein Quäntchen zum vollen Erfolg.

Aufbau: --> Schnittstelle/abfragende Instanz = Dashbaord im Cloud-Hosting von Lovable. Anfragen über VPS-Bridge (wegen statischer IP für die Anfragen) an unseren WaWi-Server (eCom-Data). JTL-API läuft auf WaWi-Server, Verbindung von Cloud <-> WaWi-Server steht und funktioniert.
Problem: WaWi-Server gibt keine/ungenügende Daten zurück

Problem: JTL-Wawi App-API --> 401 trotz gültiger Registrierung & freigegebener Scopes

## Fragen :

1. Warum liefert `/v1/info` mit unserem Header-Set 200, aber `/v1/items`, `/v1/customers`, `/v1/salesOrders` dann 401 bei gültiger App-Registrierung, freigegebenen Scopes und Admin-User per `x-runas`?
2. Erwartet die App-API für datenführende Endpunkte einen anderen Header-Namen/Wert als `x-runas` (z. B. `X-runas`, oder Wawi-Username vs. interne User-ID)?
3. Müssen `items.read` / `customers.read` / `salesorders.read` zusätzlich serverseitig (User-Berechtigungen, Benutzergruppe) explizit aktiviert werden, oder reicht die Freigabe im App-Wizard?
4. Gibt es serverseitig ein Auth-Log, das den genauen Ablehnungsgrund nennt (Scope fehlt? runas unbekannt? Challenge ungültig?)?

## Was wir bereits ausgeschlossen haben

- Falscher ApiKey --> /v1/info` antwortet mit demselben Key sauber
- Fehlender `x-challengecode` --> wird mitgeschickt (derselbe Wert wie bei Registrierung)
- Falsche `api-version` : sowohl `1.0` als auch `2.0` getestet, beide 401
- IP-Mismatch & Registrierung und API-Calls kommen von derselben festen IP
- Scope `all.read` als Umbrella: wurde testweise entfernt und einzeln aufgeführt, gleiches Ergebnis
- `x-runas` fehlt -> wurde ergänzt (`api-dashboard`, Admin-Berechtigung), gleiches Ergebnis

gesetze Scopes:

cusomters.read
customers.read
items.read
offers.read
orders.read
returns.read
saleschannels.read
salesorders.read
deliveries.read
deliverynotes.read
inventories.read
picklists.read
warehouse.read
accountings.read
invoices.read
salesinvoicecorrections.read
taxes.read
suppliers.read
all.read
application.runas
system.config.read
system.read
system.worker.read
wawiapp.all
resources.read

**Wawi-Version:** 1.11.10 (Tenant `eazybusiness`)
**App:** `eigeneapp` Version `2.3.1`
**Wawi-User (runas):** `api-dashboard` (temporär Admin-Rechte in Testumgebung, alle App-Scopes im Wizard freigegeben)

---

## Symptom

- `GET /api/eazybusiness/v1/info` --> **200 OK**, liefert echtes JSON:
```json
{ "Version": "1.11.10", "Timestamp": "2026-06-03T17:16:22+02:00", "Tenant": "eazybusiness", "Type": "WAWI-Api" }
```
- `GET /api/eazybusiness/v1/items?pageSize=1` --> **401**
- `GET /api/eazybusiness/v1/customers?pageSize=1` --> **401**
- `GET /api/eazybusiness/v1/salesOrders?pageSize=1` --> **401**

Body bei allen 401:
```json
{ "Message": "Authorization has been denied for this request." }
```

Heißt: Authentifizierung greift grundsätzlich (`/v1/info` antwortet sauber mit App-Auth), aber jeder datenführende Endpoint wird abgelehnt.

---

## Request-Header (identisch für alle vier Calls)

```
Authorization: Wawi <ApiKey aus jtl_registration.api_key>
x-appid: eigeneapp/2.3.1
x-appversion: 2.3.1
api-version: 2.0
x-challengecode: 111111111 (derselbe Wert wie bei Registrierung)
x-runas: api-dashboard
```

Anfragen laufen über unseren Bridge-VPS mit fester IP `123.123.123.123` (derselben, mit der die Registrierung erfolgte --> kein IP-Mismatch).

---

## Registrierungs-Details

App-Registrierung war erfolgreich (`ApiKey` wurde geliefert, ohne `RegChallengeIpMismatch`).
Body der POST-Registrierung (PascalCase, `api-version: 2.0`):

```json
{
"AppId": "eigeneapp",
"Version": "2.3.1",
"DisplayName": "KPI Dashboard",
"Description": "KPI Dashboard für JTL-Wawi (via Bridge).",
"ProviderName": "TolleFirma",
"ProviderWebsite": "https://unseredomain.com",
"MandatoryApiScopes": [
"cusomters.read", "customers.read", "items.read", "offers.read",
"orders.read", "returns.read", "saleschannels.read", "salesorders.read",
"deliveries.read", "deliverynotes.read", "inventories.read",
"picklists.read", "warehouse.read", "accountings.read", "invoices.read",
"salesinvoicecorrections.read", "taxes.read", "suppliers.read",
"all.read", "application.runas", "system.config.read", "system.read",
"system.worker.read", "wawiapp.all"
],
"OptionalApiScopes": [],
"AppIcon": "<base64 PNG>"
}


Kann uns irgendwer helfen da herauszufinden, wo genau das Problem liegen könnte? Diese 401er loszuwerden wäre wirklich supertoll ;)

Danke vorab und allen schon mal ein schönes Wochenende!

Martin
 

Morimus

Sehr aktives Mitglied
16. Mai 2019
454
110
Vermutlich liegt hier der Fehler.
Bei x-runas wird nicht der Benutzername erwartet, sondern die interne Wawi-User-ID beziehungsweise UUID des Benutzers.

Zusätzlich würde ich die grantedScopes aus der Registrierungsantwort prüfen.
Entscheidend ist, welche Scopes tatsächlich gewährt wurden, nicht nur welche angefordert wurden.

edit:
Die neue Cloud API wäre für so ein externes Dashboard vermutlich die sauberere Lösung, sofern die benötigten Endpunkte dort verfügbar sind.
 

martin_mm

Neues Mitglied
5. Juni 2026
5
0
Danke dir für deine Hilfe! Das probieren wir mal aus.

JA - das wäre sie sicherlich. Hätten wir auch lieber gemacht - wollen dafür aber noch nicht auf die 2er-Version gehen ;)
 

martin_mm

Neues Mitglied
5. Juni 2026
5
0
TestStatus
/v1/info200
/v1/items mit allen 8 x-runas-Varianten (kein, kBenutzer, GUID upper/lower, X-RunAs, cLogin, x-wawiuser, x-user)alle 401 identisch
Hier mal die Ergebnisse:

1. /v1/info antwortet 200 mit demselben Key, aber /v1/items, /v1/customers, /v1/salesOrders geben jede Anfrage 401.

2. Die App-Registrierung war erfolgreich, GrantedApiScopes der Antwort enthält alle 24 angeforderten Scopes (inkl. items.read, customers.read, salesorders.read, application.runas, wawiapp.all).

3. In der DB-Tabelle dbo.tBenutzer wird beim App-Registrierungs-Handshake zwar ein neuer User WawiApiApp_21 (kBenutzer=60, nType=10, nAktiv=1) angelegt, aber cApiToken bleibt NULL und dLastLogin auch. Diverse x-runas-Varianten (Username, kBenutzer-ID, GUID upper/lower, Header-Case-Varianten) führen alle zum identischen 401.

Hast Du zufällig noch eine Idee?
 

Morimus

Sehr aktives Mitglied
16. Mai 2019
454
110
Okay, das ist komisch.
Nein, so langsam gehen mir die Ideen aus.

Bei der OnPremise API wird die Version über den Header api-version gesetzt.
Die Base-URL ist dabei /api/eazybusiness/.
Ich würde daher einmal exakt gegen den Endpoint testen, der zur verwendeten api-version passt, und nicht /v1 im Pfad mit api-version: 2.0 mischen.

Also testweise:

GET /api/eazybusiness/items?pageSize=1
api-version: 2.0

bzw. 1.0 Falls ihr wirklich v1 nutzen wollt.
Jeweils erst einmal ohne x-runas.

Ich weiß nicht, ob JTL an dieser Stelle eine solche Prüfung macht, aber du bist für die API-Beta beziehungsweise den REST-API-Zugriff freigeschaltet, oder?
Nicht, dass /info grundsätzlich funktioniert, die datenführenden Endpunkte wie /items, /customers oder /salesOrders aber eine echte Freischaltung benötigen.
 
Ähnliche Themen
Titel Forum Antworten Datum
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
API-Endpunkt Rechnungskorrekturen-PDF JTL-Wawi 2.0 1
Neu Anpassung DPD API JTL-ShippingLabels - Ideen, Lob und Kritik 3
API 2.1 für OnPrem? JTL-Wawi 2.0 6
Neu JTL REST API (on premise) - welche API Version ab welcher Wawi-Version? Changelog? Schnittstellen Import / Export 0
Bessere Greyhound-Anbindung ab 1.10 - JTL-API-Pflicht? JTL-Wawi 1.10 12
Neu VCS Lite / IDU blockiert – Aufträge fälschlich unter "Externe Rechnungen" (Amazon API Fehler) Amazon-Anbindung - Fehler und Bugs 9
API Schnittstelle langsam JTL-Wawi 1.11 0
Nach Update auf Wawi 2.0.X, API v1 Fehler JTL-Wawi 2.0 9
Neu 2.0.0: Workflow Queue wird nicht abgearbeitet via API JTL-Wawi 2.0 1
BUG in 2.0.0 - Rest Api Server startet nicht. JTL APP nicht benutzbar JTL-Wawi 2.0 4
REST API (OnPrem) - Authorization: Wawi <ApiKey> gibt immer 401 JTL-Wawi 1.11 1
API salesorders JTL-Wawi 1.11 4
Neu Anbindung JTL <---> Greyhound via API funktioniert nicht sauber User helfen Usern - Fragen zu JTL-Wawi 0
REST Api v2 (Wawi 1.11.7) JTL-Wawi 1.11 6
Keine APP oder API Verbindung möglich JTL-Wawi App 4
Neu Keine Verbindung zu Siwssbit TSE möglich JTL-POS - Fehler und Bugs 0
Neu Keine Warenpost Int. Labels hsCode - Fehler? JTL-ShippingLabels - Fehler und Bugs 8
Neu Umstellung auf Jera Datev Schnittstelle - keine Kundennummer im Kundencenter Schnittstellen Import / Export 2
Neu Keine Labels für Warenpost international über Packtisch JTL-ShippingLabels - Fehler und Bugs 8
Eigener Drittshop-Connector (jtl/connector 5.3): valide Variationskombinationen werden mit „besitzt keine Variationen" nicht gesendet JTL-Wawi 1.11 1
Nach Wawi Update keine Fehlermeldung mehr sichtbar kaufland.de - Anbindung (SCX) 0
Nach Update auf 2.0.3 Keine Fehlermeldungen mehr sichtbar Otto.de - Anbindung (SCX) 1
Neu eBay-Abgleich Fehlermeldung: Datenverarbeitung fehlgeschlagen: Die Sequenz enthält keine Elemente eBay-Anbindung - Fehler und Bugs 6
Neu Es werden keine Marken ausgedruckt und die Portokasse lässt keine Anmeldung zu. Smalltalk 5
Neu DHL-4.0 keine Labels JTL-ShippingLabels - Fehler und Bugs 12
Einrichtung ZUGFeRD, es lassen sich keine Rechnungen "Speichern" JTL-Wawi 1.11 2
WAWI 2.0.0 erkennt keine Updates JTL-Wawi 2.0 1
Keine Datenübertragung trotz bestehender Verbindung und funktionierendem Server JTL-Wawi 2.0 35
Mindestabnahme Lieferant - keine Kommazahlen erlaubt - Wie gehts? JTL-Wawi 1.11 0
Keine Rückmeldung in JTL Wawi sobald SQL Server Memory durch Database Cache ausgeslastet ist JTL-Wawi 2.0 9
Neu Nach Update auf JTL-Wawi 2.0.3 keine WMS-Lager mehr auswählbar – Versand komplett blockiert JTL-Wawi 2.0 3
Neu Keine Adressvalidierung bei DHL Versenden 4.0? JTL-ShippingLabels - Ideen, Lob und Kritik 5
Neu keine Kontakt Absender/Empfänger bei DHL Versenden 4.0 JTL-ShippingLabels - Ideen, Lob und Kritik 4
Neu Klarna konnte mit den angegebenen Daten keine Sitzung erstellen. Einige Feldbedingungen wurden verletzt. Betrieb / Pflege von JTL-Shop 0
AboutYou keine Felder für GPSR Daten SCX-(Ninepoint)-Anbindungen 0
Neu Angeblich noch keine Verknüpfung mit DPD Meta ??? JTL-ShippingLabels - Fehler und Bugs 1
Neu JTL Pos liest keine Verkäufe mehr ein nach Update Einrichtung / Updates von JTL-POS 0
Neu Zahlung zugewiesen, aber keine Rechnung wird angezeigt User helfen Usern - Fragen zu JTL-Wawi 2
Worker läuft, zieht aber keine Aufträge in die Wawi JTL-Wawi 2.0 1
Neu Angebot Status "Fehlerhaft" aber keine Fehlermeldung Amazon-Lister - Fehler und Bugs 4
Neu keine DHL Shipping Labels JTL-ShippingLabels - Fehler und Bugs 2
Keine Mailvorlagen JTL-Wawi 1.11 5
Worker versendet keine E-Mails mehr aus der Workflow Queue JTL-Wawi 2.0 6
gelöst: Für diesen User wurde zum angegebenen Mandanten keine Firma gefunden!! JTL-Wawi 1.10 13
Neu Seit Update auf JTL-WaWi 2.0.0.0 keine Abholung der Kundendaten bei MediaSaturn-Bestellungen JTL-Wawi - Fehler und Bugs 7
Seit Update keine zweite POS-Anbindung mehr möglich JTL-Wawi 2.0 12
Neu Installation von Plugin PayPal Check-Out fehlgeschlagen, keine Verbindung zum Webshop Plugins für JTL-Shop 6
Neu DHL WARENPOST INTERNATIONAL - keine Labelerstellung JTL-ShippingLabels - Fehler und Bugs 0
Dropshipping-Trackingnummer erzeugt keine Versandbenachrichtigung per E-Mail JTL-Wawi 1.8 5

Ähnliche Themen