curl --request POST \
--url https://api.jtl-cloud.com/erp/v2/sales-channels/connector/accounts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-tenant-id: <x-tenant-id>' \
--data '
{
"url": "<string>",
"apiToken": "<string>",
"name": "<string>",
"companyId": "b45f6432-2462-4c6f-b00f-1d9d01000000",
"isActive": true,
"isLocked": true,
"rootCategoryId": "b45f6432-2462-4c6f-b00f-1d9d01000000",
"useShopOrderNumber": true,
"canImport": true,
"shouldImportItemsAndCategories": true,
"shouldImportOrdersAndCustomers": true,
"shouldImportImages": true,
"canUpload": true,
"shouldUploadItemComplete": true,
"shouldUploadItemPriceRestricted": true,
"shouldUploadItemStockRestricted": true,
"shouldUploadCustomers": true,
"shouldUploadImages": true,
"shouldRefreshExistingItems": true,
"shouldRefreshCustomers": true,
"shouldDeleteImagesOnImport": true,
"shouldWawiCalculateTaxRate": true,
"shouldWawiCalculateTaxRateForShipping": true,
"shippingCountryIso": "<string>",
"entityCount": 123,
"pullCount": 123,
"imagesCount": 123,
"maximumTransferRate": 123,
"quickSyncCount": 123
}
'import requests
url = "https://api.jtl-cloud.com/erp/v2/sales-channels/connector/accounts"
payload = {
"url": "<string>",
"apiToken": "<string>",
"name": "<string>",
"companyId": "b45f6432-2462-4c6f-b00f-1d9d01000000",
"isActive": True,
"isLocked": True,
"rootCategoryId": "b45f6432-2462-4c6f-b00f-1d9d01000000",
"useShopOrderNumber": True,
"canImport": True,
"shouldImportItemsAndCategories": True,
"shouldImportOrdersAndCustomers": True,
"shouldImportImages": True,
"canUpload": True,
"shouldUploadItemComplete": True,
"shouldUploadItemPriceRestricted": True,
"shouldUploadItemStockRestricted": True,
"shouldUploadCustomers": True,
"shouldUploadImages": True,
"shouldRefreshExistingItems": True,
"shouldRefreshCustomers": True,
"shouldDeleteImagesOnImport": True,
"shouldWawiCalculateTaxRate": True,
"shouldWawiCalculateTaxRateForShipping": True,
"shippingCountryIso": "<string>",
"entityCount": 123,
"pullCount": 123,
"imagesCount": 123,
"maximumTransferRate": 123,
"quickSyncCount": 123
}
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({
url: '<string>',
apiToken: '<string>',
name: '<string>',
companyId: 'b45f6432-2462-4c6f-b00f-1d9d01000000',
isActive: true,
isLocked: true,
rootCategoryId: 'b45f6432-2462-4c6f-b00f-1d9d01000000',
useShopOrderNumber: true,
canImport: true,
shouldImportItemsAndCategories: true,
shouldImportOrdersAndCustomers: true,
shouldImportImages: true,
canUpload: true,
shouldUploadItemComplete: true,
shouldUploadItemPriceRestricted: true,
shouldUploadItemStockRestricted: true,
shouldUploadCustomers: true,
shouldUploadImages: true,
shouldRefreshExistingItems: true,
shouldRefreshCustomers: true,
shouldDeleteImagesOnImport: true,
shouldWawiCalculateTaxRate: true,
shouldWawiCalculateTaxRateForShipping: true,
shippingCountryIso: '<string>',
entityCount: 123,
pullCount: 123,
imagesCount: 123,
maximumTransferRate: 123,
quickSyncCount: 123
})
};
fetch('https://api.jtl-cloud.com/erp/v2/sales-channels/connector/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/connector/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([
'url' => '<string>',
'apiToken' => '<string>',
'name' => '<string>',
'companyId' => 'b45f6432-2462-4c6f-b00f-1d9d01000000',
'isActive' => true,
'isLocked' => true,
'rootCategoryId' => 'b45f6432-2462-4c6f-b00f-1d9d01000000',
'useShopOrderNumber' => true,
'canImport' => true,
'shouldImportItemsAndCategories' => true,
'shouldImportOrdersAndCustomers' => true,
'shouldImportImages' => true,
'canUpload' => true,
'shouldUploadItemComplete' => true,
'shouldUploadItemPriceRestricted' => true,
'shouldUploadItemStockRestricted' => true,
'shouldUploadCustomers' => true,
'shouldUploadImages' => true,
'shouldRefreshExistingItems' => true,
'shouldRefreshCustomers' => true,
'shouldDeleteImagesOnImport' => true,
'shouldWawiCalculateTaxRate' => true,
'shouldWawiCalculateTaxRateForShipping' => true,
'shippingCountryIso' => '<string>',
'entityCount' => 123,
'pullCount' => 123,
'imagesCount' => 123,
'maximumTransferRate' => 123,
'quickSyncCount' => 123
]),
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/connector/accounts"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"apiToken\": \"<string>\",\n \"name\": \"<string>\",\n \"companyId\": \"b45f6432-2462-4c6f-b00f-1d9d01000000\",\n \"isActive\": true,\n \"isLocked\": true,\n \"rootCategoryId\": \"b45f6432-2462-4c6f-b00f-1d9d01000000\",\n \"useShopOrderNumber\": true,\n \"canImport\": true,\n \"shouldImportItemsAndCategories\": true,\n \"shouldImportOrdersAndCustomers\": true,\n \"shouldImportImages\": true,\n \"canUpload\": true,\n \"shouldUploadItemComplete\": true,\n \"shouldUploadItemPriceRestricted\": true,\n \"shouldUploadItemStockRestricted\": true,\n \"shouldUploadCustomers\": true,\n \"shouldUploadImages\": true,\n \"shouldRefreshExistingItems\": true,\n \"shouldRefreshCustomers\": true,\n \"shouldDeleteImagesOnImport\": true,\n \"shouldWawiCalculateTaxRate\": true,\n \"shouldWawiCalculateTaxRateForShipping\": true,\n \"shippingCountryIso\": \"<string>\",\n \"entityCount\": 123,\n \"pullCount\": 123,\n \"imagesCount\": 123,\n \"maximumTransferRate\": 123,\n \"quickSyncCount\": 123\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/connector/accounts")
.header("x-tenant-id", "<x-tenant-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"apiToken\": \"<string>\",\n \"name\": \"<string>\",\n \"companyId\": \"b45f6432-2462-4c6f-b00f-1d9d01000000\",\n \"isActive\": true,\n \"isLocked\": true,\n \"rootCategoryId\": \"b45f6432-2462-4c6f-b00f-1d9d01000000\",\n \"useShopOrderNumber\": true,\n \"canImport\": true,\n \"shouldImportItemsAndCategories\": true,\n \"shouldImportOrdersAndCustomers\": true,\n \"shouldImportImages\": true,\n \"canUpload\": true,\n \"shouldUploadItemComplete\": true,\n \"shouldUploadItemPriceRestricted\": true,\n \"shouldUploadItemStockRestricted\": true,\n \"shouldUploadCustomers\": true,\n \"shouldUploadImages\": true,\n \"shouldRefreshExistingItems\": true,\n \"shouldRefreshCustomers\": true,\n \"shouldDeleteImagesOnImport\": true,\n \"shouldWawiCalculateTaxRate\": true,\n \"shouldWawiCalculateTaxRateForShipping\": true,\n \"shippingCountryIso\": \"<string>\",\n \"entityCount\": 123,\n \"pullCount\": 123,\n \"imagesCount\": 123,\n \"maximumTransferRate\": 123,\n \"quickSyncCount\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.jtl-cloud.com/erp/v2/sales-channels/connector/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 \"url\": \"<string>\",\n \"apiToken\": \"<string>\",\n \"name\": \"<string>\",\n \"companyId\": \"b45f6432-2462-4c6f-b00f-1d9d01000000\",\n \"isActive\": true,\n \"isLocked\": true,\n \"rootCategoryId\": \"b45f6432-2462-4c6f-b00f-1d9d01000000\",\n \"useShopOrderNumber\": true,\n \"canImport\": true,\n \"shouldImportItemsAndCategories\": true,\n \"shouldImportOrdersAndCustomers\": true,\n \"shouldImportImages\": true,\n \"canUpload\": true,\n \"shouldUploadItemComplete\": true,\n \"shouldUploadItemPriceRestricted\": true,\n \"shouldUploadItemStockRestricted\": true,\n \"shouldUploadCustomers\": true,\n \"shouldUploadImages\": true,\n \"shouldRefreshExistingItems\": true,\n \"shouldRefreshCustomers\": true,\n \"shouldDeleteImagesOnImport\": true,\n \"shouldWawiCalculateTaxRate\": true,\n \"shouldWawiCalculateTaxRateForShipping\": true,\n \"shippingCountryIso\": \"<string>\",\n \"entityCount\": 123,\n \"pullCount\": 123,\n \"imagesCount\": 123,\n \"maximumTransferRate\": 123,\n \"quickSyncCount\": 123\n}"
response = http.request(request)
puts response.read_body{
"isActive": true,
"isLocked": true,
"canImport": true,
"shouldImportItemsAndCategories": true,
"shouldImportOrdersAndCustomers": true,
"shouldImportImages": true,
"canUpload": true,
"shouldUploadItemComplete": true,
"shouldUploadItemPriceRestricted": true,
"shouldUploadItemStockRestricted": true,
"shouldUploadCustomers": true,
"shouldUploadImages": true,
"shouldRefreshExistingItems": true,
"shouldRefreshCustomers": true,
"shouldDeleteImagesOnImport": true,
"shouldWawiCalculateTaxRate": true,
"shouldWawiCalculateTaxRateForShipping": true,
"pullCount": 123,
"quickSyncCount": 123,
"sendOnlyAssignedManufacturers": true,
"useShopOrderNumber": true,
"languages": [
{
"iso": "<string>",
"isAssigned": true,
"isDefault": true,
"nameGerman": "<string>",
"nameEnglish": "<string>"
}
],
"currencies": [
{
"currencyCode": "<string>",
"codeSource": 0,
"isAssigned": true,
"isDefault": true,
"name": "<string>"
}
],
"features": [
{
"feature": 1,
"isEnabled": true
}
],
"taxRates": [
{
"rate": 123,
"taxRateId": "b45f6432-2462-4c6f-b00f-1d9d01000000"
}
],
"serverInfo": {
"isOldConnector": true,
"platformName": "<string>",
"platformVersion": "<string>",
"protocolVersion": "<string>",
"endpointVersion": "<string>"
},
"salesChannelId": "<string>",
"name": "<string>",
"url": "<string>",
"companyId": "b45f6432-2462-4c6f-b00f-1d9d01000000",
"maximumTransferRate": 123,
"imagesCount": 123,
"entityCount": 123,
"shippingCountryIso": "<string>",
"dummyCategoryId": "b45f6432-2462-4c6f-b00f-1d9d01000000",
"rootCategoryId": "b45f6432-2462-4c6f-b00f-1d9d01000000"
}{
"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 Connector
Creates a new JTL-Connector account. The sales channel id is assigned by JTL-Wawi and returned in the response as an opaque, tenant-local composite identifier (not a UUID); it cannot be set in the request. Before anything is saved, JTL-Wawi performs a live handshake with the connector endpoint and checks that every tax rate reported by the endpoint exists for the selected company. If the handshake or the tax rate check fails, no account is created. Languages, currencies, features, tax rates and server information in the response are always read live from the endpoint and cannot be set in the request. Set “Simulate” to true to run the same checks without creating the account.
curl --request POST \
--url https://api.jtl-cloud.com/erp/v2/sales-channels/connector/accounts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-tenant-id: <x-tenant-id>' \
--data '
{
"url": "<string>",
"apiToken": "<string>",
"name": "<string>",
"companyId": "b45f6432-2462-4c6f-b00f-1d9d01000000",
"isActive": true,
"isLocked": true,
"rootCategoryId": "b45f6432-2462-4c6f-b00f-1d9d01000000",
"useShopOrderNumber": true,
"canImport": true,
"shouldImportItemsAndCategories": true,
"shouldImportOrdersAndCustomers": true,
"shouldImportImages": true,
"canUpload": true,
"shouldUploadItemComplete": true,
"shouldUploadItemPriceRestricted": true,
"shouldUploadItemStockRestricted": true,
"shouldUploadCustomers": true,
"shouldUploadImages": true,
"shouldRefreshExistingItems": true,
"shouldRefreshCustomers": true,
"shouldDeleteImagesOnImport": true,
"shouldWawiCalculateTaxRate": true,
"shouldWawiCalculateTaxRateForShipping": true,
"shippingCountryIso": "<string>",
"entityCount": 123,
"pullCount": 123,
"imagesCount": 123,
"maximumTransferRate": 123,
"quickSyncCount": 123
}
'import requests
url = "https://api.jtl-cloud.com/erp/v2/sales-channels/connector/accounts"
payload = {
"url": "<string>",
"apiToken": "<string>",
"name": "<string>",
"companyId": "b45f6432-2462-4c6f-b00f-1d9d01000000",
"isActive": True,
"isLocked": True,
"rootCategoryId": "b45f6432-2462-4c6f-b00f-1d9d01000000",
"useShopOrderNumber": True,
"canImport": True,
"shouldImportItemsAndCategories": True,
"shouldImportOrdersAndCustomers": True,
"shouldImportImages": True,
"canUpload": True,
"shouldUploadItemComplete": True,
"shouldUploadItemPriceRestricted": True,
"shouldUploadItemStockRestricted": True,
"shouldUploadCustomers": True,
"shouldUploadImages": True,
"shouldRefreshExistingItems": True,
"shouldRefreshCustomers": True,
"shouldDeleteImagesOnImport": True,
"shouldWawiCalculateTaxRate": True,
"shouldWawiCalculateTaxRateForShipping": True,
"shippingCountryIso": "<string>",
"entityCount": 123,
"pullCount": 123,
"imagesCount": 123,
"maximumTransferRate": 123,
"quickSyncCount": 123
}
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({
url: '<string>',
apiToken: '<string>',
name: '<string>',
companyId: 'b45f6432-2462-4c6f-b00f-1d9d01000000',
isActive: true,
isLocked: true,
rootCategoryId: 'b45f6432-2462-4c6f-b00f-1d9d01000000',
useShopOrderNumber: true,
canImport: true,
shouldImportItemsAndCategories: true,
shouldImportOrdersAndCustomers: true,
shouldImportImages: true,
canUpload: true,
shouldUploadItemComplete: true,
shouldUploadItemPriceRestricted: true,
shouldUploadItemStockRestricted: true,
shouldUploadCustomers: true,
shouldUploadImages: true,
shouldRefreshExistingItems: true,
shouldRefreshCustomers: true,
shouldDeleteImagesOnImport: true,
shouldWawiCalculateTaxRate: true,
shouldWawiCalculateTaxRateForShipping: true,
shippingCountryIso: '<string>',
entityCount: 123,
pullCount: 123,
imagesCount: 123,
maximumTransferRate: 123,
quickSyncCount: 123
})
};
fetch('https://api.jtl-cloud.com/erp/v2/sales-channels/connector/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/connector/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([
'url' => '<string>',
'apiToken' => '<string>',
'name' => '<string>',
'companyId' => 'b45f6432-2462-4c6f-b00f-1d9d01000000',
'isActive' => true,
'isLocked' => true,
'rootCategoryId' => 'b45f6432-2462-4c6f-b00f-1d9d01000000',
'useShopOrderNumber' => true,
'canImport' => true,
'shouldImportItemsAndCategories' => true,
'shouldImportOrdersAndCustomers' => true,
'shouldImportImages' => true,
'canUpload' => true,
'shouldUploadItemComplete' => true,
'shouldUploadItemPriceRestricted' => true,
'shouldUploadItemStockRestricted' => true,
'shouldUploadCustomers' => true,
'shouldUploadImages' => true,
'shouldRefreshExistingItems' => true,
'shouldRefreshCustomers' => true,
'shouldDeleteImagesOnImport' => true,
'shouldWawiCalculateTaxRate' => true,
'shouldWawiCalculateTaxRateForShipping' => true,
'shippingCountryIso' => '<string>',
'entityCount' => 123,
'pullCount' => 123,
'imagesCount' => 123,
'maximumTransferRate' => 123,
'quickSyncCount' => 123
]),
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/connector/accounts"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"apiToken\": \"<string>\",\n \"name\": \"<string>\",\n \"companyId\": \"b45f6432-2462-4c6f-b00f-1d9d01000000\",\n \"isActive\": true,\n \"isLocked\": true,\n \"rootCategoryId\": \"b45f6432-2462-4c6f-b00f-1d9d01000000\",\n \"useShopOrderNumber\": true,\n \"canImport\": true,\n \"shouldImportItemsAndCategories\": true,\n \"shouldImportOrdersAndCustomers\": true,\n \"shouldImportImages\": true,\n \"canUpload\": true,\n \"shouldUploadItemComplete\": true,\n \"shouldUploadItemPriceRestricted\": true,\n \"shouldUploadItemStockRestricted\": true,\n \"shouldUploadCustomers\": true,\n \"shouldUploadImages\": true,\n \"shouldRefreshExistingItems\": true,\n \"shouldRefreshCustomers\": true,\n \"shouldDeleteImagesOnImport\": true,\n \"shouldWawiCalculateTaxRate\": true,\n \"shouldWawiCalculateTaxRateForShipping\": true,\n \"shippingCountryIso\": \"<string>\",\n \"entityCount\": 123,\n \"pullCount\": 123,\n \"imagesCount\": 123,\n \"maximumTransferRate\": 123,\n \"quickSyncCount\": 123\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/connector/accounts")
.header("x-tenant-id", "<x-tenant-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"apiToken\": \"<string>\",\n \"name\": \"<string>\",\n \"companyId\": \"b45f6432-2462-4c6f-b00f-1d9d01000000\",\n \"isActive\": true,\n \"isLocked\": true,\n \"rootCategoryId\": \"b45f6432-2462-4c6f-b00f-1d9d01000000\",\n \"useShopOrderNumber\": true,\n \"canImport\": true,\n \"shouldImportItemsAndCategories\": true,\n \"shouldImportOrdersAndCustomers\": true,\n \"shouldImportImages\": true,\n \"canUpload\": true,\n \"shouldUploadItemComplete\": true,\n \"shouldUploadItemPriceRestricted\": true,\n \"shouldUploadItemStockRestricted\": true,\n \"shouldUploadCustomers\": true,\n \"shouldUploadImages\": true,\n \"shouldRefreshExistingItems\": true,\n \"shouldRefreshCustomers\": true,\n \"shouldDeleteImagesOnImport\": true,\n \"shouldWawiCalculateTaxRate\": true,\n \"shouldWawiCalculateTaxRateForShipping\": true,\n \"shippingCountryIso\": \"<string>\",\n \"entityCount\": 123,\n \"pullCount\": 123,\n \"imagesCount\": 123,\n \"maximumTransferRate\": 123,\n \"quickSyncCount\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.jtl-cloud.com/erp/v2/sales-channels/connector/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 \"url\": \"<string>\",\n \"apiToken\": \"<string>\",\n \"name\": \"<string>\",\n \"companyId\": \"b45f6432-2462-4c6f-b00f-1d9d01000000\",\n \"isActive\": true,\n \"isLocked\": true,\n \"rootCategoryId\": \"b45f6432-2462-4c6f-b00f-1d9d01000000\",\n \"useShopOrderNumber\": true,\n \"canImport\": true,\n \"shouldImportItemsAndCategories\": true,\n \"shouldImportOrdersAndCustomers\": true,\n \"shouldImportImages\": true,\n \"canUpload\": true,\n \"shouldUploadItemComplete\": true,\n \"shouldUploadItemPriceRestricted\": true,\n \"shouldUploadItemStockRestricted\": true,\n \"shouldUploadCustomers\": true,\n \"shouldUploadImages\": true,\n \"shouldRefreshExistingItems\": true,\n \"shouldRefreshCustomers\": true,\n \"shouldDeleteImagesOnImport\": true,\n \"shouldWawiCalculateTaxRate\": true,\n \"shouldWawiCalculateTaxRateForShipping\": true,\n \"shippingCountryIso\": \"<string>\",\n \"entityCount\": 123,\n \"pullCount\": 123,\n \"imagesCount\": 123,\n \"maximumTransferRate\": 123,\n \"quickSyncCount\": 123\n}"
response = http.request(request)
puts response.read_body{
"isActive": true,
"isLocked": true,
"canImport": true,
"shouldImportItemsAndCategories": true,
"shouldImportOrdersAndCustomers": true,
"shouldImportImages": true,
"canUpload": true,
"shouldUploadItemComplete": true,
"shouldUploadItemPriceRestricted": true,
"shouldUploadItemStockRestricted": true,
"shouldUploadCustomers": true,
"shouldUploadImages": true,
"shouldRefreshExistingItems": true,
"shouldRefreshCustomers": true,
"shouldDeleteImagesOnImport": true,
"shouldWawiCalculateTaxRate": true,
"shouldWawiCalculateTaxRateForShipping": true,
"pullCount": 123,
"quickSyncCount": 123,
"sendOnlyAssignedManufacturers": true,
"useShopOrderNumber": true,
"languages": [
{
"iso": "<string>",
"isAssigned": true,
"isDefault": true,
"nameGerman": "<string>",
"nameEnglish": "<string>"
}
],
"currencies": [
{
"currencyCode": "<string>",
"codeSource": 0,
"isAssigned": true,
"isDefault": true,
"name": "<string>"
}
],
"features": [
{
"feature": 1,
"isEnabled": true
}
],
"taxRates": [
{
"rate": 123,
"taxRateId": "b45f6432-2462-4c6f-b00f-1d9d01000000"
}
],
"serverInfo": {
"isOldConnector": true,
"platformName": "<string>",
"platformVersion": "<string>",
"protocolVersion": "<string>",
"endpointVersion": "<string>"
},
"salesChannelId": "<string>",
"name": "<string>",
"url": "<string>",
"companyId": "b45f6432-2462-4c6f-b00f-1d9d01000000",
"maximumTransferRate": 123,
"imagesCount": 123,
"entityCount": 123,
"shippingCountryIso": "<string>",
"dummyCategoryId": "b45f6432-2462-4c6f-b00f-1d9d01000000",
"rootCategoryId": "b45f6432-2462-4c6f-b00f-1d9d01000000"
}{
"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
The access token received from the authorization server in the OAuth 2.0 flow.
Headers
Optional, client-generated key for deduplicating repeated write requests. A repeated request with the same key returns the originally recorded result instead of executing the effect again.
1 - 255The tenant ID for the target ERP instance.
Query Parameters
If true, runs the live handshake and tax rate check without creating the account; use this to test a connection first. Optional. Defaults to false. When true, the response contains no "SalesChannelId" (omitted in REST, null in GraphQL).
Body
Request model for CreateConnector command endpoint. Route parameters bind from the route, query parameters from the query string, everything else from the body.
URL of the connector endpoint. Mandatory. Must not point to the same host and path as another active JTL-Connector account (compared case-insensitively, ignoring scheme and trailing slash); deleted (inactive) accounts are ignored, locked accounts are not.
API token used to authenticate against the connector endpoint. Mandatory. Write-only; never echoed back in the response.
Name of the connector account. Mandatory.
ID of the company the connector account belongs to. Mandatory. The tax rates reported by the endpoint are validated against this company's tax rates.
"b45f6432-2462-4c6f-b00f-1d9d01000000"
DEPRECATED: do not use. This property is ignored and will be removed in a future API version. A new connector account is always created as active.
Connector account is locked. Optional. Defaults to false.
Root category for imported items. Optional. Defaults to null (no root category set).
"b45f6432-2462-4c6f-b00f-1d9d01000000"
Use the shop-assigned order number instead of the JTL-Wawi-generated one. Optional. Defaults to false.
The connector account is allowed to import data from the endpoint. Optional. Defaults to false.
Items and categories are imported. Optional. Defaults to false.
Orders and customers are imported. Optional. Defaults to false.
Item images are imported. Optional. Defaults to false.
The connector account is allowed to upload data to the endpoint. Optional. Defaults to false.
Items are uploaded completely, rather than price/stock-restricted. Optional. Defaults to false.
Item uploads are restricted to prices only. Optional. Defaults to false.
Item uploads are restricted to stock only. Optional. Defaults to false.
Customer data is uploaded. Optional. Defaults to false.
Images are uploaded. Optional. Defaults to false.
Existing items are merged/refreshed rather than only added. Optional. Defaults to false.
Existing customer data is refreshed. Optional. Defaults to false.
Images are deleted on import. Optional. Defaults to false.
JTL-Wawi calculates the tax rate for items, rather than taking the endpoint-reported one. Optional. Defaults to false.
JTL-Wawi calculates the tax rate for shipping, rather than taking the endpoint-reported one. Optional. Defaults to false.
The shipping (departure) country as an ISO 3166-1 alpha-2 code, e.g. DE. Optional. Defaults to null. Case-insensitive; returned in uppercase.
Maximum number of entities transferred per run. Optional. Omit or send null to use the default (5).
Maximum pull count per sync run. Optional. Defaults to 50.
Maximum number of images transferred per run. Optional. Omit or send null to use the default (10).
Maximum transfer rate for uploads, in megabytes, or null for unrestricted. Optional. Defaults to null (no limit).
Maximum quick-sync count per sync run. Optional. Defaults to 10.
Response
The connector account was created. Returns the account with its configuration and the metadata reported by the endpoint. When "Simulate" is true, the same checks run but nothing is saved; the response has the same shape and status code, but contains no "SalesChannelId" (omitted in REST, null in GraphQL). No "Location" header is returned.
A connector account with its configuration and the metadata reported by its endpoint. Returned when a connector account is created ("POST /v2/sales-channels/connector/accounts" or "CreateConnector"), updated ("PATCH /v2/sales-channels/{salesChannelId}/connector" or "UpdateConnector") or refreshed ("POST /v2/sales-channels/{salesChannelId}/connector/refresh" or "RefreshConnector"). Languages, currencies, features, tax rates and server information are read-only and come from the endpoint; currency codes are uppercase and language codes are lowercase. Per-object-type synchronization settings are not included; use "GET /v2/sales-channels/{salesChannelId}/connector/synchronisation-settings" or "QueryConnectorSynchronisationSettings".
Connector account is active.
Connector account is locked.
The connector account is allowed to import data from the endpoint.
Items and categories are imported.
Orders and customers are imported.
Item images are imported.
The connector account is allowed to upload data to the endpoint.
Items are uploaded completely, rather than price/stock-restricted.
Item uploads are restricted to prices only.
Item uploads are restricted to stock only.
Customer data is uploaded.
Images are uploaded.
Existing items are merged/refreshed rather than only added.
Existing customer data is refreshed.
Images are deleted on import.
JTL-Wawi calculates the tax rate for items, rather than taking the endpoint-reported one.
JTL-Wawi calculates the tax rate for shipping, rather than taking the endpoint-reported one.
Maximum pull count per sync run.
Maximum quick-sync count per sync run.
Manufacturer data sent to the endpoint is filtered to only assigned manufacturers.
The shop-assigned order number is used instead of the JTL-Wawi-generated one.
Languages available in JTL-Wawi, annotated with the assignment/default state reported by the connector endpoint's live handshake.
Show child attributes
Show child attributes
ISO 4217 currencies known to JTL-Wawi, annotated with the assignment/default state reported by the connector endpoint's live handshake.
Show child attributes
Show child attributes
Every known connector feature, each marked whether the connector endpoint reported it as enabled.
Show child attributes
Show child attributes
Tax rates reported by the endpoint during the live handshake, each with the JTL-Wawi tax rate it was matched to. Returned when a connector account is created ("POST /v2/sales-channels/connector/accounts" or "CreateConnector") or refreshed ("POST /v2/sales-channels/{salesChannelId}/connector/refresh" or "RefreshConnector"); always empty in the update response ("PATCH /v2/sales-channels/{salesChannelId}/connector" or "UpdateConnector").
Show child attributes
Show child attributes
Live-only metadata about the connected endpoint's platform and protocol version, as reported by its handshake.
Show child attributes
Show child attributes
Sales channel id of this connector account. Opaque, tenant-local composite identifier (not a UUID). Null when "Simulate" is true (omitted in REST, null in GraphQL); no account was saved, so no id is assigned.
Name of the connector account.
URL of the connector endpoint.
ID of the company the connector account belongs to.
"b45f6432-2462-4c6f-b00f-1d9d01000000"
Maximum transfer rate for uploads, in megabytes, or null if unrestricted.
Maximum number of images transferred per run, or null if unrestricted.
Maximum number of entities transferred per run, or null if unrestricted.
The shipping (departure) country as an ISO 3166-1 alpha-2 code, e.g. DE, or null if not set. Case-insensitive; returned in uppercase.
Fallback category for uncategorized imported items, or null if not set.
"b45f6432-2462-4c6f-b00f-1d9d01000000"
Root category for imported items, or null if not set.
"b45f6432-2462-4c6f-b00f-1d9d01000000"
Was this page helpful?