Manage products (parts/inventory) in RepairShopr catalog
I manage products in the RepairShopr catalog. Products represent parts, items, or services that can be sold, used in invoices/estimates, or tracked in inventory. I support full CRUD operations, barcode lookup, category management, image management, and location-specific quantities.
Use this when:
Required API base URL:
VITE_REPAIRSHOPR_SUBDOMAINVITE_REPAIRSHOPR_API_KEYPermissions:
List Products (GET /products) Optional:
sku (string) - Exact SKU matchname (string) - Name matchupc_code (string) - UPC code matchcategory_id (integer) - Filter by category IDid (array) - Array of product IDs to fetchid_not (array) - Exclude these IDsquery (string) - General search querysort (string) - Order by field, e.g., "name ASC"page (integer) - Page number (25 results per page)Create Product (POST /products) Required:
name (string) - Product namedescription (string) - Product descriptionImportant optional:
price_cost (number) - Cost priceprice_retail (number) - Selling priceprice_wholesale (number) - Wholesale pricequantity (integer) - Stock quantitymaintain_stock (boolean) - Track inventory?serialized (boolean) - Track by serial number?taxable (boolean) - Sales tax applies?upc_code (string) - Barcodecategory_ids (array) - Category IDsvendor_ids (array) - Vendor IDsproduct_skus_attributes (array) - SKUsGet Product (GET /products/{id})
id (integer) - Product IDUpdate Product (PUT /products/{id})
id (integer) - Product ID
Body includes any updatable fields (name, description, prices, quantity, etc.)Barcode Lookup (GET /products/barcode)
barcode (string) - Barcode to search
Returns product if found by barcode/UPCGet Categories (GET /products/categories) Lists product categories
Add Images (POST /products/{id}/add_images)
id (integer) - Product ID
Body: either url + filename or files([...])Delete Image (DELETE /products/{id}/delete_image)
id (integer) - Product IDphoto_id (integer, optional) - Specific photo IDUpdate Location Quantity (PUT /products/{id}/location_quantities)
id (integer) - Product ID
Body: quantity (integer), optionally location_quantity_id, price_cost_cents, price_retail_cents, tax_rate_idExample call:
// Search products
const products = await skill({ name: "repairshopr-product" }, {
query: "samsung",
category_id: 5,
page: 1
})
// Create product
const product = await skill({ name: "repairshopr-product" }, {
name: "iPhone 15 Display Assembly",
description: "Original OEM display for iPhone 15",
price_cost: 249.99,
price_retail: 399.99,
quantity: 10,
maintain_stock: true,
serialized: false,
upc_code: "123456789012"
})
// Update stock quantity for a location
await skill({ name: "repairshopr-product" }, {
quantity: 5,
location_quantity_id: 12
}, { id: product.product.id, method: 'PUT', endpoint: '/location_quantities' })
Response includes:
id, name, description, price_cost, price_retail, quantity, category, etc.productname and description required for creationmaintain_stock: true/delete_image endpointrepairshopr-item - For parts orders derived from productsrepairshopr-product-serial - For serialized product instancesrepairshopr-purchase-order - For ordering products from vendors