Shop-Ware Logo

Shop-Ware REST API v1

Copyright (c) 2017-2020 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.lvh.me (127.0.0.1) port 5000 (#0)
> GET /api/v1/tenants/69/customers HTTP/1.1
> Host: api.lvh.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 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.

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.

Appointments

Create an appointment

Endpoint

POST api/v1/tenants/:tenant_id/appointments

Parameters

Name Description Type
staff_id A foreign key that points to the Staff that the appointment is scheduled for. 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/3/appointments

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: f8bda2e7-0f79-441d-87ab-fb82c41214b5
X-Api-Secret: XaWWEjnLncdod8DNqLBS97xdm2t0ybr71wOoSBlwy6U
Host: example.org
Cookie: 

Body

{
  "staff_id": 4,
  "title": "My Appointment Title",
  "description": "My Appointment Description",
  "start_at": "2021-01-17T22:51:20Z",
  "end_at": "2021-01-18T00:51:20Z",
  "repair_order_id": 5,
  "shop_id": 3
}

cURL

curl "https://api.shop-ware.com/api/v1/tenants/3/appointments" -d '{"staff_id":4,"title":"My Appointment Title","description":"My Appointment Description","start_at":"2021-01-17T22:51:20Z","end_at":"2021-01-18T00:51:20Z","repair_order_id":5,"shop_id":3}' -X POST \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: f8bda2e7-0f79-441d-87ab-fb82c41214b5" \
	-H "X-Api-Secret: XaWWEjnLncdod8DNqLBS97xdm2t0ybr71wOoSBlwy6U"

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 that points to the Staff that the appointment is scheduled for. 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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 997
X-RateLimit-Reset: 1610664741
ETag: W/"dbca65933584a96f9fc90177226fd6a5"
X-Request-Id: 530e7d50-3e5d-4956-87ba-54a14a9c3ce2
X-Runtime: 0.030834
X-Rack-CORS: miss; no-origin
Content-Length: 286

Body

{
  "id": 4,
  "created_at": "2021-01-14T22:51:20Z",
  "updated_at": "2021-01-14T22:51:20Z",
  "staff_id": 4,
  "title": "My Appointment Title",
  "description": "My Appointment Description",
  "shop_id": 3,
  "start_at": "2021-01-17T22:51:20Z",
  "end_at": "2021-01-18T00:51:20Z",
  "repair_order_id": 5,
  "integrator_tags": [

  ]
}

Delete an specific appointment

Endpoint

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

Request

Route

DELETE api/v1/tenants/5/appointments/6

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 1c5396b7-3426-4eca-9bde-14451379f337
X-Api-Secret: 0RPJZ03Qz4WINcC-jYOghT3FI6xktOW6foKYo6xkB7M
Host: example.org
Cookie: 

cURL

curl "https://api.shop-ware.com/api/v1/tenants/5/appointments/6" -d '' -X DELETE \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 1c5396b7-3426-4eca-9bde-14451379f337" \
	-H "X-Api-Secret: 0RPJZ03Qz4WINcC-jYOghT3FI6xktOW6foKYo6xkB7M"

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 that points to the Staff that the appointment is scheduled for. 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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 995
X-RateLimit-Reset: 1610378004
ETag: W/"44136fa355b3678a1146ad16f7e8649e"
X-Request-Id: 535be642-7650-4c56-9764-4336f6421b89
X-Runtime: 0.020295
X-Rack-CORS: miss; no-origin
Content-Length: 2

Body

{
}

Get a list of all appointments

Endpoint

GET api/v1/tenants/:tenant_id/appointments

Request

Route

GET api/v1/tenants/1/appointments

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: d3d591bb-4634-47b9-9d6b-100d497cc01e
X-Api-Secret: umhh3G9mKK18ypxFT43mZdsTIqHb8E8JjNUeiVoI2eE
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: d3d591bb-4634-47b9-9d6b-100d497cc01e" \
	-H "X-Api-Secret: umhh3G9mKK18ypxFT43mZdsTIqHb8E8JjNUeiVoI2eE"

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 that points to the Staff that the appointment is scheduled for. 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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1610378003
ETag: W/"822de4dc311e79926fe1e106592747e3"
X-Request-Id: c810d09b-ea0f-4c6a-b088-6436b1c6f054
X-Runtime: 0.052932
X-Rack-CORS: miss; no-origin
Content-Length: 505

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2021-01-11T15:12:23Z",
      "updated_at": "2021-01-11T15:12:23Z",
      "staff_id": 1,
      "title": "title 1",
      "description": null,
      "shop_id": null,
      "start_at": "2021-01-11T15:12:23Z",
      "end_at": "2021-01-12T08:59:59Z",
      "repair_order_id": 2,
      "integrator_tags": [
        {
          "id": 1,
          "created_at": "2021-01-11T15:12:23Z",
          "updated_at": "2021-01-11T15:12:23Z",
          "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/2/appointments/2

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: d2cc0655-9158-4b4d-a698-0cc67fd00a2f
X-Api-Secret: hHqT93WkXKb89Kb3acqDLHaXSDB21mPSkzelCjehXWM
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/2/appointments/2" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: d2cc0655-9158-4b4d-a698-0cc67fd00a2f" \
	-H "X-Api-Secret: hHqT93WkXKb89Kb3acqDLHaXSDB21mPSkzelCjehXWM"

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 that points to the Staff that the appointment is scheduled for. 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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 998
X-RateLimit-Reset: 1610378003
ETag: W/"311e4378320b79cff7ddd48275c21d7f"
X-Request-Id: 7a243266-ce38-43f9-b643-8c0b3f5ef197
X-Runtime: 0.014444
X-Rack-CORS: miss; no-origin
Content-Length: 416

Body

{
  "id": 2,
  "created_at": "2021-01-11T15:12:23Z",
  "updated_at": "2021-01-11T15:12:23Z",
  "staff_id": 2,
  "title": "title 2",
  "description": null,
  "shop_id": null,
  "start_at": "2021-01-11T15:12:23Z",
  "end_at": "2021-01-12T08:59:59Z",
  "repair_order_id": 4,
  "integrator_tags": [
    {
      "id": 2,
      "created_at": "2021-01-11T15:12:23Z",
      "updated_at": "2021-01-11T15:12:23Z",
      "taggable_type": "Appointment",
      "taggable_id": 2,
      "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 that points to the Staff that the appointment is scheduled for. 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/4/appointments/5

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 88907e52-bfe9-4f79-91b1-64841af2083e
X-Api-Secret: dSPv9NU37n2PgDVUpXClVfJPY1K64vEMHczttLJoa8Q
Host: example.org
Cookie: 

Body

{
  "staff_id": 6,
  "title": "My Appointment Title",
  "description": "My Appointment Description",
  "start_at": "2021-01-14T15:12:24Z",
  "end_at": "2021-01-14T17:12:24Z",
  "repair_order_id": 7,
  "shop_id": 4
}

cURL

curl "https://api.shop-ware.com/api/v1/tenants/4/appointments/5" -d '{"staff_id":6,"title":"My Appointment Title","description":"My Appointment Description","start_at":"2021-01-14T15:12:24Z","end_at":"2021-01-14T17:12:24Z","repair_order_id":7,"shop_id":4}' -X PUT \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 88907e52-bfe9-4f79-91b1-64841af2083e" \
	-H "X-Api-Secret: dSPv9NU37n2PgDVUpXClVfJPY1K64vEMHczttLJoa8Q"

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 that points to the Staff that the appointment is scheduled for. 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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 996
X-RateLimit-Reset: 1610378004
ETag: W/"2118d29e3ec930db3eaf5f1dbe740cac"
X-Request-Id: 00ebd0ab-84e8-4051-884c-618c587137de
X-Runtime: 0.028537
X-Rack-CORS: miss; no-origin
Content-Length: 450

Body

{
  "id": 5,
  "created_at": "2021-01-11T15:12:24Z",
  "updated_at": "2021-01-11T15:12:24Z",
  "staff_id": 6,
  "title": "My Appointment Title",
  "description": "My Appointment Description",
  "shop_id": 4,
  "start_at": "2021-01-14T15:12:24Z",
  "end_at": "2021-01-14T17:12:24Z",
  "repair_order_id": 7,
  "integrator_tags": [
    {
      "id": 4,
      "created_at": "2021-01-11T15:12:24Z",
      "updated_at": "2021-01-11T15:12:24Z",
      "taggable_type": "Appointment",
      "taggable_id": 5,
      "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/6/assignments

Headers

Accept: application/json
X-Api-Partner-Id: d906babe-58da-464d-9cae-72398678fbe5
X-Api-Secret: YHgEyiShKZgz_8fMaUOxv2ENJh9e6qe5c2jsrwPtAQI
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/6/assignments" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: d906babe-58da-464d-9cae-72398678fbe5" \
	-H "X-Api-Secret: YHgEyiShKZgz_8fMaUOxv2ENJh9e6qe5c2jsrwPtAQI"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1610378005
ETag: W/"bd39c0ffe142cea8d2f97daf1c46b4df"
X-Request-Id: 227afbd3-a1db-4ecf-9c18-7bf76fab91fc
X-Runtime: 0.015246
X-Rack-CORS: miss; no-origin
Content-Length: 497

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2021-01-11T15:12:24Z",
      "updated_at": "2021-01-11T15:12:24Z",
      "repair_order_id": 11,
      "transfer_to_id": 10,
      "transfer_from_id": 9,
      "message": "some message",
      "accepted_at": "2021-01-11T15:12:24Z",
      "cancelled_at": null,
      "integrator_tags": [
        {
          "id": 6,
          "created_at": "2021-01-11T15:12:25Z",
          "updated_at": "2021-01-11T15:12:25Z",
          "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/7/assignments/2

Headers

Accept: application/json
X-Api-Partner-Id: 56f8d5b9-5549-453c-9ba4-1a18c037e91a
X-Api-Secret: g4LzBjNGAfkvnr_a3CYRDK4t1UknmbLDLTRTiORVLAI
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/7/assignments/2" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 56f8d5b9-5549-453c-9ba4-1a18c037e91a" \
	-H "X-Api-Secret: g4LzBjNGAfkvnr_a3CYRDK4t1UknmbLDLTRTiORVLAI"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 998
X-RateLimit-Reset: 1610378005
ETag: W/"b4c62b2c37451d8b46866e07550b3d6d"
X-Request-Id: 2c7a4567-5846-4e64-993f-d4578034ac37
X-Runtime: 0.011684
X-Rack-CORS: miss; no-origin
Content-Length: 409

Body

{
  "id": 2,
  "created_at": "2021-01-11T15:12:25Z",
  "updated_at": "2021-01-11T15:12:25Z",
  "repair_order_id": 12,
  "transfer_to_id": 13,
  "transfer_from_id": 12,
  "message": "some message",
  "accepted_at": "2021-01-11T15:12:25Z",
  "cancelled_at": null,
  "integrator_tags": [
    {
      "id": 7,
      "created_at": "2021-01-11T15:12:25Z",
      "updated_at": "2021-01-11T15:12:25Z",
      "taggable_type": "Assignment",
      "taggable_id": 2,
      "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/8/canned_jobs

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: c0720b81-87e7-42dc-a935-3af200f149f2
X-Api-Secret: fkn_Lun7pdmLGWcZ33_CEK5R1_Ij59jwYVyudnwz5Sc
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/8/canned_jobs" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: c0720b81-87e7-42dc-a935-3af200f149f2" \
	-H "X-Api-Secret: fkn_Lun7pdmLGWcZ33_CEK5R1_Ij59jwYVyudnwz5Sc"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1610378005
ETag: W/"9fe96418132ba45a85c8684d9ae53409"
X-Request-Id: dacaa144-7ea3-4708-9658-26e7dac5ced7
X-Runtime: 0.027412
X-Rack-CORS: miss; no-origin
Content-Length: 1460

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2021-01-11T15:12:25Z",
      "updated_at": "2021-01-11T15:12:25Z",
      "title": "Fake Canned Job Name",
      "all_vehicles": false,
      "frequency": 3360,
      "category_id": 25,
      "auto_applied": false,
      "shop_id": 9,
      "optimizer_enabled": true,
      "integrator_tags": [
        {
          "id": 8,
          "created_at": "2021-01-11T15:12:25Z",
          "updated_at": "2021-01-11T15:12:25Z",
          "taggable_type": "CannedJob",
          "taggable_id": 1,
          "name": "987 zyx",
          "value": "abc 123"
        }
      ],
      "sublets": [
        {
          "id": 1,
          "created_at": "2021-01-11T15:12:25Z",
          "updated_at": "2021-01-11T15:12:25Z",
          "name": "MFD Repair",
          "price_cents": 70000,
          "taxable": true
        }
      ],
      "inspections": [
        {
          "id": 1,
          "created_at": "2021-01-11T15:12:25Z",
          "updated_at": "2021-01-11T15:12:25Z",
          "name": "Confirm proper operation of instruments and warning lights"
        }
      ],
      "vehicles": [
        {
          "id": 1,
          "created_at": "2021-01-11T15:12:25Z",
          "updated_at": "2021-01-11T15:12:25Z",
          "year": "2006",
          "make": "Toyota",
          "model": "Prius",
          "engine": "1.5L L4 (1NZFXE) ELECTRIC/GAS FI"
        }
      ],
      "hazmats": [
        {
          "id": 1,
          "created_at": "2021-01-11T15:12:25Z",
          "updated_at": "2021-01-11T15:12:25Z",
          "name": "Qt Motor Oil Recycling",
          "fee_cents": 75,
          "taxable": true,
          "quantity": 4.0
        }
      ],
      "parts": [
        {
          "id": 1,
          "created_at": "2021-01-11T15:12:25Z",
          "updated_at": "2021-01-11T15:12:25Z",
          "part_inventory_id": 1866,
          "taxable": true,
          "quantity": 4.0
        }
      ],
      "labors": [
        {
          "id": 1,
          "created_at": "2021-01-11T15:12:25Z",
          "updated_at": "2021-01-11T15:12:25Z",
          "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/9/canned_jobs/2

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: c751e2ed-ee5e-4f9a-8b97-1cd5c0a993f1
X-Api-Secret: 2X8xOenQUi1eUCMcbJ8DXkamiKZ5cS87JIAFB5qJSxg
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/9/canned_jobs/2" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: c751e2ed-ee5e-4f9a-8b97-1cd5c0a993f1" \
	-H "X-Api-Secret: 2X8xOenQUi1eUCMcbJ8DXkamiKZ5cS87JIAFB5qJSxg"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 998
X-RateLimit-Reset: 1610378006
ETag: W/"825db483e7857409c184014cd0f69fe6"
X-Request-Id: 431cdd3d-a6fc-4edf-a2cd-f5a650510ddd
X-Runtime: 0.034827
X-Rack-CORS: miss; no-origin
Content-Length: 1372

Body

{
  "id": 2,
  "created_at": "2021-01-11T15:12:26Z",
  "updated_at": "2021-01-11T15:12:26Z",
  "title": "Fake Canned Job Name",
  "all_vehicles": false,
  "frequency": 3360,
  "category_id": 29,
  "auto_applied": false,
  "shop_id": 11,
  "optimizer_enabled": true,
  "integrator_tags": [
    {
      "id": 9,
      "created_at": "2021-01-11T15:12:26Z",
      "updated_at": "2021-01-11T15:12:26Z",
      "taggable_type": "CannedJob",
      "taggable_id": 2,
      "name": "987 zyx",
      "value": "abc 123"
    }
  ],
  "sublets": [
    {
      "id": 2,
      "created_at": "2021-01-11T15:12:26Z",
      "updated_at": "2021-01-11T15:12:26Z",
      "name": "MFD Repair",
      "price_cents": 70000,
      "taxable": true
    }
  ],
  "inspections": [
    {
      "id": 2,
      "created_at": "2021-01-11T15:12:26Z",
      "updated_at": "2021-01-11T15:12:26Z",
      "name": "Confirm proper operation of instruments and warning lights"
    }
  ],
  "vehicles": [
    {
      "id": 2,
      "created_at": "2021-01-11T15:12:26Z",
      "updated_at": "2021-01-11T15:12:26Z",
      "year": "2006",
      "make": "Toyota",
      "model": "Prius",
      "engine": "1.5L L4 (1NZFXE) ELECTRIC/GAS FI"
    }
  ],
  "hazmats": [
    {
      "id": 2,
      "created_at": "2021-01-11T15:12:26Z",
      "updated_at": "2021-01-11T15:12:26Z",
      "name": "Qt Motor Oil Recycling",
      "fee_cents": 75,
      "taxable": true,
      "quantity": 4.0
    }
  ],
  "parts": [
    {
      "id": 2,
      "created_at": "2021-01-11T15:12:26Z",
      "updated_at": "2021-01-11T15:12:26Z",
      "part_inventory_id": 1866,
      "taxable": true,
      "quantity": 4.0
    }
  ],
  "labors": [
    {
      "id": 2,
      "created_at": "2021-01-11T15:12:26Z",
      "updated_at": "2021-01-11T15:12:26Z",
      "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/10/categories

Headers

Accept: application/json
X-Api-Partner-Id: 17e3f9bf-060a-4ba0-9386-253eb91898ba
X-Api-Secret: aYnX9TWvv2XJnVFNb9rDlPXDNRdZXqwBCsV2B6FcatQ
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/10/categories" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 17e3f9bf-060a-4ba0-9386-253eb91898ba" \
	-H "X-Api-Secret: aYnX9TWvv2XJnVFNb9rDlPXDNRdZXqwBCsV2B6FcatQ"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1610378006
ETag: W/"c5bb7801f0507afafe5ac7380b36b91e"
X-Request-Id: eaf855ae-cf1a-4937-b8e8-538aee29b7a0
X-Runtime: 0.040710
X-Rack-CORS: miss; no-origin
Content-Length: 616

Body

{
  "results": [
    {
      "id": 32,
      "created_at": "2021-01-11T15:12:26Z",
      "updated_at": "2021-01-11T15:12:26Z",
      "text": "Repair",
      "integrator_tags": [

      ]
    },
    {
      "id": 31,
      "created_at": "2021-01-11T15:12:26Z",
      "updated_at": "2021-01-11T15:12:26Z",
      "text": "Diagnosis",
      "integrator_tags": [

      ]
    },
    {
      "id": 30,
      "created_at": "2021-01-11T15:12:26Z",
      "updated_at": "2021-01-11T15:12:26Z",
      "text": "Maintenance",
      "integrator_tags": [
        {
          "id": 10,
          "created_at": "2021-01-11T15:12:26Z",
          "updated_at": "2021-01-11T15:12:26Z",
          "taggable_type": "Category",
          "taggable_id": 30,
          "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/11/categories/33

Headers

Accept: application/json
X-Api-Partner-Id: cf0b9736-1399-4e4e-91fd-7897253e35e2
X-Api-Secret: lR1mCjPHHvJApwsuNJwES5g1EGDrLBUrQ2pcQAT73hw
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/11/categories/33" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: cf0b9736-1399-4e4e-91fd-7897253e35e2" \
	-H "X-Api-Secret: lR1mCjPHHvJApwsuNJwES5g1EGDrLBUrQ2pcQAT73hw"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 998
X-RateLimit-Reset: 1610378006
ETag: W/"2d38606136600ca7ce6f19a358434f06"
X-Request-Id: 64627376-7a1b-400c-a719-1ff8a65ddf19
X-Runtime: 0.012702
X-Rack-CORS: miss; no-origin
Content-Length: 286

Body

{
  "id": 33,
  "created_at": "2021-01-11T15:12:26Z",
  "updated_at": "2021-01-11T15:12:26Z",
  "text": "Maintenance",
  "integrator_tags": [
    {
      "id": 11,
      "created_at": "2021-01-11T15:12:26Z",
      "updated_at": "2021-01-11T15:12:26Z",
      "taggable_type": "Category",
      "taggable_id": 33,
      "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 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/14/customers

Headers

Content-Type: application/json
Accept: application/json
X-Api-Partner-Id: 29aa5fba-dce6-4339-bd46-f78f20f2059b
X-Api-Secret: mJUXkh6iyce2eQbtes0-E0Nsbv_sILrwsF6Ng197f_A
Host: example.org
Cookie: 

Body

{
  "first_name": "Keith",
  "last_name": "Richards",
  "email": "keef2@example.com",
  "phone": "+15555551234",
  "detail": "New customer",
  "address": "123 Main Street",
  "city": "San Diego",
  "state": "CA",
  "zip": "92111",
  "marketing_ok": true
}

cURL

curl "https://api.shop-ware.com/api/v1/tenants/14/customers" -d '{"first_name":"Keith","last_name":"Richards","email":"keef2@example.com","phone":"+15555551234","detail":"New customer","address":"123 Main Street","city":"San Diego","state":"CA","zip":"92111","marketing_ok":true}' -X POST \
	-H "Content-Type: application/json" \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 29aa5fba-dce6-4339-bd46-f78f20f2059b" \
	-H "X-Api-Secret: mJUXkh6iyce2eQbtes0-E0Nsbv_sILrwsF6Ng197f_A"

Response

Simulated Response

Response Fields

Name Description type
phone Customer's phone number in the format of (###) ###-####, ignored if phones is included 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[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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 997
X-RateLimit-Reset: 1610378007
ETag: W/"07aa1620f00de03684df6d9d2f5f4672"
X-Request-Id: 10182eef-8f61-4059-af18-87598705efbe
X-Runtime: 0.040415
X-Rack-CORS: miss; no-origin
Content-Length: 398

Body

{
  "id": 17,
  "created_at": "2021-01-11T15:12:27Z",
  "updated_at": "2021-01-11T15:12:27Z",
  "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": [

  ],
  "phones": [
    {
      "number": "+15555551234",
      "label": null,
      "preferred": true
    }
  ]
}

Get a list of all customers

Endpoint

GET api/v1/tenants/:tenant_id/customers

Request

Route

GET api/v1/tenants/12/customers

Headers

Content-Type: application/json
Accept: application/json
X-Api-Partner-Id: 79785073-09fa-4868-800e-b027b3b27f0c
X-Api-Secret: v8qnJ33XFx6mKDgR5-zMOnZL66z7ehnWwVsoi7566uk
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/12/customers" -X GET \
	-H "Content-Type: application/json" \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 79785073-09fa-4868-800e-b027b3b27f0c" \
	-H "X-Api-Secret: v8qnJ33XFx6mKDgR5-zMOnZL66z7ehnWwVsoi7566uk"

Response

Simulated Response

Response Fields

Name Description type
phone Customer's phone number in the format of (###) ###-####, ignored if phones is included 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[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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1610378006
ETag: W/"9df98db65bc4a0a225fcc2d1f2651553"
X-Request-Id: 598b0a49-a811-430c-b049-fc08fe8a1977
X-Runtime: 0.021294
X-Rack-CORS: miss; no-origin
Content-Length: 654

Body

{
  "results": [
    {
      "id": 14,
      "created_at": "2021-01-11T15:12:26Z",
      "updated_at": "2021-01-11T15:12:26Z",
      "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": [
        15,
        16
      ],
      "email": "keef@example.com",
      "integrator_tags": [
        {
          "id": 12,
          "created_at": "2021-01-11T15:12:26Z",
          "updated_at": "2021-01-11T15:12:26Z",
          "taggable_type": "Customer",
          "taggable_id": 14,
          "name": "tag_name",
          "value": "tag_value"
        }
      ],
      "phones": [
        {
          "number": "+15555551234",
          "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/13/customers/15

Headers

Content-Type: application/json
Accept: application/json
X-Api-Partner-Id: 7128e956-16f9-4f18-a62d-0a76da8523f6
X-Api-Secret: 6mhC0kyfmgWMyNnq8FZxVVY1rhYaASQbrP1G9pKjl-c
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/13/customers/15" -X GET \
	-H "Content-Type: application/json" \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 7128e956-16f9-4f18-a62d-0a76da8523f6" \
	-H "X-Api-Secret: 6mhC0kyfmgWMyNnq8FZxVVY1rhYaASQbrP1G9pKjl-c"

Response

Simulated Response

Response Fields

Name Description type
phone Customer's phone number in the format of (###) ###-####, ignored if phones is included 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[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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 998
X-RateLimit-Reset: 1610378007
ETag: W/"52414709885a98ee5eb6933147fa61c3"
X-Request-Id: bd638190-760e-402d-af41-b182d0b063a0
X-Runtime: 0.017858
X-Rack-CORS: miss; no-origin
Content-Length: 565

Body

{
  "id": 15,
  "created_at": "2021-01-11T15:12:27Z",
  "updated_at": "2021-01-11T15:12:27Z",
  "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": [
    18,
    19
  ],
  "email": "keef@example.com",
  "integrator_tags": [
    {
      "id": 13,
      "created_at": "2021-01-11T15:12:27Z",
      "updated_at": "2021-01-11T15:12:27Z",
      "taggable_type": "Customer",
      "taggable_id": 15,
      "name": "tag_name",
      "value": "tag_value"
    }
  ],
  "phones": [
    {
      "number": "+15555551234",
      "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/15/customers/19

Headers

Content-Type: application/json
Accept: application/json
X-Api-Partner-Id: 959b6f7b-66c0-4ef4-858a-70637d54112e
X-Api-Secret: 33Ol5UsNurGTiwQrUjMHeLLzzhopBBkV4KP7cgs1Slc
Host: example.org
Cookie: 

Body

{
  "first_name": "John",
  "last_name": "Doe",
  "email": "john+doe@example.com",
  "phone": "+15555559876",
  "detail": "old customer",
  "address": "987 Main Street",
  "city": "Miami",
  "state": "FL",
  "zip": "33166",
  "marketing_ok": false
}

cURL

curl "https://api.shop-ware.com/api/v1/tenants/15/customers/19" -d '{"first_name":"John","last_name":"Doe","email":"john+doe@example.com","phone":"+15555559876","detail":"old customer","address":"987 Main Street","city":"Miami","state":"FL","zip":"33166","marketing_ok":false}' -X PUT \
	-H "Content-Type: application/json" \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 959b6f7b-66c0-4ef4-858a-70637d54112e" \
	-H "X-Api-Secret: 33Ol5UsNurGTiwQrUjMHeLLzzhopBBkV4KP7cgs1Slc"

Response

Simulated Response

Response Fields

Name Description type
phone Customer's phone number in the format of (###) ###-####, ignored if phones is included 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[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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 996
X-RateLimit-Reset: 1610378007
ETag: W/"2742ccade1a75f9781ac58c978181159"
X-Request-Id: 7932fda9-392e-46a9-ae87-fe758e6c9b0b
X-Runtime: 0.036830
X-Rack-CORS: miss; no-origin
Content-Length: 392

Body

{
  "id": 19,
  "created_at": "2021-01-11T15:12:27Z",
  "updated_at": "2021-01-11T15:12:27Z",
  "first_name": "John",
  "last_name": "Doe",
  "phone": "(555) 555-9876",
  "detail": "old customer",
  "address": "987 Main Street",
  "city": "Miami",
  "state": "FL",
  "zip": "33166",
  "marketing_ok": false,
  "shop_ids": [

  ],
  "email": "john+doe@example.com",
  "integrator_tags": [

  ],
  "phones": [
    {
      "number": "+15555559876",
      "label": null,
      "preferred": true
    }
  ]
}

Gp Exceptions

Get a list of all gp exceptions

Endpoint

GET api/v1/tenants/:tenant_id/gp_exceptions

Request

Route

GET api/v1/tenants/16/gp_exceptions

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 2e1ba6f8-5ca1-4c3d-9fd6-163e01615f73
X-Api-Secret: HbvVSMFwAgXMtaK-EynlPgNAB9ngqN_L5zUoNbTbIAg
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/16/gp_exceptions" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 2e1ba6f8-5ca1-4c3d-9fd6-163e01615f73" \
	-H "X-Api-Secret: HbvVSMFwAgXMtaK-EynlPgNAB9ngqN_L5zUoNbTbIAg"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1610378008
ETag: W/"8b0948e07aa8f2a9990ad9c8f75bf93b"
X-Request-Id: d3bed693-0c71-4f1c-beef-5feba34e93c6
X-Runtime: 0.013598
X-Rack-CORS: miss; no-origin
Content-Length: 415

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2021-01-11T15:12:28Z",
      "updated_at": "2021-01-11T15:12:28Z",
      "name": "Fake Gp Exception Name",
      "shop_id": 27,
      "percent": 12.3,
      "integrator_tags": [
        {
          "id": 16,
          "created_at": "2021-01-11T15:12:28Z",
          "updated_at": "2021-01-11T15:12:28Z",
          "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/17/gp_exceptions/2

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: e849075c-995f-492b-a68f-87476217ed41
X-Api-Secret: B7L3UE4GnF5OYn4OihRcsZOZblraCs16AERulZ4_8xM
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/17/gp_exceptions/2" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: e849075c-995f-492b-a68f-87476217ed41" \
	-H "X-Api-Secret: B7L3UE4GnF5OYn4OihRcsZOZblraCs16AERulZ4_8xM"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 998
X-RateLimit-Reset: 1610378008
ETag: W/"55a8f177f98141035d337a5e7685a3ef"
X-Request-Id: bf43b5ec-5063-4694-b0e0-6b3c3f676399
X-Runtime: 0.011334
X-Rack-CORS: miss; no-origin
Content-Length: 326

Body

{
  "id": 2,
  "created_at": "2021-01-11T15:12:28Z",
  "updated_at": "2021-01-11T15:12:28Z",
  "name": "Fake Gp Exception Name",
  "shop_id": 29,
  "percent": 12.3,
  "integrator_tags": [
    {
      "id": 17,
      "created_at": "2021-01-11T15:12:28Z",
      "updated_at": "2021-01-11T15:12:28Z",
      "taggable_type": "GpException",
      "taggable_id": 2,
      "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/20/integrator_tags

Headers

Accept: application/json
X-Api-Partner-Id: 48949df1-ddb8-4fbf-8de8-d1e2460849f0
X-Api-Secret: z790rr41FMpCoXi0f0bSZvDOi_QDcq3iGlw9lK7KyZs
Content-Type: application/json
Host: example.org
Cookie: 

Body

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

cURL

curl "https://api.shop-ware.com/api/v1/tenants/20/integrator_tags" -d '{"taggable_type":"Customer","taggable_id":22,"name":"TagName","value":"ABC123"}' -X POST \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 48949df1-ddb8-4fbf-8de8-d1e2460849f0" \
	-H "X-Api-Secret: z790rr41FMpCoXi0f0bSZvDOi_QDcq3iGlw9lK7KyZs" \
	-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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Location: http://example.org/api/v1/tenants/20/integrator_tags/24
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 997
X-RateLimit-Reset: 1610378008
ETag: W/"383f9437394689d0d5f2ea8c44e79847"
X-Request-Id: 049a0065-329f-420c-86ca-ef66e5a3f304
X-Runtime: 0.021297
X-Rack-CORS: miss; no-origin
Content-Length: 159

Body

{
  "id": 24,
  "created_at": "2021-01-11T15:12:28Z",
  "updated_at": "2021-01-11T15:12:28Z",
  "taggable_type": "Customer",
  "taggable_id": 22,
  "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/22/integrator_tags/28

Headers

Accept: application/json
X-Api-Partner-Id: 6f0b133d-84c9-4067-b6aa-315092039008
X-Api-Secret: gH4hSrV733nyAj4ZZgidxY1nTTG28Z2S-wHPtmmz9bE
Host: example.org
Content-Type: application/x-www-form-urlencoded
Cookie: 

cURL

curl "https://api.shop-ware.com/api/v1/tenants/22/integrator_tags/28" -d '' -X DELETE \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 6f0b133d-84c9-4067-b6aa-315092039008" \
	-H "X-Api-Secret: gH4hSrV733nyAj4ZZgidxY1nTTG28Z2S-wHPtmmz9bE" \
	-H "Content-Type: application/x-www-form-urlencoded"

Response

Simulated Response

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 995
X-RateLimit-Reset: 1610378008
ETag: W/"44136fa355b3678a1146ad16f7e8649e"
X-Request-Id: dcf06038-839b-4a7d-9c84-324cefe32357
X-Runtime: 0.014580
X-Rack-CORS: miss; no-origin
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/18/integrator_tags

Headers

Accept: application/json
X-Api-Partner-Id: 76744352-e289-4c43-b565-9732f135ca5e
X-Api-Secret: OzTJScRlUaBYiC6nLrcbF0wIWYkktd4y5rLFjLQKg94
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/18/integrator_tags" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 76744352-e289-4c43-b565-9732f135ca5e" \
	-H "X-Api-Secret: OzTJScRlUaBYiC6nLrcbF0wIWYkktd4y5rLFjLQKg94"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1610378008
ETag: W/"b13b287cd1a31a8fac5e5ba7b1fe6a82"
X-Request-Id: 7d44a9c8-a7f9-43ce-83b1-dfdce80194ac
X-Runtime: 0.012272
X-Rack-CORS: miss; no-origin
Content-Length: 412

Body

{
  "results": [
    {
      "id": 19,
      "created_at": "2021-01-11T15:12:28Z",
      "updated_at": "2021-01-11T15:12:28Z",
      "taggable_type": "Shop",
      "taggable_id": 30,
      "name": "tag_name",
      "value": "tag_value"
    },
    {
      "id": 18,
      "created_at": "2021-01-11T15:12:28Z",
      "updated_at": "2021-01-11T15:12:28Z",
      "taggable_type": "Customer",
      "taggable_id": 20,
      "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/19/integrator_tags/21

Headers

Accept: application/json
X-Api-Partner-Id: 60fe01dd-dff4-4d5c-b876-9af00403416c
X-Api-Secret: RHXeIwmlSmeuS6aNFzFo13lRKWd5NImZ10nxhfOmVz0
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/19/integrator_tags/21" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 60fe01dd-dff4-4d5c-b876-9af00403416c" \
	-H "X-Api-Secret: RHXeIwmlSmeuS6aNFzFo13lRKWd5NImZ10nxhfOmVz0"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 998
X-RateLimit-Reset: 1610378008
ETag: W/"d119e11a573d151162c4d51d70b9649c"
X-Request-Id: 9b9b80db-e893-469e-90bd-7fc4934ec3bb
X-Runtime: 0.011239
X-Rack-CORS: miss; no-origin
Content-Length: 159

Body

{
  "id": 21,
  "created_at": "2021-01-11T15:12:28Z",
  "updated_at": "2021-01-11T15:12:28Z",
  "taggable_type": "Shop",
  "taggable_id": 31,
  "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/21/integrator_tags/26

Headers

Accept: application/json
X-Api-Partner-Id: c89255c3-3fca-4d1c-a03d-69f44367c834
X-Api-Secret: v_tbAwqTUQH06D6gDWl6TQYtqTVW85qzkOggvE-4Erw
Content-Type: application/json
Host: example.org
Cookie: 

Body

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

cURL

curl "https://api.shop-ware.com/api/v1/tenants/21/integrator_tags/26" -d '{"taggable_type":"Customer","taggable_id":23,"name":"TagName","value":"ABC123"}' -X PUT \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: c89255c3-3fca-4d1c-a03d-69f44367c834" \
	-H "X-Api-Secret: v_tbAwqTUQH06D6gDWl6TQYtqTVW85qzkOggvE-4Erw" \
	-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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 996
X-RateLimit-Reset: 1610378008
ETag: W/"4f566d148480b5092abb5ac43e1f62fc"
X-Request-Id: dca4d996-a429-42d6-8584-d20d541aecc8
X-Runtime: 0.024817
X-Rack-CORS: miss; no-origin
Content-Length: 159

Body

{
  "id": 26,
  "created_at": "2021-01-11T15:12:28Z",
  "updated_at": "2021-01-11T15:12:28Z",
  "taggable_type": "Customer",
  "taggable_id": 23,
  "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/23/inventories

Headers

Accept: application/json
X-Api-Partner-Id: 5f4d9de9-e692-46e2-802d-4b892ca72e58
X-Api-Secret: 27AO79KPYga2YqsT4Pa2He1N05yZD_vE31zQZeolauc
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/23/inventories" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 5f4d9de9-e692-46e2-802d-4b892ca72e58" \
	-H "X-Api-Secret: 27AO79KPYga2YqsT4Pa2He1N05yZD_vE31zQZeolauc"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1610378009
ETag: W/"d30b026d57ed553d9588ab2c1848cb26"
X-Request-Id: 970086dc-92cb-4786-a4cf-adb6ec1d8f66
X-Runtime: 0.017348
X-Rack-CORS: miss; no-origin
Content-Length: 1011

Body

{
  "results": [
    {
      "id": 3,
      "created_at": "2021-01-11T15:12:29Z",
      "updated_at": "2021-01-11T15:12:29Z",
      "type": "PartInventory",
      "brand": "Honda",
      "description": "Throttle Body Gasket",
      "number": "16176-RTA-004",
      "list_price_cents": 439,
      "cost_cents": 179,
      "gp_price_cents": 537,
      "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": 36,
      "gp_exception_id": 3,
      "partstech_part_id": "A1B2C3",
      "quantity_in_progress": 3.0,
      "quantity_needed": 8.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": 29,
          "created_at": "2021-01-11T15:12:29Z",
          "updated_at": "2021-01-11T15:12:29Z",
          "taggable_type": "Inventory",
          "taggable_id": 3,
          "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/24/inventories/4

Headers

Accept: application/json
X-Api-Partner-Id: e7a75f39-1454-4693-a984-f1525a837fe6
X-Api-Secret: rmPSZc6u5hTMvKxk8nM2UUPG2S8czeC_410_kPRxzRY
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/24/inventories/4" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: e7a75f39-1454-4693-a984-f1525a837fe6" \
	-H "X-Api-Secret: rmPSZc6u5hTMvKxk8nM2UUPG2S8czeC_410_kPRxzRY"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 998
X-RateLimit-Reset: 1610378009
ETag: W/"32ce9a9fcfdfc4f38eb593312f0a2aa7"
X-Request-Id: 2c9446cc-46ef-451e-a0ed-9b2b4b8c1427
X-Runtime: 0.015789
X-Rack-CORS: miss; no-origin
Content-Length: 922

Body

{
  "id": 4,
  "created_at": "2021-01-11T15:12:29Z",
  "updated_at": "2021-01-11T15:12:29Z",
  "type": "PartInventory",
  "brand": "Honda",
  "description": "Throttle Body Gasket",
  "number": "16176-RTA-004",
  "list_price_cents": 439,
  "cost_cents": 179,
  "gp_price_cents": 537,
  "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": 3,
  "last_vendor_id": 4,
  "shop_id": 38,
  "gp_exception_id": 4,
  "partstech_part_id": "A1B2C3",
  "quantity_in_progress": 3.0,
  "quantity_needed": 8.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": 30,
      "created_at": "2021-01-11T15:12:29Z",
      "updated_at": "2021-01-11T15:12:29Z",
      "taggable_type": "Inventory",
      "taggable_id": 4,
      "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/28/notes

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: c2ecac8d-89bf-4dca-8a9c-c378c909b9dc
X-Api-Secret: a6Z8OaMSsUagU11kG1uZMXcHX0SJBUWlo479QeGPciY
Host: example.org
Cookie: 

Body

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

cURL

curl "https://api.shop-ware.com/api/v1/tenants/28/notes" -d '{"repair_order_id":28,"description":"New comment"}' -X POST \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: c2ecac8d-89bf-4dca-8a9c-c378c909b9dc" \
	-H "X-Api-Secret: a6Z8OaMSsUagU11kG1uZMXcHX0SJBUWlo479QeGPciY"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 996
X-RateLimit-Reset: 1610378010
ETag: W/"1d52cae85675bd9ebd96943a2fbdb75a"
X-Request-Id: fdc38add-20f9-4187-b449-003e34837ab9
X-Runtime: 0.020920
X-Rack-CORS: miss; no-origin
Content-Length: 129

Body

{
  "id": 5,
  "created_at": "2021-01-11T15:12:30Z",
  "updated_at": "2021-01-11T15:12:30Z",
  "description": "New comment",
  "repair_order_id": 28
}

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/25/notes

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: c317ceda-efc8-4c7c-82ee-0aeb750b870b
X-Api-Secret: rsiEyTqAOxrjHJhbAy-1ZqI2K5xKgYCEemzZOUVwgNU
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/25/notes" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: c317ceda-efc8-4c7c-82ee-0aeb750b870b" \
	-H "X-Api-Secret: rsiEyTqAOxrjHJhbAy-1ZqI2K5xKgYCEemzZOUVwgNU"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1610378009
ETag: W/"16589d832f770ef7ed3bc0312714b47a"
X-Request-Id: 7bc0f067-49f0-47be-9f19-bf6dff60efc4
X-Runtime: 0.010493
X-Rack-CORS: miss; no-origin
Content-Length: 226

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2021-01-11T15:12:29Z",
      "updated_at": "2021-01-11T15:12:29Z",
      "description": "This is a test note",
      "repair_order_id": 23
    }
  ],
  "limit": 1,
  "limited": false,
  "total_count": 1,
  "current_page": 1,
  "total_pages": 1
}

Request

Route

GET api/v1/tenants/25/notes?repair_order_id=23

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: c317ceda-efc8-4c7c-82ee-0aeb750b870b
X-Api-Secret: rsiEyTqAOxrjHJhbAy-1ZqI2K5xKgYCEemzZOUVwgNU
Host: example.org
Cookie: 

Query Parameters

repair_order_id=23

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/25/notes?repair_order_id=23" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: c317ceda-efc8-4c7c-82ee-0aeb750b870b" \
	-H "X-Api-Secret: rsiEyTqAOxrjHJhbAy-1ZqI2K5xKgYCEemzZOUVwgNU"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 998
X-RateLimit-Reset: 1610378009
ETag: W/"16589d832f770ef7ed3bc0312714b47a"
X-Request-Id: abb30532-1983-48f2-948e-ce31b48e7739
X-Runtime: 0.008676
X-Rack-CORS: miss; no-origin
Content-Length: 226

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2021-01-11T15:12:29Z",
      "updated_at": "2021-01-11T15:12:29Z",
      "description": "This is a test note",
      "repair_order_id": 23
    }
  ],
  "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/26/notes/2

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: afe50823-9577-47e2-8e78-a1f954cb8f83
X-Api-Secret: _LrTpYu3494iXxGUVOivSe5RoZ_yF3W8lSVMbamG8S4
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/26/notes/2" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: afe50823-9577-47e2-8e78-a1f954cb8f83" \
	-H "X-Api-Secret: _LrTpYu3494iXxGUVOivSe5RoZ_yF3W8lSVMbamG8S4"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 997
X-RateLimit-Reset: 1610378010
ETag: W/"92499498359367d63340f92a00fb4e79"
X-Request-Id: 7d30e129-d37b-4e2d-91d6-6958a893e474
X-Runtime: 0.009519
X-Rack-CORS: miss; no-origin
Content-Length: 137

Body

{
  "id": 2,
  "created_at": "2021-01-11T15:12:30Z",
  "updated_at": "2021-01-11T15:12:30Z",
  "description": "This is a test note",
  "repair_order_id": 24
}

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/27/notes/3

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: c53b3ff3-7812-4097-ad8e-f6a35ffe38f0
X-Api-Secret: 59mIPAg3IMLmNwUbOPt5hlzCXg-xdn1iGBHGqzrclYU
Host: example.org
Cookie: 

Body

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

cURL

curl "https://api.shop-ware.com/api/v1/tenants/27/notes/3" -d '{"description":"New Comment","repair_order_id":26}' -X PUT \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: c53b3ff3-7812-4097-ad8e-f6a35ffe38f0" \
	-H "X-Api-Secret: 59mIPAg3IMLmNwUbOPt5hlzCXg-xdn1iGBHGqzrclYU"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1601557560
ETag: W/"3e2758b9573dec7af43745ced1eb1bb7"
X-Request-Id: d2ec4892-9ab6-483d-9154-3963e6f5d595
X-Runtime: 0.011466
X-Rack-CORS: miss; no-origin
Content-Length: 129

Body

{
  "id": 3,
  "created_at": "2021-01-11T15:12:30Z",
  "updated_at": "2020-10-01T13:05:00Z",
  "description": "New Comment",
  "repair_order_id": 26
}

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/29/past_recommendations

Headers

Accept: application/json
X-Api-Partner-Id: 25f5076e-0827-4caa-af74-2168c1e875b2
X-Api-Secret: WzUq1ZbKf7yOcUCEjDlbtoR7a_jS5UVvOPB3BtRb9bI
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/29/past_recommendations" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 25f5076e-0827-4caa-af74-2168c1e875b2" \
	-H "X-Api-Secret: WzUq1ZbKf7yOcUCEjDlbtoR7a_jS5UVvOPB3BtRb9bI"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1610378010
ETag: W/"7283b17ae2f058cbfc5a17aff0d45c14"
X-Request-Id: f1b5c644-d5f0-41a5-a2ce-fe1ae5043c43
X-Runtime: 0.011028
X-Rack-CORS: miss; no-origin
Content-Length: 612

Body

{
  "results": [
    {
      "id": 2,
      "created_at": "2021-01-11T15:12:30Z",
      "updated_at": "2021-01-11T15:12:30Z",
      "description": "Rotate tires",
      "approved": "false",
      "approver_id": null,
      "approval_type": null,
      "imported": false,
      "vehicle_id": 5,
      "done": false,
      "recommendation_id": 1,
      "approval_at": null
    },
    {
      "id": 1,
      "created_at": "2021-01-11T15:12:30Z",
      "updated_at": "2021-01-11T15:12:30Z",
      "description": "Change oil",
      "approved": "true",
      "approver_id": 27,
      "approval_type": "phone",
      "imported": true,
      "vehicle_id": 5,
      "done": true,
      "recommendation_id": 1,
      "approval_at": "2021-01-10T15:12:30Z"
    }
  ],
  "limit": 2,
  "limited": false,
  "total_count": 2,
  "current_page": 1,
  "total_pages": 1
}

Request

Route

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

Headers

Accept: application/json
X-Api-Partner-Id: 25f5076e-0827-4caa-af74-2168c1e875b2
X-Api-Secret: WzUq1ZbKf7yOcUCEjDlbtoR7a_jS5UVvOPB3BtRb9bI
Host: example.org
Cookie: 

Query Parameters

done=true

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/29/past_recommendations?done=true" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 25f5076e-0827-4caa-af74-2168c1e875b2" \
	-H "X-Api-Secret: WzUq1ZbKf7yOcUCEjDlbtoR7a_jS5UVvOPB3BtRb9bI"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 998
X-RateLimit-Reset: 1610378010
ETag: W/"cffe690d2ad624c41152b9b87e3c6d7c"
X-Request-Id: 809b3c77-6398-47ab-a9c8-8491e5177c29
X-Runtime: 0.009536
X-Rack-CORS: miss; no-origin
Content-Length: 357

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2021-01-11T15:12:30Z",
      "updated_at": "2021-01-11T15:12:30Z",
      "description": "Change oil",
      "approved": "true",
      "approver_id": 27,
      "approval_type": "phone",
      "imported": true,
      "vehicle_id": 5,
      "done": true,
      "recommendation_id": 1,
      "approval_at": "2021-01-10T15:12:30Z"
    }
  ],
  "limit": 1,
  "limited": false,
  "total_count": 1,
  "current_page": 1,
  "total_pages": 1
}

Request

Route

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

Headers

Accept: application/json
X-Api-Partner-Id: 25f5076e-0827-4caa-af74-2168c1e875b2
X-Api-Secret: WzUq1ZbKf7yOcUCEjDlbtoR7a_jS5UVvOPB3BtRb9bI
Host: example.org
Cookie: 

Query Parameters

done=false

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/29/past_recommendations?done=false" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 25f5076e-0827-4caa-af74-2168c1e875b2" \
	-H "X-Api-Secret: WzUq1ZbKf7yOcUCEjDlbtoR7a_jS5UVvOPB3BtRb9bI"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 997
X-RateLimit-Reset: 1610378010
ETag: W/"2411a767b166b2bb4064f79c47d44ea4"
X-Request-Id: cbc10c52-77a1-4795-8d68-dc011bccefce
X-Runtime: 0.017019
X-Rack-CORS: miss; no-origin
Content-Length: 343

Body

{
  "results": [
    {
      "id": 2,
      "created_at": "2021-01-11T15:12:30Z",
      "updated_at": "2021-01-11T15:12:30Z",
      "description": "Rotate tires",
      "approved": "false",
      "approver_id": null,
      "approval_type": null,
      "imported": false,
      "vehicle_id": 5,
      "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/30/past_recommendations/3

Headers

Accept: application/json
X-Api-Partner-Id: a82d8676-f757-4f9c-875c-f4804bd7c39b
X-Api-Secret: TRJOoeyGOvLIYHgoEIqJtoC2fx1toXULqJA5p8SKm-Y
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/30/past_recommendations/3" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: a82d8676-f757-4f9c-875c-f4804bd7c39b" \
	-H "X-Api-Secret: TRJOoeyGOvLIYHgoEIqJtoC2fx1toXULqJA5p8SKm-Y"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 996
X-RateLimit-Reset: 1610378010
ETag: W/"5b10f285cef2bbfbaa799716b9c975c1"
X-Request-Id: d4eb4c11-ca2a-46c9-b5c1-4cc851d75ed2
X-Runtime: 0.009049
X-Rack-CORS: miss; no-origin
Content-Length: 268

Body

{
  "id": 3,
  "created_at": "2021-01-11T15:12:30Z",
  "updated_at": "2021-01-11T15:12:30Z",
  "description": "Change oil",
  "approved": "true",
  "approver_id": 28,
  "approval_type": "phone",
  "imported": true,
  "vehicle_id": 7,
  "done": true,
  "recommendation_id": 3,
  "approval_at": "2021-01-10T15:12:30Z"
}

Payment Transactions

Get a list of all payment transactions

Endpoint

GET api/v1/tenants/:tenant_id/payment_transactions

Request

Route

GET api/v1/tenants/31/payment_transactions

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 0c897753-eb44-4e2e-a078-fb0e29f720e0
X-Api-Secret: _fPC25s9udfB3vgOwy9i2Y0lTNpMNUPFBI63poPDu6Y
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/31/payment_transactions" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 0c897753-eb44-4e2e-a078-fb0e29f720e0" \
	-H "X-Api-Secret: _fPC25s9udfB3vgOwy9i2Y0lTNpMNUPFBI63poPDu6Y"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1610378011
ETag: W/"f1a92a5fedfec7e1928797154977a58b"
X-Request-Id: 64392bf2-11fb-410a-92e0-19f26a543ed2
X-Runtime: 0.013325
X-Rack-CORS: miss; no-origin
Content-Length: 800

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2021-01-11T15:12:31Z",
      "updated_at": "2021-01-11T15:12:31Z",
      "payment_id": null,
      "repair_order_id": 31,
      "staff_id": 30,
      "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": 31,
          "created_at": "2021-01-11T15:12:31Z",
          "updated_at": "2021-01-11T15:12:31Z",
          "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/32/payment_transactions/2

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 9ce9c952-dc01-4a92-a962-291e1e951165
X-Api-Secret: U9Zk-U8fpDwZQ3ERsphUsiWncBRapT6SwmJOScVfluo
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/32/payment_transactions/2" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 9ce9c952-dc01-4a92-a962-291e1e951165" \
	-H "X-Api-Secret: U9Zk-U8fpDwZQ3ERsphUsiWncBRapT6SwmJOScVfluo"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 998
X-RateLimit-Reset: 1610378011
ETag: W/"438fbe28d7b990d18137083a3379b765"
X-Request-Id: 3c43aeec-6fd2-4a3f-9f59-93316148cef8
X-Runtime: 0.012970
X-Rack-CORS: miss; no-origin
Content-Length: 711

Body

{
  "id": 2,
  "created_at": "2021-01-11T15:12:31Z",
  "updated_at": "2021-01-11T15:12:31Z",
  "payment_id": null,
  "repair_order_id": 32,
  "staff_id": 32,
  "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": 32,
      "created_at": "2021-01-11T15:12:31Z",
      "updated_at": "2021-01-11T15:12:31Z",
      "taggable_type": "PaymentTransaction",
      "taggable_id": 2,
      "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/35/payments

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: eb7df39a-a720-4add-b79c-a70e706baba3
X-Api-Secret: z_iPZVTB8vyBAFBf3W9gGNdNeQhSCDt9Vb0Z8JxnILE
Host: example.org
Cookie: 

Body

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

cURL

curl "https://api.shop-ware.com/api/v1/tenants/35/payments" -d '{"amount_cents":21849,"payment_type_details":{"type":"Credit Card","name":"Visa"},"repair_order_id":35,"notes":"Customer made partial payment"}' -X POST \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: eb7df39a-a720-4add-b79c-a70e706baba3" \
	-H "X-Api-Secret: z_iPZVTB8vyBAFBf3W9gGNdNeQhSCDt9Vb0Z8JxnILE"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 997
X-RateLimit-Reset: 1610378012
ETag: W/"9c7afc155ad9a1a728756954a719223b"
X-Request-Id: 4b775d07-0747-4165-a5e2-2faa2669bd4c
X-Runtime: 0.047854
X-Rack-CORS: miss; no-origin
Content-Length: 279

Body

{
  "id": 4,
  "created_at": "2021-01-11T15:12:32Z",
  "updated_at": "2021-01-11T15:12:32Z",
  "repair_order_id": 35,
  "payment_type": "Credit Card - Visa",
  "payment_type_details": {
    "type": "Credit Card",
    "name": "Visa"
  },
  "notes": "Customer made partial payment",
  "amount_cents": 21849,
  "integrator_tags": [

  ]
}

Get a list of all payments

Endpoint

GET api/v1/tenants/:tenant_id/payments

Request

Route

GET api/v1/tenants/33/payments

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: fd3878fd-cdc6-4929-83be-e87ca3e6c939
X-Api-Secret: SQSqUf_ASS--lOKdFdE4H9-0IKRyVefwjz48fsX2m_U
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/33/payments" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: fd3878fd-cdc6-4929-83be-e87ca3e6c939" \
	-H "X-Api-Secret: SQSqUf_ASS--lOKdFdE4H9-0IKRyVefwjz48fsX2m_U"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1610378011
ETag: W/"07fc492aa46e42a1764f5f07101facf2"
X-Request-Id: 9b3bf9ef-65a5-4d54-bc30-76212de37ed8
X-Runtime: 0.026294
X-Rack-CORS: miss; no-origin
Content-Length: 529

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2021-01-11T15:12:31Z",
      "updated_at": "2021-01-11T15:12:31Z",
      "repair_order_id": 33,
      "payment_type": "Credit Card - Visa",
      "payment_type_details": {
        "type": "Credit Card",
        "name": "Visa"
      },
      "notes": "Customer made partial payment",
      "amount_cents": 21849,
      "integrator_tags": [
        {
          "id": 33,
          "created_at": "2021-01-11T15:12:31Z",
          "updated_at": "2021-01-11T15:12:31Z",
          "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/34/payments/2

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: bca7f95b-35c8-42bc-a1d3-30baa07f4b31
X-Api-Secret: CM4jsOroHUZvpTTcdpWbzuqpYImZjlzn5uQXG95dtYc
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/34/payments/2" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: bca7f95b-35c8-42bc-a1d3-30baa07f4b31" \
	-H "X-Api-Secret: CM4jsOroHUZvpTTcdpWbzuqpYImZjlzn5uQXG95dtYc"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 998
X-RateLimit-Reset: 1610378011
ETag: W/"2f932e774784db7cfbbdc0dff5f7a0f3"
X-Request-Id: 15e37973-a224-4cdc-95fe-c9d9f9891637
X-Runtime: 0.015998
X-Rack-CORS: miss; no-origin
Content-Length: 440

Body

{
  "id": 2,
  "created_at": "2021-01-11T15:12:31Z",
  "updated_at": "2021-01-11T15:12:31Z",
  "repair_order_id": 34,
  "payment_type": "Credit Card - Visa",
  "payment_type_details": {
    "type": "Credit Card",
    "name": "Visa"
  },
  "notes": "Customer made partial payment",
  "amount_cents": 21849,
  "integrator_tags": [
    {
      "id": 34,
      "created_at": "2021-01-11T15:12:31Z",
      "updated_at": "2021-01-11T15:12:31Z",
      "taggable_type": "Payment",
      "taggable_id": 2,
      "name": "tag_name",
      "value": "tag_value"
    }
  ]
}

Purchase Records

Get a list of all purchase records

Endpoint

GET api/v1/tenants/:tenant_id/purchase_records

Request

Route

GET api/v1/tenants/36/purchase_records

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 67cefdd6-2f97-4431-8161-7b76cf431bd1
X-Api-Secret: ehkNVlj6YOap2jLkTxnfmMflfT_GHRWSG86xUyBQKTs
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/36/purchase_records" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 67cefdd6-2f97-4431-8161-7b76cf431bd1" \
	-H "X-Api-Secret: ehkNVlj6YOap2jLkTxnfmMflfT_GHRWSG86xUyBQKTs"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1610378012
ETag: W/"4b0c417960416394267b5b54e7bc9e3b"
X-Request-Id: cecf0ad4-0bc7-4b39-a44a-b80f6bf6cde2
X-Runtime: 0.028241
X-Rack-CORS: miss; no-origin
Content-Length: 620

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2021-01-11T15:12:32Z",
      "updated_at": "2021-01-11T15:12:32Z",
      "shop_id": 50,
      "invoice_number": "IN1",
      "vendor_id": 5,
      "payment_type": "Credit Card",
      "ecomm_integrator_order_id": 100,
      "is_return": false,
      "line_items": [
        {
          "inventory_id": 5,
          "quantity": 1.0,
          "list_price_cents": 0,
          "cost_cents": 50,
          "ecomm_integrator_part_id": "PARTSTECH_PART_ID"
        }
      ],
      "integrator_tags": [
        {
          "id": 36,
          "created_at": "2021-01-11T15:12:32Z",
          "updated_at": "2021-01-11T15:12:32Z",
          "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/37/purchase_records/2

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: b032e075-a594-4fb4-b10b-0c7a8adc0e04
X-Api-Secret: SE_iOlW-C-8lSf79QtrlQGAMPZVDvdUXNx6Rm1P7pQ0
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/37/purchase_records/2" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: b032e075-a594-4fb4-b10b-0c7a8adc0e04" \
	-H "X-Api-Secret: SE_iOlW-C-8lSf79QtrlQGAMPZVDvdUXNx6Rm1P7pQ0"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 998
X-RateLimit-Reset: 1610378013
ETag: W/"b153f415a4d9ed9b4b8115741570682c"
X-Request-Id: cd63e69f-9aed-4825-bafc-5fd6909e37fe
X-Runtime: 0.020273
X-Rack-CORS: miss; no-origin
Content-Length: 531

Body

{
  "id": 2,
  "created_at": "2021-01-11T15:12:33Z",
  "updated_at": "2021-01-11T15:12:33Z",
  "shop_id": 51,
  "invoice_number": "IN2",
  "vendor_id": 7,
  "payment_type": "Credit Card",
  "ecomm_integrator_order_id": 100,
  "is_return": false,
  "line_items": [
    {
      "inventory_id": 7,
      "quantity": 1.0,
      "list_price_cents": 0,
      "cost_cents": 50,
      "ecomm_integrator_part_id": "PARTSTECH_PART_ID"
    }
  ],
  "integrator_tags": [
    {
      "id": 37,
      "created_at": "2021-01-11T15:12:33Z",
      "updated_at": "2021-01-11T15:12:33Z",
      "taggable_type": "PurchaseRecord",
      "taggable_id": 2,
      "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/40/recommendations

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 76973833-3d9c-430f-9ad9-5e16e1e362cb
X-Api-Secret: zuN_0bYGt1Xjt269ynh9e17q0CV8vi7Do3fGf40wQd8
Host: example.org
Cookie: 

Body

{
  "description": "Description 1",
  "repair_order_id": 49,
  "canned_job_id": 3
}

cURL

curl "https://api.shop-ware.com/api/v1/tenants/40/recommendations" -d '{"description":"Description 1","repair_order_id":49,"canned_job_id":3}' -X POST \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 76973833-3d9c-430f-9ad9-5e16e1e362cb" \
	-H "X-Api-Secret: zuN_0bYGt1Xjt269ynh9e17q0CV8vi7Do3fGf40wQd8"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1601557560
ETag: W/"888f5ab8f710ff1e68a24562e7caf520"
X-Request-Id: a0cd2916-3f28-41e0-bb44-4056f854a83a
X-Runtime: 0.064820
X-Rack-CORS: miss; no-origin
Content-Length: 549

Body

{
  "id": 11,
  "created_at": "2020-10-01T13:05:00Z",
  "updated_at": "2020-10-01T13:05:00Z",
  "description": "Test Canned Job",
  "approved": null,
  "approver_id": null,
  "approval_type": null,
  "imported": false,
  "quick_price_cents": null,
  "service": {
    "id": 10,
    "created_at": "2020-10-01T13:05:00Z",
    "updated_at": "2020-10-01T13:05:00Z",
    "title": "Test Canned Job",
    "completed": false,
    "category_id": null,
    "canned_job_id": 3,
    "comment": "",
    "labor_rate_cents": 10000,
    "labors": [

    ],
    "parts": [

    ],
    "hazmats": [

    ],
    "sublets": [

    ],
    "inspections": [

    ]
  },
  "repair_order_id": 49,
  "approval_at": null,
  "integrator_tags": [

  ]
}

Get a list of all recommendations

Endpoint

GET api/v1/tenants/:tenant_id/recommendations

Request

Route

GET api/v1/tenants/38/recommendations

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: c798f830-ee3f-4ce2-8252-e09e5127555f
X-Api-Secret: ZL5lWxbJy2YXND4BkPJe9pgN7ZNDlwbKSnwP9YXqnas
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/38/recommendations" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: c798f830-ee3f-4ce2-8252-e09e5127555f" \
	-H "X-Api-Secret: ZL5lWxbJy2YXND4BkPJe9pgN7ZNDlwbKSnwP9YXqnas"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1610378013
ETag: W/"d9b657b9dec6dd4c2ac3c03c89c486b9"
X-Request-Id: 0e95b980-3050-47c8-a32f-977ca7ebb882
X-Runtime: 0.026039
X-Rack-CORS: miss; no-origin
Content-Length: 2040

Body

{
  "results": [
    {
      "id": 6,
      "created_at": "2021-01-11T15:12:33Z",
      "updated_at": "2021-01-11T15:12:33Z",
      "description": null,
      "approved": null,
      "approver_id": null,
      "approval_type": null,
      "imported": false,
      "quick_price_cents": 355000.0,
      "service": {
      },
      "repair_order_id": 42,
      "approval_at": null,
      "integrator_tags": [

      ]
    },
    {
      "id": 5,
      "created_at": "2021-01-11T15:12:33Z",
      "updated_at": "2021-01-11T15:12:33Z",
      "description": "Test Service",
      "approved": null,
      "approver_id": null,
      "approval_type": null,
      "imported": false,
      "quick_price_cents": null,
      "service": {
        "id": 7,
        "created_at": "2021-01-11T15:12:33Z",
        "updated_at": "2021-01-11T15:12:33Z",
        "title": "Test Service",
        "completed": false,
        "category_id": null,
        "canned_job_id": null,
        "comment": "",
        "labor_rate_cents": 10000,
        "labors": [
          {
            "id": 1,
            "created_at": "2021-01-11T15:12:33Z",
            "updated_at": "2021-01-11T15:12:33Z",
            "name": "Test labor 1",
            "technician_id": null,
            "taxable": true,
            "hours": 1.0
          }
        ],
        "parts": [
          {
            "id": 5,
            "created_at": "2021-01-11T15:12:33Z",
            "updated_at": "2021-01-11T15:12:33Z",
            "brand": "Acme7",
            "description": "trademark widget",
            "number": "acme-7",
            "quoted_price_cents": 100,
            "cost_cents": 50,
            "part_inventory_id": 9,
            "taxable": true,
            "quantity": 1.0
          }
        ],
        "hazmats": [
          {
            "id": 1,
            "created_at": "2021-01-11T15:12:33Z",
            "updated_at": "2021-01-11T15:12:33Z",
            "name": "Test hazmat fee 1",
            "fee_cents": 25,
            "taxable": true,
            "quantity": 1.0
          }
        ],
        "sublets": [
          {
            "id": 1,
            "created_at": "2021-01-11T15:12:33Z",
            "updated_at": "2021-01-11T15:12:33Z",
            "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": "2021-01-11T15:12:33Z",
            "updated_at": "2021-01-11T15:12:33Z",
            "name": "Test inspection 1",
            "state": "unchecked",
            "detail": "Specifics about the test inspection"
          }
        ]
      },
      "repair_order_id": 41,
      "approval_at": null,
      "integrator_tags": [
        {
          "id": 38,
          "created_at": "2021-01-11T15:12:33Z",
          "updated_at": "2021-01-11T15:12:33Z",
          "taggable_type": "Recommendation",
          "taggable_id": 5,
          "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/39/recommendations/7

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 056c62d5-20d4-4f42-93ef-52ffef7675f5
X-Api-Secret: cSftfbGTogfAngvJ2tAO60feNP1YotqGKpBfs487dXA
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/39/recommendations/7" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 056c62d5-20d4-4f42-93ef-52ffef7675f5" \
	-H "X-Api-Secret: cSftfbGTogfAngvJ2tAO60feNP1YotqGKpBfs487dXA"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 998
X-RateLimit-Reset: 1610378014
ETag: W/"a3bab2e0ce0cc461425da582ec191b4d"
X-Request-Id: dde434bf-b698-4714-94bd-4ce4b679cc65
X-Runtime: 0.021923
X-Rack-CORS: miss; no-origin
Content-Length: 1676

Body

{
  "id": 7,
  "created_at": "2021-01-11T15:12:34Z",
  "updated_at": "2021-01-11T15:12:34Z",
  "description": "Test Service",
  "approved": null,
  "approver_id": null,
  "approval_type": null,
  "imported": false,
  "quick_price_cents": null,
  "service": {
    "id": 8,
    "created_at": "2021-01-11T15:12:33Z",
    "updated_at": "2021-01-11T15:12:34Z",
    "title": "Test Service",
    "completed": false,
    "category_id": null,
    "canned_job_id": null,
    "comment": "",
    "labor_rate_cents": 10000,
    "labors": [
      {
        "id": 2,
        "created_at": "2021-01-11T15:12:34Z",
        "updated_at": "2021-01-11T15:12:34Z",
        "name": "Test labor 2",
        "technician_id": null,
        "taxable": true,
        "hours": 1.0
      }
    ],
    "parts": [
      {
        "id": 6,
        "created_at": "2021-01-11T15:12:33Z",
        "updated_at": "2021-01-11T15:12:33Z",
        "brand": "Acme8",
        "description": "trademark widget",
        "number": "acme-8",
        "quoted_price_cents": 100,
        "cost_cents": 50,
        "part_inventory_id": 10,
        "taxable": true,
        "quantity": 1.0
      }
    ],
    "hazmats": [
      {
        "id": 2,
        "created_at": "2021-01-11T15:12:34Z",
        "updated_at": "2021-01-11T15:12:34Z",
        "name": "Test hazmat fee 2",
        "fee_cents": 25,
        "taxable": true,
        "quantity": 1.0
      }
    ],
    "sublets": [
      {
        "id": 2,
        "created_at": "2021-01-11T15:12:34Z",
        "updated_at": "2021-01-11T15:12:34Z",
        "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": 2,
        "created_at": "2021-01-11T15:12:34Z",
        "updated_at": "2021-01-11T15:12:34Z",
        "name": "Test inspection 2",
        "state": "unchecked",
        "detail": "Specifics about the test inspection"
      }
    ]
  },
  "repair_order_id": 44,
  "approval_at": null,
  "integrator_tags": [
    {
      "id": 39,
      "created_at": "2021-01-11T15:12:34Z",
      "updated_at": "2021-01-11T15:12:34Z",
      "taggable_type": "Recommendation",
      "taggable_id": 7,
      "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. text

Request

Route

PUT api/v1/tenants/44/recommendations/20

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 08c1e389-a774-4db2-b37c-d258c7476b01
X-Api-Secret: vVCRaolPqhXupjcdkEUJALwdtUkoIw03XQdsYTxVVkI
Host: example.org
Cookie: 

Body

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

cURL

curl "https://api.shop-ware.com/api/v1/tenants/44/recommendations/20" -d '{"repair_order_id":68,"description":"Description 2"}' -X PUT \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 08c1e389-a774-4db2-b37c-d258c7476b01" \
	-H "X-Api-Secret: vVCRaolPqhXupjcdkEUJALwdtUkoIw03XQdsYTxVVkI"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 995
X-RateLimit-Reset: 1601557560
ETag: W/"5d0e42c6881f95fc748afac0efcddbd9"
X-Request-Id: abfd5fc0-f166-43f5-b8b4-76cdbcb1f688
X-Runtime: 0.034848
X-Rack-CORS: miss; no-origin
Content-Length: 1684

Body

{
  "id": 20,
  "created_at": "2021-01-11T15:12:36Z",
  "updated_at": "2020-10-01T13:05:00Z",
  "description": "Description 2",
  "approved": null,
  "approver_id": null,
  "approval_type": null,
  "imported": false,
  "quick_price_cents": null,
  "service": {
    "id": 16,
    "created_at": "2021-01-11T15:12:35Z",
    "updated_at": "2020-10-01T13:05:00Z",
    "title": "Description 2",
    "completed": false,
    "category_id": null,
    "canned_job_id": null,
    "comment": "",
    "labor_rate_cents": 10000,
    "labors": [
      {
        "id": 7,
        "created_at": "2021-01-11T15:12:36Z",
        "updated_at": "2021-01-11T15:12:36Z",
        "name": "Test labor 7",
        "technician_id": null,
        "taxable": true,
        "hours": 1.0
      }
    ],
    "parts": [
      {
        "id": 11,
        "created_at": "2021-01-11T15:12:35Z",
        "updated_at": "2021-01-11T15:12:35Z",
        "brand": "Acme13",
        "description": "trademark widget",
        "number": "acme-13",
        "quoted_price_cents": 100,
        "cost_cents": 50,
        "part_inventory_id": 15,
        "taxable": true,
        "quantity": 1.0
      }
    ],
    "hazmats": [
      {
        "id": 7,
        "created_at": "2021-01-11T15:12:36Z",
        "updated_at": "2021-01-11T15:12:36Z",
        "name": "Test hazmat fee 7",
        "fee_cents": 25,
        "taxable": true,
        "quantity": 1.0
      }
    ],
    "sublets": [
      {
        "id": 7,
        "created_at": "2021-01-11T15:12:36Z",
        "updated_at": "2021-01-11T15:12:36Z",
        "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": 7,
        "created_at": "2021-01-11T15:12:36Z",
        "updated_at": "2021-01-11T15:12:36Z",
        "name": "Test inspection 7",
        "state": "unchecked",
        "detail": "Specifics about the test inspection"
      }
    ]
  },
  "repair_order_id": 68,
  "approval_at": null,
  "integrator_tags": [
    {
      "id": 44,
      "created_at": "2021-01-11T15:12:36Z",
      "updated_at": "2021-01-11T15:12:36Z",
      "taggable_type": "Recommendation",
      "taggable_id": 20,
      "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/47/repair_orders

Headers

Content-Type: application/json
Accept: application/json
X-Api-Partner-Id: e1ff4c29-17d4-462b-bbc1-195abd0be96b
X-Api-Secret: K5AZw4yKvISUpvLKDTQsmKjxkCRSaEg7bxVltJ4rKJI
Host: example.org
Cookie: 

Body

{
  "number": 11341,
  "odometer": 90321,
  "customer_id": 41,
  "technician_id": 40,
  "advisor_id": 39,
  "vehicle_id": 13,
  "detail": "Key tag 84, customer waiting",
  "preferred_contact_type": "Text",
  "shop_id": 64,
  "taxable": true,
  "due_in_at": "2021-03-20T14:18:23Z",
  "customer_source": "Repeat"
}

cURL

curl "https://api.shop-ware.com/api/v1/tenants/47/repair_orders" -d '{"number":11341,"odometer":90321,"customer_id":41,"technician_id":40,"advisor_id":39,"vehicle_id":13,"detail":"Key tag 84, customer waiting","preferred_contact_type":"Text","shop_id":64,"taxable":true,"due_in_at":"2021-03-20T14:18:23Z","customer_source":"Repeat"}' -X POST \
	-H "Content-Type: application/json" \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: e1ff4c29-17d4-462b-bbc1-195abd0be96b" \
	-H "X-Api-Secret: K5AZw4yKvISUpvLKDTQsmKjxkCRSaEg7bxVltJ4rKJI"

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 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). 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_in_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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 996
X-RateLimit-Reset: 1615990763
ETag: W/"194169e870fb4a5200c2562e9bd02dce"
X-Request-Id: e2f1fbdc-eb6c-497c-9709-d2fa02355cc4
X-Runtime: 0.068469
X-Rack-CORS: miss; no-origin
Content-Length: 763

Body

{
  "id": 72,
  "created_at": "2021-03-17T14:18:23Z",
  "updated_at": "2021-03-17T14:18:23Z",
  "number": 11341,
  "odometer": 90321,
  "odometer_out": null,
  "state": "estimate",
  "customer_id": 41,
  "technician_id": 40,
  "advisor_id": 39,
  "vehicle_id": 13,
  "detail": "Key tag 84, customer waiting",
  "preferred_contact_type": "text",
  "part_discount_cents": null,
  "labor_discount_cents": null,
  "shop_id": 64,
  "status_id": null,
  "taxable": true,
  "customer_source": "Repeat",
  "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": "2021-03-20T14:18:23Z",
  "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
}

Get a list of all repair orders

Endpoint

GET api/v1/tenants/:tenant_id/repair_orders

Parameters

Name Description
shop_id Filter response to include only Repair Orders with this Shop ID
customer_id Filter response to include only Customer with this ID
vehicle_id Filter response to include only Vehicle with this ID

Request

Route

GET api/v1/tenants/45/repair_orders

Headers

Content-Type: application/json
Accept: application/json
X-Api-Partner-Id: b3e0e9ea-eb60-4c1a-81ce-b37fa69502eb
X-Api-Secret: agsIKadJGNgIxcdC6zOF9Udan6FQQnQGuCon__pEwPE
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/45/repair_orders" -X GET \
	-H "Content-Type: application/json" \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: b3e0e9ea-eb60-4c1a-81ce-b37fa69502eb" \
	-H "X-Api-Secret: agsIKadJGNgIxcdC6zOF9Udan6FQQnQGuCon__pEwPE"

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 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). 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_in_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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1615990761
ETag: W/"d84b82cc470a8956806939a780c6b26e"
X-Request-Id: dea846c9-de57-4f32-89cc-36aed64e8f2c
X-Runtime: 0.047016
X-Rack-CORS: miss; no-origin
Content-Length: 2696

Body

{
  "results": [
    {
      "id": 69,
      "created_at": "2021-03-17T14:18:21Z",
      "updated_at": "2021-03-17T14:18:21Z",
      "number": 11340,
      "odometer": 90321,
      "odometer_out": 90325,
      "state": "invoice",
      "customer_id": 35,
      "technician_id": 34,
      "advisor_id": 33,
      "vehicle_id": 11,
      "detail": "Key tag 84, customer waiting",
      "preferred_contact_type": "text",
      "part_discount_cents": 2500,
      "labor_discount_cents": 3500,
      "shop_id": 60,
      "status_id": 1,
      "taxable": true,
      "customer_source": "Repeat",
      "supply_fee_cents": 3250,
      "part_discount_percentage": null,
      "labor_discount_percentage": null,
      "started_at": "2021-03-12T15:18:21Z",
      "closed_at": "2021-03-14T14:18:21Z",
      "picked_up_at": "2021-03-15T14:18:21Z",
      "due_in_at": "2021-03-12T15:18:21Z",
      "due_out_at": "2021-03-15T14:18:21Z",
      "part_tax_rate": 0.0,
      "labor_tax_rate": 0.0,
      "hazmat_tax_rate": 0.0,
      "sublet_tax_rate": 0.0,
      "services": [
        {
          "id": 17,
          "created_at": "2021-03-17T14:18:21Z",
          "updated_at": "2021-03-17T14:18:21Z",
          "title": "Warning Light On",
          "completed": false,
          "category_id": 138,
          "canned_job_id": null,
          "comment": "",
          "labor_rate_cents": 10000,
          "completed_at": null,
          "last_completed_at": null,
          "labors": [
            {
              "id": 8,
              "created_at": "2021-03-17T14:18:21Z",
              "updated_at": "2021-03-17T14:18:21Z",
              "name": "Advise on proper course of action",
              "technician_id": 34,
              "taxable": false,
              "hours": 0.13
            }
          ],
          "parts": [
            {
              "id": 12,
              "created_at": "2021-03-17T14:18:21Z",
              "updated_at": "2021-03-17T14:18:21Z",
              "brand": "Superbright",
              "description": "194 LED - AMBER 120*",
              "number": "WLED-A-120",
              "quoted_price_cents": 395,
              "cost_cents": 85,
              "part_inventory_id": 16,
              "taxable": false,
              "quantity": 2.0
            }
          ],
          "hazmats": [
            {
              "id": 8,
              "created_at": "2021-03-17T14:18:21Z",
              "updated_at": "2021-03-17T14:18:21Z",
              "name": "Recycling fee",
              "fee_cents": 2000,
              "taxable": true,
              "quantity": 1.0
            }
          ],
          "sublets": [
            {
              "id": 8,
              "created_at": "2021-03-17T14:18:21Z",
              "updated_at": "2021-03-17T14:18:21Z",
              "name": "Windshield repair",
              "price_cents": 1999,
              "cost_cents": 999,
              "provider": "Windshield Bros.",
              "invoice_number": "1111",
              "description": "windshield provider",
              "taxable": true,
              "vendor_id": 9,
              "invoice_date": "2021-03-18T14:18:21Z"
            }
          ],
          "inspections": [
            {
              "id": 8,
              "created_at": "2021-03-17T14:18:21Z",
              "updated_at": "2021-03-17T14:18:21Z",
              "name": "Measure tire tread depth",
              "state": "red",
              "detail": "Tread at 3/16"
            }
          ]
        }
      ],
      "payments": [
        {
          "id": 5,
          "created_at": "2021-03-17T14:18:21Z",
          "updated_at": "2021-03-17T14:18:21Z",
          "payment_type": "Credit Card - Visa",
          "payment_type_details": {
            "type": "Credit Card",
            "name": "Visa"
          },
          "notes": "Customer made partial payment",
          "amount_cents": 21849
        }
      ],
      "integrator_tags": [
        {
          "id": 45,
          "created_at": "2021-03-17T14:18:21Z",
          "updated_at": "2021-03-17T14:18:21Z",
          "taggable_type": "RepairOrder",
          "taggable_id": 69,
          "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/45/repair_orders?shop_id=60

Headers

Content-Type: application/json
Accept: application/json
X-Api-Partner-Id: b3e0e9ea-eb60-4c1a-81ce-b37fa69502eb
X-Api-Secret: agsIKadJGNgIxcdC6zOF9Udan6FQQnQGuCon__pEwPE
Host: example.org
Cookie: 

Query Parameters

shop_id=60

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/45/repair_orders?shop_id=60" -X GET \
	-H "Content-Type: application/json" \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: b3e0e9ea-eb60-4c1a-81ce-b37fa69502eb" \
	-H "X-Api-Secret: agsIKadJGNgIxcdC6zOF9Udan6FQQnQGuCon__pEwPE"

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 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). 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_in_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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 998
X-RateLimit-Reset: 1615990761
ETag: W/"d84b82cc470a8956806939a780c6b26e"
X-Request-Id: 8c29874c-bd65-49c1-821d-86808fa3c5be
X-Runtime: 0.044530
X-Rack-CORS: miss; no-origin
Content-Length: 2696

Body

{
  "results": [
    {
      "id": 69,
      "created_at": "2021-03-17T14:18:21Z",
      "updated_at": "2021-03-17T14:18:21Z",
      "number": 11340,
      "odometer": 90321,
      "odometer_out": 90325,
      "state": "invoice",
      "customer_id": 35,
      "technician_id": 34,
      "advisor_id": 33,
      "vehicle_id": 11,
      "detail": "Key tag 84, customer waiting",
      "preferred_contact_type": "text",
      "part_discount_cents": 2500,
      "labor_discount_cents": 3500,
      "shop_id": 60,
      "status_id": 1,
      "taxable": true,
      "customer_source": "Repeat",
      "supply_fee_cents": 3250,
      "part_discount_percentage": null,
      "labor_discount_percentage": null,
      "started_at": "2021-03-12T15:18:21Z",
      "closed_at": "2021-03-14T14:18:21Z",
      "picked_up_at": "2021-03-15T14:18:21Z",
      "due_in_at": "2021-03-12T15:18:21Z",
      "due_out_at": "2021-03-15T14:18:21Z",
      "part_tax_rate": 0.0,
      "labor_tax_rate": 0.0,
      "hazmat_tax_rate": 0.0,
      "sublet_tax_rate": 0.0,
      "services": [
        {
          "id": 17,
          "created_at": "2021-03-17T14:18:21Z",
          "updated_at": "2021-03-17T14:18:21Z",
          "title": "Warning Light On",
          "completed": false,
          "category_id": 138,
          "canned_job_id": null,
          "comment": "",
          "labor_rate_cents": 10000,
          "completed_at": null,
          "last_completed_at": null,
          "labors": [
            {
              "id": 8,
              "created_at": "2021-03-17T14:18:21Z",
              "updated_at": "2021-03-17T14:18:21Z",
              "name": "Advise on proper course of action",
              "technician_id": 34,
              "taxable": false,
              "hours": 0.13
            }
          ],
          "parts": [
            {
              "id": 12,
              "created_at": "2021-03-17T14:18:21Z",
              "updated_at": "2021-03-17T14:18:21Z",
              "brand": "Superbright",
              "description": "194 LED - AMBER 120*",
              "number": "WLED-A-120",
              "quoted_price_cents": 395,
              "cost_cents": 85,
              "part_inventory_id": 16,
              "taxable": false,
              "quantity": 2.0
            }
          ],
          "hazmats": [
            {
              "id": 8,
              "created_at": "2021-03-17T14:18:21Z",
              "updated_at": "2021-03-17T14:18:21Z",
              "name": "Recycling fee",
              "fee_cents": 2000,
              "taxable": true,
              "quantity": 1.0
            }
          ],
          "sublets": [
            {
              "id": 8,
              "created_at": "2021-03-17T14:18:21Z",
              "updated_at": "2021-03-17T14:18:21Z",
              "name": "Windshield repair",
              "price_cents": 1999,
              "cost_cents": 999,
              "provider": "Windshield Bros.",
              "invoice_number": "1111",
              "description": "windshield provider",
              "taxable": true,
              "vendor_id": 9,
              "invoice_date": "2021-03-18T14:18:21Z"
            }
          ],
          "inspections": [
            {
              "id": 8,
              "created_at": "2021-03-17T14:18:21Z",
              "updated_at": "2021-03-17T14:18:21Z",
              "name": "Measure tire tread depth",
              "state": "red",
              "detail": "Tread at 3/16"
            }
          ]
        }
      ],
      "payments": [
        {
          "id": 5,
          "created_at": "2021-03-17T14:18:21Z",
          "updated_at": "2021-03-17T14:18:21Z",
          "payment_type": "Credit Card - Visa",
          "payment_type_details": {
            "type": "Credit Card",
            "name": "Visa"
          },
          "notes": "Customer made partial payment",
          "amount_cents": 21849
        }
      ],
      "integrator_tags": [
        {
          "id": 45,
          "created_at": "2021-03-17T14:18:21Z",
          "updated_at": "2021-03-17T14:18:21Z",
          "taggable_type": "RepairOrder",
          "taggable_id": 69,
          "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

Request

Route

GET api/v1/tenants/46/repair_orders/70

Headers

Content-Type: application/json
Accept: application/json
X-Api-Partner-Id: e4a79309-8ef0-4c63-998d-ca568a8b225e
X-Api-Secret: _1iiG7zT50JDry0RXbNZ6KahPz9ieJN7Z8PojgaQags
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/46/repair_orders/70" -X GET \
	-H "Content-Type: application/json" \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: e4a79309-8ef0-4c63-998d-ca568a8b225e" \
	-H "X-Api-Secret: _1iiG7zT50JDry0RXbNZ6KahPz9ieJN7Z8PojgaQags"

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 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). 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_in_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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 997
X-RateLimit-Reset: 1615990762
ETag: W/"f90eaac385bcbfac4c4ec8597f4ebe1a"
X-Request-Id: d0e79faf-0b61-45ee-92ad-639912122323
X-Runtime: 0.031365
X-Rack-CORS: miss; no-origin
Content-Length: 2608

Body

{
  "id": 70,
  "created_at": "2021-03-17T14:18:22Z",
  "updated_at": "2021-03-17T14:18:22Z",
  "number": 11340,
  "odometer": 90321,
  "odometer_out": 90325,
  "state": "invoice",
  "customer_id": 38,
  "technician_id": 37,
  "advisor_id": 36,
  "vehicle_id": 12,
  "detail": "Key tag 84, customer waiting",
  "preferred_contact_type": "text",
  "part_discount_cents": 2500,
  "labor_discount_cents": 3500,
  "shop_id": 62,
  "status_id": 2,
  "taxable": true,
  "customer_source": "Repeat",
  "supply_fee_cents": 3250,
  "part_discount_percentage": null,
  "labor_discount_percentage": null,
  "started_at": "2021-03-12T15:18:22Z",
  "closed_at": "2021-03-14T14:18:22Z",
  "picked_up_at": "2021-03-15T14:18:22Z",
  "due_in_at": "2021-03-12T15:18:22Z",
  "due_out_at": "2021-03-15T14:18:22Z",
  "part_tax_rate": 0.0,
  "labor_tax_rate": 0.0,
  "hazmat_tax_rate": 0.0,
  "sublet_tax_rate": 0.0,
  "services": [
    {
      "id": 18,
      "created_at": "2021-03-17T14:18:22Z",
      "updated_at": "2021-03-17T14:18:22Z",
      "title": "Warning Light On",
      "completed": false,
      "category_id": 142,
      "canned_job_id": null,
      "comment": "",
      "labor_rate_cents": 10000,
      "completed_at": null,
      "last_completed_at": null,
      "labors": [
        {
          "id": 9,
          "created_at": "2021-03-17T14:18:22Z",
          "updated_at": "2021-03-17T14:18:22Z",
          "name": "Advise on proper course of action",
          "technician_id": 37,
          "taxable": false,
          "hours": 0.13
        }
      ],
      "parts": [
        {
          "id": 13,
          "created_at": "2021-03-17T14:18:22Z",
          "updated_at": "2021-03-17T14:18:22Z",
          "brand": "Superbright",
          "description": "194 LED - AMBER 120*",
          "number": "WLED-A-120",
          "quoted_price_cents": 395,
          "cost_cents": 85,
          "part_inventory_id": 17,
          "taxable": false,
          "quantity": 2.0
        }
      ],
      "hazmats": [
        {
          "id": 9,
          "created_at": "2021-03-17T14:18:22Z",
          "updated_at": "2021-03-17T14:18:22Z",
          "name": "Recycling fee",
          "fee_cents": 2000,
          "taxable": true,
          "quantity": 1.0
        }
      ],
      "sublets": [
        {
          "id": 9,
          "created_at": "2021-03-17T14:18:22Z",
          "updated_at": "2021-03-17T14:18:22Z",
          "name": "Windshield repair",
          "price_cents": 1999,
          "cost_cents": 999,
          "provider": "Windshield Bros.",
          "invoice_number": "1111",
          "description": "windshield provider",
          "taxable": true,
          "vendor_id": 10,
          "invoice_date": "2021-03-18T14:18:22Z"
        }
      ],
      "inspections": [
        {
          "id": 9,
          "created_at": "2021-03-17T14:18:22Z",
          "updated_at": "2021-03-17T14:18:22Z",
          "name": "Measure tire tread depth",
          "state": "red",
          "detail": "Tread at 3/16"
        }
      ]
    }
  ],
  "payments": [
    {
      "id": 6,
      "created_at": "2021-03-17T14:18:22Z",
      "updated_at": "2021-03-17T14:18:22Z",
      "payment_type": "Credit Card - Visa",
      "payment_type_details": {
        "type": "Credit Card",
        "name": "Visa"
      },
      "notes": "Customer made partial payment",
      "amount_cents": 21849
    }
  ],
  "integrator_tags": [
    {
      "id": 47,
      "created_at": "2021-03-17T14:18:22Z",
      "updated_at": "2021-03-17T14:18:22Z",
      "taggable_type": "RepairOrder",
      "taggable_id": 70,
      "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/49/repair_orders/76/start

Headers

Content-Type: application/json
Accept: application/json
X-Api-Partner-Id: 10753580-ea05-4015-a7d3-fafe5fd218c9
X-Api-Secret: NrdrGSpV5WvqX_8WzXxiRmCk9GFVrvG2GZHevn4sNcg
Host: example.org
Cookie: 

Body

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

cURL

curl "https://api.shop-ware.com/api/v1/tenants/49/repair_orders/76/start" -d '{"initial_assignee_id":45,"send_estimate_email":true}' -X POST \
	-H "Content-Type: application/json" \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 10753580-ea05-4015-a7d3-fafe5fd218c9" \
	-H "X-Api-Secret: NrdrGSpV5WvqX_8WzXxiRmCk9GFVrvG2GZHevn4sNcg"

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 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). 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_in_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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 994
X-RateLimit-Reset: 1615990768
ETag: W/"1cf40af0894521d797e5f2961b16f8ea"
X-Request-Id: c81bd328-e7b0-43c5-bd4c-33b7aa16233b
X-Runtime: 2.730962
X-Rack-CORS: miss; no-origin
Content-Length: 784

Body

{
  "id": 76,
  "created_at": "2021-03-17T14:18:25Z",
  "updated_at": "2021-03-17T14:18:25Z",
  "number": 11341,
  "odometer": 90321,
  "odometer_out": null,
  "state": "in_progress",
  "customer_id": 47,
  "technician_id": 46,
  "advisor_id": 45,
  "vehicle_id": 15,
  "detail": "Key tag 84, customer waiting",
  "preferred_contact_type": "Text",
  "part_discount_cents": null,
  "labor_discount_cents": null,
  "shop_id": 68,
  "status_id": null,
  "taxable": true,
  "customer_source": "Repeat",
  "supply_fee_cents": 3250,
  "part_discount_percentage": null,
  "labor_discount_percentage": null,
  "started_at": "2021-03-17T14:18:25Z",
  "closed_at": null,
  "picked_up_at": null,
  "due_in_at": "2021-03-20T14:18:25Z",
  "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
}

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/48/repair_orders/74

Headers

Content-Type: application/json
Accept: application/json
X-Api-Partner-Id: 279c3aa5-586c-4308-872e-52414ce5d001
X-Api-Secret: 4wy7WHiqlx_Giv5E8gscCwAbalMs-k_3rYP8snfY5BU
Host: example.org
Cookie: 

Body

{
  "number": 1122,
  "odometer": 99999,
  "technician_id": 42,
  "advisor_id": 43,
  "detail": "Key tag 85, customer waiting",
  "preferred_contact_type": "phone",
  "taxable": false,
  "due_in_at": "2021-03-20T14:18:24Z",
  "status_id": 4,
  "customer_source": "Website"
}

cURL

curl "https://api.shop-ware.com/api/v1/tenants/48/repair_orders/74" -d '{"number":1122,"odometer":99999,"technician_id":42,"advisor_id":43,"detail":"Key tag 85, customer waiting","preferred_contact_type":"phone","taxable":false,"due_in_at":"2021-03-20T14:18:24Z","status_id":4,"customer_source":"Website"}' -X PUT \
	-H "Content-Type: application/json" \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 279c3aa5-586c-4308-872e-52414ce5d001" \
	-H "X-Api-Secret: 4wy7WHiqlx_Giv5E8gscCwAbalMs-k_3rYP8snfY5BU"

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 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). 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_in_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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 995
X-RateLimit-Reset: 1615990764
ETag: W/"bb503bc51624aa969fc2d63a27d41fd8"
X-Request-Id: def16d85-7526-413f-9bfe-3fbf0019b49c
X-Runtime: 0.065483
X-Rack-CORS: miss; no-origin
Content-Length: 762

Body

{
  "id": 74,
  "created_at": "2021-03-17T14:18:24Z",
  "updated_at": "2021-03-17T14:18:24Z",
  "number": 1122,
  "odometer": 99999,
  "odometer_out": null,
  "state": "estimate",
  "customer_id": 44,
  "technician_id": 42,
  "advisor_id": 43,
  "vehicle_id": 14,
  "detail": "Key tag 85, customer waiting",
  "preferred_contact_type": "phone",
  "part_discount_cents": null,
  "labor_discount_cents": null,
  "shop_id": 66,
  "status_id": 4,
  "taxable": false,
  "customer_source": "Website",
  "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": "2021-03-20T14:18:24Z",
  "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

Request

Route

GET api/v1/tenants/50/services

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: cd72e954-a786-46a9-b5b3-b3534148ca52
X-Api-Secret: lFmATU7LKhKneRojDN4iE-QsGjXwcLTIpffz7X0bLlY
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/50/services" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: cd72e954-a786-46a9-b5b3-b3534148ca52" \
	-H "X-Api-Secret: lFmATU7LKhKneRojDN4iE-QsGjXwcLTIpffz7X0bLlY"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1615990769
ETag: W/"2a7c8e51f20781f5518f948a59e637fe"
X-Request-Id: 58fd4f67-2e94-426f-a95a-2cb242cc4df3
X-Runtime: 0.047366
X-Rack-CORS: miss; no-origin
Content-Length: 1402

Body

{
  "results": [
    {
      "id": 22,
      "created_at": "2021-03-17T14:18:28Z",
      "updated_at": "2021-03-17T14:18:29Z",
      "title": "Test Service",
      "completed": false,
      "category_id": null,
      "canned_job_id": null,
      "comment": "No comment",
      "completed_at": null,
      "last_completed_at": null,
      "labor_rate_cents": 10000,
      "repair_order_id": 77,
      "labors": [
        {
          "id": 13,
          "created_at": "2021-03-17T14:18:28Z",
          "updated_at": "2021-03-17T14:18:28Z",
          "name": "Test labor 8",
          "technician_id": null,
          "taxable": true,
          "hours": 1.0
        }
      ],
      "parts": [
        {
          "id": 17,
          "created_at": "2021-03-17T14:18:28Z",
          "updated_at": "2021-03-17T14:18:28Z",
          "brand": "Acme19",
          "description": "trademark widget",
          "number": "acme-19",
          "quoted_price_cents": 100,
          "cost_cents": 50,
          "part_inventory_id": 21,
          "taxable": true,
          "quantity": 1.0
        }
      ],
      "hazmats": [
        {
          "id": 13,
          "created_at": "2021-03-17T14:18:28Z",
          "updated_at": "2021-03-17T14:18:28Z",
          "name": "Test hazmat fee 8",
          "fee_cents": 25,
          "taxable": true,
          "quantity": 1.0
        }
      ],
      "sublets": [
        {
          "id": 13,
          "created_at": "2021-03-17T14:18:29Z",
          "updated_at": "2021-03-17T14:18:29Z",
          "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": 13,
          "created_at": "2021-03-17T14:18:29Z",
          "updated_at": "2021-03-17T14:18:29Z",
          "name": "Test inspection 8",
          "state": "unchecked",
          "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/53/services/26

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 82ebd855-376b-45b8-80c8-5f53abc71901
X-Api-Secret: I4MSmTpe1Oc7TAQgIU6DekK0yP26M5-FybM5ud_MQPA
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/53/services/26" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 82ebd855-376b-45b8-80c8-5f53abc71901" \
	-H "X-Api-Secret: I4MSmTpe1Oc7TAQgIU6DekK0yP26M5-FybM5ud_MQPA"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 996
X-RateLimit-Reset: 1615990771
ETag: W/"54b763790dc7854fd9e205bb449f1e84"
X-Request-Id: 4a8dd8b5-2602-4b61-962c-f729746feb78
X-Runtime: 0.037818
X-Rack-CORS: miss; no-origin
Content-Length: 1317

Body

{
  "id": 26,
  "created_at": "2021-03-17T14:18:31Z",
  "updated_at": "2021-03-17T14:18:31Z",
  "title": "Test Service",
  "completed": false,
  "category_id": null,
  "canned_job_id": null,
  "comment": "No comment",
  "completed_at": null,
  "last_completed_at": null,
  "labor_rate_cents": 10000,
  "repair_order_id": 81,
  "labors": [
    {
      "id": 17,
      "created_at": "2021-03-17T14:18:31Z",
      "updated_at": "2021-03-17T14:18:31Z",
      "name": "Test labor 12",
      "technician_id": null,
      "taxable": true,
      "hours": 1.0
    }
  ],
  "parts": [
    {
      "id": 21,
      "created_at": "2021-03-17T14:18:31Z",
      "updated_at": "2021-03-17T14:18:31Z",
      "brand": "Acme23",
      "description": "trademark widget",
      "number": "acme-23",
      "quoted_price_cents": 100,
      "cost_cents": 50,
      "part_inventory_id": 25,
      "taxable": true,
      "quantity": 1.0
    }
  ],
  "hazmats": [
    {
      "id": 17,
      "created_at": "2021-03-17T14:18:31Z",
      "updated_at": "2021-03-17T14:18:31Z",
      "name": "Test hazmat fee 12",
      "fee_cents": 25,
      "taxable": true,
      "quantity": 1.0
    }
  ],
  "sublets": [
    {
      "id": 17,
      "created_at": "2021-03-17T14:18:31Z",
      "updated_at": "2021-03-17T14:18:31Z",
      "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": 17,
      "created_at": "2021-03-17T14:18:31Z",
      "updated_at": "2021-03-17T14:18:31Z",
      "name": "Test inspection 12",
      "state": "unchecked",
      "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/54/services/27

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: e5ec3a29-7bca-4f5e-92f3-eda8e1606580
X-Api-Secret: ZxeE2oiH4bROxbxg1rPvxwFkFOGdsGrlGjtzchVcIoo
Host: example.org
Cookie: 

Body

{
  "comment": "New comment"
}

cURL

curl "https://api.shop-ware.com/api/v1/tenants/54/services/27" -d '{"comment":"New comment"}' -X PUT \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: e5ec3a29-7bca-4f5e-92f3-eda8e1606580" \
	-H "X-Api-Secret: ZxeE2oiH4bROxbxg1rPvxwFkFOGdsGrlGjtzchVcIoo"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1601557560
ETag: W/"fc1fee3c2a708c913b34421e5eb97b32"
X-Request-Id: e619bacf-a52e-4e30-bc4b-3d387b27e801
X-Runtime: 0.073991
X-Rack-CORS: miss; no-origin
Content-Length: 1318

Body

{
  "id": 27,
  "created_at": "2021-03-17T14:18:32Z",
  "updated_at": "2020-10-01T13:05:00Z",
  "title": "Test Service",
  "completed": false,
  "category_id": null,
  "canned_job_id": null,
  "comment": "New comment",
  "completed_at": null,
  "last_completed_at": null,
  "labor_rate_cents": 10000,
  "repair_order_id": 82,
  "labors": [
    {
      "id": 18,
      "created_at": "2021-03-17T14:18:32Z",
      "updated_at": "2021-03-17T14:18:32Z",
      "name": "Test labor 13",
      "technician_id": null,
      "taxable": true,
      "hours": 1.0
    }
  ],
  "parts": [
    {
      "id": 22,
      "created_at": "2021-03-17T14:18:32Z",
      "updated_at": "2021-03-17T14:18:32Z",
      "brand": "Acme24",
      "description": "trademark widget",
      "number": "acme-24",
      "quoted_price_cents": 100,
      "cost_cents": 50,
      "part_inventory_id": 26,
      "taxable": true,
      "quantity": 1.0
    }
  ],
  "hazmats": [
    {
      "id": 18,
      "created_at": "2021-03-17T14:18:32Z",
      "updated_at": "2021-03-17T14:18:32Z",
      "name": "Test hazmat fee 13",
      "fee_cents": 25,
      "taxable": true,
      "quantity": 1.0
    }
  ],
  "sublets": [
    {
      "id": 18,
      "created_at": "2021-03-17T14:18:32Z",
      "updated_at": "2021-03-17T14:18:32Z",
      "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": 18,
      "created_at": "2021-03-17T14:18:32Z",
      "updated_at": "2021-03-17T14:18:32Z",
      "name": "Test inspection 13",
      "state": "unchecked",
      "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/57/shops

Headers

Accept: application/json
X-Api-Partner-Id: e1f020c4-fd6d-4287-ae14-da062ac437a7
X-Api-Secret: svQ3MJErS_rV5WZT2EBGq4ptOC3XVC5MbJjp-_0vBbI
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/57/shops" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: e1f020c4-fd6d-4287-ae14-da062ac437a7" \
	-H "X-Api-Secret: svQ3MJErS_rV5WZT2EBGq4ptOC3XVC5MbJjp-_0vBbI"

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

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1610378069
ETag: W/"1a9f82354dfed1deabae63b956b00073"
X-Request-Id: 9efc6c36-b3eb-4b06-874f-c9bfb3663106
X-Runtime: 0.016449
X-Rack-CORS: miss; no-origin
Content-Length: 1241

Body

{
  "results": [
    {
      "id": 77,
      "created_at": "2021-01-12T15:13:29Z",
      "updated_at": "2021-01-12T15:13:29Z",
      "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": "Shop Supplies",
      "supply_fee_cap_cents": 0.0,
      "mycarfax_enabled": false,
      "integrator_tags": [
        {
          "id": 55,
          "created_at": "2021-01-11T15:13:29Z",
          "updated_at": "2021-01-11T15:13:29Z",
          "taggable_type": "Shop",
          "taggable_id": 77,
          "name": "tag_name",
          "value": "tag_value"
        }
      ]
    },
    {
      "id": 76,
      "created_at": "2021-01-11T15:13:29Z",
      "updated_at": "2021-01-11T15:13:29Z",
      "identifier": "Shop 76",
      "name": "Example Company, Inc.",
      "address": "17706 Sauki Ln",
      "phone": "1231231234",
      "time_zone": "Alaska",
      "service_desk_email": "exampleemail76@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": "Shop Supplies",
      "supply_fee_cap_cents": 0.0,
      "mycarfax_enabled": false,
      "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/58/shops/79

Headers

Accept: application/json
X-Api-Partner-Id: 23dbf2c3-8ed1-4254-b640-9b0e0a145583
X-Api-Secret: FMqU6HHoLytgpYITNzvrjzLDIF00KWOQlePkwd-mfpA
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/58/shops/79" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 23dbf2c3-8ed1-4254-b640-9b0e0a145583" \
	-H "X-Api-Secret: FMqU6HHoLytgpYITNzvrjzLDIF00KWOQlePkwd-mfpA"

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

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 998
X-RateLimit-Reset: 1610378069
ETag: W/"a874edc4c0616ecbd776256117e5586b"
X-Request-Id: b7f31107-ada8-4c87-a1fc-c221b8ee4bec
X-Runtime: 0.032162
X-Rack-CORS: miss; no-origin
Content-Length: 658

Body

{
  "id": 79,
  "created_at": "2021-01-12T15:13:29Z",
  "updated_at": "2021-01-12T15:13:29Z",
  "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": "Shop Supplies",
  "supply_fee_cap_cents": 0.0,
  "mycarfax_enabled": false,
  "integrator_tags": [
    {
      "id": 56,
      "created_at": "2021-01-11T15:13:29Z",
      "updated_at": "2021-01-11T15:13:29Z",
      "taggable_type": "Shop",
      "taggable_id": 79,
      "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/59/staffs

Headers

Accept: application/json
X-Api-Partner-Id: 83815b63-84d9-4ae4-8d9f-71e0d9654f63
X-Api-Secret: Cw6Jg5mOwOXv6fY-qWcDHo-EdwnLLTfSHagVOVNJN0I
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/59/staffs" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 83815b63-84d9-4ae4-8d9f-71e0d9654f63" \
	-H "X-Api-Secret: Cw6Jg5mOwOXv6fY-qWcDHo-EdwnLLTfSHagVOVNJN0I"

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
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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1610378069
ETag: W/"32ffdd0ba16f436fc6d330346c914512"
X-Request-Id: 8c1f1f32-3b0b-43a3-a906-512fd0f14b1a
X-Runtime: 0.034587
X-Rack-CORS: miss; no-origin
Content-Length: 473

Body

{
  "results": [
    {
      "id": 48,
      "created_at": "2021-01-11T15:13:29Z",
      "updated_at": "2021-01-11T15:13:29Z",
      "first_name": "James",
      "last_name": "Brown",
      "advisor": true,
      "technician": false,
      "active": true,
      "email": "mrdynamite@example.com",
      "integrator_tags": [
        {
          "id": 57,
          "created_at": "2021-01-11T15:13:29Z",
          "updated_at": "2021-01-11T15:13:29Z",
          "taggable_type": "Staff",
          "taggable_id": 48,
          "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/60/staffs/49

Headers

Accept: application/json
X-Api-Partner-Id: 72f1754d-fb08-4009-8703-57abc10d684a
X-Api-Secret: bn-yC8JjLBsLPhmBQhFvl6pZIDgn1OJNLOHEh701XUc
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/60/staffs/49" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 72f1754d-fb08-4009-8703-57abc10d684a" \
	-H "X-Api-Secret: bn-yC8JjLBsLPhmBQhFvl6pZIDgn1OJNLOHEh701XUc"

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
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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 998
X-RateLimit-Reset: 1610378070
ETag: W/"2b7f84e44cae4a0f93d60f797b56c9b0"
X-Request-Id: db1f6248-cb61-4fe2-b959-c30514d828d8
X-Runtime: 0.015342
X-Rack-CORS: miss; no-origin
Content-Length: 384

Body

{
  "id": 49,
  "created_at": "2021-01-11T15:13:30Z",
  "updated_at": "2021-01-11T15:13:30Z",
  "first_name": "James",
  "last_name": "Brown",
  "advisor": true,
  "technician": false,
  "active": true,
  "email": "mrdynamite@example.com",
  "integrator_tags": [
    {
      "id": 58,
      "created_at": "2021-01-11T15:13:30Z",
      "updated_at": "2021-01-11T15:13:30Z",
      "taggable_type": "Staff",
      "taggable_id": 49,
      "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/61/statuses

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 250355ee-d134-452f-a4d4-9d8f9254b046
X-Api-Secret: 2FPfhSRzekKjIxje7Ivctjw8tKC3BgxRH2oljaFkFbQ
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/61/statuses" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 250355ee-d134-452f-a4d4-9d8f9254b046" \
	-H "X-Api-Secret: 2FPfhSRzekKjIxje7Ivctjw8tKC3BgxRH2oljaFkFbQ"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1610378070
ETag: W/"6dc25da81cdb5a83586b72363be4d777"
X-Request-Id: c7ec0372-0584-4f0f-8291-ae47cd23c517
X-Runtime: 0.017150
X-Rack-CORS: miss; no-origin
Content-Length: 371

Body

{
  "results": [
    {
      "id": 6,
      "created_at": "2021-01-11T15:13:30Z",
      "updated_at": "2021-01-11T15:13:30Z",
      "text": "status text",
      "integrator_tags": [
        {
          "id": 59,
          "created_at": "2021-01-11T15:13:30Z",
          "updated_at": "2021-01-11T15:13:30Z",
          "taggable_type": "Status",
          "taggable_id": 6,
          "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/62/statuses/7

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: f6d8a44a-215f-40f2-8372-5211bf43837c
X-Api-Secret: pzmevgP161A7jlUsCMdJ1X8D18Wr1NLtYZEUh9YlZFo
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/62/statuses/7" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: f6d8a44a-215f-40f2-8372-5211bf43837c" \
	-H "X-Api-Secret: pzmevgP161A7jlUsCMdJ1X8D18Wr1NLtYZEUh9YlZFo"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 998
X-RateLimit-Reset: 1610378070
ETag: W/"09013f4619650529022c7c512db132be"
X-Request-Id: cfc3def6-9204-482e-b9b5-37826b762d3e
X-Runtime: 0.012714
X-Rack-CORS: miss; no-origin
Content-Length: 282

Body

{
  "id": 7,
  "created_at": "2021-01-11T15:13:30Z",
  "updated_at": "2021-01-11T15:13:30Z",
  "text": "status text",
  "integrator_tags": [
    {
      "id": 60,
      "created_at": "2021-01-11T15:13:30Z",
      "updated_at": "2021-01-11T15:13:30Z",
      "taggable_type": "Status",
      "taggable_id": 7,
      "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: 317580b0-6096-4307-b30f-5df061df6000
X-Api-Secret: Z05DTtco47TYrBA3UeBqchx9fmqoVF9aiRpaPH-TRTc
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: 317580b0-6096-4307-b30f-5df061df6000" \
	-H "X-Api-Secret: Z05DTtco47TYrBA3UeBqchx9fmqoVF9aiRpaPH-TRTc"

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

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1610378070
ETag: W/"4298d2ac2f32592aba3616fb70085342"
X-Request-Id: 4f184183-4462-4436-909f-38573df8608b
X-Runtime: 0.027199
X-Rack-CORS: miss; no-origin
Content-Length: 352

Body

{
  "results": [
    {
      "id": 64,
      "created_at": "2021-01-11T15:13:30Z",
      "updated_at": "2021-01-11T15:13:30Z",
      "cname": "atomic64",
      "name": "Example Company, Inc."
    },
    {
      "id": 63,
      "created_at": "2021-01-11T15:13:30Z",
      "updated_at": "2021-01-11T15:13:30Z",
      "cname": "atomic63",
      "name": "Example Company, Inc."
    }
  ],
  "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/66

Headers

Accept: application/json
X-Api-Partner-Id: 55ef874d-9dc1-4cb1-9076-319899b736e1
X-Api-Secret: YZoEcZa61Nh-lG5Bb_tZktUalpVwE9w-ai4lj_0rXng
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/66" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 55ef874d-9dc1-4cb1-9076-319899b736e1" \
	-H "X-Api-Secret: YZoEcZa61Nh-lG5Bb_tZktUalpVwE9w-ai4lj_0rXng"

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

Status

200

Headers

X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 998
X-RateLimit-Reset: 1610378071
ETag: W/"1301105cd73513a969b02f8788c87075"
X-Request-Id: 81a41399-f8b2-4a4d-8f04-8d3feac285e1
X-Runtime: 0.009579
X-Rack-CORS: miss; no-origin
Content-Length: 131

Body

{
  "id": 66,
  "created_at": "2021-01-11T15:13:30Z",
  "updated_at": "2021-01-11T15:13:30Z",
  "cname": "atomic66",
  "name": "Example Company, Inc."
}

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/69/vehicles

Headers

Accept: application/json
X-Api-Partner-Id: 7d8df304-9af9-4794-b15a-01d09b2c7d1b
X-Api-Secret: Su_AC8UZ9FGXswlAwJLxEptU5nd9JIQucdce20l0Vo0
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/69/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: 7d8df304-9af9-4794-b15a-01d09b2c7d1b" \
	-H "X-Api-Secret: Su_AC8UZ9FGXswlAwJLxEptU5nd9JIQucdce20l0Vo0" \
	-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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 997
X-RateLimit-Reset: 1610378072
ETag: W/"64a3594376dcb9b71ee46a2504009d24"
X-Request-Id: 1e8cf23c-6507-4966-b8c3-80d55842f443
X-Runtime: 0.109350
X-Rack-CORS: miss; no-origin
Content-Length: 329

Body

{
  "id": 19,
  "created_at": "2021-01-11T15:13:32Z",
  "updated_at": "2021-01-11T15:13:32Z",
  "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": [

  ],
  "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

Request

Route

GET api/v1/tenants/67/vehicles

Headers

Accept: application/json
X-Api-Partner-Id: 5a63ff37-37dd-49ab-bfbf-db21c2fd8b4f
X-Api-Secret: 0euUYdKa1BJU1IdLuGJ1hab4Z_7ocwPkDxjk2DjZblk
Content-Type: application/json
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/67/vehicles" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 5a63ff37-37dd-49ab-bfbf-db21c2fd8b4f" \
	-H "X-Api-Secret: 0euUYdKa1BJU1IdLuGJ1hab4Z_7ocwPkDxjk2DjZblk" \
	-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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1610378071
ETag: W/"fb679bd9b89f1a60a3f7acbbabbdbfad"
X-Request-Id: 1ac6249a-9d73-4ec0-a334-d2dfb822e428
X-Runtime: 0.017970
X-Rack-CORS: miss; no-origin
Content-Length: 645

Body

{
  "results": [
    {
      "id": 16,
      "created_at": "2021-01-11T15:13:31Z",
      "updated_at": "2021-01-11T15:13:31Z",
      "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": "2021-01-10T15:13:31.320Z",
      "registration_exp_date": "2021-01-10T15:13:31.320Z",
      "customer_ids": [
        50
      ],
      "integrator_tags": [
        {
          "id": 61,
          "created_at": "2021-01-11T15:13:31Z",
          "updated_at": "2021-01-11T15:13:31Z",
          "taggable_type": "Vehicle",
          "taggable_id": 16,
          "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/68/vehicles/17

Headers

Accept: application/json
X-Api-Partner-Id: 7a246fd7-f816-4fdf-88c3-2fb08a0d711d
X-Api-Secret: N0lfeHHd69_s3OGvTp9NZdaxbAQfvoJDxkh3_MoPfPM
Content-Type: application/json
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/68/vehicles/17" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 7a246fd7-f816-4fdf-88c3-2fb08a0d711d" \
	-H "X-Api-Secret: N0lfeHHd69_s3OGvTp9NZdaxbAQfvoJDxkh3_MoPfPM" \
	-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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 998
X-RateLimit-Reset: 1610378071
ETag: W/"4225a61c5b8dc8f289b03f380cbcdde1"
X-Request-Id: 5d99bf46-d90e-4394-8d39-ebf6349b21eb
X-Runtime: 0.030897
X-Rack-CORS: miss; no-origin
Content-Length: 556

Body

{
  "id": 17,
  "created_at": "2021-01-11T15:13:31Z",
  "updated_at": "2021-01-11T15:13:31Z",
  "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": "2021-01-10T15:13:31.593Z",
  "registration_exp_date": "2021-01-10T15:13:31.593Z",
  "customer_ids": [
    51
  ],
  "integrator_tags": [
    {
      "id": 62,
      "created_at": "2021-01-11T15:13:31Z",
      "updated_at": "2021-01-11T15:13:31Z",
      "taggable_type": "Vehicle",
      "taggable_id": 17,
      "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/70/vehicles/20

Headers

Accept: application/json
X-Api-Partner-Id: d4e53092-9b4d-4e33-87a3-342bdc87614d
X-Api-Secret: 7JSZmTCXE2bgzc07VGJ_XwawtzPA0X0ThX8ywTB5Xt0
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": [
    54
  ]
}

cURL

curl "https://api.shop-ware.com/api/v1/tenants/70/vehicles/20" -d '{"plate":"EZRIDR","detail":"Keys in glovebox","fleet_number":"23R","vin":"1FMPU16W14LB56648","year":"2006","make":"Ford","model":"Explorer","customer_ids":[54]}' -X PUT \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: d4e53092-9b4d-4e33-87a3-342bdc87614d" \
	-H "X-Api-Secret: 7JSZmTCXE2bgzc07VGJ_XwawtzPA0X0ThX8ywTB5Xt0" \
	-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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1601557560
ETag: W/"183ba0a7e3c725e58c6c0126832b3671"
X-Request-Id: 861d4909-2a3a-45a1-b9d7-cbc26df094ba
X-Runtime: 0.062220
X-Rack-CORS: miss; no-origin
Content-Length: 554

Body

{
  "id": 20,
  "created_at": "2021-01-11T15:13:32Z",
  "updated_at": "2020-10-01T13: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": "2021-01-10T15:13:32.232Z",
  "registration_exp_date": "2021-01-10T15:13:32.232Z",
  "customer_ids": [
    54
  ],
  "integrator_tags": [
    {
      "id": 64,
      "created_at": "2021-01-11T15:13:32Z",
      "updated_at": "2021-01-11T15:13:32Z",
      "taggable_type": "Vehicle",
      "taggable_id": 20,
      "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/71/vendors

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 5bc46375-7f1c-4f35-a093-73c46cbe604c
X-Api-Secret: fqXv1G-ARVTjg3_THnCBlMiVhURUX0pVKaijD8EaMO8
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/71/vendors" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 5bc46375-7f1c-4f35-a093-73c46cbe604c" \
	-H "X-Api-Secret: fqXv1G-ARVTjg3_THnCBlMiVhURUX0pVKaijD8EaMO8"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1610378072
ETag: W/"723e2707d67ff68804d26b9c656188bd"
X-Request-Id: eb0f1503-c5b9-4c82-b517-754b92f46e75
X-Runtime: 0.015319
X-Rack-CORS: miss; no-origin
Content-Length: 500

Body

{
  "results": [
    {
      "id": 14,
      "created_at": "2021-01-11T15:13:32Z",
      "updated_at": "2021-01-11T15:13:32Z",
      "name": "Vendor 3",
      "phone": null,
      "account_number": null,
      "info": null,
      "notes": null,
      "website": "vendor14.com",
      "shop_id": 92,
      "active": true,
      "preferred": false,
      "integrator_tags": [
        {
          "id": 65,
          "created_at": "2021-01-11T15:13:32Z",
          "updated_at": "2021-01-11T15:13:32Z",
          "taggable_type": "Vendor",
          "taggable_id": 14,
          "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/72/vendors/15

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 78f8612b-84b5-4a6a-bad8-504c5948f344
X-Api-Secret: PgwM6CpZ9GE-yPGHKq483AZ0wj4HOekn9r7waesWOrw
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/72/vendors/15" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 78f8612b-84b5-4a6a-bad8-504c5948f344" \
	-H "X-Api-Secret: PgwM6CpZ9GE-yPGHKq483AZ0wj4HOekn9r7waesWOrw"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 998
X-RateLimit-Reset: 1610378072
ETag: W/"5588b65e9bb61c18b6319371a29ac9e9"
X-Request-Id: f5def71c-eb14-406b-85c8-b6b88c28518e
X-Runtime: 0.011936
X-Rack-CORS: miss; no-origin
Content-Length: 411

Body

{
  "id": 15,
  "created_at": "2021-01-11T15:13:32Z",
  "updated_at": "2021-01-11T15:13:32Z",
  "name": "Vendor 4",
  "phone": null,
  "account_number": null,
  "info": null,
  "notes": null,
  "website": "vendor15.com",
  "shop_id": 93,
  "active": true,
  "preferred": false,
  "integrator_tags": [
    {
      "id": 66,
      "created_at": "2021-01-11T15:13:32Z",
      "updated_at": "2021-01-11T15:13:32Z",
      "taggable_type": "Vendor",
      "taggable_id": 15,
      "name": "tag_name",
      "value": "tag_value"
    }
  ]
}

Webhooks

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

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: 7cda375b-20d6-46c3-82da-16f64283be14
X-Api-Secret: 5PSZFxB6_rxC4wSO-TeAEwDKjBJUwYXiGG880pOdL6Y
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: 7cda375b-20d6-46c3-82da-16f64283be14" \
	-H "X-Api-Secret: 5PSZFxB6_rxC4wSO-TeAEwDKjBJUwYXiGG880pOdL6Y"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 997
X-RateLimit-Reset: 1610378073
ETag: W/"b1491c336461b3a0fc604c6afc41f96d"
X-Request-Id: 7e4e59ac-55bb-4294-86ac-231f7e207161
X-Runtime: 0.044039
X-Rack-CORS: miss; no-origin
Content-Length: 140

Body

{
  "id": 4,
  "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/6

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 8a9e0100-e096-4407-861e-4a8772551f48
X-Api-Secret: _4pdNTtQ6M7S3zr6NBc6uhVpvNdV9qOoe7YVN33rz4U
Host: example.org
Cookie: 

cURL

curl "https://api.shop-ware.com/api/v1/webhooks/6" -d '' -X DELETE \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 8a9e0100-e096-4407-861e-4a8772551f48" \
	-H "X-Api-Secret: _4pdNTtQ6M7S3zr6NBc6uhVpvNdV9qOoe7YVN33rz4U"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 995
X-RateLimit-Reset: 1610378073
ETag: W/"44136fa355b3678a1146ad16f7e8649e"
X-Request-Id: 1ce26a1f-6248-44f9-9f4b-8d87d3489ba0
X-Runtime: 0.012662
X-Rack-CORS: miss; no-origin
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: a0c6be73-c47b-4671-970d-eb50b6803c1d
X-Api-Secret: tv5NsQKMk68JlRpksScfg-v7ZhgfQaNNYhuD-GcraVE
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: a0c6be73-c47b-4671-970d-eb50b6803c1d" \
	-H "X-Api-Secret: tv5NsQKMk68JlRpksScfg-v7ZhgfQaNNYhuD-GcraVE"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1610378073
ETag: W/"166987105c7db96932aadf254020221b"
X-Request-Id: aa236de2-67e9-428c-be88-2084003dca44
X-Runtime: 0.027959
X-Rack-CORS: miss; no-origin
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/2

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 3bbf3983-a04b-4aa1-abbc-604076d6d0b7
X-Api-Secret: B0t3sio1Kx_UPB-LNfqXzmvw52ocxLvhoJ2LGlXOt9I
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/webhooks/2" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 3bbf3983-a04b-4aa1-abbc-604076d6d0b7" \
	-H "X-Api-Secret: B0t3sio1Kx_UPB-LNfqXzmvw52ocxLvhoJ2LGlXOt9I"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 998
X-RateLimit-Reset: 1610378073
ETag: W/"76058dec19001a36c6c83be3e729d467"
X-Request-Id: 618bad4b-8796-45af-b55e-8c46ac049422
X-Runtime: 0.008973
X-Rack-CORS: miss; no-origin
Content-Length: 138

Body

{
  "id": 2,
  "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/5

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: f9e2eb98-09e3-4c8a-a508-0cb59df7f156
X-Api-Secret: SsKqI66xhUlptB7coigeqD3xgPkKCpxWiJOQskK-7vw
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/5" -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: f9e2eb98-09e3-4c8a-a508-0cb59df7f156" \
	-H "X-Api-Secret: SsKqI66xhUlptB7coigeqD3xgPkKCpxWiJOQskK-7vw"

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-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 996
X-RateLimit-Reset: 1610378073
ETag: W/"7a911ba014cb32d1bc4dc855f957e75f"
X-Request-Id: e1f265be-ccf7-4f05-937d-ae60338cbdb8
X-Runtime: 0.016980
X-Rack-CORS: miss; no-origin
Content-Length: 106

Body

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