Skip to main content

Complete a Picking Task by Using API

S
Written by Sam Andrew
Updated over a week ago

Summary

This article explains how to use the POST /v3.1/WarehouseTask/pick API endpoint. This endpoint is used to complete an existing picking task in the system. The workflow involves first listing the available tasks with a GET request and then sending the selected task's data to this endpoint via a POST request to complete it.

Endpoint Information

  • HTTP Method: POST

  • URL: /v3.1/WarehouseTask/pick

Workflow and Prerequisites

The standard workflow to complete a picking operation with this endpoint has two steps:

  1. List Tasks: First, call the following GET endpoint to retrieve the list of available picking tasks and the data required for them (e.g., warehouseTaskIdentifier, productIdentifier, quantity).

    • GET /v3.1/Report/WarehouseTask/order-operation/i/{index}/s/{size}

  2. Complete Task: Combine the data returned from the GET request with the user-defined destination information (target... fields) and send it in the body of a POST request to the endpoint described in this document.

Request Parameters

This endpoint can be used in two different modes: Explicit Completion and Simple Completion.

  • Explicit Completion: All relevant data from the GET request is explicitly provided in the body of the POST request. This mode is suitable for users who want to control every step of the process.

  • Simple Completion: In this mode, you can significantly simplify the request. Only the task's warehouseTaskIdentifier and the completion details (quantity, target... fields, and ...Swap fields if applicable) are sent. The system automatically finds all other critical task data from the database in the background using the provided warehouseTaskIdentifier.

    When this mode is used, the system will find the following fields for you: warehouseIdentifier, warehouseJobIdentifier, shipmentOrderIdentifier, productIdentifier, packTypeIdentifier, allocatedPackTypeIdentifier, lotBatchNumber, expiryDate, productionDate, sourceWarehouseLocationIdentifier, sourceLicensePlateIdentifier, damageReasonName.

The table below explains when fields are required based on the mode.

Field Name

Type

Description

Required?

warehouseIdentifier

string (GUID)

Unique identifier of the warehouse where the picking task is located.

Required in Explicit Mode

warehouseTaskIdentifier

string (GUID)

Unique identifier of the picking task to be completed.

Required in Both Modes

warehouseJobIdentifier

string (GUID)

Unique identifier of the warehouse job to which the task belongs.

Required in Explicit Mode

shipmentOrderIdentifier

string (GUID)

Unique identifier of the shipment order to which the task belongs.

Required in Explicit Mode (except for Bulk Picking)

quantity

number

The quantity of the product to be picked for the task.

Required in Both Modes

productIdentifier

string (GUID)

Unique identifier of the product to be picked.

Required in Explicit Mode

packTypeIdentifier

string (GUID)

Unique identifier of the pack type being picked (e.g., unit, case).

Required in Explicit Mode

allocatedPackTypeIdentifier

string (GUID)

If picking from a higher pack type (e.g., a case), this is the unique identifier of that higher pack type.

Required in Explicit Mode

lotBatchNumber

string

The lot/batch number of the product specified in the task.

Conditional in Explicit Mode

lotBatchNumberSwap

string

In a Swap operation, the lot/batch number of the item that was physically picked.

Optional in Both Modes

expiryDate

string (YYYYMMDD)

The expiry date of the product specified in the task.

Conditional in Explicit Mode

expiryDateSwap

string (YYYYMMDD)

In a Swap operation, the expiry date of the item that was physically picked.

Optional in Both Modes

productionDate

string (YYYYMMDD)

The production date of the product specified in the task.

Conditional in Explicit Mode

productionDateSwap

string (YYYYMMDD)

In a Swap operation, the production date of the item that was physically picked.

Optional in Both Modes

sourceWarehouseLocationIdentifier

string (GUID)

Unique identifier of the source location to pick from.

Required in Explicit Mode

sourceLicensePlateIdentifier

string (GUID)

Unique identifier of the source license plate to pick from.

Conditional in Explicit Mode

targetWarehouseMobileCartCode

