Quoter API Reference v0.1.0
Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.
Welcome to Quoter's API Documentation. Please note that our API is actively being developed. As such, there is currently limited support for Quoter's resource types and while unlikely, you might expect some breaking changes (we will avoid them at all costs of course).
The API currently supports managing Items and associated resource types such as:
- Categories
- Contacts
- Item Group Item Assignments
- Item Groups
- Item Option Values
- Item Options
- Item Tiers
- Line Items
- Manufacturers
- Quote Templates
- Quotes
- Suppliers
- Supplier Items
If you are interested in API functionality not yet available, please let us know as it will help us prioritize our API roadmap.
The Quoter API follows the standard RESTful JSON API design. For each resource type, we support the following endpoints:
- List
GET /{resource} - Create
POST /{resource} - Delete
DELETE /{resource}/{id} - Fetch
GET /{resource}/{id} - Update
PATCH /{resource}/{id}
Base URLs:
Authentication
The Quoter API uses OAuth 2.0 Client Credentials Flow for authentication:
- Generate your OAuth Client ID and Secret for your Quoter account in Account > API Keys. You must be an Account Owner to have access.
- Send a request to
POST /auth/oauth/authorizewith the request body containing yourclient_id,secret, andgrant_type: client_credentialsto obtain anaccess_tokenand arefresh_token. See the Authorization documentation for a more detailed example. - To perform an authenticated request, send the
access_tokenvalue as a bearer token via the request header: "Authorization: Bearer{access_token}". - The
access_tokenis valid for 1 hour. To obtain a new access and refresh token pair, send a request toPOST /auth/refreshwith the request body containing yourrefresh_token. Therefresh_tokenis valid for 24 hours. See the Authorization documentation for a more detailed example.
Errors
In case of errors (4XX or 5XX HTTP status codes), the API returns an error response body with a key , title , and detail indicating what went wrong.
For example, an authorization error will return a status of 401 with the response:
{
"errors": [
{
"key": "ERR_AUTHORIZATION_TOKEN_INVALID",
"title": "Unauthorized",
"detail": "Authorization token is invalid"
}
]
}
HTTP Response Codes
The Quoter API uses conventional HTTP response codes to indicate whether an API request succeeded or failed.
| HTTP Code | Meaning |
|---|---|
| 200 | Success -- Your request was successfully processed; the result is included in the response body. For POST requests. |
| 204 | No Content -- You request was successfully processed; call a GET to retrieve the updated results. For PATCH/DELETE requests. |
| 400 | Bad Request -- Your request is invalid. |
| 401 | Unauthorized -- Your API credentials are invalid. |
| 403 | Forbidden -- You do not have permission to access the requested resource. |
| 404 | Not Found -- The specified resource could not be found. |
| 422 | Unprocessable Entity -- The request format is incorrect. See error content for details. |
| 429 | Too Many Requests -- You've reached your rate limit. Try again later. |
| 500 | Internal Server Error -- We had a problem with our server. Try again later or contact support. |
Pagination
List endpoints support pagination via the page and limit query string parameters.
For example, if you want to request the first 10 records, you might perform the request GET https://api.quoter.com/v1/items?page=1&limit=10,
then to request the next 10 records, GET https://api.quoter.com/v1/items?page=2&limit=10.
By default, list endpoints support a limit value of up to 100 records. Some endpoints may support different limit values for performance, which will be documented separately.
List endpoint response bodies will always contain a data member, which contains an array of the requested resources, and a has_more member, which is a boolean value indicating whether there is more data in subsequent pages.
Partial Updates (PATCH)
The Quoter API's resource update (PATCH) endpoints follow the standard HTTP PATCH conventions, meaning that partial/sparse updates may be performed on a record. In other words, for PATCH endpoints, you only need to send the request fields that you wish to update, instead of the entire resource.
If a field is omitted from the request body, or a null value is sent when updating a resource, the resource's existing value will be retained.
To clear/remove a field from a resource, send the empty value for the field's corresponding type:
| Field Type | Empty Value |
|---|---|
| array | [] |
| boolean | false |
| number | 0 |
| string | "" |
Rate Limiting
To ensure performance stability of the API for all users, Quoter enforces a rate limit of 5 requests per second.
Requests that exceed this limit will receive a 429: Too many requests error response.
Response Fields
Nearly all API endpoints support a fields query string parameter, which allows you to specify which return field(s) you would like to receive in the response body. We recommend only requesting return fields that you require for optimal performance.
For example, if you want to retrieve only the ID and name of an Item, you could perform the request GET https://api.quoter.com/v1/items?fields=id,name.
Authorization
Authorize an Access and Refresh Token.
Code samples
const inputBody = '{
"client_id": "cid_asdf1234",
"client_secret": "topsecret",
"grant_type": "client_credentials"
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json'
};
fetch('https://api.quoter.com/v1/auth/oauth/authorize',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json'
}
result = RestClient.post 'https://api.quoter.com/v1/auth/oauth/authorize',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
r = requests.post('https://api.quoter.com/v1/auth/oauth/authorize', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.quoter.com/v1/auth/oauth/authorize", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X POST https://api.quoter.com/v1/auth/oauth/authorize \
-H 'Content-Type: application/json' \
-H 'Accept: application/json'
POST /auth/oauth/authorize
Body parameter
{
"client_id": "cid_asdf1234",
"client_secret": "topsecret",
"grant_type": "client_credentials"
}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| body | body | AuthorizationRequest | true | none |
Example responses
200 Response
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkphbmUgRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.cMErWtEf7DxCXJl8C9q0L7ttkm-Ex54UWHsOCMGbtUc"
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Authorization successful. | AuthorizationResponse |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Refresh Access and Refresh Tokens.
Code samples
const headers = {
'Accept':'application/json',
'Authorization':'Bearer: refresh_token'
};
fetch('https://api.quoter.com/v1/auth/refresh',
{
method: 'POST',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer: refresh_token'
}
result = RestClient.post 'https://api.quoter.com/v1/auth/refresh',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer: refresh_token'
}
r = requests.post('https://api.quoter.com/v1/auth/refresh', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: refresh_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.quoter.com/v1/auth/refresh", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X POST https://api.quoter.com/v1/auth/refresh \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: refresh_token'
POST /auth/refresh
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: refresh_token |
Example responses
200 Response
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkphbmUgRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.cMErWtEf7DxCXJl8C9q0L7ttkm-Ex54UWHsOCMGbtUc"
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Authorization successful. | AuthorizationResponse |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
Categories
List Categories
Code samples
const headers = {
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/categories',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.get 'https://api.quoter.com/v1/categories',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.get('https://api.quoter.com/v1/categories', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.quoter.com/v1/categories", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X GET https://api.quoter.com/v1/categories \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
GET /categories
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| fields | query | string | false | One or more response fields, separated by commas. |
| parent_category_id | query | string | false | Filter records by those associated with parent_category_id. |
| sort_by | query | string | false | One or more sort fields, separated by commas. |
| Authorization | header | string | true | Bearer: access_token |
| created_at[gt] | query | date-time | false | Filter records by those whose created_at timestamp is greater than. |
| created_at[lt] | query | date-time | false | Filter records by those whose created_at timestamp is less than. |
| modified_at[gt] | query | date-time | false | Filter records by those whose modified_at timestamp is greater than. |
| modified_at[lt] | query | date-time | false | Filter records by those whose modified_at timestamp is less than. |
| name | query | string | false | Filter records by those whose name value is equal to. |
| name[cont] | query | string | false | Filter records by those whose name value contains. |
| limit | query | integer | false | Limit the number of records to return. Limit ranges from 1 to 100, and defaults to 100. |
| page | query | integer | false | Pagination record offset. Page starts at 1. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | created_at |
| fields | id |
| fields | modified_at |
| fields | name |
| fields | parent_category_id |
| fields | parent_category |
| sort_by | -created_at |
| sort_by | -id |
| sort_by | -modified_at |
| sort_by | -name |
| sort_by | created_at |
| sort_by | id |
| sort_by | modified_at |
| sort_by | name |
Example responses
200 Response
{
"data": [
{
"created_at": "2019-08-24T14:15:22Z",
"id": "cat_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "SSDs",
"parent_category": "Storage Devices",
"parent_category_id": "cat_1jAEZdbtkbLFBAU1Tt0ouKpiBUe"
}
],
"has_more": false,
"total_count": 1
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Categories found. | CategoryList |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Create Category
Code samples
const inputBody = '{
"name": "SSDs",
"parent_category": "Storage Devices",
"parent_category_id": "cat_1jAEZdbtkbLFBAU1Tt0ouKpiBUe"
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/categories',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.post 'https://api.quoter.com/v1/categories',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.post('https://api.quoter.com/v1/categories', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.quoter.com/v1/categories", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X POST https://api.quoter.com/v1/categories \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
POST /categories
Body parameter
{
"name": "SSDs",
"parent_category": "Storage Devices",
"parent_category_id": "cat_1jAEZdbtkbLFBAU1Tt0ouKpiBUe"
}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| fields | query | string | false | One or more response fields, separated by commas. |
| Authorization | header | string | true | Bearer: access_token |
| body | body | CategoryCreateRequest | true | Request body to create a Category. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | created_at |
| fields | id |
| fields | modified_at |
| fields | name |
| fields | parent_category_id |
| fields | parent_category |
Example responses
200 Response
{
"created_at": "2019-08-24T14:15:22Z",
"id": "cat_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "SSDs",
"parent_category": "Storage Devices",
"parent_category_id": "cat_1jAEZdbtkbLFBAU1Tt0ouKpiBUe"
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Category created. | Category |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Delete Category
Code samples
const headers = {
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/categories/{ID}',
{
method: 'DELETE',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.delete 'https://api.quoter.com/v1/categories/{ID}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.delete('https://api.quoter.com/v1/categories/{ID}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api.quoter.com/v1/categories/{ID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X DELETE https://api.quoter.com/v1/categories/{ID} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
DELETE /categories/{ID}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
Example responses
401 Response
{
"errors": [
{
"detail": "Pagination page requested too high.",
"status": 400,
"title": "Bad Request"
}
]
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 204 | No Content | Record deleted. | None |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Fetch Category
Code samples
const headers = {
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/categories/{ID}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.get 'https://api.quoter.com/v1/categories/{ID}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.get('https://api.quoter.com/v1/categories/{ID}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.quoter.com/v1/categories/{ID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X GET https://api.quoter.com/v1/categories/{ID} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
GET /categories/{ID}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| fields | query | string | false | One or more response fields, separated by commas. |
| Authorization | header | string | true | Bearer: access_token |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | created_at |
| fields | id |
| fields | modified_at |
| fields | name |
| fields | parent_category_id |
| fields | parent_category |
Example responses
200 Response
{
"created_at": "2019-08-24T14:15:22Z",
"id": "cat_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "SSDs",
"parent_category": "Storage Devices",
"parent_category_id": "cat_1jAEZdbtkbLFBAU1Tt0ouKpiBUe"
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Category found. | Category |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Update Category
Code samples
const inputBody = '{
"name": "SSDs",
"parent_category": "Storage Devices",
"parent_category_id": "cat_1jAEZdbtkbLFBAU1Tt0ouKpiBUe"
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/categories/{ID}',
{
method: 'PATCH',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.patch 'https://api.quoter.com/v1/categories/{ID}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.patch('https://api.quoter.com/v1/categories/{ID}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api.quoter.com/v1/categories/{ID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X PATCH https://api.quoter.com/v1/categories/{ID} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
PATCH /categories/{ID}
Body parameter
{
"name": "SSDs",
"parent_category": "Storage Devices",
"parent_category_id": "cat_1jAEZdbtkbLFBAU1Tt0ouKpiBUe"
}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| fields | query | string | false | One or more response fields, separated by commas. |
| Authorization | header | string | true | Bearer: access_token |
| body | body | CategoryUpdateRequest | true | Request body to update a Category. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | created_at |
| fields | id |
| fields | modified_at |
| fields | name |
| fields | parent_category_id |
| fields | parent_category |
Example responses
200 Response
{
"created_at": "2019-08-24T14:15:22Z",
"id": "cat_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "SSDs",
"parent_category": "Storage Devices",
"parent_category_id": "cat_1jAEZdbtkbLFBAU1Tt0ouKpiBUe"
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Category updated. | Category |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Contacts
List Contacts
Code samples
const headers = {
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/contacts',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.get 'https://api.quoter.com/v1/contacts',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.get('https://api.quoter.com/v1/contacts', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.quoter.com/v1/contacts", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X GET https://api.quoter.com/v1/contacts \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
GET /contacts
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| fields | query | string | false | One or more response fields, separated by commas. |
| address | query | string | false | Filter records by those associated with billing_address. |
| address[cont] | query | string | false | Filter records by those whose billing_address contains the value. |
| city | query | string | false | Filter records by those associated with billing_city. |
| city[cont] | query | string | false | Filter records by those whose billing_city contains the value. |
| country_iso | query | string | false | Filter records by those associated with billing_country_iso. |
| created_at[gt] | query | date-time | false | Filter records by those whose created_at timestamp is greater than. |
| created_at[lt] | query | date-time | false | Filter records by those whose created_at timestamp is less than. |
| query | string | false | Filter records by those associated with email. | |
| email[cont] | query | string | false | Filter records by those whose email contains the value. |
| first_name | query | string | false | Filter records by those associated with first_name. |
| first_name[cont] | query | string | false | Filter records by those whose first_name contains the value. |
| last_name | query | string | false | Filter records by those associated with last_name. |
| last_name[cont] | query | string | false | Filter records by those whose last_name contains the value. |
| mobile_phone | query | string | false | Filter records by those associated with mobile_phone. |
| mobile_phone[cont] | query | string | false | Filter records by those whose mobile_phone contains the value. |
| postal_code | query | string | false | Filter records by those associated by billing_postal_code. |
| postal_code[cont] | query | string | false | Filter records by those whose billing_postal_code contains the value. |
| region_iso | query | string | false | Filter records by those associated with billing_region_iso. |
| modified_at[gt] | query | date-time | false | Filter records by those whose modified_at timestamp is greater than. |
| modified_at[lt] | query | date-time | false | Filter records by those whose modified_at timestamp is less than. |
| organization | query | string | false | Filter records by those associated with organization. |
| organization[cont] | query | string | false | Filter records by those whose organization contains the value. |
| limit | query | integer | false | Limit the number of records to return. Limit ranges from 1 to 100, and defaults to 100. |
| page | query | integer | false | Pagination record offset. Page starts at 1. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | billing_address |
| fields | billing_address2 |
| fields | billing_city |
| fields | billing_country_iso |
| fields | billing_postal_code |
| fields | billing_region_iso |
| fields | created_at |
| fields | |
| fields | first_name |
| fields | id |
| fields | last_name |
| fields | mobile_phone |
| fields | modified_at |
| fields | organization |
| fields | shipping_address |
| fields | shipping_address2 |
| fields | shipping_city |
| fields | shipping_country_iso |
| fields | shipping_email |
| fields | shipping_first_name |
| fields | shipping_label |
| fields | shipping_last_name |
| fields | shipping_organization |
| fields | shipping_phone |
| fields | shipping_postal_code |
| fields | shipping_region_iso |
| fields | title |
| fields | website |
| fields | work_phone |
Example responses
200 Response
{
"data": [
{
"billing_address": "1021 W Hastings St",
"billing_address2": "#3200",
"billing_city": "Vancouver",
"billing_country_iso": "CA",
"billing_postal_code": "V5P-523",
"billing_region_iso": "BC",
"created_at": "string",
"email": "contact@quoter.com",
"first_name": "John",
"id": "cont_OcThl0ega2lTV4afll6qFrMDMBYyu",
"last_name": "Doe",
"mobile_phone": "(604) 539-5319",
"modified_at": "date-time",
"organization": "Quoter",
"shipping_address": "1021 W Hastings St",
"shipping_address2": "#3200",
"shipping_city": "Vancouver",
"shipping_country_iso": "CA",
"shipping_email": "contact@quoter.com",
"shipping_first_name": "John",
"shipping_label": "label",
"shipping_last_name": "C/O John Doe",
"shipping_organization": "Quoter",
"shipping_phone": "(604) 539-5319",
"shipping_postal_code": "V5P-523",
"shipping_region_iso": "BC",
"title": "Mr.",
"website": "quoter.com",
"work_phone": "(604) 539-5319"
}
],
"has_more": false,
"total_count": 1
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Contacts found. | ContactList |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Create Contact
Code samples
const inputBody = '{
"billing_address": "1021 W Hastings St",
"billing_address2": "#3200",
"billing_city": "Vancouver",
"billing_country_iso": "CA",
"billing_postal_code": "V5P-523",
"billing_region_iso": "BC",
"email": "contact@quoter.com",
"first_name": "John",
"last_name": "Doe",
"mobile_phone": "(604) 539-5319",
"organization": "Quoter",
"shipping_address": "1021 W Hastings St",
"shipping_address2": "#3200",
"shipping_city": "Vancouver",
"shipping_country_iso": "CA",
"shipping_email": "contact@quoter.com",
"shipping_first_name": "John",
"shipping_label": "label",
"shipping_last_name": "C/O John Doe",
"shipping_organization": "Quoter",
"shipping_phone": "(604) 539-5319",
"shipping_postal_code": "V5P-523",
"shipping_region_iso": "BC",
"title": "Mr.",
"website": "quoter.com",
"work_phone": "(604) 539-5319"
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/contacts',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.post 'https://api.quoter.com/v1/contacts',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.post('https://api.quoter.com/v1/contacts', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.quoter.com/v1/contacts", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X POST https://api.quoter.com/v1/contacts \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
POST /contacts
Body parameter
{
"billing_address": "1021 W Hastings St",
"billing_address2": "#3200",
"billing_city": "Vancouver",
"billing_country_iso": "CA",
"billing_postal_code": "V5P-523",
"billing_region_iso": "BC",
"email": "contact@quoter.com",
"first_name": "John",
"last_name": "Doe",
"mobile_phone": "(604) 539-5319",
"organization": "Quoter",
"shipping_address": "1021 W Hastings St",
"shipping_address2": "#3200",
"shipping_city": "Vancouver",
"shipping_country_iso": "CA",
"shipping_email": "contact@quoter.com",
"shipping_first_name": "John",
"shipping_label": "label",
"shipping_last_name": "C/O John Doe",
"shipping_organization": "Quoter",
"shipping_phone": "(604) 539-5319",
"shipping_postal_code": "V5P-523",
"shipping_region_iso": "BC",
"title": "Mr.",
"website": "quoter.com",
"work_phone": "(604) 539-5319"
}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| fields | query | string | false | One or more response fields, separated by commas. |
| Authorization | header | string | true | Bearer: access_token |
| body | body | ContactCreateRequest | true | Request body to create a Contact. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | billing_address |
| fields | billing_address2 |
| fields | billing_city |
| fields | billing_country_iso |
| fields | billing_postal_code |
| fields | billing_region_iso |
| fields | created_at |
| fields | |
| fields | first_name |
| fields | id |
| fields | last_name |
| fields | mobile_phone |
| fields | modified_at |
| fields | organization |
| fields | shipping_address |
| fields | shipping_address2 |
| fields | shipping_city |
| fields | shipping_country_iso |
| fields | shipping_email |
| fields | shipping_first_name |
| fields | shipping_label |
| fields | shipping_last_name |
| fields | shipping_organization |
| fields | shipping_phone |
| fields | shipping_postal_code |
| fields | shipping_region_iso |
| fields | title |
| fields | website |
| fields | work_phone |
Example responses
200 Response
{
"billing_address": "1021 W Hastings St",
"billing_address2": "#3200",
"billing_city": "Vancouver",
"billing_country_iso": "CA",
"billing_postal_code": "V5P-523",
"billing_region_iso": "BC",
"created_at": "string",
"email": "contact@quoter.com",
"first_name": "John",
"id": "cont_OcThl0ega2lTV4afll6qFrMDMBYyu",
"last_name": "Doe",
"mobile_phone": "(604) 539-5319",
"modified_at": "date-time",
"organization": "Quoter",
"shipping_address": "1021 W Hastings St",
"shipping_address2": "#3200",
"shipping_city": "Vancouver",
"shipping_country_iso": "CA",
"shipping_email": "contact@quoter.com",
"shipping_first_name": "John",
"shipping_label": "label",
"shipping_last_name": "C/O John Doe",
"shipping_organization": "Quoter",
"shipping_phone": "(604) 539-5319",
"shipping_postal_code": "V5P-523",
"shipping_region_iso": "BC",
"title": "Mr.",
"website": "quoter.com",
"work_phone": "(604) 539-5319"
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Contact created. | Contact |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Fetch Contact
Code samples
const headers = {
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/contacts/{ID}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.get 'https://api.quoter.com/v1/contacts/{ID}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.get('https://api.quoter.com/v1/contacts/{ID}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.quoter.com/v1/contacts/{ID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X GET https://api.quoter.com/v1/contacts/{ID} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
GET /contacts/{ID}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| fields | query | string | false | One or more response fields, separated by commas. |
| Authorization | header | string | true | Bearer: access_token |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | billing_address |
| fields | billing_address2 |
| fields | billing_city |
| fields | billing_country_iso |
| fields | billing_postal_code |
| fields | billing_region_iso |
| fields | created_at |
| fields | |
| fields | first_name |
| fields | id |
| fields | last_name |
| fields | mobile_phone |
| fields | modified_at |
| fields | organization |
| fields | shipping_address |
| fields | shipping_address2 |
| fields | shipping_city |
| fields | shipping_country_iso |
| fields | shipping_email |
| fields | shipping_first_name |
| fields | shipping_label |
| fields | shipping_last_name |
| fields | shipping_organization |
| fields | shipping_phone |
| fields | shipping_postal_code |
| fields | shipping_region_iso |
| fields | title |
| fields | website |
| fields | work_phone |
Example responses
200 Response
{
"billing_address": "1021 W Hastings St",
"billing_address2": "#3200",
"billing_city": "Vancouver",
"billing_country_iso": "CA",
"billing_postal_code": "V5P-523",
"billing_region_iso": "BC",
"created_at": "string",
"email": "contact@quoter.com",
"first_name": "John",
"id": "cont_OcThl0ega2lTV4afll6qFrMDMBYyu",
"last_name": "Doe",
"mobile_phone": "(604) 539-5319",
"modified_at": "date-time",
"organization": "Quoter",
"shipping_address": "1021 W Hastings St",
"shipping_address2": "#3200",
"shipping_city": "Vancouver",
"shipping_country_iso": "CA",
"shipping_email": "contact@quoter.com",
"shipping_first_name": "John",
"shipping_label": "label",
"shipping_last_name": "C/O John Doe",
"shipping_organization": "Quoter",
"shipping_phone": "(604) 539-5319",
"shipping_postal_code": "V5P-523",
"shipping_region_iso": "BC",
"title": "Mr.",
"website": "quoter.com",
"work_phone": "(604) 539-5319"
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Contact found. | Contact |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Update Contact
Code samples
const inputBody = '{
"billing_address": "1021 W Hastings St",
"billing_address2": "#3200",
"billing_city": "Vancouver",
"billing_country_iso": "CA",
"billing_postal_code": "V5P-523",
"billing_region_iso": "BC",
"email": "contact@quoter.com",
"first_name": "John",
"last_name": "Doe",
"mobile_phone": "(604) 539-5319",
"organization": "Quoter",
"shipping_address": "1021 W Hastings St",
"shipping_address2": "#3200",
"shipping_city": "Vancouver",
"shipping_country_iso": "CA",
"shipping_email": "contact@quoter.com",
"shipping_first_name": "John",
"shipping_label": "label",
"shipping_last_name": "C/O John Doe",
"shipping_organization": "Quoter",
"shipping_phone": "(604) 539-5319",
"shipping_postal_code": "V5P-523",
"shipping_region_iso": "BC",
"title": "Mr.",
"website": "quoter.com",
"work_phone": "(604) 539-5319"
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/contacts/{ID}',
{
method: 'PATCH',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.patch 'https://api.quoter.com/v1/contacts/{ID}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.patch('https://api.quoter.com/v1/contacts/{ID}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api.quoter.com/v1/contacts/{ID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X PATCH https://api.quoter.com/v1/contacts/{ID} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
PATCH /contacts/{ID}
Body parameter
{
"billing_address": "1021 W Hastings St",
"billing_address2": "#3200",
"billing_city": "Vancouver",
"billing_country_iso": "CA",
"billing_postal_code": "V5P-523",
"billing_region_iso": "BC",
"email": "contact@quoter.com",
"first_name": "John",
"last_name": "Doe",
"mobile_phone": "(604) 539-5319",
"organization": "Quoter",
"shipping_address": "1021 W Hastings St",
"shipping_address2": "#3200",
"shipping_city": "Vancouver",
"shipping_country_iso": "CA",
"shipping_email": "contact@quoter.com",
"shipping_first_name": "John",
"shipping_label": "label",
"shipping_last_name": "C/O John Doe",
"shipping_organization": "Quoter",
"shipping_phone": "(604) 539-5319",
"shipping_postal_code": "V5P-523",
"shipping_region_iso": "BC",
"title": "Mr.",
"website": "quoter.com",
"work_phone": "(604) 539-5319"
}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| fields | query | string | false | One or more response fields, separated by commas. |
| body | body | ContactUpdateRequest | true | Request body to update a Contact. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | billing_address |
| fields | billing_address2 |
| fields | billing_city |
| fields | billing_country_iso |
| fields | billing_postal_code |
| fields | billing_region_iso |
| fields | created_at |
| fields | |
| fields | first_name |
| fields | id |
| fields | last_name |
| fields | mobile_phone |
| fields | modified_at |
| fields | organization |
| fields | shipping_address |
| fields | shipping_address2 |
| fields | shipping_city |
| fields | shipping_country_iso |
| fields | shipping_email |
| fields | shipping_first_name |
| fields | shipping_label |
| fields | shipping_last_name |
| fields | shipping_organization |
| fields | shipping_phone |
| fields | shipping_postal_code |
| fields | shipping_region_iso |
| fields | title |
| fields | website |
| fields | work_phone |
Example responses
200 Response
{
"billing_address": "1021 W Hastings St",
"billing_address2": "#3200",
"billing_city": "Vancouver",
"billing_country_iso": "CA",
"billing_postal_code": "V5P-523",
"billing_region_iso": "BC",
"created_at": "string",
"email": "contact@quoter.com",
"first_name": "John",
"id": "cont_OcThl0ega2lTV4afll6qFrMDMBYyu",
"last_name": "Doe",
"mobile_phone": "(604) 539-5319",
"modified_at": "date-time",
"organization": "Quoter",
"shipping_address": "1021 W Hastings St",
"shipping_address2": "#3200",
"shipping_city": "Vancouver",
"shipping_country_iso": "CA",
"shipping_email": "contact@quoter.com",
"shipping_first_name": "John",
"shipping_label": "label",
"shipping_last_name": "C/O John Doe",
"shipping_organization": "Quoter",
"shipping_phone": "(604) 539-5319",
"shipping_postal_code": "V5P-523",
"shipping_region_iso": "BC",
"title": "Mr.",
"website": "quoter.com",
"work_phone": "(604) 539-5319"
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Contact found. | Contact |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Data Feed Suppliers
List Supplier Items
Code samples
const headers = {
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/datafeeds/supplier_items?mpns=string',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.get 'https://api.quoter.com/v1/datafeeds/supplier_items',
params: {
'mpns' => 'array[string]'
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.get('https://api.quoter.com/v1/datafeeds/supplier_items', params={
'mpns': [
"string"
]
}, headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.quoter.com/v1/datafeeds/supplier_items", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X GET https://api.quoter.com/v1/datafeeds/supplier_items?mpns=string \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
GET /datafeeds/supplier_items
Retrieves supplier item data for specified MPNs from suppliers configured through SupplierSync. Results exclude native distributor integrations and are limited to SupplierSync sources. Note that other supplier-related endpoints (e.g., ListSuppliers, CreateSupplier) interact with a separate supplier object and do not affect supplier items.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| mpns | query | array[string] | true | Query records by MPNs. |
| limit | query | integer | false | Limit the number of records to return. Limit ranges from 1 to 100, and defaults to 100. |
| page | query | integer | false | Pagination record offset. Page starts at 1. |
Example responses
200 Response
{
"data": [
{
"category": "Networking",
"id": "sitm_2tdpIVSQAR8jy5nILOG9QBJYBdF",
"mpn": "AW30004",
"name": "Example Name",
"price_amount_decimal": "1202",
"semantic_item_id": "smitm_2tUylOc8T55BoUDtwLMbTY4Sj1x",
"sku": "UP16C236ZZNEAA",
"supplier_default_taxable": true,
"supplier_id": "supp_2tUykybikauznOTjgNzGPq0KFkz",
"supplier_name": "Example Name",
"taxable": true,
"warehouses": [],
"weight_decimal": "1000"
}
],
"has_more": false,
"total_count": 1
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Supplier Items found. | DatafeedsSupplierItemList |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
List Suppliers
Code samples
const headers = {
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/datafeeds/suppliers',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.get 'https://api.quoter.com/v1/datafeeds/suppliers',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.get('https://api.quoter.com/v1/datafeeds/suppliers', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.quoter.com/v1/datafeeds/suppliers", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X GET https://api.quoter.com/v1/datafeeds/suppliers \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
GET /datafeeds/suppliers
Retrieves a list of suppliers configured through SupplierSync.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| sort_by | query | string | false | One or more sort fields, separated by commas. |
| limit | query | integer | false | Limit the number of records to return. Limit ranges from 1 to 100, and defaults to 100. |
| page | query | integer | false | Pagination record offset. Page starts at 1. |
Enumerated Values
| Parameter | Value |
|---|---|
| sort_by | -created_at |
| sort_by | -id |
| sort_by | -modified_at |
| sort_by | -name |
| sort_by | created_at |
| sort_by | id |
| sort_by | modified_at |
| sort_by | name |
Example responses
200 Response
{
"data": [
{
"created_at": "2019-08-24T14:15:22Z",
"default_taxable": true,
"field_mapping": {
"category_name": "csvheader4",
"manufacturer": "csvheader3",
"mpn": "csvheader1",
"name": "csvheader2",
"price": "csvheader6",
"supplier_sku": "csvheader5",
"taxable": "csvheader8",
"warehouses": [
{
"name": "wh1",
"quantity": "wh1_qty"
}
],
"weight": "csvheader7"
},
"id": "supp_2uBmQcMgHinlJgyv4or3dCKwWIb",
"modified_at": "2019-08-24T14:15:22Z",
"name": "Example Supplier",
"url": "https://example.com"
}
],
"has_more": false,
"total_count": 1
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Suppliers found. | DatafeedsSupplierList |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Item Group Item Assignments
List Item Group Item Assignments
Code samples
const headers = {
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/item_group_item_assignments',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.get 'https://api.quoter.com/v1/item_group_item_assignments',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.get('https://api.quoter.com/v1/item_group_item_assignments', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.quoter.com/v1/item_group_item_assignments", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X GET https://api.quoter.com/v1/item_group_item_assignments \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
GET /item_group_item_assignments
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| item_group_id | query | string | false | Filter records by those associated with item_group_id. |
| item_id | query | string | false | Filter records by those associated with item_id. |
| fields | query | string | false | One or more response fields, separated by commas. |
| sort_by | query | string | false | One or more sort fields, separated by commas. |
| created_at[gt] | query | date-time | false | Filter records by those whose created_at timestamp is greater than. |
| created_at[lt] | query | date-time | false | Filter records by those whose created_at timestamp is less than. |
| modified_at[gt] | query | date-time | false | Filter records by those whose modified_at timestamp is greater than. |
| modified_at[lt] | query | date-time | false | Filter records by those whose modified_at timestamp is less than. |
| limit | query | integer | false | Limit the number of records to return. Limit ranges from 1 to 100, and defaults to 100. |
| page | query | integer | false | Pagination record offset. Page starts at 1. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | created_at |
| fields | id |
| fields | item_group_id |
| fields | item_id |
| fields | modified_at |
| sort_by | -created_at |
| sort_by | -modified_at |
| sort_by | -id |
| sort_by | created_at |
| sort_by | modified_at |
| sort_by | id |
Example responses
200 Response
{
"data": [
{
"created_at": "2019-08-24T14:15:22Z",
"id": "igia_1lylwamEQiFCXsDnDl3M4xQsJiH",
"item_group_id": "igrp_1lqyMI1VF074qctA1lpvhFK3PuY",
"item_id": "item_OcThl0eqYyTVQzll6qFrMDMBYyu",
"modified_at": "2019-08-24T14:15:22Z"
}
],
"has_more": false,
"total_count": 1
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Item Group Item Assignments found. | ItemGroupItemAssignmentList |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Create Item Group Item Assignment
Code samples
const inputBody = '{
"item_group_id": "igrp_1lqyMI1VF074qctA1lpvhFK3PuY",
"item_id": "item_OcThl0eqYyTVQzll6qFrMDMBYyu"
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/item_group_item_assignments',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.post 'https://api.quoter.com/v1/item_group_item_assignments',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.post('https://api.quoter.com/v1/item_group_item_assignments', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.quoter.com/v1/item_group_item_assignments", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X POST https://api.quoter.com/v1/item_group_item_assignments \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
POST /item_group_item_assignments
Body parameter
{
"item_group_id": "igrp_1lqyMI1VF074qctA1lpvhFK3PuY",
"item_id": "item_OcThl0eqYyTVQzll6qFrMDMBYyu"
}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| fields | query | string | false | One or more response fields, separated by commas. |
| body | body | ItemGroupItemAssignmentCreateRequest | true | Request body to create an Item Group Item Assignment. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | created_at |
| fields | id |
| fields | item_group_id |
| fields | item_id |
| fields | modified_at |
Example responses
200 Response
{
"created_at": "2019-08-24T14:15:22Z",
"id": "igia_1lylwamEQiFCXsDnDl3M4xQsJiH",
"item_group_id": "igrp_1lqyMI1VF074qctA1lpvhFK3PuY",
"item_id": "item_OcThl0eqYyTVQzll6qFrMDMBYyu",
"modified_at": "2019-08-24T14:15:22Z"
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Item Group Item Assignment created. | ItemGroupItemAssignment |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Delete Item Group Item Assignment
Code samples
const headers = {
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/item_group_item_assignments/{ID}',
{
method: 'DELETE',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.delete 'https://api.quoter.com/v1/item_group_item_assignments/{ID}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.delete('https://api.quoter.com/v1/item_group_item_assignments/{ID}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api.quoter.com/v1/item_group_item_assignments/{ID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X DELETE https://api.quoter.com/v1/item_group_item_assignments/{ID} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
DELETE /item_group_item_assignments/{ID}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
Example responses
401 Response
{
"errors": [
{
"detail": "Pagination page requested too high.",
"status": 400,
"title": "Bad Request"
}
]
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 204 | No Content | Record deleted. | None |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Fetch Item Group Item Assignment
Code samples
const headers = {
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/item_group_item_assignments/{ID}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.get 'https://api.quoter.com/v1/item_group_item_assignments/{ID}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.get('https://api.quoter.com/v1/item_group_item_assignments/{ID}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.quoter.com/v1/item_group_item_assignments/{ID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X GET https://api.quoter.com/v1/item_group_item_assignments/{ID} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
GET /item_group_item_assignments/{ID}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| fields | query | string | false | One or more response fields, separated by commas. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | created_at |
| fields | id |
| fields | item_group_id |
| fields | item_id |
| fields | modified_at |
Example responses
200 Response
{
"created_at": "2019-08-24T14:15:22Z",
"id": "igia_1lylwamEQiFCXsDnDl3M4xQsJiH",
"item_group_id": "igrp_1lqyMI1VF074qctA1lpvhFK3PuY",
"item_id": "item_OcThl0eqYyTVQzll6qFrMDMBYyu",
"modified_at": "2019-08-24T14:15:22Z"
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Item Group Item Assignment found. | ItemGroupItemAssignment |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Item Groups
List Item Groups
Code samples
const headers = {
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/item_groups',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.get 'https://api.quoter.com/v1/item_groups',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.get('https://api.quoter.com/v1/item_groups', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.quoter.com/v1/item_groups", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X GET https://api.quoter.com/v1/item_groups \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
GET /item_groups
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| fields | query | string | false | One or more response fields, separated by commas. |
| sort_by | query | string | false | One or more sort fields, separated by commas. |
| created_at[gt] | query | date-time | false | Filter records by those whose created_at timestamp is greater than. |
| created_at[lt] | query | date-time | false | Filter records by those whose created_at timestamp is less than. |
| modified_at[gt] | query | date-time | false | Filter records by those whose modified_at timestamp is greater than. |
| modified_at[lt] | query | date-time | false | Filter records by those whose modified_at timestamp is less than. |
| name | query | string | false | Filter records by those whose name value is equal to. |
| name[cont] | query | string | false | Filter records by those whose name value contains. |
| limit | query | integer | false | Limit the number of records to return. Limit ranges from 1 to 100, and defaults to 100. |
| page | query | integer | false | Pagination record offset. Page starts at 1. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | created_at |
| fields | id |
| fields | modified_at |
| fields | name |
| sort_by | -created_at |
| sort_by | -id |
| sort_by | -modified_at |
| sort_by | -name |
| sort_by | created_at |
| sort_by | id |
| sort_by | modified_at |
| sort_by | name |
Example responses
200 Response
{
"data": [
{
"created_at": "2019-08-24T14:15:22Z",
"id": "igrp_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "West Coast"
}
],
"has_more": false,
"total_count": 1
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Item Groups found. | ItemGroupList |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Create Item Group
Code samples
const inputBody = '{
"name": "West Coast"
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/item_groups',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.post 'https://api.quoter.com/v1/item_groups',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.post('https://api.quoter.com/v1/item_groups', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.quoter.com/v1/item_groups", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X POST https://api.quoter.com/v1/item_groups \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
POST /item_groups
Body parameter
{
"name": "West Coast"
}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| fields | query | string | false | One or more response fields, separated by commas. |
| body | body | ItemGroupCreateRequest | true | Request body to create a Item Group. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | created_at |
| fields | id |
| fields | modified_at |
| fields | name |
Example responses
200 Response
{
"created_at": "2019-08-24T14:15:22Z",
"id": "igrp_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "West Coast"
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Item Group created. | ItemGroup |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Delete Item Group
Code samples
const headers = {
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/item_groups/{ID}',
{
method: 'DELETE',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.delete 'https://api.quoter.com/v1/item_groups/{ID}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.delete('https://api.quoter.com/v1/item_groups/{ID}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api.quoter.com/v1/item_groups/{ID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X DELETE https://api.quoter.com/v1/item_groups/{ID} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
DELETE /item_groups/{ID}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
Example responses
401 Response
{
"errors": [
{
"detail": "Pagination page requested too high.",
"status": 400,
"title": "Bad Request"
}
]
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 204 | No Content | Record deleted. | None |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Fetch Item Group
Code samples
const headers = {
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/item_groups/{ID}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.get 'https://api.quoter.com/v1/item_groups/{ID}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.get('https://api.quoter.com/v1/item_groups/{ID}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.quoter.com/v1/item_groups/{ID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X GET https://api.quoter.com/v1/item_groups/{ID} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
GET /item_groups/{ID}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| fields | query | string | false | One or more response fields, separated by commas. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | created_at |
| fields | id |
| fields | modified_at |
| fields | name |
Example responses
200 Response
{
"created_at": "2019-08-24T14:15:22Z",
"id": "igrp_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "West Coast"
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Item Group found. | ItemGroup |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Update Item Group
Code samples
const inputBody = '{
"name": "West Coast"
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/item_groups/{ID}',
{
method: 'PATCH',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.patch 'https://api.quoter.com/v1/item_groups/{ID}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.patch('https://api.quoter.com/v1/item_groups/{ID}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api.quoter.com/v1/item_groups/{ID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X PATCH https://api.quoter.com/v1/item_groups/{ID} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
PATCH /item_groups/{ID}
Body parameter
{
"name": "West Coast"
}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| fields | query | string | false | One or more response fields, separated by commas. |
| body | body | ItemGroupUpdateRequest | true | Request body to update a Item Group. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | created_at |
| fields | id |
| fields | modified_at |
| fields | name |
Example responses
200 Response
{
"created_at": "2019-08-24T14:15:22Z",
"id": "igrp_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "West Coast"
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Item Group found. | ItemGroup |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Item Option Values
List Item Option Values
Code samples
const headers = {
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/item_option_values',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.get 'https://api.quoter.com/v1/item_option_values',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.get('https://api.quoter.com/v1/item_option_values', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.quoter.com/v1/item_option_values", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X GET https://api.quoter.com/v1/item_option_values \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
GET /item_option_values
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| fields | query | string | false | One or more response fields, separated by commas. |
| sort_by | query | string | false | One or more sort fields, separated by commas. |
| created_at[gt] | query | date-time | false | Filter records by those whose created_at timestamp is greater than. |
| created_at[lt] | query | date-time | false | Filter records by those whose created_at timestamp is less than. |
| modified_at[gt] | query | date-time | false | Filter records by those whose modified_at timestamp is greater than. |
| modified_at[lt] | query | date-time | false | Filter records by those whose modified_at timestamp is less than. |
| name | query | string | false | Filter records by those whose name value is equal to. |
| name[cont] | query | string | false | Filter records by those whose name value contains. |
| limit | query | integer | false | Limit the number of records to return. Limit ranges from 1 to 100, and defaults to 100. |
| page | query | integer | false | Pagination record offset. Page starts at 1. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | code |
| fields | cost_decimal |
| fields | cost_type |
| fields | created_at |
| fields | id |
| fields | item_id |
| fields | item_option_id |
| fields | modified_at |
| fields | name |
| fields | price_decimal |
| fields | pricing_scheme |
| fields | sort_order |
| sort_by | -created_at |
| sort_by | -id |
| sort_by | -modified_at |
| sort_by | -name |
| sort_by | -sort_order |
| sort_by | created_at |
| sort_by | id |
| sort_by | modified_at |
| sort_by | name |
| sort_by | sort_order |
Example responses
200 Response
{
"data": [
{
"code": "MPN123",
"cost_decimal": "50.50",
"cost_type": "amount",
"created_at": "2019-08-24T14:15:22Z",
"id": "iov_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"item_id": "item_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"item_option_id": "iopt_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "1TB",
"price_decimal": "50.50",
"pricing_scheme": "amount"
}
],
"has_more": false,
"total_count": 1
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Item Option Values found. | ItemOptionValueList |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Create Item Option Value
Code samples
const inputBody = '{
"code": "MPN123",
"cost_decimal": "50.50",
"cost_type": "amount",
"item_option_id": "iopt_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"name": "1TB",
"price_decimal": "50.50",
"pricing_scheme": "amount",
"sort_order": 1
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/item_option_values',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.post 'https://api.quoter.com/v1/item_option_values',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.post('https://api.quoter.com/v1/item_option_values', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.quoter.com/v1/item_option_values", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X POST https://api.quoter.com/v1/item_option_values \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
POST /item_option_values
Body parameter
{
"code": "MPN123",
"cost_decimal": "50.50",
"cost_type": "amount",
"item_option_id": "iopt_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"name": "1TB",
"price_decimal": "50.50",
"pricing_scheme": "amount",
"sort_order": 1
}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| fields | query | string | false | One or more response fields, separated by commas. |
| body | body | ItemOptionValueCreateRequest | true | Request body to create an Item Option Value. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | code |
| fields | cost_decimal |
| fields | cost_type |
| fields | created_at |
| fields | id |
| fields | item_id |
| fields | item_option_id |
| fields | modified_at |
| fields | name |
| fields | price_decimal |
| fields | pricing_scheme |
| fields | sort_order |
Example responses
200 Response
{
"code": "MPN123",
"cost_decimal": "50.50",
"cost_type": "amount",
"created_at": "2019-08-24T14:15:22Z",
"id": "iov_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"item_id": "item_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"item_option_id": "iopt_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "1TB",
"price_decimal": "50.50",
"pricing_scheme": "amount"
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Item Option Value created. | ItemOptionValue |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Delete Item Option Value
Code samples
const headers = {
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/item_option_values/{ID}',
{
method: 'DELETE',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.delete 'https://api.quoter.com/v1/item_option_values/{ID}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.delete('https://api.quoter.com/v1/item_option_values/{ID}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api.quoter.com/v1/item_option_values/{ID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X DELETE https://api.quoter.com/v1/item_option_values/{ID} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
DELETE /item_option_values/{ID}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
Example responses
401 Response
{
"errors": [
{
"detail": "Pagination page requested too high.",
"status": 400,
"title": "Bad Request"
}
]
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 204 | No Content | Record deleted. | None |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Fetch Item Option Value
Code samples
const headers = {
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/item_option_values/{ID}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.get 'https://api.quoter.com/v1/item_option_values/{ID}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.get('https://api.quoter.com/v1/item_option_values/{ID}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.quoter.com/v1/item_option_values/{ID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X GET https://api.quoter.com/v1/item_option_values/{ID} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
GET /item_option_values/{ID}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| fields | query | string | false | One or more response fields, separated by commas. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | code |
| fields | cost_decimal |
| fields | cost_type |
| fields | created_at |
| fields | id |
| fields | item_id |
| fields | item_option_id |
| fields | modified_at |
| fields | name |
| fields | price_decimal |
| fields | pricing_scheme |
| fields | sort_order |
Example responses
200 Response
{
"code": "MPN123",
"cost_decimal": "50.50",
"cost_type": "amount",
"created_at": "2019-08-24T14:15:22Z",
"id": "iov_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"item_id": "item_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"item_option_id": "iopt_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "1TB",
"price_decimal": "50.50",
"pricing_scheme": "amount"
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Item Option Value found. | ItemOptionValue |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Update Item Option Value
Code samples
const inputBody = '{
"code": "MPN123",
"cost_decimal": "50.50",
"cost_type": "amount",
"name": "1TB",
"price_decimal": "50.50",
"pricing_scheme": "amount",
"sort_order": 1
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/item_option_values/{ID}',
{
method: 'PATCH',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.patch 'https://api.quoter.com/v1/item_option_values/{ID}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.patch('https://api.quoter.com/v1/item_option_values/{ID}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api.quoter.com/v1/item_option_values/{ID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X PATCH https://api.quoter.com/v1/item_option_values/{ID} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
PATCH /item_option_values/{ID}
Body parameter
{
"code": "MPN123",
"cost_decimal": "50.50",
"cost_type": "amount",
"name": "1TB",
"price_decimal": "50.50",
"pricing_scheme": "amount",
"sort_order": 1
}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| fields | query | string | false | One or more response fields, separated by commas. |
| body | body | ItemOptionValueUpdateRequest | true | Request body to update an Item Option Value. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | code |
| fields | cost_decimal |
| fields | cost_type |
| fields | created_at |
| fields | id |
| fields | item_id |
| fields | item_option_id |
| fields | modified_at |
| fields | name |
| fields | price_decimal |
| fields | pricing_scheme |
| fields | sort_order |
Example responses
200 Response
{
"code": "MPN123",
"cost_decimal": "50.50",
"cost_type": "amount",
"created_at": "2019-08-24T14:15:22Z",
"id": "iov_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"item_id": "item_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"item_option_id": "iopt_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "1TB",
"price_decimal": "50.50",
"pricing_scheme": "amount"
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Item Option Value found. | ItemOptionValue |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Item Options
List Item Options
Code samples
const headers = {
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/item_options',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.get 'https://api.quoter.com/v1/item_options',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.get('https://api.quoter.com/v1/item_options', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.quoter.com/v1/item_options", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X GET https://api.quoter.com/v1/item_options \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
GET /item_options
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| fields | query | string | false | One or more response fields, separated by commas. |
| sort_by | query | string | false | One or more sort fields, separated by commas. |
| created_at[gt] | query | date-time | false | Filter records by those whose created_at timestamp is greater than. |
| created_at[lt] | query | date-time | false | Filter records by those whose created_at timestamp is less than. |
| modified_at[gt] | query | date-time | false | Filter records by those whose modified_at timestamp is greater than. |
| modified_at[lt] | query | date-time | false | Filter records by those whose modified_at timestamp is less than. |
| name | query | string | false | Filter records by those whose name value is equal to. |
| name[cont] | query | string | false | Filter records by those whose name value contains. |
| limit | query | integer | false | Limit the number of records to return. Limit ranges from 1 to 100, and defaults to 100. |
| page | query | integer | false | Pagination record offset. Page starts at 1. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | allow_multiple_values |
| fields | created_at |
| fields | description |
| fields | extended_description |
| fields | id |
| fields | item_id |
| fields | modified_at |
| fields | name |
| fields | required |
| fields | sort_order |
| sort_by | -created_at |
| sort_by | -id |
| sort_by | -modified_at |
| sort_by | -name |
| sort_by | -sort_order |
| sort_by | created_at |
| sort_by | id |
| sort_by | modified_at |
| sort_by | name |
| sort_by | sort_order |
Example responses
200 Response
{
"data": [
{
"allow_multiple_values": false,
"created_at": "2019-08-24T14:15:22Z",
"description": "<p>Standard description</p>",
"extended_description": "<p>Longer description.</p>",
"id": "iopt_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"item_id": "item_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "Disk Size",
"required": false,
"sort_order": 0
}
],
"has_more": false,
"total_count": 1
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Item Options found. | ItemOptionList |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Create Item Option
Code samples
const inputBody = '{
"allow_multiple_values": false,
"description": "<p>Standard description</p>",
"extended_description": "<p>Longer description.</p>",
"item_id": "item_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"name": "Disk Size",
"required": false,
"sort_order": 0
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/item_options',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.post 'https://api.quoter.com/v1/item_options',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.post('https://api.quoter.com/v1/item_options', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.quoter.com/v1/item_options", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X POST https://api.quoter.com/v1/item_options \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
POST /item_options
Body parameter
{
"allow_multiple_values": false,
"description": "<p>Standard description</p>",
"extended_description": "<p>Longer description.</p>",
"item_id": "item_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"name": "Disk Size",
"required": false,
"sort_order": 0
}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| fields | query | string | false | One or more response fields, separated by commas. |
| body | body | ItemOptionCreateRequest | true | Request body to create an Item Option. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | allow_multiple_values |
| fields | created_at |
| fields | description |
| fields | extended_description |
| fields | id |
| fields | item_id |
| fields | modified_at |
| fields | name |
| fields | required |
| fields | sort_order |
Example responses
200 Response
{
"allow_multiple_values": false,
"created_at": "2019-08-24T14:15:22Z",
"description": "<p>Standard description</p>",
"extended_description": "<p>Longer description.</p>",
"id": "iopt_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"item_id": "item_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "Disk Size",
"required": false,
"sort_order": 0
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Item Option created. | ItemOption |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Delete Item Option
Code samples
const headers = {
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/item_options/{ID}',
{
method: 'DELETE',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.delete 'https://api.quoter.com/v1/item_options/{ID}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.delete('https://api.quoter.com/v1/item_options/{ID}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api.quoter.com/v1/item_options/{ID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X DELETE https://api.quoter.com/v1/item_options/{ID} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
DELETE /item_options/{ID}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
Example responses
401 Response
{
"errors": [
{
"detail": "Pagination page requested too high.",
"status": 400,
"title": "Bad Request"
}
]
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 204 | No Content | Record deleted. | None |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Fetch Item Option
Code samples
const headers = {
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/item_options/{ID}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.get 'https://api.quoter.com/v1/item_options/{ID}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.get('https://api.quoter.com/v1/item_options/{ID}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.quoter.com/v1/item_options/{ID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X GET https://api.quoter.com/v1/item_options/{ID} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
GET /item_options/{ID}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| fields | query | string | false | One or more response fields, separated by commas. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | allow_multiple_values |
| fields | created_at |
| fields | description |
| fields | extended_description |
| fields | id |
| fields | item_id |
| fields | modified_at |
| fields | name |
| fields | required |
| fields | sort_order |
Example responses
200 Response
{
"allow_multiple_values": false,
"created_at": "2019-08-24T14:15:22Z",
"description": "<p>Standard description</p>",
"extended_description": "<p>Longer description.</p>",
"id": "iopt_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"item_id": "item_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "Disk Size",
"required": false,
"sort_order": 0
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Item Option found. | ItemOption |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Update Item Option
Code samples
const inputBody = '{
"allow_multiple_values": true,
"description": "<p>Standard description</p>",
"extended_description": "<p>Longer description.</p>",
"name": "Disk Size",
"required": true,
"sort_order": 1
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/item_options/{ID}',
{
method: 'PATCH',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.patch 'https://api.quoter.com/v1/item_options/{ID}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.patch('https://api.quoter.com/v1/item_options/{ID}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api.quoter.com/v1/item_options/{ID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X PATCH https://api.quoter.com/v1/item_options/{ID} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
PATCH /item_options/{ID}
Body parameter
{
"allow_multiple_values": true,
"description": "<p>Standard description</p>",
"extended_description": "<p>Longer description.</p>",
"name": "Disk Size",
"required": true,
"sort_order": 1
}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| fields | query | string | false | One or more response fields, separated by commas. |
| body | body | ItemOptionUpdateRequest | true | Request body to update an Item Option. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | allow_multiple_values |
| fields | created_at |
| fields | description |
| fields | extended_description |
| fields | id |
| fields | item_id |
| fields | modified_at |
| fields | name |
| fields | required |
| fields | sort_order |
Example responses
200 Response
{
"allow_multiple_values": false,
"created_at": "2019-08-24T14:15:22Z",
"description": "<p>Standard description</p>",
"extended_description": "<p>Longer description.</p>",
"id": "iopt_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"item_id": "item_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "Disk Size",
"required": false,
"sort_order": 0
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Item Option found. | ItemOption |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Item Tiers
List Item Tiers
Code samples
const headers = {
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/item_tiers',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.get 'https://api.quoter.com/v1/item_tiers',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.get('https://api.quoter.com/v1/item_tiers', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.quoter.com/v1/item_tiers", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X GET https://api.quoter.com/v1/item_tiers \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
GET /item_tiers
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| item_id | query | string | false | Filter records by those associated with item_id. |
| fields | query | string | false | One or more response fields, separated by commas. |
| sort_by | query | string | false | One or more sort fields, separated by commas. |
| created_at[gt] | query | date-time | false | Filter records by those whose created_at timestamp is greater than. |
| created_at[lt] | query | date-time | false | Filter records by those whose created_at timestamp is less than. |
| modified_at[gt] | query | date-time | false | Filter records by those whose modified_at timestamp is greater than. |
| modified_at[lt] | query | date-time | false | Filter records by those whose modified_at timestamp is less than. |
| limit | query | integer | false | Limit the number of records to return. Limit ranges from 1 to 100, and defaults to 100. |
| page | query | integer | false | Pagination record offset. Page starts at 1. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | cost_decimal |
| fields | cost_type |
| fields | created_at |
| fields | id |
| fields | item_id |
| fields | lower_boundary |
| fields | modified_at |
| fields | price_decimal |
| sort_by | -created_at |
| sort_by | -lower_boundary |
| sort_by | -modified_at |
| sort_by | -id |
| sort_by | created_at |
| sort_by | lower_boundary |
| sort_by | modified_at |
| sort_by | id |
Example responses
200 Response
{
"data": [
{
"cost_decimal": "50.50",
"cost_type": "amount",
"created_at": "2019-08-24T14:15:22Z",
"id": "tier_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"item_id": "item_OcThl0eqYyTVQzll6qFrMDMBYyu",
"lower_boundary": 0,
"modified_at": "2019-08-24T14:15:22Z",
"price_decimal": "50.50"
}
],
"has_more": false,
"total_count": 1
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Item Tiers found. | ItemTierList |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Create Item Tier
Code samples
const inputBody = '{
"cost_decimal": "50.50",
"cost_type": "amount",
"created_at": "2019-08-24T14:15:22Z",
"item_id": "item_OcThl0eqYyTVQzll6qFrMDMBYyu",
"lower_boundary": 0,
"modified_at": "2019-08-24T14:15:22Z",
"price_decimal": "50.50"
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/item_tiers',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.post 'https://api.quoter.com/v1/item_tiers',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.post('https://api.quoter.com/v1/item_tiers', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.quoter.com/v1/item_tiers", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X POST https://api.quoter.com/v1/item_tiers \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
POST /item_tiers
Body parameter
{
"cost_decimal": "50.50",
"cost_type": "amount",
"created_at": "2019-08-24T14:15:22Z",
"item_id": "item_OcThl0eqYyTVQzll6qFrMDMBYyu",
"lower_boundary": 0,
"modified_at": "2019-08-24T14:15:22Z",
"price_decimal": "50.50"
}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| fields | query | string | false | One or more response fields, separated by commas. |
| body | body | ItemTierCreateRequest | true | Request body to create an Item Tier. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | cost_decimal |
| fields | cost_type |
| fields | created_at |
| fields | id |
| fields | item_id |
| fields | lower_boundary |
| fields | modified_at |
| fields | price_decimal |
Example responses
200 Response
{
"cost_decimal": "50.50",
"cost_type": "amount",
"created_at": "2019-08-24T14:15:22Z",
"id": "tier_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"item_id": "item_OcThl0eqYyTVQzll6qFrMDMBYyu",
"lower_boundary": 0,
"modified_at": "2019-08-24T14:15:22Z",
"price_decimal": "50.50"
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Item Tier created. | ItemTier |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Delete Item Tier
Code samples
const headers = {
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/item_tiers/{ID}',
{
method: 'DELETE',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.delete 'https://api.quoter.com/v1/item_tiers/{ID}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.delete('https://api.quoter.com/v1/item_tiers/{ID}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api.quoter.com/v1/item_tiers/{ID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X DELETE https://api.quoter.com/v1/item_tiers/{ID} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
DELETE /item_tiers/{ID}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
Example responses
401 Response
{
"errors": [
{
"detail": "Pagination page requested too high.",
"status": 400,
"title": "Bad Request"
}
]
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 204 | No Content | Record deleted. | None |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Fetch Item Tier
Code samples
const headers = {
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/item_tiers/{ID}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.get 'https://api.quoter.com/v1/item_tiers/{ID}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.get('https://api.quoter.com/v1/item_tiers/{ID}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.quoter.com/v1/item_tiers/{ID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X GET https://api.quoter.com/v1/item_tiers/{ID} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
GET /item_tiers/{ID}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| fields | query | string | false | One or more response fields, separated by commas. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | cost_decimal |
| fields | cost_type |
| fields | created_at |
| fields | id |
| fields | item_id |
| fields | lower_boundary |
| fields | modified_at |
| fields | price_decimal |
Example responses
200 Response
{
"cost_decimal": "50.50",
"cost_type": "amount",
"created_at": "2019-08-24T14:15:22Z",
"id": "tier_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"item_id": "item_OcThl0eqYyTVQzll6qFrMDMBYyu",
"lower_boundary": 0,
"modified_at": "2019-08-24T14:15:22Z",
"price_decimal": "50.50"
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Item Tier found. | ItemTier |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Update Item Tier
Code samples
const inputBody = '{
"cost_decimal": "50.50",
"cost_type": "amount",
"created_at": "2019-08-24T14:15:22Z",
"item_id": "item_OcThl0eqYyTVQzll6qFrMDMBYyu",
"lower_boundary": 1,
"modified_at": "2019-08-24T14:15:22Z",
"price_decimal": "50.50"
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/item_tiers/{ID}',
{
method: 'PATCH',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.patch 'https://api.quoter.com/v1/item_tiers/{ID}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.patch('https://api.quoter.com/v1/item_tiers/{ID}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api.quoter.com/v1/item_tiers/{ID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X PATCH https://api.quoter.com/v1/item_tiers/{ID} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
PATCH /item_tiers/{ID}
Body parameter
{
"cost_decimal": "50.50",
"cost_type": "amount",
"created_at": "2019-08-24T14:15:22Z",
"item_id": "item_OcThl0eqYyTVQzll6qFrMDMBYyu",
"lower_boundary": 1,
"modified_at": "2019-08-24T14:15:22Z",
"price_decimal": "50.50"
}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| fields | query | string | false | One or more response fields, separated by commas. |
| body | body | ItemTierUpdateRequest | true | Request body to update an Item Tier. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | cost_decimal |
| fields | cost_type |
| fields | created_at |
| fields | id |
| fields | item_id |
| fields | lower_boundary |
| fields | modified_at |
| fields | price_decimal |
Example responses
200 Response
{
"cost_decimal": "50.50",
"cost_type": "amount",
"created_at": "2019-08-24T14:15:22Z",
"id": "tier_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"item_id": "item_OcThl0eqYyTVQzll6qFrMDMBYyu",
"lower_boundary": 0,
"modified_at": "2019-08-24T14:15:22Z",
"price_decimal": "50.50"
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Item Tier found. | ItemTier |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Items
List Items
Code samples
const headers = {
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/items',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.get 'https://api.quoter.com/v1/items',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.get('https://api.quoter.com/v1/items', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.quoter.com/v1/items", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X GET https://api.quoter.com/v1/items \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
GET /items
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| fields | query | string | false | One or more response fields, separated by commas. |
| sort_by | query | string | false | One or more sort fields, separated by commas. |
| category_id | query | string | false | Filter records by those associated with category_id. |
| code | query | string | false | Filter records by those whose code value is equal to. |
| created_at[gt] | query | date-time | false | Filter records by those whose created_at timestamp is greater than. |
| created_at[lt] | query | date-time | false | Filter records by those whose created_at timestamp is less than. |
| manufacturer_id | query | string | false | Filter records by those associated with manufacturer_id. |
| modified_at[gt] | query | date-time | false | Filter records by those whose modified_at timestamp is greater than. |
| modified_at[lt] | query | date-time | false | Filter records by those whose modified_at timestamp is less than. |
| name | query | string | false | Filter records by those whose name value is equal to. |
| name[cont] | query | string | false | Filter records by those whose name value contains. |
| sku | query | string | false | Filter records by those whose sku value is equal to. |
| supplier_id | query | string | false | Filter records by those associated with supplier_id. |
| limit | query | integer | false | Limit the number of records to return. Limit ranges from 1 to 100, and defaults to 100. |
| page | query | integer | false | Pagination record offset. Page starts at 1. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | allow_decimal_quantities |
| fields | category |
| fields | category_id |
| fields | code |
| fields | cost_decimal |
| fields | cost_type |
| fields | created_at |
| fields | description |
| fields | id |
| fields | internal_note |
| fields | manufacturer |
| fields | manufacturer_id |
| fields | modified_at |
| fields | name |
| fields | percentage_price_category_ids |
| fields | percentage_price_decimal |
| fields | price_decimal |
| fields | pricing_scheme |
| fields | quantity_help_tip |
| fields | recurring |
| fields | recurring_interval |
| fields | restrict_discounting |
| fields | show_option_prices |
| fields | sku |
| fields | supplier |
| fields | supplier_id |
| fields | taxable |
| fields | weight_decimal |
| sort_by | -created_at |
| sort_by | -id |
| sort_by | -modified_at |
| sort_by | -name |
| sort_by | created_at |
| sort_by | id |
| sort_by | modified_at |
| sort_by | name |
Example responses
200 Response
{
"data": [
{
"allow_decimal_quantities": true,
"category": "SSDs",
"category_id": "cat_OcThl8SOeE8w6JYUznfrnQGdp94",
"code": "MZ-V7S1T0B/AM",
"cost_decimal": 50.5,
"cost_type": "amount",
"created_at": "2019-08-24T14:15:22Z",
"description": "The 970 EVO Plus reaches sequential read/write speeds up to 3,500/3,300 MB/s, up to 53% faster than the 970 EVO.",
"id": "item_OcThl0eqYyTVQzll6qFrMDMBYyu",
"internal_note": "Check warehouse for inventory before ordering.",
"manufacturer": "Samsung",
"manufacturer_id": "manu_OcThlEWcbhAG52u3vLJodwnV88k",
"modified_at": "2019-08-24T14:15:22Z",
"name": "SAMSUNG 970 EVO PLUS M.2 2280 1TB PCIe Gen 3.0 x4",
"percentage_price_category_ids": [
"cat_OcThlTV6Tama8RH5Zh4Jfw1fhJC"
],
"percentage_price_decimal": 50.5,
"price_decimal": 50.5,
"pricing_scheme": "per_unit",
"quantity_help_tip": "Enter the number of units required.",
"recurring": true,
"recurring_interval": "annually",
"restrict_discounting": true,
"show_option_prices": true,
"sku": "N82E16820147743",
"supplier": "Newegg",
"supplier_id": "sup_OcThlLwzLAM7m5eK1WEKkXUQZtm",
"taxable": true,
"weight_decimal": 50.5
}
],
"has_more": false,
"total_count": 1
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Items found. | ItemList |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Create Item
Code samples
const inputBody = '{
"allow_decimal_quantities": true,
"category": "SSDs",
"category_id": "cat_OcThl8SOeE8w6JYUznfrnQGdp94",
"code": "MZ-V7S1T0B/AM",
"cost_decimal": 50.5,
"cost_type": "amount",
"description": "The 970 EVO Plus reaches sequential read/write speeds up to 3,500/3,300 MB/s, up to 53% faster than the 970 EVO.",
"internal_note": "Check warehouse for inventory before ordering.",
"manufacturer": "Samsung",
"manufacturer_id": "manu_OcThlEWcbhAG52u3vLJodwnV88k",
"name": "SAMSUNG 970 EVO PLUS M.2 2280 1TB PCIe Gen 3.0 x4",
"percentage_price_category_ids": [
"cat_OcThlTV6Tama8RH5Zh4Jfw1fhJC"
],
"percentage_price_decimal": 50.5,
"price_decimal": 50.5,
"pricing_scheme": "per_unit",
"quantity_help_tip": "Enter the number of units required.",
"recurring": true,
"recurring_interval": "annually",
"restrict_discounting": true,
"show_option_prices": true,
"sku": "N82E16820147743",
"supplier": "Newegg",
"supplier_id": "sup_OcThlLwzLAM7m5eK1WEKkXUQZtm",
"taxable": true,
"weight_decimal": 50.5
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/items',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.post 'https://api.quoter.com/v1/items',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.post('https://api.quoter.com/v1/items', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.quoter.com/v1/items", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X POST https://api.quoter.com/v1/items \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
POST /items
Body parameter
{
"allow_decimal_quantities": true,
"category": "SSDs",
"category_id": "cat_OcThl8SOeE8w6JYUznfrnQGdp94",
"code": "MZ-V7S1T0B/AM",
"cost_decimal": 50.5,
"cost_type": "amount",
"description": "The 970 EVO Plus reaches sequential read/write speeds up to 3,500/3,300 MB/s, up to 53% faster than the 970 EVO.",
"internal_note": "Check warehouse for inventory before ordering.",
"manufacturer": "Samsung",
"manufacturer_id": "manu_OcThlEWcbhAG52u3vLJodwnV88k",
"name": "SAMSUNG 970 EVO PLUS M.2 2280 1TB PCIe Gen 3.0 x4",
"percentage_price_category_ids": [
"cat_OcThlTV6Tama8RH5Zh4Jfw1fhJC"
],
"percentage_price_decimal": 50.5,
"price_decimal": 50.5,
"pricing_scheme": "per_unit",
"quantity_help_tip": "Enter the number of units required.",
"recurring": true,
"recurring_interval": "annually",
"restrict_discounting": true,
"show_option_prices": true,
"sku": "N82E16820147743",
"supplier": "Newegg",
"supplier_id": "sup_OcThlLwzLAM7m5eK1WEKkXUQZtm",
"taxable": true,
"weight_decimal": 50.5
}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| fields | query | string | false | One or more response fields, separated by commas. |
| body | body | ItemCreateRequest | true | Request body to create an Item. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | allow_decimal_quantities |
| fields | category |
| fields | category_id |
| fields | code |
| fields | cost_decimal |
| fields | cost_type |
| fields | created_at |
| fields | description |
| fields | id |
| fields | internal_note |
| fields | manufacturer |
| fields | manufacturer_id |
| fields | modified_at |
| fields | name |
| fields | percentage_price_category_ids |
| fields | percentage_price_decimal |
| fields | price_decimal |
| fields | pricing_scheme |
| fields | quantity_help_tip |
| fields | recurring |
| fields | recurring_interval |
| fields | restrict_discounting |
| fields | show_option_prices |
| fields | sku |
| fields | supplier |
| fields | supplier_id |
| fields | taxable |
| fields | weight_decimal |
Example responses
200 Response
{
"allow_decimal_quantities": true,
"category": "SSDs",
"category_id": "cat_OcThl8SOeE8w6JYUznfrnQGdp94",
"code": "MZ-V7S1T0B/AM",
"cost_decimal": 50.5,
"cost_type": "amount",
"created_at": "2019-08-24T14:15:22Z",
"description": "The 970 EVO Plus reaches sequential read/write speeds up to 3,500/3,300 MB/s, up to 53% faster than the 970 EVO.",
"id": "item_OcThl0eqYyTVQzll6qFrMDMBYyu",
"internal_note": "Check warehouse for inventory before ordering.",
"manufacturer": "Samsung",
"manufacturer_id": "manu_OcThlEWcbhAG52u3vLJodwnV88k",
"modified_at": "2019-08-24T14:15:22Z",
"name": "SAMSUNG 970 EVO PLUS M.2 2280 1TB PCIe Gen 3.0 x4",
"percentage_price_category_ids": [
"cat_OcThlTV6Tama8RH5Zh4Jfw1fhJC"
],
"percentage_price_decimal": 50.5,
"price_decimal": 50.5,
"pricing_scheme": "per_unit",
"quantity_help_tip": "Enter the number of units required.",
"recurring": true,
"recurring_interval": "annually",
"restrict_discounting": true,
"show_option_prices": true,
"sku": "N82E16820147743",
"supplier": "Newegg",
"supplier_id": "sup_OcThlLwzLAM7m5eK1WEKkXUQZtm",
"taxable": true,
"weight_decimal": 50.5
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Item created. | Item |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Delete Item
Code samples
const headers = {
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/items/{ID}',
{
method: 'DELETE',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.delete 'https://api.quoter.com/v1/items/{ID}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.delete('https://api.quoter.com/v1/items/{ID}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api.quoter.com/v1/items/{ID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X DELETE https://api.quoter.com/v1/items/{ID} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
DELETE /items/{ID}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
Example responses
401 Response
{
"errors": [
{
"detail": "Pagination page requested too high.",
"status": 400,
"title": "Bad Request"
}
]
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 204 | No Content | Record deleted. | None |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Fetch Item
Code samples
const headers = {
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/items/{ID}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.get 'https://api.quoter.com/v1/items/{ID}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.get('https://api.quoter.com/v1/items/{ID}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.quoter.com/v1/items/{ID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X GET https://api.quoter.com/v1/items/{ID} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
GET /items/{ID}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| fields | query | string | false | One or more response fields, separated by commas. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | allow_decimal_quantities |
| fields | category |
| fields | category_id |
| fields | code |
| fields | cost_decimal |
| fields | cost_type |
| fields | created_at |
| fields | description |
| fields | id |
| fields | internal_note |
| fields | manufacturer |
| fields | manufacturer_id |
| fields | modified_at |
| fields | name |
| fields | percentage_price_category_ids |
| fields | percentage_price_decimal |
| fields | price_decimal |
| fields | pricing_scheme |
| fields | quantity_help_tip |
| fields | recurring |
| fields | recurring_interval |
| fields | restrict_discounting |
| fields | show_option_prices |
| fields | sku |
| fields | supplier |
| fields | supplier_id |
| fields | taxable |
| fields | weight_decimal |
Example responses
200 Response
{
"allow_decimal_quantities": true,
"category": "SSDs",
"category_id": "cat_OcThl8SOeE8w6JYUznfrnQGdp94",
"code": "MZ-V7S1T0B/AM",
"cost_decimal": 50.5,
"cost_type": "amount",
"created_at": "2019-08-24T14:15:22Z",
"description": "The 970 EVO Plus reaches sequential read/write speeds up to 3,500/3,300 MB/s, up to 53% faster than the 970 EVO.",
"id": "item_OcThl0eqYyTVQzll6qFrMDMBYyu",
"internal_note": "Check warehouse for inventory before ordering.",
"manufacturer": "Samsung",
"manufacturer_id": "manu_OcThlEWcbhAG52u3vLJodwnV88k",
"modified_at": "2019-08-24T14:15:22Z",
"name": "SAMSUNG 970 EVO PLUS M.2 2280 1TB PCIe Gen 3.0 x4",
"percentage_price_category_ids": [
"cat_OcThlTV6Tama8RH5Zh4Jfw1fhJC"
],
"percentage_price_decimal": 50.5,
"price_decimal": 50.5,
"pricing_scheme": "per_unit",
"quantity_help_tip": "Enter the number of units required.",
"recurring": true,
"recurring_interval": "annually",
"restrict_discounting": true,
"show_option_prices": true,
"sku": "N82E16820147743",
"supplier": "Newegg",
"supplier_id": "sup_OcThlLwzLAM7m5eK1WEKkXUQZtm",
"taxable": true,
"weight_decimal": 50.5
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Item found. | Item |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Update Item
Code samples
const inputBody = '{
"allow_decimal_quantities": true,
"category": "SSDs",
"category_id": "cat_OcThl8SOeE8w6JYUznfrnQGdp94",
"code": "MZ-V7S1T0B/AM",
"cost_decimal": 50.5,
"cost_type": "amount",
"description": "The 970 EVO Plus reaches sequential read/write speeds up to 3,500/3,300 MB/s, up to 53% faster than the 970 EVO.",
"internal_note": "Check warehouse for inventory before ordering.",
"manufacturer": "Samsung",
"manufacturer_id": "manu_OcThlEWcbhAG52u3vLJodwnV88k",
"name": "SAMSUNG 970 EVO PLUS M.2 2280 1TB PCIe Gen 3.0 x4",
"percentage_price_category_ids": [
"cat_OcThlTV6Tama8RH5Zh4Jfw1fhJC"
],
"percentage_price_decimal": 50.5,
"price_decimal": 50.5,
"pricing_scheme": "per_unit",
"quantity_help_tip": "Enter the number of units required.",
"recurring": true,
"recurring_interval": "annually",
"restrict_discounting": true,
"show_option_prices": true,
"sku": "N82E16820147743",
"supplier": "Newegg",
"supplier_id": "sup_OcThlLwzLAM7m5eK1WEKkXUQZtm",
"taxable": true,
"weight_decimal": 50.5
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/items/{ID}',
{
method: 'PATCH',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.patch 'https://api.quoter.com/v1/items/{ID}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.patch('https://api.quoter.com/v1/items/{ID}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api.quoter.com/v1/items/{ID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X PATCH https://api.quoter.com/v1/items/{ID} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
PATCH /items/{ID}
Body parameter
{
"allow_decimal_quantities": true,
"category": "SSDs",
"category_id": "cat_OcThl8SOeE8w6JYUznfrnQGdp94",
"code": "MZ-V7S1T0B/AM",
"cost_decimal": 50.5,
"cost_type": "amount",
"description": "The 970 EVO Plus reaches sequential read/write speeds up to 3,500/3,300 MB/s, up to 53% faster than the 970 EVO.",
"internal_note": "Check warehouse for inventory before ordering.",
"manufacturer": "Samsung",
"manufacturer_id": "manu_OcThlEWcbhAG52u3vLJodwnV88k",
"name": "SAMSUNG 970 EVO PLUS M.2 2280 1TB PCIe Gen 3.0 x4",
"percentage_price_category_ids": [
"cat_OcThlTV6Tama8RH5Zh4Jfw1fhJC"
],
"percentage_price_decimal": 50.5,
"price_decimal": 50.5,
"pricing_scheme": "per_unit",
"quantity_help_tip": "Enter the number of units required.",
"recurring": true,
"recurring_interval": "annually",
"restrict_discounting": true,
"show_option_prices": true,
"sku": "N82E16820147743",
"supplier": "Newegg",
"supplier_id": "sup_OcThlLwzLAM7m5eK1WEKkXUQZtm",
"taxable": true,
"weight_decimal": 50.5
}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| fields | query | string | false | One or more response fields, separated by commas. |
| body | body | ItemUpdateRequest | true | Request body to update an Item. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | allow_decimal_quantities |
| fields | category |
| fields | category_id |
| fields | code |
| fields | cost_decimal |
| fields | cost_type |
| fields | created_at |
| fields | description |
| fields | id |
| fields | internal_note |
| fields | manufacturer |
| fields | manufacturer_id |
| fields | modified_at |
| fields | name |
| fields | percentage_price_category_ids |
| fields | percentage_price_decimal |
| fields | price_decimal |
| fields | pricing_scheme |
| fields | quantity_help_tip |
| fields | recurring |
| fields | recurring_interval |
| fields | restrict_discounting |
| fields | show_option_prices |
| fields | sku |
| fields | supplier |
| fields | supplier_id |
| fields | taxable |
| fields | weight_decimal |
Example responses
200 Response
{
"allow_decimal_quantities": true,
"category": "SSDs",
"category_id": "cat_OcThl8SOeE8w6JYUznfrnQGdp94",
"code": "MZ-V7S1T0B/AM",
"cost_decimal": 50.5,
"cost_type": "amount",
"created_at": "2019-08-24T14:15:22Z",
"description": "The 970 EVO Plus reaches sequential read/write speeds up to 3,500/3,300 MB/s, up to 53% faster than the 970 EVO.",
"id": "item_OcThl0eqYyTVQzll6qFrMDMBYyu",
"internal_note": "Check warehouse for inventory before ordering.",
"manufacturer": "Samsung",
"manufacturer_id": "manu_OcThlEWcbhAG52u3vLJodwnV88k",
"modified_at": "2019-08-24T14:15:22Z",
"name": "SAMSUNG 970 EVO PLUS M.2 2280 1TB PCIe Gen 3.0 x4",
"percentage_price_category_ids": [
"cat_OcThlTV6Tama8RH5Zh4Jfw1fhJC"
],
"percentage_price_decimal": 50.5,
"price_decimal": 50.5,
"pricing_scheme": "per_unit",
"quantity_help_tip": "Enter the number of units required.",
"recurring": true,
"recurring_interval": "annually",
"restrict_discounting": true,
"show_option_prices": true,
"sku": "N82E16820147743",
"supplier": "Newegg",
"supplier_id": "sup_OcThlLwzLAM7m5eK1WEKkXUQZtm",
"taxable": true,
"weight_decimal": 50.5
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Item updated. | Item |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Line Items
Create Line Item
Code samples
const inputBody = '{
"category": "Desktop",
"description": "Sample Description",
"manufacturer": "Acme Corp",
"name": "Sample Item",
"part_number": "string",
"quantity": 10,
"quote_id": "quot_2r5WHEQLKFsyKdyIj5daPCp7mjF",
"recurring": true,
"supplier": "Acme supplier",
"supplier_sku": "string",
"taxable": true,
"unit_cost": 0,
"unit_price": 0
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/line_items',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.post 'https://api.quoter.com/v1/line_items',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.post('https://api.quoter.com/v1/line_items', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.quoter.com/v1/line_items", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X POST https://api.quoter.com/v1/line_items \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
POST /line_items
Body parameter
{
"category": "Desktop",
"description": "Sample Description",
"manufacturer": "Acme Corp",
"name": "Sample Item",
"part_number": "string",
"quantity": 10,
"quote_id": "quot_2r5WHEQLKFsyKdyIj5daPCp7mjF",
"recurring": true,
"supplier": "Acme supplier",
"supplier_sku": "string",
"taxable": true,
"unit_cost": 0,
"unit_price": 0
}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| body | body | LineItemCreateRequest | true | Request body to create a Line Item. |
Example responses
200 Response
{
"category": "Desktop",
"created_at": "2019-08-24T14:15:22Z",
"description": "Item Description",
"id": "litm_2r5WHJ1RvX8aCEyhQA6VhWpLuAb",
"manufacturer": "Acme Corp",
"modified_at": "2019-08-24T14:15:22Z",
"name": "My Item",
"part_number": "string",
"quantity": 0,
"recurring": true,
"supplier": "Acme Supplier",
"supplier_sku": "string",
"taxable": true,
"unit_cost": 0,
"unit_price": 0
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Line Item created. | LineItem |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Manufacturers
List Manufacturers
Code samples
const headers = {
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/manufacturers',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.get 'https://api.quoter.com/v1/manufacturers',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.get('https://api.quoter.com/v1/manufacturers', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.quoter.com/v1/manufacturers", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X GET https://api.quoter.com/v1/manufacturers \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
GET /manufacturers
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| fields | query | string | false | One or more response fields, separated by commas. |
| sort_by | query | string | false | One or more sort fields, separated by commas. |
| created_at[gt] | query | date-time | false | Filter records by those whose created_at timestamp is greater than. |
| created_at[lt] | query | date-time | false | Filter records by those whose created_at timestamp is less than. |
| modified_at[gt] | query | date-time | false | Filter records by those whose modified_at timestamp is greater than. |
| modified_at[lt] | query | date-time | false | Filter records by those whose modified_at timestamp is less than. |
| name | query | string | false | Filter records by those whose name value is equal to. |
| name[cont] | query | string | false | Filter records by those whose name value contains. |
| limit | query | integer | false | Limit the number of records to return. Limit ranges from 1 to 100, and defaults to 100. |
| page | query | integer | false | Pagination record offset. Page starts at 1. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | created_at |
| fields | id |
| fields | modified_at |
| fields | name |
| sort_by | -created_at |
| sort_by | -id |
| sort_by | -modified_at |
| sort_by | -name |
| sort_by | created_at |
| sort_by | id |
| sort_by | modified_at |
| sort_by | name |
Example responses
200 Response
{
"data": [
{
"created_at": "2019-08-24T14:15:22Z",
"id": "manu_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "Samsung"
}
],
"has_more": false,
"total_count": 1
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Manufacturers found. | ManufacturerList |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Create Manufacturer
Code samples
const inputBody = '{
"name": "Samsung"
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/manufacturers',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.post 'https://api.quoter.com/v1/manufacturers',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.post('https://api.quoter.com/v1/manufacturers', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.quoter.com/v1/manufacturers", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X POST https://api.quoter.com/v1/manufacturers \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
POST /manufacturers
Body parameter
{
"name": "Samsung"
}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| fields | query | string | false | One or more response fields, separated by commas. |
| body | body | ManufacturerCreateRequest | true | Request body to create a Manufacturer. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | created_at |
| fields | id |
| fields | modified_at |
| fields | name |
Example responses
200 Response
{
"created_at": "2019-08-24T14:15:22Z",
"id": "manu_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "Samsung"
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Manufacturer created. | Manufacturer |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Delete Manufacturer
Code samples
const headers = {
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/manufacturers/{ID}',
{
method: 'DELETE',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.delete 'https://api.quoter.com/v1/manufacturers/{ID}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.delete('https://api.quoter.com/v1/manufacturers/{ID}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api.quoter.com/v1/manufacturers/{ID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X DELETE https://api.quoter.com/v1/manufacturers/{ID} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
DELETE /manufacturers/{ID}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
Example responses
401 Response
{
"errors": [
{
"detail": "Pagination page requested too high.",
"status": 400,
"title": "Bad Request"
}
]
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 204 | No Content | Record deleted. | None |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Fetch Manufacturer
Code samples
const headers = {
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/manufacturers/{ID}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.get 'https://api.quoter.com/v1/manufacturers/{ID}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.get('https://api.quoter.com/v1/manufacturers/{ID}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.quoter.com/v1/manufacturers/{ID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X GET https://api.quoter.com/v1/manufacturers/{ID} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
GET /manufacturers/{ID}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| fields | query | string | false | One or more response fields, separated by commas. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | created_at |
| fields | id |
| fields | modified_at |
| fields | name |
Example responses
200 Response
{
"created_at": "2019-08-24T14:15:22Z",
"id": "manu_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "Samsung"
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Manufacturer found. | Manufacturer |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Update Manufacturer
Code samples
const inputBody = '{
"name": "Samsung"
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/manufacturers/{ID}',
{
method: 'PATCH',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.patch 'https://api.quoter.com/v1/manufacturers/{ID}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.patch('https://api.quoter.com/v1/manufacturers/{ID}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api.quoter.com/v1/manufacturers/{ID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X PATCH https://api.quoter.com/v1/manufacturers/{ID} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
PATCH /manufacturers/{ID}
Body parameter
{
"name": "Samsung"
}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| fields | query | string | false | One or more response fields, separated by commas. |
| body | body | ManufacturerUpdateRequest | true | Request body to update a Manufacturer. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | created_at |
| fields | id |
| fields | modified_at |
| fields | name |
Example responses
200 Response
{
"created_at": "2019-08-24T14:15:22Z",
"id": "manu_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "Samsung"
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Manufacturer found. | Manufacturer |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Quote Templates
List Quote Templates
Code samples
const headers = {
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/quote_templates',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.get 'https://api.quoter.com/v1/quote_templates',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.get('https://api.quoter.com/v1/quote_templates', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.quoter.com/v1/quote_templates", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X GET https://api.quoter.com/v1/quote_templates \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
GET /quote_templates
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| title | query | string | false | Filter records by those whose title is equal to. |
| sort_by | query | string | false | One or more sort fields, separated by commas. |
Enumerated Values
| Parameter | Value |
|---|---|
| sort_by | -created_at |
| sort_by | -modified_at |
| sort_by | -public_id |
| sort_by | -title |
| sort_by | created_at |
| sort_by | modified_at |
| sort_by | public_id |
| sort_by | title |
Example responses
200 Response
{
"data": [
{
"created_at": "2019-08-24T14:15:22Z",
"id": "tmpl_2lf68j5opaIrjmZmPZUwUXxP3R3",
"modified_at": "2019-08-24T14:15:22Z",
"slug": "sample-template",
"title": "Sample Template"
}
],
"has_more": false,
"total_count": 1
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Quote Templates found. | QuoteTemplateList |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Quotes
List Quotes
Code samples
const headers = {
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/quotes',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.get 'https://api.quoter.com/v1/quotes',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.get('https://api.quoter.com/v1/quotes', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.quoter.com/v1/quotes", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X GET https://api.quoter.com/v1/quotes \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
GET /quotes
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| created_at[gt] | query | date-time | false | Filter records by those whose created_at timestamp is greater than. |
| created_at[lt] | query | date-time | false | Filter records by those whose created_at timestamp is less than. |
| custom_number | query | string | false | Filter records by those whose custom_number value is equal to. |
| custom_number[cont] | query | string | false | Filter records by those whose custom_number contains the value. |
| draft | query | boolean | false | Filter records by those whose draft value is equal to. |
| email_status | query | string | false | Filter records by those whose email_status value is equal to. |
| expired_at[gt] | query | date-time | false | Filter records by those whose expired_at timestamp is greater than. |
| expired_at[lt] | query | date-time | false | Filter records by those whose expired_at timestamp is less than. |
| ids | query | string | false | Filter records by those whose id is contained in the comma separated list. |
| modified_at[gt] | query | date-time | false | Filter records by those whose modified_at timestamp is greater than. |
| modified_at[lt] | query | date-time | false | Filter records by those whose modified_at timestamp is less than. |
| name | query | string | false | Filter records by those whose name value is equal to. |
| name[cont] | query | string | false | Filter records by those whose name contains the value. |
| recurring_interval | query | string | false | Filter records by those whose recurring interval is equal to. |
| sort_by | query | string | false | One or more sort fields, separated by commas. |
| status | query | string | false | Filter records by those whose status value is equal to. |
| uuid | query | string | false | Filter records by those whose uuid value is equal to. |
| won_at[gt] | query | date-time | false | Filter records by those whose won_at timestamp is greater than. |
| won_at[lt] | query | date-time | false | Filter records by those whose won_at timestamp is less than. |
Enumerated Values
| Parameter | Value |
|---|---|
| sort_by | -created_at |
| sort_by | -expired_at |
| sort_by | -id |
| sort_by | -modified_at |
| sort_by | -name |
| sort_by | -won_at |
| sort_by | created_at |
| sort_by | expired_at |
| sort_by | id |
| sort_by | modified_at |
| sort_by | name |
| sort_by | won_at |
Example responses
200 Response
{
"data": [
{
"annual_cost_decimal": null,
"annual_discount_decimal": null,
"annual_discounted_subtotal_decimal": null,
"annual_margin_decimal": null,
"annual_subtotal_decimal": null,
"annual_tax_total_decimal": null,
"annual_total_decimal": null,
"annual_upfront_payments": null,
"billing_address_1": "4289 Reserve St",
"billing_address_2": null,
"billing_city": "Lakefield",
"billing_country_iso": "CA",
"billing_first_name": "John",
"billing_last_name": "Doe",
"billing_organization": "Microsoft",
"billing_region_iso": "ON",
"contact_id": "cont_1yTKYdrjvY7R04NDq57ZpufLFjk",
"created_at": "2019-08-24T14:15:22Z",
"currency_iso": "CAD",
"custom_number": "Quote Custom Number",
"draft": false,
"email_first_sent_at": null,
"email_last_sent_at": null,
"email_status": "sent",
"expired_at": "2019-08-24T14:15:22Z",
"flagged": false,
"id": "quot_2TSEPTEfnooIhvA83l78R0nEqR5",
"internal_notes": "some internal notes",
"modified_at": "2019-08-24T14:15:22Z",
"monthly_cost_decimal": "30.10",
"monthly_discount_decimal": "4.00",
"monthly_discounted_subtotal_decimal": "50.10",
"monthly_margin_decimal": "15.00",
"monthly_subtotal_decimal": "60.00",
"monthly_tax_total_decimal": "9.68",
"monthly_total_decimal": "61.00",
"monthly_upfront_payments": "1",
"name": "Sample Quote",
"number": "13",
"one_time_cost_decimal": "2.00",
"one_time_discount_decimal": "6.00",
"one_time_discounted_subtotal_decimal": "8.00",
"one_time_margin_decimal": "2.00",
"one_time_subtotal_decimal": "6.00",
"one_time_tax_total_decimal": "1.75",
"one_time_total_decimal": "10.75",
"owner_first_name": "Walter",
"owner_id": "user_2TSEPTEfnooIhvA83l78R0nEqR5",
"owner_last_name": "Melon",
"quarterly_cost_decimal": null,
"quarterly_discount_decimal": null,
"quarterly_discounted_subtotal_decimal": null,
"quarterly_margin_decimal": null,
"quarterly_subtotal_decimal": null,
"quarterly_tax_total_decimal": null,
"quarterly_total_decimal": null,
"quarterly_upfront_payments": null,
"revision": "3",
"semi_annual_cost_decimal": null,
"semi_annual_discount_decimal": null,
"semi_annual_discounted_subtotal_decimal": null,
"semi_annual_margin_decimal": null,
"semi_annual_subtotal_decimal": null,
"semi_annual_tax_total_decimal": null,
"semi_annual_total_decimal": null,
"semi_annual_upfront_payments": null,
"shipping_address_1": "2130 Thurston Dr",
"shipping_address_2": null,
"shipping_city": "Orleans",
"shipping_country_iso": "CA",
"shipping_decimal": "1.00",
"shipping_first_name": "Jane",
"shipping_last_name": "Doe",
"shipping_organization": "FedEx",
"shipping_region_iso": "ON",
"status": "pending",
"upfront_cost_decimal": "50.00",
"upfront_discount_decimal": "6.00",
"upfront_discounted_subtotal_decimal": "154.00",
"upfront_margin_decimal": "30.00",
"upfront_subtotal_decimal": "160.00",
"upfront_tax_total_decimal": "15.75",
"upfront_total_decimal": "173.00",
"uuid": "1436-e2a121e6-d4b3-4d6b-9ad3-e8b877f8580f",
"won_at": "2019-08-24T14:15:22Z"
}
],
"has_more": false,
"total_count": 1
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Quotes found. | QuoteList |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Create Quote
Code samples
const inputBody = '{
"appended_content": "Appended content goes here",
"contact_id": "cont_2r5WGA5WDExgSYmnZp0TVVQqFLA",
"cover_letter": "Cover letter details go here",
"currency_abbr": "CAD",
"name": "Draft Quote 1",
"template_id": "tmpl_2r5WHEQLKFsyKdyIj5daPCp7mjF"
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/quotes',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.post 'https://api.quoter.com/v1/quotes',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.post('https://api.quoter.com/v1/quotes', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.quoter.com/v1/quotes", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X POST https://api.quoter.com/v1/quotes \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
POST /quotes
Current limitations:
- All quotes will be a create as a Draft Quote
- Any Item associated to the supplied Quote Template will not result in a matching Line Item being created for the Quote.
- File attachments and custom fields associated with a Quote Template are also not being created for the Quote.
- Draft Quotes are created with the owner set as the user that created the API key in Quoter. Following the link provided in the response will only work for authenticated Quoter Users with Sales Manager and above permissions.
Body parameter
{
"appended_content": "Appended content goes here",
"contact_id": "cont_2r5WGA5WDExgSYmnZp0TVVQqFLA",
"cover_letter": "Cover letter details go here",
"currency_abbr": "CAD",
"name": "Draft Quote 1",
"template_id": "tmpl_2r5WHEQLKFsyKdyIj5daPCp7mjF"
}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| body | body | QuoteCreateRequest | true | Request body to create a Draft Quote. |
Example responses
200 Response
{
"id": "quot_2r5CZzZNKjHlB7FvizOgceEHUhK",
"url": "https://development.quoter.com/admin/quotes/draft_by_public_id/quot_2r5CZzZNKjHlB7FvizOgceEHUhK"
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Quote created. | QuoteCreateResponse |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Suppliers
List Suppliers
Code samples
const headers = {
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/suppliers',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.get 'https://api.quoter.com/v1/suppliers',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.get('https://api.quoter.com/v1/suppliers', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.quoter.com/v1/suppliers", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X GET https://api.quoter.com/v1/suppliers \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
GET /suppliers
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| created_at[gt] | query | date-time | false | Filter records by those whose created_at timestamp is greater than. |
| created_at[lt] | query | date-time | false | Filter records by those whose created_at timestamp is less than. |
| modified_at[gt] | query | date-time | false | Filter records by those whose modified_at timestamp is greater than. |
| modified_at[lt] | query | date-time | false | Filter records by those whose modified_at timestamp is less than. |
| name | query | string | false | Filter records by those whose name value is equal to. |
| name[cont] | query | string | false | Filter records by those whose name value contains. |
| limit | query | integer | false | Limit the number of records to return. Limit ranges from 1 to 100, and defaults to 100. |
| page | query | integer | false | Pagination record offset. Page starts at 1. |
| fields | query | string | false | One or more response fields, separated by commas. |
| sort_by | query | string | false | One or more sort fields, separated by commas. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | created_at |
| fields | id |
| fields | modified_at |
| fields | name |
| sort_by | -created_at |
| sort_by | -id |
| sort_by | -modified_at |
| sort_by | -name |
| sort_by | created_at |
| sort_by | id |
| sort_by | modified_at |
| sort_by | name |
Example responses
200 Response
{
"data": [
{
"created_at": "2019-08-24T14:15:22Z",
"id": "sup_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "Newegg"
}
],
"has_more": false,
"total_count": 1
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Suppliers found. | SupplierList |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Create Supplier
Code samples
const inputBody = '{
"name": "Newegg"
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/suppliers',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.post 'https://api.quoter.com/v1/suppliers',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.post('https://api.quoter.com/v1/suppliers', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.quoter.com/v1/suppliers", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X POST https://api.quoter.com/v1/suppliers \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
POST /suppliers
Body parameter
{
"name": "Newegg"
}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| fields | query | string | false | One or more response fields, separated by commas. |
| body | body | SupplierCreateRequest | true | Request body to create a Supplier. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | created_at |
| fields | id |
| fields | modified_at |
| fields | name |
Example responses
200 Response
{
"created_at": "2019-08-24T14:15:22Z",
"id": "sup_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "Newegg"
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Supplier created. | Supplier |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Delete Supplier
Code samples
const headers = {
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/suppliers/{ID}',
{
method: 'DELETE',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.delete 'https://api.quoter.com/v1/suppliers/{ID}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.delete('https://api.quoter.com/v1/suppliers/{ID}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api.quoter.com/v1/suppliers/{ID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X DELETE https://api.quoter.com/v1/suppliers/{ID} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
DELETE /suppliers/{ID}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
Example responses
401 Response
{
"errors": [
{
"detail": "Pagination page requested too high.",
"status": 400,
"title": "Bad Request"
}
]
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 204 | No Content | Record deleted. | None |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Fetch Supplier
Code samples
const headers = {
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/suppliers/{ID}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.get 'https://api.quoter.com/v1/suppliers/{ID}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.get('https://api.quoter.com/v1/suppliers/{ID}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.quoter.com/v1/suppliers/{ID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X GET https://api.quoter.com/v1/suppliers/{ID} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
GET /suppliers/{ID}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| fields | query | string | false | One or more response fields, separated by commas. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | created_at |
| fields | id |
| fields | modified_at |
| fields | name |
Example responses
200 Response
{
"created_at": "2019-08-24T14:15:22Z",
"id": "sup_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "Newegg"
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Supplier found. | Supplier |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Update Supplier
Code samples
const inputBody = '{
"name": "Newegg"
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'Bearer: access_token'
};
fetch('https://api.quoter.com/v1/suppliers/{ID}',
{
method: 'PATCH',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'Bearer: access_token'
}
result = RestClient.patch 'https://api.quoter.com/v1/suppliers/{ID}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer: access_token'
}
r = requests.patch('https://api.quoter.com/v1/suppliers/{ID}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer: access_token"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api.quoter.com/v1/suppliers/{ID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
# You can also use wget
curl -X PATCH https://api.quoter.com/v1/suppliers/{ID} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer: access_token'
PATCH /suppliers/{ID}
Body parameter
{
"name": "Newegg"
}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| fields | query | string | false | One or more response fields, separated by commas. |
| body | body | SupplierUpdateRequest | true | Request body to update a Supplier. |
Enumerated Values
| Parameter | Value |
|---|---|
| fields | created_at |
| fields | id |
| fields | modified_at |
| fields | name |
Example responses
200 Response
{
"created_at": "2019-08-24T14:15:22Z",
"id": "sup_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "Newegg"
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Supplier found. | Supplier |
| 401 | Unauthorized | Authorization invalid. | ErrorResponse |
| 404 | Not Found | Record not found. | ErrorResponse |
| 422 | Unprocessable Entity | Validation error in request. | ErrorResponse |
Schemas
AuthorizationRequest
{
"client_id": "cid_asdf1234",
"client_secret": "topsecret",
"grant_type": "client_credentials"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| client_id | string | true | none | none |
| client_secret | string | true | none | none |
| grant_type | string | true | none | none |
AuthorizationResponse
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkphbmUgRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.cMErWtEf7DxCXJl8C9q0L7ttkm-Ex54UWHsOCMGbtUc"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| access_token | string | false | none | none |
| refresh_token | string | false | none | none |
Category
{
"created_at": "2019-08-24T14:15:22Z",
"id": "cat_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "SSDs",
"parent_category": "Storage Devices",
"parent_category_id": "cat_1jAEZdbtkbLFBAU1Tt0ouKpiBUe"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| created_at | string(date-time) | false | none | none |
| id | string | false | none | none |
| modified_at | string(date-time) | false | none | none |
| name | string | false | none | none |
| parent_category | string | false | none | none |
| parent_category_id | string | false | none | none |
CategoryCreateRequest
{
"name": "SSDs",
"parent_category": "Storage Devices",
"parent_category_id": "cat_1jAEZdbtkbLFBAU1Tt0ouKpiBUe"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| name | string | true | none | none |
| parent_category | string | false | none | none |
| parent_category_id | string | false | none | none |
CategoryList
{
"data": [
{
"created_at": "2019-08-24T14:15:22Z",
"id": "cat_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "SSDs",
"parent_category": "Storage Devices",
"parent_category_id": "cat_1jAEZdbtkbLFBAU1Tt0ouKpiBUe"
}
],
"has_more": false,
"total_count": 1
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| data | [Category] | false | none | none |
| has_more | boolean | false | none | none |
| total_count | integer | false | none | none |
CategoryUpdateRequest
{
"name": "SSDs",
"parent_category": "Storage Devices",
"parent_category_id": "cat_1jAEZdbtkbLFBAU1Tt0ouKpiBUe"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| name | string | false | none | none |
| parent_category | string | false | none | Cannot be provided with parent_category_id. |
| parent_category_id | string | false | none | Cannot be provided with parent_category. |
Contact
{
"billing_address": "1021 W Hastings St",
"billing_address2": "#3200",
"billing_city": "Vancouver",
"billing_country_iso": "CA",
"billing_postal_code": "V5P-523",
"billing_region_iso": "BC",
"created_at": "string",
"email": "contact@quoter.com",
"first_name": "John",
"id": "cont_OcThl0ega2lTV4afll6qFrMDMBYyu",
"last_name": "Doe",
"mobile_phone": "(604) 539-5319",
"modified_at": "date-time",
"organization": "Quoter",
"shipping_address": "1021 W Hastings St",
"shipping_address2": "#3200",
"shipping_city": "Vancouver",
"shipping_country_iso": "CA",
"shipping_email": "contact@quoter.com",
"shipping_first_name": "John",
"shipping_label": "label",
"shipping_last_name": "C/O John Doe",
"shipping_organization": "Quoter",
"shipping_phone": "(604) 539-5319",
"shipping_postal_code": "V5P-523",
"shipping_region_iso": "BC",
"title": "Mr.",
"website": "quoter.com",
"work_phone": "(604) 539-5319"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| billing_address | string | false | none | none |
| billing_address2 | string | false | none | none |
| billing_city | string | false | none | none |
| billing_country_iso | string | false | none | none |
| billing_postal_code | string | false | none | none |
| billing_region_iso | string | false | none | none |
| created_at | string(data-time) | false | none | none |
| string | false | none | none | |
| first_name | string | false | none | none |
| id | string | false | none | none |
| last_name | string | false | none | none |
| mobile_phone | string | false | none | none |
| modified_at | string | false | none | none |
| organization | string | false | none | none |
| shipping_address | string | false | none | none |
| shipping_address2 | string | false | none | none |
| shipping_city | string | false | none | none |
| shipping_country_iso | string | false | none | none |
| shipping_email | string | false | none | none |
| shipping_first_name | string | false | none | none |
| shipping_label | string | false | none | none |
| shipping_last_name | string | false | none | none |
| shipping_organization | string | false | none | none |
| shipping_phone | string | false | none | none |
| shipping_postal_code | string | false | none | none |
| shipping_region_iso | string | false | none | none |
| title | string | false | none | none |
| website | string | false | none | none |
| work_phone | string | false | none | none |
ContactCreateRequest
{
"billing_address": "1021 W Hastings St",
"billing_address2": "#3200",
"billing_city": "Vancouver",
"billing_country_iso": "CA",
"billing_postal_code": "V5P-523",
"billing_region_iso": "BC",
"email": "contact@quoter.com",
"first_name": "John",
"last_name": "Doe",
"mobile_phone": "(604) 539-5319",
"organization": "Quoter",
"shipping_address": "1021 W Hastings St",
"shipping_address2": "#3200",
"shipping_city": "Vancouver",
"shipping_country_iso": "CA",
"shipping_email": "contact@quoter.com",
"shipping_first_name": "John",
"shipping_label": "label",
"shipping_last_name": "C/O John Doe",
"shipping_organization": "Quoter",
"shipping_phone": "(604) 539-5319",
"shipping_postal_code": "V5P-523",
"shipping_region_iso": "BC",
"title": "Mr.",
"website": "quoter.com",
"work_phone": "(604) 539-5319"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| billing_address | string | false | none | none |
| billing_address2 | string | false | none | none |
| billing_city | string | false | none | none |
| billing_country_iso | string | true | none | none |
| billing_postal_code | string | false | none | none |
| billing_region_iso | string | false | none | none |
| string | true | none | none | |
| first_name | string | true | none | none |
| last_name | string | true | none | none |
| mobile_phone | string | false | none | none |
| organization | string | true | none | none |
| shipping_address | string | false | none | none |
| shipping_address2 | string | false | none | none |
| shipping_city | string | false | none | none |
| shipping_country_iso | string | false | none | none |
| shipping_email | string | false | none | none |
| shipping_first_name | string | false | none | none |
| shipping_label | string | false | none | none |
| shipping_last_name | string | false | none | none |
| shipping_organization | string | false | none | none |
| shipping_phone | string | false | none | none |
| shipping_postal_code | string | false | none | none |
| shipping_region_iso | string | false | none | none |
| title | string | false | none | none |
| website | string | false | none | none |
| work_phone | string | false | none | none |
ContactList
{
"data": [
{
"billing_address": "1021 W Hastings St",
"billing_address2": "#3200",
"billing_city": "Vancouver",
"billing_country_iso": "CA",
"billing_postal_code": "V5P-523",
"billing_region_iso": "BC",
"created_at": "string",
"email": "contact@quoter.com",
"first_name": "John",
"id": "cont_OcThl0ega2lTV4afll6qFrMDMBYyu",
"last_name": "Doe",
"mobile_phone": "(604) 539-5319",
"modified_at": "date-time",
"organization": "Quoter",
"shipping_address": "1021 W Hastings St",
"shipping_address2": "#3200",
"shipping_city": "Vancouver",
"shipping_country_iso": "CA",
"shipping_email": "contact@quoter.com",
"shipping_first_name": "John",
"shipping_label": "label",
"shipping_last_name": "C/O John Doe",
"shipping_organization": "Quoter",
"shipping_phone": "(604) 539-5319",
"shipping_postal_code": "V5P-523",
"shipping_region_iso": "BC",
"title": "Mr.",
"website": "quoter.com",
"work_phone": "(604) 539-5319"
}
],
"has_more": false,
"total_count": 1
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| data | [Contact] | false | none | none |
| has_more | boolean | false | none | none |
| total_count | integer | false | none | none |
ContactUpdateRequest
{
"billing_address": "1021 W Hastings St",
"billing_address2": "#3200",
"billing_city": "Vancouver",
"billing_country_iso": "CA",
"billing_postal_code": "V5P-523",
"billing_region_iso": "BC",
"email": "contact@quoter.com",
"first_name": "John",
"last_name": "Doe",
"mobile_phone": "(604) 539-5319",
"organization": "Quoter",
"shipping_address": "1021 W Hastings St",
"shipping_address2": "#3200",
"shipping_city": "Vancouver",
"shipping_country_iso": "CA",
"shipping_email": "contact@quoter.com",
"shipping_first_name": "John",
"shipping_label": "label",
"shipping_last_name": "C/O John Doe",
"shipping_organization": "Quoter",
"shipping_phone": "(604) 539-5319",
"shipping_postal_code": "V5P-523",
"shipping_region_iso": "BC",
"title": "Mr.",
"website": "quoter.com",
"work_phone": "(604) 539-5319"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| billing_address | string | false | none | none |
| billing_address2 | string | false | none | none |
| billing_city | string | false | none | none |
| billing_country_iso | string | false | none | none |
| billing_postal_code | string | false | none | none |
| billing_region_iso | string | false | none | none |
| string | false | none | none | |
| first_name | string | false | none | none |
| last_name | string | false | none | none |
| mobile_phone | string | false | none | none |
| organization | string | false | none | none |
| shipping_address | string | false | none | none |
| shipping_address2 | string | false | none | none |
| shipping_city | string | false | none | none |
| shipping_country_iso | string | false | none | none |
| shipping_email | string | false | none | none |
| shipping_first_name | string | false | none | none |
| shipping_label | string | false | none | none |
| shipping_last_name | string | false | none | none |
| shipping_organization | string | false | none | none |
| shipping_phone | string | false | none | none |
| shipping_postal_code | string | false | none | none |
| shipping_region_iso | string | false | none | none |
| title | string | false | none | none |
| website | string | false | none | none |
| work_phone | string | false | none | none |
DatafeedsSupplier
{
"created_at": "2019-08-24T14:15:22Z",
"default_taxable": true,
"field_mapping": {
"category_name": "csvheader4",
"manufacturer": "csvheader3",
"mpn": "csvheader1",
"name": "csvheader2",
"price": "csvheader6",
"supplier_sku": "csvheader5",
"taxable": "csvheader8",
"warehouses": [
{
"name": "wh1",
"quantity": "wh1_qty"
}
],
"weight": "csvheader7"
},
"id": "supp_2uBmQcMgHinlJgyv4or3dCKwWIb",
"modified_at": "2019-08-24T14:15:22Z",
"name": "Example Supplier",
"url": "https://example.com"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| created_at | string(date-time) | false | none | none |
| default_taxable | boolean | false | none | none |
| field_mapping | object | false | none | none |
| » category_name | string | false | none | none |
| » manufacturer | string | false | none | none |
| » mpn | string | false | none | none |
| » name | string | false | none | none |
| » price | string | false | none | none |
| » supplier_sku | string | false | none | none |
| » taxable | string | false | none | none |
| » warehouses | [WarehouseMapping] | false | none | none |
| » weight | string | false | none | none |
| id | string | false | none | none |
| modified_at | string(date-time) | false | none | none |
| name | string | false | none | none |
| url | string | false | none | none |
DatafeedsSupplierItem
{
"category": "Networking",
"id": "sitm_2tdpIVSQAR8jy5nILOG9QBJYBdF",
"mpn": "AW30004",
"name": "Example Name",
"price_amount_decimal": "1202",
"semantic_item_id": "smitm_2tUylOc8T55BoUDtwLMbTY4Sj1x",
"sku": "UP16C236ZZNEAA",
"supplier_default_taxable": true,
"supplier_id": "supp_2tUykybikauznOTjgNzGPq0KFkz",
"supplier_name": "Example Name",
"taxable": true,
"warehouses": [],
"weight_decimal": "1000"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| category | string | false | none | none |
| id | string | false | none | none |
| mpn | string | false | none | none |
| name | string | false | none | none |
| price_amount_decimal | string | false | none | none |
| semantic_item_id | string | false | none | none |
| sku | string | false | none | none |
| supplier_default_taxable | boolean | false | none | none |
| supplier_id | string | false | none | none |
| supplier_name | string | false | none | none |
| taxable | boolean | false | none | none |
| warehouses | array | false | none | none |
| weight_decimal | string | false | none | none |
DatafeedsSupplierItemList
{
"data": [
{
"category": "Networking",
"id": "sitm_2tdpIVSQAR8jy5nILOG9QBJYBdF",
"mpn": "AW30004",
"name": "Example Name",
"price_amount_decimal": "1202",
"semantic_item_id": "smitm_2tUylOc8T55BoUDtwLMbTY4Sj1x",
"sku": "UP16C236ZZNEAA",
"supplier_default_taxable": true,
"supplier_id": "supp_2tUykybikauznOTjgNzGPq0KFkz",
"supplier_name": "Example Name",
"taxable": true,
"warehouses": [],
"weight_decimal": "1000"
}
],
"has_more": false,
"total_count": 1
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| data | [DatafeedsSupplierItem] | false | none | none |
| has_more | boolean | false | none | none |
| total_count | integer | false | none | none |
DatafeedsSupplierList
{
"data": [
{
"created_at": "2019-08-24T14:15:22Z",
"default_taxable": true,
"field_mapping": {
"category_name": "csvheader4",
"manufacturer": "csvheader3",
"mpn": "csvheader1",
"name": "csvheader2",
"price": "csvheader6",
"supplier_sku": "csvheader5",
"taxable": "csvheader8",
"warehouses": [
{
"name": "wh1",
"quantity": "wh1_qty"
}
],
"weight": "csvheader7"
},
"id": "supp_2uBmQcMgHinlJgyv4or3dCKwWIb",
"modified_at": "2019-08-24T14:15:22Z",
"name": "Example Supplier",
"url": "https://example.com"
}
],
"has_more": false,
"total_count": 1
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| data | [DatafeedsSupplier] | false | none | none |
| has_more | boolean | false | none | none |
| total_count | integer | false | none | none |
ErrorResponse
{
"errors": [
{
"detail": "Pagination page requested too high.",
"status": 400,
"title": "Bad Request"
}
]
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| errors | [object] | false | none | none |
| » detail | string | false | none | none |
| » status | integer | false | none | none |
| » title | string | false | none | none |
Item
{
"allow_decimal_quantities": true,
"category": "SSDs",
"category_id": "cat_OcThl8SOeE8w6JYUznfrnQGdp94",
"code": "MZ-V7S1T0B/AM",
"cost_decimal": 50.5,
"cost_type": "amount",
"created_at": "2019-08-24T14:15:22Z",
"description": "The 970 EVO Plus reaches sequential read/write speeds up to 3,500/3,300 MB/s, up to 53% faster than the 970 EVO.",
"id": "item_OcThl0eqYyTVQzll6qFrMDMBYyu",
"internal_note": "Check warehouse for inventory before ordering.",
"manufacturer": "Samsung",
"manufacturer_id": "manu_OcThlEWcbhAG52u3vLJodwnV88k",
"modified_at": "2019-08-24T14:15:22Z",
"name": "SAMSUNG 970 EVO PLUS M.2 2280 1TB PCIe Gen 3.0 x4",
"percentage_price_category_ids": [
"cat_OcThlTV6Tama8RH5Zh4Jfw1fhJC"
],
"percentage_price_decimal": 50.5,
"price_decimal": 50.5,
"pricing_scheme": "per_unit",
"quantity_help_tip": "Enter the number of units required.",
"recurring": true,
"recurring_interval": "annually",
"restrict_discounting": true,
"show_option_prices": true,
"sku": "N82E16820147743",
"supplier": "Newegg",
"supplier_id": "sup_OcThlLwzLAM7m5eK1WEKkXUQZtm",
"taxable": true,
"weight_decimal": 50.5
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| allow_decimal_quantities | boolean | false | none | none |
| category | string | false | none | Required; cannot be provided with category_id. |
| category_id | string | false | none | Required; cannot be provided with category. |
| code | string | false | none | none |
| cost_decimal | string | false | none | If provided, pricing_scheme must be flat, per_unit, or percentage. |
| cost_type | string | false | none | If provided, pricing_scheme must be flat, per_unit, or percentage; required if cost is provided. Defaults to amount if not specified. |
| created_at | string(date-time) | false | none | none |
| description | string | false | none | none |
| id | string | false | none | none |
| internal_note | string | false | none | none |
| manufacturer | string | false | none | Cannot be provided with manufacturer_id. |
| manufacturer_id | string | false | none | Cannot be provided with manufacturer. |
| modified_at | string(date-time) | false | none | none |
| name | string | false | none | required |
| percentage_price_category_ids | [string] | false | none | If provided, pricing_scheme must be percentage; required if pricing_scheme is percentage. |
| percentage_price_decimal | string | false | none | If provided, pricing_scheme must be percentage; required if pricing scheme is percentage. |
| price_decimal | string | false | none | If provided, pricing_scheme must be flat or per_unit; validate decimal. |
| pricing_scheme | string | false | none | Defaults to per_unit if omitted. |
| quantity_help_tip | string | false | none | none |
| recurring | boolean | false | none | none |
| recurring_interval | string | false | none | If provided, recurring must be true; required if recurring is true. |
| restrict_discounting | boolean | false | none | none |
| show_option_prices | boolean | false | none | none |
| sku | string | false | none | none |
| supplier | string | false | none | Cannot be provided with supplier_id. |
| supplier_id | string | false | none | Cannot be provided with supplier. |
| taxable | boolean | false | none | Defaults to per_unit if omitted. |
| weight_decimal | string | false | none | none |
Enumerated Values
| Property | Value |
|---|---|
| cost_type | amount |
| cost_type | percentage |
| pricing_scheme | per_unit |
| pricing_scheme | flat |
| pricing_scheme | tiered_volume |
| pricing_scheme | tiered_stepped |
| pricing_scheme | percentage |
| recurring_interval | monthly |
| recurring_interval | quarterly |
| recurring_interval | semi_annually |
| recurring_interval | annually |
ItemCreateRequest
{
"allow_decimal_quantities": true,
"category": "SSDs",
"category_id": "cat_OcThl8SOeE8w6JYUznfrnQGdp94",
"code": "MZ-V7S1T0B/AM",
"cost_decimal": 50.5,
"cost_type": "amount",
"description": "The 970 EVO Plus reaches sequential read/write speeds up to 3,500/3,300 MB/s, up to 53% faster than the 970 EVO.",
"internal_note": "Check warehouse for inventory before ordering.",
"manufacturer": "Samsung",
"manufacturer_id": "manu_OcThlEWcbhAG52u3vLJodwnV88k",
"name": "SAMSUNG 970 EVO PLUS M.2 2280 1TB PCIe Gen 3.0 x4",
"percentage_price_category_ids": [
"cat_OcThlTV6Tama8RH5Zh4Jfw1fhJC"
],
"percentage_price_decimal": 50.5,
"price_decimal": 50.5,
"pricing_scheme": "per_unit",
"quantity_help_tip": "Enter the number of units required.",
"recurring": true,
"recurring_interval": "annually",
"restrict_discounting": true,
"show_option_prices": true,
"sku": "N82E16820147743",
"supplier": "Newegg",
"supplier_id": "sup_OcThlLwzLAM7m5eK1WEKkXUQZtm",
"taxable": true,
"weight_decimal": 50.5
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| allow_decimal_quantities | boolean | false | none | none |
| category | string | false | none | Required; cannot be provided with category_id. |
| category_id | string | true | none | Required; cannot be provided with category. |
| code | string | false | none | none |
| cost_decimal | string | false | none | If provided, pricing_scheme must be flat, per_unit, or percentage. |
| cost_type | string | false | none | If provided, pricing_scheme must be flat, per_unit, or percentage; required if cost is provided. Defaults to amount if not specified. |
| description | string | false | none | none |
| internal_note | string | false | none | none |
| manufacturer | string | false | none | Cannot be provided with manufacturer_id. |
| manufacturer_id | string | false | none | Cannot be provided with manufacturer. |
| name | string | true | none | none |
| percentage_price_category_ids | [string] | false | none | If provided, pricing_scheme must be percentage; required if pricing_scheme is percentage. |
| percentage_price_decimal | string | false | none | If provided, pricing_scheme must be percentage; required if pricing scheme is percentage. |
| price_decimal | string | false | none | If provided, pricing_scheme must be flat or per_unit; validate decimal. |
| pricing_scheme | string | false | none | Defaults to per_unit if omitted. |
| quantity_help_tip | string | false | none | none |
| recurring | boolean | false | none | none |
| recurring_interval | string | false | none | If provided, recurring must be true; required if recurring is true. |
| restrict_discounting | boolean | false | none | none |
| show_option_prices | boolean | false | none | none |
| sku | string | false | none | none |
| supplier | string | false | none | Cannot be provided with supplier_id. |
| supplier_id | string | false | none | Cannot be provided with supplier. |
| taxable | boolean | false | none | Defaults to per_unit if omitted. |
| weight_decimal | string | false | none | none |
Enumerated Values
| Property | Value |
|---|---|
| cost_type | amount |
| cost_type | percentage |
| pricing_scheme | per_unit |
| pricing_scheme | flat |
| pricing_scheme | tiered_volume |
| pricing_scheme | tiered_stepped |
| pricing_scheme | percentage |
| recurring_interval | monthly |
| recurring_interval | quarterly |
| recurring_interval | semi_annually |
| recurring_interval | annually |
ItemGroup
{
"created_at": "2019-08-24T14:15:22Z",
"id": "igrp_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "West Coast"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| created_at | string(date-time) | false | none | none |
| id | string | false | none | none |
| modified_at | string(date-time) | false | none | none |
| name | string | false | none | none |
ItemGroupCreateRequest
{
"name": "West Coast"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| name | string | true | none | none |
ItemGroupItemAssignment
{
"created_at": "2019-08-24T14:15:22Z",
"id": "igia_1lylwamEQiFCXsDnDl3M4xQsJiH",
"item_group_id": "igrp_1lqyMI1VF074qctA1lpvhFK3PuY",
"item_id": "item_OcThl0eqYyTVQzll6qFrMDMBYyu",
"modified_at": "2019-08-24T14:15:22Z"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| created_at | string(date-time) | false | none | none |
| id | string | false | none | none |
| item_group_id | string | false | none | none |
| item_id | string | false | none | none |
| modified_at | string(date-time) | false | none | none |
ItemGroupItemAssignmentCreateRequest
{
"item_group_id": "igrp_1lqyMI1VF074qctA1lpvhFK3PuY",
"item_id": "item_OcThl0eqYyTVQzll6qFrMDMBYyu"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| item_group_id | string | true | none | none |
| item_id | string | true | none | none |
ItemGroupItemAssignmentList
{
"data": [
{
"created_at": "2019-08-24T14:15:22Z",
"id": "igia_1lylwamEQiFCXsDnDl3M4xQsJiH",
"item_group_id": "igrp_1lqyMI1VF074qctA1lpvhFK3PuY",
"item_id": "item_OcThl0eqYyTVQzll6qFrMDMBYyu",
"modified_at": "2019-08-24T14:15:22Z"
}
],
"has_more": false,
"total_count": 1
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| data | [ItemGroupItemAssignment] | false | none | none |
| has_more | boolean | false | none | none |
| total_count | integer | false | none | none |
ItemGroupList
{
"data": [
{
"created_at": "2019-08-24T14:15:22Z",
"id": "igrp_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "West Coast"
}
],
"has_more": false,
"total_count": 1
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| data | [ItemGroup] | false | none | none |
| has_more | boolean | false | none | none |
| total_count | integer | false | none | none |
ItemGroupUpdateRequest
{
"name": "West Coast"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| name | string | true | none | none |
ItemList
{
"data": [
{
"allow_decimal_quantities": true,
"category": "SSDs",
"category_id": "cat_OcThl8SOeE8w6JYUznfrnQGdp94",
"code": "MZ-V7S1T0B/AM",
"cost_decimal": 50.5,
"cost_type": "amount",
"created_at": "2019-08-24T14:15:22Z",
"description": "The 970 EVO Plus reaches sequential read/write speeds up to 3,500/3,300 MB/s, up to 53% faster than the 970 EVO.",
"id": "item_OcThl0eqYyTVQzll6qFrMDMBYyu",
"internal_note": "Check warehouse for inventory before ordering.",
"manufacturer": "Samsung",
"manufacturer_id": "manu_OcThlEWcbhAG52u3vLJodwnV88k",
"modified_at": "2019-08-24T14:15:22Z",
"name": "SAMSUNG 970 EVO PLUS M.2 2280 1TB PCIe Gen 3.0 x4",
"percentage_price_category_ids": [
"cat_OcThlTV6Tama8RH5Zh4Jfw1fhJC"
],
"percentage_price_decimal": 50.5,
"price_decimal": 50.5,
"pricing_scheme": "per_unit",
"quantity_help_tip": "Enter the number of units required.",
"recurring": true,
"recurring_interval": "annually",
"restrict_discounting": true,
"show_option_prices": true,
"sku": "N82E16820147743",
"supplier": "Newegg",
"supplier_id": "sup_OcThlLwzLAM7m5eK1WEKkXUQZtm",
"taxable": true,
"weight_decimal": 50.5
}
],
"has_more": false,
"total_count": 1
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| data | [Item] | false | none | none |
| has_more | boolean | false | none | none |
| total_count | integer | false | none | none |
ItemOption
{
"allow_multiple_values": false,
"created_at": "2019-08-24T14:15:22Z",
"description": "<p>Standard description</p>",
"extended_description": "<p>Longer description.</p>",
"id": "iopt_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"item_id": "item_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "Disk Size",
"required": false,
"sort_order": 0
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| allow_multiple_values | boolean | false | none | none |
| created_at | string(date-time) | false | none | none |
| description | string | false | none | none |
| extended_description | string | false | none | none |
| id | string | false | none | none |
| item_id | string | false | none | none |
| modified_at | string(date-time) | false | none | none |
| name | string | false | none | none |
| required | boolean | false | none | none |
| sort_order | integer | false | none | none |
ItemOptionCreateRequest
{
"allow_multiple_values": false,
"description": "<p>Standard description</p>",
"extended_description": "<p>Longer description.</p>",
"item_id": "item_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"name": "Disk Size",
"required": false,
"sort_order": 0
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| allow_multiple_values | boolean | false | none | none |
| description | string | false | none | none |
| extended_description | string | false | none | none |
| item_id | string | true | none | none |
| name | string | true | none | none |
| required | boolean | false | none | none |
| sort_order | integer | false | none | none |
ItemOptionList
{
"data": [
{
"allow_multiple_values": false,
"created_at": "2019-08-24T14:15:22Z",
"description": "<p>Standard description</p>",
"extended_description": "<p>Longer description.</p>",
"id": "iopt_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"item_id": "item_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "Disk Size",
"required": false,
"sort_order": 0
}
],
"has_more": false,
"total_count": 1
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| data | [ItemOption] | false | none | none |
| has_more | boolean | false | none | none |
| total_count | integer | false | none | none |
ItemOptionUpdateRequest
{
"allow_multiple_values": true,
"description": "<p>Standard description</p>",
"extended_description": "<p>Longer description.</p>",
"name": "Disk Size",
"required": true,
"sort_order": 1
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| allow_multiple_values | boolean | false | none | none |
| description | string | false | none | none |
| extended_description | string | false | none | none |
| name | string | false | none | none |
| required | boolean | false | none | none |
| sort_order | integer | false | none | none |
ItemOptionValue
{
"code": "MPN123",
"cost_decimal": "50.50",
"cost_type": "amount",
"created_at": "2019-08-24T14:15:22Z",
"id": "iov_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"item_id": "item_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"item_option_id": "iopt_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "1TB",
"price_decimal": "50.50",
"pricing_scheme": "amount"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| code | string | false | none | none |
| cost_decimal | string | false | none | none |
| cost_type | string | false | none | Defaults to amount if not specified. |
| created_at | string(date-time) | false | none | none |
| id | string | false | none | none |
| item_id | string | false | none | none |
| item_option_id | string | false | none | none |
| modified_at | string(date-time) | false | none | none |
| name | string | false | none | none |
| price_decimal | string | false | none | none |
| pricing_scheme | string | false | none | none |
Enumerated Values
| Property | Value |
|---|---|
| cost_type | amount |
| cost_type | percentage |
| pricing_scheme | amount |
| pricing_scheme | percentage |
| pricing_scheme | compound_percentage |
ItemOptionValueCreateRequest
{
"code": "MPN123",
"cost_decimal": "50.50",
"cost_type": "amount",
"item_option_id": "iopt_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"name": "1TB",
"price_decimal": "50.50",
"pricing_scheme": "amount",
"sort_order": 1
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| code | string | false | none | none |
| cost_decimal | string | false | none | none |
| cost_type | string | false | none | Defaults to amount if not specified. |
| item_option_id | string | true | none | none |
| name | string | true | none | none |
| price_decimal | string | false | none | none |
| pricing_scheme | string | false | none | none |
| sort_order | integer | false | none | none |
Enumerated Values
| Property | Value |
|---|---|
| cost_type | amount |
| cost_type | percentage |
| pricing_scheme | amount |
| pricing_scheme | percentage |
| pricing_scheme | compound_percentage |
ItemOptionValueList
{
"data": [
{
"code": "MPN123",
"cost_decimal": "50.50",
"cost_type": "amount",
"created_at": "2019-08-24T14:15:22Z",
"id": "iov_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"item_id": "item_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"item_option_id": "iopt_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "1TB",
"price_decimal": "50.50",
"pricing_scheme": "amount"
}
],
"has_more": false,
"total_count": 1
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| data | [ItemOptionValue] | false | none | none |
| has_more | boolean | false | none | none |
| total_count | integer | false | none | none |
ItemOptionValueUpdateRequest
{
"code": "MPN123",
"cost_decimal": "50.50",
"cost_type": "amount",
"name": "1TB",
"price_decimal": "50.50",
"pricing_scheme": "amount",
"sort_order": 1
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| code | string | false | none | none |
| cost_decimal | string | false | none | none |
| cost_type | string | false | none | Defaults to amount if an empty value is specified. |
| name | string | false | none | none |
| price_decimal | string | false | none | none |
| pricing_scheme | string | false | none | none |
| sort_order | integer | false | none | none |
Enumerated Values
| Property | Value |
|---|---|
| cost_type | amount |
| cost_type | percentage |
| pricing_scheme | amount |
| pricing_scheme | percentage |
| pricing_scheme | compound_percentage |
ItemTier
{
"cost_decimal": "50.50",
"cost_type": "amount",
"created_at": "2019-08-24T14:15:22Z",
"id": "tier_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"item_id": "item_OcThl0eqYyTVQzll6qFrMDMBYyu",
"lower_boundary": 0,
"modified_at": "2019-08-24T14:15:22Z",
"price_decimal": "50.50"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| cost_decimal | string | false | none | none |
| cost_type | string | false | none | Required if cost_decimal is provided. Defaults to amount if not specified. |
| created_at | string(date-time) | false | none | none |
| id | string | false | none | none |
| item_id | string | false | none | none |
| lower_boundary | integer | false | none | A lower_boundary of 0 must exist before other values can be created. An existing lower_boundary of 0 cannot be updated. |
| modified_at | string(date-time) | false | none | none |
| price_decimal | string | false | none | none |
Enumerated Values
| Property | Value |
|---|---|
| cost_type | amount |
| cost_type | percentage |
ItemTierCreateRequest
{
"cost_decimal": "50.50",
"cost_type": "amount",
"created_at": "2019-08-24T14:15:22Z",
"item_id": "item_OcThl0eqYyTVQzll6qFrMDMBYyu",
"lower_boundary": 0,
"modified_at": "2019-08-24T14:15:22Z",
"price_decimal": "50.50"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| cost_decimal | string | false | none | none |
| cost_type | string | false | none | Required if cost_decimal is provided. Defaults to amount if not specified. |
| created_at | string(date-time) | false | none | none |
| item_id | string | true | none | none |
| lower_boundary | integer | true | none | A lower_boundary of 0 must exist before other values can be created. |
| modified_at | string(date-time) | false | none | none |
| price_decimal | string | false | none | none |
Enumerated Values
| Property | Value |
|---|---|
| cost_type | amount |
| cost_type | percentage |
ItemTierList
{
"data": [
{
"cost_decimal": "50.50",
"cost_type": "amount",
"created_at": "2019-08-24T14:15:22Z",
"id": "tier_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"item_id": "item_OcThl0eqYyTVQzll6qFrMDMBYyu",
"lower_boundary": 0,
"modified_at": "2019-08-24T14:15:22Z",
"price_decimal": "50.50"
}
],
"has_more": false,
"total_count": 1
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| data | [ItemTier] | false | none | none |
| has_more | boolean | false | none | none |
| total_count | integer | false | none | none |
ItemTierUpdateRequest
{
"cost_decimal": "50.50",
"cost_type": "amount",
"created_at": "2019-08-24T14:15:22Z",
"item_id": "item_OcThl0eqYyTVQzll6qFrMDMBYyu",
"lower_boundary": 1,
"modified_at": "2019-08-24T14:15:22Z",
"price_decimal": "50.50"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| cost_decimal | string | false | none | none |
| cost_type | string | false | none | Required if cost_decimal is provided. Defaults to amount if not specified. |
| created_at | string(date-time) | false | none | none |
| item_id | string | false | none | none |
| lower_boundary | integer | false | none | An existing lower_boundary of 0 cannot be updated. |
| modified_at | string(date-time) | false | none | none |
| price_decimal | string | false | none | none |
Enumerated Values
| Property | Value |
|---|---|
| cost_type | amount |
| cost_type | percentage |
ItemUpdateRequest
{
"allow_decimal_quantities": true,
"category": "SSDs",
"category_id": "cat_OcThl8SOeE8w6JYUznfrnQGdp94",
"code": "MZ-V7S1T0B/AM",
"cost_decimal": 50.5,
"cost_type": "amount",
"description": "The 970 EVO Plus reaches sequential read/write speeds up to 3,500/3,300 MB/s, up to 53% faster than the 970 EVO.",
"internal_note": "Check warehouse for inventory before ordering.",
"manufacturer": "Samsung",
"manufacturer_id": "manu_OcThlEWcbhAG52u3vLJodwnV88k",
"name": "SAMSUNG 970 EVO PLUS M.2 2280 1TB PCIe Gen 3.0 x4",
"percentage_price_category_ids": [
"cat_OcThlTV6Tama8RH5Zh4Jfw1fhJC"
],
"percentage_price_decimal": 50.5,
"price_decimal": 50.5,
"pricing_scheme": "per_unit",
"quantity_help_tip": "Enter the number of units required.",
"recurring": true,
"recurring_interval": "annually",
"restrict_discounting": true,
"show_option_prices": true,
"sku": "N82E16820147743",
"supplier": "Newegg",
"supplier_id": "sup_OcThlLwzLAM7m5eK1WEKkXUQZtm",
"taxable": true,
"weight_decimal": 50.5
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| allow_decimal_quantities | boolean | false | none | none |
| category | string | false | none | Cannot be provided with category_id. |
| category_id | string | false | none | Cannot be provided with category. |
| code | string | false | none | none |
| cost_decimal | string | false | none | If provided, pricing_scheme must be flat, per_unit, or percentage. |
| cost_type | string | false | none | If provided, pricing_scheme must be flat, per_unit, or percentage; required if cost is provided. Defaults to amount if an empty value is specified. |
| description | string | false | none | none |
| internal_note | string | false | none | none |
| manufacturer | string | false | none | Cannot be provided with manufacturer_id. |
| manufacturer_id | string | false | none | Cannot be provided with manufacturer. |
| name | string | false | none | none |
| percentage_price_category_ids | [string] | false | none | If provided, pricing_scheme must be percentage; required if pricing_scheme is percentage. |
| percentage_price_decimal | string | false | none | If provided, pricing_scheme must be percentage; required if pricing scheme is percentage. |
| price_decimal | string | false | none | If provided, pricing_scheme must be flat or per_unit; validate decimal. |
| pricing_scheme | string | false | none | Defaults to per_unit if omitted. |
| quantity_help_tip | string | false | none | none |
| recurring | boolean | false | none | none |
| recurring_interval | string | false | none | If provided, recurring must be true; required if recurring is true. |
| restrict_discounting | boolean | false | none | none |
| show_option_prices | boolean | false | none | none |
| sku | string | false | none | none |
| supplier | string | false | none | Cannot be provided with supplier_id. |
| supplier_id | string | false | none | Cannot be provided with supplier. |
| taxable | boolean | false | none | Defaults to per_unit if omitted. |
| weight_decimal | string | false | none | none |
Enumerated Values
| Property | Value |
|---|---|
| cost_type | amount |
| cost_type | percentage |
| pricing_scheme | per_unit |
| pricing_scheme | flat |
| pricing_scheme | tiered_volume |
| pricing_scheme | tiered_stepped |
| pricing_scheme | percentage |
| recurring_interval | monthly |
| recurring_interval | quarterly |
| recurring_interval | semi_annually |
| recurring_interval | annually |
LineItem
{
"category": "Desktop",
"created_at": "2019-08-24T14:15:22Z",
"description": "Item Description",
"id": "litm_2r5WHJ1RvX8aCEyhQA6VhWpLuAb",
"manufacturer": "Acme Corp",
"modified_at": "2019-08-24T14:15:22Z",
"name": "My Item",
"part_number": "string",
"quantity": 0,
"recurring": true,
"supplier": "Acme Supplier",
"supplier_sku": "string",
"taxable": true,
"unit_cost": 0,
"unit_price": 0
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| category | string | false | none | none |
| created_at | string(date-time) | false | none | none |
| description | string | false | none | none |
| id | string | false | none | none |
| manufacturer | string | false | none | none |
| modified_at | string(date-time) | false | none | none |
| name | string | false | none | none |
| part_number | string | false | none | none |
| quantity | number | false | none | none |
| recurring | boolean | false | none | none |
| supplier | string | false | none | none |
| supplier_sku | string | false | none | none |
| taxable | boolean | false | none | none |
| unit_cost | number | false | none | none |
| unit_price | number | false | none | none |
LineItemCreateRequest
{
"category": "Desktop",
"description": "Sample Description",
"manufacturer": "Acme Corp",
"name": "Sample Item",
"part_number": "string",
"quantity": 10,
"quote_id": "quot_2r5WHEQLKFsyKdyIj5daPCp7mjF",
"recurring": true,
"supplier": "Acme supplier",
"supplier_sku": "string",
"taxable": true,
"unit_cost": 0,
"unit_price": 0
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| category | string | true | none | none |
| description | string | false | none | none |
| manufacturer | string | false | none | none |
| name | string | true | none | none |
| part_number | string | false | none | none |
| quantity | number | true | none | none |
| quote_id | string | true | none | none |
| recurring | boolean | false | none | none |
| supplier | string | false | none | none |
| supplier_sku | string | false | none | none |
| taxable | boolean | false | none | none |
| unit_cost | number | false | none | none |
| unit_price | number | false | none | none |
Manufacturer
{
"created_at": "2019-08-24T14:15:22Z",
"id": "manu_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "Samsung"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| created_at | string(date-time) | false | none | none |
| id | string | false | none | none |
| modified_at | string(date-time) | false | none | none |
| name | string | false | none | none |
ManufacturerCreateRequest
{
"name": "Samsung"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| name | string | true | none | none |
ManufacturerList
{
"data": [
{
"created_at": "2019-08-24T14:15:22Z",
"id": "manu_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "Samsung"
}
],
"has_more": false,
"total_count": 1
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| data | [Manufacturer] | false | none | none |
| has_more | boolean | false | none | none |
| total_count | integer | false | none | none |
ManufacturerUpdateRequest
{
"name": "Samsung"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| name | string | true | none | none |
Quote
{
"annual_cost_decimal": null,
"annual_discount_decimal": null,
"annual_discounted_subtotal_decimal": null,
"annual_margin_decimal": null,
"annual_subtotal_decimal": null,
"annual_tax_total_decimal": null,
"annual_total_decimal": null,
"annual_upfront_payments": null,
"billing_address_1": "4289 Reserve St",
"billing_address_2": null,
"billing_city": "Lakefield",
"billing_country_iso": "CA",
"billing_first_name": "John",
"billing_last_name": "Doe",
"billing_organization": "Microsoft",
"billing_region_iso": "ON",
"contact_id": "cont_1yTKYdrjvY7R04NDq57ZpufLFjk",
"created_at": "2019-08-24T14:15:22Z",
"currency_iso": "CAD",
"custom_number": "Quote Custom Number",
"draft": false,
"email_first_sent_at": null,
"email_last_sent_at": null,
"email_status": "sent",
"expired_at": "2019-08-24T14:15:22Z",
"flagged": false,
"id": "quot_2TSEPTEfnooIhvA83l78R0nEqR5",
"internal_notes": "some internal notes",
"modified_at": "2019-08-24T14:15:22Z",
"monthly_cost_decimal": "30.10",
"monthly_discount_decimal": "4.00",
"monthly_discounted_subtotal_decimal": "50.10",
"monthly_margin_decimal": "15.00",
"monthly_subtotal_decimal": "60.00",
"monthly_tax_total_decimal": "9.68",
"monthly_total_decimal": "61.00",
"monthly_upfront_payments": "1",
"name": "Sample Quote",
"number": "13",
"one_time_cost_decimal": "2.00",
"one_time_discount_decimal": "6.00",
"one_time_discounted_subtotal_decimal": "8.00",
"one_time_margin_decimal": "2.00",
"one_time_subtotal_decimal": "6.00",
"one_time_tax_total_decimal": "1.75",
"one_time_total_decimal": "10.75",
"owner_first_name": "Walter",
"owner_id": "user_2TSEPTEfnooIhvA83l78R0nEqR5",
"owner_last_name": "Melon",
"quarterly_cost_decimal": null,
"quarterly_discount_decimal": null,
"quarterly_discounted_subtotal_decimal": null,
"quarterly_margin_decimal": null,
"quarterly_subtotal_decimal": null,
"quarterly_tax_total_decimal": null,
"quarterly_total_decimal": null,
"quarterly_upfront_payments": null,
"revision": "3",
"semi_annual_cost_decimal": null,
"semi_annual_discount_decimal": null,
"semi_annual_discounted_subtotal_decimal": null,
"semi_annual_margin_decimal": null,
"semi_annual_subtotal_decimal": null,
"semi_annual_tax_total_decimal": null,
"semi_annual_total_decimal": null,
"semi_annual_upfront_payments": null,
"shipping_address_1": "2130 Thurston Dr",
"shipping_address_2": null,
"shipping_city": "Orleans",
"shipping_country_iso": "CA",
"shipping_decimal": "1.00",
"shipping_first_name": "Jane",
"shipping_last_name": "Doe",
"shipping_organization": "FedEx",
"shipping_region_iso": "ON",
"status": "pending",
"upfront_cost_decimal": "50.00",
"upfront_discount_decimal": "6.00",
"upfront_discounted_subtotal_decimal": "154.00",
"upfront_margin_decimal": "30.00",
"upfront_subtotal_decimal": "160.00",
"upfront_tax_total_decimal": "15.75",
"upfront_total_decimal": "173.00",
"uuid": "1436-e2a121e6-d4b3-4d6b-9ad3-e8b877f8580f",
"won_at": "2019-08-24T14:15:22Z"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| annual_cost_decimal | string¦null | false | none | none |
| annual_discount_decimal | string¦null | false | none | none |
| annual_discounted_subtotal_decimal | string¦null | false | none | none |
| annual_margin_decimal | string¦null | false | none | none |
| annual_subtotal_decimal | string¦null | false | none | none |
| annual_tax_total_decimal | string¦null | false | none | none |
| annual_total_decimal | string¦null | false | none | none |
| annual_upfront_payments | string¦null | false | none | none |
| billing_address_1 | string¦null | false | none | none |
| billing_address_2 | string¦null | false | none | none |
| billing_city | string¦null | false | none | none |
| billing_country_iso | string¦null | false | none | none |
| billing_first_name | string¦null | false | none | none |
| billing_last_name | string¦null | false | none | none |
| billing_organization | string¦null | false | none | none |
| billing_region_iso | string¦null | false | none | none |
| contact_id | string | false | none | none |
| created_at | string(date-time) | false | none | none |
| currency_iso | string | false | none | none |
| custom_number | string¦null | false | none | none |
| draft | boolean | false | none | none |
| email_first_sent_at | date-time¦null | false | none | none |
| email_last_sent_at | date-time¦null | false | none | none |
| email_status | string | false | none | none |
| expired_at | string(date-time) | false | none | none |
| flagged | boolean | false | none | none |
| id | string | false | none | none |
| internal_notes | string | false | none | none |
| modified_at | string(date-time) | false | none | none |
| monthly_cost_decimal | string¦null | false | none | none |
| monthly_discount_decimal | string¦null | false | none | none |
| monthly_discounted_subtotal_decimal | string¦null | false | none | none |
| monthly_margin_decimal | string¦null | false | none | none |
| monthly_subtotal_decimal | string¦null | false | none | none |
| monthly_tax_total_decimal | string¦null | false | none | none |
| monthly_total_decimal | string¦null | false | none | none |
| monthly_upfront_payments | string¦null | false | none | none |
| name | string | false | none | none |
| number | string | false | none | none |
| one_time_cost_decimal | string¦null | false | none | none |
| one_time_discount_decimal | string¦null | false | none | none |
| one_time_discounted_subtotal_decimal | string¦null | false | none | none |
| one_time_margin_decimal | string¦null | false | none | none |
| one_time_subtotal_decimal | string¦null | false | none | none |
| one_time_tax_total_decimal | string¦null | false | none | none |
| one_time_total_decimal | string¦null | false | none | none |
| owner_first_name | string¦null | false | none | none |
| owner_id | string | false | none | none |
| owner_last_name | string¦null | false | none | none |
| quarterly_cost_decimal | string¦null | false | none | none |
| quarterly_discount_decimal | string¦null | false | none | none |
| quarterly_discounted_subtotal_decimal | string¦null | false | none | none |
| quarterly_margin_decimal | string¦null | false | none | none |
| quarterly_subtotal_decimal | string¦null | false | none | none |
| quarterly_tax_total_decimal | string¦null | false | none | none |
| quarterly_total_decimal | string¦null | false | none | none |
| quarterly_upfront_payments | string¦null | false | none | none |
| revision | string | false | none | none |
| semi_annual_cost_decimal | string¦null | false | none | none |
| semi_annual_discount_decimal | string¦null | false | none | none |
| semi_annual_discounted_subtotal_decimal | string¦null | false | none | none |
| semi_annual_margin_decimal | string¦null | false | none | none |
| semi_annual_subtotal_decimal | string¦null | false | none | none |
| semi_annual_tax_total_decimal | string¦null | false | none | none |
| semi_annual_total_decimal | string¦null | false | none | none |
| semi_annual_upfront_payments | string¦null | false | none | none |
| shipping_address_1 | string¦null | false | none | none |
| shipping_address_2 | string¦null | false | none | none |
| shipping_city | string¦null | false | none | none |
| shipping_country_iso | string¦null | false | none | none |
| shipping_decimal | string¦null | false | none | none |
| shipping_first_name | string¦null | false | none | none |
| shipping_last_name | string¦null | false | none | none |
| shipping_organization | string¦null | false | none | none |
| shipping_region_iso | string¦null | false | none | none |
| status | string | false | none | none |
| upfront_cost_decimal | string¦null | false | none | none |
| upfront_discount_decimal | string¦null | false | none | none |
| upfront_discounted_subtotal_decimal | string¦null | false | none | none |
| upfront_margin_decimal | string | false | none | none |
| upfront_subtotal_decimal | string¦null | false | none | none |
| upfront_tax_total_decimal | string¦null | false | none | none |
| upfront_total_decimal | string | false | none | none |
| uuid | string | false | none | none |
| won_at | string(date-time) | false | none | none |
QuoteCreateRequest
{
"appended_content": "Appended content goes here",
"contact_id": "cont_2r5WGA5WDExgSYmnZp0TVVQqFLA",
"cover_letter": "Cover letter details go here",
"currency_abbr": "CAD",
"name": "Draft Quote 1",
"template_id": "tmpl_2r5WHEQLKFsyKdyIj5daPCp7mjF"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| appended_content | string | false | none | none |
| contact_id | string | true | none | none |
| cover_letter | string | false | none | none |
| currency_abbr | string | false | none | none |
| name | string | false | none | none |
| template_id | string | true | none | none |
QuoteCreateResponse
{
"id": "quot_2r5CZzZNKjHlB7FvizOgceEHUhK",
"url": "https://development.quoter.com/admin/quotes/draft_by_public_id/quot_2r5CZzZNKjHlB7FvizOgceEHUhK"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| id | string | false | none | none |
| url | string | false | none | none |
QuoteList
{
"data": [
{
"annual_cost_decimal": null,
"annual_discount_decimal": null,
"annual_discounted_subtotal_decimal": null,
"annual_margin_decimal": null,
"annual_subtotal_decimal": null,
"annual_tax_total_decimal": null,
"annual_total_decimal": null,
"annual_upfront_payments": null,
"billing_address_1": "4289 Reserve St",
"billing_address_2": null,
"billing_city": "Lakefield",
"billing_country_iso": "CA",
"billing_first_name": "John",
"billing_last_name": "Doe",
"billing_organization": "Microsoft",
"billing_region_iso": "ON",
"contact_id": "cont_1yTKYdrjvY7R04NDq57ZpufLFjk",
"created_at": "2019-08-24T14:15:22Z",
"currency_iso": "CAD",
"custom_number": "Quote Custom Number",
"draft": false,
"email_first_sent_at": null,
"email_last_sent_at": null,
"email_status": "sent",
"expired_at": "2019-08-24T14:15:22Z",
"flagged": false,
"id": "quot_2TSEPTEfnooIhvA83l78R0nEqR5",
"internal_notes": "some internal notes",
"modified_at": "2019-08-24T14:15:22Z",
"monthly_cost_decimal": "30.10",
"monthly_discount_decimal": "4.00",
"monthly_discounted_subtotal_decimal": "50.10",
"monthly_margin_decimal": "15.00",
"monthly_subtotal_decimal": "60.00",
"monthly_tax_total_decimal": "9.68",
"monthly_total_decimal": "61.00",
"monthly_upfront_payments": "1",
"name": "Sample Quote",
"number": "13",
"one_time_cost_decimal": "2.00",
"one_time_discount_decimal": "6.00",
"one_time_discounted_subtotal_decimal": "8.00",
"one_time_margin_decimal": "2.00",
"one_time_subtotal_decimal": "6.00",
"one_time_tax_total_decimal": "1.75",
"one_time_total_decimal": "10.75",
"owner_first_name": "Walter",
"owner_id": "user_2TSEPTEfnooIhvA83l78R0nEqR5",
"owner_last_name": "Melon",
"quarterly_cost_decimal": null,
"quarterly_discount_decimal": null,
"quarterly_discounted_subtotal_decimal": null,
"quarterly_margin_decimal": null,
"quarterly_subtotal_decimal": null,
"quarterly_tax_total_decimal": null,
"quarterly_total_decimal": null,
"quarterly_upfront_payments": null,
"revision": "3",
"semi_annual_cost_decimal": null,
"semi_annual_discount_decimal": null,
"semi_annual_discounted_subtotal_decimal": null,
"semi_annual_margin_decimal": null,
"semi_annual_subtotal_decimal": null,
"semi_annual_tax_total_decimal": null,
"semi_annual_total_decimal": null,
"semi_annual_upfront_payments": null,
"shipping_address_1": "2130 Thurston Dr",
"shipping_address_2": null,
"shipping_city": "Orleans",
"shipping_country_iso": "CA",
"shipping_decimal": "1.00",
"shipping_first_name": "Jane",
"shipping_last_name": "Doe",
"shipping_organization": "FedEx",
"shipping_region_iso": "ON",
"status": "pending",
"upfront_cost_decimal": "50.00",
"upfront_discount_decimal": "6.00",
"upfront_discounted_subtotal_decimal": "154.00",
"upfront_margin_decimal": "30.00",
"upfront_subtotal_decimal": "160.00",
"upfront_tax_total_decimal": "15.75",
"upfront_total_decimal": "173.00",
"uuid": "1436-e2a121e6-d4b3-4d6b-9ad3-e8b877f8580f",
"won_at": "2019-08-24T14:15:22Z"
}
],
"has_more": false,
"total_count": 1
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| data | [Quote] | false | none | none |
| has_more | boolean | false | none | none |
| total_count | integer | false | none | none |
QuoteTemplate
{
"created_at": "2019-08-24T14:15:22Z",
"id": "tmpl_2lf68j5opaIrjmZmPZUwUXxP3R3",
"modified_at": "2019-08-24T14:15:22Z",
"slug": "sample-template",
"title": "Sample Template"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| created_at | string(date-time) | false | none | none |
| id | string | false | none | none |
| modified_at | string(date-time) | false | none | none |
| slug | string | false | none | none |
| title | string | false | none | none |
QuoteTemplateList
{
"data": [
{
"created_at": "2019-08-24T14:15:22Z",
"id": "tmpl_2lf68j5opaIrjmZmPZUwUXxP3R3",
"modified_at": "2019-08-24T14:15:22Z",
"slug": "sample-template",
"title": "Sample Template"
}
],
"has_more": false,
"total_count": 1
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| data | [QuoteTemplate] | false | none | none |
| has_more | boolean | false | none | none |
| total_count | integer | false | none | none |
Supplier
{
"created_at": "2019-08-24T14:15:22Z",
"id": "sup_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "Newegg"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| created_at | string(date-time) | false | none | none |
| id | string | false | none | none |
| modified_at | string(date-time) | false | none | none |
| name | string | false | none | none |
SupplierCreateRequest
{
"name": "Newegg"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| name | string | true | none | none |
SupplierList
{
"data": [
{
"created_at": "2019-08-24T14:15:22Z",
"id": "sup_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "Newegg"
}
],
"has_more": false,
"total_count": 1
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| data | [Supplier] | false | none | none |
| has_more | boolean | false | none | none |
| total_count | integer | false | none | none |
SupplierUpdateRequest
{
"name": "Newegg"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| name | string | true | none | none |
Warehouse
{
"id": "itmw_2tdpIbLafl0Big0WPgsTbVt1BFa",
"name": "Warehouse1",
"quantity": "20"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| id | string | false | none | none |
| name | string | false | none | none |
| quantity | string | false | none | none |
WarehouseMapping
{
"name": "wh1",
"quantity": "wh1_qty"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| name | string | false | none | none |
| quantity | string | false | none | none |