---
title: "PATCH /Inventory/{id}/units-per-container"
method: PATCH
path: "/Inventory/{id}/units-per-container"
tags: ["Inventory"]
---

# PATCH /Inventory/{id}/units-per-container

`PATCH /Inventory/{id}/units-per-container`

## Path parameters

- `id` string, required

## Request body

- UpdateUnitsPerContainerDto — Set an item's container size on its own (ITE-314). Exists because PUT /inventory/{id} is a full replace: every caller must send a complete item, so a caller that only knows the container size — the vendor-invoice importer, which collects it to convert per-container prices — would have to hand-build the whole item DTO and would silently blank whatever it missed.
  - `unitsPerContainer` union — Dispensing units one container holds. Must be greater than zero; null clears it back to "unknown".
    - number, double
    - string, double

## Response `200`

OK

- InventoryItemDto
  - `id` string
  - `name` string
  - `invoiceName` string, nullable
  - `sku` string, nullable
  - `barcode` string, nullable
  - `description` string, nullable
  - `defaultSig` string, nullable — Default prescription instructions (SIG) for rx-required items. See PAW-671.
  - `compoundFormula` string, nullable — Compounding formula / preparation details for compounded items. See PAW-671.
  - `category` string
  - `vaccineTypeId` string, nullable
  - `status` string
  - `vendorId` string, nullable
  - `vendor` VendorSummaryDto
    - `id` string
    - `name` string
    - `code` string, nullable
  - `vendorItemNumber` string, nullable
  - `drugForm` string, nullable
  - `strength` string, nullable
  - `ndc` string, nullable
  - `isCompounded` boolean
  - `rxRequired` boolean
  - `allowedSpeciesIds` string[], nullable
  - `vcprRequiredDays` union
    - integer
    - string, int32
  - `maxDispenseQuantity` union
    - number, double
    - string, double
  - `deaBookId` string, nullable
  - `deaBook` DEABookSummaryDto
    - `id` string
    - `drugName` string
    - `deaSchedule` string, nullable
  - `deaSchedule` string, nullable
  - `controlledSubstanceSchedule` union
    - integer
    - string, int32
  - `requiresWitness` boolean — Server-computed: does dispensing this item require a witness on submit? Mirrors the predicate in DispenseValidator so UI gating stays in lockstep with backend validation.
  - `distributionCategory` string, nullable
  - `cascadeEligible` boolean
  - `isAntimicrobial` boolean
  - `antimicrobialType` string, nullable
  - `requiresUnderCare` boolean
  - `requiresPhysicalExam` boolean
  - `foodProducing` boolean
  - `requiresWithdrawalPeriod` boolean
  - `unitCost` union
    - number, double
    - string, double
  - `unitPrice` union
    - number, double
    - string, double
  - `pricePolicy` string
  - `markupPercent` union
    - number, double
    - string, double
  - `mapPrice` union
    - number, double
    - string, double
  - `dispenseFee` union
    - number, double
    - string, double
  - `unitsPerContainer` union — Dispensing units per container (e.g. 30 tablets per bottle). Display and conversion aid only — never enters price math.
    - number, double
    - string, double
  - `sellingPrice` union — Indicative per-unit selling price derived from the price policy and the most-recent lot cost (or catalog UnitCost). Lets the item-lookup dropdown show a real price instead of $0 for cost-based or empty-UnitPrice items. The amount actually charged is recomputed at dispense from the specific lot, so treat this as an estimate. Null when no price can be inferred.
    - number, double
    - string, double
  - `isTaxable` boolean
  - `vatCategory` string, nullable
  - `trackLots` boolean
  - `storageRequirements` union
    - integer
    - string, int32
  - `minQuantity` union
    - number, double
    - string, double
  - `parQuantity` union
    - number, double
    - string, double
  - `maxQuantity` union
    - number, double
    - string, double
  - `reorderPoint` union
    - number, double
    - string, double
  - `totalOnHand` union
    - number, double
    - string, double
  - `activeLotCount` union
    - integer
    - string, int32
  - `earliestExpiration` string, date-time, nullable
  - `createdAt` string, date-time
  - `updatedAt` string, date-time

## Other responses

- `400` — Bad Request
- `404` — Not Found

---

[API](https://skmtc.net/clinicos/apis/pawthosx-business-api-v1.md) · [All operations](https://skmtc.net/clinicos/apis/pawthosx-business-api-v1/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/clinicos/pawthosx-business-api-v1/versions/a905bde4e796/schema)
