Shop-Ware Logo

Shop-Ware REST API v1

Copyright (c) 2017 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 paramater must be in an iso8601 format. Some examples of acceptable formats are below:

2017-08-16T18:23:47+00:00
2017-08-16T18:25:54Z
20010203T040506+0700
2017-05-15T21%3A20%3A37Z

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 required 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 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: b7aae970-d8bd-42e1-9739-930d0f28c1e4
X-Api-Secret: mTfVljIM9tSDlKzDGz2ea_FdcZfDSTf1wdFTWCvPM2U
Host: example.org
Cookie: 

Body

{
  "staff_id": 4,
  "title": "My Appointment Title",
  "description": "My Appointment Description",
  "start_at": "2020-05-03T21:34:23Z",
  "end_at": "2020-05-03T23:34:23Z",
  "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":"2020-05-03T21:34:23Z","end_at":"2020-05-03T23:34:23Z","repair_order_id":5,"shop_id":3}' -X POST \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: b7aae970-d8bd-42e1-9739-930d0f28c1e4" \
	-H "X-Api-Secret: mTfVljIM9tSDlKzDGz2ea_FdcZfDSTf1wdFTWCvPM2U"

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

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: 1588282523
ETag: W/"8af4a9d363c5716162d9340536413ef1"
X-Request-Id: 5f714074-8875-4b5d-bd65-98f52b3866ce
X-Runtime: 0.028423
X-Rack-CORS: miss; no-origin
Content-Length: 286

Body

