repairshopr-estimate

star 0

Create and manage estimates in RepairShopr

omiinaya By omiinaya schedule Updated 3/6/2026

name: repairshopr-estimate description: Create and manage estimates in RepairShopr license: MIT compatibility: opencode metadata: audience: technicians, sales, administrators api: GET /estimates, POST /estimates, GET /estimates/{id}, PUT /estimates/{id}, DELETE /estimates/{id}, POST /estimates/{id}/convert_to_invoice, POST /estimates/{id}/line_items, PUT /estimates/{id}/line_items/{line_item_id}, DELETE /estimates/{id}/line_items/{line_item_id}

What I do

I manage repair estimates, which are cost proposals for work. I can list, create, retrieve, update, delete estimates, convert them to invoices, and manage line items (parts/labor) within estimates.

When to use me

Use this when:

  • Providing customers with cost estimates before work begins
  • Converting approved estimates to invoices
  • Adding or modifying line items (parts, labor, services)
  • Tracking estimate status (Fresh, Draft, Approved, Declined)
  • Managing estimate line items and pricing

How to use

Required API base URL:

  • VITE_REPAIRSHOPR_SUBDOMAIN
  • VITE_REPAIRSHOPR_API_KEY

Permissions:

  • "Estimates - List/Search" for listing
  • "Estimates - Create" for creating
  • "Estimates - View Details" for viewing single and print/email
  • "Estimates - Edit" for updating and line item management
  • "Estimates - Delete" for deletion

List Estimates (GET /estimates) Optional:

  • mine (boolean) - Only my estimates
  • status (string) - Filter by status: "approved", "declined"
  • page (integer) - Page number (50 per page)

Create Estimate (POST /estimates) Required:

  • date (string) - Estimate date (ISO 8601)
  • customer_id (integer) - Customer

Optional:

  • name (string) - Estimate name/title
  • number (string) - Custom estimate number
  • status (string) - "Fresh", "Draft", "Approved", "Declined" (default Fresh)
  • note (string) - Customer-facing notes
  • ticket_id (integer) - Associated ticket
  • location_id (integer) - Location
  • line_items (array) - Array of line item objects with item, name, cost, price, quantity, taxable

Get Estimate (GET /estimates/{id})

  • id (integer) - Estimate ID or number

Update Estimate (PUT /estimates/{id})

  • id (integer) - Estimate ID Optional body similar to create (but typically doesn't include line_items fully; use line item endpoints)

Delete Estimate (DELETE /estimates/{id})

  • id (integer) - Estimate ID

Add Line Item (POST /estimates/{id}/line_items)

  • id (integer) - Estimate ID Body includes line item fields (item, name, cost, price, quantity, taxable)

Update Line Item (PUT /estimates/{id}/line_items/{line_item_id})

  • id, line_item_id - IDs Body includes updatable line item fields

Delete Line Item (DELETE /estimates/{id}/line_items/{line_item_id})

  • id, line_item_id - IDs

Convert to Invoice (POST /estimates/{id}/convert_to_invoice)

  • id (integer) - Estimate ID Requires "Estimates - View Details" and "Invoices - Create"

Print/Email:

  • POST /estimates/{id}/print - Queue print job
  • POST /estimates/{id}/email - Email to customer

Example call:

// Create estimate with line items
const estimate = await skill({ name: "repairshopr-estimate" }, {
  customer_id: 123,
  date: "2024-01-15",
  name: "Screen Replacement Estimate",
  status: "Draft",
  line_items: [
    { item: "LCD Display", name: "13\" Retina Display", cost: 150, price: 299, quantity: 1, taxable: true },
    { item: "Labor", name: "Screen Replacement Service", cost: 0, price: 89, quantity: 1, taxable: false }
  ]
})

// Add additional line item later
await skill({ name: "repairshopr-estimate" }, {
  line_items: [
    { item: "Battery", name: "Replacement Battery", price: 79, quantity: 1 }
  ]
}, { id: estimate.estimate.id, method: 'POST', pathParams: { line_item_id: undefined } })

Response includes:

  • Estimate object with subtotal, total, tax, line_items array, status, etc.
  • Convert returns invoice object

Important

  • date and customer_id are required for creation
  • Line items require item and price at minimum; cost is optional
  • valid item error occurs when item is blank
  • Converting to invoice requires at least one line item

Related skills

  • repairshopr-invoice - After estimate conversion
  • repairshopr-line-item - For line item management
  • repairshopr-ticket-create - To link estimate to ticket
Install via CLI
npx skills add https://github.com/omiinaya/repairshopr-skills --skill repairshopr-estimate
Repository Details
star Stars 0
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator