Shepherd Veterinary Software Inventory Product Setting API
The InventoryProductSetting API from Shepherd Veterinary Software — 1 operation(s) for inventoryproductsetting.
The InventoryProductSetting API from Shepherd Veterinary Software — 1 operation(s) for inventoryproductsetting.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/shepherd-vet:shepherd-vet-inventoryproductsetting-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
version: v1
title: Shepherd Open API (v2.248.0.39) Inventory Product Setting…
description: 'Production Base URL: https://open-api.shepherd.vet/pav2/
Production App URL: https://app.shepherd.vet/
Production Documentation URL: https://app.shepherd.vet/swagger/
Sandbox Base URL: https://demo-open-api.shepherd.vet/pav2/
Sandbox App URL: https://demo.shepherd.vet/
Sandbox Documentation URL: https://demo.shepherd.vet/swagger
Authorization: The integration is authorized by providing two headers in the API call
X-Integration-Private-Key - this contains the private key from your credentials
X-Integration-Public-Key - this contains the public key from your credentials
Additionally, for all requests other than Clinic, the X-Clinic-Id header must be provided with the value of the clinic entity id for which you are running the API requests. You can get the entity id by calling the Clinic endpoint. If authorization fails, the request returns HTTP status 401 and the response body is one of the messages below. Missing X-Integration-Public-Key header - the public key header is absent from the request. Missing X-Integration-Private-Key header - the private key header is absent from the request. Missing X-Clinic-Id header - the clinic identifier header is absent, and the endpoint is clinic scoped. Incorrect API keys provided - both key headers were supplied, but the public key matches no integration, or the private key is not valid for that integration. Integration not enabled for the provided clinic - the key pair is valid, but the integration is not enabled and active for the clinic supplied in X-Clinic-Id. NEW: Each API call will count against your RPH and RPM limits. Once you exhaust those limits, requests will start returning HTTP status 429. The RPH is set to 12000 and RPM to 800 (subject to change). Where an endpoint supports searchQuery, a query longer than 500 characters may return HTTP status 400 with ERROR_MESSAGES.SEARCH_PHRASE.TOO_LONG, and a query with more than 10 words may return HTTP status 400 with ERROR_MESSAGES.SEARCH_PHRASE.TOO_MANY_PHRASES. NOTE: Since this API is WIP, we would be happy to hear any feedback and to implement additional filtering/sorting options etc. **Endpoints:
All endpoints are POST requests that accept JSON bodies. The common request properties for all endpoints are:**
rpp::int - The number of items to return per page. The max is 1000. Defaults to 10. page::int - The page number. Defaults to 1. sort::string - Which field to sort by. Needs to be in "field|order" format, where order is either "asc" or "desc". All top-level properties should be sortable, only some nested-fields work and you should probably not use them until this API reaches production and we settle on which nested-field sortings we will support. Default depends on endpoint, usually "id|asc". embed::string - Comma-separated values for nested-fields you want to fetch (eg. "clientPhones,clientPhones.phoneType" on Client endpoint). If a specific embed is not requested, the response will contain either null or an empty array for that value. No default. dateCreatedFrom::date
dateCreatedTo::date
dateUpdatedFrom::date
dateUpdatedTo::date
- Date range filters for either the creation date or last update date. - You can pass in either one end or both of them. *
* Only the date filters listed on an endpoint''s request model are supported; sending another one, or a ''From'' later than its ''To'', returns HTTP status 400. The request responses will come back as a JSON object. The common response properties for all endpoints are:
embed::string - Lists the embed used in the request. This may sometimes be different from what you sent in, if in the future we add that some embeds get set automatically on certain endpoints
links::object[] - Always empty, a leftover from the internal framework we use on our web API. Will be removed in the future if possible so do not rely on this
page::int - Which page was fetched.'
servers:
- url: https://open-api.shepherd.vet
tags:
- name: InventoryProductSetting
paths:
/pav2/open-api-inventory-product-settings:
post:
tags:
- InventoryProductSetting
summary: Retrieves {OpenApiInventoryProductSettingController.InventoryProductSetting}…
description: 'Example Request
{
"embed": "inventoryProductLocationProducts,inventoryProductLocationProducts.inventoryProductLocation"
}
Example Response
{
"embed": "inventoryProductLocationProducts,inventoryProductLocationProducts.inventoryProductLocation",
"item": [
{
"barcode": "9876543210",
"clinicId": "0d2bda4e-7a9b-41a5-a7b7-c2c4c888f1e5",
"cost": 12.5,
"initialCount": null,
"inventoryProductLocationProducts": [
{
"inventoryProductLocation": {
"clinicId": "0d2bda4e-7a9b-41a5-a7b7-c2c4c888f1e5",
"abrv": "ST1",
"description": "Storage Room 1",
"name": "Storage 1",
"dateCreated": "2025-06-25T08:10:12.123456Z",
"dateUpdated": "2025-06-25T08:10:12.223456Z",
"id": "bce21234-8ff1-4f9c-b2c0-d0a1b51cdabc"
},
"productLocationId": "bce21234-8ff1-4f9c-b2c0-d0a1b51cdabc",
"dateCreated": "2025-06-25T08:11:45.987000Z",
"dateUpdated": "2025-06-25T08:12:01.000000Z",
"id": "e1a96d2c-c5e0-41e2-b3ea-cd58c750d999"
}
],
"inventoryVendor": null,
"isActive": true,
"lastCostChange": null,
"lastMarkupChange": null,
"markup": 5,
"maxQuantity": 20,
"minQuantity": 5,
"name": "Multivitamin Supplement",
"orderQuantity": 10,
"pricePerUnit": 14.99,
"pricePerUom": 14.99,
"products": null,
"reorderPoint": 8,
"trackByLots": true,
"unitOfMeasure": null,
"unitOfMeasureId": "dc2f8a21-6219-4869-a0a3-992b9fe700cd",
"unitType": null,
"unitTypeId": "dc2f8a21-6219-4869-a0a3-992b9fe700cd",
"units": 1,
"vendorId": "e3f2d96c-b7aa-44e6-96d1-9f98cf5bd11f",
"dateCreated": "2025-06-25T08:11:21.123456Z",
"dateUpdated": "2025-06-25T09:02:33.789000Z",
"id": "a5e66a49-3420-4e52-a5c3-7350e38e4f7d"
}
]
}'
operationId: OpenApiInventoryProductSettingGet
parameters:
- name: x-integration-public-key
in: header
description: Your public API key
required: true
schema:
type: string
- name: x-integration-private-key
in: header
description: Your private API key
required: true
schema:
type: string
- name: x-clinic-id
in: header
description: The clinic uuid identifier
required: true
schema:
type: string
responses:
'200':
description: A paged collection of inventory product settings matching the supplied search criteria.
content:
application/json:
schema:
$ref: '#/components/schemas/RESTCollectionModelBase_OpenApiInventoryProductSettingController.InventoryProductSetting'
text/json:
schema:
$ref: '#/components/schemas/RESTCollectionModelBase_OpenApiInventoryProductSettingController.InventoryProductSetting'
application/hal+json:
schema:
$ref: '#/components/schemas/RESTCollectionModelBase_OpenApiInventoryProductSettingController.InventoryProductSetting'
'401':
description: 'Authorization failed. One of: Missing X-Integration-Public-Key header, Missing X-Integration-Private-Key header, Missing X-Clinic-Id header, Incorrect API keys provided, or Integration not enabled for the provided clinic.'
'429':
description: Request rate limit exceeded. Please wait before making further requests. Returned once the integration passes its configured hourly or per-minute request allowance.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/OpenApiInventoryProductSettingController.InventoryProductSettingFilterModel'
text/json:
schema:
$ref: '#/components/schemas/OpenApiInventoryProductSettingController.InventoryProductSettingFilterModel'
application/hal+json:
schema:
$ref: '#/components/schemas/OpenApiInventoryProductSettingController.InventoryProductSettingFilterModel'
description: The model.
required: true
components:
schemas:
OpenApiInventoryProductSettingController.DispensingFee:
description: DispensingFee REST model.
type: object
properties:
amount:
format: double
description: Dispensing fee amount.
type: number
clinicId:
description: Unique identifier representing the related Clinic entity.
type: string
name:
description: Product bundle Name.
type: string
dateCreated:
format: date-time
type: string
dateUpdated:
format: date-time
type: string
id:
type: string
OpenApiInventoryProductSettingController.InventoryProductLocation:
description: InventoryProductLocation REST model.
type: object
properties:
clinicId:
description: Unique identifier representing the related Clinic entity.
type: string
abrv:
description: Short unique identifier for the lookup.
type: string
description:
description: The description of the lookup entry.
type: string
name:
description: The name of the lookup entry.
type: string
dateCreated:
format: date-time
type: string
dateUpdated:
format: date-time
type: string
id:
type: string
RESTCollectionModelBase_OpenApiInventoryProductSettingController.InventoryProductSetting:
type: object
properties:
embed:
type: string
item:
type: array
items:
$ref: '#/components/schemas/OpenApiInventoryProductSettingController.InventoryProductSetting'
page:
format: int32
type: integer
recordsPerPage:
format: int32
type: integer
searchQuery:
type: string
sort:
type: string
totalRecords:
format: int32
type: integer
OpenApiInventoryProductSettingController.InventoryProductSetting:
description: InventoryProductSetting REST model.
type: object
properties:
barcode:
description: Barcode assigned to the Inventory item.
type: string
clinicId:
description: Unique identifier representing the related Clinic entity.
type: string
cost:
format: double
description: The cost per unit of measure (UOM) represents the ordering cost of the item when purchased from the manufacturer.
type: number
currentQuantity:
format: double
description: Item's current quantity on hand
type: number
initialCount:
format: double
description: Initial count on inventory item.
type: number
inventoryProductLocationProducts:
description: List of objects representing related Inventory product location products entities.
type: array
items:
$ref: '#/components/schemas/OpenApiInventoryProductSettingController.InventoryProductLocationProduct'
inventoryTrackings:
description: 'An array of objects representing Inventory Tracking/Inventory Lot information
Only Active(Non Archived) Entries can be embedded here. To fetch the full list,
use open-api-inventory/trackings endpoint to fetch all items.'
type: array
items:
$ref: '#/components/schemas/OpenApiInventoryProductSettingController.InventoryTracking'
inventoryVendor:
$ref: '#/components/schemas/OpenApiInventoryProductSettingController.InventoryVendor'
description: Object representing the related Inventory vendor entity.
isActive:
description: Value indicating whether this InventoryProductSetting is active.
type: boolean
lastCostChange:
format: date-time
description: Date of the Last cost change.
type: string
lastMarkupChange:
format: date-time
description: Date of the Last markup change.
type: string
markup:
format: double
description: Markup amount.
type: number
maxQuantity:
format: double
description: The maximum quantity represents the targeted quantity on hand (QOH) amount for the item, any quantity exceeding this value is considered overstock.
type: number
minQuantity:
format: double
description: The minimum quantity represents the lowest allowable stock level before a reorder is required.
type: number
name:
description: Name.
type: string
orderQuantity:
format: double
description: Order quantity amount.
type: number
pricePerUnit:
format: double
description: Price per unit.
type: number
pricePerUom:
format: double
description: Price per uom.
type: number
products:
description: List of objects representing products linked to the Inventory.
type: array
items:
$ref: '#/components/schemas/OpenApiInventoryProductSettingController.Product'
reorderPoint:
format: double
description: Reorder point amount. It can be set higher than the minimum quantity to allow a buffer for item.
type: number
trackByLots:
description: Flag indicating whether InventoryProduct is tracked by lots.
type: boolean
unitOfMeasure:
$ref: '#/components/schemas/OpenApiInventoryProductSettingController.UomUnit'
description: Object representing the related unit of measure (UOM) entity. Unit of measure indicates the order size for the item.
unitOfMeasureId:
format: uuid
description: Unique identifier representing the related Uom entity.
type: string
example: 00000000-0000-0000-0000-000000000000
unitType:
$ref: '#/components/schemas/OpenApiInventoryProductSettingController.UomUnit'
description: Object representing the related unit type entity. The unit type represents the retail or dispensing form of the item. The UOM to unit type relationship defines how many individual units are contained within the larger unit of measure (e.g., UOM = Bottle, Units = 500, Unit Type = Capsules)
unitTypeId:
format: uuid
description: Unique identifier representing the related unit type entity.
type: string
example: 00000000-0000-0000-0000-000000000000
units:
format: double
description: Number of items contained within one unit of measure (UOM).
type: number
vendorId:
format: uuid
description: Unique identifier representing the related Vendor entity.
type: string
example: 00000000-0000-0000-0000-000000000000
dateCreated:
format: date-time
type: string
dateUpdated:
format: date-time
type: string
id:
type: string
OpenApiInventoryProductSettingController.InventoryVendor:
description: InventoryVendor REST model.
type: object
properties:
address:
description: Primary street address of the inventory vendor
type: string
city:
description: City where the inventory vendor resides.
type: string
clinicId:
description: Unique identifier representing the related Clinic entity.
type: string
code:
description: Unique code assigned to inventory vendor.
type: string
isActive:
description: Flag indicating whether this InventoryVendor is active.
type: boolean
name:
description: Vendor's Name.
type: string
postalCode:
description: Postal code.
type: string
state:
description: ' Name of the state or province in the vendor''s address.
Can be represented either as an abbreviation (e.g., "TX") or as the full name (e.g., "Texas").'
type: string
dateCreated:
format: date-time
type: string
dateUpdated:
format: date-time
type: string
id:
type: string
OpenApiInventoryProductSettingController.Product:
description: Product REST model.
type: object
properties:
administrationPeriod:
$ref: '#/components/schemas/OpenApiInventoryProductSettingController.AdministrationPeriod'
description: Object representing related Administration period entity.
administrationPeriodId:
description: Unique identifier representing the related Administration period entity.
type: string
automaticTask:
description: Flag indicating whether an automatic task exists for this product.
type: boolean
automaticTaskDueDate:
format: int32
description: Automatic task due date.
type: integer
automaticTaskPriorityStatusId:
description: Unique identifier representing the related Automatic task priority status entity.
type: string
automaticTaskTitle:
description: Automatic task title.
type: string
clinicId:
description: Unique identifier representing the related Clinic entity.
type: string
customDispensingFee:
format: double
description: Dispensing fee amount.
type: number
defaultMedicalRecord:
description: 'Flag indicating whether product will use a default medical record note, applies only to those products
that are included in medical record.'
type: boolean
defaultMedicalRecordNote:
description: Free-text field for default medical record note.
type: string
dischargeInstructions:
description: Flag indicating whether this product has discharge instructions.
type: boolean
dischargeInstructionsText:
description: Free-text field for Discharge instructions text.
type: string
dispensingFee:
$ref: '#/components/schemas/OpenApiInventoryProductSettingController.DispensingFee'
description: Object representing related Dispensing Fee entity.
dispensingFeeId:
format: uuid
description: Unique identifier representing the related Dispensing fee entity.
type: string
example: 00000000-0000-0000-0000-000000000000
includedInMedicalRecord:
description: Flag indicating whether product is included in medical record.
type: boolean
includedOnInvoice:
description: Flag indicating whether this product will appear on the printed invoice and estimate. It does not affect invoice and estimate calculations or persistence.
type: boolean
isActive:
description: Flag indicating whether this product is active.
type: boolean
isControlled:
description: Flag indicating whether this product is controlled.
type: boolean
isDiscountable:
description: Flag indicating whether this product is discountable.
type: boolean
isPetAssureDiscountable:
description: Flag indicating whether this product is pet assure discountable.
type: boolean
isTaxable:
description: Flag indicating whether this product is taxable.
type: boolean
name:
description: Name of the product.
type: string
price:
format: double
description: Product price.
type: number
productCategoryId:
description: Unique identifier representing the related Product category entity.
type: string
productTypeId:
description: Unique identifier representing the related Product type entity.
type: string
taskEntryPriorityStatus:
$ref: '#/components/schemas/OpenApiInventoryProductSettingController.TaskEntryPriorityStatus'
description: Object representing related Task entry priority status entity.
timeStamp:
format: date-time
description: Time stamp.
type: string
dateCreated:
format: date-time
type: string
dateUpdated:
format: date-time
type: string
id:
type: string
OpenApiInventoryProductSettingController.UomUnit:
description: Unit of measure REST model.
type: object
properties:
abrv:
description: Short unique identifier for the lookup.
type: string
description:
description: The description of the lookup entry.
type: string
name:
description: The name of the lookup entry.
type: string
dateCreated:
format: date-time
type: string
dateUpdated:
format: date-time
type: string
id:
type: string
OpenApiInventoryProductSettingController.TaskEntryPriorityStatus:
description: TaskEntryPriorityStatus REST model.
type: object
properties:
abrv:
description: Short unique identifier for the lookup.
type: string
description:
description: The description of the lookup entry.
type: string
name:
description: The name of the lookup entry.
type: string
dateCreated:
format: date-time
type: string
dateUpdated:
format: date-time
type: string
id:
type: string
OpenApiInventoryProductSettingController.InventoryProductSettingFilterModel:
description: InventoryProductSetting Filter REST model
type: object
properties:
isActive:
description: Filters by active/inactive status. Defaults to null (fetches both active and inactive inventory product settings).
type: boolean
searchQuery:
description: Filters by name.
type: string
dateCreatedFrom:
format: date-time
description: 'Sets the start of the date range filter on the entity creation date. Must not be later than DateCreatedTo, or
the request returns 400. Defaults to null.'
type: string
dateCreatedTo:
format: date-time
description: The end of the date range filter on the entity creation date. Defaults to null.
type: string
dateUpdatedFrom:
format: date-time
description: 'The start of the date range filter on the entity last update date. Must not be later than DateUpdatedTo, or the
request returns 400. Defaults to null.'
type: string
dateUpdatedTo:
format: date-time
description: The end of the date range filter on the entity last update date. Defaults to null.
type: string
embed:
description: Comma-separated list of embedded properties to fetch. Nested fetches can be specified using dot notation (e.g., "client.clientPhones"). Defaults to null.
type: string
excludeIds:
description: Comma-separated list of IDs representing entities that you wish to exclude from your search. Defaults to null.
type: string
ids:
description: Comma-separated list of IDs representing entities that you wish to include in your search. Defaults to null.
type: string
page:
format: int32
description: The page number. Defaults to 1.
type: integer
rpp:
format: int32
description: The number of items to return per page. The max is 1000. Defaults to 10.
type: integer
sort:
description: Which field to sort by. Needs to be in "field|order" format, where order is either "asc" or "desc". The default sort field depends on the endpoint, typically "id|asc"
type: string
OpenApiInventoryProductSettingController.InventoryTracking:
description: InventoryTracking response model.
type: object
properties:
bottleNumber:
description: Bottle number assigned to the lot.
type: string
cost:
format: double
description: Unit of measure cost amount.
type: number
currentQuantity:
format: double
description: Current quantity amount.
type: number
initialCount:
format: double
description: Initial quantity amount.
type: number
isDefaultLot:
description: Value indicating if this is the default lot for the related item
type: boolean
lotExpirationDate:
format: date-time
description: Lot expiration date.
type: string
lotNumber:
description: Lot number.
type: string
manufacturer:
description: Manufacturer assigned to the lot.
type: string
serialNumber:
description: Serial number assigned to the lot.
type: string
dateCreated:
format: date-time
type: string
dateUpdated:
format: date-time
type: string
id:
type: string
OpenApiInventoryProductSettingController.InventoryProductLocationProduct:
description: InventoryProductLocationProduct REST model.
type: object
properties:
inventoryProductLocation:
$ref: '#/components/schemas/OpenApiInventoryProductSettingController.InventoryProductLocation'
description: Object representing the related Inventory product location entity.
productLocationId:
format: uuid
description: Unique identifier representing the related Product location entity.
type: string
example: 00000000-0000-0000-0000-000000000000
dateCreated:
format: date-time
type: string
dateUpdated:
format: date-time
type: string
id:
type: string
OpenApiInventoryProductSettingController.AdministrationPeriod:
description: Administration period REST model.
type: object
properties:
abrv:
description: Short unique identifier for the lookup.
type: string
description:
description: The description of the lookup entry.
type: string
name:
description: The name of the lookup entry.
type: string
dateCreated:
format: date-time
type: string
dateUpdated:
format: date-time
type: string
id:
type: string