Skip to content

JTL-WAWI API (Cloud) (1.1)

JTL-Wawi-Version: 1.11.0.0

Introduction

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.

Authentication

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:

  • AppId
  • DisplayName
  • Description
  • Version
  • ProviderName
  • ProviderWebsite
  • MandatoryApiScopes

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.

Download OpenAPI description
Languages
Servers
Mock server

https://developer.jtl-software.com/_mock/products/erpapi/1.1-cloud/openapi/

Production Environment Cloud API Gateway

https://api.jtl-cloud.com/erp/

Beta Environment Cloud API Gateway

https://api.beta.jtl-cloud.com/erp/

odata

worker

Planned

Operations

wms

Query all pick lists for a specific wms warehouse that are not completed.
Operations

warehouse

Query all warehouses
Operations

transactionStatus

Query all transaction status for sales order
Operations

tax

Returns the Taxrate for the given Item
Operations

item

Query all tax classes
Operations

supplier

Query all suppliers
Operations

stock

Query stocks for a specific item, warehouse or storage location
Operations

shippingmethod

Query all shipping methods
Operations

salesorder

Query all sales orders
Operations

cancellationreason

Planned

Operations

salesinvoicecorrection

Development

saleschannel

Get all sales channels
Operations

return

Create a new return with associated items and packages.
Operations

returnstate

Planned

Operations

returnreason

Planned

Operations

property

Query all properties for items
Operations

printer

Returns all Installed Printers
Operations

paymentmethod

Query all payment methods
Operations

onholdreason

Query all on hold reasons for sales orders
Operations

offer

Execute the printing of a Offer
Operations

Configuration

Planned

Operations

invoice

Planned

Operations

info

Returns the status of the API
Operations

features

Returns the available feature sets with release state and API version
Operations

Extensibility

Planned

Operations

Get Extensions

Request

Returns the installed Extensions

Query
pageNumberinteger(int32)

Number of the page of items to fetch.

pageSizeinteger(int32)

Size of the page that is specified by pageNumber.

Headers
api-versionstring

Specify the desired API version, e.g. '1.0'. If not provided, the last available version is set.

x-appidstringrequired

This is the name of your application, e.g. "MyApp/1.0.0". It is used to identify your application.

x-appversionstringrequired

This is where the version number of your application is entered, e.g. "1.0.0".

x-runasstring

The User-Id (int or uuid) on whose behalf the request is executed. Requires scope 'Application.RunAs'.

X-SessionIdstring(uuid)

The id of a session in which the call will be executed.

curl -i -X GET \
  'https://developer.jtl-software.com/_mock/products/erpapi/1.1-cloud/openapi/extensions?pageNumber=0&pageSize=0' \
  -H 'X-SessionId: 497f6eca-6276-4993-bfeb-53cbbbba6f08' \
  -H 'api-version: string' \
  -H 'x-appid: string' \
  -H 'x-appversion: string' \
  -H 'x-runas: string'

Responses

The installed Extensions.

Bodyapplication/json
TotalItemsinteger(int32)required

Gets or sets the total number of items available in the data source.

PageNumberinteger(int32)required

Gets or sets the current page number in the paginated list.

PageSizeinteger(int32)required

Gets or sets the number of items per page in the paginated list.

ItemsArray of objects(JTL.Wawi.Rest.Contracts.Models.V1.Extensibility.Extension)required

Gets or sets the collection of items contained in the paged list.

Items[].​Idstring(uuid)(JTL.Wawi.Extensibility.Core.Contracts.Domain.Keys.ExtensionKey)required
Items[].​ExtensionIdstringrequired

The Unique Identifier of the Extension

Example: "MyFancyExtension"
Items[].​Versionstringrequired

The Version of Extension.

Example: "1.0.0"
Items[].​Createdstring(date-time)required

The Date of Creation the Extension in the Wawi

Example: "2023-02-01T12:45:00.0000000+00:00"
Items[].​LastChangedstring(date-time)required

The Date of the last changeof the Extension information

Example: "2023-02-01T12:45:00.0000000+00:00"
Items[].​ManifestHashstringrequired