string

Pick and Sort Scenario: The code of the destination mobile cart.

Conditional in Both Modes

targetWarehouseLocationCode

string

The code of the destination location.

Required in Both Modes

targetLicensePlateNumber

string

Pick and Sort Scenario: The number of the destination license plate.

Conditional in Both Modes

damageReasonName

string

If reporting a damaged product, the name of the damage reason.

Optional in Explicit Mode

Rules for Target Fields

The target... fields determine the destination of the picked items. Their usage depends on the picking methodology being used, which generally falls into two categories: "Pick to Location" or "Pick and Sort".

1. Pick to Location

This method is used when items are picked and moved directly to a stationary destination, such as a packing station, a sorting lane, or a specific outbound pallet. The key concept is that the picked item's next location is its final destination before packing or shipping.

  • targetWarehouseLocationCode: Required. Specifies the destination location code (e.g., PACK-STATION-1).

  • targetLicensePlateNumber: Optional. Used if the item is being placed onto a specific license plate at the destination.

  • targetWarehouseMobileCartCode: Not used in this scenario.

Example Request Body:

{
"warehouseTaskIdentifier": "b2c3d4e5-f6a1-b2c3-d4e5-f6a1b2c3d4e5",
"quantity": 5,
"targetWarehouseLocationCode": "PACK.STATION.01",
"targetLicensePlateNumber": null
}

Variation: Bulk Picking

This special version of the "Pick to Location" scenario is used to pick tasks for multiple shipment orders belonging to a single job at once.

  • How to Use: In "Explicit Completion" mode, send the warehouseJobIdentifier field, but do not include the shipmentOrderIdentifier field in the request.

  • Result: The system completes all tasks linked to the specified warehouseJobIdentifier in a single operation.

API: Complete a Picking Task (pick)

Summary

This article explains how to use the POST /v3.1/WarehouseTask/pick API endpoint. This endpoint is used to complete an existing picking task in the system. The workflow involves first listing the available tasks with a GET request and then sending the selected task's data to this endpoint via a POST request to complete it.

Endpoint Information

  • HTTP Method: POST

  • URL: /v3.1/WarehouseTask/pick

Workflow and Prerequisites

The standard workflow to complete a picking operation with this endpoint has two steps:

  1. List Tasks: First, call the following GET endpoint to retrieve the list of available picking tasks and the data required for them (e.g., warehouseTaskIdentifier, productIdentifier, quantity).

    • GET /v3.1/Report/WarehouseTask/order-operation/i/{index}/s/{size}

  2. Complete Task: Combine the data returned from the GET request with the user-defined destination information (target... fields) and send it in the body of a POST request to the endpoint described in this document.

Request Parameters

This endpoint can be used in two different modes: Explicit Completion and Simple Completion.

  • Explicit Completion: All relevant data from the GET request is explicitly provided in the body of the POST request. This mode is suitable for users who want to control every step of the process.

  • Simple Completion: In this mode, you can significantly simplify the request. Only the task's warehouseTaskIdentifier and the completion details (quantity, target... fields, and ...Swap fields if applicable) are sent. The system automatically finds all other critical task data from the database in the background using the provided warehouseTaskIdentifier.

    When this mode is used, the system will find the following fields for you: warehouseIdentifier, warehouseJobIdentifier, shipmentOrderIdentifier, productIdentifier, packTypeIdentifier, allocatedPackTypeIdentifier, lotBatchNumber, expiryDate, productionDate, sourceWarehouseLocationIdentifier, sourceLicensePlateIdentifier, damageReasonName.

The table below explains when fields are required based on the mode.

Field Name

Type

Description

Required?

warehouseIdentifier

string (GUID)

Unique identifier of the warehouse where the picking task is located.

Required in Explicit Mode

warehouseTaskIdentifier

string (GUID)

Unique identifier of the picking task to be completed.

Required in Both Modes

warehouseJobIdentifier

string (GUID)

Unique identifier of the warehouse job to which the task belongs.

Required in Explicit Mode

