Shop-Ware Logo

Shop-Ware REST API v1

Copyright (c) 2017-2021 Shop-Ware Inc

Overview

This describes the resources that comprise the Shop-Ware REST API v1. If you have any problems or requests, please contact support.

Versioning

The initial API version is v1, and is namespaced into each endpoint route, for example: https://api.shop-ware.com/api/v1/tenants/:tenant_id/customers. The API version will be increased due to a backwards-incompatible change.

Sandbox Instance

In addition to the production Shop-Ware instance, we provide a sandbox application instance for testing and development. The two environments are identical, except for the following:

  1. The sandbox instance tracks latest development. New endpoints and attributes will be available on the sandbox environment before they are available on production.
  2. While the sandbox environment is generally highly available, availability requirements are slightly relaxed.
  3. The sandbox instance is generally less performant.
  4. Production and sandbox will use different API secrets for authentication.

The sandbox instance is available at https://api.shop-ware-api-sandbox.com. The production instance is available at https://api.shop-ware.com.

Schema

All information is sent and received as JSON data interchange format over HTTPS. All timestamps will be in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ. Timestamps in API responses will always include timezone (typically UTC). Always provide timezones in API requests (preferably UTC).

Client Errors

Client errors can be sent as a response to any request method, and indicate an apparent error by the requester.

400 Bad Request

Sending invalid JSON will result in a 400 Bad Request response.

401 Unauthorized

Sending a request without authentication credentials, or with invalid credentials, will result in a 401 Unauthorized response. See authentication for details.

404 Not Found

Requesting a non-existent resource will result in a 404 Not Found response.

422 Unprocessable Entity

Sending invalid fields will result in a 422 Unprocessable Entity response.

429 Too Many Requests

Exceeding the request rate limit will result in a 429 Too Many Requests response. See rate limiting for details.

Request Parameters

Many API endpoints accept request parameters. Some parameters are included as part of resource route, such as :tenant_id:

https://api.shop-ware.com/api/v1/tenants/:tenant_id/customers

Query parameters can be used in GET requests to scope the response or request specific objects:

https://api.shop-ware.com/api/v1/tenants/:tenant_id/customers?updated_after=2017-05-15T21%3A20%3A37Z

Tenants

In Shop-Ware, tenants represent an account subscription that contain the records of an auto repair business. Most API requests are scoped to a given tenant by the tenant_id parameter in the request URL. Tenants generally cannot share information, and are isolated from each other. A tenant can have one or more shops, which represent the different business locations (rooftops).

Some records in Shop-Ware are shop-specific, such as repair orders, inventory, vendors, and related resources. Other information is shared between shops, in particular vehicles and customers, and is not shop-specific. Generally, shop-specific resources will have a shop_id.

Authentication

All Shop-Ware API endpoints require client authorization. Every request must include the X-Api-Partner-Id and X-Api-Secret in the HTTP header. These credentials must be requested from Shop-Ware support. Access to each specific tenant must be individually granted by Shop-Ware Support at the request of an authorized representative of the tenant owner, which may or may not include write access (requests other than GET), at the specific request of the tenant owner.

Including invalid credentials, or failing to include any credentials will result in a 401 Unauthorized response. Attempting to access a tenant_id that has not been specifically granted will result in a 404 Not Found error response, regardless of whether the tenant actually exists. Sending a request with an HTTP verb other than GET for a tenant_id that has not specifically granted write access will result in a 403 Forbidden error response.

Example Request

$ curl -v\
       -H 'X-Api-Partner-Id: 7f83b909-0e8b-4ee8-8d4d-b1c71f0bb584'\
       -H 'X-Api-Secret: MwiknMtHMVFf3hUc-kAViQuXSC7h6qaENnsxZqexE2c'\
       -H 'Accept: application/json'\
       https://api.shop-ware.com/api/v1/tenants/69/customers
*   Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to api.localtest.me (127.0.0.1) port 5000 (#0)
> GET /api/v1/tenants/69/customers HTTP/1.1
> Host: api.localtest.me:5000
> User-Agent: curl/7.51.0
> X-Api-Partner-Id: 7f83b909-0e8b-4ee8-8d4d-b1c71f0bb584
> X-Api-Secret: MwiknMtHMVFf3hUc-kAViQuXSC7h6qaENnsxZqexE2c
> Accept: application/json
>
< HTTP/1.1 200 OK
< X-Frame-Options: SAMEORIGIN
< X-Content-Type-Options: nosniff
< X-RateLimit-Limit: 100
< X-RateLimit-Remaining: 99
< X-RateLimit-Reset: 1502837110
< Content-Type: application/json; charset=utf-8
< ETag: W/'99914b932bd37a50b983c5e7c90ae93b'
< Cache-Control: max-age=0, private, must-revalidate
< X-Request-Id: f4940e3b-9473-458b-997f-1bc117c7595b
< X-Runtime: 0.915574
< X-Rack-CORS: preflight-hit; no-origin
< Transfer-Encoding: chunked

Rate limiting

All requests from the same IP address or API Partner ID will be rate limited. Your current rate limit status will be shown in the HTTP header of each API response. Shop-Ware uses a windowed rate-limiting system. Clients are allowed a fixed number of requests per time window, and the number of requests remaining resets each time window with no carry-over between windows. The headers are defined as follows:

X-RateLimit-Limit: Total number of requests allowed per time window.
X-RateLimit-Remaining: Number of requests remaining for this window.
X-RateLimit-Reset: Unix time (integer seconds since the Epoch) when the window will reset.
X-Ratelimit-Matchkey: either an IP address or an API Partner ID (This will tell you which rule triggered the limiting)

Pagination

Requests that return multiple records will be paginated to 30 records by default. Further pages can be requested with the page query parameter. You can request a custom page size of up to 100 records with the per_page query parameter. Result records will be in an array nested under the results top-level object attribute.

Example Request

curl \
 -H 'X-Api-Partner-Id: 7f83b909-0e8b-4ee8-8d4d-b1c71f0bb584'\
 -H 'X-Api-Secret: MwiknMtHMVFf3hUc-kAViQuXSC7h6qaENnsxZqexE2c'\
 -H 'Accept: application/json'\
 https://api.shop-ware.com/api/v1/tenants/4/staffs?page=2&per_page=100

Example Response

{
  'results': [
    {
      'id': 1,
      'first_name': 'James',
      'last_name': 'Brown',
      'advisor': true,
      'technician': false,
      'active': true,
      'created_at': '2017-08-07T01:32:20.811Z',
      'updated_at': '2017-08-07T01:32:20.811Z',
      'email': 'jbrown@example.com'
    }
  ],
  'limit': 1,
  'limited': true,
  'total_count': 1,
  'current_page': 2,
  'total_pages': 2
}
Attribute Type Description
limit number The number of records that are included in this response.
limited boolean true if the response has been limited to 100 records, false otherwise.
total_count number The total number of records in all pages.
current_page number The current page number. Page 1 is the first page.
total_pages number The total number of pages.

Filtering by Update After

The updated_after parameter will return records with an updated_at that is after the given datetime. Records with the updated_after parameter will be ordered by their updated_at field in decending order.

The updated_after parameter must be in an iso8601 format.

Note that timestamps as stored in the database have sub-millisecond-precision. You are welcome to provide timestamps with only second-precision, just note that a value for updated_after like 2021-04-05T18:23:47+00:00 (second-precision) will result in a record with updated_at=2021-04-05T18:23:47.123456+00:00 being returned, as .000000 is effectively considered to be the default microseconds value for the filter, if none provided.

Some examples of acceptable formats for updated_after are below:

2017-08-16T18:23:47+00:00
2017-08-16T18:23:47.123456+00:00

2017-08-16T18:25:54Z
2017-08-16T18:25:54.123456Z

20010203T040506+0700
20010203T040506.123456+0700

2017-05-15T21%3A20%3A37Z
2017-05-15T21%3A20%3A37.123456Z

Example Request

curl \
 -H 'X-Api-Partner-Id: 7f83b909-0e8b-4ee8-8d4d-b1c71f0bb584'\
 -H 'X-Api-Secret: MwiknMtHMVFf3hUc-kAViQuXSC7h6qaENnsxZqexE2c'\
 -H 'Accept: application/json'\
 https://api.shop-ware.com/api/v1/tenants/4/staffs?updated_after=2017-01-16T03:33:03Z

Webhooks

Shop-Ware supports webhooks, which allow a callback URL to be configured for asynchronous notification of certain events. Shop-Ware will send a POST request containing information about the event. Each event type shares a common JSON object structure with an event-specific “data” attribute.

Webhooks will generally be delivered immediately following the triggering event. However, there are cases where events will be queued and delivered some time later. Further, events may be delivered simultaneously or out of order, in particular if the events are triggered very close in time.

Up to 20 webhooks can be configured per Partner ID. Shop-Ware webhooks will only deliver to HTTPS URLs, and will not follow redirects. Self-signed certificates are not supported.

Webhook requests may be authenticated by verifying the X-Api-Secret request header, which will be set to the client’s API secret.

Example Webhook Event Request Body for created and updated

{
  'id': '484050ea-df1b-466f-9830-c7c940e73932',
  'timestamp': '2019-10-04T15:06:10Z',
  'event': 'customer.created',
  'payload': {
    'type': 'Customer',
    'id': 10,
    'tenant_id': 69,
    'data': {
      'id': 10,
      'created_at': '2019-10-04T15:06:09Z',
      'updated_at': '2019-10-04T15:06:09Z',
      'first_name': 'Keith',
      'last_name': 'Richards',
      'phone': '(555) 555-1234',
      'detail': 'New customer',
      'address': '123 Main Street',
      'city': 'San Diego',
      'state': 'CA',
      'zip': '92111',
      'marketing_ok': true,
      'shop_ids': [],
      'email': 'keef2@example.com',
      'integrator_tags': []
    }
  }
}
Attribute Type Description
id string Unique identifier for this event.
timestamp string Date the event was triggered.
event string The event type which triggered this webhook (ex. “assignment.updated”). This attribute will use the same syntax as the POST /webhooks events array.
payload object The payload object of the event. The contents of this object are determined by the type of the event, as specified by the event attribute.
payload.type string The resource type that triggered this event. One of ‘Assignment’, ‘Category’, ‘Customer’, ‘Staff’, ‘Inventory’, ‘PastRecommendation’, ‘Shop’, ‘Vehicle’, ‘Category’, ‘PaymentTransaction’, ‘Status’, ‘RepairOrder’ or ‘PurchaseRecord’.
payload.id integer The unique primary key of this resource record.
payload.tenant_id integer The id of the tenant related to this record.
payload.data object The object representation of the resource record that triggered this event, which will be identical to what would be received by directly requesting the resource via the REST API. See appropriate REST API endpoint documentation for details.

Example Webhook Event Request Body for deleted

{
  'id': '484050ea-df1b-466f-9830-c7c940e73932',
  'timestamp': '2019-10-04T15:06:10Z',
  'event': 'status.deleted',
  'payload': {
    'type': 'Status',
    'id': 103,
    'tenant_id': 69
  }
}
Attribute Type Description
id string Unique identifier for this event.
timestamp string Date the event was triggered.
event string The event type which triggered this webhook (ex. “assignment.deleted”). This attribute will use the same syntax as the POST /webhooks events array.
payload object The payload object of the event.
payload.type string The resource type that triggered this event. One of ‘Assignment’, ‘Category’, ‘Customer’, ‘Staff’, ‘Inventory’, ‘PastRecommendation’, ‘Shop’, ‘Vehicle’, ‘Category’, ‘PaymentTransaction’, ‘Status’, ‘RepairOrder’ or ‘PurchaseRecord’.
payload.id integer The unique primary key of this resource record.
payload.tenant_id integer The id of the tenant related to this record.

API Partners

Get current authorizations

Endpoint

GET api/v1/partners/:partner_id/authorizations

Request

Route

GET api/v1/partners/1/authorizations

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 02c5ec1a-1744-42c0-9b03-15ef12a82c4e
X-Api-Secret: nLs7ye4whTst9VxDO2oTFxcFQU7RJwN5bFLSGyDazlc
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/partners/1/authorizations" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 02c5ec1a-1744-42c0-9b03-15ef12a82c4e" \
	-H "X-Api-Secret: nLs7ye4whTst9VxDO2oTFxcFQU7RJwN5bFLSGyDazlc"

Response

Simulated Response

Response Fields

Name Description type
id Unique identifier of this record. number
api_partner_id Identifier of API partner. number
tenant Identifier of tenant. number
writable True if write actions enabled for this authorization, false otherwise. boolean
api_tenant_id Identifier of API tenant. number

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892732
ETag: W/"f27108165e06ffb33a0530d71cd82faf"
X-Request-Id: f5382aaf-3093-4418-8efb-7f8af99d64c1
X-Runtime: 0.031620
Content-Length: 167

Body

{
  "results": [
    {
      "id": 1,
      "api_partner_id": 1,
      "tenant_id": null,
      "writable": true,
      "api_tenant_id": 1
    }
  ],
  "limit": 1,
  "limited": false,
  "total_count": 1,
  "current_page": 1,
  "total_pages": 1
}

Appointments

Create an appointment

Endpoint

POST api/v1/tenants/:tenant_id/appointments

Parameters

Name Description type
staff_id A foreign key which points to a Staff.id. Represents the technician assigned to this appointment. If staff_id is not present, the appointment is unassigned. integer
title The title of the appointment. Either repair_order_id or title must be set. string
description The description of the appointment. string
start_at required Date the appointment will start. Must be in utc iso8601 date format. Setting this value does not automatically update the associated repair_order.due_in_at. string
end_at Date the appointment will end. Must be in utc iso8601 date format. Setting this value does not automatically update the associated repair_order.due_out_at. string
repair_order_id A foreign key that points to the RepairOrder associated with this appointment. Either repair_order_id or title must be set. integer
shop_id required A foreign key that points to the Shop this appointment was created in. integer

Request

Route

POST api/v1/tenants/1/appointments

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 36b5745e-6530-4821-959d-5b1d006373ac
X-Api-Secret: AOGCTHnvixUgT2Oe8YQxGeE-TXXuJLA0NfbxFHfc_os
Host: example.org
Cookie: 

Body

{
  "staff_id": 2,
  "title": "My Appointment Title",
  "description": "My Appointment Description",
  "start_at": "2022-06-13T20:24:39Z",
  "end_at": "2022-06-13T22:24:39Z",
  "repair_order_id": 1,
  "shop_id": 1
}

cURL

curl "https://api.shop-ware.com/api/v1/tenants/1/appointments" -d '{"staff_id":2,"title":"My Appointment Title","description":"My Appointment Description","start_at":"2022-06-13T20:24:39Z","end_at":"2022-06-13T22:24:39Z","repair_order_id":1,"shop_id":1}' -X POST \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 36b5745e-6530-4821-959d-5b1d006373ac" \
	-H "X-Api-Secret: AOGCTHnvixUgT2Oe8YQxGeE-TXXuJLA0NfbxFHfc_os"

Response

Simulated Response

Response Fields

Name Description type
id Unique identifier of this record. number
description The description of the appointment. string
title The title of the appointment string
repair_order_id A foreign key that points to the RepairOrder associated with this appointment. integer
staff_id A foreign key which points to a Staff.id. Represents the technician assigned to this appointment. If staff_id is not present, the appointment is unassigned. integer
start_at Date the appointment will start. datetime string
end_at Date the appointment will end. datetime string
shop_id A foreign key that points to the Shop this appointment was created in. integer
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags

Status

201

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892739
ETag: W/"8f6af8c67af7302ada0c96131c7d33de"
X-Request-Id: ec496df2-41f5-44d6-809e-fcdd2030dae9
X-Runtime: 0.080264
Content-Length: 286

Body

{
  "id": 2,
  "created_at": "2022-06-10T20:24:39Z",
  "updated_at": "2022-06-10T20:24:39Z",
  "staff_id": 2,
  "title": "My Appointment Title",
  "description": "My Appointment Description",
  "shop_id": 1,
  "start_at": "2022-06-13T20:24:39Z",
  "end_at": "2022-06-13T22:24:39Z",
  "repair_order_id": 1,
  "integrator_tags": [

  ]
}

Delete an specific appointment

Endpoint

DELETE api/v1/tenants/:tenant_id/appointments/:id

Request

Route

DELETE api/v1/tenants/1/appointments/1

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 6f404d4f-83a9-488c-bd62-ba612a3765e5
X-Api-Secret: bjLF0L5BYba9xG9L7TylnRGi33zfdFHEvoUA4XE2sNY
Host: example.org
Cookie: 

cURL

curl "https://api.shop-ware.com/api/v1/tenants/1/appointments/1" -d '' -X DELETE \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 6f404d4f-83a9-488c-bd62-ba612a3765e5" \
	-H "X-Api-Secret: bjLF0L5BYba9xG9L7TylnRGi33zfdFHEvoUA4XE2sNY"

Response

Simulated Response

Response Fields

Name Description type
id Unique identifier of this record. number
description The description of the appointment. string
title The title of the appointment string
repair_order_id A foreign key that points to the RepairOrder associated with this appointment. integer
staff_id A foreign key which points to a Staff.id. Represents the technician assigned to this appointment. If staff_id is not present, the appointment is unassigned. integer
start_at Date the appointment will start. datetime string
end_at Date the appointment will end. datetime string
shop_id A foreign key that points to the Shop this appointment was created in. integer
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892743
ETag: W/"44136fa355b3678a1146ad16f7e8649e"
X-Request-Id: 11c06f6e-1341-40ef-b2a7-0f44c1088683
X-Runtime: 0.015748
Content-Length: 2

Body

{
}

Get a list of all appointments

Endpoint

GET api/v1/tenants/:tenant_id/appointments

Parameters

Name Description
start_after Filter response to include only Appointments having start_at occurring after the provided datetime.
end_before Filter response to include only Appointments having end_at occurring before the provided datetime.
customer_id Filter response to include only Customers with this ID.
vehicle_id Filter response to include only Vehicles with this ID.
shop_id Filter response to include only Shops with this ID.

Request

Route

GET api/v1/tenants/1/appointments

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: ba4a1b92-b6c0-438b-b36d-92667264d3d0
X-Api-Secret: XVWjAQ3EptKUE4XVAU8_TEKeEuHbA8qTJwpiGY_T7UU
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/appointments" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: ba4a1b92-b6c0-438b-b36d-92667264d3d0" \
	-H "X-Api-Secret: XVWjAQ3EptKUE4XVAU8_TEKeEuHbA8qTJwpiGY_T7UU"

Response

Simulated Response

Response Fields

Name Description type
id Unique identifier of this record. number
description The description of the appointment. string
title The title of the appointment string
repair_order_id A foreign key that points to the RepairOrder associated with this appointment. integer
staff_id A foreign key which points to a Staff.id. Represents the technician assigned to this appointment. If staff_id is not present, the appointment is unassigned. integer
start_at Date the appointment will start. datetime string
end_at Date the appointment will end. datetime string
shop_id A foreign key that points to the Shop this appointment was created in. integer
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892735
ETag: W/"3310b3481f2c8197a85a7f6b6d04ef64"
X-Request-Id: 293f1fb4-a40b-4e8a-ab53-bdd803b981ae
X-Runtime: 0.014368
Content-Length: 505

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:24:35Z",
      "updated_at": "2022-06-10T20:24:35Z",
      "staff_id": 1,
      "title": "title 1",
      "description": null,
      "shop_id": null,
      "start_at": "2022-06-10T20:24:34Z",
      "end_at": "2022-06-11T07:59:59Z",
      "repair_order_id": 2,
      "integrator_tags": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:24:35Z",
          "updated_at": "2022-06-10T20:24:35Z",
          "taggable_type": "Appointment",
          "taggable_id": 1,
          "name": "tag_name",
          "value": "tag_value"
        }
      ]
    }
  ],
  "limit": 1,
  "limited": false,
  "total_count": 1,
  "current_page": 1,
  "total_pages": 1
}

Get a specific appointment by ID

Endpoint

GET api/v1/tenants/:tenant_id/appointments/:id

Request

Route

GET api/v1/tenants/1/appointments/1

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: c2569a59-7bc6-4a0c-910c-47ae8abd0b46
X-Api-Secret: CNWOlb0-C5N2F4GBDjA_M1aiJ3e26N-b-vwXO3evB_E
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/appointments/1" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: c2569a59-7bc6-4a0c-910c-47ae8abd0b46" \
	-H "X-Api-Secret: CNWOlb0-C5N2F4GBDjA_M1aiJ3e26N-b-vwXO3evB_E"

Response

Simulated Response

Response Fields

Name Description type
id Unique identifier of this record. number
description The description of the appointment. string
title The title of the appointment string
repair_order_id A foreign key that points to the RepairOrder associated with this appointment. integer
staff_id A foreign key which points to a Staff.id. Represents the technician assigned to this appointment. If staff_id is not present, the appointment is unassigned. integer
start_at Date the appointment will start. datetime string
end_at Date the appointment will end. datetime string
shop_id A foreign key that points to the Shop this appointment was created in. integer
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892737
ETag: W/"85cfd1223576969301c3acf89efa6e40"
X-Request-Id: e7fd3624-8e81-4433-8596-1e7212b781e4
X-Runtime: 0.009114
Content-Length: 416

Body

{
  "id": 1,
  "created_at": "2022-06-10T20:24:37Z",
  "updated_at": "2022-06-10T20:24:37Z",
  "staff_id": 1,
  "title": "title 2",
  "description": null,
  "shop_id": null,
  "start_at": "2022-06-10T20:24:37Z",
  "end_at": "2022-06-11T07:59:59Z",
  "repair_order_id": 2,
  "integrator_tags": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:24:37Z",
      "updated_at": "2022-06-10T20:24:37Z",
      "taggable_type": "Appointment",
      "taggable_id": 1,
      "name": "tag_name",
      "value": "tag_value"
    }
  ]
}

Update an specific appointment

Endpoint

PUT api/v1/tenants/:tenant_id/appointments/:id

Parameters

Name Description type
staff_id A foreign key which points to a Staff.id. Represents the technician assigned to this appointment. integer
title The title of the appointment. Either repair_order_id or title must be set. string
description The description of the appointment. string
start_at Date the appointment will start. Must be in utc iso8601 date format. Setting this value does not automatically update the associated repair_order.due_in_at. string
end_at Date the appointment will end. Must be in utc iso8601 date format. Setting this value does not automatically update the associated repair_order.due_out_at. string
repair_order_id A foreign key that points to the RepairOrder associated with this appointment. Either repair_order_id or title must be set. integer
shop_id A foreign key that points to the Shop this appointment was created in. integer

Request

Route

PUT api/v1/tenants/1/appointments/1

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 3450c8dc-8cca-46cb-80b4-8ef346ac820f
X-Api-Secret: vZzODIal38BZjFeoys51yggGzL4NiXbmFq2vxz0BUsg
Host: example.org
Cookie: 

Body

{
  "staff_id": 2,
  "title": "My Appointment Title",
  "description": "My Appointment Description",
  "start_at": "2022-06-13T20:24:41Z",
  "end_at": "2022-06-13T22:24:41Z",
  "repair_order_id": 1,
  "shop_id": 1
}

cURL

curl "https://api.shop-ware.com/api/v1/tenants/1/appointments/1" -d '{"staff_id":2,"title":"My Appointment Title","description":"My Appointment Description","start_at":"2022-06-13T20:24:41Z","end_at":"2022-06-13T22:24:41Z","repair_order_id":1,"shop_id":1}' -X PUT \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 3450c8dc-8cca-46cb-80b4-8ef346ac820f" \
	-H "X-Api-Secret: vZzODIal38BZjFeoys51yggGzL4NiXbmFq2vxz0BUsg"

Response

Simulated Response

Response Fields

Name Description type
id Unique identifier of this record. number
description The description of the appointment. string
title The title of the appointment string
repair_order_id A foreign key that points to the RepairOrder associated with this appointment. integer
staff_id A foreign key which points to a Staff.id. Represents the technician assigned to this appointment. If staff_id is not present, the appointment is unassigned. integer
start_at Date the appointment will start. datetime string
end_at Date the appointment will end. datetime string
shop_id A foreign key that points to the Shop this appointment was created in. integer
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892741
ETag: W/"0ef6edc3a99f14fa622a422900c9daa1"
X-Request-Id: 0be85303-8f20-4836-aae0-a244ff75d470
X-Runtime: 0.021366
Content-Length: 450

Body

{
  "id": 1,
  "created_at": "2022-06-10T20:24:41Z",
  "updated_at": "2022-06-10T20:24:41Z",
  "staff_id": 2,
  "title": "My Appointment Title",
  "description": "My Appointment Description",
  "shop_id": 1,
  "start_at": "2022-06-13T20:24:41Z",
  "end_at": "2022-06-13T22:24:41Z",
  "repair_order_id": 1,
  "integrator_tags": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:24:41Z",
      "updated_at": "2022-06-10T20:24:41Z",
      "taggable_type": "Appointment",
      "taggable_id": 1,
      "name": "tag_name",
      "value": "tag_value"
    }
  ]
}

Assignments

Get a list of all assignments

Endpoint

GET api/v1/tenants/:tenant_id/assignments

Request

Route

GET api/v1/tenants/1/assignments

Headers

Accept: application/json
X-Api-Partner-Id: bcdab3c0-1ca1-492b-b12e-a552cce5f05e
X-Api-Secret: YMCdZVpoKP1wq0KE8JLernq_khtjKHYCMbrTRVMgxBQ
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/assignments" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: bcdab3c0-1ca1-492b-b12e-a552cce5f05e" \
	-H "X-Api-Secret: YMCdZVpoKP1wq0KE8JLernq_khtjKHYCMbrTRVMgxBQ"

Response

Simulated Response

Response Fields

Name Description type
repair_order_id Foreign key which points to the RepairOrder which is being transferred. number
transfer_to_id Foreign key which points to the Staff that is performing the transfer. number
transfer_from_id Foreign key which points to the Staff that is performing the transfer. number
message The transfer message. string
accepted_at Date the transfer was accepted. Null if not accepted. string
cancelled_at Date the transfer was cancelled. Null if not cancelled. string

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892746
ETag: W/"616727c6f2541494a43a871ca64f1a2c"
X-Request-Id: 373bef31-4401-4698-b14e-be2fcd2d428e
X-Runtime: 0.011356
Content-Length: 495

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:24:46Z",
      "updated_at": "2022-06-10T20:24:46Z",
      "repair_order_id": 1,
      "transfer_to_id": 3,
      "transfer_from_id": 2,
      "message": "some message",
      "accepted_at": "2022-06-10T20:24:46Z",
      "cancelled_at": null,
      "integrator_tags": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:24:46Z",
          "updated_at": "2022-06-10T20:24:46Z",
          "taggable_type": "Assignment",
          "taggable_id": 1,
          "name": "tag_name",
          "value": "tag_value"
        }
      ]
    }
  ],
  "limit": 1,
  "limited": false,
  "total_count": 1,
  "current_page": 1,
  "total_pages": 1
}

Get a specific assignment by ID

Endpoint

GET api/v1/tenants/:tenant_id/assignments/:id

Request

Route

GET api/v1/tenants/1/assignments/1

Headers

Accept: application/json
X-Api-Partner-Id: 28b534b2-ffa3-404c-a6fb-4e7487913455
X-Api-Secret: mmgGTRbsCjb8nCCR-fVDnvDJYYy0i3FaBioasfuJfqk
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/assignments/1" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 28b534b2-ffa3-404c-a6fb-4e7487913455" \
	-H "X-Api-Secret: mmgGTRbsCjb8nCCR-fVDnvDJYYy0i3FaBioasfuJfqk"

Response

Simulated Response

Response Fields

Name Description type
repair_order_id Foreign key which points to the RepairOrder which is being transferred. number
transfer_to_id Foreign key which points to the Staff that is performing the transfer. number
transfer_from_id Foreign key which points to the Staff that is performing the transfer. number
message The transfer message. string
accepted_at Date the transfer was accepted. Null if not accepted. string
cancelled_at Date the transfer was cancelled. Null if not cancelled. string

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892748
ETag: W/"635707ad0ae1cbbfd192068907c7ce4c"
X-Request-Id: f68429b0-0144-42be-b444-5d33817055f8
X-Runtime: 0.009024
Content-Length: 406

Body

{
  "id": 1,
  "created_at": "2022-06-10T20:24:48Z",
  "updated_at": "2022-06-10T20:24:48Z",
  "repair_order_id": 1,
  "transfer_to_id": 3,
  "transfer_from_id": 2,
  "message": "some message",
  "accepted_at": "2022-06-10T20:24:48Z",
  "cancelled_at": null,
  "integrator_tags": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:24:48Z",
      "updated_at": "2022-06-10T20:24:48Z",
      "taggable_type": "Assignment",
      "taggable_id": 1,
      "name": "tag_name",
      "value": "tag_value"
    }
  ]
}

Canned Jobs

Get a list of all canned jobs

Endpoint

GET api/v1/tenants/:tenant_id/canned_jobs

Request

Route

GET api/v1/tenants/1/canned_jobs

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: a9b6a6e4-ecc6-4b3a-a5f0-f5565fe9d1fa
X-Api-Secret: s0XjMxuTHcGOsgXmS5PjsWNCMfA0WfzU8GGBomfeVXs
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/canned_jobs" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: a9b6a6e4-ecc6-4b3a-a5f0-f5565fe9d1fa" \
	-H "X-Api-Secret: s0XjMxuTHcGOsgXmS5PjsWNCMfA0WfzU8GGBomfeVXs"

Response

Simulated Response

Response Fields

Name Description type
category_id A foreign key that points to the Category that this CannedJob belongs to. number
sublets[price_cents] The price in cents of sublet being sold to customer. number
sublets[taxable] Determines if sublet tax rate will be applied to this sublet. boolean
hazmats[fee_cents] The price of this fee or hazmat in cents per unit. number
hazmats[quantity] The number of units. number
hazmats[taxable] Determines if hazmat tax rate will be applied to this hazmat. boolean
parts[part_inventory_id] A foreign key which points to an Inventory.id. Represents the associated inventory and quantity information for this part. number
parts[quantity] The number of units this part line item represents. number
parts[taxable] Determines if part tax rate will be applied to this part. boolean
frequency The popularity of this canned job. The most used canned jobs will have the highest frequency. number
all_vehicles True if this canned job applies to all vehicles (rather than only specific vehicles), false otherwise. boolean
auto_applied True if this canned job should be applied to every new estimate automatically, false otherwise. boolean
optimizer_enabled True if the GP Optimizer should be used when pricing parts on this canned job, false otherwise. boolean
inspections[name] The name of this inspection as it will appear on the RO. string
shop_id A foreign key that points to the Shop that this CannedJob belongs to number

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892750
ETag: W/"604ddc40244a9e6b3e23e1894e6f96f3"
X-Request-Id: 22d6b845-db00-4fc1-8481-f1520f4b11fb
X-Runtime: 0.020478
Content-Length: 1459

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:24:50Z",
      "updated_at": "2022-06-10T20:24:50Z",
      "title": "Fake Canned Job Name",
      "all_vehicles": false,
      "frequency": 3360,
      "category_id": 4,
      "auto_applied": false,
      "shop_id": 2,
      "optimizer_enabled": true,
      "integrator_tags": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:24:50Z",
          "updated_at": "2022-06-10T20:24:50Z",
          "taggable_type": "CannedJob",
          "taggable_id": 1,
          "name": "987 zyx",
          "value": "abc 123"
        }
      ],
      "sublets": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:24:50Z",
          "updated_at": "2022-06-10T20:24:50Z",
          "name": "MFD Repair",
          "price_cents": 70000,
          "taxable": true
        }
      ],
      "inspections": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:24:50Z",
          "updated_at": "2022-06-10T20:24:50Z",
          "name": "Confirm proper operation of instruments and warning lights"
        }
      ],
      "vehicles": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:24:50Z",
          "updated_at": "2022-06-10T20:24:50Z",
          "year": "2006",
          "make": "Toyota",
          "model": "Prius",
          "engine": "1.5L L4 (1NZFXE) ELECTRIC/GAS FI"
        }
      ],
      "hazmats": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:24:50Z",
          "updated_at": "2022-06-10T20:24:50Z",
          "name": "Qt Motor Oil Recycling",
          "fee_cents": 75,
          "taxable": true,
          "quantity": 4.0
        }
      ],
      "parts": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:24:50Z",
          "updated_at": "2022-06-10T20:24:50Z",
          "part_inventory_id": 1866,
          "taxable": true,
          "quantity": 4.0
        }
      ],
      "labors": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:24:50Z",
          "updated_at": "2022-06-10T20:24:50Z",
          "name": "Drain and fill engine oil",
          "taxable": true,
          "hours": 0.1
        }
      ]
    }
  ],
  "limit": 1,
  "limited": false,
  "total_count": 1,
  "current_page": 1,
  "total_pages": 1
}

