NAV
json

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

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"
  }
}

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

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.

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

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
email 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