The Hash of the Manifest Hexadeimcal Sha512

Example: "AC43AF3123152342"
Items[].​Statusinteger(int32)(JTL.Wawi.Rest.Contracts.Models.V1.Extensibility.ExtensionRegistrationStatus)required

0 = Disabled, 1 = Pending, 2 = Active

Enum012
TotalPagesinteger(int32)read-only

Gets the total number of pages based on the total number of items and the page size.

HasPreviousPagebooleanread-only

Gets a value indicating whether there is a previous page available in the paginated list.

HasNextPagebooleanread-only

Gets a value indicating whether there is a next page available.

NextPageNumberinteger(int32)read-only

Gets the number of the next page if there is one; otherwise, returns the total number of pages.

PreviousPageNumberinteger(int32)read-only

Gets the number of the previous page. If there is no previous page, it returns 1.

Response
application/json
{ "TotalItems": 0, "PageNumber": 0, "PageSize": 0, "Items": [ {} ], "TotalPages": 0, "HasPreviousPage": true, "HasNextPage": true, "NextPageNumber": 0, "PreviousPageNumber": 0 }

Create Extension

Request

Create a new Extension and Validate the Signature of the Manifest

Headers
api-versionstring

Specify the desired API version, e.g. '1.0'. If not provided, the last available version is set.

x-appidstringrequired

This is the name of your application, e.g. "MyApp/1.0.0". It is used to identify your application.

x-appversionstringrequired

This is where the version number of your application is entered, e.g. "1.0.0".

x-runasstring

The User-Id (int or uuid) on whose behalf the request is executed. Requires scope 'Application.RunAs'.

X-SessionIdstring(uuid)

The id of a session in which the call will be executed.

Bodyapplication/jsonrequired

The relevant Information of the Extension

ExtensionIdstringrequired

The Unique Identifier of the Extension

Example: "MyFancyExtension"
Versionstringrequired

The Version of Extension.

Example: "1.0.0"
ManifestHashstringrequired

The Hash of the Manifest Hexadeimcal Sha512

Example: "AC43AF3123152342"
curl -i -X POST \
  https://developer.jtl-software.com/_mock/products/erpapi/1.1-cloud/openapi/extensions \
  -H 'Content-Type: application/json' \
  -H 'X-SessionId: 497f6eca-6276-4993-bfeb-53cbbbba6f08' \
  -H 'api-version: string' \
  -H 'x-appid: string' \
  -H 'x-appversion: string' \
  -H 'x-runas: string' \
  -d '{
    "ExtensionId": "MyFancyExtension",
    "Version": "1.0.0",
    "ManifestHash": "AC43AF3123152342"
  }'

Responses

The new Created Extension

Bodyapplication/json
Idstring(uuid)(JTL.Wawi.Extensibility.Core.Contracts.Domain.Keys.ExtensionKey)required
ExtensionIdstringrequired

The Unique Identifier of the Extension

Example: "MyFancyExtension"
Versionstringrequired

The Version of Extension.

Example: "1.0.0"
Createdstring(date-time)required

The Date of Creation the Extension in the Wawi

Example: "2023-02-01T12:45:00.0000000+00:00"
LastChangedstring(date-time)required

The Date of the last changeof the Extension information

Example: "2023-02-01T12:45:00.0000000+00:00"
ManifestHashstringrequired

The Hash of the Manifest Hexadeimcal Sha512

Example: "AC43AF3123152342"
Statusinteger(int32)(JTL.Wawi.Rest.Contracts.Models.V1.Extensibility.ExtensionRegistrationStatus)required

0 = Disabled, 1 = Pending, 2 = Active

Enum012
Response
application/json
{ "Id": "38a5a5bb-dc30-49a2-b175-1de0d1488c43", "ExtensionId": "MyFancyExtension", "Version": "1.0.0", "Created": "2023-02-01T12:45:00.0000000+00:00", "LastChanged": "2023-02-01T12:45:00.0000000+00:00", "ManifestHash": "AC43AF3123152342", "Status": 0 }

Get Extension

Request

Returns the requested Extension

Path
extensionIdstringrequired
Headers
api-versionstring

