name: repairshopr-product description: Manage products (parts/inventory) in RepairShopr catalog license: MIT compatibility: opencode metadata: audience: technicians, parts managers, administrators api: GET /products, POST /products, GET /products/{id}, PUT /products/{id}, GET /products/barcode, GET /products/categories, POST /products/{id}/add_images, DELETE /products/{id}/delete_image, PUT /products/{id}/location_quantities
What I do
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.
When to use me
Use this when:
- Adding new parts or products to your catalog
- Looking up product details (price, quantity, description)
- Updating product pricing or stock levels
- Searching products by SKU, name, barcode, or category
- Managing product categories and images
- Checking stock availability across locations
How to use
Required API base URL:
VITE_REPAIRSHOPR_SUBDOMAINVITE_REPAIRSHOPR_API_KEY
Permissions:
- "Products - List/Search" for reading and listing
- "Products - Create" for creating
- "Products - Edit" for updating, adding images
- "Products - Edit Quantities" for location quantities
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 description
Important 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) - SKUs
Get Product (GET /products/{id})
id(integer) - Product ID
Update 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/UPC
Get Categories (GET /products/categories) Lists product categories
Add Images (POST /products/{id}/add_images)
id(integer) - Product ID Body: eitherurl+filenameorfiles([...])
Delete Image (DELETE /products/{id}/delete_image)
id(integer) - Product IDphoto_id(integer, optional) - Specific photo ID
Update Location Quantity (PUT /products/{id}/location_quantities)
id(integer) - Product ID Body:quantity(integer), optionallylocation_quantity_id,price_cost_cents,price_retail_cents,tax_rate_id
Example 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:
- Product objects with full details:
id,name,description,price_cost,price_retail,quantity,category, etc. - Barcode lookup returns single
product
Important
nameanddescriptionrequired for creation- Stock management only active if
maintain_stock: true - Serialized products track individual units
- Location quantities allow per-location stock levels
- UPC/SKU fields are for barcode scanning
- Deleting images uses DELETE to
/delete_imageendpoint
Related skills
repairshopr-item- For parts orders derived from productsrepairshopr-product-serial- For serialized product instancesrepairshopr-purchase-order- For ordering products from vendors