# Free a Reserved Locker Unit

This API operation release a previously reserved locker unit or remove the reserved package based on the tracking number in the specified locker bank when the reservation needs to be released. Once the locker unit freed, the unit becomes available for new reservations.

Endpoint: POST /api/v1/lockerBanks/{lockerBankId}/lockers/{lockerUnitId}/free
Version: 1.0.0
Security: bearerAuth

## Path parameters:

  - `lockerBankId` (string, required)
    The unique identifier of the locker bank where the locker unit is located. Retrieve this value using the Get Locker Banks API.

  - `lockerUnitId` (string, required)
    The unique identifier of the locker unit to be freed within the specified locker bank.

## Request fields (application/json):

  - `userId` (string, required)
    The identifier of the user performing the locker unit free action.
    Example: ThirdParty

  - `parcels` (array)
    The list of parcels associated with the locker being freed.

  - `parcels.trackingNumber` (string)
    The primary tracking number of the parcel.
    Example: Dept03

  - `parcels.secondaryTrackingNumber` (string)
    An optional secondary identifier for the parcel.
    Example: TRACK-1234

## Response 200 fields (application/json):

  - `lockerBankId` (string)
    The unique identifier of the locker bank where the locker unit was freed.
    Example: AOne

  - `lockerUnitId` (string)
    The identifier of the locker unit that was freed.
    Example: 2

  - `unitReserved` (boolean)
    Indicates whether the locker unit is reserved.
    Example: true

  - `contactId` (string)
    The identifier of the recipient associated with the locker reservation that was freed.
    Example: ThirdParty

  - `contactType` (string)
    The source type of the recipient identifier.
    Enum: "recipient", "department"

  - `parcelsReserved` (array)
    The list of parcels currently in reserved state for this locker unit. In case of no parcels in reserved state, no tracking number is returned.

  - `parcelsReserved.trackingNumber` (string)
    The tracking number of the parcel that was reserved.
    Example: 26112025_1

  - `parcelsReserved.secondaryTrackingNumber` (string)
    A secondary identifier for a package, can be generated internally.
    Example: TRACK-1234

## Response 400 fields (application/json):

  - `errorCode` (string)
    Error code(s) that appear due to HTTP  400- Invalid or Bad Request, e.g., validation-error.
    Example: validation_error

  - `errorDescription` (string)
    HTTP 400 Bad Request response status code indicates that the server cannot process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).
    Example: userId - value missing.

  - `additionalCode` (string)
    A unique identifier for the error, for example ILP10010, or ILP10030.
    Example: already_exists

  - `additionalInfo` (string)
    This is an additional information about the error. This error 'Invalid Request' might appear due to invalid data, or if the information is missing.
    Example: 674eb7b67b34d787400fa453

  - `additionalParameters` (array)

## Response 401 fields (application/json):

  - `message` (string, required)
    This is HTTP 401 Unauthorized response status code, which indicates that the client request has not been completed because it lacks valid authentication credentials for the requested resource.
    Example: The request could not be completed.

## Response 404 fields (application/json):

  - `errorCode` (string)
    Error code(s) that appear due HTTP 404 Page or File not found.
    Example: not_found

  - `errorDescription` (string)
    HTTP 404 Not Found response status code indicates that the server cannot find the requested resource.
    Example: resource not found

  - `additionalCode` (string)
    A unique identifier for the error, for example 0100025, 1110017, or 1090001.
    Example: 0100025

  - `additionalInfo` (string)
    The additional information about the error. This error 'Not Found' might appear due to `Shipment Not Found`, `No Shipments to close`, or `Original Transaction not found`.
    Example: Resource not found

  - `additionalParameters` (array)

## Response 500 fields (application/json):

  - `message` (string, required)
    This is HTTP 500 Internal Server Error response status code, which indicates that the server encountered an unexpected condition that prevented it from fulfilling the request.
    Example: The request could not be completed.