Specify the desired API version, e.g. '1.0'. If not provided, the last available version is set.

x-appidstringrequired

This is the name of your application, e.g. "MyApp/1.0.0". It is used to identify your application.

x-appversionstringrequired

This is where the version number of your application is entered, e.g. "1.0.0".

x-runasstring

The User-Id (int or uuid) on whose behalf the request is executed. Requires scope 'Application.RunAs'.

X-SessionIdstring(uuid)

The id of a session in which the call will be executed.

curl -i -X GET \
  'https://developer.jtl-software.com/_mock/products/erpapi/1.1-cloud/openapi/extensions/{extensionId}' \
  -H 'X-SessionId: 497f6eca-6276-4993-bfeb-53cbbbba6f08' \
  -H 'api-version: string' \
  -H 'x-appid: string' \
  -H 'x-appversion: string' \
  -H 'x-runas: string'

Responses

The requested Extension

Bodyapplication/json
Idstring(uuid)(JTL.Wawi.Extensibility.Core.Contracts.Domain.Keys.ExtensionKey)required
ExtensionIdstringrequired

The Unique Identifier of the Extension

Example: "MyFancyExtension"
Versionstringrequired

The Version of Extension.

Example: "1.0.0"
Createdstring(date-time)required

The Date of Creation the Extension in the Wawi

Example: "2023-02-01T12:45:00.0000000+00:00"
LastChangedstring(date-time)required

The Date of the last changeof the Extension information

Example: "2023-02-01T12:45:00.0000000+00:00"
ManifestHashstringrequired

The Hash of the Manifest Hexadeimcal Sha512

Example: "AC43AF3123152342"
Statusinteger(int32)(JTL.Wawi.Rest.Contracts.Models.V1.Extensibility.ExtensionRegistrationStatus)required

0 = Disabled, 1 = Pending, 2 = Active

Enum012
Response
application/json
{ "Id": "38a5a5bb-dc30-49a2-b175-1de0d1488c43", "ExtensionId": "MyFancyExtension", "Version": "1.0.0", "Created": "2023-02-01T12:45:00.0000000+00:00", "LastChanged": "2023-02-01T12:45:00.0000000+00:00", "ManifestHash": "AC43AF3123152342", "Status": 0 }

Update Extension

Request

Updates an Existing Extension

Path
extensionIdstringrequired
Headers
api-versionstring

Specify the desired API version, e.g. '1.0'. If not provided, the last available version is set.

x-appidstringrequired

This is the name of your application, e.g. "MyApp/1.0.0". It is used to identify your application.

x-appversionstringrequired

This is where the version number of your application is entered, e.g. "1.0.0".

x-runasstring

The User-Id (int or uuid) on whose behalf the request is executed. Requires scope 'Application.RunAs'.

X-SessionIdstring(uuid)

The id of a session in which the call will be executed.

Bodyapplication/jsonrequired

The relevant Information of the Extension

Versionstring
Example: "1.0.0"
ManifestHashstring
Example: "AC43AF3123152342"
Statusinteger(int32)(JTL.Wawi.Rest.Contracts.Models.V1.Extensibility.ExtensionRegistrationStatus)

0 = Disabled, 1 = Pending, 2 = Active

Enum012
curl -i -X PATCH \
  'https://developer.jtl-software.com/_mock/products/erpapi/1.1-cloud/openapi/extensions/{extensionId}' \
  -H 'Content-Type: application/json' \
  -H 'X-SessionId: 497f6eca-6276-4993-bfeb-53cbbbba6f08' \
  -H 'api-version: string' \
  -H 'x-appid: string' \
  -H 'x-appversion: string' \
  -H 'x-runas: string' \
  -d '{
    "Version": "1.0.0",
    "ManifestHash": "AC43AF3123152342",
    "Status": 0
  }'

Responses

The changed Extension

Bodyapplication/json
Idstring(uuid)(JTL.Wawi.Extensibility.Core.Contracts.Domain.Keys.ExtensionKey)required
ExtensionIdstringrequired

The Unique Identifier of the Extension

Example: "MyFancyExtension"
Versionstringrequired

The Version of Extension.