shipmentOrderIdentifier

string (GUID)

Unique identifier of the shipment order to which the task belongs.

Required in Explicit Mode (except for Bulk Picking)

quantity

number

The quantity of the product to be picked for the task.

Required in Both Modes

productIdentifier

string (GUID)

Unique identifier of the product to be picked.

Required in Explicit Mode

packTypeIdentifier

string (GUID)

Unique identifier of the pack type being picked (e.g., unit, case).

Required in Explicit Mode

allocatedPackTypeIdentifier

string (GUID)

If picking from a higher pack type (e.g., a case), this is the unique identifier of that higher pack type.

Required in Explicit Mode

lotBatchNumber

string

The lot/batch number of the product specified in the task.

Conditional in Explicit Mode

lotBatchNumberSwap

string

In a Swap operation, the lot/batch number of the item that was physically picked.

Optional in Both Modes

expiryDate

string (YYYYMMDD)

The expiry date of the product specified in the task.

Conditional in Explicit Mode

expiryDateSwap

string (YYYYMMDD)

In a Swap operation, the expiry date of the item that was physically picked.

Optional in Both Modes

productionDate

string (YYYYMMDD)

The production date of the product specified in the task.

Conditional in Explicit Mode

productionDateSwap

string (YYYYMMDD)

In a Swap operation, the production date of the item that was physically picked.

Optional in Both Modes

sourceWarehouseLocationIdentifier

string (GUID)

Unique identifier of the source location to pick from.

Required in Explicit Mode

sourceLicensePlateIdentifier

string (GUID)

Unique identifier of the source license plate to pick from.

Conditional in Explicit Mode

targetWarehouseMobileCartCode

string

Pick and Sort Scenario: The code of the destination mobile cart.

Conditional in Both Modes

targetWarehouseLocationCode

string

The code of the destination location.

Required in Both Modes

targetLicensePlateNumber

string

Pick and Sort Scenario: The number of the destination license plate.

Conditional in Both Modes

damageReasonName

string

If reporting a damaged product, the name of the damage reason.

Optional in Explicit Mode

Rules for Target Fields

The target... fields determine the destination of the picked items. Their usage depends on the picking methodology being used, which generally falls into two categories: "Pick to Location" or "Pick and Sort".

1. Pick to Location

This method is used when items are picked and moved directly to a stationary destination, such as a packing station, a marshalling lane, or a specific outbound pallet. The key concept is that the picked item's next location is its final destination before packing or shipping.

  • targetWarehouseLocationCode: Required. Specifies the destination location code (e.g., PACK-STATION-1).

  • targetLicensePlateNumber: Optional. Used if the item is being placed onto a specific license plate at the destination.

  • targetWarehouseMobileCartCode: Not used in this scenario.

Example Request Body:

{ "warehouseTaskIdentifier": "b2c3d4e5-f6a1-b2c3-d4e5-f6a1b2c3d4e5", "quantity": 5, "targetWarehouseLocationCode": "PACK.STATION.01", "targetLicensePlateNumber": null }

Variation: Bulk Picking

This special version of the "Pick to Location" scenario is used to pick tasks for multiple shipment orders belonging to a single job at once.

  • How to Use: In "Explicit Completion" mode, send the warehouseJobIdentifier field, but do not include the shipmentOrderIdentifier field in the request.

  • Result: The system completes all tasks linked to the specified warehouseJobIdentifier in a single operation.

2. Pick and Sort

This method is used for workflows where items for multiple orders are picked together into a multi-compartment mobile cart and then taken to a separate sorting station. This two-step process (pick, then sort) requires identifying the specific destination within the cart to ensure items are not mixed up.

  • targetWarehouseMobileCartCode: Required. Identifies the mobile cart being used.

  • targetWarehouseLocationCode: Required. Typically represents the specific location or compartment on the mobile cart.

  • targetLicensePlateNumber: Required. Often represents a specific tote or container placed in the cart's compartment, linking the picked item to its final order.

Example Request Body:

{
"warehouseTaskIdentifier": "c4d5e6f1-a2b3-c4d5-e6f1-a2b3c4d5e6f1",
"quantity": 3,
"targetWarehouseMobileCartCode": "CART-05",
"targetWarehouseLocationCode": "SORT-A",
"targetLicensePlateNumber": "LP-SORT-1122"
}

Special Scenarios

Picking from a higher pack type (Using allocatedPackTypeIdentifier)

The allocatedPackTypeIdentifier field is used when a smaller pack type (e.g., Unit) needs to be picked from within a larger, higher pack type (e.g., Case).

Example: For a product where 1 Case = 12 Units, and the inventory is held in "Cases", if a task requires picking 5 "Units", the request must be sent with quantity=5, packTypeIdentifier=the ID for "Unit", and allocatedPackTypeIdentifier=the ID for "Case".

Lot/Batch Swapping (Swap Operation)

Fields ending in ...Swap support the Swap functionality, which allows an operator to pick from a different lot of the same product than what the system suggested. In this case, both the original (lotBatchNumber) and the physically picked lot (lotBatchNumberSwap) information must be sent. The availability of this feature depends on ShipmentOrderType permissions.

Important Notes and Limitations

The current version of this endpoint does not support the following scenarios:

  • Retailer Compliance: Picking operations involving Retailer Compliance rules cannot be performed through this endpoint.

  • Full LP Picking: Full License Plate (LP) picking operations are not within the scope of this endpoint.

Field Mapping (GET -> POST)

The following table summarizes the data source for each field in the POST request. This table is especially useful for the Explicit Completion mode.

POST pick Field

Data Source

Notes

warehouseIdentifier

GET Request

Source field: warehouseIdentifier

warehouseTaskIdentifier

GET Request

Source field: identifier. Note the name change.

warehouseJobIdentifier

GET Request

Source field: warehouseJobIdentifier

shipmentOrderIdentifier

GET Request

Source field: shipmentOrderIdentifier

quantity

GET Request / User Input

Can be taken from the GET request or defined by the user.

productIdentifier

GET Request

Source field: productIdentifier

packTypeIdentifier

GET Request

Source field: fromPackTypeIdentifier. Note the name change.

allocatedPackTypeIdentifier

GET Request

Source field: allocatedPackTypeIdentifier

lotBatchNumber

GET Request

Source field: lotBatchNumber

lotBatchNumberSwap

User Input

Entered only in a Swap scenario.

expiryDate

GET Request

Source field: expiryDate. Must be converted to YYYYMMDD format.

expiryDateSwap

User Input

Entered only in a Swap scenario. (YYYYMMDD)

productionDate

GET Request

Source field: productionDate. Must be converted to YYYYMMDD format.

productionDateSwap

User Input

Entered only in a Swap scenario. (YYYYMMDD)

sourceWarehouseLocationIdentifier

GET Request

Source field: fromWarehouseLocationIdentifier. Note the name change.

sourceLicensePlateIdentifier

GET Request

Source field: fromLicensePlateIdentifier. Note the name change.

targetWarehouseMobileCartCode

User Input

Required in the "Pick and Sort" scenario.

targetWarehouseLocationCode

User Input

Required in all scenarios.

targetLicensePlateNumber

User Input

Required in "Pick and Sort", optional in "Pick to Location".

damageReasonName

GET Request

Source field: damageReasonName

Comprehensive Request Examples

Pick to Location Examples

Example 1: Explicit Completion for Pick to Location

