Welcome to the JTL-WAWI technical API documentation. This guide is here to help developers understand how our REST API works and how it can be integrated into your existing systems. We'll delve into the details of authentication and data manipulation processes, providing clear examples along the way. Whether you're a developer or an IT professional, this documentation aims to give you a practical understanding, laying the groundwork for effectively using the JTL-WAWI API to enhance your processes.
You register your application with the API by sending a POST request with the required information and corresponding keys. You can find the exact request details at https://developer.jtl-software.com/products/erp/swagger/appregistration. This information has to include the following:
This data is crucial for identifying and registering your application with the API. The API uses it to generate a temporary authentication ID that allows your application to access the necessary resources. After successful validation of this information, you will receive the API key required for future authentication and API requests.
Before you can begin the registration process, you must open JTL-Wawi (new interface) and start the registration process under 'Admin->App registration'. Only at this point are you authorised to send the first API call. This step in JTL-Wawi ensures that your application is properly registered and has permission to use the API.
The API will send you an authentication ID in the form of a token. Once you have received this token and successfully completed the registration in JTL-Wawi, you will send another request to the API by including this authentication ID in the URL path.
After successful validation of this second request by the API and confirmation of the correct information, you will be provided with the actual API key. It is important to note that this API key will not be displayed again!
This API key will be used in the future to authenticate requests to the API. It is of utmost importance that you securely store the API key upon receipt, as it cannot be retrieved from any other location in the system.
You can enter any custom value here. The X-ChallengeCode is used during app registration and must be the same for all registration requests. The maximum length is 30 characters.
Contains the registration request's data
Default description of the application
Localized display names of the application
Localized descriptions of the application
Website of the application's provider
Mandatory required API scopes for the application to work
multiple instances of the application possible0=OneInstance | 1=MultiInstance | 2=PerUserInstance | 3=PerUserLoginInstance
The Signature of the App, it combines AppId.SignatureData like myApp/v1.2025-08-03T25:48:00 in UTC Time
curl -i -X POST \
https://developer.jtl-software.com/_mock/products/erpapi/1.0-cloud/openapi/authentication \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'api-version: string' \
-H 'tenant-id: 497f6eca-6276-4993-bfeb-53cbbbba6f08' \
-H 'x-api-key: YOUR_API_KEY_HERE' \
-H 'x-challengecode: string' \
-d '{
"AppId": "myApp/v1",
"DisplayName": "My App",
"Description": "Demo app for testing purposes",
"LocalizedDisplayNames": "",
"LocalizedDescriptions": "",
"Version": "1.0.0",
"ProviderName": "JTL-Software-GmbH",
"ProviderWebsite": "https://www.jtl-software.de",
"MandatoryApiScopes": "",
"OptionalApiScopes": "",
"AppIcon": "string",
"RegistrationType": 0,
"Signature": "string",
"SignatureData": "2025-03-20T08:57:00.0000000+01:00"
}'
{ "AppId": "myApp/V3", "RegistrationRequestId": "295C196B-CBB0-4E76-9050-ECEC3356DDA6", "Status": "Pending" }
curl -i -X GET \
'https://developer.jtl-software.com/_mock/products/erpapi/1.0-cloud/openapi/authentication/{registrationId}' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'api-version: string' \
-H 'tenant-id: 497f6eca-6276-4993-bfeb-53cbbbba6f08' \
-H 'x-api-key: YOUR_API_KEY_HERE' \
-H 'x-challengecode: string'
{ "RequestStatusInfo": { "AppId": "myApp/V3", "RegistrationRequestId": "295C196B-CBB0-4E76-9050-ECEC3356DDA6", "Status": "Pending" }, "Token": { "ApiKey": "FB622234-98A7-46FA-A01B-06C9D0971AAF" }, "GrantedScopes": "" }
curl -i -X POST \
'https://developer.jtl-software.com/_mock/products/erpapi/1.0-cloud/openapi/authentication/{registrationId}' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'api-version: string' \
-H 'tenant-id: 497f6eca-6276-4993-bfeb-53cbbbba6f08' \
-H 'x-api-key: YOUR_API_KEY_HERE' \
-H 'x-challengecode: string'
{ "AppId": "myApp/V3", "RegistrationRequestId": "295C196B-CBB0-4E76-9050-ECEC3356DDA6", "Status": "Pending" }