# Lockers APIs


The ParcelPoint (Locker) APIs help manage the reservation and release of smart locker units for package delivery and pickup. These APIs allow organizations to automate secure, contactless deliveries by integrating with Pitney Bowes smart lockers. By integrating these APIs into your system, you can automate end-to-end locker workflows—from locating available lockers to reserving, opening, depositing, and freeing locker units after pickup.

**Why Use Parcel-Point APIs**

- Enable contactless, secure package deliveries

- Automate locker assignment and release

- Support delivery and pickup workflows without human intervention

- Track which locker unit is assigned to which package

- Simplify mailroom or internal delivery operations

**How Parcel-Point APIs Work**

The Parcel-Point APIs are designed to manage smart locker workflows—from retrieving available locker banks to reserving, depositing parcels and freeing individual locker units. The user (typically a mailroom operator or system) uses these APIs t
1.	Look up locker banks
2.	Check available locker unit sizes
3.	Reserve locker units
4.	Mark deposits
5.	Fetch reservations
6.	Free locker units


**Step-by-Step Workflow for Parcel-Point APIs**

**Step 1: Retrieve Available Locker Banks**

Use the [Get Locker Banks](/openapi/parcelpoint/locker-bank/getlockerbanks) or [Get Locker Bank by Locker Bank ID](/openapi/parcelpoint/locker-bank/getlockerbankdetails) APIs to retrieve the list of available locker banks at a facility.
Filter by:

- `locationId`: To get lockers for a specific location

- `lockerBankId`: To retrieve a specific locker bank by ID. One location can have multiple banks.

- Each locker bank has a unique `lockerBankId`, used in subsequent API calls.

**Step 2: Get Locker Sizes for a Locker Bank**

Use the [Get Locker Sizes API](/openapi/parcelpoint/locker-bank/lockersizes) to retrieve the available locker unit sizes in a locker bank (e.g., small, medium, large) along with their availability status.

- You need to pass the `lockerBankId` retrieved in Step 1 as a path parameter.

**Step 3: Reserve a Locker Unit**

Once you know a locker unit is available, use the [Reserve Locker Unit API](/openapi/parcelpoint/locker-unit/createreservation) to create a reservation.
Required fields include:

- `lockerBankId` (path parameter)

- Package tracking number

- Locker size preference (e.g., small)

- Recipient identification (contact ID and type)

- Reservation Expiry Time 

If a locker is successfully reserved, a **locker unit ID** will be returned in the response. 

**Step 4: Add or Update Deposit Information**

After reserving the locker unit, deposit the parcel inside the locker using [Add/Update Deposit API](/openapi/parcelpoint/locker-unit/updatedeposit). Using the same API, user can update the deposit information for example userId of the user.

This updates the locker reservation to reflect:

- Parcel successfully deposited
- Deposit timestamp
- depositExpiryTime (Once expired, the parcel may be removed or handled according to facility policy.)
- Parcel pickup code (Pickup Code will only be provided to the `contactType: recipient`. For `contactType: department` the recipients will pick the parcel by providing their `personalId`)

You need to pass:

- `lockerBankId` (path parameter)

- `lockerUnitId` (path parameter)

**Step 5: Retrieve Reservation Details** 

These APIs help external systems, operators, or recipients retrieve reservation details.

- [Get Reservations by Contact](/openapi/parcelpoint/locker-unit/getreservationlist): Retrieve all reservations linked to a specific recipient/contact.
- [Get Reservation by Tracking Number](/openapi/parcelpoint/locker-unit/getreservation): Retrieve reservation details using the package tracking number.

**Step 6: Update Reservation** 

If reservation details need to be changed (e.g., expiry time, contact details, metadata), use the [Update Reservation API](/openapi/parcelpoint/locker-unit/updatereservation).

You need to pass:

- `lockerBankId` (path parameter)

- `lockerUnitId` (path parameter)

**Step 7: Free the Reserved Locker Unit**

Use the [Free Reserved Locker Unit API](/openapi/parcelpoint/locker-unit/freereservation) to cancel the existing reservation. This makes the locker unit available for the next package.

You need to pass:

- `lockerBankId` (path parameter)

- unit to be freed - `lockerUnitId` (path parameter)


Version: 1.0.0

## Servers

```
https://api-dev.sendpro360.pitneycloud.com/parcelpoint
```