Example: "1.0.0"
Createdstring(date-time)required

The Date of Creation the Extension in the Wawi

Example: "2023-02-01T12:45:00.0000000+00:00"
LastChangedstring(date-time)required

The Date of the last changeof the Extension information

Example: "2023-02-01T12:45:00.0000000+00:00"
ManifestHashstringrequired

The Hash of the Manifest Hexadeimcal Sha512

Example: "AC43AF3123152342"
Statusinteger(int32)(JTL.Wawi.Rest.Contracts.Models.V1.Extensibility.ExtensionRegistrationStatus)required

0 = Disabled, 1 = Pending, 2 = Active

Enum012
Response
application/json
{ "Id": "38a5a5bb-dc30-49a2-b175-1de0d1488c43", "ExtensionId": "MyFancyExtension", "Version": "1.0.0", "Created": "2023-02-01T12:45:00.0000000+00:00", "LastChanged": "2023-02-01T12:45:00.0000000+00:00", "ManifestHash": "AC43AF3123152342", "Status": 0 }

Delete Extension

Request

DELETE an existing Extension

Path
extensionIdstringrequired
Headers
api-versionstring

Specify the desired API version, e.g. '1.0'. If not provided, the last available version is set.

x-appidstringrequired

This is the name of your application, e.g. "MyApp/1.0.0". It is used to identify your application.

x-appversionstringrequired

This is where the version number of your application is entered, e.g. "1.0.0".

x-runasstring

The User-Id (int or uuid) on whose behalf the request is executed. Requires scope 'Application.RunAs'.

X-SessionIdstring(uuid)

The id of a session in which the call will be executed.

curl -i -X DELETE \
  'https://developer.jtl-software.com/_mock/products/erpapi/1.1-cloud/openapi/extensions/{extensionId}' \
  -H 'X-SessionId: 497f6eca-6276-4993-bfeb-53cbbbba6f08' \
  -H 'api-version: string' \
  -H 'x-appid: string' \
  -H 'x-appversion: string' \
  -H 'x-runas: string'

Responses

The Extension is deleted

Bodyapplication/json
Response
application/json
null

Put Extension Manifest

Request

Push the Extension Manifest

Path
extensionIdstringrequired
Headers
api-versionstring

Specify the desired API version, e.g. '1.0'. If not provided, the last available version is set.

x-appidstringrequired

This is the name of your application, e.g. "MyApp/1.0.0". It is used to identify your application.

x-appversionstringrequired

This is where the version number of your application is entered, e.g. "1.0.0".

x-runasstring

The User-Id (int or uuid) on whose behalf the request is executed. Requires scope 'Application.RunAs'.

X-SessionIdstring(uuid)

The id of a session in which the call will be executed.

Bodyapplication/jsonrequired

The Manifest of the Extension

Manifeststring(byte)required

The Data of the Extension Manifest

Signaturestring(byte)required

The Signature of the Manifest

curl -i -X PUT \
  'https://developer.jtl-software.com/_mock/products/erpapi/1.1-cloud/openapi/extensions/{extensionId}/manifest' \
  -H 'Content-Type: application/json' \
  -H 'X-SessionId: 497f6eca-6276-4993-bfeb-53cbbbba6f08' \
  -H 'api-version: string' \
  -H 'x-appid: string' \
  -H 'x-appversion: string' \
  -H 'x-runas: string' \
  -d '{
    "Manifest": "string",
    "Signature": "string"
  }'

Responses

The changed Extension

Bodyapplication/json
Response
application/json
null

shipping

Development

deliverynote

Planned

Operations

customer

Query all customers
Operations

customerGroup

Query all customer groups
Operations

customerCategory

Query all customer categories
Operations

creditnote

Execute the printing of a CreditNote
Operations

company

Query all companies
Operations

colorcodes

Query all color codes for sales orders
Operations

category

Query all categories
Operations

appRegistration

Send a registration request for an (external) application
Operations

login

Sends a request to log in the user / dynamically assign the WAWI user. Only use this request if your API uses SSL.
Operations

logout

Sends a request to log out the user
Operations

accountingData

Planned

Operations