curl --request POST \
--url https://api.jtl-cloud.com/erp/v2/sales-channels/shop/accounts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-tenant-id: <x-tenant-id>' \
--data '
{
"name": "<string>",
"url": "<string>",
"username": "<string>",
"password": "<string>",
"apiKey": "<string>",
"companyId": "b45f6432-2462-4c6f-b00f-1d9d01000000",
"rootCategoryId": "b45f6432-2462-4c6f-b00f-1d9d01000000",
"isActive": true,
"orderAsOffer": true,
"useShopOrderNumber": true
}
'import requests
url = "https://api.jtl-cloud.com/erp/v2/sales-channels/shop/accounts"
payload = {
"name": "<string>",
"url": "<string>",
"username": "<string>",
"password": "<string>",
"apiKey": "<string>",
"companyId": "b45f6432-2462-4c6f-b00f-1d9d01000000",
"rootCategoryId": "b45f6432-2462-4c6f-b00f-1d9d01000000",
"isActive": True,
"orderAsOffer": True,
"useShopOrderNumber": True
}
headers = {
"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-tenant-id': '<x-tenant-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: '<string>',
url: '<string>',
username: '<string>',
password: '<string>',
apiKey: '<string>',
companyId: 'b45f6432-2462-4c6f-b00f-1d9d01000000',
rootCategoryId: 'b45f6432-2462-4c6f-b00f-1d9d01000000',
isActive: true,
orderAsOffer: true,
useShopOrderNumber: true
})
};
fetch('https://api.jtl-cloud.com/erp/v2/sales-channels/shop/accounts', 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/v2/sales-channels/shop/accounts",
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([
'name' => '<string>',
'url' => '<string>',
'username' => '<string>',
'password' => '<string>',
'apiKey' => '<string>',
'companyId' => 'b45f6432-2462-4c6f-b00f-1d9d01000000',
'rootCategoryId' => 'b45f6432-2462-4c6f-b00f-1d9d01000000',
'isActive' => true,
'orderAsOffer' => true,
'useShopOrderNumber' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"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/v2/sales-channels/shop/accounts"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"url\": \"<string>\",\n \"username\": \"<string>\",\n \"password\": \"<string>\",\n \"apiKey\": \"<string>\",\n \"companyId\": \"b45f6432-2462-4c6f-b00f-1d9d01000000\",\n \"rootCategoryId\": \"b45f6432-2462-4c6f-b00f-1d9d01000000\",\n \"isActive\": true,\n \"orderAsOffer\": true,\n \"useShopOrderNumber\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
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/v2/sales-channels/shop/accounts")
.header("x-tenant-id", "<x-tenant-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"url\": \"<string>\",\n \"username\": \"<string>\",\n \"password\": \"<string>\",\n \"apiKey\": \"<string>\",\n \"companyId\": \"b45f6432-2462-4c6f-b00f-1d9d01000000\",\n \"rootCategoryId\": \"b45f6432-2462-4c6f-b00f-1d9d01000000\",\n \"isActive\": true,\n \"orderAsOffer\": true,\n \"useShopOrderNumber\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.jtl-cloud.com/erp/v2/sales-channels/shop/accounts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-tenant-id"] = '<x-tenant-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"url\": \"<string>\",\n \"username\": \"<string>\",\n \"password\": \"<string>\",\n \"apiKey\": \"<string>\",\n \"companyId\": \"b45f6432-2462-4c6f-b00f-1d9d01000000\",\n \"rootCategoryId\": \"b45f6432-2462-4c6f-b00f-1d9d01000000\",\n \"isActive\": true,\n \"orderAsOffer\": true,\n \"useShopOrderNumber\": true\n}"
response = http.request(request)
puts response.read_body{
"salesChannelId": "<string>"
}{
"type": "https://www.rfc-editor.org/rfc/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"instance": "/api/route",
"traceId": "0HMPNHL0JHL76:00000001",
"detail": "<string>",
"errors": [
{
"name": "Error or field name",
"reason": "Error reason",
"code": "<string>",
"severity": "<string>"
}
]
}{
"type": "https://www.rfc-editor.org/rfc/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"instance": "/api/route",
"traceId": "0HMPNHL0JHL76:00000001",
"detail": "<string>",
"errors": [
{
"name": "Error or field name",
"reason": "Error reason",
"code": "<string>",
"severity": "<string>"
}
]
}{
"type": "https://www.rfc-editor.org/rfc/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"instance": "/api/route",
"traceId": "0HMPNHL0JHL76:00000001",
"detail": "<string>",
"errors": [
{
"name": "Error or field name",
"reason": "Error reason",
"code": "<string>",
"severity": "<string>"
}
]
}{
"type": "https://www.rfc-editor.org/rfc/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"instance": "/api/route",
"traceId": "0HMPNHL0JHL76:00000001",
"detail": "<string>",
"errors": [
{
"name": "Error or field name",
"reason": "Error reason",
"code": "<string>",
"severity": "<string>"
}
]
}{
"type": "https://www.rfc-editor.org/rfc/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"instance": "/api/route",
"traceId": "0HMPNHL0JHL76:00000001",
"detail": "<string>",
"errors": [
{
"name": "Error or field name",
"reason": "Error reason",
"code": "<string>",
"severity": "<string>"
}
]
}{
"type": "https://www.rfc-editor.org/rfc/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"instance": "/api/route",
"traceId": "0HMPNHL0JHL76:00000001",
"detail": "<string>",
"errors": [
{
"name": "Error or field name",
"reason": "Error reason",
"code": "<string>",
"severity": "<string>"
}
]
}Create Shop
Creates a new JTL-Wawi-managed online shop account. The request is validated first; then a live connection and credentials test is run against the shop. If either fails, no shop is created. The customer group, currency and language with the lowest ID are assigned as defaults; they can be changed afterwards via “PUT /v2/sales-channels//shop/customer-groups” or “SaveShopCustomerGroups”, “PUT /v2/sales-channels//shop/currencies” or “SaveShopCurrencies”, and the corresponding language endpoint. Running the connection test updates the stored connection state, also when simulating. When “simulate” is true, only validation and the connection test run; no shop is created and no sales channel id is returned (“salesChannelId” is omitted in the REST response and null in GraphQL). The sales channel id is assigned by the server and cannot be supplied.
curl --request POST \
--url https://api.jtl-cloud.com/erp/v2/sales-channels/shop/accounts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-tenant-id: <x-tenant-id>' \
--data '
{
"name": "<string>",
"url": "<string>",
"username": "<string>",
"password": "<string>",
"apiKey": "<string>",
"companyId": "b45f6432-2462-4c6f-b00f-1d9d01000000",
"rootCategoryId": "b45f6432-2462-4c6f-b00f-1d9d01000000",
"isActive": true,
"orderAsOffer": true,
"useShopOrderNumber": true
}
'import requests
url = "https://api.jtl-cloud.com/erp/v2/sales-channels/shop/accounts"
payload = {
"name": "<string>",
"url": "<string>",
"username": "<string>",
"password": "<string>",
"apiKey": "<string>",
"companyId": "b45f6432-2462-4c6f-b00f-1d9d01000000",
"rootCategoryId": "b45f6432-2462-4c6f-b00f-1d9d01000000",
"isActive": True,
"orderAsOffer": True,
"useShopOrderNumber": True
}
headers = {
"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-tenant-id': '<x-tenant-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: '<string>',
url: '<string>',
username: '<string>',
password: '<string>',
apiKey: '<string>',
companyId: 'b45f6432-2462-4c6f-b00f-1d9d01000000',
rootCategoryId: 'b45f6432-2462-4c6f-b00f-1d9d01000000',
isActive: true,
orderAsOffer: true,
useShopOrderNumber: true
})
};
fetch('https://api.jtl-cloud.com/erp/v2/sales-channels/shop/accounts', 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/v2/sales-channels/shop/accounts",
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([
'name' => '<string>',
'url' => '<string>',
'username' => '<string>',
'password' => '<string>',
'apiKey' => '<string>',
'companyId' => 'b45f6432-2462-4c6f-b00f-1d9d01000000',
'rootCategoryId' => 'b45f6432-2462-4c6f-b00f-1d9d01000000',
'isActive' => true,
'orderAsOffer' => true,
'useShopOrderNumber' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"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/v2/sales-channels/shop/accounts"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"url\": \"<string>\",\n \"username\": \"<string>\",\n \"password\": \"<string>\",\n \"apiKey\": \"<string>\",\n \"companyId\": \"b45f6432-2462-4c6f-b00f-1d9d01000000\",\n \"rootCategoryId\": \"b45f6432-2462-4c6f-b00f-1d9d01000000\",\n \"isActive\": true,\n \"orderAsOffer\": true,\n \"useShopOrderNumber\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
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/v2/sales-channels/shop/accounts")
.header("x-tenant-id", "<x-tenant-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"url\": \"<string>\",\n \"username\": \"<string>\",\n \"password\": \"<string>\",\n \"apiKey\": \"<string>\",\n \"companyId\": \"b45f6432-2462-4c6f-b00f-1d9d01000000\",\n \"rootCategoryId\": \"b45f6432-2462-4c6f-b00f-1d9d01000000\",\n \"isActive\": true,\n \"orderAsOffer\": true,\n \"useShopOrderNumber\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.jtl-cloud.com/erp/v2/sales-channels/shop/accounts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-tenant-id"] = '<x-tenant-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"url\": \"<string>\",\n \"username\": \"<string>\",\n \"password\": \"<string>\",\n \"apiKey\": \"<string>\",\n \"companyId\": \"b45f6432-2462-4c6f-b00f-1d9d01000000\",\n \"rootCategoryId\": \"b45f6432-2462-4c6f-b00f-1d9d01000000\",\n \"isActive\": true,\n \"orderAsOffer\": true,\n \"useShopOrderNumber\": true\n}"
response = http.request(request)
puts response.read_body{
"salesChannelId": "<string>"
}{
"type": "https://www.rfc-editor.org/rfc/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"instance": "/api/route",
"traceId": "0HMPNHL0JHL76:00000001",
"detail": "<string>",
"errors": [
{
"name": "Error or field name",
"reason": "Error reason",
"code": "<string>",
"severity": "<string>"
}
]
}{
"type": "https://www.rfc-editor.org/rfc/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"instance": "/api/route",
"traceId": "0HMPNHL0JHL76:00000001",
"detail": "<string>",
"errors": [
{
"name": "Error or field name",
"reason": "Error reason",
"code": "<string>",
"severity": "<string>"
}
]
}{
"type": "https://www.rfc-editor.org/rfc/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"instance": "/api/route",
"traceId": "0HMPNHL0JHL76:00000001",
"detail": "<string>",
"errors": [
{
"name": "Error or field name",
"reason": "Error reason",
"code": "<string>",
"severity": "<string>"
}
]
}{
"type": "https://www.rfc-editor.org/rfc/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"instance": "/api/route",
"traceId": "0HMPNHL0JHL76:00000001",
"detail": "<string>",
"errors": [
{
"name": "Error or field name",
"reason": "Error reason",
"code": "<string>",
"severity": "<string>"
}
]
}{
"type": "https://www.rfc-editor.org/rfc/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"instance": "/api/route",
"traceId": "0HMPNHL0JHL76:00000001",
"detail": "<string>",
"errors": [
{
"name": "Error or field name",
"reason": "Error reason",
"code": "<string>",
"severity": "<string>"
}
]
}{
"type": "https://www.rfc-editor.org/rfc/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"instance": "/api/route",
"traceId": "0HMPNHL0JHL76:00000001",
"detail": "<string>",
"errors": [
{
"name": "Error or field name",
"reason": "Error reason",
"code": "<string>",
"severity": "<string>"
}
]
}Authorizations
Scopes
Headers
Query Parameters
Body
Request model for CreateShop command endpoint. Route parameters bind from the route, query parameters from the query string, everything else from the body.
Response
The shop account was created; "salesChannelId" identifies it and can be used with "GET /v2/sales-channels/{salesChannelId}/shop/accounts" or "GetShopAccountById". When "simulate" is true, validation and the connection test succeeded and no shop was created; "salesChannelId" is omitted in the REST response and null in GraphQL. The status is 201 in both cases.
Result of creating a JTL-Wawi-managed online shop account.
Was this page helpful?