{
  "id": 4,
  "created_at": "2020-04-30T21:34:23Z",
  "updated_at": "2020-04-30T21:34:23Z",
  "staff_id": 4,
  "title": "My Appointment Title",
  "description": "My Appointment Description",
  "shop_id": 3,
  "start_at": "2020-05-03T21:34:23Z",
  "end_at": "2020-05-03T23:34:23Z",
  "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: dc6b3a41-6a0e-43ac-961a-4bcd78121ec1
X-Api-Secret: w6W9TBFlz0BIyHq6fkbN3fH3_NFGnku_AW3bYUGLENo
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: dc6b3a41-6a0e-43ac-961a-4bcd78121ec1" \
	-H "X-Api-Secret: w6W9TBFlz0BIyHq6fkbN3fH3_NFGnku_AW3bYUGLENo"

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: 1588282524
ETag: W/"44136fa355b3678a1146ad16f7e8649e"
X-Request-Id: 19619fe9-5f69-46e4-af46-c691d8db39bd
X-Runtime: 0.037229
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: ab358a28-daba-4674-abbe-fdc728f6e41b
X-Api-Secret: T4JcEB12OJJuqf1MosknG8DpH64fnRG_Fc2zNG-DAlE
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: ab358a28-daba-4674-abbe-fdc728f6e41b" \
	-H "X-Api-Secret: T4JcEB12OJJuqf1MosknG8DpH64fnRG_Fc2zNG-DAlE"

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: 1588282522
ETag: W/"6338a75ebde62b6fa609417cdc8345b4"
X-Request-Id: df35cf10-84aa-476b-b721-cef41d12037e
X-Runtime: 0.099780
X-Rack-CORS: miss; no-origin
Content-Length: 505

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2020-04-30T21:34:22Z",
      "updated_at": "2020-04-30T21:34:22Z",
      "staff_id": 1,
      "title": "title 1",
      "description": null,
      "shop_id": null,
      "start_at": "2020-04-30T21:33:58Z",
      "end_at": "2020-04-30T23:59:59Z",
      "repair_order_id": 2,
      "integrator_tags": [
        {
          "id": 1,
          "created_at": "2020-04-30T21:34:22Z",
          "updated_at": "2020-04-30T21:34:22Z",
          "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: 0e9a16e0-3030-4f8a-9c45-1d6ce65b21d2
X-Api-Secret: JurOO5k8r8u5eQfVRk05CK9yIRtS_pNdKAWRYBAQ6j4
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: 0e9a16e0-3030-4f8a-9c45-1d6ce65b21d2" \
	-H "X-Api-Secret: JurOO5k8r8u5eQfVRk05CK9yIRtS_pNdKAWRYBAQ6j4"

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: 1588282523
ETag: W/"08e29d3162ceb04a9452d85739c0b6a4"
X-Request-Id: 6e519086-a2c3-430e-87a1-829e8a6d10fd
X-Runtime: 0.017267
X-Rack-CORS: miss; no-origin
Content-Length: 416

Body

{
  "id": 2,
  "created_at": "2020-04-30T21:34:23Z",
  "updated_at": "2020-04-30T21:34:23Z",
  "staff_id": 2,
  "title": "title 2",
  "description": null,
  "shop_id": null,
  "start_at": "2020-04-30T21:33:58Z",
  "end_at": "2020-04-30T23:59:59Z",
  "repair_order_id": 4,
  "integrator_tags": [
    {
      "id": 2,
      "created_at": "2020-04-30T21:34:23Z",
      "updated_at": "2020-04-30T21:34: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: 27b0b26a-78d3-43f6-989a-3dab52c5e6d2
X-Api-Secret: 7g_fZ6hydjXUZryeiO6DjF-RY6YSkSiJ7I-6qlU1DXY
Host: example.org
Cookie: 

Body

{
  "staff_id": 6,
  "title": "My Appointment Title",
  "description": "My Appointment Description",
  "start_at": "2020-05-03T21:34:24Z",
  "end_at": "2020-05-03T23:34: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":"2020-05-03T21:34:24Z","end_at":"2020-05-03T23:34:24Z","repair_order_id":7,"shop_id":4}' -X PUT \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 27b0b26a-78d3-43f6-989a-3dab52c5e6d2" \
	-H "X-Api-Secret: 7g_fZ6hydjXUZryeiO6DjF-RY6YSkSiJ7I-6qlU1DXY"

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: 1588282524
ETag: W/"4c77838d9088a0f62b0436636fb5d740"
X-Request-Id: fedc35ae-d748-4a97-8e20-9350ba4b5a26
X-Runtime: 0.044076
X-Rack-CORS: miss; no-origin
Content-Length: 450

Body

{
  "id": 5,
  "created_at": "2020-04-30T21:34:23Z",
  "updated_at": "2020-04-30T21:34:24Z",
  "staff_id": 6,
  "title": "My Appointment Title",
  "description": "My Appointment Description",
  "shop_id": 4,
  "start_at": "2020-05-03T21:34:24Z",
  "end_at": "2020-05-03T23:34:24Z",
  "repair_order_id": 7,
  "integrator_tags": [
    {
      "id": 4,
      "created_at": "2020-04-30T21:34:23Z",
      "updated_at": "2020-04-30T21:34:23Z",
      "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: 9a0fa052-90f7-4f64-b92d-3012aedc9d56
X-Api-Secret: KaLeMSGhuh4JM-vSBBoEhaApPi3H6Fq-bgfUzv2G-Ok
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: 9a0fa052-90f7-4f64-b92d-3012aedc9d56" \
	-H "X-Api-Secret: KaLeMSGhuh4JM-vSBBoEhaApPi3H6Fq-bgfUzv2G-Ok"

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: 1588282525
ETag: W/"83fde7001184f94b36d12c7a6ec66304"
X-Request-Id: 4c520906-308c-4f14-bacb-fbcb04d9fe1f
X-Runtime: 0.016567
X-Rack-CORS: miss; no-origin
Content-Length: 497

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2020-04-30T21:34:25Z",
      "updated_at": "2020-04-30T21:34:25Z",
      "repair_order_id": 11,
      "transfer_to_id": 10,
      "transfer_from_id": 9,
      "message": "some message",
      "accepted_at": "2020-04-30T21:34:25Z",
      "cancelled_at": null,
      "integrator_tags": [
        {
          "id": 6,
          "created_at": "2020-04-30T21:34:25Z",
          "updated_at": "2020-04-30T21:34: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: 76cf579d-3a35-469e-b5d1-a5bb72209cb8
X-Api-Secret: MDsL0wAS4_3ljvdJAG0vubemstiKTaBEpx8TSQohLtc
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: 76cf579d-3a35-469e-b5d1-a5bb72209cb8" \
	-H "X-Api-Secret: MDsL0wAS4_3ljvdJAG0vubemstiKTaBEpx8TSQohLtc"

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: 1588282525
ETag: W/"f470cc98ed93f88a143a4cbc7d4727c7"
X-Request-Id: 512cc321-664c-45b1-a2b0-32c33e0babb7
X-Runtime: 0.079178
X-Rack-CORS: miss; no-origin
Content-Length: 409

Body

{
  "id": 2,
  "created_at": "2020-04-30T21:34:25Z",
  "updated_at": "2020-04-30T21:34:25Z",
  "repair_order_id": 12,
  "transfer_to_id": 13,
  "transfer_from_id": 12,
  "message": "some message",
  "accepted_at": "2020-04-30T21:34:25Z",
  "cancelled_at": null,
  "integrator_tags": [
    {
      "id": 7,
      "created_at": "2020-04-30T21:34:25Z",
      "updated_at": "2020-04-30T21:34:25Z",
      "taggable_type": "Assignment",
      "taggable_id": 2,
      "name": "tag_name",
      "value": "tag_value"
    }
  ]
}

Categories

Get a list of all categories

Endpoint

GET api/v1/tenants/:tenant_id/categories

Request

Route

GET api/v1/tenants/8/categories

Headers

Accept: application/json
X-Api-Partner-Id: ff3eacc1-c41b-4edd-923f-d13d7fc9e562
X-Api-Secret: 0UzPh-SYIGk3wxXvqKJGjh5V87LrtcEJ62NzNH5Mpjs
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/8/categories" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: ff3eacc1-c41b-4edd-923f-d13d7fc9e562" \
	-H "X-Api-Secret: 0UzPh-SYIGk3wxXvqKJGjh5V87LrtcEJ62NzNH5Mpjs"

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: 1588282525
ETag: W/"78238abc9962c36df0658b4a2af6dd54"
X-Request-Id: 3540e2dc-4600-441e-bc20-c7ad0ec1a561
X-Runtime: 0.018126
X-Rack-CORS: miss; no-origin
Content-Length: 615

Body

{
  "results": [
    {
      "id": 24,
      "created_at": "2020-04-30T21:34:25Z",
      "updated_at": "2020-04-30T21:34:25Z",
      "text": "Repair",
      "integrator_tags": [

      ]
    },
    {
      "id": 23,
      "created_at": "2020-04-30T21:34:25Z",
      "updated_at": "2020-04-30T21:34:25Z",
      "text": "Diagnosis",
      "integrator_tags": [

      ]
    },
    {
      "id": 22,
      "created_at": "2020-04-30T21:34:25Z",
      "updated_at": "2020-04-30T21:34:25Z",
      "text": "Maintenance",
      "integrator_tags": [
        {
          "id": 8,
          "created_at": "2020-04-30T21:34:25Z",
          "updated_at": "2020-04-30T21:34:25Z",
          "taggable_type": "Category",
          "taggable_id": 22,
          "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/9/categories/25

Headers

Accept: application/json
X-Api-Partner-Id: 075d3a3a-1f4a-420c-b4bd-290cdb1e700c
X-Api-Secret: ZX67y-Q8CmHsa-xk2HsK9wbuDOLF4mEA5mzcez5nU2Q
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/9/categories/25" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 075d3a3a-1f4a-420c-b4bd-290cdb1e700c" \
	-H "X-Api-Secret: ZX67y-Q8CmHsa-xk2HsK9wbuDOLF4mEA5mzcez5nU2Q"

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: 1588282525
ETag: W/"e84bb60c2e1636715f8b0f340b4e3e40"
X-Request-Id: 427ffc99-4727-4a57-9b80-5e4154ad217e
X-Runtime: 0.018258
X-Rack-CORS: miss; no-origin
Content-Length: 285

Body

{
  "id": 25,
  "created_at": "2020-04-30T21:34:25Z",
  "updated_at": "2020-04-30T21:34:25Z",
  "text": "Maintenance",
  "integrator_tags": [
    {
      "id": 9,
      "created_at": "2020-04-30T21:34:25Z",
      "updated_at": "2020-04-30T21:34:25Z",
      "taggable_type": "Category",
      "taggable_id": 25,
      "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

Request

Route

POST api/v1/tenants/12/customers

Headers

Content-Type: application/json
Accept: application/json
X-Api-Partner-Id: bd0aee01-edc7-432e-ad34-4e94570d22af
X-Api-Secret: X-fgnU_PCLvGcBNpqyVJVb4KUJ3izr_gd06OJIp9HXc
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/12/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: bd0aee01-edc7-432e-ad34-4e94570d22af" \
	-H "X-Api-Secret: X-fgnU_PCLvGcBNpqyVJVb4KUJ3izr_gd06OJIp9HXc"

Response

Simulated Response

Response Fields

Name Description type
phone Customer's phone number in the format of (###) ###-#### 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

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: 1588282527
ETag: W/"ddfcd2d449addfe748e55df1f611aeee"
X-Request-Id: 951901ca-3102-4f01-b820-e3d6463d8b5d
X-Runtime: 0.061369
X-Rack-CORS: miss; no-origin
Content-Length: 331

Body

{
  "id": 17,
  "created_at": "2020-04-30T21:34:27Z",
  "updated_at": "2020-04-30T21:34: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": [

  ]
}

Get a list of all customers

Endpoint

GET api/v1/tenants/:tenant_id/customers

Request

Route

GET api/v1/tenants/10/customers

Headers

Content-Type: application/json
Accept: application/json
X-Api-Partner-Id: 5dbca493-c8b9-4314-8283-93d089b38819
X-Api-Secret: woZr7kutqMm27UZM9s7gmkNSz3CTgG23DKtESpsLsQQ
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/10/customers" -X GET \
	-H "Content-Type: application/json" \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 5dbca493-c8b9-4314-8283-93d089b38819" \
	-H "X-Api-Secret: woZr7kutqMm27UZM9s7gmkNSz3CTgG23DKtESpsLsQQ"

Response

Simulated Response

Response Fields

Name Description type
phone Customer's phone number in the format of (###) ###-#### 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

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: 1588282526
ETag: W/"1df0d5a41989c58251e45c139f026906"
X-Request-Id: 6f6f0102-8972-48fe-bcab-23ff6efdf654
X-Runtime: 0.019918
X-Rack-CORS: miss; no-origin
Content-Length: 587

Body

{
  "results": [
    {
      "id": 14,
      "created_at": "2020-04-30T21:34:26Z",
      "updated_at": "2020-04-30T21:34: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": [
        11,
        12
      ],
      "email": "keef@example.com",
      "integrator_tags": [
        {
          "id": 10,
          "created_at": "2020-04-30T21:34:26Z",
          "updated_at": "2020-04-30T21:34:26Z",
          "taggable_type": "Customer",
          "taggable_id": 14,
          "name": "tag_name",
          "value": "tag_value"
        }
      ]
    }
  ],
  "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/11/customers/15

Headers

Content-Type: application/json
Accept: application/json
X-Api-Partner-Id: a2b9c9e9-2d0a-4781-9cb9-06d2499118f4
X-Api-Secret: 8pZbiE4tNzbENsHQP7bp2ch0GxUrmvpN3BLpk2vaDuQ
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/11/customers/15" -X GET \
	-H "Content-Type: application/json" \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: a2b9c9e9-2d0a-4781-9cb9-06d2499118f4" \
	-H "X-Api-Secret: 8pZbiE4tNzbENsHQP7bp2ch0GxUrmvpN3BLpk2vaDuQ"

Response

Simulated Response

Response Fields

Name Description type
phone Customer's phone number in the format of (###) ###-#### 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

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: 1588282526
ETag: W/"b87dcdd4496f99788c47a2e163d6d36e"
X-Request-Id: 27b81ac5-8e43-4fc7-bf9a-50a68a0b5065
X-Runtime: 0.017608
X-Rack-CORS: miss; no-origin
Content-Length: 498

Body

{
  "id": 15,
  "created_at": "2020-04-30T21:34:26Z",
  "updated_at": "2020-04-30T21:34: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": [
    14,
    15
  ],
  "email": "keef@example.com",
  "integrator_tags": [
    {
      "id": 11,
      "created_at": "2020-04-30T21:34:26Z",
      "updated_at": "2020-04-30T21:34:26Z",
      "taggable_type": "Customer",
      "taggable_id": 15,
      "name": "tag_name",
      "value": "tag_value"
    }
  ]
}

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

Request

Route

PUT api/v1/tenants/13/customers/19

Headers

Content-Type: application/json
Accept: application/json
X-Api-Partner-Id: 1ed971dc-a13e-4bf4-8bbc-d5a1227ffb72
X-Api-Secret: 4nkgj9z-fkO2Jyibc20CNp7cuYNjcUrSNEEeWVaqIvk
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/13/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: 1ed971dc-a13e-4bf4-8bbc-d5a1227ffb72" \
	-H "X-Api-Secret: 4nkgj9z-fkO2Jyibc20CNp7cuYNjcUrSNEEeWVaqIvk"

Response

Simulated Response

Response Fields

Name Description type
phone Customer's phone number in the format of (###) ###-#### 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

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: 1588282527
ETag: W/"a25f625eaac00a9735ed71018a128ee0"
X-Request-Id: b964e04f-72e5-4c65-bb53-ddf2cbfc718a
X-Runtime: 0.042448
X-Rack-CORS: miss; no-origin
Content-Length: 325

Body

{
  "id": 19,
  "created_at": "2020-04-30T21:34:27Z",
  "updated_at": "2020-04-30T21:34: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": [

  ]
}

Gp Exceptions

Get a list of all gp exceptions

Endpoint

GET api/v1/tenants/:tenant_id/gp_exceptions

Request

Route

GET api/v1/tenants/14/gp_exceptions

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 17c8d425-f5e9-4cf2-92ee-57db1e89f025
X-Api-Secret: G0OM9ZG-vWVMxuNKk7lilr0bx-57BnhxGVZrleEsf0I
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/14/gp_exceptions" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 17c8d425-f5e9-4cf2-92ee-57db1e89f025" \
	-H "X-Api-Secret: G0OM9ZG-vWVMxuNKk7lilr0bx-57BnhxGVZrleEsf0I"

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: 1588282527
ETag: W/"dfeed0749657fe4e9f9307709d79e197"
X-Request-Id: cc2592d6-a205-431b-9dbe-71c0f9317e26
X-Runtime: 0.019683
X-Rack-CORS: miss; no-origin
Content-Length: 415

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2020-04-30T21:34:27Z",
      "updated_at": "2020-04-30T21:34:27Z",
      "name": "Fake Gp Exception Name",
      "shop_id": 23,
      "percent": 12.3,
      "integrator_tags": [
        {
          "id": 14,
          "created_at": "2020-04-30T21:34:27Z",
          "updated_at": "2020-04-30T21:34:27Z",
          "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/15/gp_exceptions/2

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: bc66dcc0-1c72-4ab2-9c81-bd2dd406d5a8
X-Api-Secret: 2RsWtswOoswVhTPp00C5lCjP_SV2FKeE86Vt4VHiV4I
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/15/gp_exceptions/2" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: bc66dcc0-1c72-4ab2-9c81-bd2dd406d5a8" \
	-H "X-Api-Secret: 2RsWtswOoswVhTPp00C5lCjP_SV2FKeE86Vt4VHiV4I"

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: 1588282528
ETag: W/"ebac44dfc92bd8693acc2dc775a73fd3"
X-Request-Id: 65a5b0fe-a3cb-4842-9fa0-9fc32da36fc9
X-Runtime: 0.017702
X-Rack-CORS: miss; no-origin
Content-Length: 326

Body

{
  "id": 2,
  "created_at": "2020-04-30T21:34:28Z",
  "updated_at": "2020-04-30T21:34:28Z",
  "name": "Fake Gp Exception Name",
  "shop_id": 25,
  "percent": 12.3,
  "integrator_tags": [
    {
      "id": 15,
      "created_at": "2020-04-30T21:34:28Z",
      "updated_at": "2020-04-30T21:34: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. [Customer, RepairOrder, Appointment, Staff, Inventory, Shop, Vehicle, Category, PaymentTransaction, Status, Assignment, Payment, Vendor, PurchaseRecord, Recommendation, GpException] string
taggable_id required Entity ID number
name required Tag name string
value required Tag value string

Request

Route

POST api/v1/tenants/18/integrator_tags

Headers

Accept: application/json
X-Api-Partner-Id: fea9aa5e-cd5d-4c2b-b786-ea801a57bbf1
X-Api-Secret: KL4WM1LHUiAcJuQ5y4X3Pbkpds_j8ParC48V75VvkIY
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/18/integrator_tags" -d '{"taggable_type":"Customer","taggable_id":22,"name":"TagName","value":"ABC123"}' -X POST \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: fea9aa5e-cd5d-4c2b-b786-ea801a57bbf1" \
	-H "X-Api-Secret: KL4WM1LHUiAcJuQ5y4X3Pbkpds_j8ParC48V75VvkIY" \
	-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/18/integrator_tags/22
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 997
X-RateLimit-Reset: 1588282528
ETag: W/"9f6b44bdd455ebfef523c7e9960b723d"
X-Request-Id: 05cd9561-a004-4793-a243-552eed5691e9
X-Runtime: 0.033124
X-Rack-CORS: miss; no-origin
Content-Length: 159

Body

{
  "id": 22,
  "created_at": "2020-04-30T21:34:28Z",
  "updated_at": "2020-04-30T21:34: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/20/integrator_tags/26

Headers

Accept: application/json
X-Api-Partner-Id: 5d22c7b9-f489-422e-8e56-f6c9e03acbe1
X-Api-Secret: U4V_s_ZNrYohK4n4xPD0pq1Opmf04jVZsTGbfwSl_n0
Host: example.org
Content-Type: application/x-www-form-urlencoded
Cookie: 

cURL

curl "https://api.shop-ware.com/api/v1/tenants/20/integrator_tags/26" -d '' -X DELETE \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 5d22c7b9-f489-422e-8e56-f6c9e03acbe1" \
	-H "X-Api-Secret: U4V_s_ZNrYohK4n4xPD0pq1Opmf04jVZsTGbfwSl_n0" \
	-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: 1588282529
ETag: W/"44136fa355b3678a1146ad16f7e8649e"
X-Request-Id: cdc20c35-f288-4868-a943-4dd665ec57b8
X-Runtime: 0.023271
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/16/integrator_tags

Headers

Accept: application/json
X-Api-Partner-Id: 06c06eb1-72ea-4e1a-9dc5-53a8dcd4395f
X-Api-Secret: O-QaCiXieMA2l7k53mcYNp9eQOH36EnyP7vslA5iTS0
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/16/integrator_tags" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 06c06eb1-72ea-4e1a-9dc5-53a8dcd4395f" \
	-H "X-Api-Secret: O-QaCiXieMA2l7k53mcYNp9eQOH36EnyP7vslA5iTS0"

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: 1588282528
ETag: W/"732d548fc6806917fad04e80fed17652"
X-Request-Id: 8950597e-6868-4129-8935-ab8d9c014c36
X-Runtime: 0.016978
X-Rack-CORS: miss; no-origin
Content-Length: 412

Body

{
  "results": [
    {
      "id": 17,
      "created_at": "2020-04-30T21:34:28Z",
      "updated_at": "2020-04-30T21:34:28Z",
      "taggable_type": "Shop",
      "taggable_id": 26,
      "name": "tag_name",
      "value": "tag_value"
    },
    {
      "id": 16,
      "created_at": "2020-04-30T21:34:28Z",
      "updated_at": "2020-04-30T21:34: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/17/integrator_tags/19

Headers

Accept: application/json
X-Api-Partner-Id: 7f7a1552-8087-4206-a1eb-6016617d0560
X-Api-Secret: Ish81mLdp88tiALRa0OKRENqxa_mProbHr3Wlds3pDE
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/17/integrator_tags/19" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 7f7a1552-8087-4206-a1eb-6016617d0560" \
	-H "X-Api-Secret: Ish81mLdp88tiALRa0OKRENqxa_mProbHr3Wlds3pDE"

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: 1588282528
ETag: W/"bf00c61f843c47076afa9fdbbad287cb"
X-Request-Id: ae98c8c4-7dca-4ae6-a2d9-18dd3c8203fd
X-Runtime: 0.015227
X-Rack-CORS: miss; no-origin
Content-Length: 159

Body

{
  "id": 19,
  "created_at": "2020-04-30T21:34:28Z",
  "updated_at": "2020-04-30T21:34:28Z",
  "taggable_type": "Shop",
  "taggable_id": 27,
  "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. [Customer, RepairOrder, Appointment, Staff, Inventory, Shop, Vehicle, Category, PaymentTransaction, Status, Assignment, Payment, Vendor, PurchaseRecord, Recommendation, GpException] string
taggable_id Entity ID string
name Tag name string
value Tag value string

Request

Route

PUT api/v1/tenants/19/integrator_tags/24

Headers

Accept: application/json
X-Api-Partner-Id: a5da884b-6324-4687-8041-468048bdce0d
X-Api-Secret: Fbxq1UxtS1ClNvW1bjGKxOtsXzyyd_7WX4ofcdtDCfs
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/19/integrator_tags/24" -d '{"taggable_type":"Customer","taggable_id":23,"name":"TagName","value":"ABC123"}' -X PUT \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: a5da884b-6324-4687-8041-468048bdce0d" \
	-H "X-Api-Secret: Fbxq1UxtS1ClNvW1bjGKxOtsXzyyd_7WX4ofcdtDCfs" \
	-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: 1588282528
ETag: W/"bcee100eff7425f019499a30c32d6f94"
X-Request-Id: 559e68a5-439b-4368-bae3-7bdcc992f2cd
X-Runtime: 0.023416
X-Rack-CORS: miss; no-origin
Content-Length: 159

Body

{
  "id": 24,
  "created_at": "2020-04-30T21:34:28Z",
  "updated_at": "2020-04-30T21:34: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/21/inventories

Headers

Accept: application/json
X-Api-Partner-Id: 9934c6a5-775e-4d8b-9430-954da05be001
X-Api-Secret: ClwD3M0lVkkWiPprnvbW5n60eQXxBLNfHWKAK5BUkbo
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/21/inventories" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 9934c6a5-775e-4d8b-9430-954da05be001" \
	-H "X-Api-Secret: ClwD3M0lVkkWiPprnvbW5n60eQXxBLNfHWKAK5BUkbo"

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: 1588282529
ETag: W/"2a3d84f32e20af3b541f705d800c2fbc"
X-Request-Id: 1384891d-34a2-48ff-8166-84ca7bf335ed
X-Runtime: 0.018068
X-Rack-CORS: miss; no-origin
Content-Length: 1011

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2020-04-30T21:34:29Z",
      "updated_at": "2020-04-30T21:34: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": 32,
      "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": 27,
          "created_at": "2020-04-30T21:34:29Z",
          "updated_at": "2020-04-30T21:34:29Z",
          "taggable_type": "Inventory",
          "taggable_id": 1,
          "name": "tag_name",
          "value": "tag_value"
        }
      ]
    }
  ],
  "limit": 1,
  "limited": false,
  "total_count": 1,
  "current_page": 1,
  "total_pages": 1
}

Get specific inventory by :id

Endpoint

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

Request

Route

GET api/v1/tenants/22/inventories/2

Headers

Accept: application/json
X-Api-Partner-Id: 9ae7f1d7-ca8c-489b-8ad0-6c3f7fdd55ff
X-Api-Secret: jf6DiLJjSMeGlrwk_Fy0l7sMzeI8X7PMdcjC-NKiySg
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/22/inventories/2" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 9ae7f1d7-ca8c-489b-8ad0-6c3f7fdd55ff" \
	-H "X-Api-Secret: jf6DiLJjSMeGlrwk_Fy0l7sMzeI8X7PMdcjC-NKiySg"

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: 1588282530
ETag: W/"621e93de9bf6947dc685c9e54b971756"
X-Request-Id: a6360a73-2a74-48e9-8fe7-e24777c4cc25
X-Runtime: 0.021034
X-Rack-CORS: miss; no-origin
Content-Length: 922

Body

{
  "id": 2,
  "created_at": "2020-04-30T21:34:30Z",
  "updated_at": "2020-04-30T21:34:30Z",
  "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": 34,
  "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": 28,
      "created_at": "2020-04-30T21:34:30Z",
      "updated_at": "2020-04-30T21:34:30Z",
      "taggable_type": "Inventory",
      "taggable_id": 2,
      "name": "tag_name",
      "value": "tag_value"
    }
  ]
}

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

Headers

Accept: application/json
X-Api-Partner-Id: 7ca9888c-d3e4-4b3f-8f18-cb8be8842276
X-Api-Secret: tcE6LDU-ROjRjFtnzTMKy3MPNBogtm7tKViZe03H86Y
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/23/past_recommendations" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 7ca9888c-d3e4-4b3f-8f18-cb8be8842276" \
	-H "X-Api-Secret: tcE6LDU-ROjRjFtnzTMKy3MPNBogtm7tKViZe03H86Y"

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: 1588282530
ETag: W/"f8b25e650bb3c20a5ac19b2aa15847ca"
X-Request-Id: 80ac78fc-42ef-459b-a8f3-2a72bee58eff
X-Runtime: 0.036974
X-Rack-CORS: miss; no-origin
Content-Length: 612

Body

{
  "results": [
    {
      "id": 2,
      "created_at": "2020-04-30T21:34:30Z",
      "updated_at": "2020-04-30T21:34: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": "2020-04-30T21:34:30Z",
      "updated_at": "2020-04-30T21:34:30Z",
      "description": "Change oil",
      "approved": "true",
      "approver_id": 27,
      "approval_type": "phone",
      "imported": true,
      "vehicle_id": 5,
      "done": true,
      "recommendation_id": 1,
      "approval_at": "2020-04-29T21:34:30Z"
    }
  ],
  "limit": 2,
  "limited": false,
  "total_count": 2,
  "current_page": 1,
  "total_pages": 1
}

Request

Route

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

Headers

Accept: application/json
X-Api-Partner-Id: 7ca9888c-d3e4-4b3f-8f18-cb8be8842276
X-Api-Secret: tcE6LDU-ROjRjFtnzTMKy3MPNBogtm7tKViZe03H86Y
Host: example.org
Cookie: 

Query Parameters

done=true

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/23/past_recommendations?done=true" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 7ca9888c-d3e4-4b3f-8f18-cb8be8842276" \
	-H "X-Api-Secret: tcE6LDU-ROjRjFtnzTMKy3MPNBogtm7tKViZe03H86Y"

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: 1588282530
ETag: W/"2f0b1b4390b29e96272d70a875face05"
X-Request-Id: 78520117-54d3-401c-aca2-246aa2f7b8e4
X-Runtime: 0.024781
X-Rack-CORS: miss; no-origin
Content-Length: 357

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2020-04-30T21:34:30Z",
      "updated_at": "2020-04-30T21:34:30Z",
      "description": "Change oil",
      "approved": "true",
      "approver_id": 27,
      "approval_type": "phone",
      "imported": true,
      "vehicle_id": 5,
      "done": true,
      "recommendation_id": 1,
      "approval_at": "2020-04-29T21:34:30Z"
    }
  ],
  "limit": 1,
  "limited": false,
  "total_count": 1,
  "current_page": 1,
  "total_pages": 1
}

Request

Route

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

Headers

Accept: application/json
X-Api-Partner-Id: 7ca9888c-d3e4-4b3f-8f18-cb8be8842276
X-Api-Secret: tcE6LDU-ROjRjFtnzTMKy3MPNBogtm7tKViZe03H86Y
Host: example.org
Cookie: 

Query Parameters

done=false

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/23/past_recommendations?done=false" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 7ca9888c-d3e4-4b3f-8f18-cb8be8842276" \
	-H "X-Api-Secret: tcE6LDU-ROjRjFtnzTMKy3MPNBogtm7tKViZe03H86Y"

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: 1588282530
ETag: W/"4c6b1574f52c7719811e47dba442e42e"
X-Request-Id: 93404f2f-8b03-4deb-b0a0-115c34186000
X-Runtime: 0.022891
X-Rack-CORS: miss; no-origin
Content-Length: 343

Body

{
  "results": [
    {
      "id": 2,
      "created_at": "2020-04-30T21:34:30Z",
      "updated_at": "2020-04-30T21:34: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/24/past_recommendations/3

Headers

Accept: application/json
X-Api-Partner-Id: 7385de27-2efd-499a-8d11-4fb6361165e3
X-Api-Secret: tTbaMvqj0Tnla34aZKV0MFLqlMkLUmIa8HYJVB9NoAU
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/24/past_recommendations/3" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 7385de27-2efd-499a-8d11-4fb6361165e3" \
	-H "X-Api-Secret: tTbaMvqj0Tnla34aZKV0MFLqlMkLUmIa8HYJVB9NoAU"

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: 1588282531
ETag: W/"4fb8fd95b72630c18ee4d427efbeb36a"
X-Request-Id: ff4d47df-9de7-4291-8b99-66b72a92e6ee
X-Runtime: 0.053643
X-Rack-CORS: miss; no-origin
Content-Length: 268

Body

{
  "id": 3,
  "created_at": "2020-04-30T21:34:31Z",
  "updated_at": "2020-04-30T21:34:31Z",
  "description": "Change oil",
  "approved": "true",
  "approver_id": 28,
  "approval_type": "phone",
  "imported": true,
  "vehicle_id": 7,
  "done": true,
  "recommendation_id": 3,
  "approval_at": "2020-04-29T21:34:31Z"
}

Payment Transactions

Get a list of all payment transactions

Endpoint

GET api/v1/tenants/:tenant_id/payment_transactions

Request

Route

GET api/v1/tenants/25/payment_transactions

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 5d45d28d-8b60-4701-bf89-f8a7503c77b5
X-Api-Secret: IgWjPzlu447FWnxamPKeLc3EGxOr5rVKoUPjcRP5q9M
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/25/payment_transactions" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 5d45d28d-8b60-4701-bf89-f8a7503c77b5" \
	-H "X-Api-Secret: IgWjPzlu447FWnxamPKeLc3EGxOr5rVKoUPjcRP5q9M"

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: 1588282531
ETag: W/"015f74c2692d4ba955f518788dbc40f9"
X-Request-Id: c47067f4-7a5a-4d73-a4bf-713a82ecc4ad
X-Runtime: 0.015888
X-Rack-CORS: miss; no-origin
Content-Length: 800

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2020-04-30T21:34:31Z",
      "updated_at": "2020-04-30T21:34:31Z",
      "payment_id": null,
      "repair_order_id": 25,
      "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": 29,
          "created_at": "2020-04-30T21:34:31Z",
          "updated_at": "2020-04-30T21:34: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/26/payment_transactions/2

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: c5ddb862-b7f6-4b86-98e5-cb7e58f50d6a
X-Api-Secret: m7XFAdZmWNUCgyJtkrfpSGpgot-6CTx8mOjB4Quc6Pk
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/26/payment_transactions/2" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: c5ddb862-b7f6-4b86-98e5-cb7e58f50d6a" \
	-H "X-Api-Secret: m7XFAdZmWNUCgyJtkrfpSGpgot-6CTx8mOjB4Quc6Pk"

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: 1588282531
ETag: W/"15a386df0a6cab6033c8513298b178cf"
X-Request-Id: deb0830b-4718-49e9-8a0f-629b32e328ec
X-Runtime: 0.016255
X-Rack-CORS: miss; no-origin
Content-Length: 711

Body

{
  "id": 2,
  "created_at": "2020-04-30T21:34:31Z",
  "updated_at": "2020-04-30T21:34:31Z",
  "payment_id": null,
  "repair_order_id": 26,
  "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": 30,
      "created_at": "2020-04-30T21:34:31Z",
      "updated_at": "2020-04-30T21:34: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/29/payments

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: ea019e5d-da08-40db-be0c-84a5bb64336a
X-Api-Secret: WKrr0NDDa91cV-IR9-hHZqBCWdkp0Nk95jwuCKzxlEs
Host: example.org
Cookie: 

Body

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

cURL

curl "https://api.shop-ware.com/api/v1/tenants/29/payments" -d '{"amount_cents":21849,"payment_type_details":{"type":"Credit Card","name":"Visa"},"repair_order_id":29,"notes":"Customer made partial payment"}' -X POST \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: ea019e5d-da08-40db-be0c-84a5bb64336a" \
	-H "X-Api-Secret: WKrr0NDDa91cV-IR9-hHZqBCWdkp0Nk95jwuCKzxlEs"

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: 1588282532
ETag: W/"577b0398c862ba0d07fb6bc6c83df86e"
X-Request-Id: dea4b46b-ea8f-4c9c-a21c-739a2198c02b
X-Runtime: 0.063696
X-Rack-CORS: miss; no-origin
Content-Length: 279

Body

{
  "id": 4,
  "created_at": "2020-04-30T21:34:32Z",
  "updated_at": "2020-04-30T21:34:32Z",
  "repair_order_id": 29,
  "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/27/payments

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 6d533ff7-fc82-4943-8396-089439acda8e
X-Api-Secret: x-CaAA4gOpLB36U4qzNMcE_yiL2Gtx3RTTyOyOnytcQ
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/27/payments" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 6d533ff7-fc82-4943-8396-089439acda8e" \
	-H "X-Api-Secret: x-CaAA4gOpLB36U4qzNMcE_yiL2Gtx3RTTyOyOnytcQ"

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: 1588282532
ETag: W/"2fab7f792f10f38b0419cb2e82d937e2"
X-Request-Id: 9f171178-e880-4651-a1cf-e4add5062745
X-Runtime: 0.017362
X-Rack-CORS: miss; no-origin
Content-Length: 529

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2020-04-30T21:34:32Z",
      "updated_at": "2020-04-30T21:34:32Z",
      "repair_order_id": 27,
      "payment_type": "Credit Card - Visa",
      "payment_type_details": {
        "type": "Credit Card",
        "name": "Visa"
      },
      "notes": "Customer made partial payment",
      "amount_cents": 21849,
      "integrator_tags": [
        {
          "id": 31,
          "created_at": "2020-04-30T21:34:32Z",
          "updated_at": "2020-04-30T21:34:32Z",
          "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/28/payments/2

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: ab95bc5f-b1a9-489d-a0e8-2a056b196397
X-Api-Secret: d11hnL4fA-uNDLk0zfGtWNH3Xji8Am6cCdQin5dem20
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/28/payments/2" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: ab95bc5f-b1a9-489d-a0e8-2a056b196397" \
	-H "X-Api-Secret: d11hnL4fA-uNDLk0zfGtWNH3Xji8Am6cCdQin5dem20"

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: 1588282532
ETag: W/"3b7da2a65639e8ed40f560907333253e"
X-Request-Id: 75978eb9-9779-4022-9baf-ef82ad8bc6e0
X-Runtime: 0.015225
X-Rack-CORS: miss; no-origin
Content-Length: 440

Body

{
  "id": 2,
  "created_at": "2020-04-30T21:34:32Z",
  "updated_at": "2020-04-30T21:34:32Z",
  "repair_order_id": 28,
  "payment_type": "Credit Card - Visa",
  "payment_type_details": {
    "type": "Credit Card",
    "name": "Visa"
  },
  "notes": "Customer made partial payment",
  "amount_cents": 21849,
  "integrator_tags": [
    {
      "id": 32,
      "created_at": "2020-04-30T21:34:32Z",
      "updated_at": "2020-04-30T21:34:32Z",
      "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/30/purchase_records

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: b330dc6c-7122-4b5f-8126-ed4fa1600ab2
X-Api-Secret: bn4_bSwG4uARQ6MvP2tWBm2UoCq7hQFXYcLWZ7tIi70
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/30/purchase_records" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: b330dc6c-7122-4b5f-8126-ed4fa1600ab2" \
	-H "X-Api-Secret: bn4_bSwG4uARQ6MvP2tWBm2UoCq7hQFXYcLWZ7tIi70"

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: 1588282533
ETag: W/"05e7c00904b0baed9b80b15e4c078c16"
X-Request-Id: d9ad8d8f-212d-4498-a835-e5bfe21b30ef
X-Runtime: 0.044199
X-Rack-CORS: miss; no-origin
Content-Length: 620

Body

{
  "results": [
    {
      "id": 1,
      "created_at": "2020-04-30T21:34:33Z",
      "updated_at": "2020-04-30T21:34:33Z",
      "shop_id": 42,
      "invoice_number": "IN1",
      "vendor_id": 5,
      "payment_type": "Credit Card",
      "ecomm_integrator_order_id": 100,
      "is_return": false,
      "line_items": [
        {
          "inventory_id": 3,
          "quantity": 1.0,
          "list_price_cents": 0,
          "cost_cents": 50,
          "ecomm_integrator_part_id": "PARTSTECH_PART_ID"
        }
      ],
      "integrator_tags": [
        {
          "id": 34,
          "created_at": "2020-04-30T21:34:33Z",
          "updated_at": "2020-04-30T21:34:33Z",
          "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/31/purchase_records/2

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 60255316-9494-40a3-abd7-d404cc6d0378
X-Api-Secret: 6bMkUvtlGfrmApbDJXC7hdDr6Stb0-tLkzbwuLsUFzk
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/31/purchase_records/2" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 60255316-9494-40a3-abd7-d404cc6d0378" \
	-H "X-Api-Secret: 6bMkUvtlGfrmApbDJXC7hdDr6Stb0-tLkzbwuLsUFzk"

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: 1588282534
ETag: W/"919b97d521edff98e04fd582ba52039c"
X-Request-Id: 43c61944-1e2b-4828-b0bd-cbc62d955555
X-Runtime: 0.028379
X-Rack-CORS: miss; no-origin
Content-Length: 531

Body

{
  "id": 2,
  "created_at": "2020-04-30T21:34:33Z",
  "updated_at": "2020-04-30T21:34:33Z",
  "shop_id": 43,
  "invoice_number": "IN2",
  "vendor_id": 7,
  "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": 35,
      "created_at": "2020-04-30T21:34:34Z",
      "updated_at": "2020-04-30T21:34:34Z",
      "taggable_type": "PurchaseRecord",
      "taggable_id": 2,
      "name": "tag_name",
      "value": "tag_value"
    }
  ]
}

Recommendations

Get a list of all recommendations

Endpoint

GET api/v1/tenants/:tenant_id/recommendations

Request

Route

GET api/v1/tenants/32/recommendations

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 5b58bef9-8ca0-43b4-83b8-ed34ae1f043d
X-Api-Secret: bb9-Rpuw_uQWYssgcsb7W8Og6kt5PFVvPgO9BbhOHWk
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/32/recommendations" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 5b58bef9-8ca0-43b4-83b8-ed34ae1f043d" \
	-H "X-Api-Secret: bb9-Rpuw_uQWYssgcsb7W8Og6kt5PFVvPgO9BbhOHWk"

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: 1588282535
ETag: W/"0249a128a6c9078287ca8423c21af0e8"
X-Request-Id: 5c12c5c0-21fc-4adc-93a1-71ba90041ce3
X-Runtime: 0.041062
X-Rack-CORS: miss; no-origin
Content-Length: 2006

Body

{
  "results": [
    {
      "id": 6,
      "created_at": "2020-04-30T21:34:35Z",
      "updated_at": "2020-04-30T21:34:35Z",
      "description": null,
      "approved": null,
      "approver_id": null,
      "approval_type": null,
      "imported": false,
      "quick_price_cents": 355000.0,
      "service": {
      },
      "repair_order_id": 36,
      "approval_at": null,
      "integrator_tags": [

      ]
    },
    {
      "id": 5,
      "created_at": "2020-04-30T21:34:34Z",
      "updated_at": "2020-04-30T21:34:34Z",
      "description": "Test Service",
      "approved": null,
      "approver_id": null,
      "approval_type": null,
      "imported": false,
      "quick_price_cents": null,
      "service": {
        "id": 7,
        "created_at": "2020-04-30T21:34:34Z",
        "updated_at": "2020-04-30T21:34:34Z",
        "title": "Test Service",
        "completed": false,
        "category_id": null,
        "labor_rate_cents": 10000,
        "labors": [
          {
            "id": 1,
            "created_at": "2020-04-30T21:34:34Z",
            "updated_at": "2020-04-30T21:34:34Z",
            "name": "Test labor 1",
            "technician_id": null,
            "taxable": true,
            "hours": 1.0
          }
        ],
        "parts": [
          {
            "id": 5,
            "created_at": "2020-04-30T21:34:34Z",
            "updated_at": "2020-04-30T21:34:34Z",
            "brand": "Acme5",
            "description": "trademark widget",
            "number": "acme-5",
            "quoted_price_cents": 100,
            "cost_cents": 50,
            "part_inventory_id": 7,
            "taxable": true,
            "quantity": 1.0
          }
        ],
        "hazmats": [
          {
            "id": 1,
            "created_at": "2020-04-30T21:34:34Z",
            "updated_at": "2020-04-30T21:34:34Z",
            "name": "Test hazmat fee 1",
            "fee_cents": 25,
            "taxable": true,
            "quantity": 1.0
          }
        ],
        "sublets": [
          {
            "id": 1,
            "created_at": "2020-04-30T21:34:34Z",
            "updated_at": "2020-04-30T21:34:34Z",
            "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": "2020-04-30T21:34:34Z",
            "updated_at": "2020-04-30T21:34:34Z",
            "name": "Test inspection 1",
            "state": "unchecked",
            "detail": "Specifics about the test inspection"
          }
        ]
      },
      "repair_order_id": 35,
      "approval_at": null,
      "integrator_tags": [
        {
          "id": 36,
          "created_at": "2020-04-30T21:34:35Z",
          "updated_at": "2020-04-30T21:34:35Z",
          "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/33/recommendations/7

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: ce5eff53-1d0d-4532-a1f9-6d4a1d832180
X-Api-Secret: zWnDLAPbQr1Np-B8PZN00YWy7XY2Ken_aODpQcgVgCQ
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/33/recommendations/7" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: ce5eff53-1d0d-4532-a1f9-6d4a1d832180" \
	-H "X-Api-Secret: zWnDLAPbQr1Np-B8PZN00YWy7XY2Ken_aODpQcgVgCQ"

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: 1588282535
ETag: W/"a31b071e1fc169ee7aa27cbff9366c83"
X-Request-Id: 8fbe3305-20b9-4010-b093-56f32d97fc46
X-Runtime: 0.033236
X-Rack-CORS: miss; no-origin
Content-Length: 1641

Body

{
  "id": 7,
  "created_at": "2020-04-30T21:34:35Z",
  "updated_at": "2020-04-30T21:34:35Z",
  "description": "Test Service",
  "approved": null,
  "approver_id": null,
  "approval_type": null,
  "imported": false,
  "quick_price_cents": null,
  "service": {
    "id": 8,
    "created_at": "2020-04-30T21:34:35Z",
    "updated_at": "2020-04-30T21:34:35Z",
    "title": "Test Service",
    "completed": false,
    "category_id": null,
    "labor_rate_cents": 10000,
    "labors": [
      {
        "id": 2,
        "created_at": "2020-04-30T21:34:35Z",
        "updated_at": "2020-04-30T21:34:35Z",
        "name": "Test labor 2",
        "technician_id": null,
        "taxable": true,
        "hours": 1.0
      }
    ],
    "parts": [
      {
        "id": 6,
        "created_at": "2020-04-30T21:34:35Z",
        "updated_at": "2020-04-30T21:34:35Z",
        "brand": "Acme6",
        "description": "trademark widget",
        "number": "acme-6",
        "quoted_price_cents": 100,
        "cost_cents": 50,
        "part_inventory_id": 8,
        "taxable": true,
        "quantity": 1.0
      }
    ],
    "hazmats": [
      {
        "id": 2,
        "created_at": "2020-04-30T21:34:35Z",
        "updated_at": "2020-04-30T21:34:35Z",
        "name": "Test hazmat fee 2",
        "fee_cents": 25,
        "taxable": true,
        "quantity": 1.0
      }
    ],
    "sublets": [
      {
        "id": 2,
        "created_at": "2020-04-30T21:34:35Z",
        "updated_at": "2020-04-30T21:34:35Z",
        "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": "2020-04-30T21:34:35Z",
        "updated_at": "2020-04-30T21:34:35Z",
        "name": "Test inspection 2",
        "state": "unchecked",
        "detail": "Specifics about the test inspection"
      }
    ]
  },
  "repair_order_id": 38,
  "approval_at": null,
  "integrator_tags": [
    {
      "id": 37,
      "created_at": "2020-04-30T21:34:35Z",
      "updated_at": "2020-04-30T21:34:35Z",
      "taggable_type": "Recommendation",
      "taggable_id": 7,
      "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/36/repair_orders

Headers

Content-Type: application/json
Accept: application/json
X-Api-Partner-Id: e7ae7ad4-bc7c-4b95-8cef-45f5d96eb9b1
X-Api-Secret: bAhyxO1n4zwCH4wG8N3Yz4R2fkEe8sR9gb73-hpyuIs
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": 51,
  "taxable": true,
  "due_in_at": "2020-05-03T21:34:38Z",
  "customer_source": "Repeat"
}

cURL

curl "https://api.shop-ware.com/api/v1/tenants/36/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":51,"taxable":true,"due_in_at":"2020-05-03T21:34:38Z","customer_source":"Repeat"}' -X POST \
	-H "Content-Type: application/json" \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: e7ae7ad4-bc7c-4b95-8cef-45f5d96eb9b1" \
	-H "X-Api-Secret: bAhyxO1n4zwCH4wG8N3Yz4R2fkEe8sR9gb73-hpyuIs"

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
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: 1588282538
ETag: W/"13786d93965af01dc86bd3ec11b33697"
X-Request-Id: 4e7709c5-ba78-44e3-9cdb-139883511473
X-Runtime: 0.065544
X-Rack-CORS: miss; no-origin
Content-Length: 761

Body

{
  "id": 43,
  "created_at": "2020-04-30T21:34:38Z",
  "updated_at": "2020-04-30T21:34:38Z",
  "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": 51,
  "status_id": null,
  "taxable": true,
  "customer_source": "Repeat",
  "supply_fee_cents": null,
  "part_discount_percentage": 0.0,
  "labor_discount_percentage": 0.0,
  "started_at": null,
  "closed_at": null,
  "picked_up_at": null,
  "due_in_at": "2020-05-03T21:34:38Z",
  "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/34/repair_orders

Headers

Content-Type: application/json
Accept: application/json
X-Api-Partner-Id: 85e7ee1e-9f13-4623-8619-a01fac444c0a
X-Api-Secret: sSPpg1RoQaR5xKrII5tUgjaqHiyvSe4NWKTFRU_egCo
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/34/repair_orders" -X GET \
	-H "Content-Type: application/json" \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 85e7ee1e-9f13-4623-8619-a01fac444c0a" \
	-H "X-Api-Secret: sSPpg1RoQaR5xKrII5tUgjaqHiyvSe4NWKTFRU_egCo"

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
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: 1588282536
ETag: W/"86671187bca6211a49ac271964e03ece"
X-Request-Id: 242191c5-6220-4697-ad84-c1d58dc10712
X-Runtime: 0.049098
X-Rack-CORS: miss; no-origin
Content-Length: 2614

Body

{
  "results": [
    {
      "id": 40,
      "created_at": "2020-04-30T21:34:36Z",
      "updated_at": "2020-04-30T21:34:36Z",
      "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": 47,
      "status_id": 1,
      "taxable": true,
      "customer_source": "Repeat",
      "supply_fee_cents": 3250,
      "part_discount_percentage": 50.0,
      "labor_discount_percentage": 50.0,
      "started_at": "2020-04-25T21:34:36Z",
      "closed_at": "2020-04-27T21:34:36Z",
      "picked_up_at": "2020-04-28T21:34:36Z",
      "due_in_at": "2020-04-25T21:34:36Z",
      "due_out_at": "2020-04-28T21:34:36Z",
      "part_tax_rate": 0.0,
      "labor_tax_rate": 0.0,
      "hazmat_tax_rate": 0.0,
      "sublet_tax_rate": 0.0,
      "services": [
        {
          "id": 9,
          "created_at": "2020-04-30T21:34:36Z",
          "updated_at": "2020-04-30T21:34:36Z",
          "title": "Warning Light On",
          "completed": false,
          "category_id": 103,
          "labor_rate_cents": 10000,
          "labors": [
            {
              "id": 3,
              "created_at": "2020-04-30T21:34:36Z",
              "updated_at": "2020-04-30T21:34:36Z",
              "name": "Advise on proper course of action",
              "technician_id": 34,
              "taxable": false,
              "hours": 0.13
            }
          ],
          "parts": [
            {
              "id": 7,
              "created_at": "2020-04-30T21:34:36Z",
              "updated_at": "2020-04-30T21:34:36Z",
              "brand": "Superbright",
              "description": "194 LED - AMBER 120*",
              "number": "WLED-A-120",
              "quoted_price_cents": 395,
              "cost_cents": 85,
              "part_inventory_id": 9,
              "taxable": false,
              "quantity": 2.0
            }
          ],
          "hazmats": [
            {
              "id": 3,
              "created_at": "2020-04-30T21:34:36Z",
              "updated_at": "2020-04-30T21:34:36Z",
              "name": "Recycling fee",
              "fee_cents": 2000,
              "taxable": true,
              "quantity": 1.0
            }
          ],
          "sublets": [
            {
              "id": 3,
              "created_at": "2020-04-30T21:34:36Z",
              "updated_at": "2020-04-30T21:34:36Z",
              "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": "2020-05-01T21:34:36Z"
            }
          ],
          "inspections": [
            {
              "id": 3,
              "created_at": "2020-04-30T21:34:36Z",
              "updated_at": "2020-04-30T21:34:36Z",
              "name": "Measure tire tread depth",
              "state": "red",
              "detail": "Tread at 3/16"
            }
          ]
        }
      ],
      "payments": [
        {
          "id": 5,
          "created_at": "2020-04-30T21:34:36Z",
          "updated_at": "2020-04-30T21:34:36Z",
          "payment_type": "Credit Card - Visa",
          "payment_type_details": {
            "type": "Credit Card",
            "name": "Visa"
          },
          "notes": "Customer made partial payment",
          "amount_cents": 21849
        }
      ],
      "integrator_tags": [
        {
          "id": 38,
          "created_at": "2020-04-30T21:34:36Z",
          "updated_at": "2020-04-30T21:34:36Z",
          "taggable_type": "RepairOrder",
          "taggable_id": 40,
          "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/34/repair_orders?shop_id=47

Headers

Content-Type: application/json
Accept: application/json
X-Api-Partner-Id: 85e7ee1e-9f13-4623-8619-a01fac444c0a
X-Api-Secret: sSPpg1RoQaR5xKrII5tUgjaqHiyvSe4NWKTFRU_egCo
Host: example.org
Cookie: 

Query Parameters

shop_id=47

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/34/repair_orders?shop_id=47" -X GET \
	-H "Content-Type: application/json" \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 85e7ee1e-9f13-4623-8619-a01fac444c0a" \
	-H "X-Api-Secret: sSPpg1RoQaR5xKrII5tUgjaqHiyvSe4NWKTFRU_egCo"

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
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: 1588282536
ETag: W/"86671187bca6211a49ac271964e03ece"
X-Request-Id: d3bea7e4-dcdd-41bc-8364-f6874693c203
X-Runtime: 0.032322
X-Rack-CORS: miss; no-origin
Content-Length: 2614

Body

{
  "results": [
    {
      "id": 40,
      "created_at": "2020-04-30T21:34:36Z",
      "updated_at": "2020-04-30T21:34:36Z",
      "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": 47,
      "status_id": 1,
      "taxable": true,
      "customer_source": "Repeat",
      "supply_fee_cents": 3250,
      "part_discount_percentage": 50.0,
      "labor_discount_percentage": 50.0,
      "started_at": "2020-04-25T21:34:36Z",
      "closed_at": "2020-04-27T21:34:36Z",
      "picked_up_at": "2020-04-28T21:34:36Z",
      "due_in_at": "2020-04-25T21:34:36Z",
      "due_out_at": "2020-04-28T21:34:36Z",
      "part_tax_rate": 0.0,
      "labor_tax_rate": 0.0,
      "hazmat_tax_rate": 0.0,
      "sublet_tax_rate": 0.0,
      "services": [
        {
          "id": 9,
          "created_at": "2020-04-30T21:34:36Z",
          "updated_at": "2020-04-30T21:34:36Z",
          "title": "Warning Light On",
          "completed": false,
          "category_id": 103,
          "labor_rate_cents": 10000,
          "labors": [
            {
              "id": 3,
              "created_at": "2020-04-30T21:34:36Z",
              "updated_at": "2020-04-30T21:34:36Z",
              "name": "Advise on proper course of action",
              "technician_id": 34,
              "taxable": false,
              "hours": 0.13
            }
          ],
          "parts": [
            {
              "id": 7,
              "created_at": "2020-04-30T21:34:36Z",
              "updated_at": "2020-04-30T21:34:36Z",
              "brand": "Superbright",
              "description": "194 LED - AMBER 120*",
              "number": "WLED-A-120",
              "quoted_price_cents": 395,
              "cost_cents": 85,
              "part_inventory_id": 9,
              "taxable": false,
              "quantity": 2.0
            }
          ],
          "hazmats": [
            {
              "id": 3,
              "created_at": "2020-04-30T21:34:36Z",
              "updated_at": "2020-04-30T21:34:36Z",
              "name": "Recycling fee",
              "fee_cents": 2000,
              "taxable": true,
              "quantity": 1.0
            }
          ],
          "sublets": [
            {
              "id": 3,
              "created_at": "2020-04-30T21:34:36Z",
              "updated_at": "2020-04-30T21:34:36Z",
              "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": "2020-05-01T21:34:36Z"
            }
          ],
          "inspections": [
            {
              "id": 3,
              "created_at": "2020-04-30T21:34:36Z",
              "updated_at": "2020-04-30T21:34:36Z",
              "name": "Measure tire tread depth",
              "state": "red",
              "detail": "Tread at 3/16"
            }
          ]
        }
      ],
      "payments": [
        {
          "id": 5,
          "created_at": "2020-04-30T21:34:36Z",
          "updated_at": "2020-04-30T21:34:36Z",
          "payment_type": "Credit Card - Visa",
          "payment_type_details": {
            "type": "Credit Card",
            "name": "Visa"
          },
          "notes": "Customer made partial payment",
          "amount_cents": 21849
        }
      ],
      "integrator_tags": [
        {
          "id": 38,
          "created_at": "2020-04-30T21:34:36Z",
          "updated_at": "2020-04-30T21:34:36Z",
          "taggable_type": "RepairOrder",
          "taggable_id": 40,
          "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/35/repair_orders/41

Headers

Content-Type: application/json
Accept: application/json
X-Api-Partner-Id: 586921d3-26f2-4287-8ff0-e2a4b96eec95
X-Api-Secret: RxlrSjcC-j1jQUH-qUQE-hJivGk27ex0awYegA6arVY
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/35/repair_orders/41" -X GET \
	-H "Content-Type: application/json" \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 586921d3-26f2-4287-8ff0-e2a4b96eec95" \
	-H "X-Api-Secret: RxlrSjcC-j1jQUH-qUQE-hJivGk27ex0awYegA6arVY"

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
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: 1588282537
ETag: W/"4eb6bee1d7941ce075de230549aa7887"
X-Request-Id: c04cdc91-8254-4776-8d38-7603f0a72d4e
X-Runtime: 0.037629
X-Rack-CORS: miss; no-origin
Content-Length: 2528

Body

{
  "id": 41,
  "created_at": "2020-04-30T21:34:36Z",
  "updated_at": "2020-04-30T21:34:37Z",
  "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": 49,
  "status_id": 2,
  "taxable": true,
  "customer_source": "Repeat",
  "supply_fee_cents": 3250,
  "part_discount_percentage": 50.0,
  "labor_discount_percentage": 50.0,
  "started_at": "2020-04-25T21:34:36Z",
  "closed_at": "2020-04-27T21:34:36Z",
  "picked_up_at": "2020-04-28T21:34:36Z",
  "due_in_at": "2020-04-25T21:34:36Z",
  "due_out_at": "2020-04-28T21:34:36Z",
  "part_tax_rate": 0.0,
  "labor_tax_rate": 0.0,
  "hazmat_tax_rate": 0.0,
  "sublet_tax_rate": 0.0,
  "services": [
    {
      "id": 10,
      "created_at": "2020-04-30T21:34:37Z",
      "updated_at": "2020-04-30T21:34:37Z",
      "title": "Warning Light On",
      "completed": false,
      "category_id": 107,
      "labor_rate_cents": 10000,
      "labors": [
        {
          "id": 4,
          "created_at": "2020-04-30T21:34:37Z",
          "updated_at": "2020-04-30T21:34:37Z",
          "name": "Advise on proper course of action",
          "technician_id": 37,
          "taxable": false,
          "hours": 0.13
        }
      ],
      "parts": [
        {
          "id": 8,
          "created_at": "2020-04-30T21:34:37Z",
          "updated_at": "2020-04-30T21:34:37Z",
          "brand": "Superbright",
          "description": "194 LED - AMBER 120*",
          "number": "WLED-A-120",
          "quoted_price_cents": 395,
          "cost_cents": 85,
          "part_inventory_id": 10,
          "taxable": false,
          "quantity": 2.0
        }
      ],
      "hazmats": [
        {
          "id": 4,
          "created_at": "2020-04-30T21:34:37Z",
          "updated_at": "2020-04-30T21:34:37Z",
          "name": "Recycling fee",
          "fee_cents": 2000,
          "taxable": true,
          "quantity": 1.0
        }
      ],
      "sublets": [
        {
          "id": 4,
          "created_at": "2020-04-30T21:34:37Z",
          "updated_at": "2020-04-30T21:34:37Z",
          "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": "2020-05-01T21:34:37Z"
        }
      ],
      "inspections": [
        {
          "id": 4,
          "created_at": "2020-04-30T21:34:37Z",
          "updated_at": "2020-04-30T21:34:37Z",
          "name": "Measure tire tread depth",
          "state": "red",
          "detail": "Tread at 3/16"
        }
      ]
    }
  ],
  "payments": [
    {
      "id": 6,
      "created_at": "2020-04-30T21:34:36Z",
      "updated_at": "2020-04-30T21:34:36Z",
      "payment_type": "Credit Card - Visa",
      "payment_type_details": {
        "type": "Credit Card",
        "name": "Visa"
      },
      "notes": "Customer made partial payment",
      "amount_cents": 21849
    }
  ],
  "integrator_tags": [
    {
      "id": 40,
      "created_at": "2020-04-30T21:34:37Z",
      "updated_at": "2020-04-30T21:34:37Z",
      "taggable_type": "RepairOrder",
      "taggable_id": 41,
      "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/38/repair_orders/47/start

Headers

Content-Type: application/json
Accept: application/json
X-Api-Partner-Id: 535e96d3-e877-47c1-b25f-69b22170a685
X-Api-Secret: RCbIgeqZk_ZdJpyNoB3UyiP5bOHtHij0QD4-tzDo-ME
Host: example.org
Cookie: 

Body

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

cURL

curl "https://api.shop-ware.com/api/v1/tenants/38/repair_orders/47/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: 535e96d3-e877-47c1-b25f-69b22170a685" \
	-H "X-Api-Secret: RCbIgeqZk_ZdJpyNoB3UyiP5bOHtHij0QD4-tzDo-ME"

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
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: 1588282561
ETag: W/"a25cc7cb7ed7d93a7d5056014e40b54d"
X-Request-Id: 0f1a2b3a-6526-4793-8e07-e93ae35498d7
X-Runtime: 22.058688
X-Rack-CORS: miss; no-origin
Content-Length: 782

Body

{
  "id": 47,
  "created_at": "2020-04-30T21:34:39Z",
  "updated_at": "2020-04-30T21:34:39Z",
  "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": 55,
  "status_id": null,
  "taxable": true,
  "customer_source": "Repeat",
  "supply_fee_cents": 3250,
  "part_discount_percentage": 0.0,
  "labor_discount_percentage": 0.0,
  "started_at": "2020-04-30T21:34:39Z",
  "closed_at": null,
  "picked_up_at": null,
  "due_in_at": "2020-05-03T21:34:39Z",
  "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/37/repair_orders/45

Headers

Content-Type: application/json
Accept: application/json
X-Api-Partner-Id: 0e7172c8-cddf-4e36-88de-a29c37af196d
X-Api-Secret: MnWgQhntlPCa7EH-X_NJZb6ig9q53iyFQ3Qrjh7YLRY
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": "2020-05-03T21:34:38Z",
  "status_id": 4,
  "customer_source": "Website"
}

cURL

curl "https://api.shop-ware.com/api/v1/tenants/37/repair_orders/45" -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":"2020-05-03T21:34:38Z","status_id":4,"customer_source":"Website"}' -X PUT \
	-H "Content-Type: application/json" \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 0e7172c8-cddf-4e36-88de-a29c37af196d" \
	-H "X-Api-Secret: MnWgQhntlPCa7EH-X_NJZb6ig9q53iyFQ3Qrjh7YLRY"

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
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: 1588282539
ETag: W/"6ec875aaedce18a816e30f8235318e2c"
X-Request-Id: 116bf1c0-9165-47c2-a500-850c2ee5bb5c
X-Runtime: 0.049001
X-Rack-CORS: miss; no-origin
Content-Length: 760

Body

{
  "id": 45,
  "created_at": "2020-04-30T21:34:38Z",
  "updated_at": "2020-04-30T21:34:39Z",
  "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": 53,
  "status_id": 4,
  "taxable": false,
  "customer_source": "Website",
  "supply_fee_cents": 3250,
  "part_discount_percentage": 0.0,
  "labor_discount_percentage": 0.0,
  "started_at": null,
  "closed_at": null,
  "picked_up_at": null,
  "due_in_at": "2020-05-03T21:34:38Z",
  "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
}

Shops

Get a list of all shops

Endpoint

GET api/v1/tenants/:tenant_id/shops

Request

Route

GET api/v1/tenants/39/shops

Headers

Accept: application/json
X-Api-Partner-Id: 89236958-2043-4f41-98ae-5c9543683c65
X-Api-Secret: _Vas7W0U_71HjnogeIh8sm8kakCnhO4kSPTEWCX7LPk
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/39/shops" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 89236958-2043-4f41-98ae-5c9543683c65" \
	-H "X-Api-Secret: _Vas7W0U_71HjnogeIh8sm8kakCnhO4kSPTEWCX7LPk"

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: 1588282562
ETag: W/"da2a9c962906c3d7220e82647dd28f6e"
X-Request-Id: 712ed68d-fb36-4d8b-824b-87e636159611
X-Runtime: 0.019792
X-Rack-CORS: miss; no-origin
Content-Length: 1241

Body

{
  "results": [
    {
      "id": 57,
      "created_at": "2020-05-01T21:35:02Z",
      "updated_at": "2020-05-01T21:35:02Z",
      "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": 48,
          "created_at": "2020-04-30T21:35:02Z",
          "updated_at": "2020-04-30T21:35:02Z",
          "taggable_type": "Shop",
          "taggable_id": 57,
          "name": "tag_name",
          "value": "tag_value"
        }
      ]
    },
    {
      "id": 56,
      "created_at": "2020-04-30T21:35:01Z",
      "updated_at": "2020-04-30T21:35:01Z",
      "identifier": "Shop 56",
      "name": "Example Company, Inc.",
      "address": "17706 Sauki Ln",
      "phone": "1231231234",
      "time_zone": "Alaska",
      "service_desk_email": "exampleemail56@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/40/shops/59

Headers

Accept: application/json
X-Api-Partner-Id: 31c84325-2d70-410e-b974-bfbd3a7e1edc
X-Api-Secret: eyAQzgMRXLv8NNW4iQRts-_w5aCOkK372fV8IS-CMJU
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/40/shops/59" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 31c84325-2d70-410e-b974-bfbd3a7e1edc" \
	-H "X-Api-Secret: eyAQzgMRXLv8NNW4iQRts-_w5aCOkK372fV8IS-CMJU"

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: 1588282562
ETag: W/"862b3604e23e556020c2668aad0f7741"
X-Request-Id: e101b490-5db7-4b75-95a2-14a2da67495a
X-Runtime: 0.023665
X-Rack-CORS: miss; no-origin
Content-Length: 658

Body

{
  "id": 59,
  "created_at": "2020-05-01T21:35:02Z",
  "updated_at": "2020-05-01T21:35:02Z",
  "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": 49,
      "created_at": "2020-04-30T21:35:02Z",
      "updated_at": "2020-04-30T21:35:02Z",
      "taggable_type": "Shop",
      "taggable_id": 59,
      "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/41/staffs

Headers

Accept: application/json
X-Api-Partner-Id: e289c646-df5d-4c46-bf02-4fd46b271842
X-Api-Secret: _MLWK1wcMhTh-SAtCGFXOTU4dfPjb_Kt5BoxYtTP44I
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/41/staffs" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: e289c646-df5d-4c46-bf02-4fd46b271842" \
	-H "X-Api-Secret: _MLWK1wcMhTh-SAtCGFXOTU4dfPjb_Kt5BoxYtTP44I"

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: 1588282562
ETag: W/"0c7b1f82357a542752a5190ff85a7258"
X-Request-Id: 38eb624f-8e08-49a3-b413-bccd7f4a4af3
X-Runtime: 0.031909
X-Rack-CORS: miss; no-origin
Content-Length: 473

Body

{
  "results": [
    {
      "id": 48,
      "created_at": "2020-04-30T21:35:02Z",
      "updated_at": "2020-04-30T21:35:02Z",
      "first_name": "James",
      "last_name": "Brown",
      "advisor": true,
      "technician": false,
      "active": true,
      "email": "mrdynamite@example.com",
      "integrator_tags": [
        {
          "id": 50,
          "created_at": "2020-04-30T21:35:02Z",
          "updated_at": "2020-04-30T21:35:02Z",
          "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/42/staffs/49

Headers

Accept: application/json
X-Api-Partner-Id: cfde040c-00df-4709-bc46-34da314c292d
X-Api-Secret: HbDG8HlQimiAS3moP2ksbTbmDRi6cOULVKjULbxQIco
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/42/staffs/49" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: cfde040c-00df-4709-bc46-34da314c292d" \
	-H "X-Api-Secret: HbDG8HlQimiAS3moP2ksbTbmDRi6cOULVKjULbxQIco"

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: 1588282562
ETag: W/"b9f6ccdfc94e008e2931ddffdeba5fec"
X-Request-Id: 5321aa98-b0ec-40d9-b38e-1037ce5fb2b2
X-Runtime: 0.026957
X-Rack-CORS: miss; no-origin
Content-Length: 384

Body

{
  "id": 49,
  "created_at": "2020-04-30T21:35:02Z",
  "updated_at": "2020-04-30T21:35:02Z",
  "first_name": "James",
  "last_name": "Brown",
  "advisor": true,
  "technician": false,
  "active": true,
  "email": "mrdynamite@example.com",
  "integrator_tags": [
    {
      "id": 51,
      "created_at": "2020-04-30T21:35:02Z",
      "updated_at": "2020-04-30T21:35:02Z",
      "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/43/statuses

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 5f5ed12b-b558-40ac-be97-438ae56302dc
X-Api-Secret: f1W2pNyMXH80tnFOcbjCmE_AJHea2DtLs1cgyOpANkQ
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/43/statuses" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 5f5ed12b-b558-40ac-be97-438ae56302dc" \
	-H "X-Api-Secret: f1W2pNyMXH80tnFOcbjCmE_AJHea2DtLs1cgyOpANkQ"

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: 1588282563
ETag: W/"0962bc892ae2595b7b3a47607a6f286d"
X-Request-Id: 9ec5d6f6-a4e5-4f8a-9bf2-c452173cc32f
X-Runtime: 0.019510
X-Rack-CORS: miss; no-origin
Content-Length: 371

Body

{
  "results": [
    {
      "id": 6,
      "created_at": "2020-04-30T21:35:03Z",
      "updated_at": "2020-04-30T21:35:03Z",
      "text": "status text",
      "integrator_tags": [
        {
          "id": 52,
          "created_at": "2020-04-30T21:35:03Z",
          "updated_at": "2020-04-30T21:35:03Z",
          "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/44/statuses/7

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 51ac810e-cb96-4629-a3e3-ae3597c16b54
X-Api-Secret: bum9K_Xr3F0X6Ldji7mfDlc_cNs59GiwDq_9_5IyZTI
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/44/statuses/7" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 51ac810e-cb96-4629-a3e3-ae3597c16b54" \
	-H "X-Api-Secret: bum9K_Xr3F0X6Ldji7mfDlc_cNs59GiwDq_9_5IyZTI"

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: 1588282563
ETag: W/"801f369e772e26c8e5438db12ef5603a"
X-Request-Id: b8e6ad12-a018-40e9-981b-00aca3b006a3
X-Runtime: 0.014132
X-Rack-CORS: miss; no-origin
Content-Length: 282

Body

{
  "id": 7,
  "created_at": "2020-04-30T21:35:03Z",
  "updated_at": "2020-04-30T21:35:03Z",
  "text": "status text",
  "integrator_tags": [
    {
      "id": 53,
      "created_at": "2020-04-30T21:35:03Z",
      "updated_at": "2020-04-30T21:35:03Z",
      "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: d603c0e0-d9a9-42ef-8f18-67f0a300276e
X-Api-Secret: lmHkj1IJao9CNUfAeS4SzfFaZVo-bR4xyOU581xjzUA
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: d603c0e0-d9a9-42ef-8f18-67f0a300276e" \
	-H "X-Api-Secret: lmHkj1IJao9CNUfAeS4SzfFaZVo-bR4xyOU581xjzUA"

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: 1588282563
ETag: W/"3b189f064ff3812d0eef3dde268a384e"
X-Request-Id: 423857f5-72d8-40bf-aeff-a1764653bc4e
X-Runtime: 0.011045
X-Rack-CORS: miss; no-origin
Content-Length: 352

Body

{
  "results": [
    {
      "id": 46,
      "created_at": "2020-04-30T21:35:03Z",
      "updated_at": "2020-04-30T21:35:03Z",
      "cname": "atomic46",
      "name": "Example Company, Inc."
    },
    {
      "id": 45,
      "created_at": "2020-04-30T21:35:03Z",
      "updated_at": "2020-04-30T21:35:03Z",
      "cname": "atomic45",
      "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/48

Headers

Accept: application/json
X-Api-Partner-Id: d8e17c70-1102-4933-a609-f820d7de460b
X-Api-Secret: D_wyqT9-5472AyAiG5Xd1RpgE9tsdBPNOeKyJ0IkS24
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/48" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: d8e17c70-1102-4933-a609-f820d7de460b" \
	-H "X-Api-Secret: D_wyqT9-5472AyAiG5Xd1RpgE9tsdBPNOeKyJ0IkS24"

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: 1588282563
ETag: W/"f0fe4d326dd86ef0ad71de5e1d168b8e"
X-Request-Id: f04cac5c-9ab1-4b19-ba8e-36b55356e1ab
X-Runtime: 0.010236
X-Rack-CORS: miss; no-origin
Content-Length: 131

Body

{
  "id": 48,
  "created_at": "2020-04-30T21:35:03Z",
  "updated_at": "2020-04-30T21:35:03Z",
  "cname": "atomic48",
  "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/51/vehicles

Headers

Accept: application/json
X-Api-Partner-Id: 8756bbcb-e883-45eb-922a-265eacdca627
X-Api-Secret: s7yMWn6JAEtjQlNeiOcUJnKoENkfRYoXxvI9PzLlV34
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/51/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: 8756bbcb-e883-45eb-922a-265eacdca627" \
	-H "X-Api-Secret: s7yMWn6JAEtjQlNeiOcUJnKoENkfRYoXxvI9PzLlV34" \
	-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: 1588282564
ETag: W/"7ccedaf5c8f28a452eb847ee282fd92e"
X-Request-Id: 1ec1e70f-7b6e-40c7-af22-c43706914528
X-Runtime: 0.113441
X-Rack-CORS: miss; no-origin
Content-Length: 329

Body

{
  "id": 19,
  "created_at": "2020-04-30T21:35:04Z",
  "updated_at": "2020-04-30T21:35:04Z",
  "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/49/vehicles

Headers

Accept: application/json
X-Api-Partner-Id: 0ea4cbfe-f520-4e5b-ae30-abf97824b706
X-Api-Secret: JYW3BlSbN4VhVsWL2CghW0xPiqNFoLZ4R-IWzAta860
Content-Type: application/json
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/49/vehicles" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 0ea4cbfe-f520-4e5b-ae30-abf97824b706" \
	-H "X-Api-Secret: JYW3BlSbN4VhVsWL2CghW0xPiqNFoLZ4R-IWzAta860" \
	-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: 1588282564
ETag: W/"7d5f9c99bfa54f9f041b3c1d93a66bcb"
X-Request-Id: fa82e0a0-879a-480b-97d3-68ccf3e88981
X-Runtime: 0.024818
X-Rack-CORS: miss; no-origin
Content-Length: 645

Body

{
  "results": [
    {
      "id": 16,
      "created_at": "2020-04-30T21:35:04Z",
      "updated_at": "2020-04-30T21:35:04Z",
      "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": "2020-04-29T21:35:04.102Z",
      "registration_exp_date": "2020-04-29T21:35:04.102Z",
      "customer_ids": [
        50
      ],
      "integrator_tags": [
        {
          "id": 54,
          "created_at": "2020-04-30T21:35:04Z",
          "updated_at": "2020-04-30T21:35:04Z",
          "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/50/vehicles/17

Headers

Accept: application/json
X-Api-Partner-Id: c03c06e2-e7bc-4a23-8bb2-519c6e8f79f4
X-Api-Secret: rxOCAVGa8XIq0XuO2VA8xTiT5UsSMVtN3Yne385ivws
Content-Type: application/json
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com/api/v1/tenants/50/vehicles/17" -X GET \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: c03c06e2-e7bc-4a23-8bb2-519c6e8f79f4" \
	-H "X-Api-Secret: rxOCAVGa8XIq0XuO2VA8xTiT5UsSMVtN3Yne385ivws" \
	-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: 1588282564
ETag: W/"76e9343cfaf861015773652f2ad8ff62"
X-Request-Id: b8596918-0b3e-4076-9cdf-fd0227d22e31
X-Runtime: 0.017861
X-Rack-CORS: miss; no-origin
Content-Length: 556

Body

{
  "id": 17,
  "created_at": "2020-04-30T21:35:04Z",
  "updated_at": "2020-04-30T21:35:04Z",
  "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": "2020-04-29T21:35:04.373Z",
  "registration_exp_date": "2020-04-29T21:35:04.373Z",
  "customer_ids": [
    51
  ],
  "integrator_tags": [
    {
      "id": 55,
      "created_at": "2020-04-30T21:35:04Z",
      "updated_at": "2020-04-30T21:35:04Z",
      "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/52/vehicles/20

Headers

Accept: application/json
X-Api-Partner-Id: 7f5e3f6e-32c5-4397-b568-2e8a930266fa
X-Api-Secret: nPeZetfrYfGJ9sKSTuFJqixPxb7lpEDHcBFIY411TTU
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"
}

cURL

curl "https://api.shop-ware.com/api/v1/tenants/52/vehicles/20" -d '{"plate":"EZRIDR","detail":"Keys in glovebox","fleet_number":"23R","vin":"1FMPU16W14LB56648","year":"2006","make":"Ford","model":"Explorer"}' -X PUT \
	-H "Accept: application/json" \
	-H "X-Api-Partner-Id: 7f5e3f6e-32c5-4397-b568-2e8a930266fa" \
	-H "X-Api-Secret: nPeZetfrYfGJ9sKSTuFJqixPxb7lpEDHcBFIY411TTU" \
	-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: 996
X-RateLimit-Reset: 1588282565
ETag: W/"0142d25e2706e69ecf3b3ca0fe28623e"
X-Request-Id: fdcf6a59-f0eb-4c7d-b79e-b5018a2fab47
X-Runtime: 0.035761
X-Rack-CORS: miss; no-origin
Content-Length: 554

Body

{
  "id": 20,
  "created_at": "2020-04-30T21:35:04Z",
  "updated_at": "2020-04-30T21:35:05Z",
  "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": "2020-04-29T21:35:04.985Z",
  "registration_exp_date": "2020-04-29T21:35:04.985Z",
  "customer_ids": [
    53
  ],
  "integrator_tags": [
    {
      "id": 57,
      "created_at": "2020-04-30T21:35:05Z",
      "updated_at": "2020-04-30T21:35:05Z",
      "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/53/vendors

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 24057476-7fcb-4dce-9dd2-1bf168b0b620
X-Api-Secret: SzDPFMdXzUF_FM1MeNZ_M8YWOTU_j85ohb-uYsfCZcM
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com//api/v1/tenants/53/vendors" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 24057476-7fcb-4dce-9dd2-1bf168b0b620" \
	-H "X-Api-Secret: SzDPFMdXzUF_FM1MeNZ_M8YWOTU_j85ohb-uYsfCZcM"

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: 1588282565
ETag: W/"1232406cef770e32e20e29c548165217"
X-Request-Id: cf0d2a4a-436c-44c8-9dc0-67f5698f2675
X-Runtime: 0.021209
X-Rack-CORS: miss; no-origin
Content-Length: 500

Body

{
  "results": [
    {
      "id": 14,
      "created_at": "2020-04-30T21:35:05Z",
      "updated_at": "2020-04-30T21:35:05Z",
      "name": "Vendor 3",
      "phone": null,
      "account_number": null,
      "info": null,
      "notes": null,
      "website": "vendor14.com",
      "shop_id": 72,
      "active": true,
      "preferred": false,
      "integrator_tags": [
        {
          "id": 58,
          "created_at": "2020-04-30T21:35:05Z",
          "updated_at": "2020-04-30T21:35:05Z",
          "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/54/vendors/15

Headers

Accept: application/json
Content-Type: application/json
X-Api-Partner-Id: 9c5e0a00-2cf8-45cc-b291-2dae7d69a76f
X-Api-Secret: vJ1-Qvjd_N74pXTIe_6rgzhZzB20y_gcFBBRmd8ZiOA
Host: example.org
Cookie: 

cURL

curl -g "https://api.shop-ware.com//api/v1/tenants/54/vendors/15" -X GET \
	-H "Accept: application/json" \
	-H "Content-Type: application/json" \
	-H "X-Api-Partner-Id: 9c5e0a00-2cf8-45cc-b291-2dae7d69a76f" \
	-H "X-Api-Secret: vJ1-Qvjd_N74pXTIe_6rgzhZzB20y_gcFBBRmd8ZiOA"

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: 1588282565
ETag: W/"a153c068b86cb5fc6444098704956fd6"
X-Request-Id: e664e8c2-1599-4ba2-8761-9694c531f1c0
X-Runtime: 0.012434
X-Rack-CORS: miss; no-origin
Content-Length: 411

Body

{
  "id": 15,
  "created_at": "2020-04-30T21:35:05Z",
  "updated_at": "2020-04-30T21:35:05Z",
  "name": "Vendor 4",
  "phone": null,
  "account_number": null,
  "info": null,
  "notes": null,
  "website": "vendor15.com",
  "shop_id": 73,
  "active": true,
  "preferred": false,
  "integrator_tags": [
    {
      "id": 59,
      "created_at": "2020-04-30T21:35:05Z",
      "updated_at": "2020-04-30T21:35:05Z",
      "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: ed8bd641-fcda-450e-8da7-52786c4d8cd6
X-Api-Secret: s5WVBYAMfLMcDApPcEBYjVRNcUv6EfFfI-9ssBBedVk
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: ed8bd641-fcda-450e-8da7-52786c4d8cd6" \
	-H "X-Api-Secret: s5WVBYAMfLMcDApPcEBYjVRNcUv6EfFfI-9ssBBedVk"

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: 1588282566
ETag: W/"8f1edfb9cce79a3828fb67ce0ed64bd5"
X-Request-Id: c5d3d606-ce89-4923-a101-f892aeca60be
X-Runtime: 0.036403
X-Rack-CORS: miss; no-origin
Content-Length: 126

Body

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

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: 43279c47-6bc7-4592-8521-fc64f5f50bb1
X-Api-Secret: 0wHPH7GheW7vcChMN2y_7ggk_hGKiewub0kFZRt2044
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: 43279c47-6bc7-4592-8521-fc64f5f50bb1" \
	-H "X-Api-Secret: 0wHPH7GheW7vcChMN2y_7ggk_hGKiewub0kFZRt2044"

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: 1588282566
ETag: W/"44136fa355b3678a1146ad16f7e8649e"
X-Request-Id: 438e077a-c246-46e3-ac5c-52f3f1a8109c
X-Runtime: 0.013589
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: 3f28ef68-c206-4763-bee5-fe109b779546
X-Api-Secret: jLr-1j1P2NwZutOlcqG7tyX46DJEsslbS354Y5YDI7A
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: 3f28ef68-c206-4763-bee5-fe109b779546" \
	-H "X-Api-Secret: jLr-1j1P2NwZutOlcqG7tyX46DJEsslbS354Y5YDI7A"

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: 1588282565
ETag: W/"559c38dc8c9e5fd6528cfc4ac37c7a8d"
X-Request-Id: e97c9aa4-7e9c-42d0-937c-cf2e6ec762e7
X-Runtime: 0.010907
X-Rack-CORS: miss; no-origin
Content-Length: 126

Body

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

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: 45864b88-7823-410f-9c88-55695718566d
X-Api-Secret: f-H8s66HECQDEyH_ue4Xm0DV_PdNH3AtVpvnTiKoryc
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: 45864b88-7823-410f-9c88-55695718566d" \
	-H "X-Api-Secret: f-H8s66HECQDEyH_ue4Xm0DV_PdNH3AtVpvnTiKoryc"

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: 1588282565
ETag: W/"6702b2aa26c24f37657c7a1e52666208"
X-Request-Id: b6e0a7a1-bcaf-4cd1-bb22-8bf9705a28aa
X-Runtime: 0.010777
X-Rack-CORS: miss; no-origin
Content-Length: 124

Body

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

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: 32fce3bd-3144-4473-bc48-c86337f61a97
X-Api-Secret: -24RAMk3N3X0We-fuTtOtTU6m3XjCTKNRY6VA6BEAPE
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: 32fce3bd-3144-4473-bc48-c86337f61a97" \
	-H "X-Api-Secret: -24RAMk3N3X0We-fuTtOtTU6m3XjCTKNRY6VA6BEAPE"

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: 1588282566
ETag: W/"699d7d3d9524641479447f9fb45af83d"
X-Request-Id: cbb1cad2-92ad-4b88-849f-6ee8dd848ebf
X-Runtime: 0.036600
X-Rack-CORS: miss; no-origin
Content-Length: 92

Body

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