You can use the Serialized Logistics V2 API to integrate the third-party systems with the Serialized Logistics application.
The Serialized Logistics V2 API uses the Representational State Transfer (REST) standard to interact with other systems.
The Serialized Logistics V2 API is an extension of the Serialized Logistics application of Movilitas.Cloud and enables you to send requests from external systems to the application.
This article describes how to create an outbound order in Movilitas.Cloud by using the Serialized Logistics V2 API.
API Tool to Use
In this document, we provide examples by using the cURL command-line tool. To send the API request, you can find a lot of user-friendly REST API tools on the Internet, for example, Postman.
Before You Begin
Before you start sending any messages:
1. You must enable the Serialized Logistics application in the Admin UI.
2. You must create an API key and secret.
3. You must create a shopfloor channel with Serialized Logistics V2 API source. You will need the channel key for your requests.
4. You must configure the Serialized Logistics application.
5. You must have the authentication token to send requests over API. Select one of the following ways:
- Apply a dynamic token. Send an authentication request over the Authentication API. For more information about the Authentication API, open the Tenant Dashboard in Movilitas.Cloud, select API keys, and choose Authentication API Documentation. Also, see Authentication Request.
- Apply a static token. Generate a static token for your previously created API key.
For more information, see Configuring the Movilitas.Cloud APIs.
Procedure
1. Use the POST method and the following URL:
https://api.movilitas.cloud/v1/serialized_logistics/v2/api/outbound_orders
2. For the header, define the content type (JSON), the authentication token, and the channel key.
The token can be given in one of the following ways:
- As x-access-token header.
- As Authorization header by using the Bearer schema.
Header Option 1:
Key | Action |
---|---|
Content-Type | Apply JSON format for the content. Use the value application/json. |
x-access-token | Provide the authentication token. |
x-channel-key | Provide the channel key of your Serialized Logistics V2 API channel. |
Header Option 2:
Key | Action |
---|---|
Content-Type | Apply JSON format for the content. Use the value application/json. |
Authorization | Provide the authentication token as Bearer <token>. |
x-channel-key | Provide the channel key of your Serialized Logistics V2 API channel. |
3. In the body of the request, define the parameters and their values based on the table below.
Field | Required or Optional? | Type | Description |
---|---|---|---|
order_id | Required | String | Order ID |
order_type | Required | String | The type of the order. Enter one of the following values:
|
order_date | Optional | String | Order date. GS1 format YYMMDD. For example, 2021 December 15 is "211215". |
expected_shipping_date | Optional | String | Expected shipping date. GS1 format YYMMDD. For example, 2021 December 15 is "211215". |
deadline | Optional | String | Order deadline. GS1 format YYMMDD. For example, 2021 December 15 is "211215". |
delivery_id | Optional | String | Delivery ID. If not specified, the deliver ID takes the order ID value. |
source_warehouse_tag | Optional | String | The warehouse tag that identifies the sending warehouse. Note: Make sure that you have registered the warehouse in the Serialized Logistics application --> Site management --> Warehouses tab and apply the value given in the Warehouse tag field. |
destination_warehouse_tag | Optional | String | The warehouse tag that identifies the receiving warehouse. Only applicable to outbound internal orders. Note: Make sure that you have registered the warehouse in the Serialized Logistics application --> Site management --> Warehouses tab and apply the value given in the Warehouse tag field. |
client_id | Optional | String | The client ID that identifies the client who purchased the order. Only applicable to outbound external orders. Note: Make sure that you have registered the client in the Serialized Logistics application --> Site management --> Clients tab and apply the value given in the Client ID field. |
allow_unlimited_over_under_delivery | Optional | Boolean | Enables you to deliver an unlimited amount for the order, ignoring the target quantity. The setting can be one of the following:
If the field is not included in the request, the default value is "true", meaning that by default, an unlimited delivery is allowed. |
over_delivery_tolerance | Optional | Number | Overdelivery tolerance in percentage (%) for the order. Only applicable when "allow_unlimited_over_under_delivery" is set to "false". The allowed value is 0 or a value that is greater than 0. The default value is 0. |
under_delivery_tolerance | Optional | Number | Underdelivery tolerance in percentage (%) for the order. Only applicable when "allow_unlimited_over_under_delivery" is set to "false". The allowed value is 0 or a value that is greater than 0. The default value is 0. |
item_list | Required | Object[] | The object array of the line items related to the order. Each line item object contains the details of the line item. You can add multiple line items that have different or the same product data, there is no restriction. For example:
|
item_number | Required | String | Line item number |
product_code_type | Required | String | Product code type. The application supports the following values:
|
product_code | Required | String | Product code according to GTIN, PPN, or CNK product code type. If the product code is not existing, it will be automatically created and connected to the tenant in Movilitas.Cloud. |
product_description | Optional | String | Product description (product name). Free-form text field. |
batch | Optional | String | Product batch as per the GS1 standard. |
expiration_date | Optional | String | Product expiration date. GS1 format YYMMDD. For example, 2021 December 15 is "211215". |
quantity | Required | Number | The quantity of the line item. This is the number of items (units) to be received. |
unit_of_measurement | Required | String | The unit of measurement for the quantity. For example, an ISO code (EA, BE, etc). |
sales_quantity | Optional | Number | The sales quantity of the line item. |
sales_unit_of_measurement | Optional | String | The sales unit of measurement for the sales quantity. |
4. Send the request. The order is created and is in Open status that you can check under the Serialized Logistics application --> Orders --> Outbound orders tab.
Sample cURL Request
curl -X POST \ https://api.movilitas.cloud/v1/serialized_logistics/v2/api/outbound_orders \ -H 'Content-Type: application/json' \ -H 'x-access-token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJzX2FqazQyS2RLQWhHciE3TUZtY1Q2UzhTQ3NDQ2hzc2RoTXRFUlNBIUNwUDhlZDkzU2htQ0hoaHIyTmg3Y0dBIiwiX2lkIjoiNWQyNzA4ZDc3NDQ1OTcxYjI5MmY4ZDI3IiwiaWF0IjoxNTY0MDU5ODc2LCJleHAiOjE1NjQxNDYyNzZ9.TBMv71CaxCNtE1opQMk0f1ncfbnZ0Cwnu7MWkTzkQqA' \ -H 'x-channel-key: Ky1SpfEXmjj05fW3USBFD3pgoEi9AQ29Atsnj4Zy' \ -d '{ "order_id": "OUT24043001", "order_type": "External", "order_date": "240430", "expected_shipping_date": "240530", "deadline": "240530", "delivery_id": "SHP/DEL/OUT24043001", "source_warehouse_tag": "wh-in-usa", "client_id": "client-in-usa", "allow_unlimited_over_under_delivery": true, "item_list": [ { "item_number": 1, "product_code_type": "GTIN", "product_code": "00300024463301", "product_description": "Cialis", "quantity": 6, "unit_of_measurement": "EA", "sales_unit_of_measurement": "EA", "sales_quantity": 6 }, { "item_number": 2, "product_code_type": "GTIN", "product_code": "00300024182301", "product_description": "Olumiant", "quantity": 6, "unit_of_measurement": "EA", "sales_unit_of_measurement": "EA", "sales_quantity": 6 } ] }'
Sample Response (Success 200)
{ "success": true, "message": "Outbound order created" }
Admin UI Example
Errors and Resolution
This section lists some of the most general error messages or error types when sending the request.
Error Message or Error Type | Error Code | Description |
---|---|---|
No token provided | ERR0001 | No authentication token is provided. Ensure that you add the authentication token to the header of the request. |
Failed to authenticate token | ERR0000 | Failed to authenticate the provided token. Double-check if your token has expired or has been revoked. Obtain a valid token by generating a static one or by getting a dynamic one through Authentication API. |
Channel ID is missing or it needs to be in correct format | - | The channel key of your Serialized Logistics V2 API channel is not specified in the request. To get the channel key, go to Tenant Dashboard --> Channels in the Admin UI, open your Serialized Logistics V2 API channel, and find the channel key on the top of the Edit shopfloor channel panel. |
Request body could not be parsed | - | The syntax of the request body is not correct, for example, a comma is missing at the end of a field. Make sure that the request body is defined in the correct way and that you use JSON format. |
Validation error | - | The given data is invalid. It does not follow the required data type or pattern. The response includes details about the specific issue. Follow the explanation in the response and correct your data. |
Outbound order already exists | - | The order cannot be created because the order is already existing in the database. |