Reservations by date (V2)

The V2 reservation by date supports reservation at node and network level with ability to book reservation against future inventory. The network level V2 reservation uses the node priority calculation that ensures reservations are booked against a node. In the order, the node priority is defined in the distribution group definition.

Node reservation by date

To create a future reservation, the attribute requestedReservationTs can be used to define the future start date. If there are use cases to protect future inventory such as inbound PO or preOrder scenario, the requestEndTs attribute can be used in the reservation request to limit the inventory availability lookup range. The requestEndTs is the timestamp on how late the reservation can postpone to before considering insufficient reservation quantity.
Note: The default requestedEndTs is 30 days from requestedReservationTs.

Example: Reservation with requestEndTs

Consider today date as 1 October 2022, and the inventory picture for PLATE-EACH-NEW at Node1 is as followed:
  • On-hand quantity: 5 qty
  • PO arriving on 5 October 2022 - 10 qty
  • PO arriving on 10 November 2022 - 15 qty

First, supplies that are valid on requestedReservationTs are used to fulfill the reservation request. If these supplies are not sufficient for full quantity, then supplies coming on or before requestedEndTs are also considered. In this example, the current date is 1 October 2022 and the node quantities for the PLATE-EACH-NEW item is as follows.

If V2 Reservation POST API is called for node1-PLATE-EACH-NEW for 12 quantity on 1 October 2022 without passing requestedReservationTs and requestedEndTs, reservation is successful. The reservationTS is determined based on the last availability date that can fulfill all the requested quantity.

{
 "availabilityType" : "SELL",
 "considerSafetyStock" : true,
 "lines" : [ {
          "deliveryMethod" : "SHP",
          "itemId" : "PLATE",
          "lineId" : "1",
          "productClass" : "NEW",
          "quantity" : 12.0,
          "requestedReservationTs" : "2022-10-01T00:00:00.000Z",
          "reservations" : [ {
               "expirationTs" : "2022-10-01T00:15:00.000Z",
               "id" : "4a61f54d-6134-4c1e-bedc-11ac0a19e4c5",
               "quantity" : 12.0,
               "reservationTs" : "2022-10-05T00:00:00.000Z",
               "shipNode" : "node1"
               "totalReservedQuantity" : 12.0,
               "unitOfMeasure" : "EACH"
          } ]
     }
}
With the same supply picture, if reservation API is called with 2 October 2022 as requestedReservationTs and 11 November 2022 as requestedEndTs for 17 quantity, the reservation is made at node1 for a quantity of 17. All supplies are considered in this case. The reservation API output is as follows.
{
 "availabilityType" : "SELL",
 "considerSafetyStock" : true,
 "lines" : [ {
         "deliveryMethod" : "SHP",
         "itemId" : "PLATE",
         "lineId" : "1",
         "productClass" : "NEW",
         "quantity" : 17.0,
         "requestedReservationTs" : "2022-10-02T00:00:00.000Z",
         "reservations" : [ {
               "expirationTs" : "2022-10-02T00:15:00.000Z",
               "id" : "4a61f54d-6134-4c1e-bedc-11ac0a19e4c5",
               "quantity" : 17.0,
               "reservationTs" : "2022-11-10T00:00:00.000Z",
               "shipNode" : "node1"
               } ],
       "shipNode" : "node1"
       "totalReservedQuantity" : 17.0,
       "unitOfMeasure" : "EACH"
       } ]
}

Reservation line limit

Ensure that the number of item-node or distribution group line requests are limited to a maximum of 500 lines for each API invocation.
Important: The line limit will be enforced at the end of July 2024.

Distribution group reservation by date

The distribution group level reservation is always placed by using node priority feature. For more information, see Reservations topic. Additionally, distribution group reservation also uses requestedReservationTs and requestedEndTs fields as described in the node reservation section.

Distribution group reservation response placed against a single node in the network:
{
 "availabilityType" : "SELL",
 "considerSafetyStock" : true,
 "lines" : [ {
       "deliveryMethod" : "SHP",
       "distributionGroup" : "DG1",
       "itemId" : "PLATE",
       "lineId" : "1",
       "productClass" : "CLASS_1",
       "quantity" : 5.0,
       "requestedReservationTs" : "2021-07-07T00:00:00.495Z",
       "reservations" : [ {
            "expirationTs" : "IGNORE_VALUE",
            "id" : "IGNORE_VALUE",
            "reservedQuantity" : 5.0,
            "reservationTs" : "2021-07-07T00:00:00.000Z",
            "shipNode" : "store-BostonMA"
            } ],
        "segment" : " ",
        "segmentType" : " ",
        "totalReservedQuantity" : 5.0,
        "unitOfMeasure" : "EACH"
        } ]
}
Distribution group reservation response for reservation booking against in multiple nodes:
{
  "availabilityType" : "SELL",
  "considerSafetyStock" : true,
  "lines" : [ {
       "deliveryMethod" : "SHP",
       "distributionGroup" : "DG1",
       "itemId" : "PLATE",
       "lineId" : "1",
       "productClass" : "CLASS_1",
       "quantity" : 25.0,
       "requestedReservationTs" : "2021-07-07T00:00:00.864Z",
       "reservations" : [ {
             "expirationTs" : "2021-07-07T00:16:00.000Z",
             "id" : "IGNORE_VALUE",
             "reservedQuantity" : 10.0,
             "reservationTs" : "2021-07-07T00:00:00.000Z",
             "shipNode" : "store-BostonMA"
             }, {
             "expirationTs" : "2021-07-07T00:16:00.000Z",
             "id" : "IGNORE_VALUE",
             "reservedQuantity" : 10.0,
             "reservationTs" : "2021-07-07T00:00:00.000Z",
             "shipNode" : "store-SacramentoCA"
             }, {
             "expirationTs" : "2021-07-07T00:16:00.000Z",
             "id" : "IGNORE_VALUE",
             "reservedQuantity" : 5.0,
             "reservationTs" : "2021-07-07T00:00:00.000Z",
             "shipNode" : "store-SpringfieldIL"
              } ],
       "segment" : " ",
       "segmentType" : " ",
       "totalReservedQuantity" : 25.0,
       "unitOfMeasure" : "EACH"
       } ]
}

Distribution group reservation when network availability and node availability is different

There are scenarios when the network availability and collection of node availability does not match up due to difference in safety stock rules settings. Assume that there is a network level safety stock of 2 qty.

Given the following setup:
  • Node1 - 3 qty
  • Node2 - 2 qty
  • DG1 = [Node1, Node2] = 3 + 2 = 5 qty is the total available

If safety stock of DG1 is 2, then the total availability for DG1 is 5 - 2 = 3 qty.

When a reservation is made against DG1 for 5 qty, the reservation results in partial reserved of 3 qty. This is because the 2 quantity is withheld at the network level regardless of the availability at node level. If the safety stock is set at Node2 instead, the total reserved quantity remains 3 except that the consideration was restricted by the node instead of the network.