# Creates a new Reservation for a Locker

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.

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

## Path parameters:

  - `lockerBankId` (string, required)
    This is the unique identifier of the locker bank.

## Request fields (application/json):

  - `userId` (string, required)
    The identifier of the user performing the locker reservation action.
    Example: thirdpartyuser@gmail.com

  - `size` (string)
    Requested locker size for the reservation.Used only when `lockerUnitId` is not provided. If both `size` and `lockerUnitId` are provided, this value is ignored. valid values are- small, medium, large and mlarge.
    Example: small

  - `accessible` (boolean)
    Requests a locker that would be deemed handicapped accesible to recipients.
    Example: true

  - `lockerUnitId` (string)
    The locker unit number you wish to reserve.
    Example: 2

  - `contactId` (string, required)
    The identifier of the recipient of the package for whom the locker reservation is created.
    Example: 684a6b7bbc85e1bce739xxxx

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

  - `trackingNumber` (string, required)
    The primary identifier of a package, usually a carrier's tracking number.
    Example: TrackigID137

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

  - `reservationExpiryTime` (string)
    The timestamp when the reservation for the locker unit is scheduled to expire. Once reservation is expired, the locker unit becomes available for new reservations.
    Example: 2027-12-01T00:00:00Z

## Response 200 fields (application/json):

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

  - `lockerUnitId` (string)
    The locker unit number assigned for the reservation.
    Example: 2

  - `size` (string)
    The size of the locker assigned for the reservation.
    Example: small

  - `contactId` (string)
    The identifier of the recipient of the package associated with the reservation.
    Example: 684a6b7bbc85e1bce739xxxx

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

  - `trackingNumber` (string)
    The primary identifier of a package, usually a carrier's tracking number.
    Example: TrackigID137

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

  - `reservationExpiryTime` (string)
    The timestamp when the reservation for the locker unit is scheduled to expire. Once reservation is expired, the locker unit becomes available for new reservations.
    Example: 2027-12-01T00:00:00Z

## 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.