```
https://api-qa.sendpro360.pitneycloud.com/parcelpoint
```

Sandbox Server
```
https://api-sandbox.sendpro360.pitneybowes.com/parcelpoint
```

Production Server (uses live data)
```
https://api.sendpro360.pitneybowes.com/parcelpoint
```

## Security

### basicAuth

Type: http
Scheme: basic

### bearerAuth

Type: http
Scheme: bearer

## Download OpenAPI description

[Lockers APIs](https://docs.sendpro360.pitneycloud.com/_bundle/openapi/parcelpoint.yaml)

## Locker Bank

APIs for retrieving and managing locker bank information. Locker banks represent physical installations of smart lockers at specific locations. These APIs support operations such as listing available locker banks, retrieving locker bank details, and fetching available locker unit sizes within a bank. The returned lockerBankId is required for all subsequent locker unit operations.

### Get List of all Locker Banks

 - [GET /api/v1/lockerBanks](https://docs.sendpro360.pitneycloud.com/openapi/parcelpoint/locker-bank/getlockerbanks.md): This API operation returns a list of all available locker banks where packages can be deposited for recipient pickup.

### List of Locker Sizes in a Locker Bank

 - [GET /api/v1/lockerBanks/{lockerBankId}/lockers/sizes](https://docs.sendpro360.pitneycloud.com/openapi/parcelpoint/locker-bank/lockersizes.md): This API operation returns all available locker sizes in the specified locker bank to help select an appropriate size for reservations.

### Get Locker Bank by Locker Bank ID

 - [GET /api/v1/lockerBanks/{lockerBankId}](https://docs.sendpro360.pitneycloud.com/openapi/parcelpoint/locker-bank/getlockerbankdetails.md): This API operation retrieves detailed information for the specified locker bank along with the list of locker units.

## Locker Unit

APIs for managing locker unit reservations and parcel handling workflows within a locker bank. These APIs support operations such as reserving locker units, depositing parcels, retrieving reservation details, updating reservations, and freeing locker units. Together, these operations enable end-to-end management of locker-based delivery and pickup workflows.

### Creates a new Reservation for a Locker

 - [POST /api/v1/lockerBanks/{lockerBankId}/lockers/reserve](https://docs.sendpro360.pitneycloud.com/openapi/parcelpoint/locker-unit/createreservation.md): This API operation creates a reservation for a locker unit in the specified locker bank.

 Locker selection rules
- Provide either size or lockerUnitId.
- If lockerUnitId is provided, the system reserves that exact locker.
- If only size is provided, the system selects any available locker of that size.
- If both are provided, lockerUnitId takes precedence and size is ignored.

### Free a Reserved Locker Unit

 - [POST /api/v1/lockerBanks/{lockerBankId}/lockers/{lockerUnitId}/free](https://docs.sendpro360.pitneycloud.com/openapi/parcelpoint/locker-unit/freereservation.md): 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.

### Get Reservation List by Contact ID

 - [GET /api/v1/lockerBanks/{lockerBankId}/lockers/reserved/contact/{contactId}](https://docs.sendpro360.pitneycloud.com/openapi/parcelpoint/locker-unit/getreservationlist.md): This API operation retrieves all active reservations for the specified contact within the given locker bank. Use this API to view all locker units currently reserved for a particular recipient or department.

### Get Reservation by Tracking Number

 - [GET /api/v1/lockerBanks/{lockerBankId}/lockers/reserved/{trackingNumber}](https://docs.sendpro360.pitneycloud.com/openapi/parcelpoint/locker-unit/getreservation.md): This API operation retrieves the reservation details for a specific parcel using its tracking number within the specified locker bank.

### Deposit a package into a locker unit

 - [PATCH /api/v1/lockerBanks/{lockerBankId}/lockers/{lockerUnitId}/deposit](https://docs.sendpro360.pitneycloud.com/openapi/parcelpoint/locker-unit/updatedeposit.md): This API operation deposit a package into a locker unit in the specified locker bank

### Update Reservation

 - [PATCH /api/v1/lockerBanks/{lockerBankId}/lockers/{lockerUnitId}/reservation/update](https://docs.sendpro360.pitneycloud.com/openapi/parcelpoint/locker-unit/updatereservation.md): This API operation updates the reservation information to add a package into an existing locker unit in the given locker bank.

