Shop-Ware Recommendations API

The Recommendations API from Shop-Ware — 2 operation(s) for recommendations.

OpenAPI Specification

shop-ware-recommendations-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: API V1 API Partners Recommendations API
  version: v1
  contact:
    name: API Support
    email: support@shop-ware.com
security:
- api_partner_id: []
  api_secret: []
tags:
- name: Recommendations
paths:
  /api/v1/tenants/{tenant_id}/recommendations:
    parameters:
    - name: tenant_id
      in: path
      required: true
      example: '1'
      schema:
        type: integer
    get:
      summary: Get a list of all recommendations
      tags:
      - Recommendations
      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
        format: date-time
        description: Filter response to only include records updated after a given time
        example: 2022-10-24T12%3A00%3A00%2B08%3A00
        schema:
          type: string
      responses:
        '200':
          description: successful
          content:
            application/json:
              examples:
                successful:
                  value:
                    results:
                    - id: 2
                      created_at: '2026-06-09T14:24:48Z'
                      updated_at: '2026-06-09T14:24:48Z'
                      description: null
                      approved: null
                      approver_id: null
                      approval_type: null
                      imported: false
                      quick_price_cents: 355000.0
                      service: {}
                      repair_order_id: 3
                      approval_at: null
                      integrator_tags: []
                    - id: 1
                      created_at: '2026-06-09T14:24:48Z'
                      updated_at: '2026-06-09T14:24:48Z'
                      description: Test Service
                      approved: 'true'
                      approver_id: null
                      approval_type: null
                      imported: false
                      quick_price_cents: null
                      service:
                        id: 1
                        created_at: '2026-06-09T14:24:48Z'
                        updated_at: '2026-06-09T14:24:48Z'
                        title: Test Service
                        completed: false
                        category_id: null
                        row_order: 1
                        fixed_price_cents: null
                        canned_job_id: null
                        comment: ''
                        fixed_price_labor_total_cents: null
                        is_fixed_price_service: false
                        labor_rate_cents: 10000
                        labors:
                        - id: 1
                          created_at: '2026-06-09T14:24:48Z'
                          updated_at: '2026-06-09T14:24:48Z'
                          name: Test labor 1
                          technician_id: null
                          taxable: true
                          hours: 1.0
                          row_order: 1
                        parts:
                        - id: 1
                          created_at: '2026-06-09T14:24:48Z'
                          updated_at: '2026-06-09T14:24:48Z'
                          brand: null
                          description: null
                          number: null
                          quoted_price_cents: null
                          cost_cents: null
                          part_inventory_id: 1
                          taxable: true
                          sell_price_cents: null
                          quantity: 1.0
                          quantity_needed: 0.0
                        hazmats:
                        - id: 1
                          created_at: '2026-06-09T14:24:48Z'
                          updated_at: '2026-06-09T14:24:48Z'
                          name: Test hazmat fee 1
                          fee_cents: 25
                          taxable: true
                          quantity: 1.0
                        sublets:
                        - id: 1
                          created_at: '2026-06-09T14:24:48Z'
                          updated_at: '2026-06-09T14:24:48Z'
                          name: Test sublet 1
                          price_cents: 50
                          cost_cents: null
                          provider: ''
                          invoice_number: '1111'
                          description: null
                          taxable: true
                          vendor_id: null
                          invoice_date: null
                        inspections:
                        - id: 1
                          created_at: '2026-06-09T14:24:48Z'
                          updated_at: '2026-06-09T14:24:48Z'
                          name: Test inspection 1
                          state: null
                      repair_order_id: 2
                      approval_at: null
                      integrator_tags:
                      - id: 1
                        created_at: '2026-06-09T14:24:48Z'
                        updated_at: '2026-06-09T14:24:48Z'
                        taggable_type: Recommendation
                        taggable_id: 1
                        name: tag_name
                        value: tag_value
                    limit: 2
                    limited: false
                    total_count: 2
                    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.
                        description:
                          type: string
                          nullable: true
                          description: The title of the recommended service
                        approved:
                          type: string
                          nullable: true
                          description: '"true" if the recommendation has been approved by the customer, "false" if it has been declined, and null otherwise.'
                        approver_id:
                          type: integer
                          nullable: true
                          description: A foreign key that points to a Staff or Customer ID. This represents the person who approved the recommendation (if it has been approved, null otherwise).
                        approval_type:
                          type: string
                          nullable: true
                          description: 'Type of approval: One of "customer", "email", "person", and "phone". Null if unapproved or declined.'
                        imported:
                          type: boolean
                          description: True if the recommendation has been added as a service on a Repair Order, false otherwise.
                        quick_price_cents:
                          type: number
                          nullable: true
                          description: Quick price in cents
                        service:
                          type: object
                          properties:
                            id:
                              type: integer
                              description: The service primary key.
                            title:
                              type: string
                            completed:
                              type: boolean
                              description: True if the service has been marked as completed by a staff member, false otherwise.
                            category_id:
                              type: integer
                              nullable: true
                            labor_rate_cents:
                              type: integer
                              nullable: true
                              description: The rate in cents that labor on this service is charged at.
                            fixed_price_cents:
                              type: integer
                              nullable: true
                              description: The price in cents that this service will be charged at.
                            fixed_price_labor_total_cents:
                              type: integer
                              nullable: true
                              description: The total price in cents that labors on this service will be charged at.
                            is_fixed_price_service:
                              type: boolean
                              description: Determines if this service has a fixed price.
                            canned_job_id:
                              type: integer
                              nullable: true
                              description: A foreign key which points to a CannedJob.id. Represents the canned job assigned to this specific service item.
                            comment:
                              type: text
                              description: Service comments.
                            completed_at:
                              type: string
                              nullable: true
                              format: date-time
                              description: The datetime the service was marked completed
                            last_completed_at:
                              type: string
                              nullable: true
                              format: date-time
                              description: The datetime the service was last marked completed. This may occur if the service had been marked completed then restarted and marked completed again.
                            row_order:
                              type: integer
                              description: Sequence number of service.
                            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 appears on the RO.
                                  technician_id:
                                    type: integer
                                    nullable: true
                                    description: A foreign key which points to a Staff.id. Represents the technician assigned to this specific labor item.
                                  taxable:
                                    type: boolean
                                    description: Determines if labor tax rate will be applied to this labor.
                                  hours:
                                    type: number
                                  row_order:
                                    type: integer
                                    description: Sequence number of labor.
                                  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.
                            parts:
                              type: array
                              items:
                                type: object
                                properties:
                                  id:
                                    type: integer
                                    description: The part primary key.
                                  brand:
                                    type: string
                                    nullable: true
                                    description: The part brand.
                                  description:
                                    type: string
                                    nullable: true
                                    description: The part description.
                                  number:
                                    type: string
                                    nullable: true
                                    description: The part number.
                                  quoted_price_cents:
                                    type: integer
                                    nullable: true
                                    description: The price of this part that is being sold to the customer in cents per unit.
                                    deprecated: true
                                  sell_price_cents:
                                    type: integer
                                    nullable: true
                                    description: The price of this part that is being sold to the customer in cents per unit.
                                  cost_cents:
                                    type: integer
                                    nullable: true
                                    description: The wholesale cost of this part to the shop in cents per unit.
                                  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.
                                  taxable:
                                    type: boolean
                                    description: Determines if part tax rate will be applied to this part.
                                  quantity_needed:
                                    type: number
                                    description: The number of parts needed for service.
                                  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.
                            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 appears 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.
                            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 appears on the RO.
                                  price_cents:
                                    type: integer
                                    description: The price in cents of sublet being sold to customer.
                                  cost_cents:
                                    type: integer
                                    nullable: true
                                    description: The amount in cents paid to provider for services.
                                  provider:
                                    type: string
                                    description: The name of the entity providing services for sublet.
                                  invoice_number:
                                    type: string
                                    description: A string which identifies invoice from provider.
                                  description:
                                    type: string
                                    nullable: true
                                    description: The sublet description.
                                  invoice_date:
                                    type: string
                                    nullable: true
                                    format: date-time
                                    description: The date when the invoice from provider was created.
                                  taxable:
                                    type: boolean
                                    description: Determines if sublet tax rate will be applied to this sublet.
                                  vendor_id:
                                    type: integer
                                    nullable: true
                                    description: A foreign key which points to a Vendor.id. Represents a vendor associated with this sublet item.
                                  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.
                            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 appears on the RO.
                                  state:
                                    type: string
                                    nullable: true
                                    description: One of "yellow", "green", "unchecked", "red". More states may be added.
                                  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.
                            created_at:
                              type: string
                              format: date-time
                              description: The date and time when service was created.
                            updated_at:
                              type: string
                              format: date-time
                              description: The date and time when service was last updated.
                        repair_order_id:
                          type: integer
                          nullale: true
                          description: A foreign key that points to the RepairOrder that this Recommendation belongs to
                        approval_at:
                          type: string
                          nullable: true
                          format: date-time
                          description: Date the recommendation was approved if it has been approved, null otherwise.
                        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.
                        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
    post:
      summary: Create a recommendation
      tags:
      - Recommendations
      parameters: []
      responses:
        '201':
          description: successful
          content:
            application/json:
              examples:
                successful:
                  value:
                    id: 1
                    created_at: '2026-06-09T14:24:51Z'
                    updated_at: '2026-06-09T14:24:51Z'
                    description: Test Service 1
                    approved: 'true'
                    approver_id: null
                    approval_type: null
                    imported: false
                    quick_price_cents: null
                    service:
                      id: 1
                      created_at: '2026-06-09T14:24:51Z'
                      updated_at: '2026-06-09T14:24:51Z'
                      title: Test Service 1
                      completed: false
                      category_id: null
                      row_order: 1
                      fixed_price_cents: null
                      canned_job_id: null
                      comment: ''
                      fixed_price_labor_total_cents: null
                      is_fixed_price_service: false
                      labor_rate_cents: 10000
                      labors:
                      - id: 1
                        created_at: '2026-06-09T14:24:51Z'
                        updated_at: '2026-06-09T14:24:51Z'
                        name: Test labor 2
                        technician_id: null
                        taxable: true
                        hours: 1.0
                        row_order: 1
                      parts:
                      - id: 1
                        created_at: '2026-06-09T14:24:51Z'
                        updated_at: '2026-06-09T14:24:51Z'
                        brand: null
                        description: null
                        number: null
                        quoted_price_cents: null
                        cost_cents: null
                        part_inventory_id: 1
                        taxable: true
                        sell_price_cents: null
                        quantity: 1.0
                        quantity_needed: 0.0
                      hazmats:
                      - id: 1
                        created_at: '2026-06-09T14:24:51Z'
                        updated_at: '2026-06-09T14:24:51Z'
                        name: Test hazmat fee 2
                        fee_cents: 25
                        taxable: true
                        quantity: 1.0
                      sublets:
                      - id: 1
                        created_at: '2026-06-09T14:24:51Z'
                        updated_at: '2026-06-09T14:24:51Z'
                        name: Test sublet 2
                        price_cents: 50
                        cost_cents: null
                        provider: ''
                        invoice_number: '1111'
                        description: null
                        taxable: true
                        vendor_id: null
                        invoice_date: null
                      inspections:
                      - id: 1
                        created_at: '2026-06-09T14:24:51Z'
                        updated_at: '2026-06-09T14:24:51Z'
                        name: Test inspection 2
                        state: null
                    repair_order_id: 2
                    approval_at: null
                    integrator_tags:
                    - id: 1
                      created_at: '2026-06-09T14:24:51Z'
                      updated_at: '2026-06-09T14:24:51Z'
                      taggable_type: Recommendation
                      taggable_id: 1
                      name: tag_name
                      value: tag_value
              schema:
                type: object
                properties:
                  id:
                    type: integer
                    description: Unique identifier of this record.
                  description:
                    type: string
                    nullable: true
                    description: The title of the recommended service
                  approved:
                    type: string
                    nullable: true
                    description: '"true" if the recommendation has been approved by the customer, "false" if it has been declined, and null otherwise.'
                  approver_id:
                    type: integer
                    nullable: true
                    description: A foreign key that points to a Staff or Customer ID. This represents the person who approved the recommendation (if it has been approved, null otherwise).
                  approval_type:
                    type: string
                    nullable: true
                    description: 'Type of approval: One of "customer", "email", "person", and "phone". Null if unapproved or declined.'
                  imported:
                    type: boolean
                    description: True if the recommendation has been added as a service on a Repair Order, false otherwise.
                  quick_price_cents:
                    type: number
                    nullable: true
                    description: Quick price in cents
                  service:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: The service primary key.
                      title:
                        type: string
                      completed:
                        type: boolean
                        description: True if the service has been marked as completed by a staff member, false otherwise.
                      category_id:
                        type: integer
                        nullable: true
                      labor_rate_cents:
                        type: integer
                        nullable: true
                        description: The rate in cents that labor on this service is charged at.
                      fixed_price_cents:
                        type: integer
                        nullable: true
                        description: The price in cents that this service will be charged at.
                      fixed_price_labor_total_cents:
                        type: integer
                        nullable: true
                        description: The total price in cents that labors on this service will be charged at.
                      is_fixed_price_service:
                        type: boolean
                        description: Determines if this service has a fixed price.
                      canned_job_id:
                        type: integer
                        nullable: true
                        description: A foreign key which points to a CannedJob.id. Represents the canned job assigned to this specific service item.
                      comment:
                        type: text
                        description: Service comments.
                      completed_at:
                        type: string
                        nullable: true
                        format: date-time
                        description: The datetime the service was marked completed
                      last_completed_at:
                        type: string
                        nullable: true
                        format: date-time
                        description: The datetime the service was last marked completed. This may occur if the service had been marked completed then restarted and marked completed again.
                      row_order:
                        type: integer
                        description: Sequence number of service.
                      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 appears on the RO.
                            technician_id:
                              type: integer
                              nullable: true
                              description: A foreign key which points to a Staff.id. Represe

# --- truncated at 32 KB (84 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/shop-ware/refs/heads/main/openapi/shop-ware-recommendations-api-openapi.yml