Table of contents
1. Purpose of this document
2. General information
3. Response codes
4. xChange data standards
A. Supply- and use-data on xChange
A.1. Inventory synchronization
A.2. Reservations
A.3. Stock list synchronization
A.4. Requirement synchronization
B. Leaning up your processes!
B.1. Accepted deal details
B.2. Release creation
C. Track your containers
C.1. Receive tracking events
C.2. Gate-movements
D. Depot integrations
1. Purpose of this document
xChange connect enables members to integrate their shipping software with xChange. At a glance you will, when integrated, profit from these benefits:
- Create one-way leasing supplies & requirements seamlessly
- Sell containers automatically on the trading platform
- Get better matches and offers on xChange
- Get event-based container tracking data from all carriers
- Get aggregated movement-reports from all depots
All of these points can lead to a reduction of overtyping, increase of fleet utilization and boost of economic success on xChange. Read more details about the features and benefits here.
Further in this document, all possible ways to push to and receive data from xChange are described and specified in terms of data standards, authentication and endpoints.
2. General information
Send data to xChange
xChange Solutions offers a REST API to receive data. The xChange API allows xChange members to work with xChange out of their own software.
Authentication
To authenticate with xChange’s servers it is necessary to authenticate. All API requests that are submitted to the API endpoints obey the following constraints. xChange uses API Tokens to authenticate an incoming API calls and to assign the call to the correct member. To authenticate, the header of the API request may have the given API Token as parameter in the URL.
Example:
https://integration.container-xchange.com/connect/rest/api/v1/inventory?api_token=<API Token>
To obtain the token please contact connect@container-xchange.com.
Payload encoding
All payloads may be encoded as JSON object.
Example:
[
{
"booking_id": "your_internal_id_12345",
"deal_id": "",
"pickup_location": "CST Hamburg",
"pickup_unlocode": "DEHAM"
},
{
"booking_id": "your_internal_id_98765",
"deal_id": "1234-1",
"pickup_location": "Depot XY",
"pickup_unlocode": "CNSHG"
}
]
Error handling
Upon receiving your data, the API service checks whether all mandatory fields are existing. If all mandatory fields exist, an HTTP response with code 200 will be sent. Otherwise, the response will contain details about the error, e.g. listing the missing or erroneous fields.
For further response code explanations, please see the table below.
Last update timestamp
For xChange to process your containers fast and efficiently, a timestamp, which indicates the date and time, a line in the sent object got changed. This applies to every container in the inventory and every reservation in the reservations-payload.
"last_update":"2020-11-30T08:11+2"
Testing environment
We are happy to provide you with a robust testing environment based in a swagger.io instance running on our servers.
Receive data from xChange
As per now the supported ways of sending data to xChange’s integrated members (you) are
- REST API
- Webhook endpoints
- You can register your webhook endpoint urls (CREATE, UPDATE, DELETE) by texting to connect@container-xchange.com
Please provide us details how to connect with you.
Authentication
To authenticate outgoing communication from xChange to the members’ backend, xChange must authenticate accordingly. Please provide us with the corresponding credentials and documentation.
Payload encoding
When receiving data from xChange, the payload will be encoded as an JSON object. See the example above.
Error handling
Please follow standard HTTP response codes described in the following chapter. Furthermore, please include, if possible, a brief error description in that case.
3. Response codes
Response Code | Meaning |
200 OK | All is ok. The call was successful. |
201 Created | An API request to create a new entity or entities was successful, the entities were created. |
202 Accepted | An API request has been successfully accepted into a processing queue to be acted on later. |
204 No Content | An API request was successful, but there is no response body to return. Often seen on successful DELETE calls. |
400 Bad Request | Parsing or validating the request failed. |
401 Unauthorized | Authentication information (the app key & secret) was either incorrect or missing. |
403 Forbidden | Authentication was correct, but the user does not have permission to access the requested API, e.g., if the feature in question is not included in your pricing plan. |
404 Not Found | Returned when a request is made for a nonexistent entity. |
405 Method Not Allowed | Returned when a request is made using an HTTP method not supported by the endpoint. For example, sending a DELETE to /api/schedules. |
406 Unacceptable | Return when the client requests a version of the API which cannot be satisfied, because no compatible version is currently deployed. |
410 Gone | The requested resource is no longer available on this server and there is no forwarding address. |
500 Internal server error | There was an internal server error. The dev team was informed. |
4. xChange data standards
Please follow the below stated standards for seamless data transmissions:
Date and time convention
Date and time must follow ISO 8601 specifications:
Format: 2020-07-01 09:00:22 UTC+5 translates to 2020-07-01T09:00+5
Note: For the following parameters use YYYY-MM-DD without time:
- val_date
- ready_for_pickup_date
- eta
Container number
The container number must follow ISO 6346 specifications:
Example: ABCU1234567
Locations
xChange follows the UN/LOCODE convention. UN/LOCODEs are 5-character codes for almost every city or point of interest in the world. You can look up UN/LOCODEs at http://www.unece.org/cefact/locode/service/location.html. Otherwise, we can provide you with an according list.
Hamburg would translate to DEHAM
Container equipment type
We provide you with the different container types and their naming conventions as soon as you get in touch with us.
Container conditions
We provide you with the different container conditions and their naming conventions as soon as you get in touch with us.
A. Supply and use-data on xChange
Availabilities are the basis to creating offers on the trading platform and requirements on the one-way platform. To profit from automatically created availabilities on xChange, two types of data must be sent on a regular basis from the integrated member to xChange: Inventories and bookings.
Synchronizing the inventory solely allows you to enable your fleet to be tracked by xChange’s tracking engine.
A.1. Inventory synchronization
xChange needs to know which individual containers are, in principle, available to offer on xChange. If you are interested in tracking your whole fleet, this is how you submit the list of containers to be tracked.
This API endpoint can be called based on a schedule, e.g. every hour, or event based and must contain all containers from the inventory, not just the changed ones.
URL Structure
https://integration.container-xchange.com/connect/rest/api/v1/inventory?api_token=<api token>
Parameters
Parameter | Datatype | Description | Mandatory? |
container_number | string | Container identification number | yes |
container_type | string | Container type | yes |
status | string | Status of container. Must be ‘inventory’ when on ground/in stock. | yes |
current_depot | string | Name of depot if container on ground | if ‘status’=’inventory’ |
current_unlocode | string | Location of depot if container on ground, UN/LOCODE | if ‘status’=’inventory’ |
pickup_depot | string | Name of pickup depot if ‘status’!=’inventory’ | if ‘status’!=’inventory’ |
pickup_unlocode | string | Location of pickup depot if ‘status’!=’inventory’, UN/LOCODE | if ‘status’!=’inventory’ |
dropoff_depot | string | Name of dropoff depot if ‘status’!=’inventory’ | if ‘status’!=’inventory’ |
dropoff_unlocode | string | Location of dropoff depot if ‘status’!=’inventory’, UN/LOCODE | if ‘status’!=’inventory’ |
condition | string | Current container condition | yes |
color | string | Color of the container | no |
ready_for_pickup_date | string | Earliest date a container can be picked up | no |
eta | string | Estimated time of arrival at destination | no |
ref_out | boolean | Release reference number | no |
ow_flag | boolean | If container is available for one-way on xChange = 1, otherwise = 0 | no |
sale_flag | boolean | If container is available for sale on xChange = 1, otherwise = 0 | no |
tracking_flag | boolean | If container should be tracked, set to 1, otherwise 0 | no |
partner | String | This helps to track the containers in case of ‘tracking_flag’=1 | no |
year_of_manufacturing | integer | Year of manufacturing | no |
target_price | double | Target price of container when offered initially for sale | no |
last_update | string | Timestamp. Describes the last time the given container got an update in any of the fields above | yes |
capacity | integer | In case of a tank container, capacity in liters | no |
grade | string | In case of tank container, “food_grade” or “chemical” | no |
Example:
curl -X POST "https://integration.container-xchange.com/connect/rest/api/v1/inventory?api_token=<API TOKEN>"
-H "accept: */*"
-H "Content-Type: application/json"
-d <payload>
Payload example:
[
{
"container_number": "ABCU1234567",
"container_type": "20HC",
"status": "inventory",
"current_depot": "CST Hamburg",
"current_unlocode": "DEHAM",
"pickup_depot": "",
"pickup_unlocode": "",
"dropoff_depot": "",
"dropoff_unlocode": "",
"condition": "CARGO_WORTHY",
"color": "Red",
"ready_for_pickup_date": "",
"eta": "",
"ref_out": "",
"ow_flag": 1,
"sale_flag": 1,
"tracking_flag": 1,
"partner": "Maersk Lines",
"year_of_manufacturing": 2010,
"target_price": "",
"last_update": "2020-10-12T15:27+2"
},
{
"container_number": "XYZU7654321",
"container_type": "40HC",
"status": "leased",
"current_depot": "",
"current_unlocode": "",
"pickup_depot": "CST Hamburg",
"pickup_unlocode": "DEHAM",
"dropoff_depot": "Depot Xy",
"dropoff_unlocode": "CNSHG",
"condition": "BRAND_NEW",
"color": "",
"ready_for_pickup_date": "2020-10-01T12:00+2",
"eta": "2020-10-31",
"ref_out": "ref12345",
"ow_flag": 1,
"sale_flag": 1,
"tracking_flag": 1,
"partner": "Maersk Lines",
"year_of_manufacturing": 2010,
"target_price": "",
"last_update": "2020-10-12T15:27+2"
}
]
A.2. Reservations
Reservations refer to groups of containers, sharing the same condition, type and location, that are expected to be picked up in the near future. To calculate the right amount available per availability, xChange needs no know how many containers are “blocked”. As soon as all containers of a booking have been picked up, the reservation is not needed anymore.
This API endpoint can be called based on a schedule, e.g. every hour, or event based and must contain all reservations of a given group of containers, not just the changed ones.
URL Structure
https://integration.container-xchange.com/connect/rest/api/v1/reservations?api_token=<api token>
Parameters
Parameter | Datatype | Description | Mandatory? |
booking_id | string | your internal booking identifier | yes |
deal_id | string | xChange request or deal-id | no |
pickup_location | string | Pickup depot name | yes |
pickup_unlocode | string | pickup depot location code, UN/LOCODE | yes |
container_type | string | Container type | yes |
condition | string | Container condition | yes |
ref_out | string | Release reference number | yes |
amount_booking | string | Total amount of containers enclosed in reservation | yes |
amount_picked_up | string | Amount of containers already picked-up | yes |
last_update | string | Timestamp. Describes the last time the given reservation got an update in any of the fields above | yes |
Example:
curl -X POST "https://integration.container-xchange.com/connect/rest/api/v1/reservations?api_token=<API TOKEN>"
-H "accept: */*"
-H "Content-Type: application/json"
-d <payload>
Payload example:
[
{
"booking_id": "your_internal_id_12345",
"deal_id": "",
"pickup_location": "CST Hamburg",
"pickup_unlocode": "DEHAM",
"container_type": "45HC",
"condition": "CARGO_WORTHY",
"ref_out": "release_1234",
"amount_booking": 10,
"amount_picked_up": 5,
"last_update": "2020-10-12T16:06+2"
},
{
"booking_id": "your_internal_id_98765",
"deal_id": "123-1",
"pickup_location": "DIT Duisburg",
"pickup_unlocode": "DEDUI",
"container_type": "40HC",
"condition": "BRAND_NEW",
"ref_out": "release_9876",
"amount_booking": 5,
"amount_picked_up": 0,
"last_update": "2020-10-12T16:06+2"
}
]
A.3. Stocklist synchronization
If you have a stocklist, hence groups of containers that share the same container pickup location, type, condition and price, you can provide them directly.
Please note that the combination of location, type, conditon and price (even if it is null) must be unique.
URL Structure
https://integration.container-xchange.com/connect/rest/api/v1/availabilities?api_token=<api token>
Parameters
Parameter | Datatype | Description | Mandatory? |
container_type | string | Type of container, e.g. 40HC | yes |
container_condition | string | Container condition | yes |
location_unlocode | string | Current location of the container/ POL | yes |
price | double | Price for one container offered on the trading marketplace, in USD | no |
avail_amount_ow | integer | Number of containers to be offered for one-way-leasing | yes |
avail_amount_trading | integer | Number of containers to be offered for sale | yes |
avail_amount_depot | integer | Number of containers in the depot that are available for business (for inventory displaying purposes) | yes |
total_amount_depot | integer | Total number of containers in the depot, including blocked containers | yes |
yom_from | integer | Lower end of the year of manufacture range | no |
yom_to | integer | Upper end of the year of manufacture range | no |
colors | string | Colors of the container | no |
grade | string | In case of tank containers either “food_grade” or “chemical” | no |
capacity | integer | Capacity in liters in case of tank container | no |
Example:
curl -X POST "https://integration.container-xchange.com/connect/rest/api/v1/availabilities?api_token=<API TOKEN>"
-H "accept: */*"
-H "Content-Type: application/json"
-d <payload>
Payload example:
[
{
"container_type": "T75",
"container_condition": "CARGO_WORTHY",
"location_unlocode": "BEANR",
"price": 2760,
"avail_amount_ow": 0,
"avail_amount_trading": 10,
"avail_amount_depot": 10,
"total_amount_depot": 10,
"yom_from": 2001,
"yom_to": 2011,
"colors": null,
"capacity": 22000,
"grade": "chemical"
},
{
"container_type": "20DC",
"container_condition": "CARGO_WORTHY",
"location_unlocode": "DEHAM",
"price": 2995,
"avail_amount_ow": 0,
"avail_amount_trading": 8,
"avail_amount_depot": 8,
"total_amount_depot": 8,
"yom_from": 2000,
"yom_to": 2011,
"colors": "RAL 1100, Green",
"capacity": null,
"grade": null
}
]
A.4. Requirement synchronization
The most common data-type for matches on the one-way marketplace are Requirements. Requirements consist out of:
Direction, Pick-up Location → Drop-off Location + Equipment type, Equipment quantity + initial terms when supplying
e.g. “Use 20 x 40HC Cargo Worthy from Hamburg to Shanghai”
Please note that each requirement must be unique in terms of the combination of container type, pickup- and dropoff-location, direction and condition.
URL Structure
https://integration.container-xchange.com/connect/rest/api/v1/requirements?api_token=<api token>
Parameters
Parameter | Datatype | Description | Mandatory? |
pickup_location | string | Port of loading, UN/LOCODE | yes |
dropoff_location | string | Port of discharge, UN/LOCODE | yes |
direction | string | can be “supplying” or “using” | yes |
equipment_type | string | Type of container, e.g. 20DC | yes |
condition | string | Container condition | yes |
equipment_count | integer | Number of containers to be included in the requirement | yes if direction = supplying |
free_days | integer | Number of days free of charge for the container user | yes if direction = supplying |
per_diem | double | Amount to be charged to the container user after the free days | yes if direction = supplying |
pickup_charge | double | One time payment by the container users upon pickup | yes if direction = supplying |
damage_protection_plan | integer | yes if direction = supplying | |
residual_value | integer | Residual value of the container | yes if direction = supplying |
depreciation_rate | integer | Depreciation rate in % | yes if direction = supplying |
replacement_value | integer | Replacement value of the container | yes if direction = supplying |
grade | string | In case of tank containers either “food_grade” or “chemical” | no |
capacity | integer | Capacity in liters in case of tank container | no |
Example:
curl -X POST "https://integration.container-xchange.com/connect/rest/api/v1/requirements?api_token=<API TOKEN>"
-H "accept: */*"
-H "Content-Type: application/json"
-d <payload>
Payload example:
[
{
"pickup_location": "CNFZH",
"dropoff_location": "DEHAM",
"direction": "Using",
"equipment_type": "75T",
"condition": "CARGO_WORTHY",
"equipment_count": null,
"free_days": null,
"per_diem": null,
"pickup_charge": null,
"damage_protection_plan": null,
"residual_value": null,
"depreciation_rate": null,
"replacement_value": null,
"grade": "Chemical",
"capacity": 22000
},
{
"pickup_location": "CNFZH",
"dropoff_location": "DEHAM",
"direction": "Supplying",
"equipment_type": "40HC",
"condition": "CARGO_WORTHY",
"equipment_count": 8,
"free_days": 60,
"per_diem": 1,
"pickup_charge": 50,
"damage_protection_plan": 100,
"residual_value": 3000,
"depreciation_rate": 5,
"replacement_value": 50,
"grade": "",
"capacity": null
}
]
B. Leaning up your processes
This chapter specifies two ways of speeding up your processes while working with xChange.
B.1. Accepted deal details
Here the payload is defined, that allows xChange to push details about an accepted deal to your software, being, after a successful negotiation at the trading- or one-way-leasing-platform.
Please design your endpoints following the below defined parameters.
Container trading negotiation was successful
When a negotiation on the trading platform ends successfully by one of the two parties closing the deal, the below stated payload will be sent to integrated customers. This can result for the supplying party in the automatic reservation of the right amount of containers.
Parameter | Datatype | Description | Mandatory? |
trading_id | string | xChange trading deal id | yes |
trading_role | string | Can be either ‘seller’ or ‘buyer’ | yes |
container_type | string | Container type | yes |
condition | string | Container condition | yes |
color | string | Color(s) of the container(s) | no |
yom_from | integer | Start of ‘year-of-manufacturing’-range | no |
yom_to | integer | End of ‘year-of-manufacturing’-range. 0 or “” if not applicable | no |
amount | integer | Number of containers enclosed in deal | yes |
pickup_depot | string | Pickup location name | no |
pickup_unlocode | string | Pickup location UN/LOCODE | yes |
partner | string | Partner name (company name) | yes |
price | double | Selling price per container | yes |
freedays | integer | Amount of days withough storage charge starting form release creation date | yes |
daily_storage_charge | double | per-day storage charge for container buys in USD | yes |
payment_handling | boolean | Indicates whether payment is handled over xChange | yes |
Payload example:
[
{
"trading_id": "123-1",
"trading_role": "buyer",
"container_type": "20HC",
"condition": "BRAND_NEW",
"color": "Green",
"yom_from": 2018,
"yom_to": 2020,
"amount": 3,
"pickup_depot": null,
"pickup_unlocode": "DEHAM",
"partner": "Trader xyz",
"price": 2500,
"freedays": 20,
"daily_storage_charge": 10,
"payment_handling": true
}
]
One-way-leasing deal is accepted
When a negotiation on the one-way-leasing platform ends successfully by one of the two parties closing the deal, the below stated payload will be sent to integrated customers.
This can result for the supplying party in the automatic reservation of the right amount of containers.
Parameter | Datatype | Description | Mandatory? |
request_id | string | xChange trading deal id | yes |
request_role | string | Defined by the role of the receiver. Can be ‘supplier’ or ‘user’ | yes |
partner | string | Partner name (company name) | yes |
container_type | string | Container type | yes |
condition | string | Container condition | yes |
amount | integer | Amount of container enclosed in request | yes |
pickup_depot | string | Name of pickup depot | no |
pickup_unlocode | string | Location of pickup depot, UN/LOCODE | yes |
dropoff_depot | string | Name of dropoff depot | no |
dropoff_unlocode | string | Location of dropoff depot, UN/LOCODE | yes |
freedays | integer | Amount of days the container can be used with no charge by the user | yes |
per_diem | double | Per-day rental charge for container user | yes |
pickup_charge | doule | One time pickup charge for container user | yes |
damage_protection_plan | double | Damage protection plan. If monetary damage exceeds amount, user has to pay. In USD | yes |
discounted_residual_value | double | Discounted residual value. In USD | yes |
damage_protection_insurance | double | Damage protection insurance per container. In USD | yes |
Payload example:
[
{
"request_id": "12345",
"request_role": "supplier",
"partner": "xChange Member 10",
"container_type": "45HC",
"condition": "CARGO_WORTHY",
"amount": 10,
"pickup_depot": "CST Hamburg",
"pickup_unlocode": "DEHAM",
"dropoff_depot": "CNSHG",
"dropoff_unlocode": "Depot Xi",
"freedays": 30,
"per_diem": 1.5,
"pickup_charge": 0.5,
"damage_protection_plan": 200,
"discounted_residual_value": 700,
"damage_protection_insurance": 1000
}
]
B.2. Release creation
If you are the supplier of containers withing a trading- or one-way-leasing-deal you can create release documents automatically out of your software. This will make the release document available to download for the other party on xChange instantly.
This API Endpoint should be called after reserving the right amounts of containers and asigning the reservation a release number.
URL Structure
https://integration.container-xchange.com/connect/rest/api/v1/create-release?api_token=<api token>
Payload
Parameter | Datatype | Description | Mandatory? |
request_id | string | xChange request id for given release. | yes if ‘trading_id’ = null |
trading_id | string | xChange trading id for given release. | yes if ‘request_id’ = null |
ref_out | string | The release reference created by your company | yes |
val_date | string | Validity date of release. Default 14 days if left empty | no |
container_type | string | Container type | yes |
condition | string | Container condition | yes |
amount | integer | Amount of containers enclosed in release document | yes |
pickup_depot | string | Name of pickup depot | yes |
pickup_unlocode | string | Location of pickup depot, UN/LOCODE | yes |
depot_address_1 | string | Address line 1 of pickup depot | yes |
depot_address_2 | string | Address line 2 of pickup depot | no |
depot_zip | string | Zip code of pickup depot | no |
depot_phone | string | Phone number of pickup depot (e.g. +49 40 12345) | yes |
depot_email | string | Contact e-mail of pickup depot | yes |
additional_info | string | Additional info to be on the release document. ‘\n’ for linebreak | no |
Example:
curl -X POST "https://integration.container-xchange.com/connect/rest/api/v1/create-release?api_token=<API TOKEN>"
-H "accept: */*"
-H "Content-Type: application/json"
-d <payload>
Payload example:
[
{
"request_id": "X12345",
"trading_id": "",
"ref_out": "ABC-XYZ99999",
"val_date": "2020-10-15",
"container_type": "20DC",
"condition": "CARGO_WORTHY",
"amount": 10,
"pickup_depot": "CST Hamburg",
"pickup_unlocode": "DEHAM",
"depot_address_1": "Industriestrasse 55",
"depot_address_2": "",
"depot_zip": "21107",
"depot_phone": "+49 40 74119066",
"depot_email": "info@cst-container.com",
"additional_info": "Please make sure you advise your hauler to pick cargo worthy units as the release is ex-stack.\nKindly contact depot prior to sending trucks for collection."
}
]
C. Track your containers
This chapter specifies the payloads of tracking related events, like gate-in and -out movements of containers or more detailed tracking informations from determined by the MyFleet Tracking Engine. To enable your fleet for tracking, please refer to A.1. Inventory synchronization.
C.1. Receive tracking events
Tracking events are sent to you event based. This means that if xChange tracking engine registers a new event of one of your containers in your inventory, we call your API or webhook endpoints with the event data.
Please design your endpoints following the below defined parameters.
Parameter | Datatype | Description | Mandatory? |
container_number | string | Container number | yes |
event_date | string | Date of the event. YYYY-MM-DD | yes |
event_name | string | Describes the event | yes |
event_location | string | Location related to the event. UN/LOCODE | yes |
transport_mode | string | E.g. Vessel Name | no |
voyage | string | Voyage number | no |
eta | boolean | indicates, whether event_date refers to the estimated time of arrival | yes |
Payload example:
{
'container_number':'ABCU1234567',
'event_date':'2020-10-28',
'event_name':'Empty Returned (Off-hired)'
'event_location':'DEHAM',
'transport_mode':'M.S. Tina',
'voyage':'V. 125'
'eta': false
}
or
{
'container_number':'ABCU1234567',
'event_date':'2021-02-28',
'event_name':'Empty Returned (Off-hired)'
'event_location':'DEHAM',
'transport_mode':'',
'voyage':''
'eta': true
}
C.2. Gate-movements
Gate-movements can be both pushed to your backend as well as being provided to xChange.
Get gate-movements from xChange
As soon as a gate-in or -out movement is registered by xChange we push integrated customers these movements directly into their software.
Please design your endpoints following the below defined parameters.
Parameter | Datatype | Description | Mandatory? |
container_number | string | Container number | yes |
ref_out | string | The release number connected to the gate movement | no |
event | string | Describes the event. Possible values:
‘out’ : container loaded ‘in’: container unloaded ‘reset’: container back to ‘not-picked-up’-status |
yes |
depot_name | string | Depots name. Depending on ‘event’ pick-up or drop-off. In case of ‘event’:’reset’ –> pickup depot | yes |
depot_unlocode | string | Depot location, UN/LOCODE | yes |
Payload example:
[
{
"container_number": "ABCU1234567",
"ref_out": "REFxyz-123",
"event": "in",
"depot_name": "CST Hamburg",
"depot_unlocode": "DEHAM"
}
]
or
[
{
"container_number": "ABCU1234567",
"ref_out": "REFxyz-123",
"event": "out",
"depot_name": "CST Hamburg",
"depot_unlocode": "DEHAM"
}
]
Send gate-movements to xChange
Send gate-movements to xChange when they are entered manually to xChange, so that your partner gets this info faster and billing based on used days is seamless.
URL Structure:
https://integration.container-xchange.com/connect/rest/api/v1/gate-movement?api_token=<api token>
Parameter | Datatype | Description | Mandatory? |
container_number | string | Container number | yes |
ref_out | string | The release number connected to the gate movement | no |
event | string | Describes the event. Possible values:
‘out’ : container loaded ‘in’: container unloaded ‘reset’: container back to ‘not-picked-up’-status |
yes |
depot_name | string | Depots name. Depending on ‘event’ pick-up or drop-off. In case of ‘event’:’reset’ –> pickup depot | yes |
depot_unlocode | string | Depot location, UN/LOCODE | yes |
Example:
curl -X POST "https://integration.container-xchange.com/connect/rest/api/v1/gate-movement?api_token=<api token>"
-H "accept: */*"
-H "Content-Type: application/json"
-d "<payload>
Payload example:
[
{
"container_number": "ABCU1234567",
"ref_out": "REFxyz-123",
"event": "in",
"depot_name": "CST Hamburg",
"depot_unlocode": "DEHAM"
}
]
or
[
{
"container_number": "ABCU1234567",
"ref_out": "REFxyz-123",
"event": "out",
"depot_name": "CST Hamburg",
"depot_unlocode": "DEHAM"
}
]
D. Depot integrations
xChange offers different ways for depots to send gate movements to xChange for their customers. However, before sending customer related details to xChange as a third party, an information processing agreement must be signed by the customer to authorize the depot to send the data.
D.1. EDI
xChange supports EDIFACT/CODECO standard to receive and process gate movements. EDI messages can be saved on a dedicated SFTP-Server or sent to an e-mail inbox serving that purpose. Please get in touch with connect@container-xchange.com for more details.
D.2. API calls
You can provide us with event-based gate movements via a dedicated API endpoint. Please refer to section C.2. for more details on that.
D.3. ODBC
We can access a part of your database securely over ODBC. Please get in touch with us for more information on that topic.
Version 1.6 – Last revision: 10.08.2021
In case of any questions please use the contact form below.