Get a specific canned job by ID

Endpoint

GET api/v1/tenants/:tenant_id/canned_jobs/:id

Request

Route

GET api/v1/tenants/1/canned_jobs/1

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 60da9363-f72a-4fc9-b642-3bd8332ad1bb
X-Api-Secret: jddpdkqTNuU9GjVZjTr1OqT07w8VdXo_CYkj5XkVHKQ
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/canned_jobs/1" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 60da9363-f72a-4fc9-b642-3bd8332ad1bb" \
	-H "X-Api-Secret: jddpdkqTNuU9GjVZjTr1OqT07w8VdXo_CYkj5XkVHKQ"

Response

Simulated Response

Response Fields

Name Description type
category_id A foreign key that points to the Category that this CannedJob belongs to. number
sublets[price_cents] The price in cents of sublet being sold to customer. number
sublets[taxable] Determines if sublet tax rate will be applied to this sublet. boolean
hazmats[fee_cents] The price of this fee or hazmat in cents per unit. number
hazmats[quantity] The number of units. number
hazmats[taxable] Determines if hazmat tax rate will be applied to this hazmat. boolean
parts[part_inventory_id] A foreign key which points to an Inventory.id. Represents the associated inventory and quantity information for this part. number
parts[quantity] The number of units this part line item represents. number
parts[taxable] Determines if part tax rate will be applied to this part. boolean
frequency The popularity of this canned job. The most used canned jobs will have the highest frequency. number
all_vehicles True if this canned job applies to all vehicles (rather than only specific vehicles), false otherwise. boolean
auto_applied True if this canned job should be applied to every new estimate automatically, false otherwise. boolean
optimizer_enabled True if the GP Optimizer should be used when pricing parts on this canned job, false otherwise. boolean
inspections[name] The name of this inspection as it will appear on the RO. string
shop_id A foreign key that points to the Shop that this CannedJob belongs to number

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892753
ETag: W/"fe5cb6ac75939b1b14a01b42abc61463"
X-Request-Id: 1dec4908-a277-4282-a040-4cd5403a0caa
X-Runtime: 0.015665
Content-Length: 1370

Body

{
  "id": 1,
  "created_at": "2022-06-10T20:24:52Z",
  "updated_at": "2022-06-10T20:24:52Z",
  "title": "Fake Canned Job Name",
  "all_vehicles": false,
  "frequency": 3360,
  "category_id": 4,
  "auto_applied": false,
  "shop_id": 2,
  "optimizer_enabled": true,
  "integrator_tags": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:24:53Z",
      "updated_at": "2022-06-10T20:24:53Z",
      "taggable_type": "CannedJob",
      "taggable_id": 1,
      "name": "987 zyx",
      "value": "abc 123"
    }
  ],
  "sublets": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:24:52Z",
      "updated_at": "2022-06-10T20:24:52Z",
      "name": "MFD Repair",
      "price_cents": 70000,
      "taxable": true
    }
  ],
  "inspections": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:24:53Z",
      "updated_at": "2022-06-10T20:24:53Z",
      "name": "Confirm proper operation of instruments and warning lights"
    }
  ],
  "vehicles": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:24:53Z",
      "updated_at": "2022-06-10T20:24:53Z",
      "year": "2006",
      "make": "Toyota",
      "model": "Prius",
      "engine": "1.5L L4 (1NZFXE) ELECTRIC/GAS FI"
    }
  ],
  "hazmats": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:24:53Z",
      "updated_at": "2022-06-10T20:24:53Z",
      "name": "Qt Motor Oil Recycling",
      "fee_cents": 75,
      "taxable": true,
      "quantity": 4.0
    }
  ],
  "parts": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:24:53Z",
      "updated_at": "2022-06-10T20:24:53Z",
      "part_inventory_id": 1866,
      "taxable": true,
      "quantity": 4.0
    }
  ],
  "labors": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:24:53Z",
      "updated_at": "2022-06-10T20:24:53Z",
      "name": "Drain and fill engine oil",
      "taxable": true,
      "hours": 0.1
    }
  ]
}

Categories

Get a list of all categories

Endpoint

GET api/v1/tenants/:tenant_id/categories

Request

Route

GET api/v1/tenants/1/categories

Headers

Accept: application/json
X-Api-Partner-Id: 27c55611-da90-48fe-be99-79075c87b33e
X-Api-Secret: VkVTYH5sKGljRzEt8qmyEDT1Tr-PKd0rdgEMzf3p6kQ
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/categories" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 27c55611-da90-48fe-be99-79075c87b33e" \
	-H "X-Api-Secret: VkVTYH5sKGljRzEt8qmyEDT1Tr-PKd0rdgEMzf3p6kQ"

Response

Simulated Response

Response Fields

Name Description type
id The category primary key. number
text The category description. string
updated_at The datetime the RO was last modified. datetime string
created_at The datetime the RO was created. datetime string
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892755
ETag: W/"87fb1937792a48f23918dc365c592b40"
X-Request-Id: 13963a7e-6419-4a35-adc1-b5242ac84961
X-Runtime: 0.011672
Content-Length: 611

Body

{
  "results": [
    {
      "id": 3,
      "created_at": "2022-06-10T20:24:55Z",
      "updated_at": "2022-06-10T20:24:55Z",
      "text": "Repair",
      "integrator_tags": [

      ]
    },
    {
      "id": 2,
      "created_at": "2022-06-10T20:24:55Z",
      "updated_at": "2022-06-10T20:24:55Z",
      "text": "Diagnosis",
      "integrator_tags": [

      ]
    },
    {
      "id": 1,
      "created_at": "2022-06-10T20:24:55Z",
      "updated_at": "2022-06-10T20:24:55Z",
      "text": "Maintenance",
      "integrator_tags": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:24:55Z",
          "updated_at": "2022-06-10T20:24:55Z",
          "taggable_type": "Category",
          "taggable_id": 1,
          "name": "tag_name",
          "value": "tag_value"
        }
      ]
    }
  ],
  "limit": 3,
  "limited": false,
  "total_count": 3,
  "current_page": 1,
  "total_pages": 1
}

Get a specific category by ID

Endpoint

GET api/v1/tenants/:tenant_id/categories/:id

Request

Route

GET api/v1/tenants/1/categories/1

Headers

Accept: application/json
X-Api-Partner-Id: c1f4c9f0-c808-4262-9556-fe7a32cbe68c
X-Api-Secret: TAaEZs5tOEyY6CN77RwFGF0JrWfRJQhY1rUASvNRV7U
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/categories/1" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: c1f4c9f0-c808-4262-9556-fe7a32cbe68c" \
	-H "X-Api-Secret: TAaEZs5tOEyY6CN77RwFGF0JrWfRJQhY1rUASvNRV7U"

Response

Simulated Response

Response Fields

Name Description type
id The category primary key. number
text The category description. string
updated_at The datetime the RO was last modified. datetime string
created_at The datetime the RO was created. datetime string
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892757
ETag: W/"49f8b6665950f9553d98d375a24fadf3"
X-Request-Id: e0c07669-119b-4c1e-9de5-3ebe201fb07d
X-Runtime: 0.007602
Content-Length: 283

Body

{
  "id": 1,
  "created_at": "2022-06-10T20:24:57Z",
  "updated_at": "2022-06-10T20:24:57Z",
  "text": "Maintenance",
  "integrator_tags": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:24:57Z",
      "updated_at": "2022-06-10T20:24:57Z",
      "taggable_type": "Category",
      "taggable_id": 1,
      "name": "tag_name",
      "value": "tag_value"
    }
  ]
}

Customers

Create a customer

Endpoint

POST api/v1/tenants/:tenant_id/customers

Parameters

Name Description type
first_name First name. string
last_name Last name. string
email Must compliant to RFC 822. Requests containing an email that has already been taken by another customer or staff member are rejected. string
phone [Deprecated] Phone number must be in E.164 format. Currently, only USA and Canada numbers (10-digits with country code 1) are allowed. Ex: +15554441234. string
detail Notes made by the staff about this customer. string
address Address. string
city City. string
state 2-character state codes are valid. Including [AL AK AZ AR CA CO CT DE DC FL GA HI ID IL IN IA KS KY LA ME MD MA MI MN MS MO MT NE NV NH NJ NM NY NC ND OH OK OR PA RI SC SD TN TX UT VT WA WV WI WY AB BC MB NB NF NS ON PE PQ SK VA PR]. string
zip Zip code. string
marketing_ok true if the customer has opted-in to marketing, false otherwise. boolean
phones[number] Phone number in E.164 format. Ex: +15554441234. string
phones[label] A human-readable label for this number. string
phones[preferred] True if this phone number is a preferred contact method, false otherwise. boolean

Request

Route

POST api/v1/tenants/1/customers

Headers

Content-Type: application/json
Accept: application/json
X-Api-Partner-Id: 8a17ca5c-9d21-4b50-a58a-5a0c76fd017f
X-Api-Secret: FyB4KCqxNESTYxtLQb2sjLj02enWl96qqsxwZb7WWSg
Host: example.org
Cookie: 

cURL

curl "https://api.shop-ware.com/api/v1/tenants/1/customers" -d '' -X POST \
	-H "Content-Type: application/json" \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 8a17ca5c-9d21-4b50-a58a-5a0c76fd017f" \
	-H "X-Api-Secret: FyB4KCqxNESTYxtLQb2sjLj02enWl96qqsxwZb7WWSg"

Response

Simulated Response

Response Fields

Name Description type
phone [Deprecated] Customer's phone number in the format of (###) ###-#### for US numbers, otherwise E.164 format. string
marketing_ok true if the customer has opted-in to marketing, false otherwise. boolean
detail Notes made by the staff about this customer. string
shop_ids A list of the shops a customer had service history. array of integers
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data. array of integrator tags
phones[number] Phone number in E.164 format. Ex: +15554441234. string
phones[national] Phone number in national (in-country) format. Ex: (555) 444-1234. string
phones[international] Phone number in international format. Ex: +1 555-444-1234. string
phones[country_code] The country calling code. Ex: 1. string
phones[label] A human-readable label for this number. string
phones[preferred] True if this phone number is a preferred contact method, false otherwise. boolean

Status

201

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892765
ETag: W/"741f7427948fc0fce6cdc55338328dbd"
X-Request-Id: 401a7475-1a4c-42b5-8614-f024134fe145
X-Runtime: 0.012208
Content-Length: 642

Body

{
  "id": 1,
  "created_at": "2022-06-10T20:25:05Z",
  "updated_at": "2022-06-10T20:25:05Z",
  "first_name": "Connor",
  "last_name": "McGregor",
  "phone": "(415) 890-0906",
  "detail": "New customer",
  "address": "123 Main Street",
  "city": "San Diego",
  "state": "CA",
  "zip": "92111",
  "marketing_ok": true,
  "shop_ids": [
    2,
    3
  ],
  "email": "keeF@example.com",
  "integrator_tags": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:25:05Z",
      "updated_at": "2022-06-10T20:25:05Z",
      "taggable_type": "Customer",
      "taggable_id": 1,
      "name": "tag_name",
      "value": "tag_value"
    }
  ],
  "phones": [
    {
      "number": "+14158900906",
      "international": "+1 415-890-0906",
      "national": "(415) 890-0906",
      "country_code": "1",
      "label": null,
      "preferred": true
    }
  ]
}

Get a list of all customers

Endpoint

GET api/v1/tenants/:tenant_id/customers

Parameters

Name Description
last_name Filter response to include only customers with a last_name containing the corresponding characters sequence.
email Filter response to include only customers with contact_email containing the corresponding character sequence.

Request

Route

GET api/v1/tenants/1/customers

Headers

Content-Type: application/json
Accept: application/json
X-Api-Partner-Id: 8a623851-c8b6-484f-b7a6-af4721b33053
X-Api-Secret: _ZYoO417XDbdln9zfenS9zi8hxRWKa3dJoYnLf7aBH0
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/customers" -X GET \
	-H "Content-Type: application/json" \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 8a623851-c8b6-484f-b7a6-af4721b33053" \
	-H "X-Api-Secret: _ZYoO417XDbdln9zfenS9zi8hxRWKa3dJoYnLf7aBH0"

Response

Simulated Response

Response Fields

Name Description type
phone [Deprecated] Customer's phone number in the format of (###) ###-#### for US numbers, otherwise E.164 format. string
marketing_ok true if the customer has opted-in to marketing, false otherwise. boolean
detail Notes made by the staff about this customer. string
shop_ids A list of the shops a customer had service history. array of integers
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data. array of integrator tags
phones[number] Phone number in E.164 format. Ex: +15554441234. string
phones[national] Phone number in national (in-country) format. Ex: (555) 444-1234. string
phones[international] Phone number in international format. Ex: +1 555-444-1234. string
phones[country_code] The country calling code. Ex: 1. string
phones[label] A human-readable label for this number. string
phones[preferred] True if this phone number is a preferred contact method, false otherwise. boolean

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892759
ETag: W/"6f4c380b5751f2442e5fe2dccc09beb6"
X-Request-Id: dd4408ea-de0f-4504-b739-9a4933c70f1e
X-Runtime: 0.032636
Content-Length: 731

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:24:59Z",
      "updated_at": "2022-06-10T20:24:59Z",
      "first_name": "Connor",
      "last_name": "McGregor",
      "phone": "(415) 890-0906",
      "detail": "New customer",
      "address": "123 Main Street",
      "city": "San Diego",
      "state": "CA",
      "zip": "92111",
      "marketing_ok": true,
      "shop_ids": [
        2,
        3
      ],
      "email": "keeF@example.com",
      "integrator_tags": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:24:59Z",
          "updated_at": "2022-06-10T20:24:59Z",
          "taggable_type": "Customer",
          "taggable_id": 1,
          "name": "tag_name",
          "value": "tag_value"
        }
      ],
      "phones": [
        {
          "number": "+14158900906",
          "international": "+1 415-890-0906",
          "national": "(415) 890-0906",
          "country_code": "1",
          "label": null,
          "preferred": true
        }
      ]
    }
  ],
  "limit": 1,
  "limited": false,
  "total_count": 1,
  "current_page": 1,
  "total_pages": 1
}

Get a list of filtered customers

Endpoint

GET api/v1/tenants/:tenant_id/customers

Parameters

Name Description
last_name Filter response to include only customers with a last_name containing the corresponding characters sequence.
email Filter response to include only customers with contact_email containing the corresponding character sequence.

Request

Route

GET api/v1/tenants/1/customers?last_name=greg&email=eef

Headers

Content-Type: application/json
Accept: application/json
X-Api-Partner-Id: c57ec03b-45b4-47c2-bd62-b2161644396d
X-Api-Secret: 057K2tIjjjngCzGbkVSX8DMEYaMjvDGaxk8KLoUBd3w
Host: example.org
Cookie: 

Query Parameters

last_name=greg
email=eef

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/customers?last_name=greg&email=eef" -X GET \
	-H "Content-Type: application/json" \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: c57ec03b-45b4-47c2-bd62-b2161644396d" \
	-H "X-Api-Secret: 057K2tIjjjngCzGbkVSX8DMEYaMjvDGaxk8KLoUBd3w"

Response

Simulated Response

Response Fields

Name Description type
phone [Deprecated] Customer's phone number in the format of (###) ###-#### for US numbers, otherwise E.164 format. string
marketing_ok true if the customer has opted-in to marketing, false otherwise. boolean
detail Notes made by the staff about this customer. string
shop_ids A list of the shops a customer had service history. array of integers
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data. array of integrator tags
phones[number] Phone number in E.164 format. Ex: +15554441234. string
phones[national] Phone number in national (in-country) format. Ex: (555) 444-1234. string
phones[international] Phone number in international format. Ex: +1 555-444-1234. string
phones[country_code] The country calling code. Ex: 1. string
phones[label] A human-readable label for this number. string
phones[preferred] True if this phone number is a preferred contact method, false otherwise. boolean

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892761
ETag: W/"9ff42a3401f726f5d6ba6d5fb012f4a2"
X-Request-Id: 0c9565b7-249a-4594-9242-2985bfb001be
X-Runtime: 0.012680
Content-Length: 731

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:25:01Z",
      "updated_at": "2022-06-10T20:25:01Z",
      "first_name": "Connor",
      "last_name": "McGregor",
      "phone": "(415) 890-0906",
      "detail": "New customer",
      "address": "123 Main Street",
      "city": "San Diego",
      "state": "CA",
      "zip": "92111",
      "marketing_ok": true,
      "shop_ids": [
        2,
        3
      ],
      "email": "keeF@example.com",
      "integrator_tags": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:25:01Z",
          "updated_at": "2022-06-10T20:25:01Z",
          "taggable_type": "Customer",
          "taggable_id": 1,
          "name": "tag_name",
          "value": "tag_value"
        }
      ],
      "phones": [
        {
          "number": "+14158900906",
          "international": "+1 415-890-0906",
          "national": "(415) 890-0906",
          "country_code": "1",
          "label": null,
          "preferred": true
        }
      ]
    }
  ],
  "limit": 1,
  "limited": false,
  "total_count": 1,
  "current_page": 1,
  "total_pages": 1
}

Get a specific customer by ID

Endpoint

GET api/v1/tenants/:tenant_id/customers/:id

Request

Route

GET api/v1/tenants/1/customers/1

Headers

Content-Type: application/json
Accept: application/json
X-Api-Partner-Id: 0d4e86bc-0b38-4715-a839-d7293acfbc33
X-Api-Secret: V3fNMU3gVwgax3GD52Pf-b3WIpfIlDfY5snSHBIDle0
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/customers/1" -X GET \
	-H "Content-Type: application/json" \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 0d4e86bc-0b38-4715-a839-d7293acfbc33" \
	-H "X-Api-Secret: V3fNMU3gVwgax3GD52Pf-b3WIpfIlDfY5snSHBIDle0"

Response

Simulated Response

Response Fields

Name Description type
phone [Deprecated] Customer's phone number in the format of (###) ###-#### for US numbers, otherwise E.164 format. string
marketing_ok true if the customer has opted-in to marketing, false otherwise. boolean
detail Notes made by the staff about this customer. string
shop_ids A list of the shops a customer had service history. array of integers
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data. array of integrator tags
phones[number] Phone number in E.164 format. Ex: +15554441234. string
phones[national] Phone number in national (in-country) format. Ex: (555) 444-1234. string
phones[international] Phone number in international format. Ex: +1 555-444-1234. string
phones[country_code] The country calling code. Ex: 1. string
phones[label] A human-readable label for this number. string
phones[preferred] True if this phone number is a preferred contact method, false otherwise. boolean

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892763
ETag: W/"07ef03b8a70326f081203adc95765d58"
X-Request-Id: 684bdfa7-7b19-4ac8-8c3b-a38cd8645a13
X-Runtime: 0.012632
Content-Length: 642

Body

{
  "id": 1,
  "created_at": "2022-06-10T20:25:03Z",
  "updated_at": "2022-06-10T20:25:03Z",
  "first_name": "Connor",
  "last_name": "McGregor",
  "phone": "(415) 890-0906",
  "detail": "New customer",
  "address": "123 Main Street",
  "city": "San Diego",
  "state": "CA",
  "zip": "92111",
  "marketing_ok": true,
  "shop_ids": [
    2,
    3
  ],
  "email": "keeF@example.com",
  "integrator_tags": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:25:03Z",
      "updated_at": "2022-06-10T20:25:03Z",
      "taggable_type": "Customer",
      "taggable_id": 1,
      "name": "tag_name",
      "value": "tag_value"
    }
  ],
  "phones": [
    {
      "number": "+14158900906",
      "international": "+1 415-890-0906",
      "national": "(415) 890-0906",
      "country_code": "1",
      "label": null,
      "preferred": true
    }
  ]
}

Update a specific customer

Endpoint

PUT api/v1/tenants/:tenant_id/customers/:id

Parameters

Name Description type
first_name First name. string
last_name Last name. string
email Must compliant to RFC 822. Requests containing an email that has already been taken by another customer or staff member are rejected. string
phone Phone number must be in E.164 format. Currently, only USA and Canada numbers (10-digits with country code 1) are allowed. Ex: +15554441234. string
detail Notes made by the staff about this customer. string
address Address. string
city City. string
state 2-character state codes are valid. Including [AL AK AZ AR CA CO CT DE DC FL GA HI ID IL IN IA KS KY LA ME MD MA MI MN MS MO MT NE NV NH NJ NM NY NC ND OH OK OR PA RI SC SD TN TX UT VT WA WV WI WY AB BC MB NB NF NS ON PE PQ SK VA PR]. string
zip Zip code. string
marketing_ok true if the customer has opted-in to marketing, false otherwise. boolean
phones[number] Phone number in E.164 format. Ex: +15554441234. string
phones[label] A human-readable label for this number. string
phones[preferred] True if this phone number is a preferred contact method, false otherwise. boolean

Request

Route

PUT api/v1/tenants/1/customers/1

Headers

Content-Type: application/json
Accept: application/json
X-Api-Partner-Id: b7da499a-6a87-4fea-892c-a14d0e03bae8
X-Api-Secret: Otb76OHUOpag0pIR3qItpV2u90n4b71cze2KqtqoWxc
Host: example.org
Cookie: 

cURL

curl "https://api.shop-ware.com/api/v1/tenants/1/customers/1" -d '' -X PUT \
	-H "Content-Type: application/json" \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: b7da499a-6a87-4fea-892c-a14d0e03bae8" \
	-H "X-Api-Secret: Otb76OHUOpag0pIR3qItpV2u90n4b71cze2KqtqoWxc"

Response

Simulated Response

Response Fields

Name Description type
phone [Deprecated] Customer's phone number in the format of (###) ###-#### for US numbers, otherwise E.164 format. string
marketing_ok true if the customer has opted-in to marketing, false otherwise. boolean
detail Notes made by the staff about this customer. string
shop_ids A list of the shops a customer had service history. array of integers
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data. array of integrator tags
phones[number] Phone number in E.164 format. Ex: +15554441234. string
phones[national] Phone number in national (in-country) format. Ex: (555) 444-1234. string
phones[international] Phone number in international format. Ex: +1 555-444-1234. string
phones[country_code] The country calling code. Ex: 1. string
phones[label] A human-readable label for this number. string
phones[preferred] True if this phone number is a preferred contact method, false otherwise. boolean

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892767
ETag: W/"bde1a6b541c25c92fd574c370cffa8bd"
X-Request-Id: 2fa37d27-1854-4ca0-91f9-9856d560f9a7
X-Runtime: 0.014375
Content-Length: 642

Body

{
  "id": 1,
  "created_at": "2022-06-10T20:25:07Z",
  "updated_at": "2022-06-10T20:25:07Z",
  "first_name": "Connor",
  "last_name": "McGregor",
  "phone": "(415) 890-0906",
  "detail": "New customer",
  "address": "123 Main Street",
  "city": "San Diego",
  "state": "CA",
  "zip": "92111",
  "marketing_ok": true,
  "shop_ids": [
    2,
    3
  ],
  "email": "keeF@example.com",
  "integrator_tags": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:25:07Z",
      "updated_at": "2022-06-10T20:25:07Z",
      "taggable_type": "Customer",
      "taggable_id": 1,
      "name": "tag_name",
      "value": "tag_value"
    }
  ],
  "phones": [
    {
      "number": "+14158900906",
      "international": "+1 415-890-0906",
      "national": "(415) 890-0906",
      "country_code": "1",
      "label": null,
      "preferred": true
    }
  ]
}

Estimates

Add canned job as service

Endpoint

PUT api/v1/tenants/:tenant_id/estimates/:estimate_id/canned_jobs/:canned_job_id

Request

Route

PUT api/v1/tenants/1/estimates/2/canned_jobs/1

Headers

Content-Type: application/json
Accept: application/json
X-Api-Partner-Id: a9183488-184c-4216-991e-6f2e1968cd83
X-Api-Secret: BnxBUkfz2kZfuX4o_CJ6SuJs-atC0vGYOXPGc9xneuc
Host: example.org
Cookie: 

cURL

curl "https://api.shop-ware.com/api/v1/tenants/1/estimates/2/canned_jobs/1" -d '' -X PUT \
	-H "Content-Type: application/json" \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: a9183488-184c-4216-991e-6f2e1968cd83" \
	-H "X-Api-Secret: BnxBUkfz2kZfuX4o_CJ6SuJs-atC0vGYOXPGc9xneuc"

Response

Simulated Response

Response Fields

Name Description type
state Only 'estimate' string
status_id A foreign key which points to a Status.id. Represents the Status for this RO. number
customer_id A foreign key which points to a Customer.id. Represents the Customer for this RO. number
technician_id A foreign key which points to a Staff.id. Represents the technician assigned to this RO. number
advisor_id A foreign key which points to a Staff.id. Represents the service advisor assigned to this RO. number
vehicle_id A foreign key which points to a Vehicle.id. Represents the vehicle for this RO. number
shop_id A foreign key which points to a Shop.id. Represents the Shop for this RO. number
detail Notes made by the staff about this RO. string
preferred_contact_type How the customer prefers to receive progress updates about this RO. One of 'Waiting', 'Phone', 'Email', 'Text'. More contact types may be added. string
part_discount_cents The total amount in cents parts are discounted on this RO, subtracted from the parts subtotal before tax. This will be null if part_discount_percentage is non-null. number
labor_discount_cents The total amount in cents labor is discounted on this RO, subtracted from the labor subtotal before tax. This will be null if labor_discount_percentage is non-null. number
started_at The datetime the RO was started and transitioned to 'in_progress' state, or null if the RO is still an estimate. datetime string
closed_at The datetime the RO was closed and transitioned to 'invoice' state, or null if the RO is not yet an invoice. datetime string
picked_up_at The datetime the vehicle was marked as 'picked up', or null if the vehicle is still in the shop. datetime string
due_in_at The datetime the vehicle was scheduled to be dropped off. datetime string
due_out_at The datetime the vehicle was scheduled to be picked up. datetime string
part_tax_rate The tax rate applied to parts on this RO. number
labor_tax_rate The tax rate applied to labor on this RO. number
sublet_tax_rate The tax rate applied to sublets on this RO. number
hazmat_tax_rate The tax rate applied to hazmats and fees on this RO. number
taxable Determines if tax rates will apply on this RO. boolean
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags
customer_source The marketing source of the customer for this RO. Example: "Repeat", "Referral", "Website", etc string
supply_fee_cents The shop supplies fee in cents. If and only if null, the supply fee for this RO should instead be computed by the settings in the associated shop (repair_order.shop_id). If non-null, this value should be used as the supply fee. This value is taxed as a part. number
part_discount_percentage The amount in percent that parts are discounted on this RO (ex: 7.55%), subtracted from the parts subtotal before tax. This will be null if part_discount_cents is non-null. number
labor_discount_percentage The amount in percent labor is discounted on this RO (ex: 7.55%), subtracted from the labor subtotal before tax. This will be null if labor_discount_cents is non-null. number
services[completed] True if the service has been marked as completed by a staff member, false otherwise. boolean
services[labor_rate_cents] The rate in cents that labor on this service is charged at. number
services[canned_job_id] A foreign key which points to a CannedJob.id. Represents the canned job assigned to this specific service item. number
services[comment] Service comments. text
services[completed_at] The datetime the service was marked completed datetime string
services[last_completed_at] The datetime the service was last marked completed. This may occur if the service had been marked completed then restarted and marked completed again. datetime string
labors[technician_id] A foreign key which points to a Staff.id. Represents the technician assigned to this specific labor item. number
labors[taxable] Determines if labor tax rate will be applied to this labor. boolean
parts[quoted_price_cents] The price of this part that is being sold to the customer in cents per unit. number
parts[cost_cents] The wholesale cost of this part to the shop in cents per unit. number
parts[part_inventory_id] A foreign key which points to an Inventory.id. Represents the associated inventory and quantity information for this part. number
parts[quantity] The number of units this part line item represents. number
parts[taxable] Determines if part tax rate will be applied to this part. boolean
hazmats[fee_cents] The price of this fee or hazmat in cents per unit. number
hazmats[quantity] The number of units. number
hazmats[taxable] Determines if hazmat tax rate will be applied to this hazmat. boolean
sublets[price_cents] The price in cents of sublet being sold to customer. number
sublets[cost_cents] The amount in cents paid to provider for services. number
sublets[provider] The name of the entity providing services for sublet. string
sublets[invoice_number] A string which identifies invoice from provider. string
sublets[invoice_date] The date when the invoice from provider was created. datetime string
sublets[taxable] Determines if sublet tax rate will be applied to this sublet. boolean
sublets[vendor_id] A foreign key which points to a Vendor.id. Represents a vendor associated with this sublet item. number
inspections[name] The name of this inspection as it appears on the RO. string
inspections[state] One of "yellow", "green", "unchecked", "red". More states may be added. string
inspections[detail] Optional staff-entered details about the results of this inspection. string
payments[payment_type] The display name of the payment type. Payment types are customizable for each shop. Examples: "Other", "Credit Card", "Check", "Cash", "Credit Card - Visa", and "Other - Warranty". string
payments[payment_type_details] An object containing the type and name of the payment type. Example: { type: "Credit Card", name: "Mastercard" }. The type is always present, but the name could be null or blank. object
payments[notes] Staff-entered notes about this payment. string
payments[amount_cents] The total payment amount, in cents. number
label[text] The description of the label. string
label[color_code] The color code of which the label is represented. string

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892770
ETag: W/"c04174f1e8a79f8ed3d767f1d64e3927"
X-Request-Id: 669d4475-3716-4a4c-990d-d6552e45debb
X-Runtime: 0.045957
Content-Length: 2092

Body

{
  "id": 2,
  "created_at": "2022-06-10T20:25:10Z",
  "updated_at": "2022-06-10T20:25:10Z",
  "number": 11341,
  "odometer": 90321,
  "odometer_out": null,
  "state": "estimate",
  "customer_id": 3,
  "technician_id": 1,
  "advisor_id": 2,
  "vehicle_id": 1,
  "detail": "Key tag 84, customer waiting",
  "preferred_contact_type": "Text",
  "part_discount_cents": null,
  "labor_discount_cents": null,
  "shop_id": 2,
  "status_id": null,
  "taxable": true,
  "customer_source": "Repeat",
  "supply_fee_cents": 3250,
  "part_discount_percentage": null,
  "labor_discount_percentage": null,
  "started_at": null,
  "closed_at": null,
  "picked_up_at": null,
  "due_in_at": "2022-06-13T20:25:10Z",
  "due_out_at": null,
  "part_tax_rate": 0.0,
  "labor_tax_rate": 0.0,
  "hazmat_tax_rate": 0.0,
  "sublet_tax_rate": 0.0,
  "services": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:25:10Z",
      "updated_at": "2022-06-10T20:25:10Z",
      "title": "Warning Light On",
      "completed": false,
      "category_id": 4,
      "canned_job_id": 1,
      "comment": "",
      "labor_rate_cents": null,
      "completed_at": null,
      "last_completed_at": null,
      "labors": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:25:10Z",
          "updated_at": "2022-06-10T20:25:10Z",
          "name": "Advise on proper course of action",
          "technician_id": 1,
          "taxable": false,
          "hours": 0.13
        }
      ],
      "parts": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:25:10Z",
          "updated_at": "2022-06-10T20:25:10Z",
          "brand": "Superbright",
          "description": "194 LED - AMBER 120*",
          "number": "WLED-A-120",
          "quoted_price_cents": 395,
          "cost_cents": 85,
          "part_inventory_id": 1,
          "taxable": false,
          "quantity": 2.0
        }
      ],
      "hazmats": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:25:10Z",
          "updated_at": "2022-06-10T20:25:10Z",
          "name": "Recycling fee",
          "fee_cents": 2000,
          "taxable": true,
          "quantity": 1.0
        }
      ],
      "sublets": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:25:10Z",
          "updated_at": "2022-06-10T20:25:10Z",
          "name": "Windshield repair",
          "price_cents": 1999,
          "cost_cents": 999,
          "provider": "Windshield Bros.",
          "invoice_number": "1111",
          "description": "windshield provider",
          "taxable": true,
          "vendor_id": 1,
          "invoice_date": "2022-06-11T20:25:10Z"
        }
      ],
      "inspections": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:25:10Z",
          "updated_at": "2022-06-10T20:25:10Z",
          "name": "Measure tire tread depth",
          "state": "red",
          "detail": "Tread at 3/16"
        }
      ]
    }
  ],
  "payments": [

  ],
  "integrator_tags": [

  ],
  "label": null
}

