| 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_SUBDOMAIN
VITE_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 match
name (string) - Name match
upc_code (string) - UPC code match
category_id (integer) - Filter by category ID
id (array) - Array of product IDs to fetch
id_not (array) - Exclude these IDs
query (string) - General search query
sort (string) - Order by field, e.g., "name ASC"
page (integer) - Page number (25 results per page)
Create Product (POST /products)
Required:
name (string) - Product name
description (string) - Product description
Important optional:
price_cost (number) - Cost price
price_retail (number) - Selling price
price_wholesale (number) - Wholesale price
quantity (integer) - Stock quantity
maintain_stock (boolean) - Track inventory?
serialized (boolean) - Track by serial number?
taxable (boolean) - Sales tax applies?
upc_code (string) - Barcode
category_ids (array) - Category IDs
vendor_ids (array) - Vendor IDs
product_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: either url + filename or files([...])
Delete Image (DELETE /products/{id}/delete_image)
id (integer) - Product ID
photo_id (integer, optional) - Specific photo ID
Update 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_id
Example call:
const products = await skill({ name: "repairshopr-product" }, {
query: "samsung",
category_id: 5,
page: 1
})
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"
})
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
name and description required 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_image endpoint
Related skills
repairshopr-item - For parts orders derived from products
repairshopr-product-serial - For serialized product instances
repairshopr-purchase-order - For ordering products from vendors