stock.reserve
This method is used to decrement the Stock in a Warehouse and (optionally) create a Reserve.
Arguments
This method has the path /catalog/<version>/stock.reserve
and
follows the MicroBase API calling conventions.
Argument | Required | Type | Example | Description |
---|---|---|---|---|
productId | yes | String | HJ4g4fACrH | The Product id to reserve. |
warehouseId | yes | String | 001 | The Warehouse id to get info on. |
quantity | yes | Number | 1 | The quantity to reserve. |
reserveStockForMinutes | no | Number | 1440 | The time until the Reserve expires. |
The service allows to send a timeout (reserveStockForMinutes
) for the reserve.
If you don't send it, or the service doesn't allow an overwrite of the
default one (allowReserveTimeOverwrite
config), the minutesToReserve
config is used.
Response
Returns a Reserve object if the System is configured to make reservations (The Stock is decremented and a Reserve is created):
{
"ok": true,
"reserve": {
"id": "H1ugxlYO",
"warehouseId": "001",
"quantity": 1,
"expirationTime": "2016-07-29T15:22:08.285Z"
}
}
Returns a warning if the System is not configured to make reservations (The Stock is decremented, but no Reserve is created):
{
"ok": true,
"warning": "stock_verified_but_not_reserved"
}
Errors
Expected errors that this method could return. Some errors return additional data.
Error | Data | Description |
---|---|---|
stock_not_found | - | The Stock was not found |
minimum_quantity_not_met | Minimum quantity | Th Minimum reserve quantity was ont met |
not_enough_stock | - | There is not enough stock for the Product/Warehouse |
concurrency_error | - | There was a concurrency error and the Stock was not reserved |
Example
curl --request GET \
--url http://localhost:3000/services/catalog/v1/stock.reserve?productId=HJ4g4fACrH&warehouseId=001 \
--header 'authorization: Bearer xxxxx...' \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '{"quantity": 1, "reserveStockForMinutes": 1440}'