Introduction
DeepPack API Documentation
This API reference contains comprehensive information about how to use every endpoint in DeepPack’s REST API.
Each API reference contains example code for implementing the endpoints in your solution.
Before you can use DeepPack's API, you must obtain an access key.
How to use the api key
The API key is generated from the application.
All API keys issued are valid for a period of 2 years from the date of creation.
After this period, the key will expire and a new one must be generated.
Please ensure to track your key's creation date and plan for timely renewal to avoid service interruptions.
Generating a new key will override and revoke the current one.
The api key can be revoked through the application to stop its usage.
Once you have your key, you must include in every API request inside the following http header :
x-deeppack-api-key = YOUR_API_KEY
The base URL must be included in every request when using the API.
BaseURL : https://api.deeppack.ai/api/v1
Through API access, the user will operate within the organization previously built for them.
Note
All responses from the API come in the following format:
Success Response Example
{
"status": "Success",
"result": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"errorCode": null,
"errorMessage": null
}
Error Response Example
{
"status": "failure",
"result": "00000000-0000-0000-0000-000000000000",
"errorCode": "Common.Errors.ValidationFailed",
"errorMessage": "Error Validation Message"
}
{
"status" : "Success if the API responds",
"result" : "the result as simple or complex type",
"errorCode" : "http status code",
"errorMessage" : "empty if no error"
}
Throughout the documentation, we will only detail the “result” property.
Errors
The DeepPack API uses conventional HTTP response codes to indicate the outcome of an API request. Response codes can be
grouped into the following categories:
4xx: An error occurred due to the information provided, e.g., missing or incorrect parameters.
5xx: Those errors are returned if there was an error in the DeepPack servers.
Error Message Codes Definition
Error Code | Description |
---|---|
500 | Internal server Error |
401 | User authenticated but not authorized |
403 | Forbidden, could not be authenticated |
Containers
Create Container
Summary: Create a container that will be shared within the organization
HTTP Request
POST /api/v1/containers
Request example
{
"name": "Container name",
"containerType": 1,
"height": 100,
"length": 100,
"width": 100,
"maximumHeight": 0,
"maximumCargoWeight": 0,
"emptyWeight": 0
}
JSON Payload
Request
Property | Type | Validation Rule | Description |
---|---|---|---|
name | string | Required and Unique | the name of the container |
containerType | int | Required and Only Sea Container, Box and Ground Pallet creation is available | The type of the container (SeaContainer:1, ULD:2, AirPallet:3, GroundPallet:4, Box:5) |
height | decimal | Required and it must be a positive decimal bigger than 0 | height in selected unit of measure |
width | decimal | Required and it must be a positive decimal bigger than 0 | width in selected unit of measure |
length | decimal | Required and it must be a positive decimal bigger than 0 | length in selected unit of measure |
maximumHeight | decimal | Required when the type is GroundPallet and must be a positive decimal bigger than 0 and bigger than the height, | maximum height of the pallet in selected unit of measure |
maximumCargoWeight | decimal | Required and it must be a positive decimal bigger than 0 | max weight of the cargo in selected unit of measure |
emptyWeight | decimal | Required and it should be a positive decimal bigger than 0 | weight of the pallet when empty in selected unit of measure |
Response example
{
"result": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
Response
Property | Type | Description |
---|---|---|
Result | UUID | the id of the created container |
Products and containers have a dimension limitation of 1 mm, equivalent to 0.003 feet or 0.039 inches. Please ensure that all product and container dimensions adhere to this restriction.
Get Container by ID
Summary: Get a container by its ID
HTTP Request
GET /api/v1/containers/{containerId}
The endpoint does not contain a request example, only a response.
Response example
{
"result": {
"id": "1254789-9874415263-98774598",
"height": 0,
"length": 0,
"width": 0,
"maximumHeight": 0,
"emptyWeight": 0,
"maximumCargoWeight": 0,
"containerType": 1,
"isEnabled": true,
"maxGrossWeight": 0,
"internalVolume": 0,
"centerOfGravity": {
"x": 0,
"y": 0,
"z": 0
},
"containerDimensions": {
"x": 0,
"y": 0,
"z": 0
},
"uldInfo": {
"iataCode": "iataCode",
"ataCode": "ataCode",
"points": {
"point1": {
"x": 0,
"y": 0,
"z": 0
},
"point2": {
"x": 0,
"y": 0,
"z": 0
},
"point3": {
"x": 0,
"y": 0,
"z": 0
},
"point4": {
"x": 0,
"y": 0,
"z": 0
},
"point5": {
"x": 0,
"y": 0,
"z": 0
},
"point6": {
"x": 0,
"y": 0,
"z": 0
},
"point7": {
"x": 0,
"y": 0,
"z": 0
},
"point8": {
"x": 0,
"y": 0,
"z": 0
}
}
},
"organizationId": "organizationId",
"userId": "userId",
"name": "name",
"transportationMode": "seaAndLand",
"createdOn": "2023-01-25T10:37:48.252Z",
"isUsedByRun": true
}
}
Parameters
Name | type | Description | Required |
---|---|---|---|
containerId | UUID | Id of the container | Yes |
Response
Property | Type | Description |
---|---|---|
id | UUID | Container ID |
height | decimal | Height in selected unit of measure |
width | decimal | width in selected unit of measure |
maximumHeight | decimal | maximumHeight of the container (GroundPallet type) in selected unit of measure |
maximumCargoWeight | decimal | max weight of the cargo in selected unit of measure |
emptyWeight | decimal | weight of the container when empty in selected unit of measure |
containerType | int | The type of the container (SeaContainer:1, ULD:2, AirPallet:3, GroundPallet:4, Box:5) |
isEnabled | boolean | To enable or disable a container already created |
maxGrossWeight | boolean | The maximum weight of the container |
internalVolume | boolean | The internal volume of the container in selected unit of measure |
centerOfGravity | Point(X,Y,Z) | The coordinates (X,Y,Z) of the center of gravity of the container |
containerDimensions | ContainerDimensions(X,Y,Z) | The dimensions of the container in selected unit of measure (X : length, Y : width , Z : height or maximumHeight when it's GroundPallet) |
uldInfo | uldInfo | To be detailed in the following table |
organizationId | string | The id of the organization |
userId | string | User Id |
name | string | The name of the container |
transportationMode | string | Read only property for the container set automatically depending on its type |
createdOn | string | The date of the container creation |
isUsedByRun | boolean | flag to notify whether the container is used in a run or not |
ULDInfo
Property | Type | Description |
---|---|---|
iataCode | string | IATA’s Identification Code for ULDs and Pallets |
ataCode | string | ATA’s Identification Code for ULDs and Pallets |
Points | List(Point) | a list of 8 points that define the ULD and pallet crops |
Point1...8 | Point | coordinates (X,Y,Z) |
Get All Containers
Summary: Get the list of all containers within an organization
HTTP Request
Get /api/v1/containers
Response example
{
"result": {
"id": "string",
"height": 0,
"length": 0,
"width": 0,
"emptyWeight": 0,
"maximumCargoWeight": 0,
"containerType": 1,
"isEnabled": true,
"maxGrossWeight": 0,
"internalVolume": 0,
"centerOfGravity": {
"x": 0,
"y": 0,
"z": 0
},
"containerDimensions": {
"x": 0,
"y": 0,
"z": 0
},
"uldInfo": {
"iataCode": "string",
"ataCode": "string",
"points": {
"point1": {
"x": 0,
"y": 0,
"z": 0
},
"point2": {
"x": 0,
"y": 0,
"z": 0
},
"point3": {
"x": 0,
"y": 0,
"z": 0
},
"point4": {
"x": 0,
"y": 0,
"z": 0
},
"point5": {
"x": 0,
"y": 0,
"z": 0
},
"point6": {
"x": 0,
"y": 0,
"z": 0
},
"point7": {
"x": 0,
"y": 0,
"z": 0
},
"point8": {
"x": 0,
"y": 0,
"z": 0
}
}
},
"organizationId": "string",
"userId": "string",
"name": "string",
"transportationMode": "seaAndLand",
"createdOn": "2023-01-25T10:37:48.252Z",
"isUsedByRun": true
}
}
Response
Property | Type | Description |
---|---|---|
Result | List(Container) | A list that contains all information about the containers: dimensions, types, and volumes.For ULDs and Pallets, "uldInfo" previously mentioned, contains all points and codes relevant to this type of container. |
Delete Container By its ID
Summary: Delete a container by its id
HTTP Request
DELETE /api/v1/containers/{containerId}
Response example
{
"status": "Success"
}
Parameters
Name | type | Description | Required |
---|---|---|---|
containerId | UUID | Id of the container | Yes |
Containers that are already used by previous runs couldn't be deleted.
Delete multiple containers
Summary: Delete a list of containers using their ids
HTTP Request
DELETE /api/v1/containers/batch
Response example
{
"status": "Success",
"errorCode": null,
"errorMessage": null
}
Parameters
Name | type | Description | Required |
---|---|---|---|
containerIds | array of string | Ids of containers to be deleted | Yes |
Containers that are already used by previous runs couldn't be deleted.
Loads
Create Load
Summary: Create a new load
HTTP Request
POST /api/v1/loads
JSON Payload
Request
{
"name": "string",
"isUnloadingPriorityEnabled": true,
"isLoadingPriorityEnabled": true,
"transportationMode" : 1,
"items": [
{
"productName": "item1 name",
"shipmentName": "shipment1 name",
"weight": 0,
"diameter": 0,
"height": 100,
"length": 100,
"width": 100,
"quantity": 10,
"rotation": 0,
"stackingGround": false,
"stackingOnTop": true,
"crushingLimit": 1,
"unloadingPriority": 1,
"color": "#00FF00",
"shape": "box"
},
{
"productName": "item2 name",
"shipmentName": "shipment2 name",
"weight": 0,
"diameter": 0,
"height": 200,
"length": 200,
"width": 200,
"quantity": 10,
"rotation": 0,
"stackingGround": false,
"stackingOnTop": true,
"crushingLimit": 1,
"unloadingPriority": 1,
"loadingPriority": 1,
"color": "#00FF00",
"shape": "box"
}
]
}
Response example
{
"status": "success",
"result": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
Property | type | Validation Rule | Description |
---|---|---|---|
name | string | Required unique | the name of the load |
isUnloadingPriorityEnabled | boolean | optional | Flag to check if the UnloadingPriority is enabled in the load set to false for air transportation mode |
isLoadingPriorityEnabled | boolean | optional | Flag to check if the LoadingPriority (Must Go) is enabled in the load set to true for air transportation mode |
transportationMode | integer | Required | Define the load transportation mode 1 = "seaAndLand" 2 = "Air" |
items | list | Required | the list of load items |
Item fields
Property | type | Validation Rule | Description |
---|---|---|---|
productName | string | ProductName should be unique across a load | The product name requirement depends on the chosen naming strategy : Manual product naming. (Product names are mandatory and are assigned by the user). Automatic product naming. (Product names are optional and are automatically generated as the combination of Shipment name and Counter.) |
ShipmentName | string | This parameter is optional and will be set to a default value if not assigned. | Identifies the shipment of a group of items |
weight | decimal | Not Required. If set Weight must be between 0 and 2000, inclusive. | The weight of the product |
diameter | decimal | Box : Not Required, Cylinder : required and must be a decimal greater than 0 | The diameter of the product |
height | decimal | Required and must be a decimal greater than 0 | The height of the product |
length | decimal | Required if the Shape is Box, should be decimal greater than 0 | The length of the product |
width | decimal | Required and must be an decimal greater than 0 | The width of the product |
quantity | integer | Required and must be an integer greater than 0 | The quantity of the product |
rotation | integer | Required, rotation value is by default 63 (should be between 1 and 63) and no rotation is allowed for cylinders (cylinder rotation must be set at 32) . For more details you can check the data description on the application | the rotation of the product |
stackingGround | boolean | Constraint currently unavailable, value will be forced to false. | Item must be stacked on ground 1: yes, 0: no |
stackingOnTop | boolean | Required | Item is stackable on top 1: yes, 0: no |
crushingLimit | decimal | Not required, if set value must be greater than 0. | The total weight that can be placed above an item |
unloadingPriority | integer | Not required, if not set the default value will be the least priority possible . if set value must be equal or greater then 1 | The priority of unloading an item |
loadingPriority | integer | Not required, if not set the default value will be the least priority possible . if set value must be equal or greater then 1, for Air Transportation Mode only 1 is accepted to indicate the item is a Must-Go item | The priority of loading an item, more specifically lower value indicates item should go first into the container |
color | string | Not Required | The color of the item in Hexadecimal, a random color will be added if no value provided |
shape | string | Required, Constraint currently unavailable, only shape available is box. | The shape of the item (box or cylinder) |
Products and containers have a dimension limitation of 1 mm, equivalent to 0.003 feet or 0.039 inches. Please ensure that all product and container dimensions adhere to this restriction.
Get Load By its Id
Summary: Get load by its ID
HTTP Request
GET /api/v1/loads/{loadid}
Response example
{
"status": "success",
"result": [
{
"organizationId": "organizationName",
"supportRatioDefaultValue": 0,
"userId": "UserID",
"createdBy": "string",
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "Load Name",
"transportationMode" : "seaAndLand",
"sharedStatus": true,
"runsCount": 2,
"numberOfContainers": 2,
"percentageFilledOfLastContainer": 0.1,
"isEditable": true,
"isDeletable": true,
"createdOn": "2023-01-25T12:50:25.667Z",
"updatedOn": "2023-01-25T12:50:25.667Z",
"items": [
{
"productName": "item1 name",
"weight": 0,
"diameter": 0,
"height": 100,
"length": 100,
"width": 100,
"quantity": 10,
"rotation": 0,
"stackingGround": false,
"stackingOnTop": true,
"crushingLimit": 1,
"unloadingPriority": 1,
"color": "#00FF00",
"shape": "box"
},
{
"productName": "item2 name",
"weight": 0,
"diameter": 0,
"height": 1000,
"length": 1000,
"width": 1000,
"quantity": 30,
"rotation": 0,
"stackingGround": false,
"stackingOnTop": true,
"crushingLimit": 1,
"unloadingPriority": 1,
"loadingPriority": 1,
"color": "#00FF00",
"shape": "box"
}
],
"isUnloadingPriorityEnabled": true,
"isLoadingPriorityEnabled": true
}
]
}
Parameters
Name | Type | Description | Required |
---|---|---|---|
loadId | UUID | The Id of the load | True |
Response
Property | type | Description |
---|---|---|
organizationId | string | the organization id |
userId | string | the user id |
createdBy | string | the user full name |
id | uuid | the load id |
name | string | the load name |
transportationMode | integer | load transportation mode |
runsCount | integer | Number of runs for a given load |
numberOfContainers | integer | Number of containers in the run |
percentageFilledOfLastContainer | decimal | percentage filled of the last Container |
isEditable | boolean | flag to define if the load is editable |
isDeletable | boolean | flag to define if the load is deletable |
createdOn | datetime | Load creation date |
updatedOn | datetime | Load update date |
items | List(item) | list of items in the load |
isUnloadingPriorityEnabled | boolean | Flag to check if the UnloadingPriority is enabled in the load set to false for air transportation mode |
isLoadingPriorityEnabled | boolean | Flag to check if the LoadingPriority (Must Go) is enabled in the load set to true for air transportation mode |
Items fields
Property | type | Description |
---|---|---|
productName | string | The name of the product |
weight | decimal | The weight of the product |
diameter | decimal | The diameter of the product |
height | decimal | The height of the product |
length | decimal | The length of the product |
width | decimal | The width of the product |
quantity | integer | The quantity of the product |
rotation | integer | the rotation of the product |
stackingGround | boolean | Item stacking ground |
stackingOnTop | boolean | Items stacking on top |
crushingLimit | decimal | The total weight that can be placed above an item (The crushing limit is temporarily unavailable.) |
unloadingPriority | integer | The priority of unloading item (e.g. indicates how close the item is to the door for ULD containers) |
loadingPriority | integer | The priority of loading item (i.e. which items should be loaded first) |
color | string | The color of the item in Hexadecimal |
shape | string | The shape of the item (box,cylinder) |
Get All Loads
Summary: Get all loads by organization (Paginated Call).
HTTP Request
GET /api/v1/loads?pageNumber={pageNumber}&pageSize={pageSize}&loadFilter={LoadFilter}&loadName={loadName}'
Response example
{
"result": {
"pageInfo": {
"size": 20,
"number": 1,
"total": 3
},
"data": [
{
"organizationId": "organizationName",
"supportRatioDefaultValue": 0,
"userId": "UserID",
"createdBy": "string",
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "Load Name",
"transportationMode" : "SeaAndLand",
"runsCount": 2,
"numberOfContainers": 2,
"percentageFilledOfLastContainer": 0.1,
"isEditable": true,
"isDeletable": true,
"createdOn": "2023-01-25T12:50:25.667Z",
"updatedOn": "2023-01-25T12:50:25.667Z",
"items": [
{
"productName": "item name",
"weight": 0,
"diameter": 0,
"height": 100,
"length": 100,
"width": 100,
"quantity": 10,
"rotation": 0,
"stackingGround": false,
"stackingOnTop": true,
"crushingLimit": 1,
"unloadingPriority": 0,
"color": "#00FF00",
"shape": "box"
}
],
"isUnloadingPriorityEnabled": true,
"isLoadingPriorityEnabled": true
},
{
"organizationId": "organizationName",
"supportRatioDefaultValue": 0.7,
"userId": "UserID",
"createdBy": "string",
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa7",
"name": "Load Name",
"sharedStatus": true,
"runsCount": 3,
"numberOfContainers": 2,
"percentageFilledOfLastContainer": 0.1,
"isEditable": true,
"isDeletable": true,
"createdOn": "2023-01-25T12:50:25.667Z",
"updatedOn": "2023-01-25T12:50:25.667Z",
"items": [
{
"productName": "item name",
"weight": 0,
"diameter": 0,
"height": 100,
"length": 100,
"width": 100,
"quantity": 10,
"rotation": 0,
"stackingGround": false,
"stackingOnTop": true,
"crushingLimit": 1,
"unloadingPriority": 1,
"loadingPriority": 1,
"color": "#00FF00",
"shape": "box"
}
],
"isUnloadingPriorityEnabled": true,
"isLoadingPriorityEnabled": true
}
]
}
}
Query Parameters
Name | Type | Description | Required | Default |
---|---|---|---|---|
pageNumber | integer | Page number >= 1 | False | 1 |
pageSize | integer | Number of elements per page (Max is 50) | False | 20 |
LoadFilter | string | A filter from the following list : "All" ; "Mine" | False | All |
LoadName | string | A filter by load name | False |
Response
Property | Type | Description |
---|---|---|
PageInfo | PageInfo | size = number of elements per page. number : requested page number. total : total pages |
TotalCount | integer | Total count of the accessible loads |
Data | List(Load) | A list that contains all information on the organization’s loads |
Filters | List(Load) | Confirmation of the used LoadFilter |
Update Load
Summary: Update a load by its ID
Request
{
"name": "string",
"TransportationMode" : 1,
"items": [
{
"productName": "ProductNewName",
"weight": 100,
"diameter": 0,
"height": 520,
"length": 140,
"width": 110,
"quantity": 20,
"rotation": 10,
"stackingGround": false,
"stackingOnTop": true,
"crushingLimit": 1,
"unloadingPriority": 1,
"loadingPriority": 1,
"color": "#00FF00",
"shape": "box"
}
]
}
HTTP Request
PUT /api/v1/loads/{loadid}
Response example
{
"status": "string"
}
Parameters
Name | Type | Description | Required |
---|---|---|---|
loadId | UUID | The Id of the load | True |
Loads that are already used by previous runs couldn't be edited.
Delete Load
Summary: Delete a load by its ID
HTTP Request
DELETE /api/v1/loads/{loadid}
Response example
{
"status": "success"
}
Parameters
Name | Type | Description | Required |
---|---|---|---|
loadId | UUID | The Id of the load | Yes |
Runs
Create Run
Summary: Create a new run in a given load, by specifying the container to be used for the run and the execution strategy.
HTTP Request
POST /api/v1/loads/{loadid}/runs
Json Payload
Request example
{
"name": "run name",
"containers": [
{
"containerId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"count": 3,
"targetCenterOfGravity": {
"x": 500,
"y": 500,
"z": 500
}
},
{
"containerId": "76485f64-5717-4562-b3fc-2c963f66afa9",
"count": 2,
"targetCenterOfGravity": {
"x": 300,
"y": 300,
"z": 300
}
}
],
"loadPlanning": 2,
"executionMode": 1,
"ceilingClearance": 0,
"ignoreInvalidItems": false
}
Response example
{
"status": "success",
"result": {
"runId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"status": "created",
"invalidItems": {
"item": {
"productName": "item1 name",
"weight": 0,
"diameter": 0,
"height": 100,
"length": 100,
"width": 100,
"quantity": 10,
"rotation": 0,
"stackingGround": false,
"stackingOnTop": true,
"crushingLimit": 1,
"unloadingPriority": 1,
"loadingPriority": 1,
"color": "#00FF00",
"shape": "box"
},
"reasons": ["some_reason"]
}
}
}
Request
Property | Type | Validation Rule | Description |
---|---|---|---|
name | string | Required, should be unique and equal or less than 100 characters long. | the name of the run. |
containers | list of containers | Required : Selected containers in one run must belong to the same container type: (Sea Containers, Air Containers (Air Pallets + ULDs), or Ground Pallets). Target center of gravity should be used with Sea Containers and its Coordinates should not exceed the dimensions of the container used. Z -> Height Y-> Width X-> Length. In case the user provides incorrect values: Error: Target Center of Gravity Out of Bounds | a list of containers including the containerId , the number of containers to be used and the target center of gravity of the container. Each container has a pre-defined center of gravity: centerOfGravity, corresponding to its geometrical center of gravity. The user can choose the desired location for the center of gravity by editing the Target Center of Gravity. Target Center of Gravity is by default set to the empty container CoG with Z = 0. |
loadPlanning | integer | Required : (Container Volume minimization:1, Shipment Maximization:2) | The load planning method to be used: Volume minimization: List of containers without specifying quantity. Shipment Maximization: List of containers with specifying the quantity. |
executionMode | integer | Required : (Instant:1) | the type of optimization is restricted to Instant for now |
ceilingClearance | integer | Not Required | optional value that is only applied for runs with Sea Containers and defines the space to be left empty near the ceiling of a container |
ignoreInvalidItems | boolean | Not Required | optional value defaulted to false. when set to true will force the run execution by ignoring invalid items |
Parameters
Name | Type | Description | Required |
---|---|---|---|
loadId | UUID | Id of the load containing the items to fit inside the container | Yes |
Response
Property | Type | Description |
---|---|---|
runId | UUID | unique identifier (uuid) of the run if created otherwise null |
status | string | status of the run. Invalid is the there invalid items and IgnoreInvalidItems = false otherwise Created |
invalidItems | List(InvalidItems) | list of invalid items : definition and reasons of invalidity within this run |
Get Run by its Id
Summary: Get a run corresponding to a specific load ID
HTTP Request
Get api/v1/loads/{loadId}/runs/{runId}
Parameters
Name | Type | Description | Required |
---|---|---|---|
loadId | uuid | the id of the load on which the run was executed | Yes |
runId | uuid | the id of the run | Yes |
Response example
{
"status": "success",
"result": {
"runRequest": {
"userId": "google-oauth2|userId",
"createdBy": "FullName",
"id": "90ddaa35-aee8-4cbd-93f1-022618b64f28",
"name": "Run Name",
"loadId": "7fb553a9-a1ab-4f6f-90a2-0931167df1c0",
"runContainersInfos": [
{
"containerId": "98785f64-5717-4562-b3fc-2c963f66afb8",
"containerName": "20 Standard",
"count": 2
},
{
"containerId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"containerName": "40 standard",
"count": 1
}
],
"executionMode": 1,
"timeLimit": 0,
"supportRatio": 0.7,
"ceilingClearance": null
},
"runResult": {
"status": "Succeeded",
"createdOn": "2023-01-30T13:26:21.404488",
"startedOn": "2023-01-30T13:26:22.305268",
"finishedOn": "2023-01-30T13:26:25.455553",
"updatedOn": "2023-01-30T13:26:25.45662",
"isBestRun": false,
"score": 2.04235,
"containers": {
"count": 2,
"data": [
{
"id": "90ddaa35aee84cbd93f1022618b64f28",
"index": 1,
"filledVolume": 28.6838611,
"filledPercentage": 0.86408,
"filledWeight": 0,
"totalWeight": 0,
"filledWeightPercentage": 0,
"itemsCount": 350
},
{
"id": "78ddaa35aee84cbd93f1022618b64f89",
"index": 2,
"filledVolume": 1.4057589,
"filledPercentage": 0.042350000000000006,
"filledWeight": 0,
"totalWeight": 0,
"filledWeightPercentage": 0,
"itemsCount": 25
}
]
}
},
"remainingItems": [
{
"item": {
"productName": "item1 name",
"weight": 0,
"diameter": 0,
"height": 100,
"length": 100,
"width": 100,
"quantity": 10,
"rotation": 0,
"stackingGround": false,
"stackingOnTop": true,
"crushingLimit": 1,
"unloadingPriority": 1,
"loadingPriority": 1,
"color": "#00FF00",
"shape": "box"
},
"status": "invalid",
"reasons": ["some_reason"]
}
]
}
}
Response
runRequest
Property | Type | Description |
---|---|---|
userId | string | The id of the user who launched the run |
createdBy | string | full name of the user who launched the run |
id | uuid | the id of the run |
name | string | the name od the run |
loadId | uuid | the id of the load to which the run belongs |
runContainersInfos | list of containers | the list of containers selected when creating a run : containing the id, the name and the count of each container |
executionMode | integer | type of strategy used to optimize the load |
timeLimit | integer | the time limit set for the run initially (0 if instant run) |
supportRatio | decimal | the support Ratio of items in the load |
ceilingClearance | integer | the ceiling clearance |
runResult
Property | Type | Description |
---|---|---|
status | string | the status of the run |
createdOn | datetime | Run creation date and time |
startedOn | datetime | Run start date and time |
finishedOn | datetime | Run finish date and time |
updatedOn | datetime | Run update date and time |
isBestRun | boolean | flag to define if the run is the best one |
score | decimal | the score of the run |
containers | List(container) | the id of the load to which the run belongs |
remainingItems | List(RemainingItem) | the list of remaining items along with the status "Invalid" (1) or "NotPacked" (2) |
Containers data
Property | Type | Description |
---|---|---|
id | uuid | the container id |
index | integer | index of the container |
filledVolume | decimal | the filled volume of the container |
filledPercentage | decimal | The percentage of container volume filled |
filledWeight | decimal | the filled weight of the container |
totalWeight | decimal | the total weight of the container (filledWeight + emptyContainerWeight) |
filledWeightPercentage | decimal | the filled weight percentage of the container |
itemsCount | integer | the number of items inside the container |
achievedMaximumHeight | decimal | returns the achieved maximum height of the items inside a container of type ground pallet. |
Get All Runs
Summary: Get all runs belonging to a load
Response example
{
"status": "success",
"result": [
{
"runRequest": {
"userId": "google-oauth2|userId",
"createdBy": "FullName",
"id": "90ddaa35-aee8-4cbd-93f1-022618b64f28",
"name": "Run Name",
"loadId": "7fb553a9-a1ab-4f6f-90a2-0931167df1c0",
"runContainersInfos": [
{
"containerId": "98785f64-5717-4562-b3fc-2c963f66afb8",
"containerName": "20 Standard",
"count": 2
},
{
"containerId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"containerName": "40 standard",
"count": 1
}
],
"executionMode": 1,
"timeLimit": 0,
"supportRatio": 0.7,
"ceilingClearance": null
},
"runResult": {
"status": "Succeeded",
"createdOn": "2023-01-30T13:26:21.404488",
"startedOn": "2023-01-30T13:26:22.305268",
"finishedOn": "2023-01-30T13:26:25.455553",
"updatedOn": "2023-01-30T13:26:25.45662",
"isBestRun": false,
"score": 2.04235,
"containers": {
"count": 2,
"data": [
{
"id": "98785f64-5717-4562-b3fc-2c963f66afb8",
"index": 1,
"filledVolume": 28.6838611,
"filledPercentage": 0.86408,
"filledWeight": 0,
"totalWeight": 0,
"filledWeightPercentage": 0,
"itemsCount": 350
},
{
"id": "98785f64-5717-4562-b3fc-2c963f66afb8",
"index": 2,
"filledVolume": 1.4057589,
"filledPercentage": 0.042350000000000006,
"filledWeight": 0,
"totalWeight": 0,
"filledWeightPercentage": 0,
"itemsCount": 25
}
]
}
},
"remainingItems": [
{
"item": {
"productName": "item1 name",
"weight": 0,
"diameter": 0,
"height": 100,
"length": 100,
"width": 100,
"quantity": 10,
"rotation": 0,
"stackingGround": false,
"stackingOnTop": true,
"crushingLimit": 1,
"unloadingPriority": 1,
"loadingPriority": 1,
"color": "#00FF00",
"shape": "box"
},
"status": "invalid",
"reasons": ["some_reason"]
}
]
},
{
"runRequest": {
"userId": "google-oauth2|userId",
"createdBy": "FullName",
"id": "90ddaa35-aee8-4cbd-93f1-022618b64f28",
"name": "Run Name",
"loadId": "7fb553a9-a1ab-4f6f-90a2-0931167df1c0",
"runContainersInfos": [
{
"containerId": "98785f64-5717-4562-b3fc-2c963f66afb8",
"containerName": "20 Standard",
"count": 2
},
{
"containerId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"containerName": "40 standard",
"count": 1
}
],
"executionMode": 1,
"timeLimit": 0,
"supportRatio": 0.7,
"ceilingClearance": null
},
"runResult": {
"status": "Succeeded",
"createdOn": "2023-01-30T13:26:21.404488",
"startedOn": "2023-01-30T13:26:22.305268",
"finishedOn": "2023-01-30T13:26:25.455553",
"updatedOn": "2023-01-30T13:26:25.45662",
"isBestRun": false,
"score": 2.04235,
"containers": {
"count": 3,
"data": [
{
"id": "98785f64-5717-4562-b3fc-2c963f66afb8",
"index": 1,
"filledVolume": 28.6838611,
"filledPercentage": 0.86408,
"filledWeight": 0,
"filledWeightPercentage": 0,
"itemsCount": 350
},
{
"id": "98785f64-5717-4562-b3fc-2c963f66afb8",
"index": 2,
"filledVolume": 1.4057589,
"filledPercentage": 0.042350000000000006,
"filledWeight": 0,
"totalWeight": 0,
"filledWeightPercentage": 0,
"itemsCount": 25
},
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"index": 3,
"filledVolume": 10.4057589,
"filledPercentage": 1.042350000000000006,
"filledWeight": 0,
"totalWeight": 0,
"filledWeightPercentage": 0,
"itemsCount": 25
}
]
}
},
"remainingItems": [
{
"item": {
"productName": "item1 name",
"weight": 0,
"diameter": 0,
"height": 100,
"length": 100,
"width": 100,
"quantity": 10,
"rotation": 0,
"stackingGround": false,
"stackingOnTop": true,
"crushingLimit": 1,
"unloadingPriority": 1,
"loadingPriority": 1,
"color": "#00FF00",
"shape": "box"
},
"status": "invalid",
"reasons": ["some_reason"]
}
]
}
]
}
HTTP Request
GET /api/v1/loads/{loadId}/runs
Parameters
Name | Type | Description | Required |
---|---|---|---|
loadId | uuid | id of the load | Yes |
Response
Property | Type | Description |
---|---|---|
Result | List(Run) | A list that contains all information about the run preview |
Get run container details by container index
Summary: Return the run container details by container index (the index of the container in the run)
Response example
{
"status": "success",
"result": {
"run": {
"userId": "google-oauth2|userID",
"id": "90ddaa35-aee8-4cbd-93f1-022618b64f28",
"name": "Run Name",
"loadTransportationMode": "seaAndLand",
"loadId": "7fb553a9-a1ab-4f6f-90a2-0931167df1c0",
"loadName": "Load Name",
"executionMode": 1,
"timeLimit": 0,
"supportRatio": 0.85,
"ceilingClearance": null,
"status": "Succeeded",
"createdOn": "2023-01-30T13:26:21.404488",
"startedOn": "2023-01-30T13:26:22.305268",
"finishedOn": "2023-01-30T13:26:25.455553",
"updatedOn": "2023-01-30T13:26:25.45662",
"isBestRun": false,
"score": 2.04235,
"usedContainersInfo": [
{
"containerId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"containerName": "string",
"indexes": [
0
]
}
],
"enableAutoStepByStepPdfGeneration": true,
"shareableLinkInfo": {
"Id": "a78daa35-aee8-4cbd-93f1-022618b64f87",
"link": "string",
"status": 1
}
},
"containerDetails": {
"containerId": "90ddaa35aee84cbd93f1022618b64f28_1",
"containerIndex": 1,
"filledVolume": 28.6838611,
"filledPercentage": 0.86408,
"filledWeight": 0,
"filledWeightPercentage": 0,
"itemsCount": 350,
"usedContainer": {
"containerId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"containerName": "container_name",
"containerType": 1,
"maximumCargoWeight": 0,
"containerDimensions": {
"x": 0,
"y": 0,
"z": 0
},
"targetCenterOfGravity": {
"x": 0,
"y": 0,
"z": 0
},
"achievedCenterOfGravity": {
"x": 0,
"y": 0,
"z": 0
},
"uldInfo": {
"iataCode": "string",
"ataCode": "string",
"contour": "string",
"points": {
"point1": {
"x": 0,
"y": 0,
"z": 0
},
"point2": {
"x": 0,
"y": 0,
"z": 0
},
"point3": {
"x": 0,
"y": 0,
"z": 0
},
"point4": {
"x": 0,
"y": 0,
"z": 0
},
"point5": {
"x": 0,
"y": 0,
"z": 0
},
"point6": {
"x": 0,
"y": 0,
"z": 0
},
"point7": {
"x": 0,
"y": 0,
"z": 0
},
"point8": {
"x": 0,
"y": 0,
"z": 0
}
}
},
"palletInfo": {
"iataCode": "string",
"ataCode": "string",
"contour": "string",
"points": {
"point1": {
"x": 0,
"y": 0,
"z": 0
},
"point2": {
"x": 0,
"y": 0,
"z": 0
},
"point3": {
"x": 0,
"y": 0,
"z": 0
},
"point4": {
"x": 0,
"y": 0,
"z": 0
},
"point5": {
"x": 0,
"y": 0,
"z": 0
},
"point6": {
"x": 0,
"y": 0,
"z": 0
},
"point7": {
"x": 0,
"y": 0,
"z": 0
},
"point8": {
"x": 0,
"y": 0,
"z": 0
}
}
}
},
"products": [
{
"productName": "1",
"count": 125,
"filledPercentage": 0.35125,
"weight": 0
},
{
"productName": "2",
"count": 125,
"filledPercentage": 0.34375,
"weight": 0
},
{
"productName": "3",
"count": 100,
"filledPercentage": 0.16899999999999998,
"weight": 0
}
],
"items": [
{
"itemIndex": 0,
"productName": "1",
"placement": {
"x": [0, 273],
"y": [0, 732],
"z": [0, 466],
"rotation": 4
}
},
{
"itemIndex": 1,
"productName": "1",
"placement": {
"x": [0, 273],
"y": [0, 732],
"z": [466, 932],
"rotation": 4
}
},
{
"itemIndex": 2,
"productName": "1",
"placement": {
"x": [0, 273],
"y": [0, 732],
"z": [932, 1398],
"rotation": 4
}
}
],
"achievedMaximumHeight": 1000
},
"errorCode": null,
"errorMessage": null
}
}
HTTP Request
GET /api/v1/loads/{loadId}/runs/{runId}/containers/{containerIndex}
Parameters
Name | Type | Description | Required |
---|---|---|---|
loadId | uuid | the id of the load | Yes |
runId | uuid | the id of the run | Yes |
containerIndex | integer | the index of the container in the run | Yes and starting from 1 |
Response
Property | Type | Description |
---|---|---|
userId | string | the id of the user who launched the run |
id | uuid | the id of the run |
name | string | the name of the run |
loadId | uuid | the id of the load to which the run belongs |
loadName | string | the name of the load |
loadTransportationMode | string | transportation mode of the load |
executionMode | integer | type of strategy used to optimize the load |
timeLimit | integer | the time limit set for the run initially (0 if instant run) |
supportRatio | decimal | the support Ratio of items in the load |
ceilingClearance | integer | the ceiling clearance |
status | integer | the status of the run (Created = 1, Processing = 2,Succeeded = 3,Failed = 4,Cancelled = 5) |
createdOn | datetime | Run creation date and time |
startedOn | datetime | Run start date and time |
finishedOn | datetime | Run finish date and time |
updatedOn | datetime | Run update date and time |
isBestRun | boolean | flag to define if the run is the best |
score | decimal | the score of the run |
containersCount | integer | total number of containers of the run |
usedContainersInfo | list of Containers | list of details about used containers such as points, dimension specific type info, and indexes in the list of data result |
enableAutoStepByStepPdfGeneration | boolean | flag to enable or disable the step by step pdf generation |
shareableLinkInfo | shareable link of the run | the generated shareable link of the run |
Containers details
Property | Type | Description |
---|---|---|
containerId | uuid | the container id |
containerIndex | integer | index of the container |
filledVolume | decimal | the filled volume of the container |
filledPercentage | decimal | the filled percentage of the container |
filledWeight | decimal | the filled weight of the container |
totalWeight | decimal | the total weight of the container (filledWeight + emptyContainerWeight) |
filledWeightPercentage | boolean | the filled weight percentage of the container |
itemsCount | integer | the number of items inside the container |
usedContainer | Container | details about the used container such as points, dimensions, specific type info and center of gravities : Target Center of Gravity used when creating the run and it is by default set to the empty container CoG with Z = 0. Achieved Center of Gravity is the resulting CoG and represents the CoG of both the empty container + the load. |
products | List(products) | the list of products inside the container |
items | List(items) | the list of items inside the container |
achievedMaximumHeight | decimal | returns the achieved maximum height of the items inside a container of type ground pallet. |
Products
Property | Type | Description |
---|---|---|
productName | string | the product name |
color | string | color |
shape | string | Shape of the product (box , cylinder) |
unloadingPriority | string | As specified in the load |
count | integer | the number of items if this product inside the container |
length | decimal | length of the product as specified in the load |
width | decimal | width of the product as specified in the load |
diameter | decimal | diameter of the product as specified in the load if cylinder |
weight | decimal | weight of the product as specified in the load |
stackingGround | bool | item stacking on ground |
stackingOnTop | bool | item stacking on top |
crushingLimit | decimal | The total weight that can be placed above an item |
filledPercentage | decimal | the filled percentage of the product inside the container |
volume | decimal | the total volume of items of the product in the container |
rotation | integer | Allowed rotations as specified in the load |
Items
Property | Type | Description |
---|---|---|
itemIndex | integer | the product index |
productName | string | the product name |
placement | (x,y,z) | where the item is placed |
rotation | integer | the rotation of the item |
Get Run container PDF Signed URL
Summary: Get PDF signed URL for a specific container in the run
Response
A PDF signed URL for download
HTTP Request
GET api/v1/loads/{loadId}/runs/{runId}/container/{containerNumber}/pdfSignedUrl
Parameters
Name | Type | Required | Description |
---|---|---|---|
loadId | UUID | Yes | The ID of the load that the run is associated to |
runId | UUID | Yes | The ID of the run |
containerNumber | integer | Yes (starts from 1) | The index of the container in the run |
Delete Run
Summary: Delete a run from an organization
Response
{
"status": "success"
}
HTTP Request
DELETE /api/v1/loads/{loadid}/runs/{runid}
Parameters
Name | Type | Required | Description |
---|---|---|---|
loadId | UUID | Yes | The ID of the load that the run is associated |
runId | UUID | Yes | The ID of the run to be deleted |
Delete Multiple Runs
Summary: Delete a list of runs using their ids
Response
{
"status": "success"
}
HTTP Request
DELETE /api/v1/loads/{loadid}/runs/batch
Parameters
Name | Type | Required | Description |
---|---|---|---|
loadId | UUID | Yes | The ID of the load that the run is associated |
runIds | array of string | Yes | A list with the IDs of the runs to be deleted |
3D Results Sharing
Generate Shareable Link
Summary: Generate a shareable link that redirects the user to a page containing the 3D results of a specific run. Access to this page does not require access to DeepPack, allowing easy sharing with clients or displaying in an iFrame.
HTTP Request
POST /api/v1/visualization/generateshareablelink
Parameters
Name | Type | Required | Description |
---|---|---|---|
loadId | UUID | Yes | ID of the Load. |
runId | UUID | Yes | ID of the run. |
Request example
{
"loadId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"runId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
Response
Property | Type | Description |
---|---|---|
Result | shareableLinkInfoDto | The generated shareable link information. |
Property | Type | Description |
---|---|---|
shareableLinkInfoDto | shareableLinkId | The generated shareable ID. |
link | The generated shareable link. | |
expiryDate | The generated shareable expiry date. |
Response example
{
"status": "string",
"errorCode": "string",
"errorMessage": "string",
"result": {
"shareableLinkId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"link": "string",
"expiryDate": "2024-05-17T11:58:10.163Z"
}
}
Get All ShareableLinks
Summary: Get all ShareableLinks belonging to an organization
Response example
{
"result": [
{
"loadInfo": {
"loadId": "df648315-fd44-45d3-8f67-91f60b8e95f6",
"loadName": "loadName"
},
"runInfo": {
"runId": "fd38b787-e299-4029-95ec-705c8d05f351",
"runName": "RunName"
},
"shareableLinkInfo": {
"id": "01e52bdc-915c-41cc-9ded-0aff6da6f451",
"link": "http://dev.deeppack.share/visualization/3aNHOTYIc3gbjNooZ3mKWMd60+BmTzHP2ZxbPcjZJA=/1",
"organizationId": "org_Id",
"status": "Active",
"expirationDate": "2024-04-27T23:58:07.247583+01:00",
"isRevoked": false
}
}
],
"status": "success",
"errorCode": null,
"errorMessage": null
}
Response
SharableLinks
Property | Type | Description |
---|---|---|
loadInfo | loadInfo | The info of the load related to the shareableLink |
runInfo | runInfo | The info of the run related to the shareableLink |
shareableLinkInfo | shareableLinkInfo | The info of the shareableLink |
loadInfo
Property | Type | Description |
---|---|---|
loadId | UUID | The id of the load |
loadName | string | The name of the load |
runInfo
Property | Type | Description |
---|---|---|
runId | UUID | The id of the run |
runName | string | The name of the run |
shareableLinkInfo
Property | Type | Description |
---|---|---|
Id | UUID | The shareableLink Id |
link | string | The generated shareableLink |
organizationId | string | The organization Id |
status | status | The status of the link (Active,Revoked,Expired) |
expirationDate | datetime | The date and time of the expiration of the link |
isRevoked | bool | Will be true if the link is revoked and False when it's not |
HTTP Request
GET /api/v1/visualization/shareablelinks
Response
Property | Type | Description |
---|---|---|
Result | List(shareablelinks) | A list that contains all information about the shareablelinks |
Update Shareable Link
Summary: Update a Shareable Link by its Id
Request
{
"shareableLinkId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"isRevoked": true
}
HTTP Request
PUT /api/v1/visualization/shareablelinks
Response example
{
"status": "string"
}
This action allows for revoking or reactivating the shareable link. If the value of isRevoked is true, the link will be revoked; otherwise, if isRevoked is false, the link will be reactivated.
Delete Shareable Link
Summary: Delete a Shareable Link
Response
{
"status": "success"
}
HTTP Request
DELETE /api/v1/visualization/shareablelinks/{shareablelinkId}
Parameters
Name | Type | Required | Description |
---|---|---|---|
shareableLinkId | UUID | Yes | The Id of the shareable link |
Delete Multiple Shareable Links
Summary: Delete a list of shareableLinks using their ids
Response
{
"status": "success"
}
HTTP Request
DELETE /api/v1/visualization/shareablelinks/batch
Parameters
Name | Type | Required | Description |
---|---|---|---|
shareableLinkIds | array of UUIDs | Yes | A list with the IDs of the shareableLinks to be deleted |
Organization
Get User By Id
Summary: Get member by its Id
HTTP Request
GET /api/v1/members/{memberId}
Response example
{
"status": "success",
"result": {
"userId": "google-oauth2|145545",
"email": "a.b@org.com",
"fullName": "Full Name",
"registrationDate": "2022-10-24T13:39:31.359Z",
"roles": ["role1", "role2"]
}
}
Parameters
Name | type | Description | Required |
---|---|---|---|
memberId | UUID | Id of the member in the organization | Yes |
Response
Property | Type | Description |
---|---|---|
userId | string | the user id |
string | the user email | |
fullname | string | the user full name |
registrationDate | datetime | the user registration date |
roles | list(role:string) | the user roles |
Get All Users
Summary: Get All organization members
HTTP Request
GET /api/v1/members
Response example
{
"status": "success",
"result": {
"userId": "google-oauth2|145545",
"email": "a.b@org.com",
"fullName": "Full Name",
"registrationDate": "2022-10-24T13:39:31.359Z",
"roles": ["role1", "role2"]
}
}
Response
Property | Type | Description |
---|---|---|
Result | List(member) | A list that contains all information about the members by organization |
Delete User
Summary: Delete a user by its Id
HTTP Request
DELETE /api/v1/members/{memberId}
Response example
{
"status": "success",
"errorCode": null,
"errorMessage": null
}
Parameters
Name | Type | Description | Required |
---|---|---|---|
memberId | UUID | The Id of member | Yes |
Update organization preferences
Summary: Update organization preferences
HTTP Request
PUT /api/v1/organization/preferences
Request example
{
"defaultSupportRatio": 0,
"defaultCeilingClearance": 0,
"defaultDimensionMeasurement": 1,
"defaultMassMeasurement": 1,
"defaultTransportationMode": 1,
"defaultPackingSequence": 0,
"defaultProductRotation": 0,
"defaultOnTopStackability": true,
"defaultGroundStackability": true,
"defaultProductNamingStrategy": 1
}
Response example
{
"status": "string",
"errorCode": "string",
"errorMessage": "string"
}
Parameters
Name | Type | Description | Required |
---|---|---|---|
defaultSupportRatio | decimal | The default value for support ratio | True |
defaultCeilingClearance | integer | The default value for ceiling clearance | True |
defaultDimensionMeasurement | DimensionMeasurements | The unit of length (Meter = 1,Centimeter = 2,Millimeter = 3,Inch = 4,Feet = 5) | True |
defaultMassMeasurement | MassMeasurements | The unit of mass (Kilograms = 1,Pound = 2) | True |
defaulttransportationMode | integer | Define the default load transportation mode 1 = "seaAndLand" 2 = "Air" | True |
defaultPackingSequence | integer | The default value for the PDF step-by-step packing sequence, with a maximum value of 10 | True |
defaultProductRotation | integer | The default value for rotation should be between 1 and 63 for boxes and no rotation is allowed for cylinders | True |
defaultOnTopStackability | boolean | The default value for stackable item | True |
defaultGroundStackability | boolean | The default value for must be placed on the floor | True |
defaultProductNamingStrategy | ProductNamingStrategy | The default value is manual (Manual = 1, Automatic = 2) Manual product naming. (Product names are mandatory and are assigned by the user) Automatic product naming. (Product names are optional and are automatically generated as the combination of Shipment name and Counter.) |
True |