curl --request POST \
--url https://api.jtl-cloud.com/erp/authentication/authentication/foreign \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-challengecode: <x-challengecode>' \
--header 'x-tenant-id: <x-tenant-id>' \
--data '
{
"AppId": "<string>",
"DisplayName": "<string>",
"Description": "<string>",
"Version": "<string>",
"ProviderName": "<string>",
"ProviderWebsite": "<string>",
"MandatoryApiScopes": [
"<string>"
],
"AppIcon": "aSDinaTvuI8gbWludGxpZnk=",
"LocalizedDisplayNames": [
{
"LanguageIso": "<string>",
"Name": "<string>"
}
],
"LocalizedDescriptions": [
{
"LanguageIso": "<string>",
"Name": "<string>"
}
],
"OptionalApiScopes": [
"<string>"
],
"Signature": "aSDinaTvuI8gbWludGxpZnk=",
"SignatureData": "2023-11-07T05:31:56Z"
}
'import requests
url = "https://api.jtl-cloud.com/erp/authentication/authentication/foreign"
payload = {
"AppId": "<string>",
"DisplayName": "<string>",
"Description": "<string>",
"Version": "<string>",
"ProviderName": "<string>",
"ProviderWebsite": "<string>",
"MandatoryApiScopes": ["<string>"],
"AppIcon": "aSDinaTvuI8gbWludGxpZnk=",
"LocalizedDisplayNames": [
{
"LanguageIso": "<string>",
"Name": "<string>"
}
],
"LocalizedDescriptions": [
{
"LanguageIso": "<string>",
"Name": "<string>"
}
],
"OptionalApiScopes": ["<string>"],
"Signature": "aSDinaTvuI8gbWludGxpZnk=",
"SignatureData": "2023-11-07T05:31:56Z"
}
headers = {
"x-challengecode": "<x-challengecode>",
"x-tenant-id": "<x-tenant-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-challengecode': '<x-challengecode>',
'x-tenant-id': '<x-tenant-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
AppId: '<string>',
DisplayName: '<string>',
Description: '<string>',
Version: '<string>',
ProviderName: '<string>',
ProviderWebsite: '<string>',
MandatoryApiScopes: ['<string>'],
AppIcon: 'aSDinaTvuI8gbWludGxpZnk=',
LocalizedDisplayNames: [{LanguageIso: '<string>', Name: '<string>'}],
LocalizedDescriptions: [{LanguageIso: '<string>', Name: '<string>'}],
OptionalApiScopes: ['<string>'],
Signature: 'aSDinaTvuI8gbWludGxpZnk=',
SignatureData: '2023-11-07T05:31:56Z'
})
};
fetch('https://api.jtl-cloud.com/erp/authentication/authentication/foreign', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.jtl-cloud.com/erp/authentication/authentication/foreign",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'AppId' => '<string>',
'DisplayName' => '<string>',
'Description' => '<string>',
'Version' => '<string>',
'ProviderName' => '<string>',
'ProviderWebsite' => '<string>',
'MandatoryApiScopes' => [
'<string>'
],
'AppIcon' => 'aSDinaTvuI8gbWludGxpZnk=',
'LocalizedDisplayNames' => [
[
'LanguageIso' => '<string>',
'Name' => '<string>'
]
],
'LocalizedDescriptions' => [
[
'LanguageIso' => '<string>',
'Name' => '<string>'
]
],
'OptionalApiScopes' => [
'<string>'
],
'Signature' => 'aSDinaTvuI8gbWludGxpZnk=',
'SignatureData' => '2023-11-07T05:31:56Z'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"x-challengecode: <x-challengecode>",
"x-tenant-id: <x-tenant-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.jtl-cloud.com/erp/authentication/authentication/foreign"
payload := strings.NewReader("{\n \"AppId\": \"<string>\",\n \"DisplayName\": \"<string>\",\n \"Description\": \"<string>\",\n \"Version\": \"<string>\",\n \"ProviderName\": \"<string>\",\n \"ProviderWebsite\": \"<string>\",\n \"MandatoryApiScopes\": [\n \"<string>\"\n ],\n \"AppIcon\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"LocalizedDisplayNames\": [\n {\n \"LanguageIso\": \"<string>\",\n \"Name\": \"<string>\"\n }\n ],\n \"LocalizedDescriptions\": [\n {\n \"LanguageIso\": \"<string>\",\n \"Name\": \"<string>\"\n }\n ],\n \"OptionalApiScopes\": [\n \"<string>\"\n ],\n \"Signature\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"SignatureData\": \"2023-11-07T05:31:56Z\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-challengecode", "<x-challengecode>")
req.Header.Add("x-tenant-id", "<x-tenant-id>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.jtl-cloud.com/erp/authentication/authentication/foreign")
.header("x-challengecode", "<x-challengecode>")
.header("x-tenant-id", "<x-tenant-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"AppId\": \"<string>\",\n \"DisplayName\": \"<string>\",\n \"Description\": \"<string>\",\n \"Version\": \"<string>\",\n \"ProviderName\": \"<string>\",\n \"ProviderWebsite\": \"<string>\",\n \"MandatoryApiScopes\": [\n \"<string>\"\n ],\n \"AppIcon\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"LocalizedDisplayNames\": [\n {\n \"LanguageIso\": \"<string>\",\n \"Name\": \"<string>\"\n }\n ],\n \"LocalizedDescriptions\": [\n {\n \"LanguageIso\": \"<string>\",\n \"Name\": \"<string>\"\n }\n ],\n \"OptionalApiScopes\": [\n \"<string>\"\n ],\n \"Signature\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"SignatureData\": \"2023-11-07T05:31:56Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.jtl-cloud.com/erp/authentication/authentication/foreign")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-challengecode"] = '<x-challengecode>'
request["x-tenant-id"] = '<x-tenant-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"AppId\": \"<string>\",\n \"DisplayName\": \"<string>\",\n \"Description\": \"<string>\",\n \"Version\": \"<string>\",\n \"ProviderName\": \"<string>\",\n \"ProviderWebsite\": \"<string>\",\n \"MandatoryApiScopes\": [\n \"<string>\"\n ],\n \"AppIcon\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"LocalizedDisplayNames\": [\n {\n \"LanguageIso\": \"<string>\",\n \"Name\": \"<string>\"\n }\n ],\n \"LocalizedDescriptions\": [\n {\n \"LanguageIso\": \"<string>\",\n \"Name\": \"<string>\"\n }\n ],\n \"OptionalApiScopes\": [\n \"<string>\"\n ],\n \"Signature\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"SignatureData\": \"2023-11-07T05:31:56Z\"\n}"
response = http.request(request)
puts response.read_body{
"RequestStatusInfo": {
"AppId": "<string>",
"RegistrationRequestId": "<string>"
},
"Token": {
"ApiKey": "<string>"
},
"GrantedScopes": [
"<string>"
]
}Register Foreign App (deprecated)
DEPRECATED seit Wawi 2.2.0: No-Op. Seit Wawi 2.1.0 registriert sich die Wawi selbst per JWT.
curl --request POST \
--url https://api.jtl-cloud.com/erp/authentication/authentication/foreign \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-challengecode: <x-challengecode>' \
--header 'x-tenant-id: <x-tenant-id>' \
--data '
{
"AppId": "<string>",
"DisplayName": "<string>",
"Description": "<string>",
"Version": "<string>",
"ProviderName": "<string>",
"ProviderWebsite": "<string>",
"MandatoryApiScopes": [
"<string>"
],
"AppIcon": "aSDinaTvuI8gbWludGxpZnk=",
"LocalizedDisplayNames": [
{
"LanguageIso": "<string>",
"Name": "<string>"
}
],
"LocalizedDescriptions": [
{
"LanguageIso": "<string>",
"Name": "<string>"
}
],
"OptionalApiScopes": [
"<string>"
],
"Signature": "aSDinaTvuI8gbWludGxpZnk=",
"SignatureData": "2023-11-07T05:31:56Z"
}
'import requests
url = "https://api.jtl-cloud.com/erp/authentication/authentication/foreign"
payload = {
"AppId": "<string>",
"DisplayName": "<string>",
"Description": "<string>",
"Version": "<string>",
"ProviderName": "<string>",
"ProviderWebsite": "<string>",
"MandatoryApiScopes": ["<string>"],
"AppIcon": "aSDinaTvuI8gbWludGxpZnk=",
"LocalizedDisplayNames": [
{
"LanguageIso": "<string>",
"Name": "<string>"
}
],
"LocalizedDescriptions": [
{
"LanguageIso": "<string>",
"Name": "<string>"
}
],
"OptionalApiScopes": ["<string>"],
"Signature": "aSDinaTvuI8gbWludGxpZnk=",
"SignatureData": "2023-11-07T05:31:56Z"
}
headers = {
"x-challengecode": "<x-challengecode>",
"x-tenant-id": "<x-tenant-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-challengecode': '<x-challengecode>',
'x-tenant-id': '<x-tenant-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
AppId: '<string>',
DisplayName: '<string>',
Description: '<string>',
Version: '<string>',
ProviderName: '<string>',
ProviderWebsite: '<string>',
MandatoryApiScopes: ['<string>'],
AppIcon: 'aSDinaTvuI8gbWludGxpZnk=',
LocalizedDisplayNames: [{LanguageIso: '<string>', Name: '<string>'}],
LocalizedDescriptions: [{LanguageIso: '<string>', Name: '<string>'}],
OptionalApiScopes: ['<string>'],
Signature: 'aSDinaTvuI8gbWludGxpZnk=',
SignatureData: '2023-11-07T05:31:56Z'
})
};
fetch('https://api.jtl-cloud.com/erp/authentication/authentication/foreign', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.jtl-cloud.com/erp/authentication/authentication/foreign",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'AppId' => '<string>',
'DisplayName' => '<string>',
'Description' => '<string>',
'Version' => '<string>',
'ProviderName' => '<string>',
'ProviderWebsite' => '<string>',
'MandatoryApiScopes' => [
'<string>'
],
'AppIcon' => 'aSDinaTvuI8gbWludGxpZnk=',
'LocalizedDisplayNames' => [
[
'LanguageIso' => '<string>',
'Name' => '<string>'
]
],
'LocalizedDescriptions' => [
[
'LanguageIso' => '<string>',
'Name' => '<string>'
]
],
'OptionalApiScopes' => [
'<string>'
],
'Signature' => 'aSDinaTvuI8gbWludGxpZnk=',
'SignatureData' => '2023-11-07T05:31:56Z'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"x-challengecode: <x-challengecode>",
"x-tenant-id: <x-tenant-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.jtl-cloud.com/erp/authentication/authentication/foreign"
payload := strings.NewReader("{\n \"AppId\": \"<string>\",\n \"DisplayName\": \"<string>\",\n \"Description\": \"<string>\",\n \"Version\": \"<string>\",\n \"ProviderName\": \"<string>\",\n \"ProviderWebsite\": \"<string>\",\n \"MandatoryApiScopes\": [\n \"<string>\"\n ],\n \"AppIcon\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"LocalizedDisplayNames\": [\n {\n \"LanguageIso\": \"<string>\",\n \"Name\": \"<string>\"\n }\n ],\n \"LocalizedDescriptions\": [\n {\n \"LanguageIso\": \"<string>\",\n \"Name\": \"<string>\"\n }\n ],\n \"OptionalApiScopes\": [\n \"<string>\"\n ],\n \"Signature\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"SignatureData\": \"2023-11-07T05:31:56Z\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-challengecode", "<x-challengecode>")
req.Header.Add("x-tenant-id", "<x-tenant-id>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.jtl-cloud.com/erp/authentication/authentication/foreign")
.header("x-challengecode", "<x-challengecode>")
.header("x-tenant-id", "<x-tenant-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"AppId\": \"<string>\",\n \"DisplayName\": \"<string>\",\n \"Description\": \"<string>\",\n \"Version\": \"<string>\",\n \"ProviderName\": \"<string>\",\n \"ProviderWebsite\": \"<string>\",\n \"MandatoryApiScopes\": [\n \"<string>\"\n ],\n \"AppIcon\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"LocalizedDisplayNames\": [\n {\n \"LanguageIso\": \"<string>\",\n \"Name\": \"<string>\"\n }\n ],\n \"LocalizedDescriptions\": [\n {\n \"LanguageIso\": \"<string>\",\n \"Name\": \"<string>\"\n }\n ],\n \"OptionalApiScopes\": [\n \"<string>\"\n ],\n \"Signature\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"SignatureData\": \"2023-11-07T05:31:56Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.jtl-cloud.com/erp/authentication/authentication/foreign")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-challengecode"] = '<x-challengecode>'
request["x-tenant-id"] = '<x-tenant-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"AppId\": \"<string>\",\n \"DisplayName\": \"<string>\",\n \"Description\": \"<string>\",\n \"Version\": \"<string>\",\n \"ProviderName\": \"<string>\",\n \"ProviderWebsite\": \"<string>\",\n \"MandatoryApiScopes\": [\n \"<string>\"\n ],\n \"AppIcon\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"LocalizedDisplayNames\": [\n {\n \"LanguageIso\": \"<string>\",\n \"Name\": \"<string>\"\n }\n ],\n \"LocalizedDescriptions\": [\n {\n \"LanguageIso\": \"<string>\",\n \"Name\": \"<string>\"\n }\n ],\n \"OptionalApiScopes\": [\n \"<string>\"\n ],\n \"Signature\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"SignatureData\": \"2023-11-07T05:31:56Z\"\n}"
response = http.request(request)
puts response.read_body{
"RequestStatusInfo": {
"AppId": "<string>",
"RegistrationRequestId": "<string>"
},
"Token": {
"ApiKey": "<string>"
},
"GrantedScopes": [
"<string>"
]
}Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
Headers
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.
The tenant ID for the target ERP instance.
Body
Wird angenommen, aber nicht verarbeitet.
Model Class: CreateAppRegistrationRequest
Unique identifier of the application
Default display name of the application
Default description of the application
Version of the application to be registered
Name of the application's provider
Website of the application's provider
Mandatory required API scopes for the application to work
Base64 encoded data of an image.
Localized display names of the application
Show child attributes
Show child attributes
Localized descriptions of the application
Show child attributes
Show child attributes
Optional (recommended) API scopes for the application
multiple instances of the application possible
0, 1, 2, 3 The Signature of the App, it combines AppId.SignatureData like myApp/v1.2025-08-03T25:48:00 in UTC Time
The Data as DateTimeOffset must be in a range from 10 Minutes equals, and is base for the Signature and must be in UTC Time
Response
Neutral success response — die Anfrage wird angenommen, aber nicht ausgeführt.
Model Class: RegistrationInformation
Status of the registration process (including the unique identifiers for application and registration request)
Show child attributes
Show child attributes
Generated token for the application to access the API
Show child attributes
Show child attributes
API scopes (both mandatory and optional) granted to the application
Was this page helpful?