curl --request PUT \
--url https://scx-sbx.api.jtl-software.com/v1/channel/shipping-rules \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"supportedCarrierList": [
{
"carrierId": "C102",
"displayName": "Deutsche Post"
}
],
"activatedGenericAttributeList": [
{
"attributeId": "IMEI",
"required": true,
"recommended": false
}
],
"channelSpecificAttributeList": [
{
"attributeId": "OTTO_RETURN_WAREHOUSE_ID",
"displayName": "Return Warehouse Id",
"type": "text",
"level": "ORDER_ITEM",
"description": "Warehouse Id the return should be routed to",
"enumValues": [
{
"value": "<string>",
"display": "<string>",
"sort": 0
}
],
"attributeValueValidation": "/^[0-9]{1,10}$/",
"isMultipleAllowed": false,
"required": false,
"recommended": false
}
]
}
'import requests
url = "https://scx-sbx.api.jtl-software.com/v1/channel/shipping-rules"
payload = {
"supportedCarrierList": [
{
"carrierId": "C102",
"displayName": "Deutsche Post"
}
],
"activatedGenericAttributeList": [
{
"attributeId": "IMEI",
"required": True,
"recommended": False
}
],
"channelSpecificAttributeList": [
{
"attributeId": "OTTO_RETURN_WAREHOUSE_ID",
"displayName": "Return Warehouse Id",
"type": "text",
"level": "ORDER_ITEM",
"description": "Warehouse Id the return should be routed to",
"enumValues": [
{
"value": "<string>",
"display": "<string>",
"sort": 0
}
],
"attributeValueValidation": "/^[0-9]{1,10}$/",
"isMultipleAllowed": False,
"required": False,
"recommended": False
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
supportedCarrierList: [{carrierId: 'C102', displayName: 'Deutsche Post'}],
activatedGenericAttributeList: [{attributeId: 'IMEI', required: true, recommended: false}],
channelSpecificAttributeList: [
{
attributeId: 'OTTO_RETURN_WAREHOUSE_ID',
displayName: 'Return Warehouse Id',
type: 'text',
level: 'ORDER_ITEM',
description: 'Warehouse Id the return should be routed to',
enumValues: [{value: '<string>', display: '<string>', sort: 0}],
attributeValueValidation: '/^[0-9]{1,10}$/',
isMultipleAllowed: false,
required: false,
recommended: false
}
]
})
};
fetch('https://scx-sbx.api.jtl-software.com/v1/channel/shipping-rules', 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://scx-sbx.api.jtl-software.com/v1/channel/shipping-rules",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'supportedCarrierList' => [
[
'carrierId' => 'C102',
'displayName' => 'Deutsche Post'
]
],
'activatedGenericAttributeList' => [
[
'attributeId' => 'IMEI',
'required' => true,
'recommended' => false
]
],
'channelSpecificAttributeList' => [
[
'attributeId' => 'OTTO_RETURN_WAREHOUSE_ID',
'displayName' => 'Return Warehouse Id',
'type' => 'text',
'level' => 'ORDER_ITEM',
'description' => 'Warehouse Id the return should be routed to',
'enumValues' => [
[
'value' => '<string>',
'display' => '<string>',
'sort' => 0
]
],
'attributeValueValidation' => '/^[0-9]{1,10}$/',
'isMultipleAllowed' => false,
'required' => false,
'recommended' => false
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://scx-sbx.api.jtl-software.com/v1/channel/shipping-rules"
payload := strings.NewReader("{\n \"supportedCarrierList\": [\n {\n \"carrierId\": \"C102\",\n \"displayName\": \"Deutsche Post\"\n }\n ],\n \"activatedGenericAttributeList\": [\n {\n \"attributeId\": \"IMEI\",\n \"required\": true,\n \"recommended\": false\n }\n ],\n \"channelSpecificAttributeList\": [\n {\n \"attributeId\": \"OTTO_RETURN_WAREHOUSE_ID\",\n \"displayName\": \"Return Warehouse Id\",\n \"type\": \"text\",\n \"level\": \"ORDER_ITEM\",\n \"description\": \"Warehouse Id the return should be routed to\",\n \"enumValues\": [\n {\n \"value\": \"<string>\",\n \"display\": \"<string>\",\n \"sort\": 0\n }\n ],\n \"attributeValueValidation\": \"/^[0-9]{1,10}$/\",\n \"isMultipleAllowed\": false,\n \"required\": false,\n \"recommended\": false\n }\n ]\n}")
req, _ := http.NewRequest("PUT", url, payload)
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.put("https://scx-sbx.api.jtl-software.com/v1/channel/shipping-rules")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"supportedCarrierList\": [\n {\n \"carrierId\": \"C102\",\n \"displayName\": \"Deutsche Post\"\n }\n ],\n \"activatedGenericAttributeList\": [\n {\n \"attributeId\": \"IMEI\",\n \"required\": true,\n \"recommended\": false\n }\n ],\n \"channelSpecificAttributeList\": [\n {\n \"attributeId\": \"OTTO_RETURN_WAREHOUSE_ID\",\n \"displayName\": \"Return Warehouse Id\",\n \"type\": \"text\",\n \"level\": \"ORDER_ITEM\",\n \"description\": \"Warehouse Id the return should be routed to\",\n \"enumValues\": [\n {\n \"value\": \"<string>\",\n \"display\": \"<string>\",\n \"sort\": 0\n }\n ],\n \"attributeValueValidation\": \"/^[0-9]{1,10}$/\",\n \"isMultipleAllowed\": false,\n \"required\": false,\n \"recommended\": false\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://scx-sbx.api.jtl-software.com/v1/channel/shipping-rules")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"supportedCarrierList\": [\n {\n \"carrierId\": \"C102\",\n \"displayName\": \"Deutsche Post\"\n }\n ],\n \"activatedGenericAttributeList\": [\n {\n \"attributeId\": \"IMEI\",\n \"required\": true,\n \"recommended\": false\n }\n ],\n \"channelSpecificAttributeList\": [\n {\n \"attributeId\": \"OTTO_RETURN_WAREHOUSE_ID\",\n \"displayName\": \"Return Warehouse Id\",\n \"type\": \"text\",\n \"level\": \"ORDER_ITEM\",\n \"description\": \"Warehouse Id the return should be routed to\",\n \"enumValues\": [\n {\n \"value\": \"<string>\",\n \"display\": \"<string>\",\n \"sort\": 0\n }\n ],\n \"attributeValueValidation\": \"/^[0-9]{1,10}$/\",\n \"isMultipleAllowed\": false,\n \"required\": false,\n \"recommended\": false\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"errorList": [
{
"code": "VAL100",
"message": "Required field sellerId not found",
"severity": "error",
"hint": "Check the field `sellerId` — it must be a non-empty string."
}
]
}{
"errorList": [
{
"code": "GEN404",
"message": "Not found",
"severity": "error",
"hint": null
}
]
}{
"errorList": [
{
"code": "GEN500",
"message": "Internal Server Error",
"severity": "error",
"hint": null
}
]
}Shipping Rules
Shipping Rules can be used to define a list of Carriers which are supported by the connected Marketplace
(supportedCarrierList). A connected Seller integration will provide the Id to the Carrier when the Shipping
Information is transmitted. (see Event Type: Seller:Order.Shipping)
In addition, a channel may activate generic shipping attributes provided by JTL
(activatedGenericAttributeList, see GET /v1/channel/shipping-rules/generic-attributes) and define its
own channel specific shipping attributes (channelSpecificAttributeList, max. 8 entries).
curl --request PUT \
--url https://scx-sbx.api.jtl-software.com/v1/channel/shipping-rules \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"supportedCarrierList": [
{
"carrierId": "C102",
"displayName": "Deutsche Post"
}
],
"activatedGenericAttributeList": [
{
"attributeId": "IMEI",
"required": true,
"recommended": false
}
],
"channelSpecificAttributeList": [
{
"attributeId": "OTTO_RETURN_WAREHOUSE_ID",
"displayName": "Return Warehouse Id",
"type": "text",
"level": "ORDER_ITEM",
"description": "Warehouse Id the return should be routed to",
"enumValues": [
{
"value": "<string>",
"display": "<string>",
"sort": 0
}
],
"attributeValueValidation": "/^[0-9]{1,10}$/",
"isMultipleAllowed": false,
"required": false,
"recommended": false
}
]
}
'import requests
url = "https://scx-sbx.api.jtl-software.com/v1/channel/shipping-rules"
payload = {
"supportedCarrierList": [
{
"carrierId": "C102",
"displayName": "Deutsche Post"
}
],
"activatedGenericAttributeList": [
{
"attributeId": "IMEI",
"required": True,
"recommended": False
}
],
"channelSpecificAttributeList": [
{
"attributeId": "OTTO_RETURN_WAREHOUSE_ID",
"displayName": "Return Warehouse Id",
"type": "text",
"level": "ORDER_ITEM",
"description": "Warehouse Id the return should be routed to",
"enumValues": [
{
"value": "<string>",
"display": "<string>",
"sort": 0
}
],
"attributeValueValidation": "/^[0-9]{1,10}$/",
"isMultipleAllowed": False,
"required": False,
"recommended": False
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
supportedCarrierList: [{carrierId: 'C102', displayName: 'Deutsche Post'}],
activatedGenericAttributeList: [{attributeId: 'IMEI', required: true, recommended: false}],
channelSpecificAttributeList: [
{
attributeId: 'OTTO_RETURN_WAREHOUSE_ID',
displayName: 'Return Warehouse Id',
type: 'text',
level: 'ORDER_ITEM',
description: 'Warehouse Id the return should be routed to',
enumValues: [{value: '<string>', display: '<string>', sort: 0}],
attributeValueValidation: '/^[0-9]{1,10}$/',
isMultipleAllowed: false,
required: false,
recommended: false
}
]
})
};
fetch('https://scx-sbx.api.jtl-software.com/v1/channel/shipping-rules', 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://scx-sbx.api.jtl-software.com/v1/channel/shipping-rules",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'supportedCarrierList' => [
[
'carrierId' => 'C102',
'displayName' => 'Deutsche Post'
]
],
'activatedGenericAttributeList' => [
[
'attributeId' => 'IMEI',
'required' => true,
'recommended' => false
]
],
'channelSpecificAttributeList' => [
[
'attributeId' => 'OTTO_RETURN_WAREHOUSE_ID',
'displayName' => 'Return Warehouse Id',
'type' => 'text',
'level' => 'ORDER_ITEM',
'description' => 'Warehouse Id the return should be routed to',
'enumValues' => [
[
'value' => '<string>',
'display' => '<string>',
'sort' => 0
]
],
'attributeValueValidation' => '/^[0-9]{1,10}$/',
'isMultipleAllowed' => false,
'required' => false,
'recommended' => false
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://scx-sbx.api.jtl-software.com/v1/channel/shipping-rules"
payload := strings.NewReader("{\n \"supportedCarrierList\": [\n {\n \"carrierId\": \"C102\",\n \"displayName\": \"Deutsche Post\"\n }\n ],\n \"activatedGenericAttributeList\": [\n {\n \"attributeId\": \"IMEI\",\n \"required\": true,\n \"recommended\": false\n }\n ],\n \"channelSpecificAttributeList\": [\n {\n \"attributeId\": \"OTTO_RETURN_WAREHOUSE_ID\",\n \"displayName\": \"Return Warehouse Id\",\n \"type\": \"text\",\n \"level\": \"ORDER_ITEM\",\n \"description\": \"Warehouse Id the return should be routed to\",\n \"enumValues\": [\n {\n \"value\": \"<string>\",\n \"display\": \"<string>\",\n \"sort\": 0\n }\n ],\n \"attributeValueValidation\": \"/^[0-9]{1,10}$/\",\n \"isMultipleAllowed\": false,\n \"required\": false,\n \"recommended\": false\n }\n ]\n}")
req, _ := http.NewRequest("PUT", url, payload)
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.put("https://scx-sbx.api.jtl-software.com/v1/channel/shipping-rules")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"supportedCarrierList\": [\n {\n \"carrierId\": \"C102\",\n \"displayName\": \"Deutsche Post\"\n }\n ],\n \"activatedGenericAttributeList\": [\n {\n \"attributeId\": \"IMEI\",\n \"required\": true,\n \"recommended\": false\n }\n ],\n \"channelSpecificAttributeList\": [\n {\n \"attributeId\": \"OTTO_RETURN_WAREHOUSE_ID\",\n \"displayName\": \"Return Warehouse Id\",\n \"type\": \"text\",\n \"level\": \"ORDER_ITEM\",\n \"description\": \"Warehouse Id the return should be routed to\",\n \"enumValues\": [\n {\n \"value\": \"<string>\",\n \"display\": \"<string>\",\n \"sort\": 0\n }\n ],\n \"attributeValueValidation\": \"/^[0-9]{1,10}$/\",\n \"isMultipleAllowed\": false,\n \"required\": false,\n \"recommended\": false\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://scx-sbx.api.jtl-software.com/v1/channel/shipping-rules")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"supportedCarrierList\": [\n {\n \"carrierId\": \"C102\",\n \"displayName\": \"Deutsche Post\"\n }\n ],\n \"activatedGenericAttributeList\": [\n {\n \"attributeId\": \"IMEI\",\n \"required\": true,\n \"recommended\": false\n }\n ],\n \"channelSpecificAttributeList\": [\n {\n \"attributeId\": \"OTTO_RETURN_WAREHOUSE_ID\",\n \"displayName\": \"Return Warehouse Id\",\n \"type\": \"text\",\n \"level\": \"ORDER_ITEM\",\n \"description\": \"Warehouse Id the return should be routed to\",\n \"enumValues\": [\n {\n \"value\": \"<string>\",\n \"display\": \"<string>\",\n \"sort\": 0\n }\n ],\n \"attributeValueValidation\": \"/^[0-9]{1,10}$/\",\n \"isMultipleAllowed\": false,\n \"required\": false,\n \"recommended\": false\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"errorList": [
{
"code": "VAL100",
"message": "Required field sellerId not found",
"severity": "error",
"hint": "Check the field `sellerId` — it must be a non-empty string."
}
]
}{
"errorList": [
{
"code": "GEN404",
"message": "Not found",
"severity": "error",
"hint": null
}
]
}{
"errorList": [
{
"code": "GEN500",
"message": "Internal Server Error",
"severity": "error",
"hint": null
}
]
}Authorizations
As a Channel Integrator you will receive a API Refresh Token. With such a Refresh Token you need to request an Access Token with a limited Lifetime (see POST /v1/auth). This Access Token must be provided as a Bearer Token in the Authorization Header with every request.
Body
Set of shipping rules (carrier, region, cost) supported by the channel.
Shipping rules supported by the channel — list of carriers and the regions they cover.
Show child attributes
Show child attributes
Generic shipping attributes (from GET /v1/channel/shipping-rules/generic-attributes) activated for
this channel, with optional required/recommended policy overrides.
Show child attributes
Show child attributes
Shipping attributes defined by the channel itself, in addition to the generic catalog.
8Show child attributes
Show child attributes
Response
Shipping Rules Created
Was this page helpful?