Delete service

Endpoint

DELETE api/v1/tenants/:tenant_id/estimates/:estimate_id/services/:service_id

Request

Route

DELETE api/v1/tenants/1/estimates/2/services/1

Headers

Content-Type: application/json
Accept: application/json
X-Api-Partner-Id: da14f7f1-d1e9-4745-9027-f35c4da5d2b2
X-Api-Secret: VrnyDYr_SzrYNU8Bk_gdCLzzPqsYESBLXpD3N1DMsTE
Host: example.org
Cookie: 

cURL

curl "https://api.shop-ware.com/api/v1/tenants/1/estimates/2/services/1" -d '' -X DELETE \
	-H "Content-Type: application/json" \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: da14f7f1-d1e9-4745-9027-f35c4da5d2b2" \
	-H "X-Api-Secret: VrnyDYr_SzrYNU8Bk_gdCLzzPqsYESBLXpD3N1DMsTE"

Response

Simulated Response

Response Fields

Name Description type
state Only 'estimate' string
status_id A foreign key which points to a Status.id. Represents the Status for this RO. number
customer_id A foreign key which points to a Customer.id. Represents the Customer for this RO. number
technician_id A foreign key which points to a Staff.id. Represents the technician assigned to this RO. number
advisor_id A foreign key which points to a Staff.id. Represents the service advisor assigned to this RO. number
vehicle_id A foreign key which points to a Vehicle.id. Represents the vehicle for this RO. number
shop_id A foreign key which points to a Shop.id. Represents the Shop for this RO. number
detail Notes made by the staff about this RO. string
preferred_contact_type How the customer prefers to receive progress updates about this RO. One of 'Waiting', 'Phone', 'Email', 'Text'. More contact types may be added. string
part_discount_cents The total amount in cents parts are discounted on this RO, subtracted from the parts subtotal before tax. This will be null if part_discount_percentage is non-null. number
labor_discount_cents The total amount in cents labor is discounted on this RO, subtracted from the labor subtotal before tax. This will be null if labor_discount_percentage is non-null. number
started_at The datetime the RO was started and transitioned to 'in_progress' state, or null if the RO is still an estimate. datetime string
closed_at The datetime the RO was closed and transitioned to 'invoice' state, or null if the RO is not yet an invoice. datetime string
picked_up_at The datetime the vehicle was marked as 'picked up', or null if the vehicle is still in the shop. datetime string
due_in_at The datetime the vehicle was scheduled to be dropped off. datetime string
due_out_at The datetime the vehicle was scheduled to be picked up. datetime string
part_tax_rate The tax rate applied to parts on this RO. number
labor_tax_rate The tax rate applied to labor on this RO. number
sublet_tax_rate The tax rate applied to sublets on this RO. number
hazmat_tax_rate The tax rate applied to hazmats and fees on this RO. number
taxable Determines if tax rates will apply on this RO. boolean
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags
customer_source The marketing source of the customer for this RO. Example: "Repeat", "Referral", "Website", etc string
supply_fee_cents The shop supplies fee in cents. If and only if null, the supply fee for this RO should instead be computed by the settings in the associated shop (repair_order.shop_id). If non-null, this value should be used as the supply fee. This value is taxed as a part. number
part_discount_percentage The amount in percent that parts are discounted on this RO (ex: 7.55%), subtracted from the parts subtotal before tax. This will be null if part_discount_cents is non-null. number
labor_discount_percentage The amount in percent labor is discounted on this RO (ex: 7.55%), subtracted from the labor subtotal before tax. This will be null if labor_discount_cents is non-null. number
services[completed] True if the service has been marked as completed by a staff member, false otherwise. boolean
services[labor_rate_cents] The rate in cents that labor on this service is charged at. number
services[canned_job_id] A foreign key which points to a CannedJob.id. Represents the canned job assigned to this specific service item. number
services[comment] Service comments. text
services[completed_at] The datetime the service was marked completed datetime string
services[last_completed_at] The datetime the service was last marked completed. This may occur if the service had been marked completed then restarted and marked completed again. datetime string
labors[technician_id] A foreign key which points to a Staff.id. Represents the technician assigned to this specific labor item. number
labors[taxable] Determines if labor tax rate will be applied to this labor. boolean
parts[quoted_price_cents] The price of this part that is being sold to the customer in cents per unit. number
parts[cost_cents] The wholesale cost of this part to the shop in cents per unit. number
parts[part_inventory_id] A foreign key which points to an Inventory.id. Represents the associated inventory and quantity information for this part. number
parts[quantity] The number of units this part line item represents. number
parts[taxable] Determines if part tax rate will be applied to this part. boolean
hazmats[fee_cents] The price of this fee or hazmat in cents per unit. number
hazmats[quantity] The number of units. number
hazmats[taxable] Determines if hazmat tax rate will be applied to this hazmat. boolean
sublets[price_cents] The price in cents of sublet being sold to customer. number
sublets[cost_cents] The amount in cents paid to provider for services. number
sublets[provider] The name of the entity providing services for sublet. string
sublets[invoice_number] A string which identifies invoice from provider. string
sublets[invoice_date] The date when the invoice from provider was created. datetime string
sublets[taxable] Determines if sublet tax rate will be applied to this sublet. boolean
sublets[vendor_id] A foreign key which points to a Vendor.id. Represents a vendor associated with this sublet item. number
inspections[name] The name of this inspection as it appears on the RO. string
inspections[state] One of "yellow", "green", "unchecked", "red". More states may be added. string
inspections[detail] Optional staff-entered details about the results of this inspection. string
payments[payment_type] The display name of the payment type. Payment types are customizable for each shop. Examples: "Other", "Credit Card", "Check", "Cash", "Credit Card - Visa", and "Other - Warranty". string
payments[payment_type_details] An object containing the type and name of the payment type. Example: { type: "Credit Card", name: "Mastercard" }. The type is always present, but the name could be null or blank. object
payments[notes] Staff-entered notes about this payment. string
payments[amount_cents] The total payment amount, in cents. number
label[text] The description of the label. string
label[color_code] The color code of which the label is represented. string

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892772
ETag: W/"9fc0f9d754c3f6d17aedcbfc845a99a8"
X-Request-Id: 183206c7-47e7-4c13-9a73-a06c7ba24885
X-Runtime: 0.021526
Content-Length: 757

Body

{
  "id": 2,
  "created_at": "2022-06-10T20:25:12Z",
  "updated_at": "2022-06-10T20:25:12Z",
  "number": 11341,
  "odometer": 90321,
  "odometer_out": null,
  "state": "estimate",
  "customer_id": 3,
  "technician_id": 1,
  "advisor_id": 2,
  "vehicle_id": 1,
  "detail": "Key tag 84, customer waiting",
  "preferred_contact_type": "Text",
  "part_discount_cents": null,
  "labor_discount_cents": null,
  "shop_id": 2,
  "status_id": null,
  "taxable": true,
  "customer_source": "Repeat",
  "supply_fee_cents": 3250,
  "part_discount_percentage": null,
  "labor_discount_percentage": null,
  "started_at": null,
  "closed_at": null,
  "picked_up_at": null,
  "due_in_at": "2022-06-13T20:25:12Z",
  "due_out_at": null,
  "part_tax_rate": 0.0,
  "labor_tax_rate": 0.0,
  "hazmat_tax_rate": 0.0,
  "sublet_tax_rate": 0.0,
  "services": [

  ],
  "payments": [

  ],
  "integrator_tags": [

  ],
  "label": null
}

Gp Exceptions

Get a list of all gp exceptions

Endpoint

GET api/v1/tenants/:tenant_id/gp_exceptions

Request

Route

GET api/v1/tenants/1/gp_exceptions

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 7a1a9989-a9b1-4033-ab73-be7c94cbd386
X-Api-Secret: uH-MQ0RoyGoJ0h0ua8-5DgxRgFhqAM-blfW_pPhJZDs
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/gp_exceptions" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 7a1a9989-a9b1-4033-ab73-be7c94cbd386" \
	-H "X-Api-Secret: uH-MQ0RoyGoJ0h0ua8-5DgxRgFhqAM-blfW_pPhJZDs"

Response

Simulated Response

Response Fields

Name Description type
shop_id A foreign key that points to the Shop this GP Exception belongs to. number
percent The percent markup. Example: 24.5 would be 24.5%. number

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892775
ETag: W/"e6d7d051d6c36b50fa7fc31f2f839ae0"
X-Request-Id: e3b44945-eaee-44d4-852c-dac99f494da3
X-Runtime: 0.020825
Content-Length: 413

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:25:15Z",
      "updated_at": "2022-06-10T20:25:15Z",
      "name": "Fake Gp Exception Name",
      "shop_id": 2,
      "percent": 12.3,
      "integrator_tags": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:25:15Z",
          "updated_at": "2022-06-10T20:25:15Z",
          "taggable_type": "GpException",
          "taggable_id": 1,
          "name": "tag_name",
          "value": "tag_value"
        }
      ]
    }
  ],
  "limit": 1,
  "limited": false,
  "total_count": 1,
  "current_page": 1,
  "total_pages": 1
}

Get a specific gp exception by ID

Endpoint

GET api/v1/tenants/:tenant_id/gp_exceptions/:id

Request

Route

GET api/v1/tenants/1/gp_exceptions/1

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 27220053-61bf-4f67-af5a-efcf1838fca4
X-Api-Secret: 2svHKto376D3bPbUEiSjXKMODJfboqyh7hnrGmZfkYg
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/gp_exceptions/1" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 27220053-61bf-4f67-af5a-efcf1838fca4" \
	-H "X-Api-Secret: 2svHKto376D3bPbUEiSjXKMODJfboqyh7hnrGmZfkYg"

Response

Simulated Response

Response Fields

Name Description type
shop_id A foreign key that points to the Shop this GP Exception belongs to. number
percent The percent markup. Example: 24.5 would be 24.5%. number

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892777
ETag: W/"b9de147d01a4046c2add435a682b2535"
X-Request-Id: 0270c0ae-a903-4894-a1a3-aae842f19fb8
X-Runtime: 0.008773
Content-Length: 324

Body

{
  "id": 1,
  "created_at": "2022-06-10T20:25:17Z",
  "updated_at": "2022-06-10T20:25:17Z",
  "name": "Fake Gp Exception Name",
  "shop_id": 2,
  "percent": 12.3,
  "integrator_tags": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:25:17Z",
      "updated_at": "2022-06-10T20:25:17Z",
      "taggable_type": "GpException",
      "taggable_id": 1,
      "name": "tag_name",
      "value": "tag_value"
    }
  ]
}

Integrator Tags

Create an integrator tag

Endpoint

POST api/v1/tenants/:tenant_id/integrator_tags

Parameters

Name Description type
taggable_type required type of the entity to be tagged. [Appointment, Assignment, CannedJob, Category, Customer, GpException, Inventory, Payment, PaymentTransaction, PurchaseRecord, Recommendation, RepairOrder, Shop, Staff, Status, Vehicle, Vendor ] string
taggable_id required Entity ID number
name required Tag name string
value required Tag value string

Request

Route

POST api/v1/tenants/1/integrator_tags

Headers

Accept: application/json
X-Api-Partner-Id: af757195-ed6b-4851-b732-b4ec8d3ebe4a
X-Api-Secret: PkPh6uQ7Mp4S72DcoQXhVfzbFkLezW1CV8bCcZHr1xc
Content-Type: application/json
Host: example.org
Cookie: 

Body

{
  "taggable_type": "Customer",
  "taggable_id": 1,
  "name": "TagName",
  "value": "ABC123"
}

cURL

curl "https://api.shop-ware.com/api/v1/tenants/1/integrator_tags" -d '{"taggable_type":"Customer","taggable_id":1,"name":"TagName","value":"ABC123"}' -X POST \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: af757195-ed6b-4851-b732-b4ec8d3ebe4a" \
	-H "X-Api-Secret: PkPh6uQ7Mp4S72DcoQXhVfzbFkLezW1CV8bCcZHr1xc" \
	-H "Content-Type: application/json"

Response

Simulated Response

Response Fields

Name Description type
taggable_type Type of the entity which has been tagged string
taggable_id ID of the entity which has been tagged integer
name The name of the tag string
value The value of the tag string

Status

201

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Location: http://example.org/api/v1/tenants/1/integrator_tags/3
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892784
ETag: W/"3d741881755313c86ee28e756da907b1"
X-Request-Id: 0bbbb776-0607-4f2e-abf0-f9c4ee028fe0
X-Runtime: 0.015310
Content-Length: 157

Body

{
  "id": 3,
  "created_at": "2022-06-10T20:25:24Z",
  "updated_at": "2022-06-10T20:25:24Z",
  "taggable_type": "Customer",
  "taggable_id": 1,
  "name": "TagName",
  "value": "ABC123"
}

Delete an integrator tag by ID

Endpoint

DELETE api/v1/tenants/:tenant_id/integrator_tags/:id

Request

Route

DELETE api/v1/tenants/1/integrator_tags/2

Headers

Accept: application/json
X-Api-Partner-Id: 3c64c52f-7361-4b89-aae3-98e0ba18cf28
X-Api-Secret: fzrgB0GZCZA9Y9WaPeiiFpCPHugwfqCiJcyG8N1V4NU
Host: example.org
Content-Type: application/x-www-form-urlencoded
Cookie: 

cURL

curl "https://api.shop-ware.com/api/v1/tenants/1/integrator_tags/2" -d '' -X DELETE \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 3c64c52f-7361-4b89-aae3-98e0ba18cf28" \
	-H "X-Api-Secret: fzrgB0GZCZA9Y9WaPeiiFpCPHugwfqCiJcyG8N1V4NU" \
	-H "Content-Type: application/x-www-form-urlencoded"

Response

Simulated Response

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892788
ETag: W/"44136fa355b3678a1146ad16f7e8649e"
X-Request-Id: b513b961-2532-44d3-a113-7f885d91da9f
X-Runtime: 0.012164
Content-Length: 2

Body

{
}

Get a list of all integrator tags

Endpoint

GET api/v1/tenants/:tenant_id/integrator_tags

Request

Route

GET api/v1/tenants/1/integrator_tags

Headers

Accept: application/json
X-Api-Partner-Id: a3d89077-eb08-4d5f-a03b-1c968a48870d
X-Api-Secret: wGufX_jqWop0HtbgNtikIHpyXNpM8VMFPXUT03rRd1U
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/integrator_tags" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: a3d89077-eb08-4d5f-a03b-1c968a48870d" \
	-H "X-Api-Secret: wGufX_jqWop0HtbgNtikIHpyXNpM8VMFPXUT03rRd1U"

Response

Simulated Response

Response Fields

Name Description type
taggable_type Type of the entity which has been tagged string
taggable_id ID of the entity which has been tagged integer
name The name of the tag string
value The value of the tag string

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892779
ETag: W/"dd0613f0a64104812123a51257cb0e84"
X-Request-Id: 27e373fd-6b82-4cf7-9201-68f26777f808
X-Runtime: 0.011836
Content-Length: 408

Body

{
  "results": [
    {
      "id": 2,
      "created_at": "2022-06-10T20:25:19Z",
      "updated_at": "2022-06-10T20:25:19Z",
      "taggable_type": "Shop",
      "taggable_id": 1,
      "name": "tag_name",
      "value": "tag_value"
    },
    {
      "id": 1,
      "created_at": "2022-06-10T20:25:19Z",
      "updated_at": "2022-06-10T20:25:19Z",
      "taggable_type": "Customer",
      "taggable_id": 1,
      "name": "tag_name",
      "value": "tag_value"
    }
  ],
  "limit": 2,
  "limited": false,
  "total_count": 2,
  "current_page": 1,
  "total_pages": 1
}

Get an integrator tag by ID

Endpoint

GET api/v1/tenants/:tenant_id/integrator_tags/:id

Request

Route

GET api/v1/tenants/1/integrator_tags/2

Headers

Accept: application/json
X-Api-Partner-Id: db3128e8-9ec7-4f02-ae48-8a043f8036cf
X-Api-Secret: e-NApOyCi5B4tB-1ka2RSBQkz0e3HjHr6biJHMBAx30
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/integrator_tags/2" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: db3128e8-9ec7-4f02-ae48-8a043f8036cf" \
	-H "X-Api-Secret: e-NApOyCi5B4tB-1ka2RSBQkz0e3HjHr6biJHMBAx30"

Response

Simulated Response

Response Fields

Name Description type
taggable_type Type of the entity which has been tagged string
taggable_id ID of the entity which has been tagged integer
name The name of the tag string
value The value of the tag string

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892781
ETag: W/"f1c7d3ed1b69d94accb8b849eaad8da8"
X-Request-Id: 325d8f05-d731-487f-817f-e1444b8fd4ed
X-Runtime: 0.007443
Content-Length: 157

Body

{
  "id": 2,
  "created_at": "2022-06-10T20:25:21Z",
  "updated_at": "2022-06-10T20:25:21Z",
  "taggable_type": "Shop",
  "taggable_id": 1,
  "name": "tag_name",
  "value": "tag_value"
}

Update an integrator tag by ID

Endpoint

PUT api/v1/tenants/:tenant_id/integrator_tags/:id

Parameters

Name Description type
taggable_type type of the entity to be tagged. [Appointment, Assignment, CannedJob, Category, Customer, GpException, Inventory, Payment, PaymentTransaction, PurchaseRecord, Recommendation, RepairOrder, Shop, Staff, Status, Vehicle, Vendor ] string
taggable_id Entity ID string
name Tag name string
value Tag value string

Request

Route

PUT api/v1/tenants/1/integrator_tags/2

Headers

Accept: application/json
X-Api-Partner-Id: 060fec15-2541-4a2d-b743-63612dde6848
X-Api-Secret: TbpJ_hEfDqpp6aXpVcFVDrO1G5Y2RKhz7F971_U2TQM
Content-Type: application/json
Host: example.org
Cookie: 

Body

{
  "taggable_type": "Customer",
  "taggable_id": 1,
  "name": "TagName",
  "value": "ABC123"
}

cURL

curl "https://api.shop-ware.com/api/v1/tenants/1/integrator_tags/2" -d '{"taggable_type":"Customer","taggable_id":1,"name":"TagName","value":"ABC123"}' -X PUT \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 060fec15-2541-4a2d-b743-63612dde6848" \
	-H "X-Api-Secret: TbpJ_hEfDqpp6aXpVcFVDrO1G5Y2RKhz7F971_U2TQM" \
	-H "Content-Type: application/json"

Response

Simulated Response

Response Fields

Name Description type
taggable_type Type of the entity which has been tagged string
taggable_id ID of the entity which has been tagged integer
name The name of the tag string
value The value of the tag string

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892786
ETag: W/"ba13d6e5331d5ef5d036d89a893b751f"
X-Request-Id: c0ff1ba7-d5ce-44a2-9a0d-953c96811e7b
X-Runtime: 0.016002
Content-Length: 157

Body

{
  "id": 2,
  "created_at": "2022-06-10T20:25:26Z",
  "updated_at": "2022-06-10T20:25:26Z",
  "taggable_type": "Customer",
  "taggable_id": 1,
  "name": "TagName",
  "value": "ABC123"
}

Inventory

Get a list of all inventory

Endpoint

GET api/v1/tenants/:tenant_id/inventories

Request

Route

GET api/v1/tenants/1/inventories

Headers

Accept: application/json
X-Api-Partner-Id: 714764e3-307d-4fef-b1fa-a2efae3e846b
X-Api-Secret: wWEonhp1K67nSEruIxhdQgxp3Tu2NGMdpdK7An92HRw
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/inventories" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 714764e3-307d-4fef-b1fa-a2efae3e846b" \
	-H "X-Api-Secret: wWEonhp1K67nSEruIxhdQgxp3Tu2NGMdpdK7An92HRw"

Response

Simulated Response

Response Fields

Name Description type
type One of 'PartInventory' or 'CoreInventory'. More types may be added. PartInventory may have an associated CoreInventory, which represents the core associated with an inventory item. string
list_price_cents The list price in cents per unit. number
cost_cents The cost of this inventory item to the shop, in cents per unit. number
gp_price_cents The GP Optimized price, in cents per unit. number
gp_optimizer_active true if the GP Optimizer is enabled for this inventory item, false otherwise. boolean
quantity_on_hand The number of units of this inventory item that are present in the shop and not allocated to an in-progress job. number
min_stock The minimum number of units to stock. number
max_stock The maximum number of units to stock. number
hazmat_rating One of 'caution', 'danger', 'warning', or 'none'. More values may be added. string
location The physical location in the shop of this inventory, such as shelf or bin number. number
misc_info Miscellaneous staff-entered information about this inventory. string
part_terminology_id Part Terminology Code from AAIA Parts Classification Database. This value is populated from eComm parts orders. string
core_inventory_id A foreign key which points to a CoreInventory.id. Represents a core associated with this inventory item. number
tags A list of free-form tags that a staff member has applied to this inventory item. array of strings
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags
primary_vendor_id A foreign key which points to the primary vendor ID. Represents the primary vendor associated with the inventory item. number
last_vendor_id A foreign key which points to the last vendor ID. Represents the last vendor associated with the inventory item. number
shop_id A foreign key that points to the Shop ID that this Inventory belongs to. integer
gp_exception_id A foreign key that points to the GP Exception that fixes the sell price markup of this Inventory resource, or null if none. number
partstech_part_id An identifier assigned to this inventory by PartsTech. string
quantity_in_progress The number of units of this inventory item allocated to in-progress work orders. number
quantity_needed The number of units this inventory item needed for in-progress work orders. number
quantity_ordered The number of units of this inventory item ordered for in-progress work orders. number
quantity_ordered_for_stock The number of units of this inventory item ordered for stock. number
quantity_returned The number of units of this inventory item currently on return orders. number

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892791
ETag: W/"0a22edf652ddb27c003bbc319b2308fe"
X-Request-Id: 880b602e-d0da-462a-a3a9-bdbc47393bda
X-Runtime: 0.029776
Content-Length: 1009

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:25:30Z",
      "updated_at": "2022-06-10T20:25:30Z",
      "type": "PartInventory",
      "brand": "Honda",
      "description": "Throttle Body Gasket",
      "number": "16176-RTA-004",
      "list_price_cents": 439,
      "cost_cents": 179,
      "gp_price_cents": 757,
      "quantity_on_hand": 1.0,
      "location": "C4",
      "hazmat_rating": "none",
      "misc_info": "Back of shelf, left side",
      "part_terminology_id": "14999",
      "core_inventory_id": null,
      "bosch_extra_points": 0,
      "primary_vendor_id": 1,
      "last_vendor_id": 2,
      "shop_id": 2,
      "gp_exception_id": 1,
      "partstech_part_id": "A1B2C3",
      "quantity_in_progress": 0.0,
      "quantity_needed": 0.0,
      "quantity_ordered": 0.0,
      "quantity_ordered_for_stock": 0.0,
      "quantity_returned": 0.0,
      "min_stock": 1.0,
      "max_stock": 2.0,
      "gp_optimizer_active": true,
      "tags": [
        "a4",
        "taxi_part"
      ],
      "integrator_tags": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:25:30Z",
          "updated_at": "2022-06-10T20:25:30Z",
          "taggable_type": "Inventory",
          "taggable_id": 1,
          "name": "tag_name",
          "value": "tag_value"
        }
      ]
    }
  ],
  "limit": 1,
  "limited": false,
  "total_count": 1,
  "current_page": 1,
  "total_pages": 1
}

Get specific inventory by ID

Endpoint

GET api/v1/tenants/:tenant_id/inventories/:id

Request

Route

GET api/v1/tenants/1/inventories/1

Headers

Accept: application/json
X-Api-Partner-Id: d2d32543-6f52-49a7-8a0d-0205b6d5dc20
X-Api-Secret: UKvuPaS0ZoNcTCb0F7RvIcB2KuXjy6jKOHp1cbX56KU
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/inventories/1" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: d2d32543-6f52-49a7-8a0d-0205b6d5dc20" \
	-H "X-Api-Secret: UKvuPaS0ZoNcTCb0F7RvIcB2KuXjy6jKOHp1cbX56KU"

Response

Simulated Response

Response Fields

Name Description type
type One of 'PartInventory' or 'CoreInventory'. More types may be added. PartInventory may have an associated CoreInventory, which represents the core associated with an inventory item. string
list_price_cents The list price in cents per unit. number
cost_cents The cost of this inventory item to the shop, in cents per unit. number
gp_price_cents The GP Optimized price, in cents per unit. number
gp_optimizer_active true if the GP Optimizer is enabled for this inventory item, false otherwise. boolean
quantity_on_hand The number of units of this inventory item that are present in the shop and not allocated to an in-progress job. number
min_stock The minimum number of units to stock. number
max_stock The maximum number of units to stock. number
hazmat_rating One of 'caution', 'danger', 'warning', or 'none'. More values may be added. string
location The physical location in the shop of this inventory, such as shelf or bin number. number
misc_info Miscellaneous staff-entered information about this inventory. string
part_terminology_id Part Terminology Code from AAIA Parts Classification Database. This value is populated from eComm parts orders. string
core_inventory_id A foreign key which points to a CoreInventory.id. Represents a core associated with this inventory item. number
tags A list of free-form tags that a staff member has applied to this inventory item. array of strings
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags
primary_vendor_id A foreign key which points to the primary vendor ID. Represents the primary vendor associated with the inventory item. number
last_vendor_id A foreign key which points to the last vendor ID. Represents the last vendor associated with the inventory item. number
shop_id A foreign key that points to the Shop ID that this Inventory belongs to. integer
gp_exception_id A foreign key that points to the GP Exception that fixes the sell price markup of this Inventory resource, or null if none. number
partstech_part_id An identifier assigned to this inventory by PartsTech. string
quantity_in_progress The number of units of this inventory item allocated to in-progress work orders. number
quantity_needed The number of units this inventory item needed for in-progress work orders. number
quantity_ordered The number of units of this inventory item ordered for in-progress work orders. number
quantity_ordered_for_stock The number of units of this inventory item ordered for stock. number
quantity_returned The number of units of this inventory item currently on return orders. number

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892793
ETag: W/"71ee82ba1fef8f0358da51d7da2d80af"
X-Request-Id: 65b838e9-f619-4dd2-824a-2ba606e0f9b6
X-Runtime: 0.014014
Content-Length: 920

Body

{
  "id": 1,
  "created_at": "2022-06-10T20:25:33Z",
  "updated_at": "2022-06-10T20:25:33Z",
  "type": "PartInventory",
  "brand": "Honda",
  "description": "Throttle Body Gasket",
  "number": "16176-RTA-004",
  "list_price_cents": 439,
  "cost_cents": 179,
  "gp_price_cents": 757,
  "quantity_on_hand": 1.0,
  "location": "C4",
  "hazmat_rating": "none",
  "misc_info": "Back of shelf, left side",
  "part_terminology_id": "14999",
  "core_inventory_id": null,
  "bosch_extra_points": 0,
  "primary_vendor_id": 1,
  "last_vendor_id": 2,
  "shop_id": 2,
  "gp_exception_id": 1,
  "partstech_part_id": "A1B2C3",
  "quantity_in_progress": 0.0,
  "quantity_needed": 0.0,
  "quantity_ordered": 0.0,
  "quantity_ordered_for_stock": 0.0,
  "quantity_returned": 0.0,
  "min_stock": 1.0,
  "max_stock": 2.0,
  "gp_optimizer_active": true,
  "tags": [
    "a4",
    "taxi_part"
  ],
  "integrator_tags": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:25:33Z",
      "updated_at": "2022-06-10T20:25:33Z",
      "taggable_type": "Inventory",
      "taggable_id": 1,
      "name": "tag_name",
      "value": "tag_value"
    }
  ]
}

Notes

Create a note

Endpoint

POST api/v1/tenants/:tenant_id/notes

Parameters

Name Description type
repair_order_id required A foreign key which points to a RepairOrder.id. Represents the repair order related to this note. integer
description required The description of the note. text

Request

Route

POST api/v1/tenants/1/notes

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 21672cf4-9911-43ff-abf0-43443f472eac
X-Api-Secret: govYAn_wtoOIS97CHwBiZdcVFotN9VgV_3YmOOWE1dQ
Host: example.org
Cookie: 

Body

{
  "repair_order_id": 2,
  "description": "New comment"
}

cURL

curl "https://api.shop-ware.com/api/v1/tenants/1/notes" -d '{"repair_order_id":2,"description":"New comment"}' -X POST \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 21672cf4-9911-43ff-abf0-43443f472eac" \
	-H "X-Api-Secret: govYAn_wtoOIS97CHwBiZdcVFotN9VgV_3YmOOWE1dQ"

Response

Simulated Response

Response Fields

Name Description type
id Unique identifier of this record number
description The description of the note text
repair_order_id A foreign key that points to the RepairOrder that this Note belongs to. integer

Status

201

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892801
ETag: W/"14af8df848c53351184073ddc926b3a6"
X-Request-Id: d6272748-b58f-43b1-9897-725ae0211879
X-Runtime: 0.013237
Content-Length: 128

Body

{
  "id": 2,
  "created_at": "2022-06-10T20:25:41Z",
  "updated_at": "2022-06-10T20:25:41Z",
  "description": "New comment",
  "repair_order_id": 2
}

Get a list of all notes

Endpoint

GET api/v1/tenants/:tenant_id/notes

Parameters

Name Description type
repair_order_id A foreign key which points to a RepairOrder.id. Represents the repair order related to this note. integer

Request

Route

GET api/v1/tenants/1/notes

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: af5cdf53-8c3c-4859-bdf3-64b9854604cd
X-Api-Secret: obN0Bx0yOQxOUGFlxxdIQyaraqkgyF6FHBzHlddhcCg
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/notes" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: af5cdf53-8c3c-4859-bdf3-64b9854604cd" \
	-H "X-Api-Secret: obN0Bx0yOQxOUGFlxxdIQyaraqkgyF6FHBzHlddhcCg"

Response

Simulated Response

Response Fields

Name Description type
id Unique identifier of this record number
description The description of the note text
repair_order_id A foreign key that points to the RepairOrder that this Note belongs to. integer

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892795
ETag: W/"affa625f765d8ecb9c075768f6912735"
X-Request-Id: f6ed3c70-9cae-48e9-ac84-2d63dccb061a
X-Runtime: 0.009618
Content-Length: 225

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:25:35Z",
      "updated_at": "2022-06-10T20:25:35Z",
      "description": "This is a test note",
      "repair_order_id": 1
    }
  ],
  "limit": 1,
  "limited": false,
  "total_count": 1,
  "current_page": 1,
  "total_pages": 1
}

Request

Route

GET api/v1/tenants/1/notes?repair_order_id=1

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: af5cdf53-8c3c-4859-bdf3-64b9854604cd
X-Api-Secret: obN0Bx0yOQxOUGFlxxdIQyaraqkgyF6FHBzHlddhcCg
Host: example.org
Cookie: 

Query Parameters

repair_order_id=1

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/notes?repair_order_id=1" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: af5cdf53-8c3c-4859-bdf3-64b9854604cd" \
	-H "X-Api-Secret: obN0Bx0yOQxOUGFlxxdIQyaraqkgyF6FHBzHlddhcCg"

