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. Our API is under active development, so check back often for updates!
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
oAuth2 authentication.
- Flow: implicit
- Authorization URL = https://api.quoter.com/v1/auth/oauth2/authorize
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
Authenticates the client and issues an access and refresh token pair to authorize API requests.
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
Exchanges a valid refresh token for a new access and refresh token pair without requiring user credentials again.
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
Retrieves a list of all item-related categories in the system.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| fields | query | string | false | One or more response fields, separated by commas. |
| filter[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 |
| filter[created_at] | query | string | false | Filter by created_at. |
| filter[modified_at] | query | string | false | Filter by modified_at. |
| filter[name] | query | string | false | Filter by name. |
| 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. |
Detailed descriptions
filter[parent_category_id]: Filter records by those associated with parent_category_id.
Operators: eq
Examples
- filter[parent_category_id]=eq:cat_123
filter[created_at]: Filter by created_at.
Operators: gt, lt
Examples
- filter[created_at]=gt:2023-01-01T00:00:00Z
- filter[created_at]=lt:2025-01-01T00:00:00Z
filter[modified_at]: Filter by modified_at.
Operators: gt, lt
Examples
- filter[modified_at]=gt:2023-01-01T00:00:00Z
- filter[modified_at]=lt:2025-01-01T00:00:00Z
filter[name]: Filter by name.
Operators: eq, cont
Examples
- filter[name]=eq:abba
- filter[name]=cont:ab
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
Adds a new category to help organize related items.
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}
Removes a specified item category.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| id | path | string | true | Category ID |
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}
Retrieves detailed information about a specific item category.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| id | path | string | true | Category ID |
| 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 |
| 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}
Modifies an existing item category’s attributes.
Body parameter
{
"name": "SSDs",
"parent_category": "Storage Devices",
"parent_category_id": "cat_1jAEZdbtkbLFBAU1Tt0ouKpiBUe"
}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| id | path | string | true | Category ID |
| fields | query | string | false | One or more response fields, separated by commas. |
| 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
Retrieves a list of contacts (referred to as People in the UI), typically customers or associated users.
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. |
| filter[address] | query | string | false | Filter by address. |
| filter[city] | query | string | false | Filter by city. |
| filter[country] | query | string | false | Filter by country. |
| filter[created_at] | query | string | false | Filter by created_at. |
| filter[email] | query | string | false | Filter records by those associated with email. |
| filter[first_name] | query | string | false | Filter records by those associated with first_name. |
| filter[last_name] | query | string | false | Filter records by those associated with last_name. |
| filter[organization] | query | string | false | Filter records by those associated with organization. |
| filter[phone] | query | string | false | Filter records by those associated with phone. |
| filter[postal_code] | query | string | false | Filter by postal_code. |
| filter[region] | query | string | false | Filter by region. |
| filter[sp_contact_id] | query | string | false | Filter records by those sp_contact_id is contained in the comma separated list. |
| filter[modified_at] | query | string | false | Filter by modified_at. |
| 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. |
Detailed descriptions
filter[address]: Filter by address.
Filter records by those associated with billing_address.
Operators: eq, cont
Examples
- filter[address]=eq:value
- filter[address]=cont:value
filter[city]: Filter by city.
Filter records by those associated with billing_city.
Operators: eq, cont
Examples
- filter[city]=eq:value
- filter[city]=cont:value
filter[country]: Filter by country.
Filter records by those associated with billing_country_iso.
Operators: eq
Examples
- filter[country]=eq:US
filter[created_at]: Filter by created_at.
Operators: gt, lt
Examples
- filter[created_at]=gt:2023-01-01T00:00:00Z
- filter[created_at]=lt:2025-01-01T00:00:00Z
filter[email]: Filter records by those associated with email.
Operators: eq, cont
Examples
- filter[email]=eq:value
- filter[email]=cont:value
filter[first_name]: Filter records by those associated with first_name.
Operators: eq, cont
Examples
- filter[first_name]=eq:value
- filter[first_name]=cont:value
filter[last_name]: Filter records by those associated with last_name.
Operators: eq, cont
Examples
- filter[last_name]=eq:value
- filter[last_name]=cont:value
filter[organization]: Filter records by those associated with organization.
Operators: eq, cont
Examples
- filter[organization]=eq:value
- filter[organization]=cont:value
filter[phone]: Filter records by those associated with phone.
Operators: eq, cont
Examples
- filter[phone]=eq:value
- filter[phone]=cont:value
filter[postal_code]: Filter by postal_code.
Filter records by those associated by billing_postal_code.
Operators: eq, cont
Examples
- filter[postal_code]=eq:value
- filter[postal_code]=cont:value
filter[region]: Filter by region.
Filter records by those associated with billing_region_iso.
Operators: eq
Examples
- filter[region]=eq:CA
filter[sp_contact_id]: Filter records by those sp_contact_id is contained in the comma separated list.
Operators: in
Examples
- filter[sp_contact_id]=in:31708daa-f0e7-47e0-a72a-6c1ff5d3d873,1e7de223-5cfb-4a41-a81b-1c1521a07c22
filter[modified_at]: Filter by modified_at.
Operators: gt, lt
Examples
- filter[modified_at]=gt:2023-01-01T00:00:00Z
- filter[modified_at]=lt:2025-01-01T00:00:00Z
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 |
| sort_by | -created_at |
| sort_by | -id |
| sort_by | -modified_at |
| sort_by | -first_name |
| sort_by | -last_name |
| sort_by | +created_at |
| sort_by | +id |
| sort_by | +modified_at |
| sort_by | +first_name |
| sort_by | +last_name |
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",
"sp_client_id": "49b84642-c1f6-43b1-914a-d37988e50f41",
"sp_contact_id": "a56f8961-82f8-4de8-949f-d3e06b7200c1",
"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
Adds a new contact (referred to as Person in the UI) to the system.
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",
"sp_client_id": "49b84642-c1f6-43b1-914a-d37988e50f41",
"sp_contact_id": "a56f8961-82f8-4de8-949f-d3e06b7200c1",
"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}
Retrieves detailed information about a specific contact.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| id | path | string | true | Contact ID |
| fields | query | string | false | One or more response fields, separated by commas. |
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}
Modifies an existing contact’s details.
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 |
| id | path | string | true | Contact ID |
| 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": [
{
"id": "itmw_2tdpIbLafl0Big0WPgsTbVt1BFa",
"name": "Warehouse1",
"quantity": "20"
}
],
"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 | -modified_at |
| sort_by | created_at |
| sort_by | modified_at |
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
Returns all item-to-item group assignments, indicating how items are grouped.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| filter[item_group_id] | query | string | false | Filter records by those associated with item_group_id. |
| filter[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. |
| filter[created_at] | query | string | false | Filter by created_at. |
| filter[modified_at] | query | string | false | Filter by modified_at. |
| 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. |
Detailed descriptions
filter[item_group_id]: Filter records by those associated with item_group_id.
Operators: eq
Examples
- filter[item_group_id]=eq:group_123
filter[item_id]: Filter records by those associated with item_id.
Operators: eq
Examples
- filter[item_id]=eq:item_123
filter[created_at]: Filter by created_at.
Operators: gt, lt
Examples
- filter[created_at]=gt:2023-01-01T00:00:00Z
- filter[created_at]=lt:2025-01-01T00:00:00Z
filter[modified_at]: Filter by modified_at.
Operators: gt, lt
Examples
- filter[modified_at]=gt:2023-01-01T00:00:00Z
- filter[modified_at]=lt:2025-01-01T00:00:00Z
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
Assigns an item to a specific item group.
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}
Removes an item from a specific item group.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| id | path | string | true | Item Group Item Assignment ID |
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}
Retrieves the details of a specific item-to-group assignment.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| id | path | string | true | Item Group Item Assignment ID |
| 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
Retrieves a list of item groups which are used to limit subsets of items to resellers or business units.
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. |
| filter[created_at] | query | string | false | Filter by created_at. |
| filter[modified_at] | query | string | false | Filter by modified_at. |
| filter[name] | query | string | false | Filter by name. |
| 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. |
Detailed descriptions
filter[created_at]: Filter by created_at.
Operators: gt, lt
Examples
- filter[created_at]=gt:2023-01-01T00:00:00Z
- filter[created_at]=lt:2025-01-01T00:00:00Z
filter[modified_at]: Filter by modified_at.
Operators: gt, lt
Examples
- filter[modified_at]=gt:2023-01-01T00:00:00Z
- filter[modified_at]=lt:2025-01-01T00:00:00Z
filter[name]: Filter by name.
Operators: eq, cont
Examples
- filter[name]=eq:abba
- filter[name]=cont:ab
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
Creates a new item group.
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}
Removes a specific item group.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| id | path | string | true | Item Group ID |
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}
Retrieves details of a single item group.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| id | path | string | true | Item Group ID |
| 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}
Updates the name or configuration of an item group.
Body parameter
{
"name": "West Coast"
}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| id | path | string | true | Item Group ID |
| 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
Lists all values associated with 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. |
| filter[created_at] | query | string | false | Filter by created_at. |
| filter[modified_at] | query | string | false | Filter by modified_at. |
| filter[name] | query | string | false | Filter by name. |
| 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. |
Detailed descriptions
filter[created_at]: Filter by created_at.
Operators: gt, lt
Examples
- filter[created_at]=gt:2023-01-01T00:00:00Z
- filter[created_at]=lt:2025-01-01T00:00:00Z
filter[modified_at]: Filter by modified_at.
Operators: gt, lt
Examples
- filter[modified_at]=gt:2023-01-01T00:00:00Z
- filter[modified_at]=lt:2025-01-01T00:00:00Z
filter[name]: Filter by name.
Operators: eq, cont
Examples
- filter[name]=eq:abba
- filter[name]=cont:ab
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
Adds a new option value for a specific item option.
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}
Removes a specific item option value.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| id | path | string | true | Item Option Value ID |
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}
Retrieves detailed information about an item option value.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| id | path | string | true | Item Option Value ID |
| 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}
Modifies an existing item option value.
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 |
| id | path | string | true | Item Option Value ID |
| 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
Lists configurable options available for 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. |
| filter[created_at] | query | string | false | Filter by created_at. |
| filter[modified_at] | query | string | false | Filter by modified_at. |
| filter[name] | query | string | false | Filter by name. |
| 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. |
Detailed descriptions
filter[created_at]: Filter by created_at.
Operators: gt, lt
Examples
- filter[created_at]=gt:2023-01-01T00:00:00Z
- filter[created_at]=lt:2025-01-01T00:00:00Z
filter[modified_at]: Filter by modified_at.
Operators: gt, lt
Examples
- filter[modified_at]=gt:2023-01-01T00:00:00Z
- filter[modified_at]=lt:2025-01-01T00:00:00Z
filter[name]: Filter by name.
Operators: eq, cont
Examples
- filter[name]=eq:abba
- filter[name]=cont:ab
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
Creates a new option for item customization.
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}
Removes a specific item option.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| id | path | string | true | Item Option ID |
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}
Retrieves detailed information about an item option.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| id | path | string | true | Item Option ID |
| 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}
Updates an item option’s name or configuration.
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 |
| id | path | string | true | Item Option ID |
| 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
Lists all pricing or configuration tiers available for items.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| filter[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. |
| filter[created_at] | query | string | false | Filter by created_at. |
| filter[modified_at] | query | string | false | Filter by modified_at. |
| 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. |
Detailed descriptions
filter[item_id]: Filter records by those associated with item_id.
Operators: eq
Examples
- filter[item_id]=eq:item_123
filter[created_at]: Filter by created_at.
Operators: gt, lt
Examples
- filter[created_at]=gt:2023-01-01T00:00:00Z
- filter[created_at]=lt:2025-01-01T00:00:00Z
filter[modified_at]: Filter by modified_at.
Operators: gt, lt
Examples
- filter[modified_at]=gt:2023-01-01T00:00:00Z
- filter[modified_at]=lt:2025-01-01T00:00:00Z
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
Adds a new pricing/configuration tier for items.
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}
Removes a specific item tier.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| id | path | string | true | Item Tier ID |
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}
Retrieves detailed information about a specific item tier.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| id | path | string | true | Item Tier ID |
| 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}
Modifies an existing item tier.
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 |
| id | path | string | true | Item Tier ID |
| 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
Retrieves a list of all items available in the system.
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. |
| filter[category_id] | query | string | false | Filter records by those associated with category_id. |
| filter[code] | query | string | false | Filter by code. |
| filter[created_at] | query | string | false | Filter by created_at. |
| filter[manufacturer_id] | query | string | false | Filter records by those associated with manufacturer_id. |
| filter[modified_at] | query | string | false | Filter by modified_at. |
| filter[name] | query | string | false | Filter by name. |
| filter[sku] | query | string | false | Filter by sku. |
| filter[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. |
Detailed descriptions
filter[category_id]: Filter records by those associated with category_id.
Operators: eq
Examples
- filter[category_id]=eq:cat_123
filter[code]: Filter by code.
Operators: eq
Examples
- filter[code]=eq:ITEM001
filter[created_at]: Filter by created_at.
Operators: gt, lt
Examples
- filter[created_at]=gt:2023-01-01T00:00:00Z
- filter[created_at]=lt:2025-01-01T00:00:00Z
filter[manufacturer_id]: Filter records by those associated with manufacturer_id.
Operators: eq
Examples
- filter[manufacturer_id]=eq:mfg_123
filter[modified_at]: Filter by modified_at.
Operators: gt, lt
Examples
- filter[modified_at]=gt:2023-01-01T00:00:00Z
- filter[modified_at]=lt:2025-01-01T00:00:00Z
filter[name]: Filter by name.
Operators: eq, cont
Examples
- filter[name]=eq:abba
- filter[name]=cont:ab
filter[sku]: Filter by sku.
Operators: eq
Examples
- filter[sku]=eq:WDG-PRO-001
filter[supplier_id]: Filter records by those associated with supplier_id.
Operators: eq
Examples
- filter[supplier_id]=eq:sup_123
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
Adds a new item to your product catalog.
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}
Removes an item from your product catalog.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| id | path | string | true | Item ID |
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}
Retrieves detailed information about a specific item.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| id | path | string | true | Item ID |
| 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}
Modifies the properties or configuration of an existing item.
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 |
| id | path | string | true | Item ID |
| 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
Adds an itemized entry (line item) typically to a quote or transaction.
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
Retrieves a list of all manufacturers available in the system.
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. |
| filter[created_at] | query | string | false | Filter by created_at. |
| filter[modified_at] | query | string | false | Filter by modified_at. |
| filter[name] | query | string | false | Filter by name. |
| 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. |
Detailed descriptions
filter[created_at]: Filter by created_at.
Operators: gt, lt
Examples
- filter[created_at]=gt:2023-01-01T00:00:00Z
- filter[created_at]=lt:2025-01-01T00:00:00Z
filter[modified_at]: Filter by modified_at.
Operators: gt, lt
Examples
- filter[modified_at]=gt:2023-01-01T00:00:00Z
- filter[modified_at]=lt:2025-01-01T00:00:00Z
filter[name]: Filter by name.
Operators: eq, cont
Examples
- filter[name]=eq:abba
- filter[name]=cont:ab
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
Adds a new manufacturer record.
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}
Removes a specific manufacturer from the system.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| id | path | string | true | Manufacturer ID |
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}
Retrieves details about a specific manufacturer.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| id | path | string | true | Manufacturer ID |
| 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}
Modifies information about an existing manufacturer.
Body parameter
{
"name": "Samsung"
}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| id | path | string | true | Manufacturer ID |
| 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
Lists all available templates that can be used to generate quotes
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| filter[title] | query | string | false | Filter by title. |
| sort_by | query | string | false | One or more sort fields, separated by commas. |
Detailed descriptions
filter[title]: Filter by title.
Operators: cont
Examples
- filter[title]=cont:Template
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
Retrieves a list of all quotes created in the system.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| filter[custom_number] | query | string | false | Filter by custom_number. |
| filter[draft] | query | boolean | false | Filter by draft. |
| filter[email_status] | query | string | false | Filter by email_status. |
| filter[id] | query | string | false | Filter by id. |
| filter[created_at] | query | string | false | Filter by created_at. |
| filter[expired_at] | query | string | false | Filter by expired_at. |
| filter[modified_at] | query | string | false | Filter by modified_at. |
| filter[name] | query | string | false | Filter by name. |
| filter[recurring_interval] | query | string | false | Filter by recurring_interval. |
| sort_by | query | string | false | One or more sort fields, separated by commas. |
| filter[sp_client_id] | query | string | false | Filter by sp_client_id. |
| filter[status] | query | string | false | Filter by status. |
| filter[uuid] | query | string | false | Filter by uuid. |
| filter[won_at] | query | string | false | Filter by won_at. |
Detailed descriptions
filter[custom_number]: Filter by custom_number.
Operators: cont
Examples
- filter[custom_number]=cont:100
filter[draft]: Filter by draft.
Operators: eq
Examples
- filter[draft]=eq:true
filter[email_status]: Filter by email_status.
Operators: eq
Examples
- filter[email_status]=eq:sent
filter[id]: Filter by id.
Operators: in
Examples
- filter[id]=in:quot_1,quot_2
filter[created_at]: Filter by created_at.
Operators: gt, lt
Examples
- filter[created_at]=gt:2023-01-01T00:00:00Z
- filter[created_at]=lt:2025-01-01T00:00:00Z
filter[expired_at]: Filter by expired_at.
Operators: gt, lt
Examples
- filter[expired_at]=gt:2023-01-01T00:00:00Z
- filter[expired_at]=lt:2025-01-01T00:00:00Z
filter[modified_at]: Filter by modified_at.
Operators: gt, lt
Examples
- filter[modified_at]=gt:2023-01-01T00:00:00Z
- filter[modified_at]=lt:2025-01-01T00:00:00Z
filter[name]: Filter by name.
Operators: eq, cont
Examples
- filter[name]=eq:abba
- filter[name]=cont:ab
filter[recurring_interval]: Filter by recurring_interval.
Operators: eq
Examples
- filter[recurring_interval]=eq:monthly
filter[sp_client_id]: Filter by sp_client_id.
Operators: eq
Examples
- filter[sp_client_id]=eq:03840c4b-5999-49ac-80b6-0e6000a758fd
filter[status]: Filter by status.
Operators: eq
Examples
- filter[status]=eq:pending
filter[uuid]: Filter by uuid.
Operators: eq
Examples
- filter[uuid]=eq:123e4567-e89b-12d3-a456-426614174000
filter[won_at]: Filter by won_at.
Operators: gt, lt
Examples
- filter[won_at]=gt:2023-01-01T00:00:00Z
- filter[won_at]=lt:2025-01-01T00:00:00Z
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,
"autotask_opportunity_id": "abc123def456",
"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",
"connectwise_opportunity_id": "ghi789jkl012",
"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": "2019-08-24T14:15:22Z",
"email_last_sent_at": "2019-08-24T14:15:22Z",
"email_status": "sent",
"expired_at": "2019-08-24T14:15:22Z",
"flagged": false,
"halo_opportunity_id": "mno345pqr678",
"hubspot_deal_id": "stu901vwx234",
"id": "quot_2TSEPTEfnooIhvA83l78R0nEqR5",
"internal_notes": "some internal notes",
"kaseya_opportunity_id": "yza567bcd890",
"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",
"pipedrive_deal_id": "efg123hij456",
"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,
"quickbooks_invoice_id": "klm789nop012",
"revision": "3",
"salesforce_opportunity_id": "qrs345tuv678",
"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",
"xero_invoice_id": "wxy901zab234",
"zoho_deal_id": "cde567fgh890"
}
],
"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",
"sp_contact_id": "a56f8961-82f8-4de8-949f-d3e06b7200c1",
"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",
"sp_contact_id": "a56f8961-82f8-4de8-949f-d3e06b7200c1",
"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
Retrieves a list of suppliers that provide items or services.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| filter[created_at] | query | string | false | Filter by created_at. |
| filter[modified_at] | query | string | false | Filter by modified_at. |
| filter[name] | query | string | false | Filter by name. |
| 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. |
Detailed descriptions
filter[created_at]: Filter by created_at.
Operators: gt, lt
Examples
- filter[created_at]=gt:2023-01-01T00:00:00Z
- filter[created_at]=lt:2025-01-01T00:00:00Z
filter[modified_at]: Filter by modified_at.
Operators: gt, lt
Examples
- filter[modified_at]=gt:2023-01-01T00:00:00Z
- filter[modified_at]=lt:2025-01-01T00:00:00Z
filter[name]: Filter by name.
Operators: eq, cont
Examples
- filter[name]=eq:abba
- filter[name]=cont:ab
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
Adds a new supplier record to the system.
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}
Removes a specific supplier.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| id | path | string | true | Supplier ID |
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}
Retrieves detailed information about a specific supplier.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| id | path | string | true | Supplier ID |
| 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}
Updates information for an existing supplier.
Body parameter
{
"name": "Newegg"
}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| Authorization | header | string | true | Bearer: access_token |
| id | path | string | true | Supplier ID |
| 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"
}
Contains credentials required to obtain access and refresh tokens.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| client_id | string | true | none | The unique identifier assigned to your application during registration. |
| client_secret | string | true | none | A confidential key associated with your application, used to authenticate and authorize requests. |
| grant_type | string | true | none | Specifies the type of OAuth 2.0 grant being used, such as authorization_code or refresh_token. |
AuthorizationResponse
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkphbmUgRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.cMErWtEf7DxCXJl8C9q0L7ttkm-Ex54UWHsOCMGbtUc"
}
Returns the access and refresh tokens after a successful authorization.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| access_token | string | false | none | A token that grants access to protected resources on behalf of the user. |
| refresh_token | string | false | none | A token used to obtain a new access token when the current one expires. |
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"
}
Represents a category used to organize items.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| created_at | string(date-time) | false | none | Timestamp indicating when the category was created. |
| id | string | false | none | Unique identifier for the category. |
| modified_at | string(date-time) | false | none | Timestamp indicating the last update to the category. |
| name | string | false | none | The name of the category. |
| parent_category | string | false | none | The name of the parent category, if applicable. |
| parent_category_id | string | false | none | The unique identifier of the parent category, if applicable. |
CategoryCreateRequest
{
"name": "SSDs",
"parent_category": "Storage Devices",
"parent_category_id": "cat_1jAEZdbtkbLFBAU1Tt0ouKpiBUe"
}
Used to create a new item category.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| name | string | true | none | The name of the new category to be created. |
| parent_category | string | false | none | The name of the parent category under which this category will be nested. |
| parent_category_id | string | false | none | The unique identifier of the parent category under which this category will be nested. |
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
}
A paginated list of existing categories.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| data | [Category] | false | none | An array of category objects. |
| has_more | boolean | false | none | Indicates if there are more categories available beyond the current set. |
| total_count | integer | false | none | The total number of categories available. |
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"
}
Represents an individual or organization with billing and shipping details.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| billing_address | string | false | none | Primary billing street address. |
| billing_address2 | string | false | none | Secondary billing street address (e.g., apartment or suite number). |
| billing_city | string | false | none | City for the billing address. |
| billing_country_iso | string | false | none | ISO country code for the billing address. |
| billing_postal_code | string | false | none | Postal code for the billing address. |
| billing_region_iso | string | false | none | region/state code for the billing address. |
| created_at | string(data-time) | false | none | Timestamp indicating when the contact was created. |
| string | false | none | Primary email address of the contact. | |
| first_name | string | false | none | First name of the contact. |
| id | string | false | none | Unique identifier for the contact. |
| last_name | string | false | none | Last name of the contact. |
| mobile_phone | string | false | none | Mobile phone number of the contact. |
| modified_at | string | false | none | Timestamp indicating the last update to the contact. |
| organization | string | false | none | Organization associated with the contact. |
| shipping_address | string | false | none | Primary shipping street address. |
| shipping_address2 | string | false | none | Secondary shipping street address. |
| shipping_city | string | false | none | City for the shipping address. |
| shipping_country_iso | string | false | none | ISO country code for the shipping address. |
| shipping_email | string | false | none | Email address for shipping-related communications. |
| shipping_first_name | string | false | none | First name for the shipping contact. |
| shipping_label | string | false | none | Label or designation for the shipping address. |
| shipping_last_name | string | false | none | Last name for the shipping contact. |
| shipping_organization | string | false | none | Organization associated with the shipping address. |
| shipping_phone | string | false | none | Phone number for shipping-related communications. |
| shipping_postal_code | string | false | none | Postal code for the shipping address. |
| shipping_region_iso | string | false | none | ISO region/state code for the shipping address. |
| title | string | false | none | Job title or position of the contact. |
| website | string | false | none | Website URL associated with the organization. |
| work_phone | string | false | none | Work phone number of the contact. |
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",
"sp_client_id": "49b84642-c1f6-43b1-914a-d37988e50f41",
"sp_contact_id": "a56f8961-82f8-4de8-949f-d3e06b7200c1",
"title": "Mr.",
"website": "quoter.com",
"work_phone": "(604) 539-5319"
}
Used to create a new contact record.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| billing_address | string | false | none | Primary billing street address. |
| billing_address2 | string | false | none | Secondary billing street address. |
| billing_city | string | false | none | City for the billing address. |
| billing_country_iso | string | true | none | ISO country code for the billing address. |
| billing_postal_code | string | false | none | Postal code for the billing address. |
| billing_region_iso | string | false | none | ISO region/state code for the billing address. |
| string | true | none | Primary email address of the contact. | |
| first_name | string | true | none | First name of the contact. |
| last_name | string | true | none | Last name of the contact. |
| mobile_phone | string | false | none | Mobile phone number of the contact. |
| organization | string | true | none | Organization associated with the contact. |
| shipping_address | string | false | none | Primary shipping street address. |
| shipping_address2 | string | false | none | Secondary shipping street address. |
| shipping_city | string | false | none | City for the shipping address. |
| shipping_country_iso | string | false | none | ISO country code for the shipping address. |
| shipping_email | string | false | none | Email address for shipping-related communications. |
| shipping_first_name | string | false | none | First name for the shipping contact. |
| shipping_label | string | false | none | Label or designation for the shipping address. |
| shipping_last_name | string | false | none | Last name for the shipping contact. |
| shipping_organization | string | false | none | Organization associated with the shipping address. |
| shipping_phone | string | false | none | Phone number for shipping-related communications. |
| shipping_postal_code | string | false | none | Postal code for the shipping address. |
| shipping_region_iso | string | false | none | ISO region/state code for the shipping address. |
| sp_client_id | string | false | none | ID of the ScalePad client. |
| sp_contact_id | string | false | none | ID of the ScalePad contact. |
| title | string | false | none | Job title or position of the contact. |
| website | string | false | none | Website URL associated with the contact or organization. |
| work_phone | string | false | none | Work phone number of the contact. |
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
}
A paginated list of contact records
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| data | [Contact] | false | none | An array of contact objects. |
| has_more | boolean | false | none | Indicates if there are more contacts available beyond the current set. |
| total_count | integer | false | none | The total number of contacts available. |
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"
}
Used to update an existing contact record.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| billing_address | string | false | none | Primary billing street address. |
| billing_address2 | string | false | none | Secondary billing street address. |
| billing_city | string | false | none | City for the billing address. |
| billing_country_iso | string | false | none | ISO country code for the billing address. |
| billing_postal_code | string | false | none | Postal code for the billing address. |
| billing_region_iso | string | false | none | ISO region/state code for the billing address. |
| string | false | none | Primary email address of the contact. | |
| first_name | string | false | none | First name of the contact. |
| last_name | string | false | none | Last name of the contact. |
| mobile_phone | string | false | none | Mobile phone number of the contact. |
| organization | string | false | none | Organization associated with the contact. |
| shipping_address | string | false | none | Primary shipping street address. |
| shipping_address2 | string | false | none | Secondary shipping street address. |
| shipping_city | string | false | none | City for the shipping address. |
| shipping_country_iso | string | false | none | ISO country code for the shipping address. |
| shipping_email | string | false | none | Email address for shipping-related communications. |
| shipping_first_name | string | false | none | First name for the shipping contact. |
| shipping_label | string | false | none | Label or designation for the shipping address. |
| shipping_last_name | string | false | none | Last name for the shipping contact. |
| shipping_organization | string | false | none | Organization associated with the shipping address. |
| shipping_phone | string | false | none | Phone number for shipping-related communications. |
| shipping_postal_code | string | false | none | Postal code for the shipping address. |
| shipping_region_iso | string | false | none | ISO region/state code for the shipping address. |
| title | string | false | none | Job title or position of the contact. |
| website | string | false | none | Website URL associated with the contact or organization. |
| work_phone | string | false | none | Work phone number of the contact. |
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"
}
Defines a supplier that provides external product data feeds.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| created_at | string(date-time) | false | none | Timestamp indicating when the supplier feed was created. |
| default_taxable | boolean | false | none | Indicates whether items from this supplier are taxable by default. |
| field_mapping | object | false | none | Object defining how supplier fields are mapped to internal schema fields. |
| » category_name | string | false | none | The supplier’s field name for the product category. |
| » manufacturer | string | false | none | The supplier’s field name for the product manufacturer. |
| » mpn | string | false | none | The supplier’s field name for the manufacturer part number. |
| » name | string | false | none | The supplier’s field name for the product name. |
| » price | string | false | none | The supplier’s field name for the product price. |
| » supplier_sku | string | false | none | The supplier’s field name for the SKU. |
| » taxable | string | false | none | The supplier’s field name indicating whether the item is taxable. |
| » warehouses | [WarehouseMapping] | false | none | The supplier’s field mapping for warehouse inventory. |
| » weight | string | false | none | The supplier’s field name for the product weight. |
| id | string | false | none | Unique identifier for the data feed supplier. |
| modified_at | string(date-time) | false | none | Timestamp indicating the last modification of the feed. |
| name | string | false | none | The display name of the supplier feed. |
| url | string | false | none | The URL of the data feed provided by the supplier. |
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": [
{
"id": "itmw_2tdpIbLafl0Big0WPgsTbVt1BFa",
"name": "Warehouse1",
"quantity": "20"
}
],
"weight_decimal": "1000"
}
Represents an item within a supplier’s data feed.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| category | string | false | none | The name of the category associated with this item. |
| id | string | false | none | Unique identifier for the item within the data feed. |
| mpn | string | false | none | Manufacturer part number for the item. |
| name | string | false | none | Display name of the item. |
| price_amount_decimal | string | false | none | The item’s price as a decimal string. |
| semantic_item_id | string | false | none | An internal ID representing a semantic match for the item. |
| sku | string | false | none | The stock keeping unit assigned by the supplier. |
| supplier_default_taxable | boolean | false | none | Whether the item is taxable by the supplier’s default rule. |
| supplier_id | string | false | none | Unique identifier of the supplier providing the item. |
| supplier_name | string | false | none | Name of the supplier providing the item. |
| taxable | boolean | false | none | Whether the item is marked as taxable in the feed. |
| warehouses | [Warehouse] | false | none | Array of warehouse stock data for the item. |
| weight_decimal | string | false | none | Item weight in decimal format. |
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": [
{
"id": "itmw_2tdpIbLafl0Big0WPgsTbVt1BFa",
"name": "Warehouse1",
"quantity": "20"
}
],
"weight_decimal": "1000"
}
],
"has_more": false,
"total_count": 1
}
A list of supplier feed items, with pagination support.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| data | [DatafeedsSupplierItem] | false | none | Array of data feed supplier item objects. |
| has_more | boolean | false | none | Indicates if additional items exist beyond the current page. |
| total_count | integer | false | none | Total number of items in the feed. |
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
}
A list of all configured supplier data feeds.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| data | [DatafeedsSupplier] | false | none | Array of data feed supplier objects. |
| has_more | boolean | false | none | Indicates if additional supplier feeds exist. |
| total_count | integer | false | none | Total number of supplier feeds available. |
ErrorResponse
{
"errors": [
{
"detail": "Pagination page requested too high.",
"status": 400,
"title": "Bad Request"
}
]
}
Standard format for reporting API errors.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| errors | [object] | false | none | Array of error objects containing details about each issue. |
| » detail | string | false | none | Human-readable message describing the error. |
| » status | integer | false | none | HTTP status code associated with the error. |
| » title | string | false | none | A short, human-readable summary of the error. |
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
}
Represents a product or service available for quoting.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| allow_decimal_quantities | boolean | false | none | Whether the item can be sold in fractional quantities. |
| category | string | false | none | Name of the category to which the item belongs. Required; cannot be provided with category_id. |
| category_id | string | false | none | ID of the category to which the item belongs. Required; cannot be provided with category. |
| code | string | false | none | Code used to reference the item. Also referred to as “MPN” in Quoter’s UI. Should be unique. |
| cost_decimal | string | false | none | Unit cost of the item in decimal format. If provided, pricing_scheme must be flat, per_unit, or percentage. |
| cost_type | string | false | none | Indicates the type of cost (e.g., amount, percent). 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 | Timestamp when the item was created. |
| description | string | false | none | Description of the item, HTML formatting is supported. |
| id | string | false | none | Unique identifier for the item. |
| internal_note | string | false | none | Internal notes about the item, not shown to customers. |
| manufacturer | string | false | none | Name of the item manufacturer. Cannot be provided with manufacturer_id. |
| manufacturer_id | string | false | none | Unique identifier for the manufacturer. Cannot be provided with manufacturer. |
| modified_at | string(date-time) | false | none | Timestamp when the item was last updated. |
| name | string | false | none | The name of the item. Required; |
| percentage_price_category_ids | [string] | false | none | Category IDs used to calculate percentage-based pricing. If provided, pricing_scheme must be percentage; required if pricing_scheme is percentage. |
| percentage_price_decimal | string | false | none | Percentage value used for pricing if applicable. If provided, pricing_scheme must be percentage; required if pricing scheme is percentage. |
| price_decimal | string | false | none | Price of the item in decimal format. 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 | Optional help text to assist in selecting a quantity. |
| recurring | boolean | false | none | Indicates if the item is billed on a recurring basis. |
| recurring_interval | string | false | none | Billing interval if the item is recurring. If provided, recurring must be true; required if recurring is true. |
| restrict_discounting | boolean | false | none | Whether discounting is disabled for this item. |
| show_option_prices | boolean | false | none | Indicates if option prices should be displayed. |
| sku | string | false | none | Stock keeping unit identifier for the item. |
| supplier | string | false | none | Name of the item’s supplier. Cannot be provided with supplier_id. |
| supplier_id | string | false | none | Unique identifier for the supplier. Cannot be provided with supplier. |
| taxable | boolean | false | none | Indicates whether the item is subject to tax. Defaults to per_unit if omitted. |
| weight_decimal | string | false | none | Item weight in decimal format. |
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
}
Used to create a new item in the system.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| allow_decimal_quantities | boolean | false | none | Whether the item can be sold in fractional quantities. |
| category | string | false | none | Name of the category to which the item belongs. Required; cannot be provided with category_id. |
| category_id | string | true | none | ID of the category to which the item belongs. Required; cannot be provided with category. |
| code | string | false | none | Custom reference code for the item. |
| cost_decimal | string | false | none | Unit cost of the item as a decimal. If provided, pricing_scheme must be flat, per_unit, or percentage. |
| cost_type | string | false | none | Type of cost (e.g., amount, percentage), used to interpret the cost value. 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 | Textual description of the item. |
| internal_note | string | false | none | Private notes about the item, not visible to customers. |
| manufacturer | string | false | none | Name of the item’s manufacturer. Cannot be provided with manufacturer_id. |
| manufacturer_id | string | false | none | Unique ID of the manufacturer. Cannot be provided with manufacturer. |
| name | string | true | none | Name of the item being created. |
| percentage_price_category_ids | [string] | false | none | Category IDs used for percentage-based pricing. If provided, pricing_scheme must be percentage; required if pricing_scheme is percentage. |
| percentage_price_decimal | string | false | none | The percentage markup or markdown used in pricing. If provided, pricing_scheme must be percentage; required if pricing scheme is percentage. |
| price_decimal | string | false | none | Price of the item in decimal format. If provided, pricing_scheme must be flat or per_unit; validate decimal. |
| pricing_scheme | string | false | none | Method used for pricing, such as flat, per_unit, or percentage. Defaults to per_unit if omitted. |
| quantity_help_tip | string | false | none | Help text to guide users on how to select quantity. |
| recurring | boolean | false | none | Indicates whether the item is billed on a recurring basis. |
| recurring_interval | string | false | none | Time interval for recurring billing (e.g., monthly, yearly). If provided, recurring must be true; required if recurring is true. |
| restrict_discounting | boolean | false | none | Prevents discounts from being applied to this item. |
| show_option_prices | boolean | false | none | Indicates whether option prices should be displayed alongside item price. |
| sku | string | false | none | Unique product code used for tracking inventory. |
| supplier | string | false | none | Name of the item’s supplier. Cannot be provided with supplier_id. |
| supplier_id | string | false | none | ID of the item’s supplier. Cannot be provided with supplier. |
| taxable | boolean | false | none | Defaults to per_unit if omitted. |
| weight_decimal | string | false | none | Item weight in decimal format. |
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"
}
A logical grouping of items for easier management.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| created_at | string(date-time) | false | none | Timestamp indicating when the item group was created. |
| id | string | false | none | Unique identifier for the item group. |
| modified_at | string(date-time) | false | none | Timestamp of the most recent update to the item group. |
| name | string | false | none | Name or label for the group of items. |
ItemGroupCreateRequest
{
"name": "West Coast"
}
Used to create a new item group.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| name | string | true | none | Name of the new item group to be created. |
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"
}
Maps an item to a specific item group.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| created_at | string(date-time) | false | none | Timestamp when the item was assigned to the group. |
| id | string | false | none | Unique identifier for the assignment. |
| item_group_id | string | false | none | Identifier of the item being assigned to the group. |
| item_id | string | false | none | Identifier of the item group this assignment belongs to. |
| modified_at | string(date-time) | false | none | Timestamp of the last modification to the assignment. |
ItemGroupItemAssignmentCreateRequest
{
"item_group_id": "igrp_1lqyMI1VF074qctA1lpvhFK3PuY",
"item_id": "item_OcThl0eqYyTVQzll6qFrMDMBYyu"
}
Used to assign an item to a group.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| item_group_id | string | true | none | ID of the item group to assign the item to. |
| item_id | string | true | none | ID of the item being assigned. |
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
}
A list of item-to-group assignments.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| data | [ItemGroupItemAssignment] | false | none | Array of item group assignment objects. |
| has_more | boolean | false | none | Indicates if there are more results beyond the current list. |
| total_count | integer | false | none | Total number of assignments in the response. |
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
}
A list of item groups in the system.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| data | [ItemGroup] | false | none | Array of item group objects. |
| has_more | boolean | false | none | Indicates if additional item groups exist. |
| total_count | integer | false | none | Total number of item groups available. |
ItemGroupUpdateRequest
{
"name": "West Coast"
}
Used to update the name of an item group.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| name | string | true | none | Updated name of the item group. |
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
}
A list of items available in the system.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| data | [Item] | false | none | Array of item objects. |
| has_more | boolean | false | none | Indicates whether more items are available beyond the current page. |
| total_count | integer | false | none | Total number of items returned by the query. |
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
}
Represents an option that can be applied to an item.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| allow_multiple_values | boolean | false | none | Whether users can select multiple values for this option. |
| created_at | string(date-time) | false | none | Timestamp when the item option was created. |
| description | string | false | none | Short description of the item option. |
| extended_description | string | false | none | Detailed description or notes for the option. |
| id | string | false | none | Unique identifier for the item option. |
| item_id | string | false | none | ID of the item this option belongs to. |
| modified_at | string(date-time) | false | none | Timestamp of the last update to the option. |
| name | string | false | none | Display name of the item option. |
| required | boolean | false | none | Whether selecting a value for this option is mandatory. |
| sort_order | integer | false | none | Sort order used to display options relative to others. |
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
}
Used to create a new option for an item.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| allow_multiple_values | boolean | false | none | Whether the option supports selecting multiple values. |
| description | string | false | none | Short description for the new item option. |
| extended_description | string | false | none | Additional information or explanation of the option. |
| item_id | string | true | none | ID of the item to which this option will be added. |
| name | string | true | none | Name of the new item option. |
| required | boolean | false | none | Whether this option must be selected. |
| sort_order | integer | false | none | Order in which this option is displayed among others. |
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
}
A list of item options.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| data | [ItemOption] | false | none | List of item option objects. |
| has_more | boolean | false | none | Indicates if additional item options are available. |
| total_count | integer | false | none | Total number of item options. |
ItemOptionUpdateRequest
{
"allow_multiple_values": true,
"description": "<p>Standard description</p>",
"extended_description": "<p>Longer description.</p>",
"name": "Disk Size",
"required": true,
"sort_order": 1
}
Used to update an existing item option.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| allow_multiple_values | boolean | false | none | Update to allow or disallow multiple values. |
| description | string | false | none | Updated short description for the item option. |
| extended_description | string | false | none | Updated detailed description of the option. |
| name | string | false | none | Updated display name of the item option. |
| required | boolean | false | none | Update whether the option is required. |
| sort_order | integer | false | none | Updated display order for the option. |
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"
}
Represents a selectable value for an item option.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| code | string | false | none | A unique code representing this option value, used for internal reference or integrations. |
| cost_decimal | string | false | none | The additional cost of selecting this option value, expressed as a decimal. |
| cost_type | string | false | none | Indicates whether the cost is a fixed amount or a percentage. Defaults to amount if not specified. |
| created_at | string(date-time) | false | none | Timestamp when this option value was created. |
| id | string | false | none | Unique identifier for the item option value. |
| item_id | string | false | none | ID of the item this option value is associated with. |
| item_option_id | string | false | none | ID of the item option this value belongs to. |
| modified_at | string(date-time) | false | none | Timestamp when the option value was last updated. |
| name | string | false | none | The display name of the option value. |
| price_decimal | string | false | none | The additional price charged for this value, expressed as a decimal. |
| pricing_scheme | string | false | none | Pricing method used (e.g., flat, per_unit, percentage). |
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
}
Used to define a new value for an item option.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| code | string | false | none | Unique code identifying the option value. |
| cost_decimal | string | false | none | The cost of the value being created, expressed as a decimal. |
| cost_type | string | false | none | Specifies how the cost should be interpreted (e.g., amount, percentage). Defaults to amount if not specified. |
| item_option_id | string | true | none | The ID of the item option to which this value will be added. |
| name | string | true | none | The name of the option value to be created. |
| price_decimal | string | false | none | Price associated with this value, if different from the item’s base price. |
| pricing_scheme | string | false | none | How the price should be interpreted (e.g., flat rate, per unit). |
| sort_order | integer | false | none | Display order of this value among other values. |
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
}
A list of item option values.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| data | [ItemOptionValue] | false | none | Array of item option value objects. |
| has_more | boolean | false | none | Indicates if additional values exist beyond the current result set. |
| total_count | integer | false | none | Total number of option values available. |
ItemOptionValueUpdateRequest
{
"code": "MPN123",
"cost_decimal": "50.50",
"cost_type": "amount",
"name": "1TB",
"price_decimal": "50.50",
"pricing_scheme": "amount",
"sort_order": 1
}
Used to update a specific item option value.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| code | string | false | none | Updated unique identifier code for the value. |
| cost_decimal | string | false | none | Updated cost associated with the value. |
| cost_type | string | false | none | Updated type of cost, indicating whether it’s a flat amount or a percentage. Defaults to amount if an empty value is specified. |
| name | string | false | none | Updated name of the option value. |
| price_decimal | string | false | none | Updated price associated with this value. |
| pricing_scheme | string | false | none | Updated pricing scheme applied to this value. |
| sort_order | integer | false | none | Sort order. |
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"
}
Represents quantity-based pricing tiers for an item.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| cost_decimal | string | false | none | Unit cost for this tier level. |
| cost_type | string | false | none | Cost type (e.g., amount, percentage) used in calculating the item cost. Required if cost_decimal is provided. Defaults to amount if not specified. |
| created_at | string(date-time) | false | none | Timestamp when the tier was created. |
| id | string | false | none | Unique identifier for the item tier. |
| item_id | string | false | none | ID of the item this tier is associated with. |
| lower_boundary | integer | false | none | Minimum quantity required for this tier to apply. 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 | Timestamp of the last update to this tier. |
| price_decimal | string | false | none | Price for this tier, expressed as a decimal. |
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"
}
Used to define a new pricing tier for an item.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| cost_decimal | string | false | none | Cost applied at this tier level. |
| cost_type | string | false | none | Type of cost used (defaults to amount). Required if cost_decimal is provided. Defaults to amount if not specified. |
| created_at | string(date-time) | false | none | Timestamp when the tier was created. |
| item_id | string | true | none | ID of the item to which this tier belongs. |
| lower_boundary | integer | true | none | Minimum quantity required to activate this tier. A lower_boundary of 0 must exist before other values can be created. |
| modified_at | string(date-time) | false | none | Timestamp of the last update. |
| price_decimal | string | false | none | Price applied when this tier is selected. |
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
}
A list of pricing tiers available for items.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| data | [ItemTier] | false | none | Array of item tier objects. |
| has_more | boolean | false | none | Indicates if more item tiers are available. |
| total_count | integer | false | none | Total number of item tiers available. |
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"
}
Used to update existing item tier details.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| cost_decimal | string | false | none | Updated cost for the item tier. |
| cost_type | string | false | none | Updated cost type (e.g., amount, percentage). Required if cost_decimal is provided. Defaults to amount if not specified. |
| created_at | string(date-time) | false | none | Timestamp of when the tier was originally created. |
| item_id | string | false | none | ID of the item the tier applies to. |
| lower_boundary | integer | false | none | Minimum quantity for this tier (cannot update boundary of 0). An existing lower_boundary of 0 cannot be updated. |
| modified_at | string(date-time) | false | none | Timestamp of the last tier modification. |
| price_decimal | string | false | none | Updated price associated with the tier. |
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
}
Used to update the details of an existing item.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| allow_decimal_quantities | boolean | false | none | Whether fractional quantities are allowed when selling this item. |
| category | string | false | none | Name of the item’s category. Cannot be provided with category_id. |
| category_id | string | false | none | Unique ID of the category. Cannot be provided with category. |
| code | string | false | none | Custom item code. |
| cost_decimal | string | false | none | Unit cost expressed as a decimal. If provided, pricing_scheme must be flat, per_unit, or percentage. |
| cost_type | string | false | none | Indicates how to interpret the item’s cost (e.g., flat, percentage). 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 | Item description. |
| internal_note | string | false | none | Notes for internal use. |
| manufacturer | string | false | none | Name of the item’s manufacturer. Cannot be provided with manufacturer_id. |
| manufacturer_id | string | false | none | Unique ID of the manufacturer. Cannot be provided with manufacturer. |
| name | string | false | none | Name of the item. |
| percentage_price_category_ids | [string] | false | none | List of category IDs for percentage-based pricing. If provided, pricing_scheme must be percentage; required if pricing_scheme is percentage. |
| percentage_price_decimal | string | false | none | Percentage used for pricing. If provided, pricing_scheme must be percentage; required if pricing scheme is percentage. |
| price_decimal | string | false | none | Unit price of the item. If provided, pricing_scheme must be flat or per_unit; validate decimal. |
| pricing_scheme | string | false | none | The method used to calculate the item’s price. Defaults to per_unit if omitted. |
| quantity_help_tip | string | false | none | Tooltip or help text related to quantity selection. |
| recurring | boolean | false | none | Whether the item is billed on a recurring schedule. |
| recurring_interval | string | false | none | Billing interval for recurring items. If provided, recurring must be true; required if recurring is true. |
| restrict_discounting | boolean | false | none | Disables discounts on the item. |
| show_option_prices | boolean | false | none | Whether to display option prices next to the base price. |
| sku | string | false | none | Stock keeping unit for inventory tracking. |
| supplier | string | false | none | Name of the supplier. Cannot be provided with supplier_id. |
| supplier_id | string | false | none | ID of the supplier. Cannot be provided with supplier. |
| taxable | boolean | false | none | Indicates whether the item is taxable. Defaults to per_unit if omitted. |
| weight_decimal | string | false | none | Item weight in decimal format. |
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
}
Represents an individual item added to a quote.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| category | string | false | none | The name of the category the line item falls under. |
| created_at | string(date-time) | false | none | Timestamp when the line item was created. |
| description | string | false | none | Text description of the line item. |
| id | string | false | none | Unique identifier for the line item. |
| manufacturer | string | false | none | Name of the item’s manufacturer. |
| modified_at | string(date-time) | false | none | Timestamp when the line item was last updated. |
| name | string | false | none | Name of the product or service in the line item. |
| part_number | string | false | none | Manufacturer part number, if applicable. |
| quantity | number | false | none | Quantity of the item being quoted. |
| recurring | boolean | false | none | Indicates if the item is recurring (e.g., subscription-based). |
| supplier | string | false | none | Name of the item’s supplier. |
| supplier_sku | string | false | none | Supplier’s stock keeping unit for the item. |
| taxable | boolean | false | none | Whether this line item is subject to tax. |
| unit_cost | number | false | none | The cost per unit for the item. |
| unit_price | number | false | none | The price per unit charged to the customer. |
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
}
Used to add a new line item to a quote.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| category | string | true | none | Category under which the new line item should be created. |
| description | string | false | none | Optional text description of the line item. |
| manufacturer | string | false | none | Name of the manufacturer for the line item. |
| name | string | true | none | Name of the line item. |
| part_number | string | false | none | Optional part number from the manufacturer. |
| quantity | number | true | none | Number of units being quoted. |
| quote_id | string | true | none | ID of the quote this line item belongs to. |
| recurring | boolean | false | none | Whether the item recurs on a subscription basis. |
| supplier | string | false | none | Name of the item’s supplier. |
| supplier_sku | string | false | none | SKU assigned by the supplier. |
| taxable | boolean | false | none | Whether this item is taxable. |
| unit_cost | number | false | none | Cost per unit to your organization. |
| unit_price | number | false | none | Price per unit charged to the customer. |
Manufacturer
{
"created_at": "2019-08-24T14:15:22Z",
"id": "manu_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "Samsung"
}
Represents a product manufacturer.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| created_at | string(date-time) | false | none | Timestamp when the manufacturer record was created. |
| id | string | false | none | Unique identifier for the manufacturer. |
| modified_at | string(date-time) | false | none | Timestamp when the manufacturer record was last modified. |
| name | string | false | none | Name of the manufacturer. |
ManufacturerCreateRequest
{
"name": "Samsung"
}
Used to create a new manufacturer entry.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| name | string | true | none | Name of the manufacturer to be created. |
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
}
A list of manufacturers in the system.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| data | [Manufacturer] | false | none | Array of manufacturer objects. |
| has_more | boolean | false | none | Indicates whether more manufacturers exist beyond this page. |
| total_count | integer | false | none | Total number of manufacturers returned. |
ManufacturerUpdateRequest
{
"name": "Samsung"
}
Used to update manufacturer information.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| name | string | true | none | Updated name for the manufacturer. |
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,
"autotask_opportunity_id": "abc123def456",
"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",
"connectwise_opportunity_id": "ghi789jkl012",
"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": "2019-08-24T14:15:22Z",
"email_last_sent_at": "2019-08-24T14:15:22Z",
"email_status": "sent",
"expired_at": "2019-08-24T14:15:22Z",
"flagged": false,
"halo_opportunity_id": "mno345pqr678",
"hubspot_deal_id": "stu901vwx234",
"id": "quot_2TSEPTEfnooIhvA83l78R0nEqR5",
"internal_notes": "some internal notes",
"kaseya_opportunity_id": "yza567bcd890",
"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",
"pipedrive_deal_id": "efg123hij456",
"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,
"quickbooks_invoice_id": "klm789nop012",
"revision": "3",
"salesforce_opportunity_id": "qrs345tuv678",
"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",
"xero_invoice_id": "wxy901zab234",
"zoho_deal_id": "cde567fgh890"
}
Represents a full sales quote with pricing details.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| annual_cost_decimal | string¦null | false | none | Total annual cost before discounts, tax, and margin. |
| annual_discount_decimal | string¦null | false | none | Annual discount amount applied to the quote. |
| annual_discounted_subtotal_decimal | string¦null | false | none | Annual subtotal after discounts but before tax. |
| annual_margin_decimal | string¦null | false | none | Gross profit margin for the annual portion of the quote. |
| annual_subtotal_decimal | string¦null | false | none | Annual subtotal before discount and tax. |
| annual_tax_total_decimal | string¦null | false | none | Total tax applied to annual items. |
| annual_total_decimal | string¦null | false | none | Final total for annual items including tax and discounts. |
| annual_upfront_payments | string¦null | false | none | Upfront payments required for annual items. |
| autotask_opportunity_id | string¦null | false | none | External Autotask intergration opportunity ID |
| billing_address_1 | string¦null | false | none | First line of the billing address. |
| billing_address_2 | string¦null | false | none | Second line of the billing address. |
| billing_city | string¦null | false | none | City of the billing address. |
| billing_country_iso | string¦null | false | none | ISO country code of the billing address. |
| billing_first_name | string¦null | false | none | First name of the billing contact. |
| billing_last_name | string¦null | false | none | Last name of the billing contact. |
| billing_organization | string¦null | false | none | Organization associated with the billing contact. |
| billing_region_iso | string¦null | false | none | ISO region/state code for the billing address. |
| connectwise_opportunity_id | string¦null | false | none | External ConnectWise intergration opportunity ID for integration |
| contact_id | string | false | none | ID of the contact associated with the quote. |
| created_at | string(date-time) | false | none | Timestamp when the quote was created. |
| currency_iso | string | false | none | ISO code for the currency used in the quote. |
| custom_number | string¦null | false | none | Custom quote number provided by the user. |
| draft | boolean | false | none | Indicates whether the quote is still in draft status. |
| email_first_sent_at | string(date-time)¦null | false | none | Timestamp when the quote was first sent via email. |
| email_last_sent_at | string(date-time)¦null | false | none | Timestamp when the quote was most recently emailed. |
| email_status | string | false | none | Current email status of the quote (e.g., sent, failed). |
| expired_at | string(date-time) | false | none | Timestamp indicating when the quote expires. |
| flagged | boolean | false | none | Indicates if the quote is flagged for follow-up or review. |
| halo_opportunity_id | string¦null | false | none | External Halo intergration opportunity ID for integration |
| hubspot_deal_id | string¦null | false | none | External HubSpot intergration deal ID for integration |
| id | string | false | none | Unique identifier for the quote. |
| internal_notes | string | false | none | Internal notes related to the quote. |
| kaseya_opportunity_id | string¦null | false | none | External Kaseya intergration opportunity ID for integration |
| modified_at | string(date-time) | false | none | Timestamp of the most recent update. |
| monthly_cost_decimal | string¦null | false | none | Monthly cost before discounts and tax. |
| monthly_discount_decimal | string¦null | false | none | Monthly discount applied. |
| monthly_discounted_subtotal_decimal | string¦null | false | none | Monthly subtotal after discounts. |
| monthly_margin_decimal | string¦null | false | none | Margin for the monthly portion. |
| monthly_subtotal_decimal | string¦null | false | none | Monthly subtotal before discounts and tax. |
| monthly_tax_total_decimal | string¦null | false | none | Tax total for monthly items. |
| monthly_total_decimal | string¦null | false | none | Total for monthly items including discounts and tax. |
| monthly_upfront_payments | string¦null | false | none | Upfront payments for monthly items. |
| name | string | false | none | Display name of the quote. |
| number | string | false | none | System-generated or user-defined quote number. |
| one_time_cost_decimal | string¦null | false | none | Cost for one-time items before discounts and tax. |
| one_time_discount_decimal | string¦null | false | none | Discount amount for one-time items. |
| one_time_discounted_subtotal_decimal | string¦null | false | none | Subtotal for one-time items after discounts. |
| one_time_margin_decimal | string¦null | false | none | Margin on one-time items. |
| one_time_subtotal_decimal | string¦null | false | none | Subtotal for one-time items before tax and discount. |
| one_time_tax_total_decimal | string¦null | false | none | Total tax for one-time items. |
| one_time_total_decimal | string¦null | false | none | Final total for one-time items. |
| owner_first_name | string¦null | false | none | First name of the quote owner. |
| owner_id | string | false | none | ID of the quote owner. |
| owner_last_name | string¦null | false | none | Last name of the quote owner. |
| pipedrive_deal_id | string¦null | false | none | External PipeDrive intergration deal ID for integration |
| quarterly_cost_decimal | string¦null | false | none | Quarterly cost before discounts and tax. |
| quarterly_discount_decimal | string¦null | false | none | Discount applied to quarterly items. |
| quarterly_discounted_subtotal_decimal | string¦null | false | none | Subtotal after discount for quarterly items. |
| quarterly_margin_decimal | string¦null | false | none | Margin on quarterly items. |
| quarterly_subtotal_decimal | string¦null | false | none | Subtotal before tax and discount for quarterly items. |
| quarterly_tax_total_decimal | string¦null | false | none | Tax applied to quarterly items. |
| quarterly_total_decimal | string¦null | false | none | Total amount for quarterly items. |
| quarterly_upfront_payments | string¦null | false | none | Upfront payments for quarterly items. |
| quickbooks_invoice_id | string¦null | false | none | External QuickBooks intergration invoice ID for integration |
| revision | string | false | none | Revision identifier for the quote. |
| salesforce_opportunity_id | string¦null | false | none | External Salesforce intergration opportunity ID for integration |
| semi_annual_cost_decimal | string¦null | false | none | Semi-annual cost before discounts and tax. |
| semi_annual_discount_decimal | string¦null | false | none | Discount for semi-annual items. |
| semi_annual_discounted_subtotal_decimal | string¦null | false | none | Subtotal after discounts for semi-annual items. |
| semi_annual_margin_decimal | string¦null | false | none | Margin on semi-annual items. |
| semi_annual_subtotal_decimal | string¦null | false | none | Subtotal before discount and tax. |
| semi_annual_tax_total_decimal | string¦null | false | none | Total tax for semi-annual items. |
| semi_annual_total_decimal | string¦null | false | none | Final amount for semi-annual items. |
| semi_annual_upfront_payments | string¦null | false | none | Upfront payments for semi-annual items. |
| shipping_address_1 | string¦null | false | none | First line of the shipping address. |
| shipping_address_2 | string¦null | false | none | Second line of the shipping address. |
| shipping_city | string¦null | false | none | City for the shipping address. |
| shipping_country_iso | string¦null | false | none | ISO country code for the shipping address. |
| shipping_decimal | string¦null | false | none | Cost of shipping as a decimal value. |
| shipping_first_name | string¦null | false | none | First name of the shipping contact. |
| shipping_last_name | string¦null | false | none | Last name of the shipping contact. |
| shipping_organization | string¦null | false | none | Organization for the shipping address. |
| shipping_region_iso | string¦null | false | none | ISO region/state code for the shipping address. |
| status | string | false | none | Current status of the quote (e.g., sent, won, lost). |
| upfront_cost_decimal | string¦null | false | none | Upfront cost before discount and tax. |
| upfront_discount_decimal | string¦null | false | none | Discount applied to upfront items. |
| upfront_discounted_subtotal_decimal | string¦null | false | none | Subtotal after discount for upfront items. |
| upfront_margin_decimal | string | false | none | Margin on upfront items. |
| upfront_subtotal_decimal | string¦null | false | none | Subtotal before tax and discount. |
| upfront_tax_total_decimal | string¦null | false | none | Tax total for upfront items. |
| upfront_total_decimal | string | false | none | Final total for upfront items. |
| uuid | string | false | none | Universally unique identifier for the quote. |
| won_at | string(date-time) | false | none | Timestamp when the quote was marked as won. |
| xero_invoice_id | string¦null | false | none | External Xero intergration invoice ID for integration |
| zoho_deal_id | string¦null | false | none | External Zoho intergration deal ID for integration |
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",
"sp_contact_id": "a56f8961-82f8-4de8-949f-d3e06b7200c1",
"template_id": "tmpl_2r5WHEQLKFsyKdyIj5daPCp7mjF"
}
Used to generate a new quote.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| appended_content | string | false | none | Additional content to be appended to the quote document. |
| contact_id | string | true | none | ID of the contact associated with the quote. |
| cover_letter | string | false | none | Optional cover letter to include with the quote. |
| currency_abbr | string | false | none | Abbreviation of the currency used for the quote (e.g., USD, CAD). |
| name | string | false | none | Display name for the new quote. |
| sp_contact_id | string | false | none | ID of the ScalePad contact. |
| template_id | string | true | none | ID of the quote template to use. |
QuoteCreateResponse
{
"id": "quot_2r5CZzZNKjHlB7FvizOgceEHUhK",
"url": "https://development.quoter.com/admin/quotes/draft_by_public_id/quot_2r5CZzZNKjHlB7FvizOgceEHUhK"
}
Returns confirmation and URL after creating a quote.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| id | string | false | none | Unique identifier for the newly created quote. |
| url | string | false | none | URL pointing to the created quote. |
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,
"autotask_opportunity_id": "abc123def456",
"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",
"connectwise_opportunity_id": "ghi789jkl012",
"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": "2019-08-24T14:15:22Z",
"email_last_sent_at": "2019-08-24T14:15:22Z",
"email_status": "sent",
"expired_at": "2019-08-24T14:15:22Z",
"flagged": false,
"halo_opportunity_id": "mno345pqr678",
"hubspot_deal_id": "stu901vwx234",
"id": "quot_2TSEPTEfnooIhvA83l78R0nEqR5",
"internal_notes": "some internal notes",
"kaseya_opportunity_id": "yza567bcd890",
"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",
"pipedrive_deal_id": "efg123hij456",
"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,
"quickbooks_invoice_id": "klm789nop012",
"revision": "3",
"salesforce_opportunity_id": "qrs345tuv678",
"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",
"xero_invoice_id": "wxy901zab234",
"zoho_deal_id": "cde567fgh890"
}
],
"has_more": false,
"total_count": 1
}
A list of quotes stored in the system.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| data | [Quote] | false | none | Array of quote objects. |
| has_more | boolean | false | none | Indicates if there are additional quotes to fetch. |
| total_count | integer | false | none | Total number of quotes. |
QuoteTemplate
{
"created_at": "2019-08-24T14:15:22Z",
"id": "tmpl_2lf68j5opaIrjmZmPZUwUXxP3R3",
"modified_at": "2019-08-24T14:15:22Z",
"slug": "sample-template",
"title": "Sample Template"
}
Represents a reusable layout or structure for quotes.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| created_at | string(date-time) | false | none | Timestamp when the quote template was created. |
| id | string | false | none | Unique identifier for the quote template. |
| modified_at | string(date-time) | false | none | Timestamp when the quote template was last updated. |
| slug | string | false | none | URL-safe identifier for the template. |
| title | string | false | none | Human-readable title of the template. |
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
}
A list of available quote templates.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| data | [QuoteTemplate] | false | none | Array of quote template objects. |
| has_more | boolean | false | none | Indicates if additional quote templates exist. |
| total_count | integer | false | none | Total number of available quote templates. |
Supplier
{
"created_at": "2019-08-24T14:15:22Z",
"id": "sup_1jAEZdbtkbLFBAU1Tt0ouKpiBUe",
"modified_at": "2019-08-24T14:15:22Z",
"name": "Newegg"
}
Represents a supplier providing goods or services.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| created_at | string(date-time) | false | none | Timestamp when the supplier record was created. |
| id | string | false | none | Unique identifier for the supplier. |
| modified_at | string(date-time) | false | none | Timestamp when the supplier record was last updated. |
| name | string | false | none | Name of the supplier. |
SupplierCreateRequest
{
"name": "Newegg"
}
Used to add a new supplier record.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| name | string | true | none | Name of the supplier to be created. |
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
}
A list of suppliers in the system.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| data | [Supplier] | false | none | Array of supplier objects. |
| has_more | boolean | false | none | Indicates if more suppliers exist beyond the current page. |
| total_count | integer | false | none | Total number of suppliers available. |
SupplierUpdateRequest
{
"name": "Newegg"
}
Used to update the name of a supplier.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| name | string | true | none | Updated name of the supplier. |
Warehouse
{
"id": "itmw_2tdpIbLafl0Big0WPgsTbVt1BFa",
"name": "Warehouse1",
"quantity": "20"
}
Represents a warehouse and its available inventory.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| id | string | false | none | Unique identifier for the warehouse. |
| name | string | false | none | Name of the warehouse. |
| quantity | string | false | none | Quantity of items currently in stock at the warehouse. |
WarehouseMapping
{
"name": "wh1",
"quantity": "wh1_qty"
}
Maps warehouse data from supplier feeds to internal structures.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| name | string | false | none | Name of the warehouse used in supplier data feeds. |
| quantity | string | false | none | Quantity of stock available in that warehouse from the supplier’s feed. |