{
"warehouseIdentifier": "a1b2c3d4-e5f6-a1b2-c3d4-e5f6a1b2c3d4",
"warehouseTaskIdentifier": "b2c3d4e5-f6a1-b2c3-d4e5-f6a1b2c3d4e5",
"warehouseJobIdentifier": "c3d4e5f6-a1b2-c3d4-e5f6-a1b2c3d4e5f6",
"shipmentOrderIdentifier": "d4e5f6a1-b2c3-d4e5-f6a1-b2c3d4e5f6a1",
"quantity": 5,
"productIdentifier": "e5f6a1b2-c3d4-e5f6-a1b2-c3d4e5f6a1b2",
"packTypeIdentifier": "f6a1b2c3-d4e5-f6a1-b2c3-d4e5f6a1b2c3",
"lotBatchNumber": "LOT001",
"expiryDate": "20261231",
"sourceWarehouseLocationIdentifier": "a2b3c4d5-e6f1-a2b3-c4d5-e6f1a2b3c4d5",
"targetWarehouseLocationCode": "PACK.STATION.01"
}

Example 2: Simple Completion for Pick to Location

{
"warehouseTaskIdentifier": "b2c3d4e5-f6a1-b2c3-d4e5-f6a1b2c3d4e5",
"quantity": 5,
"targetWarehouseLocationCode": "PACK.STATION.01"
}

Example 3: Bulk Picking for Pick to Location

{
"warehouseIdentifier": "a1b2c3d4-e5f6-a1b2-c3d4-e5f6a1b2c3d4",
"warehouseTaskIdentifier": "b2c3d4e5-f6a1-b2c3-d4e5-f6a1b2c3d4e5",
"warehouseJobIdentifier": "c3d4e5f6-a1b2-c3d4-e5f6-a1b2c3d4e5f6",
"quantity": 5,
"productIdentifier": "e5f6a1b2-c3d4-e5f6-a1b2-c3d4e5f6a1b2",
"packTypeIdentifier": "f6a1b2c3-d4e5-f6a1-b2c3-d4e5f6a1b2c3",
"lotBatchNumber": "LOT001",
"expiryDate": "20261231",
"sourceWarehouseLocationIdentifier": "a2b3c4d5-e6f1-a2b3-c4d5-e6f1a2b3c4d5",
"targetWarehouseLocationCode": "PACK.STATION.01"
}

Pick and Sort Examples

Example 4: Explicit Completion for Pick and Sort

{
"warehouseIdentifier": "a1b2c3d4-e5f6-a1b2-c3d4-e5f6a1b2c3d4",
"warehouseTaskIdentifier": "c4d5e6f1-a2b3-c4d5-e6f1-a2b3c4d5e6f1",
"warehouseJobIdentifier": "d5e6f1a2-b3c4-d5e6-f1a2-b3c4d5e6f1a2",
"shipmentOrderIdentifier": "e6f1a2b3-c4d5-e6f1-a2b3-c4d5e6f1a2b3",
"quantity": 3,
"productIdentifier": "f1a2b3c4-d5e6-f1a2-b3c4-d5e6f1a2b3c4",
"packTypeIdentifier": "a2b3c4d5-e6f1-a2b3-c4d5-e6f1a2b3c4d5",
"lotBatchNumber": "LOT333",
"sourceWarehouseLocationIdentifier": "b3c4d5e6-f1a2-b3c4-d5e6-f1a2b3c4d5e6",
"targetWarehouseMobileCartCode": "CART-05",
"targetWarehouseLocationCode": "SORT-A",
"targetLicensePlateNumber": "LP-SORT-1122"
}

Example 5: Simple Completion for Pick and Sort

{
"warehouseTaskIdentifier": "c4d5e6f1-a2b3-c4d5-e6f1-a2b3c4d5e6f1",
"quantity": 3,
"targetWarehouseMobileCartCode": "CART-05",
"targetWarehouseLocationCode": "SORT-A",
"targetLicensePlateNumber": "LP-SORT-1122"
}

Response Details

Success Response

  • Status Code: 200 OK

  • Response Body:

{
"value": true
}

Error Response

  • Status Code: 400 Bad Request

  • Example Error Body:

{
"message": "One or more validation errors occurred.",
"data": [
{
"property": "WarehouseIdentifier",
"errorMessage": "Logiwa.Wms.Error.Validation.WarehouseTask.Pick.Warehouse.CannotBeEmpty"
}
],
"code": "validation",
"status": 2
}

Did this answer your question?