Response

Simulated Response

Response Fields

Name Description type
id Unique identifier of this record number
description The description of the note text
repair_order_id A foreign key that points to the RepairOrder that this Note belongs to. integer

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892795
ETag: W/"affa625f765d8ecb9c075768f6912735"
X-Request-Id: d75ce85e-8922-4a87-9b58-d40d968ba0f7
X-Runtime: 0.007420
Content-Length: 225

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:25:35Z",
      "updated_at": "2022-06-10T20:25:35Z",
      "description": "This is a test note",
      "repair_order_id": 1
    }
  ],
  "limit": 1,
  "limited": false,
  "total_count": 1,
  "current_page": 1,
  "total_pages": 1
}

Get a specific note by ID

Endpoint

GET api/v1/tenants/:tenant_id/notes/:id

Request

Route

GET api/v1/tenants/1/notes/1

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 54b7b9b3-1e5a-4030-9428-c3f5e726074b
X-Api-Secret: sRiD4pD3ItaYRMJLEG6eCE5q1LL6egzvyYveJV3-wb0
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/notes/1" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 54b7b9b3-1e5a-4030-9428-c3f5e726074b" \
	-H "X-Api-Secret: sRiD4pD3ItaYRMJLEG6eCE5q1LL6egzvyYveJV3-wb0"

Response

Simulated Response

Response Fields

Name Description type
id Unique identifier of this record number
description The description of the note text
repair_order_id A foreign key that points to the RepairOrder that this Note belongs to. integer

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892797
ETag: W/"6ae63d7089e6088552225634d6310d05"
X-Request-Id: e1f948f1-dca0-4619-9a04-c74614c15afd
X-Runtime: 0.009283
Content-Length: 136

Body

{
  "id": 1,
  "created_at": "2022-06-10T20:25:37Z",
  "updated_at": "2022-06-10T20:25:37Z",
  "description": "This is a test note",
  "repair_order_id": 1
}

Update a specific note

Endpoint

PUT api/v1/tenants/:tenant_id/notes/:id

Parameters

Name Description type
repair_order_id A foreign key which points to a RepairOrder.id. Represents the repair order related to this note. integer
description The description of the note. text

Request

Route

PUT api/v1/tenants/1/notes/1

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 78f131a9-3e86-4deb-97a1-64b1f3e79ea2
X-Api-Secret: M21E4sVTLHRW3qsMUPlabbUxK3925Ke8ZzSijjySLSo
Host: example.org
Cookie: 

Body

{
  "description": "New Comment",
  "repair_order_id": 2
}

cURL

curl "https://api.shop-ware.com/api/v1/tenants/1/notes/1" -d '{"description":"New Comment","repair_order_id":2}' -X PUT \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 78f131a9-3e86-4deb-97a1-64b1f3e79ea2" \
	-H "X-Api-Secret: M21E4sVTLHRW3qsMUPlabbUxK3925Ke8ZzSijjySLSo"

Response

Simulated Response

Response Fields

Name Description type
id Unique identifier of this record number
description The description of the note text
repair_order_id A foreign key that points to the RepairOrder that this Note belongs to. integer

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1601571960
ETag: W/"239a9cc4b9a3069be6806c50ada65f00"
X-Request-Id: 93a9b41c-ab6e-4fc4-89fb-1717ae0aec2a
X-Runtime: 0.015379
Content-Length: 128

Body

{
  "id": 1,
  "created_at": "2022-06-10T20:25:39Z",
  "updated_at": "2020-10-01T17:05:00Z",
  "description": "New Comment",
  "repair_order_id": 2
}

Past Recommendations

Get a list of all past recommendations

Endpoint

GET api/v1/tenants/:tenant_id/past_recommendations

Parameters

Name Description
done Filter response to include only Past Recommendations that are marked done

Request

Route

GET api/v1/tenants/1/past_recommendations

Headers

Accept: application/json
X-Api-Partner-Id: b1f7fed4-4e2d-44e2-8d01-61233b8761f6
X-Api-Secret: PvN2vUiCRK4PVPrNoVAwK8OEJaeceHTTf8uu5o4oYi0
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/past_recommendations" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: b1f7fed4-4e2d-44e2-8d01-61233b8761f6" \
	-H "X-Api-Secret: PvN2vUiCRK4PVPrNoVAwK8OEJaeceHTTf8uu5o4oYi0"

Response

Simulated Response

Response Fields

Name Description type
description The title of the previously recommended service string
approved True if the past recommendation has since been approved by the customer, false if it has been declined, and null otherwise. boolean
approver_id 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). integer
approval_at Date the recommendation was approved if it has been approved, null otherwise. datetime string
approval_type Type of approval: one of "customer" (Approved by customer), "email" (Approved by email), "estimate" (Approved in estimate), "person" (Approved in person), "phone" (Approved by phone). Null if unapproved or declined. string
imported True if the past recommendation has been added as a service on an Repair Order, false otherwise. All imported=true past recommendations will also be done=true, but not all done=true past recommendations will be imported=true. boolean
vehicle_id A foreign key that points to a Vehicle ID. This represents the vehicle that this service was recommended for. integer
done True if the past recommendation has been either sold to the customer, or has been manually marked as done by a staff member (for example, work since performed by another shop). These past recommendations will no longer be presented to the vehicle owner on future visits. boolean
recommendation_id A foreign key which points to the Recommendation that was unsold at the time that the original source repair order was closed, resulting in the creation of this past recommendation. integer

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892804
ETag: W/"85a490a8683d3bbf01d6d9d6cf98ea9c"
X-Request-Id: 18e2c9cd-cce4-4da9-acb6-1b379989f28d
X-Runtime: 0.010139
Content-Length: 607

Body

{
  "results": [
    {
      "id": 2,
      "created_at": "2022-06-10T20:25:44Z",
      "updated_at": "2022-06-10T20:25:44Z",
      "description": "Rotate tires",
      "approved": false,
      "approver_id": null,
      "approval_type": null,
      "imported": false,
      "vehicle_id": 1,
      "done": false,
      "recommendation_id": 1,
      "approval_at": null
    },
    {
      "id": 1,
      "created_at": "2022-06-10T20:25:44Z",
      "updated_at": "2022-06-10T20:25:44Z",
      "description": "Change oil",
      "approved": true,
      "approver_id": 1,
      "approval_type": "phone",
      "imported": true,
      "vehicle_id": 1,
      "done": true,
      "recommendation_id": 1,
      "approval_at": "2022-06-09T20:25:44Z"
    }
  ],
  "limit": 2,
  "limited": false,
  "total_count": 2,
  "current_page": 1,
  "total_pages": 1
}

Request

Route

GET api/v1/tenants/1/past_recommendations?done=true

Headers

Accept: application/json
X-Api-Partner-Id: b1f7fed4-4e2d-44e2-8d01-61233b8761f6
X-Api-Secret: PvN2vUiCRK4PVPrNoVAwK8OEJaeceHTTf8uu5o4oYi0
Host: example.org
Cookie: 

Query Parameters

done=true

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/past_recommendations?done=true" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: b1f7fed4-4e2d-44e2-8d01-61233b8761f6" \
	-H "X-Api-Secret: PvN2vUiCRK4PVPrNoVAwK8OEJaeceHTTf8uu5o4oYi0"

Response

Simulated Response

Response Fields

Name Description type
description The title of the previously recommended service string
approved True if the past recommendation has since been approved by the customer, false if it has been declined, and null otherwise. boolean
approver_id 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). integer
approval_at Date the recommendation was approved if it has been approved, null otherwise. datetime string
approval_type Type of approval: one of "customer" (Approved by customer), "email" (Approved by email), "estimate" (Approved in estimate), "person" (Approved in person), "phone" (Approved by phone). Null if unapproved or declined. string
imported True if the past recommendation has been added as a service on an Repair Order, false otherwise. All imported=true past recommendations will also be done=true, but not all done=true past recommendations will be imported=true. boolean
vehicle_id A foreign key that points to a Vehicle ID. This represents the vehicle that this service was recommended for. integer
done True if the past recommendation has been either sold to the customer, or has been manually marked as done by a staff member (for example, work since performed by another shop). These past recommendations will no longer be presented to the vehicle owner on future visits. boolean
recommendation_id A foreign key which points to the Recommendation that was unsold at the time that the original source repair order was closed, resulting in the creation of this past recommendation. integer

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892804
ETag: W/"beeed4cfde96c6a6c539a280aba6c551"
X-Request-Id: 2903ea81-c65a-4672-ac62-0cce3672b2d0
X-Runtime: 0.007406
Content-Length: 354

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:25:44Z",
      "updated_at": "2022-06-10T20:25:44Z",
      "description": "Change oil",
      "approved": true,
      "approver_id": 1,
      "approval_type": "phone",
      "imported": true,
      "vehicle_id": 1,
      "done": true,
      "recommendation_id": 1,
      "approval_at": "2022-06-09T20:25:44Z"
    }
  ],
  "limit": 1,
  "limited": false,
  "total_count": 1,
  "current_page": 1,
  "total_pages": 1
}

Request

Route

GET api/v1/tenants/1/past_recommendations?done=false

Headers

Accept: application/json
X-Api-Partner-Id: b1f7fed4-4e2d-44e2-8d01-61233b8761f6
X-Api-Secret: PvN2vUiCRK4PVPrNoVAwK8OEJaeceHTTf8uu5o4oYi0
Host: example.org
Cookie: 

Query Parameters

done=false

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/past_recommendations?done=false" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: b1f7fed4-4e2d-44e2-8d01-61233b8761f6" \
	-H "X-Api-Secret: PvN2vUiCRK4PVPrNoVAwK8OEJaeceHTTf8uu5o4oYi0"

Response

Simulated Response

Response Fields

Name Description type
description The title of the previously recommended service string
approved True if the past recommendation has since been approved by the customer, false if it has been declined, and null otherwise. boolean
approver_id 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). integer
approval_at Date the recommendation was approved if it has been approved, null otherwise. datetime string
approval_type Type of approval: one of "customer" (Approved by customer), "email" (Approved by email), "estimate" (Approved in estimate), "person" (Approved in person), "phone" (Approved by phone). Null if unapproved or declined. string
imported True if the past recommendation has been added as a service on an Repair Order, false otherwise. All imported=true past recommendations will also be done=true, but not all done=true past recommendations will be imported=true. boolean
vehicle_id A foreign key that points to a Vehicle ID. This represents the vehicle that this service was recommended for. integer
done True if the past recommendation has been either sold to the customer, or has been manually marked as done by a staff member (for example, work since performed by another shop). These past recommendations will no longer be presented to the vehicle owner on future visits. boolean
recommendation_id A foreign key which points to the Recommendation that was unsold at the time that the original source repair order was closed, resulting in the creation of this past recommendation. integer

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892804
ETag: W/"952838cdbc29e95c475d7e9f31acf71c"
X-Request-Id: 9f884ccf-25ac-43e0-b986-c4100b5e274e
X-Runtime: 0.007074
Content-Length: 341

Body

{
  "results": [
    {
      "id": 2,
      "created_at": "2022-06-10T20:25:44Z",
      "updated_at": "2022-06-10T20:25:44Z",
      "description": "Rotate tires",
      "approved": false,
      "approver_id": null,
      "approval_type": null,
      "imported": false,
      "vehicle_id": 1,
      "done": false,
      "recommendation_id": 1,
      "approval_at": null
    }
  ],
  "limit": 1,
  "limited": false,
  "total_count": 1,
  "current_page": 1,
  "total_pages": 1
}

Get a specific past recommendation by ID

Endpoint

GET api/v1/tenants/:tenant_id/past_recommendations/:id

Request

Route

GET api/v1/tenants/1/past_recommendations/1

Headers

Accept: application/json
X-Api-Partner-Id: 8d48f4c2-a27a-4dd6-9198-2325d93bd684
X-Api-Secret: IjctNekr4zWJASM7Memfiw_A8pNqmJJVQmDDEW5mTAM
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/past_recommendations/1" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 8d48f4c2-a27a-4dd6-9198-2325d93bd684" \
	-H "X-Api-Secret: IjctNekr4zWJASM7Memfiw_A8pNqmJJVQmDDEW5mTAM"

Response

Simulated Response

Response Fields

Name Description type
description The title of the previously recommended service string
approved True if the past recommendation has since been approved by the customer, false if it has been declined, and null otherwise. boolean
approver_id 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). integer
approval_at Date the recommendation was approved if it has been approved, null otherwise. datetime string
approval_type Type of approval: one of "customer" (Approved by customer), "email" (Approved by email), "estimate" (Approved in estimate), "person" (Approved in person), "phone" (Approved by phone). Null if unapproved or declined. string
imported True if the past recommendation has been added as a service on an Repair Order, false otherwise. All imported=true past recommendations will also be done=true, but not all done=true past recommendations will be imported=true. boolean
vehicle_id A foreign key that points to a Vehicle ID. This represents the vehicle that this service was recommended for. integer
done True if the past recommendation has been either sold to the customer, or has been manually marked as done by a staff member (for example, work since performed by another shop). These past recommendations will no longer be presented to the vehicle owner on future visits. boolean
recommendation_id A foreign key which points to the Recommendation that was unsold at the time that the original source repair order was closed, resulting in the creation of this past recommendation. integer

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892806
ETag: W/"159f577c8b060141538d411d35d25079"
X-Request-Id: 5f05b880-c3dc-407e-a914-f55843b4ae93
X-Runtime: 0.007399
Content-Length: 265

Body

{
  "id": 1,
  "created_at": "2022-06-10T20:25:46Z",
  "updated_at": "2022-06-10T20:25:46Z",
  "description": "Change oil",
  "approved": true,
  "approver_id": 1,
  "approval_type": "phone",
  "imported": true,
  "vehicle_id": 1,
  "done": true,
  "recommendation_id": 1,
  "approval_at": "2022-06-09T20:25:46Z"
}

Payment Transactions

Get a list of all payment transactions

Endpoint

GET api/v1/tenants/:tenant_id/payment_transactions

Request

Route

GET api/v1/tenants/1/payment_transactions

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 46e84898-201c-4f53-9ba5-0c15e351f3c7
X-Api-Secret: 3UyMZXJKGggkEX9uHmbnvpKyzFGdiqtQ8PqfkyQZB6U
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/payment_transactions" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 46e84898-201c-4f53-9ba5-0c15e351f3c7" \
	-H "X-Api-Secret: 3UyMZXJKGggkEX9uHmbnvpKyzFGdiqtQ8PqfkyQZB6U"

Response

Simulated Response

Response Fields

Name Description type
payment_id A foreign key which points to a Payment.id. Represents the final payment that is associated with this transaction which will appear on the RO and in reporting. It is only created for authorized transactions. string
repair_order_id A foreign key which points to a RepairOrder.id. Represents the RO that this transaction was made against. string
staff_id A foreign key which points to a Staff.id. Represents the staff member who attempted the transaction. string
status The current status of this transaction. One of 'approved', 'retry', 'declined', 'authentication_error', 'invalid_hsn', 'request_error', 'server_error', 'terminal_not_connected_error', 'terminal_in_use_error', 'transaction_cancelled_error', 'pin_debit_not_supported', 'decryption_failure', 'signature_not_supported'. Only 'approved' is a successful status, meaning that the payment transaction was authorized. string
serial_number The HSN of the credit card reader. string
mid The merchant ID that the transaction was made against. string
requested_amount_cents The amount in cents that the user attempted to charge or refund. string
amount_cents The amount that was actually charged or refunded. string
reference_number The unique reference number for this transaction. string
account An obfuscated account number of the payment card. string
name The name on the credit card. string
response_code The raw gateway response code of the transaction. string
response_text A human readable description of the transaction status. string

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892809
ETag: W/"d345701c26e94713197960d6dd236259"
X-Request-Id: d71e75c6-57b0-4433-b92a-fff6f86735ed
X-Runtime: 0.013092
Content-Length: 797

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:25:49Z",
      "updated_at": "2022-06-10T20:25:49Z",
      "payment_id": null,
      "repair_order_id": 1,
      "staff_id": 2,
      "status": "declined",
      "serial_number": "18238PP21557288",
      "mid": "800000000830",
      "requested_amount_cents": 279900,
      "amount_cents": 279900,
      "reference_number": "123849201653",
      "account": "9546981898575454",
      "name": "JOE SMITH",
      "currency": "USD",
      "response_code": "54",
      "response_text": "Wrong expiration",
      "bin_type": null,
      "entry_mode": null,
      "avs_response": "",
      "cvv_response": "N",
      "authorization_code": "PPS010",
      "integrator_tags": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:25:49Z",
          "updated_at": "2022-06-10T20:25:49Z",
          "taggable_type": "PaymentTransaction",
          "taggable_id": 1,
          "name": "tag_name",
          "value": "tag_value"
        }
      ]
    }
  ],
  "limit": 1,
  "limited": false,
  "total_count": 1,
  "current_page": 1,
  "total_pages": 1
}

Get a specific payment transaction by ID

Endpoint

GET api/v1/tenants/:tenant_id/payment_transactions/:id

Request

Route

GET api/v1/tenants/1/payment_transactions/1

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 731734a8-e850-4d9c-ac49-b083953212ce
X-Api-Secret: bTCGH6aeXn0iywQb4GtWQJ-hW3cqmoo_G-46LS6v1gk
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/payment_transactions/1" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 731734a8-e850-4d9c-ac49-b083953212ce" \
	-H "X-Api-Secret: bTCGH6aeXn0iywQb4GtWQJ-hW3cqmoo_G-46LS6v1gk"

Response

Simulated Response

Response Fields

Name Description type
payment_id A foreign key which points to a Payment.id. Represents the final payment that is associated with this transaction which will appear on the RO and in reporting. It is only created for authorized transactions. string
repair_order_id A foreign key which points to a RepairOrder.id. Represents the RO that this transaction was made against. string
staff_id A foreign key which points to a Staff.id. Represents the staff member who attempted the transaction. string
status The current status of this transaction. One of 'approved', 'retry', 'declined', 'authentication_error', 'invalid_hsn', 'request_error', 'server_error', 'terminal_not_connected_error', 'terminal_in_use_error', 'transaction_cancelled_error', 'pin_debit_not_supported', 'decryption_failure', 'signature_not_supported'. Only 'approved' is a successful status, meaning that the payment transaction was authorized. string
serial_number The HSN of the credit card reader. string
mid The merchant ID that the transaction was made against. string
requested_amount_cents The amount in cents that the user attempted to charge or refund. string
amount_cents The amount that was actually charged or refunded. string
reference_number The unique reference number for this transaction. string
account An obfuscated account number of the payment card. string
name The name on the credit card. string
response_code The raw gateway response code of the transaction. string
response_text A human readable description of the transaction status. string

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892811
ETag: W/"aad57f0666a97aa866c96b68ef7baadd"
X-Request-Id: 877e6ae5-4949-4546-8804-bd10b255a441
X-Runtime: 0.011674
Content-Length: 708

Body

{
  "id": 1,
  "created_at": "2022-06-10T20:25:51Z",
  "updated_at": "2022-06-10T20:25:51Z",
  "payment_id": null,
  "repair_order_id": 1,
  "staff_id": 2,
  "status": "declined",
  "serial_number": "18238PP21557288",
  "mid": "800000000830",
  "requested_amount_cents": 279900,
  "amount_cents": 279900,
  "reference_number": "123849201653",
  "account": "9546981898575454",
  "name": "JOE SMITH",
  "currency": "USD",
  "response_code": "54",
  "response_text": "Wrong expiration",
  "bin_type": null,
  "entry_mode": null,
  "avs_response": "",
  "cvv_response": "N",
  "authorization_code": "PPS010",
  "integrator_tags": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:25:51Z",
      "updated_at": "2022-06-10T20:25:51Z",
      "taggable_type": "PaymentTransaction",
      "taggable_id": 1,
      "name": "tag_name",
      "value": "tag_value"
    }
  ]
}

Payments

Create a payment

Endpoint

POST api/v1/tenants/:tenant_id/payments

Parameters

Name Description type
amount_cents required The amount of the payment in cents. number
payment_type_details[type] required One of 'Credit Card', 'Check', 'Cash', 'Other'. string
payment_type_details[name] For types 'Credit Card' and 'Other', this attribute may be set to an alphanumeric string that is at most 25 characters in length. For example, 'Visa' or 'Promo Coupon'. string
repair_order_id required A foreign key that points to a RepairOrder.id Represents the RepairOrder that this payment will be applied to. number
notes Notes about the payment string

Request

Route

POST api/v1/tenants/1/payments

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 05ee57d7-eba6-4fee-9c12-f19728c98330
X-Api-Secret: AVKpwYlOOUq1tHWTGm0NA1g0H2eZkFPFrQ6uMROFda8
Host: example.org
Cookie: 

Body

{
  "amount_cents": 21849,
  "payment_type_details": {
    "type": "Credit Card",
    "name": "Visa"
  },
  "repair_order_id": 1,
  "notes": "Customer made partial payment"
}

cURL

curl "https://api.shop-ware.com/api/v1/tenants/1/payments" -d '{"amount_cents":21849,"payment_type_details":{"type":"Credit Card","name":"Visa"},"repair_order_id":1,"notes":"Customer made partial payment"}' -X POST \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 05ee57d7-eba6-4fee-9c12-f19728c98330" \
	-H "X-Api-Secret: AVKpwYlOOUq1tHWTGm0NA1g0H2eZkFPFrQ6uMROFda8"

Response

Simulated Response

Response Fields

Name Description type
id Unique identifier of this record number
repair_order_id ID of the associated repair order number
payment_type Type of the payment and the name associated. Example: 'Credit Card - VISA' string
notes Notes about the payment string
amount_cents Amount of the payment, in cents number
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags
payment_type_details[type] Type of the payment: 'Credit Card', 'Check', 'Cash', 'Other' string
payment_type_details[name] Name of the payment type. Only present if type is 'Credit Card' or 'Other'. Must be at must 25 characters and alphanumeric, if present string

Status

201

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892817
ETag: W/"b996dcee44c29ae93a829fea7ef1a109"
X-Request-Id: faa3101a-5327-4070-b049-7fec53d8c40e
X-Runtime: 0.014688
Content-Length: 278

Body

{
  "id": 2,
  "created_at": "2022-06-10T20:25:57Z",
  "updated_at": "2022-06-10T20:25:57Z",
  "repair_order_id": 1,
  "payment_type": "Credit Card - Visa",
  "payment_type_details": {
    "type": "Credit Card",
    "name": "Visa"
  },
  "notes": "Customer made partial payment",
  "amount_cents": 21849,
  "integrator_tags": [

  ]
}

Create a payment with custom type

Endpoint

POST api/v1/tenants/:tenant_id/payments

Parameters

Name Description type
amount_cents required The amount of the payment in cents. number
payment_type_details[type] required One of 'Credit Card', 'Check', 'Cash', 'Other'. string
payment_type_details[name] For types 'Credit Card' and 'Other', this attribute may be set to an alphanumeric string that is at most 25 characters in length. For example, 'Visa' or 'Promo Coupon'. string
repair_order_id required A foreign key that points to a RepairOrder.id Represents the RepairOrder that this payment will be applied to. number
notes Notes about the payment string

Request

Route

POST api/v1/tenants/1/payments

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: eecde45b-8abf-48ac-a670-eba2526f527b
X-Api-Secret: aECHgN0d4ZJjn8NTKk6qWnoENJKXxfNUJUqYA_AVwSE
Host: example.org
Cookie: 

Body

{
  "amount_cents": 99,
  "payment_type_details": {
    "type": "Other",
    "name": "Special Offer"
  },
  "repair_order_id": 1,
  "notes": "Custom payment type note"
}

cURL

curl "https://api.shop-ware.com/api/v1/tenants/1/payments" -d '{"amount_cents":99,"payment_type_details":{"type":"Other","name":"Special Offer"},"repair_order_id":1,"notes":"Custom payment type note"}' -X POST \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: eecde45b-8abf-48ac-a670-eba2526f527b" \
	-H "X-Api-Secret: aECHgN0d4ZJjn8NTKk6qWnoENJKXxfNUJUqYA_AVwSE"

Response

Simulated Response

Response Fields

Name Description type
id Unique identifier of this record number
repair_order_id ID of the associated repair order number
payment_type Type of the payment and the name associated. Example: 'Credit Card - VISA' string
notes Notes about the payment string
amount_cents Amount of the payment, in cents number
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags
payment_type_details[type] Type of the payment: 'Credit Card', 'Check', 'Cash', 'Other' string
payment_type_details[name] Name of the payment type. Only present if type is 'Credit Card' or 'Other'. Must be at must 25 characters and alphanumeric, if present string

Status

201

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892819
ETag: W/"752d0a3353af31132aa4debb056e487f"
X-Request-Id: 364294db-27d1-47bd-9a72-79104dfc763c
X-Runtime: 0.014102
Content-Length: 276

Body

{
  "id": 2,
  "created_at": "2022-06-10T20:25:59Z",
  "updated_at": "2022-06-10T20:25:59Z",
  "repair_order_id": 1,
  "payment_type": "Other - Special Offer",
  "payment_type_details": {
    "type": "Other",
    "name": "Special Offer"
  },
  "notes": "Custom payment type note",
  "amount_cents": 99,
  "integrator_tags": [

  ]
}

Get a list of all payments

Endpoint

GET api/v1/tenants/:tenant_id/payments

Request

Route

GET api/v1/tenants/1/payments

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 32baddaa-54cf-4cfb-b2d5-609613844d49
X-Api-Secret: D0HCFH2B-eUauy3qrrvw_8CJrmnGV-ZbtOyMWaYRDAQ
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/payments" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 32baddaa-54cf-4cfb-b2d5-609613844d49" \
	-H "X-Api-Secret: D0HCFH2B-eUauy3qrrvw_8CJrmnGV-ZbtOyMWaYRDAQ"

Response

Simulated Response

Response Fields

Name Description type
id Unique identifier of this record number
repair_order_id ID of the associated repair order number
payment_type Type of the payment and the name associated. Example: 'Credit Card - VISA' string
notes Notes about the payment string
amount_cents Amount of the payment, in cents number
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags
payment_type_details[type] Type of the payment: 'Credit Card', 'Check', 'Cash', 'Other' string
payment_type_details[name] Name of the payment type. Only present if type is 'Credit Card' or 'Other'. Must be at must 25 characters and alphanumeric, if present string

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892813
ETag: W/"f4aedb469566a51e0117029e833e8385"
X-Request-Id: a5c40497-4f50-42c7-8547-add5cd173f1f
X-Runtime: 0.013165
Content-Length: 527

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:25:53Z",
      "updated_at": "2022-06-10T20:25:53Z",
      "repair_order_id": 1,
      "payment_type": "Credit Card - Visa",
      "payment_type_details": {
        "type": "Credit Card",
        "name": "Visa"
      },
      "notes": "Customer made partial payment",
      "amount_cents": 21849,
      "integrator_tags": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:25:53Z",
          "updated_at": "2022-06-10T20:25:53Z",
          "taggable_type": "Payment",
          "taggable_id": 1,
          "name": "tag_name",
          "value": "tag_value"
        }
      ]
    }
  ],
  "limit": 1,
  "limited": false,
  "total_count": 1,
  "current_page": 1,
  "total_pages": 1
}

Get a specific payment by ID

Endpoint

GET api/v1/tenants/:tenant_id/payments/:id

Request

Route

GET api/v1/tenants/1/payments/1

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: e15faba2-0c28-402e-9fd0-376c9191d6a4
X-Api-Secret: Q4RTYUA1-CdApD_1m5B7mugFJ0DcNr-myahA4v6jhuQ
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/payments/1" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: e15faba2-0c28-402e-9fd0-376c9191d6a4" \
	-H "X-Api-Secret: Q4RTYUA1-CdApD_1m5B7mugFJ0DcNr-myahA4v6jhuQ"

Response

Simulated Response

Response Fields

Name Description type
id Unique identifier of this record number
repair_order_id ID of the associated repair order number
payment_type Type of the payment and the name associated. Example: 'Credit Card - VISA' string
notes Notes about the payment string
amount_cents Amount of the payment, in cents number
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags
payment_type_details[type] Type of the payment: 'Credit Card', 'Check', 'Cash', 'Other' string
payment_type_details[name] Name of the payment type. Only present if type is 'Credit Card' or 'Other'. Must be at must 25 characters and alphanumeric, if present string

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892815
ETag: W/"23eeb76451bda28c1b9416986c9c931a"
X-Request-Id: 8002b741-996d-4f3f-a228-47f8a9397858
X-Runtime: 0.009572
Content-Length: 438

Body

{
  "id": 1,
  "created_at": "2022-06-10T20:25:55Z",
  "updated_at": "2022-06-10T20:25:55Z",
  "repair_order_id": 1,
  "payment_type": "Credit Card - Visa",
  "payment_type_details": {
    "type": "Credit Card",
    "name": "Visa"
  },
  "notes": "Customer made partial payment",
  "amount_cents": 21849,
  "integrator_tags": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:25:55Z",
      "updated_at": "2022-06-10T20:25:55Z",
      "taggable_type": "Payment",
      "taggable_id": 1,
      "name": "tag_name",
      "value": "tag_value"
    }
  ]
}

Get custom payment types

Endpoint

GET api/v1/tenants/:tenant_id/payments/customer_payment_types

Request

Route

GET api/v1/tenants/1/payments/customer_payment_types

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: fccf8b36-4027-4ce7-9dba-5cd5e89b14a2
X-Api-Secret: kw6jVm-_mI3tjHFKQlsFPdkjorzkYQebx45aZ9tb-Zk
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/payments/customer_payment_types" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: fccf8b36-4027-4ce7-9dba-5cd5e89b14a2" \
	-H "X-Api-Secret: kw6jVm-_mI3tjHFKQlsFPdkjorzkYQebx45aZ9tb-Zk"

Response

Simulated Response

Response Fields

Name Description type
id Unique identifier of this record number
repair_order_id ID of the associated repair order number
payment_type Type of the payment and the name associated. Example: 'Credit Card - VISA' string
notes Notes about the payment string
amount_cents Amount of the payment, in cents number
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags
payment_type_details[type] Type of the payment: 'Credit Card', 'Check', 'Cash', 'Other' string
payment_type_details[name] Name of the payment type. Only present if type is 'Credit Card' or 'Other'. Must be at must 25 characters and alphanumeric, if present string

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892821
ETag: W/"f8fab52e6db7dc5443a2f14dd937e362"
X-Request-Id: 418eebeb-06da-47b3-8421-889bceebc491
X-Runtime: 0.005866
Content-Length: 26

Body

[
  "Coupon",
  "Special Offer"
]

Purchase Records

Get a list of all purchase records

Endpoint

GET api/v1/tenants/:tenant_id/purchase_records

Request

Route

GET api/v1/tenants/1/purchase_records

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: be26668d-4c90-4057-b327-b2673b005c65
X-Api-Secret: KBgIn4KOLpELvyPcJnV9vf9bPQrw8mq5dT313MsZORU
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/purchase_records" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: be26668d-4c90-4057-b327-b2673b005c65" \
	-H "X-Api-Secret: KBgIn4KOLpELvyPcJnV9vf9bPQrw8mq5dT313MsZORU"

Response

Simulated Response

Response Fields

Name Description type
shop_id A foreign key that points to a Shop.id. Represents the shop in which the order was created. integer
payment_type The form of payment that was used to pay for these parts. string
ecomm_integrator_order_id An identifier assigned to this order by the parts eComm integrator (if any). string
is_return True if this Purchase Record is a return. boolean
line_items[ecomm_integrator_part_id] An identifier assigned to this line item by the parts eComm integrator (if any). string
line_items[inventory_id] A foreign key that points to an Inventory.id. Represents the inventory that has been received. integer

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892824
ETag: W/"0aa4b13342e6a4ddc437d8f80ee06bfe"
X-Request-Id: e4f3b647-30b0-44f7-b978-83b9e51c7d73
X-Runtime: 0.028174
Content-Length: 618

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:26:04Z",
      "updated_at": "2022-06-10T20:26:04Z",
      "shop_id": 1,
      "invoice_number": "IN1",
      "vendor_id": 1,
      "payment_type": "Credit Card",
      "ecomm_integrator_order_id": 100,
      "is_return": false,
      "line_items": [
        {
          "inventory_id": 1,
          "quantity": 1.0,
          "list_price_cents": 0,
          "cost_cents": 50,
          "ecomm_integrator_part_id": "PARTSTECH_PART_ID"
        }
      ],
      "integrator_tags": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:26:04Z",
          "updated_at": "2022-06-10T20:26:04Z",
          "taggable_type": "PurchaseRecord",
          "taggable_id": 1,
          "name": "tag_name",
          "value": "tag_value"
        }
      ]
    }
  ],
  "limit": 1,
  "limited": false,
  "total_count": 1,
  "current_page": 1,
  "total_pages": 1
}

Get a specific purchase record by ID

Endpoint

GET api/v1/tenants/:tenant_id/purchase_records/:id

Request

Route

GET api/v1/tenants/1/purchase_records/1

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 37bf635b-e89b-4817-be0b-a12e52666cbb
X-Api-Secret: kjh9QzqLAc8oHgAANcmt69dChZIWGJpwxvx1c5nNrhY
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/purchase_records/1" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 37bf635b-e89b-4817-be0b-a12e52666cbb" \
	-H "X-Api-Secret: kjh9QzqLAc8oHgAANcmt69dChZIWGJpwxvx1c5nNrhY"

Response

Simulated Response

Response Fields

Name Description type
shop_id A foreign key that points to a Shop.id. Represents the shop in which the order was created. integer
payment_type The form of payment that was used to pay for these parts. string
ecomm_integrator_order_id An identifier assigned to this order by the parts eComm integrator (if any). string
is_return True if this Purchase Record is a return. boolean
line_items[ecomm_integrator_part_id] An identifier assigned to this line item by the parts eComm integrator (if any). string
line_items[inventory_id] A foreign key that points to an Inventory.id. Represents the inventory that has been received. integer

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892826
ETag: W/"aadc5690f482483475f9e83773021f9f"
X-Request-Id: 1f6a57a0-0eda-4250-99de-47189bd174bc
X-Runtime: 0.017466
Content-Length: 529

Body

{
  "id": 1,
  "created_at": "2022-06-10T20:26:06Z",
  "updated_at": "2022-06-10T20:26:06Z",
  "shop_id": 1,
  "invoice_number": "IN2",
  "vendor_id": 1,
  "payment_type": "Credit Card",
  "ecomm_integrator_order_id": 100,
  "is_return": false,
  "line_items": [
    {
      "inventory_id": 1,
      "quantity": 1.0,
      "list_price_cents": 0,
      "cost_cents": 50,
      "ecomm_integrator_part_id": "PARTSTECH_PART_ID"
    }
  ],
  "integrator_tags": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:26:06Z",
      "updated_at": "2022-06-10T20:26:06Z",
      "taggable_type": "PurchaseRecord",
      "taggable_id": 1,
      "name": "tag_name",
      "value": "tag_value"
    }
  ]
}

Recommendations

Create a recommendation

Endpoint

POST api/v1/tenants/:tenant_id/recommendations

Parameters

Name Description type
repair_order_id required A foreign key which points to a RepairOrder.id. Represents the repair order related to this recommendation. integer
description The title of the recommended service. Either this field or canned_job_id must be present. If canned_job_id is provided, this field will be ignored. text
canned_job_id A foreign key which points to a CannedJob.id. Represents the canned job related to this recommendation. Either this field or description must be present. integer

Request

Route

POST api/v1/tenants/1/recommendations

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: e3d2119b-289c-4f8b-b9d3-9eefbd4e39d5
X-Api-Secret: 0c99Xza7AbuIxH5roYl9Jj8OAjlNB-EXV1wiLtRDM2w
Host: example.org
Cookie: 

Body

{
  "description": "Description 1",
  "repair_order_id": 4,
  "canned_job_id": 1
}

cURL

curl "https://api.shop-ware.com/api/v1/tenants/1/recommendations" -d '{"description":"Description 1","repair_order_id":4,"canned_job_id":1}' -X POST \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: e3d2119b-289c-4f8b-b9d3-9eefbd4e39d5" \
	-H "X-Api-Secret: 0c99Xza7AbuIxH5roYl9Jj8OAjlNB-EXV1wiLtRDM2w"

Response

Simulated Response

Response Fields

Name Description type
id Unique identifier of this record number
description The title of the recommended service string
approved True if the recommendation has been approved by the customer, false if it has been declined, and null otherwise. boolean
approver_id 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). integer
approval_at Date the recommendation was approved if it has been approved, null otherwise. string
approval_type Type of approval: One of "customer", "email", "person", and "phone". Null if unapproved or declined. string
imported True if the recommendation has been added as a service on a Repair Order, false otherwise. boolean
quick_price_cents If the recommendation is a “quick rec”, it will not have an associated service and will have a “quick price”. number
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags
service The service that was recommended to the customer. See the Repair Order resource for details about the attributes of this object object
repair_order_id A foreign key that points to the RepairOrder that this Recommendation belongs to. integer

Status

201

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1601571960
ETag: W/"7b27783d5bfb99e875ba0479a2f53970"
X-Request-Id: 7f3e661b-c27d-4970-ab6c-32bd3109f734
X-Runtime: 0.016905
Content-Length: 1648

Body

{
  "id": 1,
  "created_at": "2022-06-10T20:26:13Z",
  "updated_at": "2022-06-10T20:26:13Z",
  "description": "Test Service",
  "approved": null,
  "approver_id": null,
  "approval_type": null,
  "imported": false,
  "quick_price_cents": null,
  "service": {
    "id": 1,
    "created_at": "2022-06-10T20:26:13Z",
    "updated_at": "2022-06-10T20:26:13Z",
    "title": "Test Service",
    "completed": false,
    "category_id": null,
    "canned_job_id": null,
    "comment": "",
    "labor_rate_cents": 10000,
    "labors": [
      {
        "id": 1,
        "created_at": "2022-06-10T20:26:13Z",
        "updated_at": "2022-06-10T20:26:13Z",
        "name": "Test labor 3",
        "technician_id": null,
        "taxable": true,
        "hours": 1.0
      }
    ],
    "parts": [
      {
        "id": 1,
        "created_at": "2022-06-10T20:26:13Z",
        "updated_at": "2022-06-10T20:26:13Z",
        "brand": null,
        "description": null,
        "number": null,
        "quoted_price_cents": null,
        "cost_cents": null,
        "part_inventory_id": 1,
        "taxable": true,
        "quantity": 1.0
      }
    ],
    "hazmats": [
      {
        "id": 1,
        "created_at": "2022-06-10T20:26:13Z",
        "updated_at": "2022-06-10T20:26:13Z",
        "name": "Test hazmat fee 3",
        "fee_cents": 25,
        "taxable": true,
        "quantity": 1.0
      }
    ],
    "sublets": [
      {
        "id": 1,
        "created_at": "2022-06-10T20:26:13Z",
        "updated_at": "2022-06-10T20:26:13Z",
        "name": "Test sublet 3",
        "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": "2022-06-10T20:26:13Z",
        "updated_at": "2022-06-10T20:26:13Z",
        "name": "Test inspection 3",
        "state": null,
        "detail": "Specifics about the test inspection"
      }
    ]
  },
  "repair_order_id": 2,
  "approval_at": null,
  "integrator_tags": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:26:13Z",
      "updated_at": "2022-06-10T20:26:13Z",
      "taggable_type": "Recommendation",
      "taggable_id": 1,
      "name": "tag_name",
      "value": "tag_value"
    }
  ]
}

Get a list of all recommendations

Endpoint

GET api/v1/tenants/:tenant_id/recommendations

Request

Route

GET api/v1/tenants/1/recommendations

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 29b8c02c-b438-4ad1-bc25-943cb19e3e82
X-Api-Secret: Ye4xCL47hhJUqNzFmN_L3Oe3wbiZb_0_DDHjLwPXTTQ
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/recommendations" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 29b8c02c-b438-4ad1-bc25-943cb19e3e82" \
	-H "X-Api-Secret: Ye4xCL47hhJUqNzFmN_L3Oe3wbiZb_0_DDHjLwPXTTQ"

Response

Simulated Response

Response Fields

Name Description type
id Unique identifier of this record number
description The title of the recommended service string
approved True if the recommendation has been approved by the customer, false if it has been declined, and null otherwise. boolean
approver_id 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). integer
approval_at Date the recommendation was approved if it has been approved, null otherwise. string
approval_type Type of approval: One of "customer", "email", "person", and "phone". Null if unapproved or declined. string
imported True if the recommendation has been added as a service on a Repair Order, false otherwise. boolean
quick_price_cents If the recommendation is a “quick rec”, it will not have an associated service and will have a “quick price”. number
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags
service The service that was recommended to the customer. See the Repair Order resource for details about the attributes of this object object
repair_order_id A foreign key that points to the RepairOrder that this Recommendation belongs to. integer

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892828
ETag: W/"c42eb61e1abae2dcd48767951e9f5112"
X-Request-Id: 78266424-c377-4ce8-bda5-e6c8915a3795
X-Runtime: 0.021510
Content-Length: 2012

Body

{
  "results": [
    {
      "id": 2,
      "created_at": "2022-06-10T20:26:08Z",
      "updated_at": "2022-06-10T20:26:08Z",
      "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": "2022-06-10T20:26:08Z",
      "updated_at": "2022-06-10T20:26:08Z",
      "description": "Test Service",
      "approved": null,
      "approver_id": null,
      "approval_type": null,
      "imported": false,
      "quick_price_cents": null,
      "service": {
        "id": 1,
        "created_at": "2022-06-10T20:26:08Z",
        "updated_at": "2022-06-10T20:26:08Z",
        "title": "Test Service",
        "completed": false,
        "category_id": null,
        "canned_job_id": null,
        "comment": "",
        "labor_rate_cents": 10000,
        "labors": [
          {
            "id": 1,
            "created_at": "2022-06-10T20:26:08Z",
            "updated_at": "2022-06-10T20:26:08Z",
            "name": "Test labor 1",
            "technician_id": null,
            "taxable": true,
            "hours": 1.0
          }
        ],
        "parts": [
          {
            "id": 1,
            "created_at": "2022-06-10T20:26:08Z",
            "updated_at": "2022-06-10T20:26:08Z",
            "brand": null,
            "description": null,
            "number": null,
            "quoted_price_cents": null,
            "cost_cents": null,
            "part_inventory_id": 1,
            "taxable": true,
            "quantity": 1.0
          }
        ],
        "hazmats": [
          {
            "id": 1,
            "created_at": "2022-06-10T20:26:08Z",
            "updated_at": "2022-06-10T20:26:08Z",
            "name": "Test hazmat fee 1",
            "fee_cents": 25,
            "taxable": true,
            "quantity": 1.0
          }
        ],
        "sublets": [
          {
            "id": 1,
            "created_at": "2022-06-10T20:26:08Z",
            "updated_at": "2022-06-10T20:26:08Z",
            "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": "2022-06-10T20:26:08Z",
            "updated_at": "2022-06-10T20:26:08Z",
            "name": "Test inspection 1",
            "state": null,
            "detail": "Specifics about the test inspection"
          }
        ]
      },
      "repair_order_id": 2,
      "approval_at": null,
      "integrator_tags": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:26:08Z",
          "updated_at": "2022-06-10T20:26:08Z",
          "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
}

Get a specific recommendation by ID

Endpoint

GET api/v1/tenants/:tenant_id/recommendations/:id

Request

Route

GET api/v1/tenants/1/recommendations/1

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 492a172e-2db1-445c-9c8a-843da5ff9f4c
X-Api-Secret: DI3da1k_9T5CR6Vp8uWJhoC4O3LX3QmzYVFnQWYaEIY
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/recommendations/1" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 492a172e-2db1-445c-9c8a-843da5ff9f4c" \
	-H "X-Api-Secret: DI3da1k_9T5CR6Vp8uWJhoC4O3LX3QmzYVFnQWYaEIY"

Response

Simulated Response

Response Fields

Name Description type
id Unique identifier of this record number
description The title of the recommended service string
approved True if the recommendation has been approved by the customer, false if it has been declined, and null otherwise. boolean
approver_id 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). integer
approval_at Date the recommendation was approved if it has been approved, null otherwise. string
approval_type Type of approval: One of "customer", "email", "person", and "phone". Null if unapproved or declined. string
imported True if the recommendation has been added as a service on a Repair Order, false otherwise. boolean
quick_price_cents If the recommendation is a “quick rec”, it will not have an associated service and will have a “quick price”. number
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags
service The service that was recommended to the customer. See the Repair Order resource for details about the attributes of this object object
repair_order_id A foreign key that points to the RepairOrder that this Recommendation belongs to. integer

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892830
ETag: W/"9037ada5a47c283e6a6ae9458cd2e736"
X-Request-Id: a8386126-381f-48ae-b13a-f12beb0de225
X-Runtime: 0.018073
Content-Length: 1648

Body

{
  "id": 1,
  "created_at": "2022-06-10T20:26:10Z",
  "updated_at": "2022-06-10T20:26:10Z",
  "description": "Test Service",
  "approved": null,
  "approver_id": null,
  "approval_type": null,
  "imported": false,
  "quick_price_cents": null,
  "service": {
    "id": 1,
    "created_at": "2022-06-10T20:26:10Z",
    "updated_at": "2022-06-10T20:26:10Z",
    "title": "Test Service",
    "completed": false,
    "category_id": null,
    "canned_job_id": null,
    "comment": "",
    "labor_rate_cents": 10000,
    "labors": [
      {
        "id": 1,
        "created_at": "2022-06-10T20:26:10Z",
        "updated_at": "2022-06-10T20:26:10Z",
        "name": "Test labor 2",
        "technician_id": null,
        "taxable": true,
        "hours": 1.0
      }
    ],
    "parts": [
      {
        "id": 1,
        "created_at": "2022-06-10T20:26:10Z",
        "updated_at": "2022-06-10T20:26:10Z",
        "brand": null,
        "description": null,
        "number": null,
        "quoted_price_cents": null,
        "cost_cents": null,
        "part_inventory_id": 1,
        "taxable": true,
        "quantity": 1.0
      }
    ],
    "hazmats": [
      {
        "id": 1,
        "created_at": "2022-06-10T20:26:10Z",
        "updated_at": "2022-06-10T20:26:10Z",
        "name": "Test hazmat fee 2",
        "fee_cents": 25,
        "taxable": true,
        "quantity": 1.0
      }
    ],
    "sublets": [
      {
        "id": 1,
        "created_at": "2022-06-10T20:26:10Z",
        "updated_at": "2022-06-10T20:26:10Z",
        "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": "2022-06-10T20:26:10Z",
        "updated_at": "2022-06-10T20:26:10Z",
        "name": "Test inspection 2",
        "state": null,
        "detail": "Specifics about the test inspection"
      }
    ]
  },
  "repair_order_id": 2,
  "approval_at": null,
  "integrator_tags": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:26:10Z",
      "updated_at": "2022-06-10T20:26:10Z",
      "taggable_type": "Recommendation",
      "taggable_id": 1,
      "name": "tag_name",
      "value": "tag_value"
    }
  ]
}

Update a specific recommendation

Endpoint

PUT api/v1/tenants/:tenant_id/recommendations/:id

Parameters

Name Description type
repair_order_id A foreign key which points to a RepairOrder.id. Represents the repair order related to this recommendation. integer
description The title of the recommended service. Note that this field can't be updated when a CannedJob is associated with the Recommendation text

Request

Route

PUT api/v1/tenants/1/recommendations/1

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 180b211a-3345-4a58-bb58-8d0a45530d81
X-Api-Secret: cC1xJaCpJ9_0HNaqoYcyYbdsh1u8Dmv-3PRp5-SbxEU
Host: example.org
Cookie: 

Body

{
  "repair_order_id": 4,
  "description": "Description 2"
}

cURL

curl "https://api.shop-ware.com/api/v1/tenants/1/recommendations/1" -d '{"repair_order_id":4,"description":"Description 2"}' -X PUT \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 180b211a-3345-4a58-bb58-8d0a45530d81" \
	-H "X-Api-Secret: cC1xJaCpJ9_0HNaqoYcyYbdsh1u8Dmv-3PRp5-SbxEU"

Response

Simulated Response

Response Fields

Name Description type
id Unique identifier of this record number
description The title of the recommended service string
approved True if the recommendation has been approved by the customer, false if it has been declined, and null otherwise. boolean
approver_id 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). integer
approval_at Date the recommendation was approved if it has been approved, null otherwise. string
approval_type Type of approval: One of "customer", "email", "person", and "phone". Null if unapproved or declined. string
imported True if the recommendation has been added as a service on a Repair Order, false otherwise. boolean
quick_price_cents If the recommendation is a “quick rec”, it will not have an associated service and will have a “quick price”. number
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags
service The service that was recommended to the customer. See the Repair Order resource for details about the attributes of this object object
repair_order_id A foreign key that points to the RepairOrder that this Recommendation belongs to. integer

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1601571960
ETag: W/"c815d71597e2d65ba2453820733325fb"
X-Request-Id: 09555219-1ffd-4a6f-9149-6f98815b5408
X-Runtime: 0.020223
Content-Length: 1648

Body

{
  "id": 1,
  "created_at": "2022-06-10T20:26:21Z",
  "updated_at": "2022-06-10T20:26:21Z",
  "description": "Test Service",
  "approved": null,
  "approver_id": null,
  "approval_type": null,
  "imported": false,
  "quick_price_cents": null,
  "service": {
    "id": 1,
    "created_at": "2022-06-10T20:26:21Z",
    "updated_at": "2022-06-10T20:26:21Z",
    "title": "Test Service",
    "completed": false,
    "category_id": null,
    "canned_job_id": null,
    "comment": "",
    "labor_rate_cents": 10000,
    "labors": [
      {
        "id": 1,
        "created_at": "2022-06-10T20:26:21Z",
        "updated_at": "2022-06-10T20:26:21Z",
        "name": "Test labor 7",
        "technician_id": null,
        "taxable": true,
        "hours": 1.0
      }
    ],
    "parts": [
      {
        "id": 1,
        "created_at": "2022-06-10T20:26:21Z",
        "updated_at": "2022-06-10T20:26:21Z",
        "brand": null,
        "description": null,
        "number": null,
        "quoted_price_cents": null,
        "cost_cents": null,
        "part_inventory_id": 1,
        "taxable": true,
        "quantity": 1.0
      }
    ],
    "hazmats": [
      {
        "id": 1,
        "created_at": "2022-06-10T20:26:21Z",
        "updated_at": "2022-06-10T20:26:21Z",
        "name": "Test hazmat fee 7",
        "fee_cents": 25,
        "taxable": true,
        "quantity": 1.0
      }
    ],
    "sublets": [
      {
        "id": 1,
        "created_at": "2022-06-10T20:26:21Z",
        "updated_at": "2022-06-10T20:26:21Z",
        "name": "Test sublet 7",
        "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": "2022-06-10T20:26:21Z",
        "updated_at": "2022-06-10T20:26:21Z",
        "name": "Test inspection 7",
        "state": null,
        "detail": "Specifics about the test inspection"
      }
    ]
  },
  "repair_order_id": 2,
  "approval_at": null,
  "integrator_tags": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:26:21Z",
      "updated_at": "2022-06-10T20:26:21Z",
      "taggable_type": "Recommendation",
      "taggable_id": 1,
      "name": "tag_name",
      "value": "tag_value"
    }
  ]
}

Repair Orders

Create a repair order

Endpoint

POST api/v1/tenants/:tenant_id/repair_orders

Parameters

Name Description
number Repair order number
odometer Mileage value when car is dropped off
customer_id required A foreign key which points to a Vehicle.id. Represents the vehicle for this RO. The vehicle must be owned by the customer (the Customer.id must be in the Vehicle.customer_ids list).
technician_id A foreign key which points to a Staff.id. Represents the technician assigned to this RO.
advisor_id A foreign key which points to a Staff.id. Represents the service advisor assigned to this RO.
vehicle_id A foreign key which points to a Vehicle.id. Represents the vehicle for this RO.
detail Notes made by the staff about this RO.
preferred_contact_type How the customer prefers to receive progress updates about this RO. One of 'Waiting', 'Phone', 'Email', 'Text'. More contact types may be added.
shop_id required A foreign key which points to a Shop.id. Represents the Shop for this RO.
taxable Determines if tax rates will apply on this RO.
due_in_at The datetime the vehicle was scheduled to be dropped off.
customer_source The marketing source of the customer for this RO. Example: "Repeat", "Referral", "Website", etc.

Request

Route

POST api/v1/tenants/1/repair_orders

Headers

Content-Type: application/json
Accept: application/json
X-Api-Partner-Id: 4dbaf6e9-57e5-4f51-969c-18a4ac4c0cb6
X-Api-Secret: m9v1iRBir8F3nRTmlO-k1jTCpimEhFtRBYPVeBEcnEA
Host: example.org
Cookie: 

Body

{
  "number": 925877844,
  "odometer": 90321,
  "customer_id": 1,
  "technician_id": 2,
  "advisor_id": 3,
  "vehicle_id": 1,
  "detail": "Key tag 84, customer waiting",
  "preferred_contact_type": "Text",
  "shop_id": 2,
  "taxable": true,
  "due_in_at": "2022-06-13T20:26:28Z",
  "customer_source": "Repeat"
}

cURL

curl "https://api.shop-ware.com/api/v1/tenants/1/repair_orders" -d '{"number":925877844,"odometer":90321,"customer_id":1,"technician_id":2,"advisor_id":3,"vehicle_id":1,"detail":"Key tag 84, customer waiting","preferred_contact_type":"Text","shop_id":2,"taxable":true,"due_in_at":"2022-06-13T20:26:28Z","customer_source":"Repeat"}' -X POST \
	-H "Content-Type: application/json" \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 4dbaf6e9-57e5-4f51-969c-18a4ac4c0cb6" \
	-H "X-Api-Secret: m9v1iRBir8F3nRTmlO-k1jTCpimEhFtRBYPVeBEcnEA"

Response

Simulated Response

Response Fields

Name Description type
state One of 'estimate', 'in_progress', or 'invoice'. string
status_id A foreign key which points to a Status.id. Represents the Status for this RO. number
customer_id A foreign key which points to a Customer.id. Represents the Customer for this RO. number
technician_id A foreign key which points to a Staff.id. Represents the technician assigned to this RO. number
advisor_id A foreign key which points to a Staff.id. Represents the service advisor assigned to this RO. number
vehicle_id A foreign key which points to a Vehicle.id. Represents the vehicle for this RO. number
shop_id A foreign key which points to a Shop.id. Represents the Shop for this RO. number
detail Notes made by the staff about this RO. string
preferred_contact_type How the customer prefers to receive progress updates about this RO. One of 'Waiting', 'Phone', 'Email', 'Text'. More contact types may be added. string
part_discount_cents The total amount in cents parts are discounted on this RO, subtracted from the parts subtotal before tax. This will be null if part_discount_percentage is non-null. number
labor_discount_cents The total amount in cents labor is discounted on this RO, subtracted from the labor subtotal before tax. This will be null if labor_discount_percentage is non-null. number
started_at The datetime the RO was started and transitioned to 'in_progress' state, or null if the RO is still an estimate. datetime string
closed_at The datetime the RO was closed and transitioned to 'invoice' state, or null if the RO is not yet an invoice. datetime string
picked_up_at The datetime the vehicle was marked as 'picked up', or null if the vehicle is still in the shop. datetime string
due_in_at The datetime the vehicle was scheduled to be dropped off. datetime string
due_out_at The datetime the vehicle was scheduled to be picked up. datetime string
part_tax_rate The tax rate applied to parts on this RO. number
labor_tax_rate The tax rate applied to labor on this RO. number
sublet_tax_rate The tax rate applied to sublets on this RO. number
hazmat_tax_rate The tax rate applied to hazmats and fees on this RO. number
taxable Determines if tax rates will apply on this RO. boolean
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags
customer_source The marketing source of the customer for this RO. Example: "Repeat", "Referral", "Website", etc string
supply_fee_cents The shop supplies fee in cents. If and only if null, the supply fee for this RO should instead be computed by the settings in the associated shop (repair_order.shop_id). If non-null, this value should be used as the supply fee. This value is taxed as a part. number
part_discount_percentage The amount in percent that parts are discounted on this RO (ex: 7.55%), subtracted from the parts subtotal before tax. This will be null if part_discount_cents is non-null. number
labor_discount_percentage The amount in percent labor is discounted on this RO (ex: 7.55%), subtracted from the labor subtotal before tax. This will be null if labor_discount_cents is non-null. number
services[completed] True if the service has been marked as completed by a staff member, false otherwise. boolean
services[labor_rate_cents] The rate in cents that labor on this service is charged at. number
services[canned_job_id] A foreign key which points to a CannedJob.id. Represents the canned job assigned to this specific service item. number
services[comment] Service comments. text
services[completed_at] The datetime the service was marked completed datetime string
services[last_completed_at] The datetime the service was last marked completed. This may occur if the service had been marked completed then restarted and marked completed again. datetime string
labors[technician_id] A foreign key which points to a Staff.id. Represents the technician assigned to this specific labor item. number
labors[taxable] Determines if labor tax rate will be applied to this labor. boolean
parts[quoted_price_cents] The price of this part that is being sold to the customer in cents per unit. number
parts[cost_cents] The wholesale cost of this part to the shop in cents per unit. number
parts[part_inventory_id] A foreign key which points to an Inventory.id. Represents the associated inventory and quantity information for this part. number
parts[quantity] The number of units this part line item represents. number
parts[taxable] Determines if part tax rate will be applied to this part. boolean
hazmats[fee_cents] The price of this fee or hazmat in cents per unit. number
hazmats[quantity] The number of units. number
hazmats[taxable] Determines if hazmat tax rate will be applied to this hazmat. boolean
sublets[price_cents] The price in cents of sublet being sold to customer. number
sublets[cost_cents] The amount in cents paid to provider for services. number
sublets[provider] The name of the entity providing services for sublet. string
sublets[invoice_number] A string which identifies invoice from provider. string
sublets[invoice_date] The date when the invoice from provider was created. datetime string
sublets[taxable] Determines if sublet tax rate will be applied to this sublet. boolean
sublets[vendor_id] A foreign key which points to a Vendor.id. Represents a vendor associated with this sublet item. number
inspections[name] The name of this inspection as it appears on the RO. string
inspections[state] One of "yellow", "green", "unchecked", "red". More states may be added. string
inspections[detail] Optional staff-entered details about the results of this inspection. string
payments[payment_type] The display name of the payment type. Payment types are customizable for each shop. Examples: "Other", "Credit Card", "Check", "Cash", "Credit Card - Visa", and "Other - Warranty". string
payments[payment_type_details] An object containing the type and name of the payment type. Example: { type: "Credit Card", name: "Mastercard" }. The type is always present, but the name could be null or blank. object
payments[notes] Staff-entered notes about this payment. string
payments[amount_cents] The total payment amount, in cents. number
label[text] The description of the label. string
label[color_code] The color code of which the label is represented. string

Status

201

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892848
ETag: W/"044a2a90cbac9c921d9f1793f77b24fa"
X-Request-Id: 9e3178ad-66f8-4e4f-8165-9ff1448712dd
X-Runtime: 0.033956
Content-Length: 2453

Body

{
  "id": 1,
  "created_at": "2022-06-10T20:26:28Z",
  "updated_at": "2022-06-10T20:26:28Z",
  "number": 925877843,
  "odometer": null,
  "odometer_out": null,
  "state": "estimate",
  "customer_id": 1,
  "technician_id": null,
  "advisor_id": null,
  "vehicle_id": 1,
  "detail": null,
  "preferred_contact_type": null,
  "part_discount_cents": null,
  "labor_discount_cents": null,
  "shop_id": 1,
  "status_id": null,
  "taxable": true,
  "customer_source": null,
  "supply_fee_cents": null,
  "part_discount_percentage": null,
  "labor_discount_percentage": null,
  "started_at": null,
  "closed_at": null,
  "picked_up_at": null,
  "due_in_at": null,
  "due_out_at": null,
  "part_tax_rate": 0.0,
  "labor_tax_rate": 0.0,
  "hazmat_tax_rate": 0.0,
  "sublet_tax_rate": 0.0,
  "services": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:26:28Z",
      "updated_at": "2022-06-10T20:26:28Z",
      "title": "Warning Light On",
      "completed": false,
      "category_id": 4,
      "canned_job_id": 1,
      "comment": "",
      "labor_rate_cents": 10000,
      "completed_at": null,
      "last_completed_at": null,
      "labors": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:26:28Z",
          "updated_at": "2022-06-10T20:26:28Z",
          "name": "Advise on proper course of action",
          "technician_id": 2,
          "taxable": false,
          "hours": 0.13
        }
      ],
      "parts": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:26:28Z",
          "updated_at": "2022-06-10T20:26:28Z",
          "brand": "Superbright",
          "description": "194 LED - AMBER 120*",
          "number": "WLED-A-120",
          "quoted_price_cents": 395,
          "cost_cents": 85,
          "part_inventory_id": 1,
          "taxable": false,
          "quantity": 2.0
        }
      ],
      "hazmats": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:26:28Z",
          "updated_at": "2022-06-10T20:26:28Z",
          "name": "Recycling fee",
          "fee_cents": 2000,
          "taxable": true,
          "quantity": 1.0
        }
      ],
      "sublets": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:26:28Z",
          "updated_at": "2022-06-10T20:26:28Z",
          "name": "Windshield repair",
          "price_cents": 1999,
          "cost_cents": 999,
          "provider": "Windshield Bros.",
          "invoice_number": "1111",
          "description": "windshield provider",
          "taxable": true,
          "vendor_id": 1,
          "invoice_date": "2022-06-11T20:26:28Z"
        }
      ],
      "inspections": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:26:28Z",
          "updated_at": "2022-06-10T20:26:28Z",
          "name": "Measure tire tread depth",
          "state": "red",
          "detail": "Tread at 3/16"
        }
      ]
    }
  ],
  "payments": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:26:28Z",
      "updated_at": "2022-06-10T20:26:28Z",
      "payment_type": "Credit Card - Visa",
      "payment_type_details": {
        "type": "Credit Card",
        "name": "Visa"
      },
      "notes": "Customer made partial payment",
      "amount_cents": 21849
    }
  ],
  "integrator_tags": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:26:28Z",
      "updated_at": "2022-06-10T20:26:28Z",
      "taggable_type": "RepairOrder",
      "taggable_id": 1,
      "name": "tag_name",
      "value": "tag_value"
    }
  ],
  "label": null
}

Get a list of all repair orders

Endpoint

GET api/v1/tenants/:tenant_id/repair_orders

Parameters

Name Description type
shop_id Filter response to include only Repair Orders with this Shop ID number
customer_id Filter response to include only Customer with this ID number
vehicle_id Filter response to include only Vehicle with this ID number
status Filter response to include only Repair Orders with the provided status: One of 'estimate', 'in_progress', or 'invoice'.
number Filter response to include only Repair Orders with this RO number
closed_after Filter response to include only Repair Orders having been closed (status = invoice) after the provided datetime.
technician_id Filter response to only include Repair Orders assigned to this Technican ID. number
associations An optional list that controls what nested associations are included in the response. Currently supported values are 'none', 'payments', 'integrator_tags', 'label', 'services', 'services.labors', 'services.parts', 'services.hazmats', 'services.inspections', 'services.sublets' 'customer', 'customer.phones', 'customer.integrator_tags' 'vehicle', 'vehicle.integrator_tags. Note that if you specify a deeply nested association e.g. 'services.hazmats', then 'services' is implied, so it's not necessary to provide 'services,services.hazmats'. Example: /api/v1/tenants/<tenant id>/repair_orders?associations[]=customer&associations[]=services.inspections&associations[]=vehicle.integrator_tags

Request

Route

GET api/v1/tenants/1/repair_orders

Headers

Content-Type: application/json
Accept: application/json
X-Api-Partner-Id: 6f7820c2-0478-45b9-b70a-487e5cb464bf
X-Api-Secret: OWCJC2epggRvVr2rsDIcjgSUtUA59_5Hhh6vf-vLrEs
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/repair_orders" -X GET \
	-H "Content-Type: application/json" \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 6f7820c2-0478-45b9-b70a-487e5cb464bf" \
	-H "X-Api-Secret: OWCJC2epggRvVr2rsDIcjgSUtUA59_5Hhh6vf-vLrEs"

Response

Simulated Response

Response Fields

Name Description type
state One of 'estimate', 'in_progress', or 'invoice'. string
status_id A foreign key which points to a Status.id. Represents the Status for this RO. number
customer_id A foreign key which points to a Customer.id. Represents the Customer for this RO. number
technician_id A foreign key which points to a Staff.id. Represents the technician assigned to this RO. number
advisor_id A foreign key which points to a Staff.id. Represents the service advisor assigned to this RO. number
vehicle_id A foreign key which points to a Vehicle.id. Represents the vehicle for this RO. number
shop_id A foreign key which points to a Shop.id. Represents the Shop for this RO. number
detail Notes made by the staff about this RO. string
preferred_contact_type How the customer prefers to receive progress updates about this RO. One of 'Waiting', 'Phone', 'Email', 'Text'. More contact types may be added. string
part_discount_cents The total amount in cents parts are discounted on this RO, subtracted from the parts subtotal before tax. This will be null if part_discount_percentage is non-null. number
labor_discount_cents The total amount in cents labor is discounted on this RO, subtracted from the labor subtotal before tax. This will be null if labor_discount_percentage is non-null. number
started_at The datetime the RO was started and transitioned to 'in_progress' state, or null if the RO is still an estimate. datetime string
closed_at The datetime the RO was closed and transitioned to 'invoice' state, or null if the RO is not yet an invoice. datetime string
picked_up_at The datetime the vehicle was marked as 'picked up', or null if the vehicle is still in the shop. datetime string
due_in_at The datetime the vehicle was scheduled to be dropped off. datetime string
due_out_at The datetime the vehicle was scheduled to be picked up. datetime string
part_tax_rate The tax rate applied to parts on this RO. number
labor_tax_rate The tax rate applied to labor on this RO. number
sublet_tax_rate The tax rate applied to sublets on this RO. number
hazmat_tax_rate The tax rate applied to hazmats and fees on this RO. number
taxable Determines if tax rates will apply on this RO. boolean
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags
customer_source The marketing source of the customer for this RO. Example: "Repeat", "Referral", "Website", etc string
supply_fee_cents The shop supplies fee in cents. If and only if null, the supply fee for this RO should instead be computed by the settings in the associated shop (repair_order.shop_id). If non-null, this value should be used as the supply fee. This value is taxed as a part. number
part_discount_percentage The amount in percent that parts are discounted on this RO (ex: 7.55%), subtracted from the parts subtotal before tax. This will be null if part_discount_cents is non-null. number
labor_discount_percentage The amount in percent labor is discounted on this RO (ex: 7.55%), subtracted from the labor subtotal before tax. This will be null if labor_discount_cents is non-null. number
services[completed] True if the service has been marked as completed by a staff member, false otherwise. boolean
services[labor_rate_cents] The rate in cents that labor on this service is charged at. number
services[canned_job_id] A foreign key which points to a CannedJob.id. Represents the canned job assigned to this specific service item. number
services[comment] Service comments. text
services[completed_at] The datetime the service was marked completed datetime string
services[last_completed_at] The datetime the service was last marked completed. This may occur if the service had been marked completed then restarted and marked completed again. datetime string
labors[technician_id] A foreign key which points to a Staff.id. Represents the technician assigned to this specific labor item. number
labors[taxable] Determines if labor tax rate will be applied to this labor. boolean
parts[quoted_price_cents] The price of this part that is being sold to the customer in cents per unit. number
parts[cost_cents] The wholesale cost of this part to the shop in cents per unit. number
parts[part_inventory_id] A foreign key which points to an Inventory.id. Represents the associated inventory and quantity information for this part. number
parts[quantity] The number of units this part line item represents. number
parts[taxable] Determines if part tax rate will be applied to this part. boolean
hazmats[fee_cents] The price of this fee or hazmat in cents per unit. number
hazmats[quantity] The number of units. number
hazmats[taxable] Determines if hazmat tax rate will be applied to this hazmat. boolean
sublets[price_cents] The price in cents of sublet being sold to customer. number
sublets[cost_cents] The amount in cents paid to provider for services. number
sublets[provider] The name of the entity providing services for sublet. string
sublets[invoice_number] A string which identifies invoice from provider. string
sublets[invoice_date] The date when the invoice from provider was created. datetime string
sublets[taxable] Determines if sublet tax rate will be applied to this sublet. boolean
sublets[vendor_id] A foreign key which points to a Vendor.id. Represents a vendor associated with this sublet item. number
inspections[name] The name of this inspection as it appears on the RO. string
inspections[state] One of "yellow", "green", "unchecked", "red". More states may be added. string
inspections[detail] Optional staff-entered details about the results of this inspection. string
payments[payment_type] The display name of the payment type. Payment types are customizable for each shop. Examples: "Other", "Credit Card", "Check", "Cash", "Credit Card - Visa", and "Other - Warranty". string
payments[payment_type_details] An object containing the type and name of the payment type. Example: { type: "Credit Card", name: "Mastercard" }. The type is always present, but the name could be null or blank. object
payments[notes] Staff-entered notes about this payment. string
payments[amount_cents] The total payment amount, in cents. number
label[text] The description of the label. string
label[color_code] The color code of which the label is represented. string

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892844
ETag: W/"22402e1075dc5720d445c4cb0796894c"
X-Request-Id: 6f6059f7-d5b4-4f75-984e-913b1b02870a
X-Runtime: 0.028305
Content-Length: 2678

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:26:23Z",
      "updated_at": "2022-06-10T20:26:24Z",
      "number": 11340,
      "odometer": 90321,
      "odometer_out": 90325,
      "state": "invoice",
      "customer_id": 3,
      "technician_id": 2,
      "advisor_id": 1,
      "vehicle_id": 1,
      "detail": "Key tag 84, customer waiting",
      "preferred_contact_type": "text",
      "part_discount_cents": 2500,
      "labor_discount_cents": 3500,
      "shop_id": 2,
      "status_id": 1,
      "taxable": true,
      "customer_source": "Repeat",
      "supply_fee_cents": 3250,
      "part_discount_percentage": null,
      "labor_discount_percentage": null,
      "started_at": "2022-06-05T20:26:23Z",
      "closed_at": "2022-06-07T20:26:23Z",
      "picked_up_at": "2022-06-08T20:26:23Z",
      "due_in_at": "2022-06-05T20:26:23Z",
      "due_out_at": "2022-06-08T20:26:23Z",
      "part_tax_rate": 0.0,
      "labor_tax_rate": 0.0,
      "hazmat_tax_rate": 0.0,
      "sublet_tax_rate": 0.0,
      "services": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:26:23Z",
          "updated_at": "2022-06-10T20:26:24Z",
          "title": "Warning Light On",
          "completed": false,
          "category_id": 4,
          "canned_job_id": 1,
          "comment": "",
          "labor_rate_cents": null,
          "completed_at": null,
          "last_completed_at": null,
          "labors": [
            {
              "id": 1,
              "created_at": "2022-06-10T20:26:23Z",
              "updated_at": "2022-06-10T20:26:23Z",
              "name": "Advise on proper course of action",
              "technician_id": 2,
              "taxable": false,
              "hours": 0.13
            }
          ],
          "parts": [
            {
              "id": 1,
              "created_at": "2022-06-10T20:26:23Z",
              "updated_at": "2022-06-10T20:26:23Z",
              "brand": "Superbright",
              "description": "194 LED - AMBER 120*",
              "number": "WLED-A-120",
              "quoted_price_cents": 395,
              "cost_cents": 85,
              "part_inventory_id": 1,
              "taxable": false,
              "quantity": 2.0
            }
          ],
          "hazmats": [
            {
              "id": 1,
              "created_at": "2022-06-10T20:26:24Z",
              "updated_at": "2022-06-10T20:26:24Z",
              "name": "Recycling fee",
              "fee_cents": 2000,
              "taxable": true,
              "quantity": 1.0
            }
          ],
          "sublets": [
            {
              "id": 1,
              "created_at": "2022-06-10T20:26:24Z",
              "updated_at": "2022-06-10T20:26:24Z",
              "name": "Windshield repair",
              "price_cents": 1999,
              "cost_cents": 999,
              "provider": "Windshield Bros.",
              "invoice_number": "1111",
              "description": "windshield provider",
              "taxable": true,
              "vendor_id": 1,
              "invoice_date": "2022-06-11T20:26:24Z"
            }
          ],
          "inspections": [
            {
              "id": 1,
              "created_at": "2022-06-10T20:26:24Z",
              "updated_at": "2022-06-10T20:26:24Z",
              "name": "Measure tire tread depth",
              "state": "red",
              "detail": "Tread at 3/16"
            }
          ]
        }
      ],
      "payments": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:26:23Z",
          "updated_at": "2022-06-10T20:26:23Z",
          "payment_type": "Credit Card - Visa",
          "payment_type_details": {
            "type": "Credit Card",
            "name": "Visa"
          },
          "notes": "Customer made partial payment",
          "amount_cents": 21849
        }
      ],
      "integrator_tags": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:26:24Z",
          "updated_at": "2022-06-10T20:26:24Z",
          "taggable_type": "RepairOrder",
          "taggable_id": 1,
          "name": "tag_name",
          "value": "tag_value"
        }
      ],
      "label": {
        "text": null,
        "color_code": null
      }
    }
  ],
  "limit": 1,
  "limited": false,
  "total_count": 1,
  "current_page": 1,
  "total_pages": 1
}

Request

Route

GET api/v1/tenants/1/repair_orders?shop_id=2

Headers

Content-Type: application/json
Accept: application/json
X-Api-Partner-Id: 6f7820c2-0478-45b9-b70a-487e5cb464bf
X-Api-Secret: OWCJC2epggRvVr2rsDIcjgSUtUA59_5Hhh6vf-vLrEs
Host: example.org
Cookie: 

Query Parameters

shop_id=2

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/repair_orders?shop_id=2" -X GET \
	-H "Content-Type: application/json" \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 6f7820c2-0478-45b9-b70a-487e5cb464bf" \
	-H "X-Api-Secret: OWCJC2epggRvVr2rsDIcjgSUtUA59_5Hhh6vf-vLrEs"

Response

Simulated Response

Response Fields

Name Description type
state One of 'estimate', 'in_progress', or 'invoice'. string
status_id A foreign key which points to a Status.id. Represents the Status for this RO. number
customer_id A foreign key which points to a Customer.id. Represents the Customer for this RO. number
technician_id A foreign key which points to a Staff.id. Represents the technician assigned to this RO. number
advisor_id A foreign key which points to a Staff.id. Represents the service advisor assigned to this RO. number
vehicle_id A foreign key which points to a Vehicle.id. Represents the vehicle for this RO. number
shop_id A foreign key which points to a Shop.id. Represents the Shop for this RO. number
detail Notes made by the staff about this RO. string
preferred_contact_type How the customer prefers to receive progress updates about this RO. One of 'Waiting', 'Phone', 'Email', 'Text'. More contact types may be added. string
part_discount_cents The total amount in cents parts are discounted on this RO, subtracted from the parts subtotal before tax. This will be null if part_discount_percentage is non-null. number
labor_discount_cents The total amount in cents labor is discounted on this RO, subtracted from the labor subtotal before tax. This will be null if labor_discount_percentage is non-null. number
started_at The datetime the RO was started and transitioned to 'in_progress' state, or null if the RO is still an estimate. datetime string
closed_at The datetime the RO was closed and transitioned to 'invoice' state, or null if the RO is not yet an invoice. datetime string
picked_up_at The datetime the vehicle was marked as 'picked up', or null if the vehicle is still in the shop. datetime string
due_in_at The datetime the vehicle was scheduled to be dropped off. datetime string
due_out_at The datetime the vehicle was scheduled to be picked up. datetime string
part_tax_rate The tax rate applied to parts on this RO. number
labor_tax_rate The tax rate applied to labor on this RO. number
sublet_tax_rate The tax rate applied to sublets on this RO. number
hazmat_tax_rate The tax rate applied to hazmats and fees on this RO. number
taxable Determines if tax rates will apply on this RO. boolean
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags
customer_source The marketing source of the customer for this RO. Example: "Repeat", "Referral", "Website", etc string
supply_fee_cents The shop supplies fee in cents. If and only if null, the supply fee for this RO should instead be computed by the settings in the associated shop (repair_order.shop_id). If non-null, this value should be used as the supply fee. This value is taxed as a part. number
part_discount_percentage The amount in percent that parts are discounted on this RO (ex: 7.55%), subtracted from the parts subtotal before tax. This will be null if part_discount_cents is non-null. number
labor_discount_percentage The amount in percent labor is discounted on this RO (ex: 7.55%), subtracted from the labor subtotal before tax. This will be null if labor_discount_cents is non-null. number
services[completed] True if the service has been marked as completed by a staff member, false otherwise. boolean
services[labor_rate_cents] The rate in cents that labor on this service is charged at. number
services[canned_job_id] A foreign key which points to a CannedJob.id. Represents the canned job assigned to this specific service item. number
services[comment] Service comments. text
services[completed_at] The datetime the service was marked completed datetime string
services[last_completed_at] The datetime the service was last marked completed. This may occur if the service had been marked completed then restarted and marked completed again. datetime string
labors[technician_id] A foreign key which points to a Staff.id. Represents the technician assigned to this specific labor item. number
labors[taxable] Determines if labor tax rate will be applied to this labor. boolean
parts[quoted_price_cents] The price of this part that is being sold to the customer in cents per unit. number
parts[cost_cents] The wholesale cost of this part to the shop in cents per unit. number
parts[part_inventory_id] A foreign key which points to an Inventory.id. Represents the associated inventory and quantity information for this part. number
parts[quantity] The number of units this part line item represents. number
parts[taxable] Determines if part tax rate will be applied to this part. boolean
hazmats[fee_cents] The price of this fee or hazmat in cents per unit. number
hazmats[quantity] The number of units. number
hazmats[taxable] Determines if hazmat tax rate will be applied to this hazmat. boolean
sublets[price_cents] The price in cents of sublet being sold to customer. number
sublets[cost_cents] The amount in cents paid to provider for services. number
sublets[provider] The name of the entity providing services for sublet. string
sublets[invoice_number] A string which identifies invoice from provider. string
sublets[invoice_date] The date when the invoice from provider was created. datetime string
sublets[taxable] Determines if sublet tax rate will be applied to this sublet. boolean
sublets[vendor_id] A foreign key which points to a Vendor.id. Represents a vendor associated with this sublet item. number
inspections[name] The name of this inspection as it appears on the RO. string
inspections[state] One of "yellow", "green", "unchecked", "red". More states may be added. string
inspections[detail] Optional staff-entered details about the results of this inspection. string
payments[payment_type] The display name of the payment type. Payment types are customizable for each shop. Examples: "Other", "Credit Card", "Check", "Cash", "Credit Card - Visa", and "Other - Warranty". string
payments[payment_type_details] An object containing the type and name of the payment type. Example: { type: "Credit Card", name: "Mastercard" }. The type is always present, but the name could be null or blank. object
payments[notes] Staff-entered notes about this payment. string
payments[amount_cents] The total payment amount, in cents. number
label[text] The description of the label. string
label[color_code] The color code of which the label is represented. string

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892844
ETag: W/"22402e1075dc5720d445c4cb0796894c"
X-Request-Id: 853dfbd6-f5ef-4243-ab1c-aa604ea3f8c3
X-Runtime: 0.030676
Content-Length: 2678

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:26:23Z",
      "updated_at": "2022-06-10T20:26:24Z",
      "number": 11340,
      "odometer": 90321,
      "odometer_out": 90325,
      "state": "invoice",
      "customer_id": 3,
      "technician_id": 2,
      "advisor_id": 1,
      "vehicle_id": 1,
      "detail": "Key tag 84, customer waiting",
      "preferred_contact_type": "text",
      "part_discount_cents": 2500,
      "labor_discount_cents": 3500,
      "shop_id": 2,
      "status_id": 1,
      "taxable": true,
      "customer_source": "Repeat",
      "supply_fee_cents": 3250,
      "part_discount_percentage": null,
      "labor_discount_percentage": null,
      "started_at": "2022-06-05T20:26:23Z",
      "closed_at": "2022-06-07T20:26:23Z",
      "picked_up_at": "2022-06-08T20:26:23Z",
      "due_in_at": "2022-06-05T20:26:23Z",
      "due_out_at": "2022-06-08T20:26:23Z",
      "part_tax_rate": 0.0,
      "labor_tax_rate": 0.0,
      "hazmat_tax_rate": 0.0,
      "sublet_tax_rate": 0.0,
      "services": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:26:23Z",
          "updated_at": "2022-06-10T20:26:24Z",
          "title": "Warning Light On",
          "completed": false,
          "category_id": 4,
          "canned_job_id": 1,
          "comment": "",
          "labor_rate_cents": null,
          "completed_at": null,
          "last_completed_at": null,
          "labors": [
            {
              "id": 1,
              "created_at": "2022-06-10T20:26:23Z",
              "updated_at": "2022-06-10T20:26:23Z",
              "name": "Advise on proper course of action",
              "technician_id": 2,
              "taxable": false,
              "hours": 0.13
            }
          ],
          "parts": [
            {
              "id": 1,
              "created_at": "2022-06-10T20:26:23Z",
              "updated_at": "2022-06-10T20:26:23Z",
              "brand": "Superbright",
              "description": "194 LED - AMBER 120*",
              "number": "WLED-A-120",
              "quoted_price_cents": 395,
              "cost_cents": 85,
              "part_inventory_id": 1,
              "taxable": false,
              "quantity": 2.0
            }
          ],
          "hazmats": [
            {
              "id": 1,
              "created_at": "2022-06-10T20:26:24Z",
              "updated_at": "2022-06-10T20:26:24Z",
              "name": "Recycling fee",
              "fee_cents": 2000,
              "taxable": true,
              "quantity": 1.0
            }
          ],
          "sublets": [
            {
              "id": 1,
              "created_at": "2022-06-10T20:26:24Z",
              "updated_at": "2022-06-10T20:26:24Z",
              "name": "Windshield repair",
              "price_cents": 1999,
              "cost_cents": 999,
              "provider": "Windshield Bros.",
              "invoice_number": "1111",
              "description": "windshield provider",
              "taxable": true,
              "vendor_id": 1,
              "invoice_date": "2022-06-11T20:26:24Z"
            }
          ],
          "inspections": [
            {
              "id": 1,
              "created_at": "2022-06-10T20:26:24Z",
              "updated_at": "2022-06-10T20:26:24Z",
              "name": "Measure tire tread depth",
              "state": "red",
              "detail": "Tread at 3/16"
            }
          ]
        }
      ],
      "payments": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:26:23Z",
          "updated_at": "2022-06-10T20:26:23Z",
          "payment_type": "Credit Card - Visa",
          "payment_type_details": {
            "type": "Credit Card",
            "name": "Visa"
          },
          "notes": "Customer made partial payment",
          "amount_cents": 21849
        }
      ],
      "integrator_tags": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:26:24Z",
          "updated_at": "2022-06-10T20:26:24Z",
          "taggable_type": "RepairOrder",
          "taggable_id": 1,
          "name": "tag_name",
          "value": "tag_value"
        }
      ],
      "label": {
        "text": null,
        "color_code": null
      }
    }
  ],
  "limit": 1,
  "limited": false,
  "total_count": 1,
  "current_page": 1,
  "total_pages": 1
}

Get a specific repair order by ID

Endpoint

GET api/v1/tenants/:tenant_id/repair_orders/:id

Parameters

Name Description
associations An optional list that controls what nested associations are included in the response. Currently supported values are 'none', 'payments', 'integrator_tags', 'label', 'services', 'services.labors', 'services.parts', 'services.hazmats', 'services.inspections', 'services.sublets' 'customer', 'customer.phones', 'customer.integrator_tags' 'vehicle', 'vehicle.integrator_tags. Note that if you specify a deeply nested association e.g. 'services.hazmats', then 'services' is implied, so it's not necessary to provide 'services,services.hazmats'. Example: /api/v1/tenants/<tenant id>/repair_orders?associations[]=customer&associations[]=services.inspections&associations[]=vehicle.integrator_tags

Request

Route

GET api/v1/tenants/1/repair_orders/1

Headers

Content-Type: application/json
Accept: application/json
X-Api-Partner-Id: 8d14340d-d040-4aff-b09b-649e9527a477
X-Api-Secret: I7_Ih7CMLeJbozHbKupbXloi2zlsLABuC97EQ7u-37w
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/repair_orders/1" -X GET \
	-H "Content-Type: application/json" \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 8d14340d-d040-4aff-b09b-649e9527a477" \
	-H "X-Api-Secret: I7_Ih7CMLeJbozHbKupbXloi2zlsLABuC97EQ7u-37w"

Response

Simulated Response

Response Fields

Name Description type
state One of 'estimate', 'in_progress', or 'invoice'. string
status_id A foreign key which points to a Status.id. Represents the Status for this RO. number
customer_id A foreign key which points to a Customer.id. Represents the Customer for this RO. number
technician_id A foreign key which points to a Staff.id. Represents the technician assigned to this RO. number
advisor_id A foreign key which points to a Staff.id. Represents the service advisor assigned to this RO. number
vehicle_id A foreign key which points to a Vehicle.id. Represents the vehicle for this RO. number
shop_id A foreign key which points to a Shop.id. Represents the Shop for this RO. number
detail Notes made by the staff about this RO. string
preferred_contact_type How the customer prefers to receive progress updates about this RO. One of 'Waiting', 'Phone', 'Email', 'Text'. More contact types may be added. string
part_discount_cents The total amount in cents parts are discounted on this RO, subtracted from the parts subtotal before tax. This will be null if part_discount_percentage is non-null. number
labor_discount_cents The total amount in cents labor is discounted on this RO, subtracted from the labor subtotal before tax. This will be null if labor_discount_percentage is non-null. number
started_at The datetime the RO was started and transitioned to 'in_progress' state, or null if the RO is still an estimate. datetime string
closed_at The datetime the RO was closed and transitioned to 'invoice' state, or null if the RO is not yet an invoice. datetime string
picked_up_at The datetime the vehicle was marked as 'picked up', or null if the vehicle is still in the shop. datetime string
due_in_at The datetime the vehicle was scheduled to be dropped off. datetime string
due_out_at The datetime the vehicle was scheduled to be picked up. datetime string
part_tax_rate The tax rate applied to parts on this RO. number
labor_tax_rate The tax rate applied to labor on this RO. number
sublet_tax_rate The tax rate applied to sublets on this RO. number
hazmat_tax_rate The tax rate applied to hazmats and fees on this RO. number
taxable Determines if tax rates will apply on this RO. boolean
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags
customer_source The marketing source of the customer for this RO. Example: "Repeat", "Referral", "Website", etc string
supply_fee_cents The shop supplies fee in cents. If and only if null, the supply fee for this RO should instead be computed by the settings in the associated shop (repair_order.shop_id). If non-null, this value should be used as the supply fee. This value is taxed as a part. number
part_discount_percentage The amount in percent that parts are discounted on this RO (ex: 7.55%), subtracted from the parts subtotal before tax. This will be null if part_discount_cents is non-null. number
labor_discount_percentage The amount in percent labor is discounted on this RO (ex: 7.55%), subtracted from the labor subtotal before tax. This will be null if labor_discount_cents is non-null. number
services[completed] True if the service has been marked as completed by a staff member, false otherwise. boolean
services[labor_rate_cents] The rate in cents that labor on this service is charged at. number
services[canned_job_id] A foreign key which points to a CannedJob.id. Represents the canned job assigned to this specific service item. number
services[comment] Service comments. text
services[completed_at] The datetime the service was marked completed datetime string
services[last_completed_at] The datetime the service was last marked completed. This may occur if the service had been marked completed then restarted and marked completed again. datetime string
labors[technician_id] A foreign key which points to a Staff.id. Represents the technician assigned to this specific labor item. number
labors[taxable] Determines if labor tax rate will be applied to this labor. boolean
parts[quoted_price_cents] The price of this part that is being sold to the customer in cents per unit. number
parts[cost_cents] The wholesale cost of this part to the shop in cents per unit. number
parts[part_inventory_id] A foreign key which points to an Inventory.id. Represents the associated inventory and quantity information for this part. number
parts[quantity] The number of units this part line item represents. number
parts[taxable] Determines if part tax rate will be applied to this part. boolean
hazmats[fee_cents] The price of this fee or hazmat in cents per unit. number
hazmats[quantity] The number of units. number
hazmats[taxable] Determines if hazmat tax rate will be applied to this hazmat. boolean
sublets[price_cents] The price in cents of sublet being sold to customer. number
sublets[cost_cents] The amount in cents paid to provider for services. number
sublets[provider] The name of the entity providing services for sublet. string
sublets[invoice_number] A string which identifies invoice from provider. string
sublets[invoice_date] The date when the invoice from provider was created. datetime string
sublets[taxable] Determines if sublet tax rate will be applied to this sublet. boolean
sublets[vendor_id] A foreign key which points to a Vendor.id. Represents a vendor associated with this sublet item. number
inspections[name] The name of this inspection as it appears on the RO. string
inspections[state] One of "yellow", "green", "unchecked", "red". More states may be added. string
inspections[detail] Optional staff-entered details about the results of this inspection. string
payments[payment_type] The display name of the payment type. Payment types are customizable for each shop. Examples: "Other", "Credit Card", "Check", "Cash", "Credit Card - Visa", and "Other - Warranty". string
payments[payment_type_details] An object containing the type and name of the payment type. Example: { type: "Credit Card", name: "Mastercard" }. The type is always present, but the name could be null or blank. object
payments[notes] Staff-entered notes about this payment. string
payments[amount_cents] The total payment amount, in cents. number
label[text] The description of the label. string
label[color_code] The color code of which the label is represented. string

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892846
ETag: W/"49c303bd703f78a23c35a55b58f00858"
X-Request-Id: 7a6f9d55-dfdf-43d3-a8bd-14ff044120e6
X-Runtime: 0.030560
Content-Length: 2589

Body

{
  "id": 1,
  "created_at": "2022-06-10T20:26:26Z",
  "updated_at": "2022-06-10T20:26:26Z",
  "number": 11340,
  "odometer": 90321,
  "odometer_out": 90325,
  "state": "invoice",
  "customer_id": 3,
  "technician_id": 2,
  "advisor_id": 1,
  "vehicle_id": 1,
  "detail": "Key tag 84, customer waiting",
  "preferred_contact_type": "text",
  "part_discount_cents": 2500,
  "labor_discount_cents": 3500,
  "shop_id": 2,
  "status_id": 1,
  "taxable": true,
  "customer_source": "Repeat",
  "supply_fee_cents": 3250,
  "part_discount_percentage": null,
  "labor_discount_percentage": null,
  "started_at": "2022-06-05T20:26:26Z",
  "closed_at": "2022-06-07T20:26:26Z",
  "picked_up_at": "2022-06-08T20:26:26Z",
  "due_in_at": "2022-06-05T20:26:26Z",
  "due_out_at": "2022-06-08T20:26:26Z",
  "part_tax_rate": 0.0,
  "labor_tax_rate": 0.0,
  "hazmat_tax_rate": 0.0,
  "sublet_tax_rate": 0.0,
  "services": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:26:26Z",
      "updated_at": "2022-06-10T20:26:26Z",
      "title": "Warning Light On",
      "completed": false,
      "category_id": 4,
      "canned_job_id": 1,
      "comment": "",
      "labor_rate_cents": null,
      "completed_at": null,
      "last_completed_at": null,
      "labors": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:26:26Z",
          "updated_at": "2022-06-10T20:26:26Z",
          "name": "Advise on proper course of action",
          "technician_id": 2,
          "taxable": false,
          "hours": 0.13
        }
      ],
      "parts": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:26:26Z",
          "updated_at": "2022-06-10T20:26:26Z",
          "brand": "Superbright",
          "description": "194 LED - AMBER 120*",
          "number": "WLED-A-120",
          "quoted_price_cents": 395,
          "cost_cents": 85,
          "part_inventory_id": 1,
          "taxable": false,
          "quantity": 2.0
        }
      ],
      "hazmats": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:26:26Z",
          "updated_at": "2022-06-10T20:26:26Z",
          "name": "Recycling fee",
          "fee_cents": 2000,
          "taxable": true,
          "quantity": 1.0
        }
      ],
      "sublets": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:26:26Z",
          "updated_at": "2022-06-10T20:26:26Z",
          "name": "Windshield repair",
          "price_cents": 1999,
          "cost_cents": 999,
          "provider": "Windshield Bros.",
          "invoice_number": "1111",
          "description": "windshield provider",
          "taxable": true,
          "vendor_id": 1,
          "invoice_date": "2022-06-11T20:26:26Z"
        }
      ],
      "inspections": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:26:26Z",
          "updated_at": "2022-06-10T20:26:26Z",
          "name": "Measure tire tread depth",
          "state": "red",
          "detail": "Tread at 3/16"
        }
      ]
    }
  ],
  "payments": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:26:26Z",
      "updated_at": "2022-06-10T20:26:26Z",
      "payment_type": "Credit Card - Visa",
      "payment_type_details": {
        "type": "Credit Card",
        "name": "Visa"
      },
      "notes": "Customer made partial payment",
      "amount_cents": 21849
    }
  ],
  "integrator_tags": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:26:26Z",
      "updated_at": "2022-06-10T20:26:26Z",
      "taggable_type": "RepairOrder",
      "taggable_id": 1,
      "name": "tag_name",
      "value": "tag_value"
    }
  ],
  "label": {
    "text": null,
    "color_code": null
  }
}

Start a specific repair order

Endpoint

POST api/v1/tenants/:tenant_id/repair_orders/:id/start

Parameters

Name Description type
initial_assignee_id required A foreign key that points to a Staff.id that will be initially assigned the RO. integer
send_estimate_email required True if an email should be sent to this RO’s customer’s email address, or false otherwise. This parameter will be ignored if the customer does not have an email address. boolean

Request

Route

POST api/v1/tenants/1/repair_orders/1/start

Headers

Content-Type: application/json
Accept: application/json
X-Api-Partner-Id: bc1369cb-14e3-466c-810d-5d88b9399518
X-Api-Secret: 5OUxaTxNxAvzMyxWtSeznTsrnKN2WOu6zGnEUOUVgdc
Host: example.org
Cookie: 

Body

{
  "initial_assignee_id": 3,
  "send_estimate_email": true
}

cURL

curl "https://api.shop-ware.com/api/v1/tenants/1/repair_orders/1/start" -d '{"initial_assignee_id":3,"send_estimate_email":true}' -X POST \
	-H "Content-Type: application/json" \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: bc1369cb-14e3-466c-810d-5d88b9399518" \
	-H "X-Api-Secret: 5OUxaTxNxAvzMyxWtSeznTsrnKN2WOu6zGnEUOUVgdc"

Response

Simulated Response

Response Fields

Name Description type
state One of 'estimate', 'in_progress', or 'invoice'. string
status_id A foreign key which points to a Status.id. Represents the Status for this RO. number
customer_id A foreign key which points to a Customer.id. Represents the Customer for this RO. number
technician_id A foreign key which points to a Staff.id. Represents the technician assigned to this RO. number
advisor_id A foreign key which points to a Staff.id. Represents the service advisor assigned to this RO. number
vehicle_id A foreign key which points to a Vehicle.id. Represents the vehicle for this RO. number
shop_id A foreign key which points to a Shop.id. Represents the Shop for this RO. number
detail Notes made by the staff about this RO. string
preferred_contact_type How the customer prefers to receive progress updates about this RO. One of 'Waiting', 'Phone', 'Email', 'Text'. More contact types may be added. string
part_discount_cents The total amount in cents parts are discounted on this RO, subtracted from the parts subtotal before tax. This will be null if part_discount_percentage is non-null. number
labor_discount_cents The total amount in cents labor is discounted on this RO, subtracted from the labor subtotal before tax. This will be null if labor_discount_percentage is non-null. number
started_at The datetime the RO was started and transitioned to 'in_progress' state, or null if the RO is still an estimate. datetime string
closed_at The datetime the RO was closed and transitioned to 'invoice' state, or null if the RO is not yet an invoice. datetime string
picked_up_at The datetime the vehicle was marked as 'picked up', or null if the vehicle is still in the shop. datetime string
due_in_at The datetime the vehicle was scheduled to be dropped off. datetime string
due_out_at The datetime the vehicle was scheduled to be picked up. datetime string
part_tax_rate The tax rate applied to parts on this RO. number
labor_tax_rate The tax rate applied to labor on this RO. number
sublet_tax_rate The tax rate applied to sublets on this RO. number
hazmat_tax_rate The tax rate applied to hazmats and fees on this RO. number
taxable Determines if tax rates will apply on this RO. boolean
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags
customer_source The marketing source of the customer for this RO. Example: "Repeat", "Referral", "Website", etc string
supply_fee_cents The shop supplies fee in cents. If and only if null, the supply fee for this RO should instead be computed by the settings in the associated shop (repair_order.shop_id). If non-null, this value should be used as the supply fee. This value is taxed as a part. number
part_discount_percentage The amount in percent that parts are discounted on this RO (ex: 7.55%), subtracted from the parts subtotal before tax. This will be null if part_discount_cents is non-null. number
labor_discount_percentage The amount in percent labor is discounted on this RO (ex: 7.55%), subtracted from the labor subtotal before tax. This will be null if labor_discount_cents is non-null. number
services[completed] True if the service has been marked as completed by a staff member, false otherwise. boolean
services[labor_rate_cents] The rate in cents that labor on this service is charged at. number
services[canned_job_id] A foreign key which points to a CannedJob.id. Represents the canned job assigned to this specific service item. number
services[comment] Service comments. text
services[completed_at] The datetime the service was marked completed datetime string
services[last_completed_at] The datetime the service was last marked completed. This may occur if the service had been marked completed then restarted and marked completed again. datetime string
labors[technician_id] A foreign key which points to a Staff.id. Represents the technician assigned to this specific labor item. number
labors[taxable] Determines if labor tax rate will be applied to this labor. boolean
parts[quoted_price_cents] The price of this part that is being sold to the customer in cents per unit. number
parts[cost_cents] The wholesale cost of this part to the shop in cents per unit. number
parts[part_inventory_id] A foreign key which points to an Inventory.id. Represents the associated inventory and quantity information for this part. number
parts[quantity] The number of units this part line item represents. number
parts[taxable] Determines if part tax rate will be applied to this part. boolean
hazmats[fee_cents] The price of this fee or hazmat in cents per unit. number
hazmats[quantity] The number of units. number
hazmats[taxable] Determines if hazmat tax rate will be applied to this hazmat. boolean
sublets[price_cents] The price in cents of sublet being sold to customer. number
sublets[cost_cents] The amount in cents paid to provider for services. number
sublets[provider] The name of the entity providing services for sublet. string
sublets[invoice_number] A string which identifies invoice from provider. string
sublets[invoice_date] The date when the invoice from provider was created. datetime string
sublets[taxable] Determines if sublet tax rate will be applied to this sublet. boolean
sublets[vendor_id] A foreign key which points to a Vendor.id. Represents a vendor associated with this sublet item. number
inspections[name] The name of this inspection as it appears on the RO. string
inspections[state] One of "yellow", "green", "unchecked", "red". More states may be added. string
inspections[detail] Optional staff-entered details about the results of this inspection. string
payments[payment_type] The display name of the payment type. Payment types are customizable for each shop. Examples: "Other", "Credit Card", "Check", "Cash", "Credit Card - Visa", and "Other - Warranty". string
payments[payment_type_details] An object containing the type and name of the payment type. Example: { type: "Credit Card", name: "Mastercard" }. The type is always present, but the name could be null or blank. object
payments[notes] Staff-entered notes about this payment. string
payments[amount_cents] The total payment amount, in cents. number
label[text] The description of the label. string
label[color_code] The color code of which the label is represented. string

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892854
ETag: W/"5fb596996500335950fc3118fd43aa8e"
X-Request-Id: e2e57cc2-c2c3-429a-97f6-e1176d4c230a
X-Runtime: 0.030341
Content-Length: 2453

Body

{
  "id": 1,
  "created_at": "2022-06-10T20:26:33Z",
  "updated_at": "2022-06-10T20:26:33Z",
  "number": 164515397,
  "odometer": null,
  "odometer_out": null,
  "state": "estimate",
  "customer_id": 1,
  "technician_id": null,
  "advisor_id": null,
  "vehicle_id": 1,
  "detail": null,
  "preferred_contact_type": null,
  "part_discount_cents": null,
  "labor_discount_cents": null,
  "shop_id": 1,
  "status_id": null,
  "taxable": true,
  "customer_source": null,
  "supply_fee_cents": null,
  "part_discount_percentage": null,
  "labor_discount_percentage": null,
  "started_at": null,
  "closed_at": null,
  "picked_up_at": null,
  "due_in_at": null,
  "due_out_at": null,
  "part_tax_rate": 0.0,
  "labor_tax_rate": 0.0,
  "hazmat_tax_rate": 0.0,
  "sublet_tax_rate": 0.0,
  "services": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:26:33Z",
      "updated_at": "2022-06-10T20:26:33Z",
      "title": "Warning Light On",
      "completed": false,
      "category_id": 4,
      "canned_job_id": 1,
      "comment": "",
      "labor_rate_cents": 10000,
      "completed_at": null,
      "last_completed_at": null,
      "labors": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:26:33Z",
          "updated_at": "2022-06-10T20:26:33Z",
          "name": "Advise on proper course of action",
          "technician_id": 2,
          "taxable": false,
          "hours": 0.13
        }
      ],
      "parts": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:26:33Z",
          "updated_at": "2022-06-10T20:26:33Z",
          "brand": "Superbright",
          "description": "194 LED - AMBER 120*",
          "number": "WLED-A-120",
          "quoted_price_cents": 395,
          "cost_cents": 85,
          "part_inventory_id": 1,
          "taxable": false,
          "quantity": 2.0
        }
      ],
      "hazmats": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:26:33Z",
          "updated_at": "2022-06-10T20:26:33Z",
          "name": "Recycling fee",
          "fee_cents": 2000,
          "taxable": true,
          "quantity": 1.0
        }
      ],
      "sublets": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:26:33Z",
          "updated_at": "2022-06-10T20:26:33Z",
          "name": "Windshield repair",
          "price_cents": 1999,
          "cost_cents": 999,
          "provider": "Windshield Bros.",
          "invoice_number": "1111",
          "description": "windshield provider",
          "taxable": true,
          "vendor_id": 1,
          "invoice_date": "2022-06-11T20:26:33Z"
        }
      ],
      "inspections": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:26:33Z",
          "updated_at": "2022-06-10T20:26:33Z",
          "name": "Measure tire tread depth",
          "state": "red",
          "detail": "Tread at 3/16"
        }
      ]
    }
  ],
  "payments": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:26:33Z",
      "updated_at": "2022-06-10T20:26:33Z",
      "payment_type": "Credit Card - Visa",
      "payment_type_details": {
        "type": "Credit Card",
        "name": "Visa"
      },
      "notes": "Customer made partial payment",
      "amount_cents": 21849
    }
  ],
  "integrator_tags": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:26:33Z",
      "updated_at": "2022-06-10T20:26:33Z",
      "taggable_type": "RepairOrder",
      "taggable_id": 1,
      "name": "tag_name",
      "value": "tag_value"
    }
  ],
  "label": null
}

Update a specific repair order

Endpoint

PUT api/v1/tenants/:tenant_id/repair_orders/:id

Parameters

Name Description
number Repair order number
odometer Mileage value when car is dropped off
technician_id A foreign key which points to a Staff.id. Represents the technician assigned to this RO.
advisor_id A foreign key which points to a Staff.id. Represents the service advisor assigned to this RO.
detail Notes made by the staff about this RO.
preferred_contact_type How the customer prefers to receive progress updates about this RO. One of 'Waiting', 'Phone', 'Email', 'Text'. More contact types may be added.
taxable Determines if tax rates will apply on this RO.
due_in_at The datetime the vehicle was scheduled to be dropped off.
status_id A foreign key which points to a Status.id. Represents the status for this RO.
customer_source The marketing source of the customer for this RO. Example: "Repeat", "Referral", "Website", etc.

Request

Route

PUT api/v1/tenants/1/repair_orders/2

Headers

Content-Type: application/json
Accept: application/json
X-Api-Partner-Id: 80197e71-ac56-4697-b2f8-65f4f5346b49
X-Api-Secret: JAWrUbGUXtZK_vZPk_T0vzvGjVEc6BocdcmiAnrB3jo
Host: example.org
Cookie: 

Body

{
  "number": 1122,
  "odometer": 99999,
  "technician_id": 1,
  "advisor_id": 2,
  "detail": "Key tag 85, customer waiting",
  "preferred_contact_type": "phone",
  "taxable": false,
  "due_in_at": "2022-06-13T20:26:31Z",
  "status_id": 1,
  "customer_source": "Website"
}

cURL

curl "https://api.shop-ware.com/api/v1/tenants/1/repair_orders/2" -d '{"number":1122,"odometer":99999,"technician_id":1,"advisor_id":2,"detail":"Key tag 85, customer waiting","preferred_contact_type":"phone","taxable":false,"due_in_at":"2022-06-13T20:26:31Z","status_id":1,"customer_source":"Website"}' -X PUT \
	-H "Content-Type: application/json" \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 80197e71-ac56-4697-b2f8-65f4f5346b49" \
	-H "X-Api-Secret: JAWrUbGUXtZK_vZPk_T0vzvGjVEc6BocdcmiAnrB3jo"

Response

Simulated Response

Response Fields

Name Description type
state One of 'estimate', 'in_progress', or 'invoice'. string
status_id A foreign key which points to a Status.id. Represents the Status for this RO. number
customer_id A foreign key which points to a Customer.id. Represents the Customer for this RO. number
technician_id A foreign key which points to a Staff.id. Represents the technician assigned to this RO. number
advisor_id A foreign key which points to a Staff.id. Represents the service advisor assigned to this RO. number
vehicle_id A foreign key which points to a Vehicle.id. Represents the vehicle for this RO. number
shop_id A foreign key which points to a Shop.id. Represents the Shop for this RO. number
detail Notes made by the staff about this RO. string
preferred_contact_type How the customer prefers to receive progress updates about this RO. One of 'Waiting', 'Phone', 'Email', 'Text'. More contact types may be added. string
part_discount_cents The total amount in cents parts are discounted on this RO, subtracted from the parts subtotal before tax. This will be null if part_discount_percentage is non-null. number
labor_discount_cents The total amount in cents labor is discounted on this RO, subtracted from the labor subtotal before tax. This will be null if labor_discount_percentage is non-null. number
started_at The datetime the RO was started and transitioned to 'in_progress' state, or null if the RO is still an estimate. datetime string
closed_at The datetime the RO was closed and transitioned to 'invoice' state, or null if the RO is not yet an invoice. datetime string
picked_up_at The datetime the vehicle was marked as 'picked up', or null if the vehicle is still in the shop. datetime string
due_in_at The datetime the vehicle was scheduled to be dropped off. datetime string
due_out_at The datetime the vehicle was scheduled to be picked up. datetime string
part_tax_rate The tax rate applied to parts on this RO. number
labor_tax_rate The tax rate applied to labor on this RO. number
sublet_tax_rate The tax rate applied to sublets on this RO. number
hazmat_tax_rate The tax rate applied to hazmats and fees on this RO. number
taxable Determines if tax rates will apply on this RO. boolean
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags
customer_source The marketing source of the customer for this RO. Example: "Repeat", "Referral", "Website", etc string
supply_fee_cents The shop supplies fee in cents. If and only if null, the supply fee for this RO should instead be computed by the settings in the associated shop (repair_order.shop_id). If non-null, this value should be used as the supply fee. This value is taxed as a part. number
part_discount_percentage The amount in percent that parts are discounted on this RO (ex: 7.55%), subtracted from the parts subtotal before tax. This will be null if part_discount_cents is non-null. number
labor_discount_percentage The amount in percent labor is discounted on this RO (ex: 7.55%), subtracted from the labor subtotal before tax. This will be null if labor_discount_cents is non-null. number
services[completed] True if the service has been marked as completed by a staff member, false otherwise. boolean
services[labor_rate_cents] The rate in cents that labor on this service is charged at. number
services[canned_job_id] A foreign key which points to a CannedJob.id. Represents the canned job assigned to this specific service item. number
services[comment] Service comments. text
services[completed_at] The datetime the service was marked completed datetime string
services[last_completed_at] The datetime the service was last marked completed. This may occur if the service had been marked completed then restarted and marked completed again. datetime string
labors[technician_id] A foreign key which points to a Staff.id. Represents the technician assigned to this specific labor item. number
labors[taxable] Determines if labor tax rate will be applied to this labor. boolean
parts[quoted_price_cents] The price of this part that is being sold to the customer in cents per unit. number
parts[cost_cents] The wholesale cost of this part to the shop in cents per unit. number
parts[part_inventory_id] A foreign key which points to an Inventory.id. Represents the associated inventory and quantity information for this part. number
parts[quantity] The number of units this part line item represents. number
parts[taxable] Determines if part tax rate will be applied to this part. boolean
hazmats[fee_cents] The price of this fee or hazmat in cents per unit. number
hazmats[quantity] The number of units. number
hazmats[taxable] Determines if hazmat tax rate will be applied to this hazmat. boolean
sublets[price_cents] The price in cents of sublet being sold to customer. number
sublets[cost_cents] The amount in cents paid to provider for services. number
sublets[provider] The name of the entity providing services for sublet. string
sublets[invoice_number] A string which identifies invoice from provider. string
sublets[invoice_date] The date when the invoice from provider was created. datetime string
sublets[taxable] Determines if sublet tax rate will be applied to this sublet. boolean
sublets[vendor_id] A foreign key which points to a Vendor.id. Represents a vendor associated with this sublet item. number
inspections[name] The name of this inspection as it appears on the RO. string
inspections[state] One of "yellow", "green", "unchecked", "red". More states may be added. string
inspections[detail] Optional staff-entered details about the results of this inspection. string
payments[payment_type] The display name of the payment type. Payment types are customizable for each shop. Examples: "Other", "Credit Card", "Check", "Cash", "Credit Card - Visa", and "Other - Warranty". string
payments[payment_type_details] An object containing the type and name of the payment type. Example: { type: "Credit Card", name: "Mastercard" }. The type is always present, but the name could be null or blank. object
payments[notes] Staff-entered notes about this payment. string
payments[amount_cents] The total payment amount, in cents. number
label[text] The description of the label. string
label[color_code] The color code of which the label is represented. string

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892851
ETag: W/"366a7efc2666544b45e5876119c7ca5a"
X-Request-Id: 6cfde0df-ec6c-427d-aa3c-a8d0778a8714
X-Runtime: 0.018783
Content-Length: 757

Body

{
  "id": 2,
  "created_at": "2022-06-10T20:26:31Z",
  "updated_at": "2022-06-10T20:26:31Z",
  "number": 11341,
  "odometer": 90321,
  "odometer_out": null,
  "state": "estimate",
  "customer_id": 3,
  "technician_id": 2,
  "advisor_id": 1,
  "vehicle_id": 1,
  "detail": "Key tag 84, customer waiting",
  "preferred_contact_type": "Text",
  "part_discount_cents": null,
  "labor_discount_cents": null,
  "shop_id": 2,
  "status_id": null,
  "taxable": true,
  "customer_source": "Repeat",
  "supply_fee_cents": 3250,
  "part_discount_percentage": null,
  "labor_discount_percentage": null,
  "started_at": null,
  "closed_at": null,
  "picked_up_at": null,
  "due_in_at": "2022-06-13T20:26:31Z",
  "due_out_at": null,
  "part_tax_rate": 0.0,
  "labor_tax_rate": 0.0,
  "hazmat_tax_rate": 0.0,
  "sublet_tax_rate": 0.0,
  "services": [

  ],
  "payments": [

  ],
  "integrator_tags": [

  ],
  "label": null
}

Services

Get a list of all services

Endpoint

GET api/v1/tenants/:tenant_id/services

Parameters

Name Description type
repair_order_id A foreign key which points to a WorkOrder.id. Represents the repair order related with this service. number
technician_id Filter response to only include Services with labors assigned to this Technican ID. number

Request

Route

GET api/v1/tenants/1/services

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 223e2487-1ea7-481f-a618-4aee71c2210a
X-Api-Secret: Mcd4TmgzKgrXONo8oXNSS_QgacFGJLCoWyu_lsDG3bk
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/services" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 223e2487-1ea7-481f-a618-4aee71c2210a" \
	-H "X-Api-Secret: Mcd4TmgzKgrXONo8oXNSS_QgacFGJLCoWyu_lsDG3bk"

Response

Simulated Response

Response Fields

Name Description type
id Unique identifier of this record number
title The title of the service string
completed True if the service has been completed boolean
category_id A foreign key that points to a Category ID. integer
canned_job_id A reference that points to a CannedJob ID. integer
labor_rate_cents The rate in cents that labor on this service is charged at. number
repair_order_id A foreign key that points to the RepairOrder that this Service belongs to. integer
comment Service comments text
completed_at The datetime the service was marked completed datetime string
last_completed_at The datetime the service was last marked completed. This may occur if the service had been marked completed then restarted and marked completed again. datetime string
labors[technician_id] A foreign key which points to a Staff.id. Represents the technician assigned to this specific labor item. number
labors[taxable] Determines if labor tax rate will be applied to this labor. boolean
parts[quoted_price_cents] The price of this part that is being sold to the customer in cents per unit. number
parts[cost_cents] The wholesale cost of this part to the shop in cents per unit. number
parts[part_inventory_id] A foreign key which points to an Inventory.id. Represents the associated inventory and quantity information for this part. number
parts[quantity] The number of units this part line item represents. number
parts[taxable] Determines if part tax rate will be applied to this part. boolean
hazmats[fee_cents] The price of this fee or hazmat in cents per unit. number
hazmats[quantity] The number of units. number
hazmats[taxable] Determines if hazmat tax rate will be applied to this hazmat. boolean
sublets[price_cents] The price in cents of sublet being sold to customer. number
sublets[cost_cents] The amount in cents paid to provider for services. number
sublets[provider] The name of the entity providing services for sublet. string
sublets[invoice_number] A string which identifies invoice from provider. string
sublets[invoice_date] The date when the invoice from provider was created. datetime string
sublets[taxable] Determines if sublet tax rate will be applied to this sublet. boolean
sublets[vendor_id] A foreign key which points to a Vendor.id. Represents a vendor associated with this sublet item. number
inspections[name] The name of this inspection as it appears on the RO. string
inspections[state] One of "yellow", "green", "unchecked", "red". More states may be added. string
inspections[detail] Optional staff-entered details about the results of this inspection. string

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892856
ETag: W/"1f1188d64023450a095f6b31baa63999"
X-Request-Id: da9f5830-5564-4ea4-bbdf-641955965339
X-Runtime: 0.021118
Content-Length: 1367

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:26:36Z",
      "updated_at": "2022-06-10T20:26:36Z",
      "title": "Test Service",
      "completed": false,
      "category_id": null,
      "canned_job_id": null,
      "comment": "No comment",
      "labor_rate_cents": 10000,
      "repair_order_id": 1,
      "completed_at": null,
      "last_completed_at": null,
      "labors": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:26:36Z",
          "updated_at": "2022-06-10T20:26:36Z",
          "name": "Test labor 8",
          "technician_id": null,
          "taxable": true,
          "hours": 1.0
        }
      ],
      "parts": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:26:36Z",
          "updated_at": "2022-06-10T20:26:36Z",
          "brand": null,
          "description": null,
          "number": null,
          "quoted_price_cents": null,
          "cost_cents": null,
          "part_inventory_id": 1,
          "taxable": true,
          "quantity": 1.0
        }
      ],
      "hazmats": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:26:36Z",
          "updated_at": "2022-06-10T20:26:36Z",
          "name": "Test hazmat fee 8",
          "fee_cents": 25,
          "taxable": true,
          "quantity": 1.0
        }
      ],
      "sublets": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:26:36Z",
          "updated_at": "2022-06-10T20:26:36Z",
          "name": "Test sublet 8",
          "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": "2022-06-10T20:26:36Z",
          "updated_at": "2022-06-10T20:26:36Z",
          "name": "Test inspection 8",
          "state": null,
          "detail": "Specifics about the test inspection"
        }
      ]
    }
  ],
  "limit": 1,
  "limited": false,
  "total_count": 1,
  "current_page": 1,
  "total_pages": 1
}

Get a specific service by ID

Endpoint

GET api/v1/tenants/:tenant_id/services/:id

Request

Route

GET api/v1/tenants/1/services/1

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 1509fb88-66f1-462b-af0e-0693bbd018fd
X-Api-Secret: VE3Htz0GxdngHHz24i7uCwT6QULmHiYjk9PKNIefjZc
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/services/1" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 1509fb88-66f1-462b-af0e-0693bbd018fd" \
	-H "X-Api-Secret: VE3Htz0GxdngHHz24i7uCwT6QULmHiYjk9PKNIefjZc"

Response

Simulated Response

Response Fields

Name Description type
id Unique identifier of this record number
title The title of the service string
completed True if the service has been completed boolean
category_id A foreign key that points to a Category ID. integer
canned_job_id A reference that points to a CannedJob ID. integer
labor_rate_cents The rate in cents that labor on this service is charged at. number
repair_order_id A foreign key that points to the RepairOrder that this Service belongs to. integer
comment Service comments text
completed_at The datetime the service was marked completed datetime string
last_completed_at The datetime the service was last marked completed. This may occur if the service had been marked completed then restarted and marked completed again. datetime string
labors[technician_id] A foreign key which points to a Staff.id. Represents the technician assigned to this specific labor item. number
labors[taxable] Determines if labor tax rate will be applied to this labor. boolean
parts[quoted_price_cents] The price of this part that is being sold to the customer in cents per unit. number
parts[cost_cents] The wholesale cost of this part to the shop in cents per unit. number
parts[part_inventory_id] A foreign key which points to an Inventory.id. Represents the associated inventory and quantity information for this part. number
parts[quantity] The number of units this part line item represents. number
parts[taxable] Determines if part tax rate will be applied to this part. boolean
hazmats[fee_cents] The price of this fee or hazmat in cents per unit. number
hazmats[quantity] The number of units. number
hazmats[taxable] Determines if hazmat tax rate will be applied to this hazmat. boolean
sublets[price_cents] The price in cents of sublet being sold to customer. number
sublets[cost_cents] The amount in cents paid to provider for services. number
sublets[provider] The name of the entity providing services for sublet. string
sublets[invoice_number] A string which identifies invoice from provider. string
sublets[invoice_date] The date when the invoice from provider was created. datetime string
sublets[taxable] Determines if sublet tax rate will be applied to this sublet. boolean
sublets[vendor_id] A foreign key which points to a Vendor.id. Represents a vendor associated with this sublet item. number
inspections[name] The name of this inspection as it appears on the RO. string
inspections[state] One of "yellow", "green", "unchecked", "red". More states may be added. string
inspections[detail] Optional staff-entered details about the results of this inspection. string

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892863
ETag: W/"775ea26e4565db791b1acd7366c2e01b"
X-Request-Id: 0b970688-4bdc-4650-90c1-178e6380911c
X-Runtime: 0.017613
Content-Length: 1282

Body

{
  "id": 1,
  "created_at": "2022-06-10T20:26:43Z",
  "updated_at": "2022-06-10T20:26:43Z",
  "title": "Test Service",
  "completed": false,
  "category_id": null,
  "canned_job_id": null,
  "comment": "No comment",
  "labor_rate_cents": 10000,
  "repair_order_id": 1,
  "completed_at": null,
  "last_completed_at": null,
  "labors": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:26:43Z",
      "updated_at": "2022-06-10T20:26:43Z",
      "name": "Test labor 12",
      "technician_id": null,
      "taxable": true,
      "hours": 1.0
    }
  ],
  "parts": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:26:43Z",
      "updated_at": "2022-06-10T20:26:43Z",
      "brand": null,
      "description": null,
      "number": null,
      "quoted_price_cents": null,
      "cost_cents": null,
      "part_inventory_id": 1,
      "taxable": true,
      "quantity": 1.0
    }
  ],
  "hazmats": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:26:43Z",
      "updated_at": "2022-06-10T20:26:43Z",
      "name": "Test hazmat fee 12",
      "fee_cents": 25,
      "taxable": true,
      "quantity": 1.0
    }
  ],
  "sublets": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:26:43Z",
      "updated_at": "2022-06-10T20:26:43Z",
      "name": "Test sublet 12",
      "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": "2022-06-10T20:26:43Z",
      "updated_at": "2022-06-10T20:26:43Z",
      "name": "Test inspection 12",
      "state": null,
      "detail": "Specifics about the test inspection"
    }
  ]
}

Update a specific service

Endpoint

PUT api/v1/tenants/:tenant_id/services/:id

Parameters

Name Description type
comment required Service comments text

Request

Route

PUT api/v1/tenants/1/services/1

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: c88cef79-3c8d-4655-bb16-75c3b9df82ec
X-Api-Secret: KQRS8-djxLkXkR0Iwx-ipezbqOIjQEV6wZlVZfG1cis
Host: example.org
Cookie: 

Body

{
  "comment": "New comment"
}

cURL

curl "https://api.shop-ware.com/api/v1/tenants/1/services/1" -d '{"comment":"New comment"}' -X PUT \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: c88cef79-3c8d-4655-bb16-75c3b9df82ec" \
	-H "X-Api-Secret: KQRS8-djxLkXkR0Iwx-ipezbqOIjQEV6wZlVZfG1cis"

Response

Simulated Response

Response Fields

Name Description type
id Unique identifier of this record number
title The title of the service string
completed True if the service has been completed boolean
category_id A foreign key that points to a Category ID. integer
canned_job_id A reference that points to a CannedJob ID. integer
labor_rate_cents The rate in cents that labor on this service is charged at. number
repair_order_id A foreign key that points to the RepairOrder that this Service belongs to. integer
comment Service comments text
completed_at The datetime the service was marked completed datetime string
last_completed_at The datetime the service was last marked completed. This may occur if the service had been marked completed then restarted and marked completed again. datetime string
labors[technician_id] A foreign key which points to a Staff.id. Represents the technician assigned to this specific labor item. number
labors[taxable] Determines if labor tax rate will be applied to this labor. boolean
parts[quoted_price_cents] The price of this part that is being sold to the customer in cents per unit. number
parts[cost_cents] The wholesale cost of this part to the shop in cents per unit. number
parts[part_inventory_id] A foreign key which points to an Inventory.id. Represents the associated inventory and quantity information for this part. number
parts[quantity] The number of units this part line item represents. number
parts[taxable] Determines if part tax rate will be applied to this part. boolean
hazmats[fee_cents] The price of this fee or hazmat in cents per unit. number
hazmats[quantity] The number of units. number
hazmats[taxable] Determines if hazmat tax rate will be applied to this hazmat. boolean
sublets[price_cents] The price in cents of sublet being sold to customer. number
sublets[cost_cents] The amount in cents paid to provider for services. number
sublets[provider] The name of the entity providing services for sublet. string
sublets[invoice_number] A string which identifies invoice from provider. string
sublets[invoice_date] The date when the invoice from provider was created. datetime string
sublets[taxable] Determines if sublet tax rate will be applied to this sublet. boolean
sublets[vendor_id] A foreign key which points to a Vendor.id. Represents a vendor associated with this sublet item. number
inspections[name] The name of this inspection as it appears on the RO. string
inspections[state] One of "yellow", "green", "unchecked", "red". More states may be added. string
inspections[detail] Optional staff-entered details about the results of this inspection. string

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1601571960
ETag: W/"1a72084619d0ebd721d9c0aa1f60ef53"
X-Request-Id: dad7f92d-cc86-4563-bc69-5d13095a016d
X-Runtime: 0.023714
Content-Length: 1283

Body

{
  "id": 1,
  "created_at": "2022-06-10T20:26:45Z",
  "updated_at": "2020-10-01T17:05:00Z",
  "title": "Test Service",
  "completed": false,
  "category_id": null,
  "canned_job_id": null,
  "comment": "New comment",
  "labor_rate_cents": 10000,
  "repair_order_id": 1,
  "completed_at": null,
  "last_completed_at": null,
  "labors": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:26:45Z",
      "updated_at": "2022-06-10T20:26:45Z",
      "name": "Test labor 13",
      "technician_id": null,
      "taxable": true,
      "hours": 1.0
    }
  ],
  "parts": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:26:45Z",
      "updated_at": "2022-06-10T20:26:45Z",
      "brand": null,
      "description": null,
      "number": null,
      "quoted_price_cents": null,
      "cost_cents": null,
      "part_inventory_id": 1,
      "taxable": true,
      "quantity": 1.0
    }
  ],
  "hazmats": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:26:45Z",
      "updated_at": "2022-06-10T20:26:45Z",
      "name": "Test hazmat fee 13",
      "fee_cents": 25,
      "taxable": true,
      "quantity": 1.0
    }
  ],
  "sublets": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:26:45Z",
      "updated_at": "2022-06-10T20:26:45Z",
      "name": "Test sublet 13",
      "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": "2022-06-10T20:26:45Z",
      "updated_at": "2022-06-10T20:26:45Z",
      "name": "Test inspection 13",
      "state": null,
      "detail": "Specifics about the test inspection"
    }
  ]
}

Shops

Get a list of all shops

Endpoint

GET api/v1/tenants/:tenant_id/shops

Request

Route

GET api/v1/tenants/1/shops

Headers

Accept: application/json
X-Api-Partner-Id: 30d8f439-debf-4cdc-8375-3da140b821ff
X-Api-Secret: jlQN17F588aAJDcz0Y6asNUwIitl4ojQl5NtJBY6muw
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/shops" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 30d8f439-debf-4cdc-8375-3da140b821ff" \
	-H "X-Api-Secret: jlQN17F588aAJDcz0Y6asNUwIitl4ojQl5NtJBY6muw"

Response

Simulated Response

Response Fields

Name Description type
identifier A name used to uniquely identify a shop. string
mycarfax_enabled true if the shop has Carfax enabled, false if Carfax disabled boolean
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags
live_at The datetime the Shop went live. datetime string

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892872
ETag: W/"03372b0cff78fb881c16c2781180cac0"
X-Request-Id: ee236b18-db9c-4c7f-bd02-47798351cd10
X-Runtime: 0.016366
Content-Length: 1263

Body

{
  "results": [
    {
      "id": 2,
      "created_at": "2022-06-11T20:26:52Z",
      "updated_at": "2022-06-11T20:26:52Z",
      "identifier": "02",
      "name": "Shop 02",
      "address": "123 Shop Street",
      "phone": "(111) 111-1111",
      "time_zone": "Pacific Time (US & Canada)",
      "service_desk_email": "shop02@example.com",
      "avg_labor_cost_cents": 5000,
      "part_tax_rate": 4.0,
      "labor_tax_rate": 3.0,
      "hazmat_tax_rate": 2.0,
      "sublet_tax_rate": 1.0,
      "supply_fee_rate": 0.0,
      "supply_fee_name": null,
      "supply_fee_cap_cents": 0.0,
      "mycarfax_enabled": false,
      "live_at": "2022-06-09T20:26:52Z",
      "integrator_tags": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:26:52Z",
          "updated_at": "2022-06-10T20:26:52Z",
          "taggable_type": "Shop",
          "taggable_id": 2,
          "name": "tag_name",
          "value": "tag_value"
        }
      ]
    },
    {
      "id": 1,
      "created_at": "2022-06-10T20:26:52Z",
      "updated_at": "2022-06-10T20:26:52Z",
      "identifier": "Shop 86",
      "name": "Example Company, Inc.",
      "address": "17706 Sauki Ln",
      "phone": "1231231234",
      "time_zone": "Alaska",
      "service_desk_email": "exampleemail86@example.com",
      "avg_labor_cost_cents": 0,
      "part_tax_rate": 0.0,
      "labor_tax_rate": 0.0,
      "hazmat_tax_rate": 0.0,
      "sublet_tax_rate": 0.0,
      "supply_fee_rate": 0.0,
      "supply_fee_name": null,
      "supply_fee_cap_cents": 0.0,
      "mycarfax_enabled": false,
      "live_at": null,
      "integrator_tags": [

      ]
    }
  ],
  "limit": 2,
  "limited": false,
  "total_count": 2,
  "current_page": 1,
  "total_pages": 1
}

Get a specific shop by ID

Endpoint

GET api/v1/tenants/:tenant_id/shops/:id

Request

Route

GET api/v1/tenants/1/shops/2

Headers

Accept: application/json
X-Api-Partner-Id: 163a58b6-46dd-4246-b14f-baefbe4a0ebb
X-Api-Secret: iTbtfPCmOpABo_2myQ2AV06UxX23EGzLoSfNexUhnZc
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/shops/2" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 163a58b6-46dd-4246-b14f-baefbe4a0ebb" \
	-H "X-Api-Secret: iTbtfPCmOpABo_2myQ2AV06UxX23EGzLoSfNexUhnZc"

Response

Simulated Response

Response Fields

Name Description type
identifier A name used to uniquely identify a shop. string
mycarfax_enabled true if the shop has Carfax enabled, false if Carfax disabled boolean
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags
live_at The datetime the Shop went live. datetime string

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892874
ETag: W/"82108aa9ee305458b003ae198e6a1bb9"
X-Request-Id: f3371500-031e-4d2d-a6fc-955694f2815c
X-Runtime: 0.012545
Content-Length: 677

Body

{
  "id": 2,
  "created_at": "2022-06-11T20:26:54Z",
  "updated_at": "2022-06-11T20:26:54Z",
  "identifier": "02",
  "name": "Shop 02",
  "address": "123 Shop Street",
  "phone": "(111) 111-1111",
  "time_zone": "Pacific Time (US & Canada)",
  "service_desk_email": "shop02@example.com",
  "avg_labor_cost_cents": 5000,
  "part_tax_rate": 4.0,
  "labor_tax_rate": 3.0,
  "hazmat_tax_rate": 2.0,
  "sublet_tax_rate": 1.0,
  "supply_fee_rate": 0.0,
  "supply_fee_name": null,
  "supply_fee_cap_cents": 0.0,
  "mycarfax_enabled": false,
  "live_at": "2022-06-09T20:26:54Z",
  "integrator_tags": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:26:54Z",
      "updated_at": "2022-06-10T20:26:54Z",
      "taggable_type": "Shop",
      "taggable_id": 2,
      "name": "tag_name",
      "value": "tag_value"
    }
  ]
}

Staff Members

Get a list of all staff members

Endpoint

GET api/v1/tenants/:tenant_id/staffs

Request

Route

GET api/v1/tenants/1/staffs

Headers

Accept: application/json
X-Api-Partner-Id: 8e1dcd1f-18fa-41ab-81a0-e474bb9216f2
X-Api-Secret: 0kCbzWMrCbDuosZrdkqU6th5owMf21W6YPVdHj_L454
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/staffs" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 8e1dcd1f-18fa-41ab-81a0-e474bb9216f2" \
	-H "X-Api-Secret: 0kCbzWMrCbDuosZrdkqU6th5owMf21W6YPVdHj_L454"

Response

Simulated Response

Response Fields

Name Description type
advisor true if the staff member is a service advisor, false otherwise. boolean
technician true if the staff member is a technician, false otherwise. boolean
active true if the staff member is an active Shop-Ware user, false if they have been deactivated. boolean
assigned_shop_id A foreign key that points to the Shop this staff is currently assigned to. number
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892876
ETag: W/"e544e58470b8769610572174d02c56e4"
X-Request-Id: d3517131-a65f-4be2-9893-33b16cdae230
X-Runtime: 0.013263
Content-Length: 491

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:26:56Z",
      "updated_at": "2022-06-10T20:26:56Z",
      "first_name": "James",
      "last_name": "Brown",
      "advisor": true,
      "technician": false,
      "active": true,
      "assigned_shop_id": 1,
      "email": "mrdynamite@example.com",
      "integrator_tags": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:26:56Z",
          "updated_at": "2022-06-10T20:26:56Z",
          "taggable_type": "Staff",
          "taggable_id": 1,
          "name": "tag_name",
          "value": "tag_value"
        }
      ]
    }
  ],
  "limit": 1,
  "limited": false,
  "total_count": 1,
  "current_page": 1,
  "total_pages": 1
}

Get a specific staff member by ID

Endpoint

GET api/v1/tenants/:tenant_id/staffs/:id

Request

Route

GET api/v1/tenants/1/staffs/1

Headers

Accept: application/json
X-Api-Partner-Id: dc381aaa-b70a-4b31-8665-5da49279d57a
X-Api-Secret: m7C2il2MnvvH0LSNeBFP1i87hAZnuMEHOoN3i7_dGCk
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/staffs/1" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: dc381aaa-b70a-4b31-8665-5da49279d57a" \
	-H "X-Api-Secret: m7C2il2MnvvH0LSNeBFP1i87hAZnuMEHOoN3i7_dGCk"

Response

Simulated Response

Response Fields

Name Description type
advisor true if the staff member is a service advisor, false otherwise. boolean
technician true if the staff member is a technician, false otherwise. boolean
active true if the staff member is an active Shop-Ware user, false if they have been deactivated. boolean
assigned_shop_id A foreign key that points to the Shop this staff is currently assigned to. number
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892878
ETag: W/"e4ee0fd9822861567afa59cb6b1fd632"
X-Request-Id: 6ec84ff4-93b0-4c1a-a0b5-bee19cf46a8c
X-Runtime: 0.009801
Content-Length: 402

Body

{
  "id": 1,
  "created_at": "2022-06-10T20:26:58Z",
  "updated_at": "2022-06-10T20:26:58Z",
  "first_name": "James",
  "last_name": "Brown",
  "advisor": true,
  "technician": false,
  "active": true,
  "assigned_shop_id": 1,
  "email": "mrdynamite@example.com",
  "integrator_tags": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:26:58Z",
      "updated_at": "2022-06-10T20:26:58Z",
      "taggable_type": "Staff",
      "taggable_id": 1,
      "name": "tag_name",
      "value": "tag_value"
    }
  ]
}

Statuses

Get a list of all statuses

Endpoint

GET api/v1/tenants/:tenant_id/statuses

Request

Route

GET api/v1/tenants/1/statuses

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: e274cff2-82c8-4b87-a511-b086b9a71fd5
X-Api-Secret: 3xQwONYnblihRsGYTXTMmG5V38uOQqsaZEHaaRNf5Ac
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/statuses" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: e274cff2-82c8-4b87-a511-b086b9a71fd5" \
	-H "X-Api-Secret: 3xQwONYnblihRsGYTXTMmG5V38uOQqsaZEHaaRNf5Ac"

Response

Simulated Response

Response Fields

Name Description type
id The status primary key. number
text A text representing the status. string
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892880
ETag: W/"23d8c188d3e94f84660c0c2924b76c71"
X-Request-Id: db003b8f-e484-4b1b-83e2-45e6798b7044
X-Runtime: 0.012828
Content-Length: 370

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:27:00Z",
      "updated_at": "2022-06-10T20:27:00Z",
      "text": "status text",
      "integrator_tags": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:27:00Z",
          "updated_at": "2022-06-10T20:27:00Z",
          "taggable_type": "Status",
          "taggable_id": 1,
          "name": "tag_name",
          "value": "tag_value"
        }
      ]
    }
  ],
  "limit": 1,
  "limited": false,
  "total_count": 1,
  "current_page": 1,
  "total_pages": 1
}

Get a specific status by ID

Endpoint

GET api/v1/tenants/:tenant_id/statuses/:id

Request

Route

GET api/v1/tenants/1/statuses/1

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 9e3ee747-96e5-44b4-8504-444d17a51625
X-Api-Secret: Ls4Bj7sOpo1x2-lU4q3zVuXLOXQy6_KZZoQRvf0TAJc
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/statuses/1" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 9e3ee747-96e5-44b4-8504-444d17a51625" \
	-H "X-Api-Secret: Ls4Bj7sOpo1x2-lU4q3zVuXLOXQy6_KZZoQRvf0TAJc"

Response

Simulated Response

Response Fields

Name Description type
id The status primary key. number
text A text representing the status. string
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892882
ETag: W/"c02c93e6c85fb35049ae642d08982d14"
X-Request-Id: 2db90c66-6dce-4da1-a889-bc4ee98fc1d8
X-Runtime: 0.009863
Content-Length: 281

Body

{
  "id": 1,
  "created_at": "2022-06-10T20:27:02Z",
  "updated_at": "2022-06-10T20:27:02Z",
  "text": "status text",
  "integrator_tags": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:27:02Z",
      "updated_at": "2022-06-10T20:27:02Z",
      "taggable_type": "Status",
      "taggable_id": 1,
      "name": "tag_name",
      "value": "tag_value"
    }
  ]
}

Tenants

Get a list of all tenants that this API client is authorized to access

Endpoint

GET api/v1/tenants

Request

Route

GET api/v1/tenants

Headers

Accept: application/json
X-Api-Partner-Id: b514976a-c279-4a43-ad4c-96026edbd7c1
X-Api-Secret: lfogoCZ2zFqJ1PT85R0fM6llcV1CBnTzJOg_NMeU0Ho
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: b514976a-c279-4a43-ad4c-96026edbd7c1" \
	-H "X-Api-Secret: lfogoCZ2zFqJ1PT85R0fM6llcV1CBnTzJOg_NMeU0Ho"

Response

Simulated Response

Response Fields

Name Description type
cname Tenant subdomain in Shop-Ware string
name Name of the tenant string
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags
country_code Country code of the tenant, e.g. "US" string
subscription_status Subscription status of the tenant. One of 'Active' or 'Canceled' string

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892885
ETag: W/"d539c15512f402426aa822879cf28f31"
X-Request-Id: 97648fd4-4d41-445d-a07f-84f16412ceb3
X-Runtime: 0.009724
Content-Length: 452

Body

{
  "results": [
    {
      "id": 2,
      "created_at": "2022-06-10T20:27:05Z",
      "updated_at": "2022-06-10T20:27:05Z",
      "cname": "atomic70",
      "name": "Example Company, Inc.",
      "country_code": "US",
      "subscription_status": "Active"
    },
    {
      "id": 1,
      "created_at": "2022-06-10T20:27:05Z",
      "updated_at": "2022-06-10T20:27:05Z",
      "cname": "atomic69",
      "name": "Example Company, Inc.",
      "country_code": "US",
      "subscription_status": "Active"
    }
  ],
  "limit": 2,
  "limited": false,
  "total_count": 2,
  "current_page": 1,
  "total_pages": 1
}

Get a tenant by ID that this API client is authorized to access

Endpoint

GET api/v1/tenants/:id

Request

Route

GET api/v1/tenants/2

Headers

Accept: application/json
X-Api-Partner-Id: 8758348c-500a-4c99-8622-afba4443c6aa
X-Api-Secret: zsCuXgKhGG9prhZMBVu6XyXpIhYIYRIrtCb9ez1LG2U
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/2" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 8758348c-500a-4c99-8622-afba4443c6aa" \
	-H "X-Api-Secret: zsCuXgKhGG9prhZMBVu6XyXpIhYIYRIrtCb9ez1LG2U"

Response

Simulated Response

Response Fields

Name Description type
cname Tenant subdomain in Shop-Ware string
name Name of the tenant string
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags
country_code Country code of the tenant, e.g. "US" string
subscription_status Subscription status of the tenant. One of 'Active' or 'Canceled' string

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892887
ETag: W/"d709a3f8048cfb7e884b28c0800ae31b"
X-Request-Id: d9957027-7025-4271-83f5-8fc167ed6b59
X-Runtime: 0.007121
Content-Length: 181

Body

{
  "id": 2,
  "created_at": "2022-06-10T20:27:07Z",
  "updated_at": "2022-06-10T20:27:07Z",
  "cname": "atomic72",
  "name": "Example Company, Inc.",
  "country_code": "US",
  "subscription_status": "Active"
}

Vehicles

Create a vehicle

Endpoint

POST api/v1/tenants/:tenant_id/vehicles

Parameters

Name Description type
plate License plate. string
detail Notes made by the staff about this vehicle. string
vin Vehicle Identification Number. string
make required Vehicle make. string
customer_ids A list of foreign keys that point to zero or more Customer.id. This represents the list of customers who own this vehicle. Multiple customers may own a vehicle. array_of_numbers

Request

Route

POST api/v1/tenants/1/vehicles

Headers

Accept: application/json
X-Api-Partner-Id: e093badc-3f57-4ee8-8865-5364528fd3fb
X-Api-Secret: gkkwzVqgIWv0xrvFyWO-FYirPZ1p3EQv412Dcryjsvc
Content-Type: application/json
Host: example.org
Cookie: 

Body

{
  "plate": "EZRIDR",
  "detail": "Keys in glovebox",
  "vin": "1FMPU16W14LB56648",
  "make": "Ford",
  "customer_ids": [
    1
  ]
}

cURL

curl "https://api.shop-ware.com/api/v1/tenants/1/vehicles" -d '{"plate":"EZRIDR","detail":"Keys in glovebox","vin":"1FMPU16W14LB56648","make":"Ford","customer_ids":[1]}' -X POST \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: e093badc-3f57-4ee8-8865-5364528fd3fb" \
	-H "X-Api-Secret: gkkwzVqgIWv0xrvFyWO-FYirPZ1p3EQv412Dcryjsvc" \
	-H "Content-Type: application/json"

Response

Simulated Response

Response Fields

Name Description type
detail Notes made by the staff about this vehicle string
customer_ids A list of foreign keys that point to zero or more Customer.id. This represents the list of customers who own this vehicle. Multiple customers may own a vehicle. array of numbers
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags

Status

201

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892893
ETag: W/"13d816f2d132fde3f4e5290803e233d5"
X-Request-Id: cd09884a-057e-4dd1-be4f-58b82d78f9c1
X-Runtime: 0.052378
Content-Length: 329

Body

{
  "id": 2,
  "created_at": "2022-06-10T20:27:13Z",
  "updated_at": "2022-06-10T20:27:13Z",
  "plate": "EZRIDR",
  "detail": "Keys in glovebox",
  "fleet_number": null,
  "vin": "1FMPU16W14LB56648",
  "year": null,
  "make": "Ford",
  "model": null,
  "engine": null,
  "color": null,
  "production_date": null,
  "registration_exp_date": null,
  "customer_ids": [
    1
  ],
  "integrator_tags": [

  ]
}

Get a list of all vehicles

Endpoint

GET api/v1/tenants/:tenant_id/vehicles

Parameters

Name Description
vin Filter response to include only Vehicles with this VIN.
customer_id Filter response to include only Customers with this ID.

Request

Route

GET api/v1/tenants/1/vehicles

Headers

Accept: application/json
X-Api-Partner-Id: 7f5abbac-4c25-4c07-a11e-e927ea05050b
X-Api-Secret: 38zMd9z5etXogw0z00Ik-sLzejfrJWgeQug8h4X4HIA
Content-Type: application/json
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/vehicles" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 7f5abbac-4c25-4c07-a11e-e927ea05050b" \
	-H "X-Api-Secret: 38zMd9z5etXogw0z00Ik-sLzejfrJWgeQug8h4X4HIA" \
	-H "Content-Type: application/json"

Response

Simulated Response

Response Fields

Name Description type
detail Notes made by the staff about this vehicle string
customer_ids A list of foreign keys that point to zero or more Customer.id. This represents the list of customers who own this vehicle. Multiple customers may own a vehicle. array of numbers
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892889
ETag: W/"fcf7704ce789633166dac0e66438fb94"
X-Request-Id: 905befe1-0cb0-4fce-b830-0a62f5c86312
X-Runtime: 0.014441
Content-Length: 641

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:27:09Z",
      "updated_at": "2022-06-10T20:27:09Z",
      "plate": "EZRIDR",
      "detail": "Keys in glovebox",
      "fleet_number": "23R",
      "vin": "1FMPU16W14LB56648",
      "year": "2004",
      "make": "Ford",
      "model": "Expedition",
      "engine": "4.6L V8",
      "color": "BLACK",
      "production_date": "2022-06-09T20:27:09.487Z",
      "registration_exp_date": "2022-06-09T20:27:09.487Z",
      "customer_ids": [
        1
      ],
      "integrator_tags": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:27:09Z",
          "updated_at": "2022-06-10T20:27:09Z",
          "taggable_type": "Vehicle",
          "taggable_id": 1,
          "name": "tag_name",
          "value": "tag_value"
        }
      ]
    }
  ],
  "limit": 1,
  "limited": false,
  "total_count": 1,
  "current_page": 1,
  "total_pages": 1
}

Get a specific vehicle by ID

Endpoint

GET api/v1/tenants/:tenant_id/vehicles/:id

Request

Route

GET api/v1/tenants/1/vehicles/1

Headers

Accept: application/json
X-Api-Partner-Id: 5d52fc20-7a33-492f-ab90-3261c0b9c911
X-Api-Secret: cqNicabp9jAb_YZlTsOw6p5nrsk4RrA89ydtsH88MAg
Content-Type: application/json
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/vehicles/1" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 5d52fc20-7a33-492f-ab90-3261c0b9c911" \
	-H "X-Api-Secret: cqNicabp9jAb_YZlTsOw6p5nrsk4RrA89ydtsH88MAg" \
	-H "Content-Type: application/json"

Response

Simulated Response

Response Fields

Name Description type
detail Notes made by the staff about this vehicle string
customer_ids A list of foreign keys that point to zero or more Customer.id. This represents the list of customers who own this vehicle. Multiple customers may own a vehicle. array of numbers
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892891
ETag: W/"eb0b9e229d53d2279957e4e40f523da4"
X-Request-Id: 365f9c52-d78d-40d0-9ba8-821517563b66
X-Runtime: 0.013122
Content-Length: 552

Body

{
  "id": 1,
  "created_at": "2022-06-10T20:27:11Z",
  "updated_at": "2022-06-10T20:27:11Z",
  "plate": "EZRIDR",
  "detail": "Keys in glovebox",
  "fleet_number": "23R",
  "vin": "1FMPU16W14LB56648",
  "year": "2004",
  "make": "Ford",
  "model": "Expedition",
  "engine": "4.6L V8",
  "color": "BLACK",
  "production_date": "2022-06-09T20:27:11.601Z",
  "registration_exp_date": "2022-06-09T20:27:11.601Z",
  "customer_ids": [
    1
  ],
  "integrator_tags": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:27:11Z",
      "updated_at": "2022-06-10T20:27:11Z",
      "taggable_type": "Vehicle",
      "taggable_id": 1,
      "name": "tag_name",
      "value": "tag_value"
    }
  ]
}

Update a specific vehicle by ID

Endpoint

PUT api/v1/tenants/:tenant_id/vehicles/:id

Parameters

Name Description type
plate License plate. string
detail Notes made by the staff about this vehicle. string
fleet_number Fleet number. string
vin Vehicle Identification Number. string
year Year. string
make Vehicle make. string
model Model. string
customer_ids A list of foreign keys that point to zero or more Customer.id. This represents the list of customers who own this vehicle. Multiple customers may own a vehicle. array_of_numbers

Request

Route

PUT api/v1/tenants/1/vehicles/1

Headers

Accept: application/json
X-Api-Partner-Id: 9ae76f84-0932-4b9c-a717-2e85fe185808
X-Api-Secret: g1EUwB_pyWBLyKnAjg5BEkJfrnCqCQA9s_p8lVCnzPo
Content-Type: application/json
Host: example.org
Cookie: 

Body

{
  "plate": "EZRIDR",
  "detail": "Keys in glovebox",
  "fleet_number": "23R",
  "vin": "1FMPU16W14LB56648",
  "year": "2006",
  "make": "Ford",
  "model": "Explorer",
  "customer_ids": [
    2
  ]
}

cURL

curl "https://api.shop-ware.com/api/v1/tenants/1/vehicles/1" -d '{"plate":"EZRIDR","detail":"Keys in glovebox","fleet_number":"23R","vin":"1FMPU16W14LB56648","year":"2006","make":"Ford","model":"Explorer","customer_ids":[2]}' -X PUT \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 9ae76f84-0932-4b9c-a717-2e85fe185808" \
	-H "X-Api-Secret: g1EUwB_pyWBLyKnAjg5BEkJfrnCqCQA9s_p8lVCnzPo" \
	-H "Content-Type: application/json"

Response

Simulated Response

Response Fields

Name Description type
detail Notes made by the staff about this vehicle string
customer_ids A list of foreign keys that point to zero or more Customer.id. This represents the list of customers who own this vehicle. Multiple customers may own a vehicle. array of numbers
integrator_tags A list of the tags attached to this entity by the integrator in order to associate it with external data array of integrator tags

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1601571960
ETag: W/"4240037646e9984f30d72f5313c4d834"
X-Request-Id: 92313f0d-757d-493e-90a8-6d67968388b6
X-Runtime: 0.024577
Content-Length: 550

Body

{
  "id": 1,
  "created_at": "2022-06-10T20:27:15Z",
  "updated_at": "2020-10-01T17:05:00Z",
  "plate": "EZRIDR",
  "detail": "Keys in glovebox",
  "fleet_number": "23R",
  "vin": "1FMPU16W14LB56648",
  "year": "2006",
  "make": "Ford",
  "model": "Explorer",
  "engine": "4.6L V8",
  "color": "BLACK",
  "production_date": "2022-06-09T20:27:15.925Z",
  "registration_exp_date": "2022-06-09T20:27:15.925Z",
  "customer_ids": [
    2
  ],
  "integrator_tags": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:27:15Z",
      "updated_at": "2022-06-10T20:27:15Z",
      "taggable_type": "Vehicle",
      "taggable_id": 1,
      "name": "tag_name",
      "value": "tag_value"
    }
  ]
}

Vendors

Get a list of all vendors

Endpoint

GET api/v1/tenants/:tenant_id/vendors

Request

Route

GET api/v1/tenants/1/vendors

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 7f593f73-b4aa-4205-b2fd-636343bd8b50
X-Api-Secret: J-1UYcOIdv4-E6ae00Ox821VzcD23r7mR1URDFAs3kw
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/vendors" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 7f593f73-b4aa-4205-b2fd-636343bd8b50" \
	-H "X-Api-Secret: J-1UYcOIdv4-E6ae00Ox821VzcD23r7mR1URDFAs3kw"

Response

Simulated Response

Response Fields

Name Description type
active True if the vendor is still active and in use, false if the vendor has been archived boolean
preferred True if the user has marked this vendor as a frequently-used vendor boolean
shop_id A foreign key which points to the Shop that this vendor belongs to integer

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892898
ETag: W/"b16f6c9bc0b75b23bb14dbf92cd3a8c7"
X-Request-Id: 51e0e34b-6150-4a00-9243-94dd387db589
X-Runtime: 0.013654
Content-Length: 496

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:27:18Z",
      "updated_at": "2022-06-10T20:27:18Z",
      "name": "Vendor 3",
      "phone": null,
      "account_number": null,
      "info": null,
      "notes": null,
      "website": "vendor16.com",
      "shop_id": 1,
      "active": true,
      "preferred": false,
      "integrator_tags": [
        {
          "id": 1,
          "created_at": "2022-06-10T20:27:18Z",
          "updated_at": "2022-06-10T20:27:18Z",
          "taggable_type": "Vendor",
          "taggable_id": 1,
          "name": "tag_name",
          "value": "tag_value"
        }
      ]
    }
  ],
  "limit": 1,
  "limited": false,
  "total_count": 1,
  "current_page": 1,
  "total_pages": 1
}

Get a vendor by ID

Endpoint

GET api/v1/tenants/:tenant_id/vendors/:id

Request

Route

GET api/v1/tenants/1/vendors/1

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: e6cf038a-7311-4a4b-b605-ffb54c0a5304
X-Api-Secret: ye_mPaNKuJsT8JWj2Fhu_Ojb0f0sI8mwHpgslG-0_rU
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/1/vendors/1" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: e6cf038a-7311-4a4b-b605-ffb54c0a5304" \
	-H "X-Api-Secret: ye_mPaNKuJsT8JWj2Fhu_Ojb0f0sI8mwHpgslG-0_rU"

Response

Simulated Response

Response Fields

Name Description type
active True if the vendor is still active and in use, false if the vendor has been archived boolean
preferred True if the user has marked this vendor as a frequently-used vendor boolean
shop_id A foreign key which points to the Shop that this vendor belongs to integer

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892900
ETag: W/"9027990bb739bf977d2f93c56f4bdf5b"
X-Request-Id: 30f18583-cdfe-4c04-90a8-13f895c8c4b1
X-Runtime: 0.008576
Content-Length: 407

Body

{
  "id": 1,
  "created_at": "2022-06-10T20:27:20Z",
  "updated_at": "2022-06-10T20:27:20Z",
  "name": "Vendor 4",
  "phone": null,
  "account_number": null,
  "info": null,
  "notes": null,
  "website": "vendor17.com",
  "shop_id": 1,
  "active": true,
  "preferred": false,
  "integrator_tags": [
    {
      "id": 1,
      "created_at": "2022-06-10T20:27:20Z",
      "updated_at": "2022-06-10T20:27:20Z",
      "taggable_type": "Vendor",
      "taggable_id": 1,
      "name": "tag_name",
      "value": "tag_value"
    }
  ]
}

Webhooks

Create a webhook

Endpoint

POST api/v1/webhooks

Parameters

Name Description type
url required The URL that webhook requests will be sent to. Must be an HTTPS URL, and may not redirect. string
events required An array of events that will trigger a webhook delivery. array

Request

Route

POST api/v1/webhooks

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: f4ad5d90-69a2-49c1-87e2-6d7b063b3fe3
X-Api-Secret: hwL9oOijebjlGYUNoRNUVBxnYskFmUJt9XaFeM9-8nI
Host: example.org
Cookie: 

Body

{
  "url": "https://www.example.com/new_webhook",
  "events": [
    "assignment.created",
    "assignment.updated",
    "assignment.deleted"
  ]
}

cURL

curl "https://api.shop-ware.com/api/v1/webhooks" -d '{"url":"https://www.example.com/new_webhook","events":["assignment.created","assignment.updated","assignment.deleted"]}' -X POST \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: f4ad5d90-69a2-49c1-87e2-6d7b063b3fe3" \
	-H "X-Api-Secret: hwL9oOijebjlGYUNoRNUVBxnYskFmUJt9XaFeM9-8nI"

Response

Simulated Response

Response Fields

Name Description type
url The url to request on events string
events A list events array of strings

Status

201

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892906
ETag: W/"bcfabd3429f0678155ff13105b48a0a6"
X-Request-Id: 681e1f01-7dbf-45d4-8279-d6f4b2c69e0d
X-Runtime: 0.019932
Content-Length: 140

Body

{
  "id": 2,
  "url": "https://www.example.com/new_webhook",
  "events": [
    "assignment.created",
    "assignment.deleted",
    "assignment.updated"
  ],
  "format": null
}

Delete a webhook by ID

Endpoint

DELETE api/v1/webhooks/:id

Request

Route

DELETE api/v1/webhooks/1

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 8cc1ca1c-9ac7-4aac-8a18-ba7327e0664e
X-Api-Secret: uACo_JwxBFauaYgP_eF4HaohCTv7NxKc3y5sTBsrAwY
Host: example.org
Cookie: 

cURL

curl "https://api.shop-ware.com/api/v1/webhooks/1" -d '' -X DELETE \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 8cc1ca1c-9ac7-4aac-8a18-ba7327e0664e" \
	-H "X-Api-Secret: uACo_JwxBFauaYgP_eF4HaohCTv7NxKc3y5sTBsrAwY"

Response

Simulated Response

Response Fields

Name Description type
url The url to request on events string
events A list events array of strings

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892911
ETag: W/"44136fa355b3678a1146ad16f7e8649e"
X-Request-Id: 09994d21-297b-4908-919c-e427136e532b
X-Runtime: 0.011223
Content-Length: 2

Body

{
}

Get a list of all registered webhooks

Endpoint

GET api/v1/webhooks

Request

Route

GET api/v1/webhooks

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: de00e71c-7697-428b-afe1-f30f5c75dd7f
X-Api-Secret: rgW7OliMou_0KpmFyUBWMbUdOaqkYY2epNC_FmFJyEo
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/webhooks" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: de00e71c-7697-428b-afe1-f30f5c75dd7f" \
	-H "X-Api-Secret: rgW7OliMou_0KpmFyUBWMbUdOaqkYY2epNC_FmFJyEo"

Response

Simulated Response

Response Fields

Name Description type
url The url to request on events string
events A list events array of strings

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892902
ETag: W/"166987105c7db96932aadf254020221b"
X-Request-Id: 7ef38357-1080-4297-acd2-50c52aebb731
X-Runtime: 0.009204
Content-Length: 140

Body

[
  {
    "id": 1,
    "url": "https://www.example.com/webhook_1",
    "events": [
      "assignment.created",
      "assignment.deleted",
      "assignment.updated"
    ],
    "format": null
  }
]

Get a webhook by ID

Endpoint

GET api/v1/webhooks/:id

Request

Route

GET api/v1/webhooks/1

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: ccc8fa52-31b3-43de-b39d-9e220995da6f
X-Api-Secret: PzAYKVmHQ4wN7R8soAdcd2fsU1zk6Na7rpfwo_fgEf8
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/webhooks/1" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: ccc8fa52-31b3-43de-b39d-9e220995da6f" \
	-H "X-Api-Secret: PzAYKVmHQ4wN7R8soAdcd2fsU1zk6Na7rpfwo_fgEf8"

Response

Simulated Response

Response Fields

Name Description type
url The url to request on events string
events A list events array of strings

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892904
ETag: W/"01ad15ddfdef77dd9fb6e97f43088c80"
X-Request-Id: 876d535d-ede3-4129-8774-b726a4f40cab
X-Runtime: 0.006905
Content-Length: 138

Body

{
  "id": 1,
  "url": "https://www.example.com/webhook_1",
  "events": [
    "assignment.created",
    "assignment.deleted",
    "assignment.updated"
  ],
  "format": null
}

Update a webhook

Endpoint

PUT api/v1/webhooks/:id

Parameters

Name Description type
url The URL that webhook requests will be sent to. Must be an HTTPS URL, and may not redirect. string
events An array of events that will trigger a webhook delivery. The URL will receive webhooks only for exactly the events specified in this request, and any prior registrations for events omitted in this request will be cancelled. Passing an empty array will clear all event registrations. array

Request

Route

PUT api/v1/webhooks/1

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 7a8413fa-9bda-4009-a025-e1bba4745fdc
X-Api-Secret: fpON56Y7jI-8Q40LEvgpVKULZGz_ep2F-HmRdjRacwY
Host: example.org
Cookie: 

Body

{
  "url": "https://www.example.com/new_path",
  "events": [
    "staff.updated",
    "staff.created"
  ]
}

cURL

curl "https://api.shop-ware.com/api/v1/webhooks/1" -d '{"url":"https://www.example.com/new_path","events":["staff.updated","staff.created"]}' -X PUT \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 7a8413fa-9bda-4009-a025-e1bba4745fdc" \
	-H "X-Api-Secret: fpON56Y7jI-8Q40LEvgpVKULZGz_ep2F-HmRdjRacwY"

Response

Simulated Response

Response Fields

Name Description type
url The url to request on events string
events A list events array of strings

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: private, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
Vary: Accept
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1654892909
ETag: W/"025970a2ea6d6918c75fd9ae5cb6e21a"
X-Request-Id: de00d508-f065-4124-9f87-fdf9d832340f
X-Runtime: 0.016493
Content-Length: 106

Body

{
  "id": 1,
  "url": "https://www.example.com/new_path",
  "events": [
    "staff.created",
    "staff.updated"
  ],
  "format": null
}