Shop-Ware Canned Jobs API
The Canned Jobs API from Shop-Ware — 2 operation(s) for canned jobs.
The Canned Jobs API from Shop-Ware — 2 operation(s) for canned jobs.
openapi: 3.0.1
info:
title: API V1 API Partners Canned Jobs API
version: v1
contact:
name: API Support
email: support@shop-ware.com
security:
- api_partner_id: []
api_secret: []
tags:
- name: Canned Jobs
paths:
/api/v1/tenants/{tenant_id}/canned_jobs:
parameters:
- name: tenant_id
in: path
required: true
example: '1'
schema:
type: integer
get:
summary: Get a list of all canned jobs
tags:
- Canned Jobs
parameters:
- name: page
in: query
required: false
example: '1'
schema:
type: integer
- name: per_page
in: query
required: false
example: '30'
schema:
type: integer
- name: updated_after
in: query
required: false
example: 2022-10-24T12%3A00%3A00%2B08%3A00
schema:
type: string
responses:
'200':
description: successful
content:
application/json:
examples:
successful:
value:
results:
- id: 1
created_at: '2026-06-09T14:21:46Z'
updated_at: '2026-06-09T14:21:46Z'
title: Fake Canned Job Name
all_vehicles: false
frequency: 3360
category_id: 4
auto_applied: false
shop_id: 2
fixed_price_cents: null
labor_rate_cents: 10000
is_fixed_price_service: false
optimizer_enabled: true
ai_parts_matrix_enabled: true
integrator_tags:
- id: 1
created_at: '2026-06-09T14:21:46Z'
updated_at: '2026-06-09T14:21:46Z'
taggable_type: CannedJob
taggable_id: 1
name: 987 zyx
value: abc 123
sublets:
- id: 1
created_at: '2026-06-09T14:21:46Z'
updated_at: '2026-06-09T14:21:46Z'
name: MFD Repair
price_cents: 70000
taxable: true
inspections:
- id: 1
created_at: '2026-06-09T14:21:46Z'
updated_at: '2026-06-09T14:21:46Z'
name: Confirm proper operation of instruments and warning lights
vehicles:
- id: 1
created_at: '2026-06-09T14:21:46Z'
updated_at: '2026-06-09T14:21:46Z'
year: '2006'
make: Toyota
model: Prius
engine: 1.5L L4 (1NZFXE) ELECTRIC/GAS FI
hazmats:
- id: 1
created_at: '2026-06-09T14:21:46Z'
updated_at: '2026-06-09T14:21:46Z'
name: Qt Motor Oil Recycling
fee_cents: 75
taxable: true
quantity: 4.0
parts:
- id: 1
created_at: '2026-06-09T14:21:46Z'
updated_at: '2026-06-09T14:21:46Z'
part_inventory_id: 1
taxable: true
quoted_price_cents: 10000
msrp_cents: 10000
quantity: 4.0
labors:
- id: 1
created_at: '2026-06-09T14:21:46Z'
updated_at: '2026-06-09T14:21:46Z'
name: Drain and fill engine oil
taxable: true
hours: 0.1
limit: 1
limited: false
total_count: 1
current_page: 1
total_pages: 1
schema:
type: object
properties:
results:
type: array
items:
type: object
properties:
id:
type: integer
description: Unique identifier of this record.
title:
type: string
description: Labor title.
category_id:
type: integer
description: A foreign key that points to the Category that this CannedJob belongs to.
frequency:
type: number
description: The popularity of this canned job. The most used canned jobs will have the highest frequency.
all_vehicles:
type: boolean
description: True if this canned job applies to all vehicles (rather than only specific vehicles), false otherwise.
auto_applied:
type: boolean
description: True if this canned job should be applied to every new estimate automatically, false otherwise.
optimizer_enabled:
type: boolean
description: True if the AI Parts Matrix should be used when pricing parts on this canned job, false otherwise.
deprecated: true
ai_parts_matrix_enabled:
type: boolean
description: True if the AI Parts Matrix should be used when pricing parts on this canned job, false otherwise.
shop_id:
type: integer
description: A foreign key that points to the Shop that this CannedJob belongs to
labor_rate_cents:
type: integer
description: Labor rate in cents
nullable: true
fixed_price_cents:
type: integer
description: The price in cents that this service will be charged at.
nullable: true
is_fixed_price_service:
type: boolean
description: Determines if this service has a fixed price.
sublets:
type: array
items:
type: object
properties:
id:
type: integer
description: The sublet primary key.
name:
type: string
description: The name of this sublet as it will appear on the RO.
price_cents:
type: integer
description: The price in cents of sublet being sold to customer.
taxable:
type: boolean
description: Determines if sublet tax rate will be applied to this sublet.
created_at:
type: string
format: date-time
description: The date and time when sublet was created.
updated_at:
type: string
format: date-time
description: The date and time when sublet was last updated.
hazmats:
type: array
items:
type: object
properties:
id:
type: integer
description: The hazmat primary key.
name:
type: string
description: The name of this hazmat as it will appear on the RO.
fee_cents:
type: integer
description: The price of this fee or hazmat in cents per unit.
quantity:
type: number
description: The number of units.
taxable:
type: boolean
description: Determines if hazmat tax rate will be applied to this hazmat.
created_at:
type: string
format: date-time
description: The date and time when hazmat was created.
updated_at:
type: string
format: date-time
description: The date and time when hazmat was last updated.
parts:
type: array
items:
type: object
properties:
id:
type: integer
description: The part primary key.
part_inventory_id:
type: integer
description: A foreign key which points to an Inventory.id. Represents the associated inventory and quantity information for this part.
quantity:
type: number
description: The number of units this part line item represents.
quoted_price_cents:
type: integer
description: MSRP in cents.
nullable: true
deprecated: true
msrp_cents:
type: integer
description: MSRP in cents.
nullable: true
taxable:
type: boolean
description: Determines if part tax rate will be applied to this part.
created_at:
type: string
format: date-time
description: The date and time when part was created.
updated_at:
type: string
format: date-time
description: The date and time when part was last updated.
integrator_tags:
type: array
items:
type: object
properties:
id:
type: integer
description: The tag primary key.
taggable_type:
type: string
description: Entity type the tag attached to.
taggable_id:
type: integer
description: Entity identifier the tag attached to.
name:
type: string
description: Tag Name.
value:
type: string
description: Tag Value.
created_at:
type: string
format: date-time
description: The date and time when tag was created.
updated_at:
type: string
format: date-time
description: The date and time when tag was last updated.
inspections:
type: array
items:
type: object
properties:
id:
type: integer
description: The inspection primary key.
name:
type: string
description: The name of this inspection as it will appear on the RO.
created_at:
type: string
format: date-time
description: The date and time when inspection was created.
updated_at:
type: string
format: date-time
description: The date and time when inspection was last updated.
labors:
type: array
items:
type: object
properties:
id:
type: integer
description: The labor primary key.
name:
type: string
description: The name of this labor as it will appear on the RO.
taxable:
type: boolean
description: Determines if labor tax rate will be applied to this labor.
hours:
type: number
created_at:
type: string
format: date-time
description: The date and time when labor was created.
updated_at:
type: string
format: date-time
description: The date and time when labor was last updated.
vehicles:
type: array
items:
type: object
properties:
id:
type: integer
description: The vehicle primary key.
year:
type: string
description: Vehicle year.
make:
type: string
description: Vehicle make.
model:
type: string
description: Vehicle model.
engine:
type: string
description: Vehicle engine.
created_at:
type: string
format: date-time
description: The date and time when vehicle was created.
updated_at:
type: string
format: date-time
description: The date and time when vehicle was last updated.
created_at:
type: string
format: date-time
description: Date and time when record was created.
updated_at:
type: string
format: date-time
description: Date and time when record was last updated.
limit:
type: integer
limited:
type: boolean
total_count:
type: integer
current_page:
type: integer
total_pages:
type: integer
/api/v1/tenants/{tenant_id}/canned_jobs/{id}:
parameters:
- name: tenant_id
in: path
required: true
example: '1'
schema:
type: integer
- name: id
in: path
required: true
example: '1'
schema:
type: integer
get:
summary: Get a specific canned job by ID
tags:
- Canned Jobs
responses:
'200':
description: successful
content:
application/json:
examples:
successful:
value:
id: 1
created_at: '2026-06-09T14:21:49Z'
updated_at: '2026-06-09T14:21:49Z'
title: Fake Canned Job Name
all_vehicles: false
frequency: 3360
category_id: 4
auto_applied: false
shop_id: 2
fixed_price_cents: null
labor_rate_cents: 10000
is_fixed_price_service: false
optimizer_enabled: true
ai_parts_matrix_enabled: true
integrator_tags:
- id: 1
created_at: '2026-06-09T14:21:49Z'
updated_at: '2026-06-09T14:21:49Z'
taggable_type: CannedJob
taggable_id: 1
name: 987 zyx
value: abc 123
sublets:
- id: 1
created_at: '2026-06-09T14:21:49Z'
updated_at: '2026-06-09T14:21:49Z'
name: MFD Repair
price_cents: 70000
taxable: true
inspections:
- id: 1
created_at: '2026-06-09T14:21:49Z'
updated_at: '2026-06-09T14:21:49Z'
name: Confirm proper operation of instruments and warning lights
vehicles:
- id: 1
created_at: '2026-06-09T14:21:49Z'
updated_at: '2026-06-09T14:21:49Z'
year: '2006'
make: Toyota
model: Prius
engine: 1.5L L4 (1NZFXE) ELECTRIC/GAS FI
hazmats:
- id: 1
created_at: '2026-06-09T14:21:49Z'
updated_at: '2026-06-09T14:21:49Z'
name: Qt Motor Oil Recycling
fee_cents: 75
taxable: true
quantity: 4.0
parts:
- id: 1
created_at: '2026-06-09T14:21:49Z'
updated_at: '2026-06-09T14:21:49Z'
part_inventory_id: 1
taxable: true
quoted_price_cents: 10000
msrp_cents: 10000
quantity: 4.0
labors:
- id: 1
created_at: '2026-06-09T14:21:49Z'
updated_at: '2026-06-09T14:21:49Z'
name: Drain and fill engine oil
taxable: true
hours: 0.1
schema:
type: object
properties:
id:
type: integer
description: Unique identifier of this record.
title:
type: string
description: Labor title.
category_id:
type: integer
description: A foreign key that points to the Category that this CannedJob belongs to.
frequency:
type: number
description: The popularity of this canned job. The most used canned jobs will have the highest frequency.
all_vehicles:
type: boolean
description: True if this canned job applies to all vehicles (rather than only specific vehicles), false otherwise.
auto_applied:
type: boolean
description: True if this canned job should be applied to every new estimate automatically, false otherwise.
optimizer_enabled:
type: boolean
description: True if the AI Parts Matrix should be used when pricing parts on this canned job, false otherwise.
deprecated: true
ai_parts_matrix_enabled:
type: boolean
description: True if the AI Parts Matrix should be used when pricing parts on this canned job, false otherwise.
shop_id:
type: integer
description: A foreign key that points to the Shop that this CannedJob belongs to
labor_rate_cents:
type: integer
description: Labor rate in cents
nullable: true
fixed_price_cents:
type: integer
description: The price in cents that this service will be charged at.
nullable: true
is_fixed_price_service:
type: boolean
description: Determines if this service has a fixed price.
sublets:
type: array
items:
type: object
properties:
id:
type: integer
description: The sublet primary key.
name:
type: string
description: The name of this sublet as it will appear on the RO.
price_cents:
type: integer
description: The price in cents of sublet being sold to customer.
taxable:
type: boolean
description: Determines if sublet tax rate will be applied to this sublet.
created_at:
type: string
format: date-time
description: The date and time when sublet was created.
updated_at:
type: string
format: date-time
description: The date and time when sublet was last updated.
hazmats:
type: array
items:
type: object
properties:
id:
type: integer
description: The hazmat primary key.
name:
type: string
description: The name of this hazmat as it will appear on the RO.
fee_cents:
type: integer
description: The price of this fee or hazmat in cents per unit.
quantity:
type: number
description: The number of units.
taxable:
type: boolean
description: Determines if hazmat tax rate will be applied to this hazmat.
created_at:
type: string
format: date-time
description: The date and time when hazmat was created.
updated_at:
type: string
format: date-time
description: The date and time when hazmat was last updated.
parts:
type: array
items:
type: object
properties:
id:
type: integer
description: The part primary key.
part_inventory_id:
type: integer
description: A foreign key which points to an Inventory.id. Represents the associated inventory and quantity information for this part.
quantity:
type: number
description: The number of units this part line item represents.
quoted_price_cents:
type: integer
description: MSRP in cents.
nullable: true
deprecated: true
msrp_cents:
type: integer
description: MSRP in cents.
nullable: true
taxable:
type: boolean
description: Determines if part tax rate will be applied to this part.
created_at:
type: string
format: date-time
description: The date and time when part was created.
updated_at:
type: string
format: date-time
description: The date and time when part was last updated.
integrator_tags:
type: array
items:
type: object
properties:
id:
type: integer
description: The tag primary key.
taggable_type:
type: string
description: Entity type the tag attached to.
taggable_id:
type: integer
description: Entity identifier the tag attached to.
name:
type: string
description: Tag Name.
value:
type: string
description: Tag Value.
created_at:
type: string
format: date-time
description: The date and time when tag was created.
updated_at:
type: string
format: date-time
description: The date and time when tag was last updated.
inspections:
type: array
items:
type: object
properties:
id:
type: integer
description: The inspection primary key.
name:
type: string
description: The name of this inspection as it will appear on the RO.
created_at:
type: string
format: date-time
description: The date and time when inspection was created.
updated_at:
type: string
format: date-time
description: The date and time when inspection was last updated.
labors:
type: array
items:
type: object
properties:
id:
type: integer
description: The labor primary key.
name:
type: string
description: The name of this labor as it will appear on the RO.
taxable:
type: boolean
description: Determines if labor tax rate will be applied to this labor.
hours:
type: number
created_at:
type: string
format: date-time
description: The date and time when labor was created.
updated_at:
type: string
format: date-time
description: The date and time when labor was last updated.
vehicles:
type: array
items:
type: object
properties:
id:
type: integer
description: The vehicle primary key.
year:
type: string
description: Vehicle year.
make:
type: string
description: Vehicle make.
model:
type: string
description: Vehicle model.
engine:
type: string
description: Vehicle engine.
created_at:
type: string
format: date-time
description: The date and time when vehicle was created.
updated_at:
type: string
format: date-time
description: The date and time when vehicle was last updated.
created_at:
type: string
format: date-time
description: Date and time when record was created.
updated_at:
type: string
format: date-time
description: Date and time when record was last updated.
components:
securitySchemes:
api_partner_id:
type: apiKey
name: X-Api-Partner-Id
in: header
api_secret:
type: apiKey
name: X-Api-Secret
in: header