Introduction
Welcome to the Jetbuilt Customer API! As a customer, you can use this API to access your data.
Currently only some records can be created/modified using the API (e.g. Projects). Please write with care.
REST
The Jetbuilt API is a REST-style API over HTTPS that uses JSON for serialization and HTTP Token authentication.
Base URLs
While developing your application, we'd recommend you utilize the sandbox environment at:
https://sandbox.jetbuilt.com/api
When you're ready, switch to production at:
Passing data
Fields are passed with the request body, and can either be:
- JSON
- Form Key/Value pairs
If sending JSON, be sure to set the Content-Type
header to
application/json
to identify the request format, otherwise it will
default to form key/value pairs.
Versioning
Example request header specifying the version
curl -H 'Accept: application/vnd.jetbuilt.v1'
curl -H 'Accept: application/vnd.jetbuilt.v1'
Since the API could change over time, we recommend specifying the version you're using with each request. This will help keep your integration working should a new version be released. Otherwise it will default to the latest version. (Currently there is only Version 1.)
Set the version by specifying application/vnd.jetbuilt.v1
in the Accept
header.
Replace v1
with the desired version number. e.g v1, v2, v3, etc...
Rate Limits
Jetbuilt limits the number of API requests made within a period of time.
When the limit is reached, further requests return status code 429
(Rate Limit Exceeded)
The API limit is set at 50 requests within a 10 second window.
Pagination
Sample fetching the 2nd page of clients:
curl --include "https://app.jetbuilt.com/api/clients?page=2" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl --include "https://app.jetbuilt.com/api/clients?page=2" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response header includes 'Link':
Link: <https://app.jetbuilt.com/api/clients?page=1>; rel="first",
<https://app.jetbuilt.com/api/clients?page=1>; rel="prev",
<https://app.jetbuilt.com/api/clients?page=4>; rel="last",
<https://app.jetbuilt.com/api/clients?page=3>; rel="next"
The collection (i.e 'Get all') endpoints paginate their results, with 25 returned per page.
The Jetbuilt API follows the RFC5988 convention of using the Link
header to provide URLs for
the next page. Use these links to retrieve the next page of data.
Note: You can use curl --include
to see your response headers. This is different
than the response body.
The response also includes a X-Total-Count
header, which is the total number of
resources in the collection.
Example Manufacturer Workflow
- Find the Product you manufacture
- Create the Product if it does not exist in the Jetbuilt Database
- Create a Pricing Tier
- Add the Price for that Product/PricingTier
Example Distributor Workflow
- Find the Product you distribute
- Create a Pricing Tier
- Add the Price for that Product/PricingTier
- Add details for the Product (Optional)
Authentication
Sample request with Authorization:
curl "https://app.jetbuilt.com/api/clients" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/clients" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Make sure to replace
YOURAPIKEY
with your API key.
The Jetbuilt API uses API keys to allow access.
(Once out of beta, you will find your API Key under your Company Settings.)
You should include your API key in all API requests to the server in a header that looks like the following:
Authorization: Token token=YOURAPIKEY
You will need to enable API write acccess if you wish to create/modify data.
Company
Get your company locations
curl "https://app.jetbuilt.com/api/company" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/company" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
{
"id": 1,
"name": "Topish AV",
"created_at": "2017-05-05T07:56:42.762-07:00",
"updated_at": "2020-12-02T15:43:11.700-08:00",
"locations": [
{
"id": 1,
"name": "Topish US",
"time_zone": "Pacific Time (US & Canada)",
"product_database_id": 3,
"created_at": "2017-05-16T15:20:38.477-07:00",
"updated_at": "2020-07-20T15:14:49.269-07:00",
"address": "123 Main St",
"city": "Irvine",
"state": "California",
"zipcode": "92660",
"country": "US"
},
{
"id": 2,
"name": "Topish UK",
"time_zone": "London",
"product_database_id": 4,
"created_at": "2017-10-04T10:14:12.606-07:00",
"updated_at": "2019-09-25T11:42:49.193-07:00",
"address": "123 First Ave",
"city": "Liverpool",
"state": "England",
"zipcode": "12390",
"country": "GB"
}
]
}
Status: 200 OK
This endpoint retrieves your basic company info, office locations, along with the product database used for each location.
By default a company shares a single product database across office locations.
HTTP Request
GET https://app.jetbuilt.com/api/company
URL Parameters
Parameter | Description |
---|
Clients
Get all clients
curl "https://app.jetbuilt.com/api/clients" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/clients" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
[
{
"id": 12345,
"company_name": "Smith's AV World",
"delinquent": false,
"payment_schedule": null,
"created_at": "2017-03-08T08:22:16.929-08:00",
"updated_at": "2017-04-10T14:20:55.195-07:00",
"primary_contact_first_name": "Bob",
"primary_contact_last_name": "Smith",
"primary_contact_title": "",
"primary_contact_email": "bobsmith@example.com",
"primary_contact_phone_number_1": "555-123-4567",
"primary_contact_phone_number_2": "",
"address": "123 Cool St",
"city": "Tallahassee",
"state": null,
"zipcode": "32312",
"country": "US",
"external_ids": {
"acumatica_id": "5"
},
"parent_id": 2345,
"contacts": [
{
"id": 2222,
"first_name": "Bob",
"last_name": "Smith",
"title": "",
"email_address": "bobsmith@example.com",
"phone_number_1": "555-123-4567",
"phone_number_2": "",
"primary": true,
"created_at": "2019-09-09T10:19:57.534-07:00",
"updated_at": "2019-09-09T10:19:57.534-07:00"
},
{
...
}
],
"subclients": [
{
"id": 4444,
"company_name": "Smith's AV Regional Branch"
"delinquent": false,
"payment_schedule": null,
"created_at": "2017-03-08T08:22:16.929-08:00",
"updated_at": "2017-04-10T14:20:55.195-07:00",
"primary_contact_first_name": "Jane",
"primary_contact_last_name": "Smith",
"primary_contact_title": "",
"primary_contact_email": "janesmith@example.com",
"primary_contact_phone_number_1": "555-123-4567",
"primary_contact_phone_number_2": "",
"address": "123 1st St",
"city": "Tallahassee",
"state": null,
"zipcode": "32312",
"country": "US",
"external_ids": null,
},
{
...
}
],
},
{
...
}
]
Status: 200 OK
This endpoint retrieves all of your clients.
HTTP Request
GET https://app.jetbuilt.com/api/clients
URL Parameters
Parameter | Description |
---|---|
page | A specific page of results. |
Get a client
curl "https://app.jetbuilt.com/api/clients/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/clients/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response: Similar to Get all clients
Status: 200 OK
This endpoint retrieves a client by ID.
HTTP Request
GET https://app.jetbuilt.com/api/clients/<ID>
URL Parameters
Parameter | Description |
---|---|
ID | The ID of the client to retrieve |
Create a client
curl "https://app.jetbuilt.com/api/clients" \
-X POST \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json' \
-d '{
"user_id": "123",
"company_name": "Awesome AV",
"street_address": "123 Harbor Blvd",
"city": "Costa Mesa",
"state": "CA",
"zipcode": "92626",
"country": "US",
"parent_id": "456"
}'
curl "https://app.jetbuilt.com/api/clients" \
-X POST \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-F "client[user_id]=123" \
-F "client[company_name]=Awesome AV" \
-F "client[street_address]=123 Harbor Blvd" \
-F "client[city]=Costa Mesa" \
-F "client[state]=CA" \
-F "client[zipcode]=92626" \
-F "client[country]=US" \
-F "client[parent_id]=456"
Response: Similar to Get all clients
Status: 201 Created
This endpoint creates a new client.
HTTP Request
POST https://app.jetbuilt.com/api/clients
Data Parameters
Parameter | Description |
---|---|
user_id | The user who is the owner of the client required integer |
company_name | The company name of the client required string |
street_address | The street address string |
city | The city string |
state | The state string |
zipcode | The ZIP code string |
country | The country (alpha-2 code) string |
website | A website for the client string |
phone | A phone number for the client string |
description | A description for the client string |
parent_id | The parent of the client string |
Update a client
curl "https://app.jetbuilt.com/api/clients/<ID>" \
-X PATCH \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json' \
-d '{
"user_id": "123",
"company_name": "Awesome AV",
"delinquent": "false",
"street_address": "123 Harbor Blvd",
"city": "Costa Mesa",
"state": "CA",
"zipcode": "92626",
"country": "US",
"parent_id": "456"
}'
curl "https://app.jetbuilt.com/api/clients/<ID>" \
-X PATCH \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-F "<ID>[user_id]=123" \
-F "<ID>[company_name]=Awesome AV" \
-F "<ID>[delinquent]=false" \
-F "<ID>[street_address]=123 Harbor Blvd" \
-F "<ID>[city]=Costa Mesa" \
-F "<ID>[state]=CA" \
-F "<ID>[zipcode]=92626" \
-F "<ID>[country]=US" \
-F "<ID>[parent_id]=456"
Response: Similar to Get all clients
Status: 200 OK
This endpoint updates a client by ID.
HTTP Request
PUT https://app.jetbuilt.com/api/clients/<ID>
Data Parameters
Parameter | Description |
---|---|
user_id | The user who is the owner of the client integer |
company_name | The company name of the client string |
delinquent | Indicates whether the account is delinquent boolean |
street_address | The street address string |
city | The city string |
state | The state string |
zipcode | The ZIP code string |
country | The country (alpha-2 code) string |
website | A website for the client string |
phone | A phone number for the client string |
description | A description for the client string |
parent_id | The parent of the client string |
Client Contacts
Get all contacts for a client
curl "https://app.jetbuilt.com/api/clients/<CLIENT_ID>/contacts" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/clients/<CLIENT_ID>/contacts" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
[
{
"id": 37211,
"first_name": "Bob",
"last_name": "Jones",
"title": "CEO",
"email_address": "bobjones@example.com",
"phone_number_1": "(555) 123-1234",
"phone_number_2": "",
"description": "",
"primary": true,
"created_at": "2019-08-28T06:22:44.324-07:00",
"updated_at": "2020-02-11T11:28:51.174-08:00"
},
{
...
}
]
Status: 200 OK
This endpoint retrieves all contacts for one of your clients.
HTTP Request
GET https://app.jetbuilt.com/api/clients/<CLIENT_ID>/contacts
URL Parameters
Parameter | Description |
---|---|
CLIENT_ID | The ID of the client |
Get a contact for a client
curl "https://app.jetbuilt.com/api/clients/<CLIENT_ID>/contacts/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/clients/<CLIENT_ID>/contacts/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response: Similar to Get all client contacts
Status: 200 OK
This endpoint retrieves a client contact by ID.
HTTP Request
GET https://app.jetbuilt.com/api/clients/<CLIENT_ID>/contacts/<ID>
URL Parameters
Parameter | Description |
---|---|
CLIENT_ID | The ID of the client |
ID | The ID of the contact to retrieve |
Create a client contact
curl "https://app.jetbuilt.com/api/clients/<CLIENT_ID>/contacts" \
-X POST \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json' \
-d '{
"first_name": "Bob",
"last_name": "Jones",
"title": "Owner",
"email_address": "bobjones2@example.com",
"phone_number_1": "(555) 123-1234",
"primary": "true"
}'
curl "https://app.jetbuilt.com/api/clients/<CLIENT_ID>/contacts" \
-X POST \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-F "contact[first_name]=Bob" \
-F "contact[last_name]=Jones" \
-F "contact[title]=Owner" \
-F "contact[email_address]=bobjones2@example.com" \
-F "contact[phone_number_1]=(555) 123-1234" \
-F "contact[primary]=true"
Response: Similar to Get all client contacts
Status: 201 Created
This endpoint creates a new contact for a client.
HTTP Request
POST https://app.jetbuilt.com/api/clients/<CLIENT_ID>/contacts
Data Parameters
Parameter | Description |
---|---|
first_name | The first name of the contact required string |
last_name | The last name of the contact required string |
title | The title of the contact string |
email_address | The email address of the contact string |
phone_number_1 | The first phone number for the contact string |
phone_number_2 | A second phone number for the contact string |
description | A description for the contact string |
primary | If this is the primary contact for the client (true/false) boolean |
Update a client contact
curl "https://app.jetbuilt.com/api/clients/<CLIENT_ID>/contacts/<ID>" \
-X PATCH \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json' \
-d '{
"first_name": "Bob",
"last_name": "Jones",
"title": "Owner",
"email_address": "bobjones2@example.com",
"phone_number_1": "(555) 123-1234",
"primary": "true"
}'
curl "https://app.jetbuilt.com/api/clients/<CLIENT_ID>/contacts/<ID>" \
-X PATCH \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-F "<ID>[first_name]=Bob" \
-F "<ID>[last_name]=Jones" \
-F "<ID>[title]=Owner" \
-F "<ID>[email_address]=bobjones2@example.com" \
-F "<ID>[phone_number_1]=(555) 123-1234" \
-F "<ID>[primary]=true"
Response: Similar to Get all client contacts
Status: 200 OK
This endpoint updates a contact for a client.
HTTP Request
PUT https://app.jetbuilt.com/api/clients/<CLIENT_ID>/contacts/<ID>
Data Parameters
Parameter | Description |
---|---|
first_name | The first name of the contact string |
last_name | The last name of the contact string |
title | The title of the contact string |
email_address | The email address of the contact string |
phone_number_1 | The first phone number for the contact string |
phone_number_2 | A second phone number for the contact string |
description | A description for the contact string |
primary | If this is the primary contact for the client (true/false) boolean |
Market Segments
Get all market segments
curl "https://app.jetbuilt.com/api/market_segments" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/market_segments" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
[
{
"id": 55,
"office_id": 1744,
"name": "Healthcare",
"vertical_segment": "Healthcare",
"created_at": "2023-10-08T17:29:36.201-07:00",
"updated_at": "2023-10-08T17:29:36.201-07:00"
},
{
...
}
]
Status: 200 OK
This endpoint retrieves all of your market segments.
HTTP Request
GET https://app.jetbuilt.com/api/market_segments
URL Parameters
Parameter | Description |
---|---|
page | A specific page of results. |
office_id | Filter market segments by office |
Phases
Get all phases
curl "https://app.jetbuilt.com/api/phases" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/phases" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
[
{
"id": 717,
"name": "Prewire",
"created_at": "2016-02-08T14:22:01.127-08:00",
"updated_at": "2018-12-10T06:58:35.554-08:00"
},
{
...
}
]
Status: 200 OK
This endpoint retrieves all of your phases.
HTTP Request
GET https://app.jetbuilt.com/api/phases
URL Parameters
Parameter | Description |
---|---|
page | A specific page of results. |
Products
Get all products
curl "https://app.jetbuilt.com/api/product_databases/<DB_ID>/products" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/product_databases/<DB_ID>/products" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
[
{
"id": 351,
"model": "xyz",
"currency_code": "USD",
"product_id": 4590,
"cost": "594.15",
"price": "690.0",
"short_description": "xyz example product",
"msrp": "699.0",
"mapp": null,
"image_url": "https://static.jetbuilt.com/productimages/images/xyz.jpg",
"phase_id": 17,
"shipping_cost": "0.0",
"shipping_price": "55.0",
"discontinued": false,
"notes": "",
"warranty_value": "24.0",
"warranty_unit": "mo",
"rack_value": "24.0",
"rack_unit": "RU",
"power_value": "500.0",
"power_unit": "W",
"poe_value": "500.0",
"poe_unit": "W",
"heat_load_value": "300.0",
"heat_load_unit": "BTU",
"weight_value": "300.0",
"weight_unit": "kg",
"height_value": "3.0",
"height_unit": "m",
"width_value": "4.5",
"width_unit": "m",
"depth_value": "2.0",
"depth_unit": "m",
"commodity_code": "AB123C",
"country_of_origin": "United States",
"shipping_weight_value": "30.0",
"shipping_weight_unit": "lb",
"shipping_height_value": "24",
"shipping_height_unit": "in",
"shipping_width_value": "8",
"shipping_width_unit": "in",
"shipping_depth_value": "12",
"shipping_depth_unit": "in",
"manufacturer": {
"id": 458,
"name": "ACME"
},
"custom": false,
"direct_pricing": true,
"tax_equipment": true,
"tax_labor": true,
"tax_shipping": false,
"favorite": true,
"created_at": "2023-05-04T13:08:27.718-07:00",
"updated_at": "2023-05-04T13:08:27.718-07:00"
},
{
...
}
]
Status: 200 OK
This endpoint retrieves all products that are in your company database
HTTP Request
GET https://app.jetbuilt.com/api/product_databases/<DB_ID>/products
GET https://app.jetbuilt.com/api/product_databases/<DB_ID>/products?manufactuer_name=Shure
The product database ID is prefixed since it's possible for products and pricing to vary across office locations. (Most companies share a single product database across all office locations.)
This DB_ID
can be retrieved from the Company endpoint.
URL Parameters
Parameter | Description |
---|---|
DB_ID | The ID of the the product database (see the Company endpoint) |
manufacturer_name | Filter results by manufacturer name must be an exact match |
model | Filter results by model name must be an exact match |
currency_code | Filter results by currency code. e.g CAD. defaults to USD |
query | Filter results by matching across manufacturer and model names does not need to match exactly e.g. Shure SM57 |
page | A specific page of results. |
min_created_at | Query products created after the specified date time. |
max_created_at | Query products created before the specified date time. |
min_updated_at | Query products updated after the specified date time. |
max_updated_at | Query products updated before the specified date time. |
If filtering with the query
param, then it takes precedence, and the other filtering params are ignored. Can be used when unsure about the exact manufacturer or model name.
The manufactuer_name
, model
, and currency_code
filters can be used together, for more refined filtering, or used separately.
When all 3 are used together, it should return a single result if found (or none if not found). Only a single product should exist in the company's database for a specific manufacturer, model, and currency combination. e.g. Shure, SM57-LC, USD
Get a product
curl "https://app.jetbuilt.com/api/product_databases/<DB_ID>/products/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/product_databases/<DB_ID>/products/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
{
"id": 351,
"model": "xyz",
"currency_code": "USD",
"product_id": 4590,
"cost": "594.15",
"price": "690.0",
"short_description": "xyz example product",
"msrp": "699.0",
"mapp": null,
"image_url": "https://static.jetbuilt.com/productimages/images/xyz.jpg",
"phase_id": 17,
"shipping_cost": "0.0",
"shipping_price": "55.0",
"discontinued": false,
"notes": "",
"warranty_value": "24.0",
"warranty_unit": "mo",
"rack_value": "24.0",
"rack_unit": "RU",
"power_value": "500.0",
"power_unit": "W",
"poe_value": "500.0",
"poe_unit": "W",
"heat_load_value": "300.0",
"heat_load_unit": "BTU",
"weight_value": "300.0",
"weight_unit": "kg",
"height_value": "3.0",
"height_unit": "m",
"width_value": "4.5",
"width_unit": "m",
"depth_value": "2.0",
"depth_unit": "m",
"commodity_code": "AB123C",
"country_of_origin": "United States",
"shipping_weight_value": "30.0",
"shipping_weight_unit": "lb",
"shipping_height_value": "24",
"shipping_height_unit": "in",
"shipping_width_value": "8",
"shipping_width_unit": "in",
"shipping_depth_value": "12",
"shipping_depth_unit": "in",
"manufacturer": {
"id": 458,
"name": "ACME"
},
"custom": false,
"direct_pricing": true,
"tax_equipment": true,
"tax_labor": true,
"tax_shipping": false,
"favorite": true,
"created_at": "2023-05-04T13:08:27.718-07:00",
"updated_at": "2023-05-04T13:08:27.718-07:00"
}
Status: 200 OK
This endpoint retrieves a product from your company database.
HTTP Request
GET https://app.jetbuilt.com/api/product_databases/<DB_ID>/products/<ID>
URL Parameters
Parameter | Description |
---|---|
DB_ID | The ID of the the product database (see the Company endpoint) |
ID | The ID of the product to retrieve |
Create a product
If setting a product image, use cURL's (Key/Value) format
curl "https://app.jetbuilt.com/api/product_databases/<DB_ID>/products" \
-X POST \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json' \
-d '{
"short_description": "JB Test product 1",
"cost": "10.0",
"price": "15.99"
}'
curl "https://app.jetbuilt.com/api/product_databases/<DB_ID>/products" \
-X POST \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-F "product[short_description]=JB Test product 1" \
-F "product[cost]=10.0" \
-F "product[price]=15.99" \
-F "product[image]=@/path/to/file/test.jpg"
Response: Similar to Get a product
Status: 201 Created
This endpoint creates a new product in your company database.
Note: When creating a product in your company database, we will use the provided parameters (required parameters) to find the manufacturer's product in our database in order to connect you to any approved direct pricing and other data we have for the product. If we cannot find a product, it will be a custom product.
The product_id
(products with approved direct pricing) can be found using the vendor products endpoint
HTTP Request
POST https://app.jetbuilt.com/api/product_databases/<DB_ID>/products
URL Parameters
Parameter | Description |
---|---|
DB_ID | The ID of the the product database (see the Company endpoint) |
Data Parameters
Parameter | Description |
---|---|
manufacturer_name | The name of the manufacturer (required1) string |
model | The model name (required1) string |
currency_code | A 3 letter ISO code (e.g. USD, EUR, JPY) Defaults to USD string |
product_id | The id of a manufacturer's product (required1) integer |
cost | The cost of the product2 decimal |
price | The price of the product decimal |
short_description | A short product description string |
image | A product image |
phase_id | The phase id integer |
shipping_cost | The shipping_cost of the product decimal |
shipping_price | The shipping_price of the product decimal |
notes | A products notes string |
favorite | Whether or not the product is favorited boolean |
tax_equipment | Whether or not the products equipment is taxed boolean |
tax_labor | Whether or not the products labor is taxed boolean |
tax_shipping | Whether or not the products shipping is taxed boolean |
warranty_value | The warranty value in days months or yearsdecimal |
warranty_unit | The warranty unit enum Possible values: d, mo, yr |
rack_value | The rack value decimal |
rack_unit | The rack unit enum Possible values: RU |
power_value | The power value decimal |
power_unit | The power unit enum Possible values: W |
poe_value | The poe value decimal |
poe_unit | The poe unit enum Possible values: W |
heat_load_value | The heat_load value decimal |
heat_load_unit | The heat_load unit enum Possible values: BTU |
weight_value | The weight value decimal |
weight_unit | The weight unit enum Possible values: lb, oz, kg, g |
height_value | The height value decimal |
height_unit | The height unit enum Possible values: in, ft, cm, mm |
width_value | The width value decimal |
width_unit | The width unit enum Possible values: in, ft, cm, mm |
depth_value | The depth value decimal |
depth_unit | The depth unit enum Possible values: in, ft, cm, mm |
commodity_code | The commodity code string |
country_of_origin | The country of origin string |
shipping_weight_value | The shipping weight value decimal |
shipping_weight_unit | The shipping weight unit enum Possible values: lb, oz, kg, g |
shipping_height_value | The shipping height value decimal |
shipping_height_unit | The shipping height unit enum Possible values: in, ft, cm, mm |
shipping_width_value | The shipping width value decimal |
shipping_width_unit | The shipping width unit enum Possible values: in, ft, cm, mm |
shipping_depth_value | The shipping depth value decimal |
shipping_depth_unit | The shipping depth unit enum Possible values: in, ft, cm, mm |
Update a product
curl "https://app.jetbuilt.com/api/product_databases/<DB_ID>/products" \
-X PATCH \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json' \
-d '{
"short_description": "JB Test product 2",
"price": "12.99"
}'
curl "https://app.jetbuilt.com/api/product_databases/<DB_ID>/products" \
-X PATCH \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-F "product[short_description]=JB Test product 2" \
-F "product[price]=12.99"
Response: Similar to Get a product
Status: 200 OK
This endpoint updates one of your products.
HTTP Request
PUT https://app.jetbuilt.com/api/product_databases/<DB_ID>/products
URL Parameters
Parameter | Description |
---|---|
DB_ID | The ID of the the product database (see the Company endpoint) |
ID | The ID of the product to update |
Data Parameters
Same as Create a product.
Note: product_id
, manufacturer
, model
, and currency
cannot be changed after product creation.
Projects
Get all projects
curl "https://app.jetbuilt.com/api/projects" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/projects" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
[
{
"id": 97739,
"name": "test project",
"short_description": null,
"payment_schedule": "",
"custom_id": "P - 182",
"version": "1.3",
"price_valid_until": "2018-08-15",
"probability": "0.5",
"created_at": "2018-07-16T08:17:33.273-07:00",
"updated_at": "2018-10-31T14:19:14.241-07:00",
"close_date": "2018-09-04",
"commission_date": "2018-07-16",
"estimated_install_on": "2018-08-01",
"budget": null,
"paid_to_date": {
"cents": 500,
"currency_iso": "USD"
},
"stage": "lost",
"contract_number": "101",
"labor_tax": "0.1",
"requires_engineering?": true,
"avso": true,
"avso_region": "Atlantic",
"project_type": "project",
"sales_tax": "0.1",
"equipment_total": "22257.98",
"labor_total": "33000.0",
"shipping_total": "0.0",
"tax_total": "3366.5",
"total": "58624.48",
"address": "",
"city": "herbert",
"state": "fl",
"zipcode": "",
"country": "US",
"owner": {
"id": 2914,
"full_name": "John Smith"
},
"project_manager": {
"id": 2914,
"full_name": "John Smith"
},
"engineer": {
"id": 2914,
"full_name": "Jill Smith"
},
"second_engineer": {
"id": 2914,
"full_name": "Jill Smith"
},
"client": {
"id": 63117
},
"primary_contact": {
"id": 2914
},
"company_location": {
"id": 3,
"name": "Jetbuilt Testing"
},
"market_segment": {
"id": 98
},
"currency": "USD",
"exchange_rates": { "CAD": 1.243825 },
"image_url": "projects/project-avatar-3.jpg",
"active": false,
"shared": false,
"original_version_id": 97737,
"equipment_program": {
"id": 1939,
"name": "Manufacturer discount",
"office_id": null
}
}
,
{
...
}
]
Status: 200 OK
This endpoint retrieves all of your projects.
It includes any shared projects, and only lists the active version (if multiple versions exist).
HTTP Request
GET https://app.jetbuilt.com/api/projects
GET https://app.jetbuilt.com/api/projects?page=2
URL Parameters
Parameter | Description |
---|---|
page | A specific page of results. |
min_created_at | Query projects created after the specified date time. |
max_created_at | Query projects created before the specified date time. |
min_updated_at | Query projects updated after the specified date time. |
max_updated_at | Query projects updated before the specified date time. |
active | (true/false) returns projects in an active stage when true; otherwise returns projects in non-active stages |
stage | Filter projects by stage (a single stage name or a comma separated list - param is ignored when active param is present) |
query | Filter by project name, custom_id, city, clients company name, clients first or last name |
Note: You can pass a date or a date time to the timestamp queries. For example:
2023-7-28
or 2023-7-28 15:33:33 -700
or 2023-7-28T15:33:33-700
. The time defaults to
00:00:00
when not included, and the timezone defaults to UTC.
Get a project
curl "https://app.jetbuilt.com/api/projects/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/projects/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
{
"id": 97739,
"name": "test project",
"short_description": null,
"payment_schedule": "",
"custom_id": "P - 182",
"version": "1.3",
"price_valid_until": "2018-08-15",
"probability": "1.0",
"created_at": "2018-07-16T08:17:33.273-07:00",
"updated_at": "2018-10-31T14:19:14.241-07:00",
"close_date": "2018-09-04",
"commission_date": "2018-07-16",
"estimated_install_on": "2018-08-01",
"budget": null,
"paid_to_date": {
"cents": 500,
"currency_iso": "USD"
},
"stage": "lost",
"contract_number": "101",
"labor_tax": "0.1",
"requires_engineering?": true,
"avso": true,
"avso_region": "Atlantic",
"project_type": "project",
"sales_tax": "0.1",
"total_margin": "42.0",
"equipment_margin": "27.5",
"equipment_total": "22257.98",
"labor_total": "33000.0",
"shipping_total": "0.0",
"tax_total": "3366.5",
"total": "58624.48",
"address": "",
"city": "herbert",
"state": "fl",
"zipcode": "",
"country": "US",
"owner": {
"id": 2914,
"full_name": "John Smith"
},
"project_manager": {
"id": 2914,
"full_name": "John Smith"
},
"engineer": {
"id": 2914,
"full_name": "Jill Smith"
},
"second_engineer": {
"id": 2914,
"full_name": "Jill Smith"
},
"client": {
"id": 63117
},
"primary_contact": {
"id": 2914
},
"company_location": {
"id": 3,
"name": "Jetbuilt Testing"
},
"currency": "USD",
"exchange_rates": { "CAD": 1.243825 },
"image_url": "projects/project-avatar-3.jpg",
"active": false,
"shared": false,
"original_version_id": 97737,
"equipment_program": {
"id": 1939,
"name": "Manufacturer discount",
"office_id": null
},
"rooms": [
{
"id": 242060,
"name": "Room 1",
"quantity": 1,
"scope": null,
"active": true
},
{
"id": 246767,
"name": "Room 2",
"quantity": 1,
"scope": null,
"active": true
}
],
"systems": [
{
"id": 196878,
"name": "System A",
"scope": null,
"active": true
}
],
"tags": [
{
"id": 30013,
"name": "Floor 1"
}
],
"phases": [],
"labor": [
{
"id": 329891,
"name": "Senior Engineer",
"category": "engineering",
"cost": "76.0",
"price": "100.0",
"total_hours": "1.5"
},
{
"id": 329892,
"name": "Pre-Wire",
"category": "install",
"cost": "70.0",
"price": "165.0",
"total_hours": "0"
}
],
"bundles": [
{
"id": 52779,
"name": "TruAudio GG-8 TruAudio Bundle",
"description": "Bundle",
"quantity": "1.0"
}
],
"versions": [
{
"id": 97737,
"name": "1.0",
"description": null,
"locked": false
},
{
"id": 97738,
"name": "1.2",
"description": null,
"locked": false
}
]
}
Status: 200 OK
This endpoint retrieves a project by ID.
It contains additional project info like Rooms, Systems, Phases, Labor, and Bundles.
Margins are percentages.
HTTP Request
GET https://app.jetbuilt.com/api/projects/<ID>
URL Parameters
Parameter | Description |
---|---|
ID | The ID of the project to retrieve |
Create a project
curl "https://app.jetbuilt.com/api/projects" \
-X POST \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json' \
-d '{
"location_id": "4",
"user_id": "12",
"name": "Big Project",
"budget": "150000",
"paid_to_date": "5.0",
"probability": "0.5",
"close_date": "2021-01-03",
"client_id": "689",
"custom_id": "P - 123",
"currency": "USD",
"short_description": "Project description",
"city": "",
"state": "",
"street_address": "",
"zipcode": "",
"country": "",
"price_valid_until": "2021-10-13",
"tax": "0.05"
}'
curl "https://app.jetbuilt.com/api/projects" \
-X POST \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-F "project[location_id]=4" \
-F "project[user_id]=12" \
-F "project[name]=Big Project" \
-F "project[budget]=150000" \
-F "project[paid_to_date]=5.0" \
-F "project[probability]=0.5" \
-F "project[close_date]=2021-01-03" \
-F "project[client_id]=689" \
-F "project[custom_id]=P - 123" \
-F "project[currency]=USD" \
-F "project[short_description]=Project description" \
-F "project[city]=" \
-F "project[state]=" \
-F "project[street_address]=" \
-F "project[zipcode]=" \
-F "project[country]=" \
-F "project[price_valid_until]=2021-10-13" \
-F "project[tax]=0.05"
Response: Similar to Get a project
Status: 201 Created
This endpoint creates a new project.
Defaults to the opportunity
stage.
HTTP Request
POST https://app.jetbuilt.com/api/projects
Data Parameters
Parameter | Description |
---|---|
location_id | The company location required integer |
user_id | The user who is the project owner required integer |
client_id | The project's client required integer |
name | The name of the project required string |
budget | The opening budget decimal |
market_segment_id | The project's market segment integer |
paid_to_date | The amount paid to date decimal |
probability | The estimated probability (a decimal from 0 - 1. e.g. 0.7 = 70%) decimal |
close_date | The close date. (e.g. 2021-02-14) string |
primary_contact_id | The primary contact for the client integer |
custom_id | Your custom project ID string |
currency | The currency (only if different from company and client defaults) string |
short_description | The description of the project string |
city | The city of the project string |
state | The state of the project string |
street_address | The street_address of the project string |
zipcode | The zipcode of the project string |
country | The country of the project (alpha-2 code) string |
price_valid_until | The date the price is valid until (e.g. 2021-02-14) string |
tax | The sales tax of the project decimal |
contract_number | The contract number of the project string |
Additional Data Parameters for Enterprise Companies
Parameter | Description |
---|---|
project_type | The project type enum All possible values: project, box_sale, design, service, rental Possible values are dependent upon your company settings. |
project_manager_id | The user who is the project manager integer |
engineer_id | The user who is the engineer integer |
second_engineer_id | The user who is the engineer integer |
avso | Indicates if the project is an AVSO project boolean |
avso_region | The Projects AVSO Region string All possible values: Atlantic, National Capital, Ontario, Pacific, Québec, Western Sending an invalid value will unset the field |
Update a project
curl "https://app.jetbuilt.com/api/projects/<ID>" \
-X PATCH \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json' \
-d '{
"user_id": "5",
"name": "Big Project",
"budget": "100000",
"paid_to_date": "5.0",
"probability": "0.8",
"close_date_": "2021-03-01",
"custom_id": "P - 123",
"stage": "estimate",
"short_description": "Project description",
"city": "",
"state": "",
"street_address": "",
"zipcode": "",
"country": "",
"price_valid_until": "2021-10-13",
"tax": "0.05"
}'
curl "https://app.jetbuilt.com/api/projects/<ID>" \
-X PATCH \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-F "<ID>[user_id]=5" \
-F "<ID>[name]=Big Project" \
-F "<ID>[budget]=100000" \
-F "<ID>[paid_to_date]=5.0" \
-F "<ID>[probability]=0.8" \
-F "<ID>[close_date_]=2021-03-01" \
-F "<ID>[custom_id]=P - 123" \
-F "<ID>[stage]=estimate" \
-F "<ID>[short_description]=Project description" \
-F "<ID>[city]=" \
-F "<ID>[state]=" \
-F "<ID>[street_address]=" \
-F "<ID>[zipcode]=" \
-F "<ID>[country]=" \
-F "<ID>[price_valid_until]=2021-10-13" \
-F "<ID>[tax]=0.05"
Response: Similar to Get a project
Status: 200 OK
This endpoint updates a project by ID.
HTTP Request
PUT https://app.jetbuilt.com/api/projects/<ID>
Data Parameters
Parameter | Description |
---|---|
ID | The ID of the project to update |
user_id | The user who is the project owner integer |
name | The name of the project string |
budget | The opening budget decimal |
market_segment_id | The project's market segment integer |
paid_to_date | The amount paid to date decimal |
probability | The estimated probability (a decimal from 0 - 1. e.g. 0.7 = 70%) decimal |
close_date | The close date. (e.g. 2021-02-14) string |
primary_contact_id | The primary contact for the client integer |
custom_id | Your custom project ID string |
stage | The project's stage enum Possible values: opportunity, estimate, revisions, proposal, contract, install, review, completed, icebox, lost, template, trash |
short_description | The description of the project string |
city | The city of the project string |
state | The state of the project string |
street_address | The street_address of the project string |
zipcode | The zipcode of the project string |
country | The country of the project (alpha-2 code) string |
price_valid_until | The date the price is valid until (e.g. 2021-02-14) string |
tax | The sales tax of the project decimal |
contract_number | The contract number of the project string |
Additional Data Parameters for Enterprise Companies
Parameter | Description |
---|---|
project_type | The project type enum All possible values: project, box_sale, design, service, rental Possible values are dependent upon your company settings. |
project_manager_id | The user who is the project manager integer |
engineer_id | The user who is the engineer integer |
second_engineer_id | The user who is the engineer integer |
avso | Indicates if the project is an AVSO project boolean |
avso_region | The Projects AVSO Region string All possible values: Atlantic, National Capital, Ontario, Pacific, Québec, Western Sending an invalid value will unset the field |
Create a project revision
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/revisions" \
-X POST \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json' \
-d '{
"name": "1.2",
"description": "Changed a few things"
}'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/revisions" \
-X POST \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-F "revision[name]=1.2" \
-F "revision[description]=Changed a few things"
Response: Similar to Get a project
Status: 201 Created
This endpoint creates a new revision for a project.
Creating a new revision means a new project version is created.
If successful, the new project version will be returned.
Creating a new project version may take a few moments.
HTTP Request
POST https://app.jetbuilt.com/api/projects/<PROJECT_ID>/revisions
Data Parameters
Parameter | Description |
---|---|
PROJECT_ID | The ID of the project |
name | The version name string |
description | The version description string |
Project Items
Get all items in your project
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/items" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/items" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
{
"line_items": [
{
"id": 1900102,
"manufacturer_id": 252,
"manufacturer_name": "Sonos",
"model": "SUB-GB",
"part_number": null,
"owner_furnished": false,
"msrp": "699.0",
"mapp": "699.0",
"price": "699.0",
"cost": "433.38",
"currency_iso": "USD",
"short_description": "Subwoofer Gloss BlackWireless subwoofer",
"shipping_price": "0.0",
"subtotal_equipment_price": "6990.0",
"total_equipment_price": "13980.0",
"tax_equipment": true,
"tax_shipping": false,
"created_at": "2018-07-19T10:42:21.736-07:00",
"updated_at": "2018-07-25T13:52:34.062-07:00",
"notes": null,
"external_notes": null,
"subcontract_labor_cost": "0.0",
"subcontract_labor_price": "0.0",
"kind": "physical",
"hidden": false,
"purchasing_released": false,
"engineering_released": false,
"avso_ranking": "10",
"avso_discount": "0.0",
"avso_msrp": {
"cents": 59900,
"currency_iso": "CAD"
},
"avso_item_name": "Subwoofer",
"discount": "0.0",
"custom": false,
"product_id": 1251085,
"custom_product_id": null,
"selected_purchasing_vendor": {
"id": 169,
"name": "Chief"
},
"purchasing_source": {
"id": 441,
"company_name": "Legrand AV"
},
"quantity": "20.0",
"quantity_per_room": "10.0",
"quantity_per_bundle": null,
"bundle": null,
"room": {
"id": 242060,
"name": "Room 1",
"quantity": "2.0"
},
"system": {
"id": 196878,
"name": "System A"
},
"tag": {
"id": 30013,
"name": "Floor 1"
},
"phase": null,
"option": null,
"labor": [
{
"category": "install",
"minutes": "600.0",
"taxable": true,
"cost": "700.0",
"price": "1650.0",
"labor_type": {
"id": 329892,
"name": "Pre-Wire"
}
}
],
"metadata": {
"my_integration": { "my": ["data"] }
}
},
{
...
}
],
"factors": [
{
"id": 25144,
"name": "Management",
"description": "Hours per day of install",
"factor_method": "hours_per_day",
"total_price": "0.0",
"total_cost": "0.0",
"taxed": false,
"hidden": false,
"created_at": "2018-07-30T11:31:59.120-07:00",
"updated_at": "2018-07-30T11:33:18.807-07:00"
},
{
"id": 62411,
"name": "Trip Factor",
"description": "Trips",
"factor_method": "trip_calc",
"total_cost": "700.0",
"total_price": "1225.0",
"taxed": false,
"hidden": false,
"created_at": "2023-10-17T19:57:06.592-07:00",
"updated_at": "2023-10-17T21:58:01.567-07:00",
"trips": [
{
"description": "Install",
"days": 7
},
{
...
}
],
"expenses": [
{
"expense_name": "Lodging",
"calculation_method": "trip_flat_rate_per_day",
"per_crew_member": true,
"plus_supervisor": false,
"cost": "100.0",
"price": "175.0"
},
{
...
}
]
}
{
...
}
]
}
Status: 200 OK
This endpoint retrieves the items in your project.
Includes line items and factors.
Factors
Trip Calculator (trip_calc
) factors have an itemized list of trips and expenses.
Product IDs
If the item is using one of your custom products (custom: true
), then it will
return a custom_product_id
. Otherwise it will have a product_id
from the
Jetbuilt product database.
Quantities
An item's quantity
is the total quantity of the item in the project.
i.e. If an item exists in a bundle or room which themselves have multiple quantities, it is the total across each.
For example:
- Basic Room (quantity of 4)
- Audio Bundle (quantity of 2 per room)
- Item A (quantity of 3 per bundle)
- Audio Bundle (quantity of 2 per room)
The quantity returned for Item A is: 4 x 2 x 3 = 24
An item's quantity_per_room
and quantity_per_bundle
further break down how
many of this item appears it's corresponding room and/or bundle.
Item Kinds
An item's kind
is the type of item: physical
, hourly_labor
, or subcontract_labor
.
physical
and subcontract_labor
have separate price
/cost
fields.
- A
physical
itemsprice
/cost
fields areprice
/cost
respectively. - A
subcontract_labor
itemsprice
/cost
fields aresubcontract_labor_price
/subcontract_labor_cost
respectively.
Currencies
The price of an item is always in the currency of the project.
The msrp
, mapp
, and cost
of the item are in the currency indicated by currency_iso
In a future version of the API all money values will contain the currency directly:
"cost": { "cents": 20000, "currency_iso": "USD" }
HTTP Request
GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/items
GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/items?page=2
URL Parameters
Parameter | Description |
---|---|
PROJECT_ID | The ID of the project |
page | A specific page of line item results. All factors are always returned. |
Create a Project Item
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/items/<ID>" \
-X POST \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json' \
-d '{
"room_id": "1234",
"system_id": "1234",
"tag_id": "1234",
"phase_id": "1234",
"short_description": "description",
"external_notes": "note",
"quantity_per_room": "86"
}'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/items/<ID>" \
-X POST \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-F "<ID>[room_id]=1234" \
-F "<ID>[system_id]=1234" \
-F "<ID>[tag_id]=1234" \
-F "<ID>[phase_id]=1234" \
-F "<ID>[short_description]=description" \
-F "<ID>[external_notes]=note" \
-F "<ID>[quantity_per_room]=86"
Response: Similar to Get all project items
Status: 201 Created
This endpoint creates an item for a project.
An item cannot be created when the project is locked.
HTTP Request
POST https://app.jetbuilt.com/api/projects/<PROJECT_ID>/items
URL Parameters
Parameter | Description |
---|---|
PROJECT_ID | The project ID of the item |
Data Parameters
Parameter | Description | Default |
---|---|---|
manufacturer_name required | The name of the manufacturer string | |
model required | The model of the item string | |
currency_code | The three letter ISO currency code, e.g. USD . string |
The Project currency |
price | The item price decimal | 0.0 |
short_description | Description of the item string | |
room_name | Name of the room in which to place the the item string | The first Room in the Project |
system_name | Name of the system in which to place the the item string | The first System in the Project |
quantity_per_room | The quantity for the item decimal | 1 |
shipping_price | The shipping price decimal | 0.0 |
shipping_cost | The shipping cost decimal | 0.0 |
notes | Internal notes string | |
external_notes | Customer visible notes for the item string | |
tax_equipment | Apply tax to the equipment price boolean | |
tax_shipping | Apply tax to the shipping price boolean | |
metadata | Arbitrary JSON that you can attach to this object JSON Object |
Update a project item
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/items/<ID>" \
-X PATCH \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json' \
-d '{
"room_id": "1234",
"system_id": "1234",
"tag_id": "1234",
"phase_id": "1234",
"short_description": "description",
"external_notes": "note",
"quantity_per_room": "86",
"metadata": "{:my_integration=>{:my=>["data"]}}"
}'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/items/<ID>" \
-X PATCH \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-F "<ID>[room_id]=1234" \
-F "<ID>[system_id]=1234" \
-F "<ID>[tag_id]=1234" \
-F "<ID>[phase_id]=1234" \
-F "<ID>[short_description]=description" \
-F "<ID>[external_notes]=note" \
-F "<ID>[quantity_per_room]=86" \
-F "<ID>[metadata]={:my_integration=>{:my=>["data"]}}"
Response: Similar to Get all project items
Status: 200 OK
This endpoint updates an item for a project.
An item cannot be updated when the project is locked.
An item's room, system, and tag id cannot be updated if the item belongs to a bundle.
HTTP Request
PUT https://app.jetbuilt.com/api/projects/<PROJECT_ID>/items/<ID>
URL Parameters
Parameter | Description |
---|---|
PROJECT_ID | The project ID of the item |
ID | The ID of the item to update |
Data Parameters
Parameter | Description |
---|---|
room_id | The room of the item integer |
system_id | The system of the item integer |
tag_id | The tag of the item integer |
phase_id | The phase of the item integer |
short_description | Description of the item string |
external_notes | Customer visible notes for the item string |
quantity_per_room | The quantity for the item decimal |
cost | The item cost decimal |
metadata | Arbitrary JSON that you can attach to this object JSON Object |
Project Options
Get all options/change orders in your project
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/options" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/options" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
[
{
"id": 27409,
"name": "option1",
"sold": true,
"scope": "",
"total": "550.0",
"upgrade_total": "870.70",
"payment_schedule": null,
"created_at": "2018-11-06T09:31:43.646-08:00",
"updated_at": "2018-11-06T09:32:02.156-08:00",
"active": true,
"change_order": false,
"room": null
},
{
...
}
]
Status: 200 OK
This endpoint retrieves the options/change orders in your project.
Options become known as 'Change Orders' once the project moves to the contract stage.
HTTP Request
GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/options
URL Parameters
Parameter | Description |
---|---|
PROJECT_ID | The ID of the project |
page | A specific page of results. |
Get an option
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/options/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/options/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
{
"id": 27409,
"name": "option 1",
"sold": true,
"created_at": "2020-06-12T12:27:16.184-07:00",
"updated_at": "2020-06-12T12:27:31.535-07:00",
"total": "550.0",
"upgrade_total": "870.70",
"scope": "",
"payment_schedule": null,
"active": true,
"change_order": false,
"room": null,
"line_items": [
{
"id": 3303,
...
"replacement_lineitem_ids": [
374
],
...
},
...
],
"factors": [
{
"id": 155763,
"name": "Labor",
"description": "Labor",
"factor_method": "equipment_price",
"taxed": true,
"hidden": false,
"total_cost": "5.5",
"total_price": "24.75",
"total_tax": "1.918125"
},
{
...
}
]
}
Status: 200 OK
This endpoint retrieves an option/change order by ID.
Shows additional detail for an option.
Notably:
- Lists factors, along with how much of each factor applies to the option.
- The Item lists replacement_lineitem_ids
HTTP Request
GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/options/<ID>
URL Parameters
Parameter | Description |
---|---|
PROJECT_ID | The ID of the project |
ID | The ID of the option to retrieve |
page | A specific page of line item results |
Get all rooms in your option
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/options/<OPTION_ID>/rooms" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/options/<OPTION_ID>/rooms" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
[
{
"id": 3234,
"name": "Main Room",
"quantity": 1,
"created_at": "2019-11-01T11:03:05.572-07:00",
"updated_at": "2020-02-06T15:35:41.664-08:00"
},
{
...
}
]
Status: 200 OK
This endpoint retrieves the rooms in your project's option.
HTTP Request
GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/options/<OPTION_ID>/rooms
URL Parameters
Parameter | Description |
---|---|
PROJECT_ID | The ID of the project |
OPTION_ID | The ID of the option |
page | A specific page of results |
Get a room in your option
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/options/<OPTION_ID>/rooms/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/options/<OPTION_ID>/rooms/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response: Similar to Get a room in your project
Status: 200 OK
This endpoint retrieves a project room by ID.
Shows additional detail for an individual project room in an option.
HTTP Request
GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/options/<OPTION_ID>/rooms/<ID>
URL Parameters
Parameter | Description |
---|---|
PROJECT_ID | The ID of the project |
OPTION_ID | The ID of the option |
ID | The ID of the client to retrieve |
page | A specific page of line item results |
Get purchasing info for items in your option
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/options/<OPTION_ID>/purchasing" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/options/<OPTION_ID>/purchasing" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response: Similar to Project Purchasing
Status: 200 OK
This endpoint retrieves purchasing info for items in your project's option.
Line items are consolidated together for purchasing, with a purchase source listed when set.
Grouped line items will be listed together in the ids
field.
HTTP Request
GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/options/<OPTION_ID>/purchasing
GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/options/<OPTION_ID>/purchasing?page=2
URL Parameters
Parameter | Description |
---|---|
PROJECT_ID | The ID of the project |
OPTION_ID | The ID of the option |
page | A specific page of line item results |
Project Rooms
Get all rooms in your project
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/rooms" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/rooms" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
[
{
"id": 3234,
"name": "Main Room",
"quantity": 1,
"created_at": "2019-11-01T11:03:05.572-07:00",
"updated_at": "2020-02-06T15:35:41.664-08:00"
},
{
...
}
]
Status: 200 OK
This endpoint retrieves the rooms in your project.
HTTP Request
GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/rooms
URL Parameters
Parameter | Description |
---|---|
PROJECT_ID | The ID of the project |
page | A specific page of results |
Get a room in your project
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/rooms/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/rooms/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
{
"id": 3234,
"name": "Main Room",
"quantity": 1,
"created_at": "2018-02-23T11:57:50.853-08:00",
"updated_at": "2020-08-20T16:11:56.520-07:00",
"total_cost": "70370.4089260971998418969570213514",
"total_price": "151136.2848120055371328870953042518",
"total_tax": "10909.088533333333333333328",
"equipment_total_cost": "58263.9089260971998418971570213514",
"equipment_total_price": "126098.6489260971998418971570213514",
"labor_total_cost": "11851.4999999999999999998",
"labor_total_price": "21058.9999999999999999996",
"other_total_cost": "255.0",
"other_total_price": "3978.6358859083372909903382829004",
"line_items": [
{
...
}
],
"factors": [
{
"id": 342,
"name": "Shipping",
"description": "Percentage",
"factor_method": "equipment_price",
"taxed": false,
"hidden": false,
"total_cost": "0.0",
"total_price": "3623.6358859083372909903382829004"
},
{
...
}
]
}
Status: 200 OK
This endpoint retrieves a project room by ID.
Shows additional detail for an individual project room.
Notably, it:
- Shows equipment and labor totals (cost & price)
- Lists line items in the room
- Lists project factors, along with how much of each factor applies to the room.
Totals are not currently rounded. Generally, factors are meant for an entire project, so displaying them for an individual room causes fractional amounts.
HTTP Request
GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/rooms/<ID>
URL Parameters
Parameter | Description |
---|---|
PROJECT_ID | The ID of the project |
ID | The ID of the client to retrieve |
page | A specific page of line item results |
Project Systems
Get all systems in your project
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/systems" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/systems" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
[
{
"id": 3234,
"name": "Audio system",
"created_at": "2019-11-01T11:03:05.572-07:00",
"updated_at": "2020-02-06T15:35:41.664-08:00"
},
{
...
}
]
Status: 200 OK
This endpoint retrieves the systems in your project.
HTTP Request
GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/systems
URL Parameters
Parameter | Description |
---|---|
PROJECT_ID | The ID of the project |
page | A specific page of results |
Project Tags
Get all tags in your project
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/tags" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/tags" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
[
{
"id": 3234,
"name": "Tag",
"created_at": "2019-11-01T11:03:05.572-07:00",
"updated_at": "2020-02-06T15:35:41.664-08:00"
},
{
...
}
]
Status: 200 OK
This endpoint retrieves the tags in your project.
HTTP Request
GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/tags
URL Parameters
Parameter | Description |
---|---|
PROJECT_ID | The ID of the project |
page | A specific page of results |
Project Discussions
Get all discussions in your project
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/discussions" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/discussions" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
[
{
"id": 27409,
"title": "discussion name",
"comments": [
{
"id": 11545,
"created_at": "2023-07-31T06:46:04.951-07:00",
"updated_at": "2023-07-31T06:46:05.260-07:00",
"user": {
"id": 486,
"full_name": "John S"
},
"comment": "A comment"
},
...
]
},
{
...
}
]
Status: 200 OK
This endpoint retrieves the discussions in your project.
HTTP Request
GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/discussions
URL Parameters
Parameter | Description |
---|---|
PROJECT_ID | The ID of the project |
page | A specific page of results. |
Project Proposals
Get proposals in your project
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/proposals" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/proposals" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
[
{
"id": 304402,
"name": "Proposal 8/9/19",
"sent_at": null,
"purchased_at": null,
"created_at": "2019-08-08T16:59:50.008-07:00",
"updated_at": "2022-09-08T14:03:12.359-07:00",
"private_link": "https://app.jetbuilt.com/projects/111214/proposals/304402",
"public_link": null,
"expiry_public_link": null
},
...
]
Status: 200 OK
This endpoint retrieves the proposals in your project.
The public_link
field is present when the proposal has been made public.
The expiry_public_link
field is present when expiry_public_link
parameter is set to true
.
HTTP Request
GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/proposals
GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/proposals?page=2
URL Parameters
Parameter | Description |
---|---|
PROJECT_ID | The ID of the project |
page | A specific page of results |
expiry_public_link | if set to true a public link is generated that expires after 5 minutes |
Project Purchasing
Get purchasing info for items in your project
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/purchasing" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/purchasing" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
{
"line_items": [
{
"ids": [
123,
145,
167
],
"full_name": "ACME 123",
"short_description": "super audio enhancer",
"order_status": "not_ordered",
"order_notes": null,
"cost": "100.0",
"total_order_cost": "300.0",
"project_quantity": "3.0",
"order_quantity": "3",
"source": {
"id": 34,
"name": "Audio Supplier"
},
"sold_change_order": false
},
{
...
}
]
}
Status: 200 OK
This endpoint retrieves purchasing info for items in your project.
Line items are consolidated together for purchasing, with a purchase source listed when set.
Grouped line items will be listed together in the ids
field.
sold_change_order
indicates if any of the grouped line items are from a sold change order.
HTTP Request
GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/purchasing
GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/purchasing?page=2
URL Parameters
Parameter | Description |
---|---|
PROJECT_ID | The ID of the project |
page | A specific page of line item results |
Project Service Packages
Get all service packages in your project
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/service_packages" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/service_packages" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
{
"service_packages": [
{
"id": 3395,
"name": "Annual Maintenance",
"purchase_type": "included",
"pricing_method": "flat_price",
"program_term": "annually",
"price": "200.0",
"cost": "100.0",
"sold": true,
"taxed": false,
"taxable_amount_percent": "100.0"
},
{
...
}
]
}
Status: 200 OK
This endpoint retrieves the service_packages in your project.
URL Parameters
Parameter | Description |
---|---|
PROJECT_ID | The ID of the project |
page | A specific page of service package results. |
Get a service package
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/service_packages/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/service_packages/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
{
"id": 3395,
"name": "Annual Maintenance",
"purchase_type": "included",
"pricing_method": "flat_price",
"program_term": "annually",
"price": "200.0",
"cost": "100.0",
"sold": true,
"taxed": false,
"taxable_amount_percent": "100.0"
}
Status: 200 OK
This endpoint retrieves a service package by ID.
HTTP Request
GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/service_packages/<ID>
URL Parameters
Parameter | Description |
---|---|
PROJECT_ID | The project ID of the service package |
ID | The ID of the service package to update |
Update a Project Service Package
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/service_packages/<ID>" \
-X PUT \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json' \
-d '{
"price": "10",
"cost": "5"
}'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/service_packages/<ID>" \
-X PUT \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-F "<ID>[price]=10" \
-F "<ID>[cost]=5"
Response: Similar to Get all project items
Status: 200 OK
This endpoint updates a service package for a project.
A service package cannot be updated when the project is locked.
HTTP Request
PUT https://app.jetbuilt.com/api/projects/<PROJECT_ID>/service_packages/<ID>
URL Parameters
Parameter | Description |
---|---|
PROJECT_ID | The project ID of the service package |
ID | The ID of the service package to update |
Data Parameters
Parameter | Description |
---|---|
price | The price of the service package decimal |
cost | The system of the item decimal |
Purchasing Sources
Get all purchasing sources
curl "https://app.jetbuilt.com/api/purchasing/sources" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/purchasing/sources" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
[
{
"id": 1,
"company_name": "Awesome Audio",
"first_name": "John",
"last_name": "Smith",
"email": "johnaudio@example.com",
"phone": "5551234567",
"default_ship": "project_site",
"created_at": "2016-02-08T15:40:38.491-08:00",
"updated_at": "2019-01-07T09:35:48.005-08:00",
"dealer_number": "XYZ"
},
{
...
}
]
Status: 200 OK
This endpoint retrieves all of purchasing sources for your company.
HTTP Request
GET https://app.jetbuilt.com/api/purchasing/sources
URL Parameters
Parameter | Description |
---|---|
page | A specific page of results. |
Get a purchasing source
curl "https://app.jetbuilt.com/api/purchasing/sources/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/purchasing/sources/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response: Similar to Get all purchasing sources
Status: 200 OK
This endpoint retrieves a purchasing source by ID.
HTTP Request
GET https://app.jetbuilt.com/api/purchasing/sources/<ID>
URL Parameters
Parameter | Description |
---|---|
ID | The ID of the purchasing source to retrieve |
Purchase Orders
Get all Purchase Orders
curl "https://app.jetbuilt.com/api/purchase_orders" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/purchase_orders" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
[
{
"id": 123,
"user_id": 456,
"project_id": 95636,
"purchasing_source_id": 1146,
"custom_id": "JB226",
"notes": "",
"status": "ordered",
"shipping_option": "Ground Shipping",
"created_at": "2019-04-23T12:54:59.719-07:00",
"updated_at": "2019-09-11T18:35:27.894-07:00",
"ship_to": "Jetbuilt Testing",
"ship_address": {
"street": "120 Newport Center Drive",
"city": "Newport Beach",
"region": "California",
"postal_code": "92660",
"country": "US"
}
},
{
...
}
]
Status: 200 OK
This endpoint retrieves all of your purchase orders.
HTTP Request
GET https://app.jetbuilt.com/api/purchase_orders
URL Parameters
Parameter | Description |
---|---|
page | A specific page of results. |
project_id | an optional project id to filter by |
min_created_at | Query purchase orders created after the specified date time. |
max_created_at | Query purchase orders created before the specified date time. |
min_updated_at | Query purchase orders updated after the specified date time. |
max_updated_at | Query purchase orders updated before the specified date time. |
Get a purchase order
curl "https://app.jetbuilt.com/api/purchase_orders/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/purchase_orders/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
{
"id": 123,
"user_id": 456,
"project_id": 95636,
"purchasing_source_id": 1146,
"custom_id": "JB226",
"notes": "",
"status": "ordered",
"shipping_option": "Ground Shipping",
"created_at": "2019-04-23T12:54:59.719-07:00",
"updated_at": "2019-09-11T18:35:27.894-07:00",
"ship_to": "Jetbuilt Testing",
"ship_address": {
"street": "120 Newport Center Drive",
"city": "Newport Beach",
"region": "California",
"postal_code": "92660",
"country": "US"
},
"line_items": [
{
"ids": [
123,
145,
167
],
"full_name": "ACME 123",
"short_description": "super audio enhancer",
"order_status": "not_ordered",
"order_notes": null,
"cost": "100.0",
"total_order_cost": "300.0",
"project_quantity": "3.0",
"order_quantity": "3",
"source": {
"id": 34,
"name": "Audio Supplier"
}
},
{
...
}
]
}
Status: 200 OK
This endpoint retrieves a purchase order by ID.
HTTP Request
GET https://app.jetbuilt.com/api/purchase_orders/<ID>
URL Parameters
Parameter | Description |
---|---|
ID | The ID of the purchase order to retrieve |
Tasks
Get All Tasks
curl "https://app.jetbuilt.com/api/tasks" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/tasks" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
[
{
"id": 318,
"name": "Install the thing",
"client_id": null,
"project_id": 97676,
"created_by_id": 47,
"completed_by_id": 48,
"completed_at": "2023-10-19T22:42:08.348-07:00",
"minutes": "60.0",
"lineitem_id": null,
"phase_id": 31,
"labor_type_id": null,
"created_at": "2023-10-18T23:39:13.544-07:00",
"updated_at": "2023-10-19T02:35:09.534-07:00",
"assigned_to_id": 48,
"due_on": "2023-10-30",
"start_date": "10/30/2023",
"start_time": "8:30 AM",
"time_zone": "Eastern Time (US & Canada)",
"all_day": false
},
{
...
}
]
Status: 200 OK
This endpoint retrieves all tasks.
HTTP Request
GET https://app.jetbuilt.com/api/tasks
GET https://app.jetbuilt.com/api/tasks?project_id=1234&type=install&page=2
URL Parameters
Parameter | Description |
---|---|
project_id | Filter results by the project id |
type | Filter results by install or sales tasks |
page | A specific page of results. |
Get a task
curl "https://app.jetbuilt.com/api/task/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/task/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
{
"id": 318,
"name": "Install the thing",
"client_id": null,
"project_id": 97676,
"created_by_id": 47,
"completed_by_id": 48,
"completed_at": "2023-10-19T22:42:08.348-07:00",
"minutes": "60.0",
"lineitem_id": null,
"phase_id": 31,
"labor_type_id": null,
"created_at": "2023-10-18T23:39:13.544-07:00",
"updated_at": "2023-10-19T02:35:09.534-07:00",
"assigned_to_id": 48,
"due_on": "2023-10-30",
"start_date": "10/30/2023",
"start_time": "8:30 AM",
"time_zone": "Eastern Time (US & Canada)",
"all_day": false,
"steps": [
{
"description": "Step 1",
"minutes": "10.0",
"photo_required": true
},
{
...
}
],
"notes": [
{
"user_id": 486,
"comment": "\n Just completed the step \"Step 1\" to the task \"Step 1\". Enjoy this photo of the work:\n[Screenshot 2023-10-19 at 7.36.34 PM.png]"
},
{
...
}
]
}
Status: 200 OK
This endpoint retrieves a task by ID.
It contains additional task info like all steps and notes/comments
HTTP Request
GET https://app.jetbuilt.com/api/tasks/<ID>
URL Parameters
Parameter | Description |
---|---|
ID | The ID of the task to retrieve |
Time Sessions
Get all time sessions
curl "https://app.jetbuilt.com/api/time_sessions" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/time_sessions" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
[
{
"id": 18,
"start_at": "2020-10-14T10:45:00.000-07:00",
"end_at": "2020-10-14T16:53:00.000-07:00",
"time_zone": "Pacific Time (US & Canada)",
"duration": 22080,
"work_duration": 18480,
"break_duration": 3600,
"num_breaks": 1,
"description": "Installed the new speakers",
"created_at": "2020-10-14T16:45:31.078-07:00",
"updated_at": "2020-12-08T10:13:02.084-08:00",
"running": false,
"user": {
"id": 123,
"full_name": "Joe Bob"
},
"project": {
"id": 435,
"full_name": "P - 255 Conference Room"
},
"category": null,
"time_entries": [
{
"id": 53,
"start_at": "2020-10-14T10:45:00.000-07:00",
"end_at": "2020-10-14T12:51:00.000-07:00",
"time_zone": "Pacific Time (US & Canada)",
"duration": 7560,
"created_at": "2020-10-14T16:45:31.140-07:00",
"updated_at": "2020-12-08T10:13:01.978-08:00",
"type": "work",
"running": false,
"labor_type": {
"id": 43234,
"name": "Installation"
}
},
{
"id": 54,
"start_at": "2020-10-14T12:51:00.000-07:00",
"end_at": "2020-10-14T13:51:00.000-07:00",
"time_zone": "Pacific Time (US & Canada)",
"duration": 3600,
"created_at": "2020-10-14T16:51:45.236-07:00",
"updated_at": "2020-12-08T10:13:02.029-08:00",
"type": "break",
"running": false,
"labor_type": {
"id": 43234,
"name": "Installation"
}
},
{
"id": 55,
"start_at": "2020-10-14T13:51:00.000-07:00",
"end_at": "2020-10-14T16:53:00.000-07:00",
"time_zone": "Pacific Time (US & Canada)",
"duration": 10920,
"created_at": "2020-10-14T16:51:47.948-07:00",
"updated_at": "2020-12-08T10:13:02.046-08:00",
"type": "work",
"running": false,
"labor_type": {
"id": 43234,
"name": "Installation "
}
}
]
},
{
...
}
]
Status: 200 OK
This endpoint retrieves all of your time sessions.
Durations are in total seconds.
Running is whether the clock is currenty running or not.
HTTP Request
GET https://app.jetbuilt.com/api/time_sessions
URL Parameters
Parameter | Description |
---|---|
page | A specific page of results. |
Get a time session
curl "https://app.jetbuilt.com/api/time_sessions/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/time_sessions/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response: Similar to Get all time sessions
Status: 200 OK
This endpoint retrieves a time session by ID.
Durations are in total seconds.
Running is whether the clock is currenty running or not.
HTTP Request
GET https://app.jetbuilt.com/api/time_sessions/<ID>
URL Parameters
Parameter | Description |
---|---|
ID | The ID of the time session to retrieve |
Stock Items
Get all stock items
curl "https://app.jetbuilt.com/api/stock/items" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/stock/items" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
[
{
"id": 12978,
"stock_location_id": 382,
"quantity": 5,
"serial_num": null,
"status": "received",
"created_at": "2021-08-30T22:10:13.965-07:00",
"updated_at": "2021-08-31T16:27:14.917-07:00",
"company_product_id": 1599279,
"name": "Tannoy DI 5 DC BLACK"
},
{
...
}
]
Status: 200 OK
This endpoint retrieves all of your stock items.
HTTP Request
GET https://app.jetbuilt.com/api/stock/items
URL Parameters
Parameter | Description |
---|---|
page | A specific page of results. |
Get a stock item
curl "https://app.jetbuilt.com/api/stock/items/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/stock/items/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response: Similar to Get all stock items
Status: 200 OK
This endpoint retrieves a stock item by ID.
HTTP Request
GET https://app.jetbuilt.com/api/stock/items/<ID>
URL Parameters
Parameter | Description |
---|---|
ID | The ID of the stock item to retrieve |
Create a stock item
curl "https://app.jetbuilt.com/api/stock/items" \
-X POST \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json' \
-d '{
"company_product_id": "1599279",
"stock_location_id": "382",
"quantity": "5"
}'
curl "https://app.jetbuilt.com/api/stock/items" \
-X POST \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-F "item[company_product_id]=1599279" \
-F "item[stock_location_id]=382" \
-F "item[quantity]=5"
Response: Similar to Get all stock items
Status: 201 Created
This endpoint creates a new stock item.
HTTP Request
POST https://app.jetbuilt.com/api/stock/items
Data Parameters
Parameter | Description |
---|---|
company_product_id | The company product to create the item for required integer |
stock_location_id | The stock location to create the item in required integer |
quantity | The quantity in stock required integer |
serial_num | The serial number string |
The company_product_id
can be found using the Products endpoint.
If a company product doesn't yet exist, create one first, and then create the stock item.
The stock_location_id
can be found using the Stock Locations endpoint.
A serial_num
is optional, and only applies to items with a quanity of 1. When a serial number is passed in, the quantity
param will be ignored and set to 1. Otherwise it's considered a bulk item and the quantity can be freely set.
Update a stock item
curl "https://app.jetbuilt.com/api/stock/items/<ID>" \
-X PATCH \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json' \
-d '{
"quantity": "10"
}'
curl "https://app.jetbuilt.com/api/stock/items/<ID>" \
-X PATCH \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-F "<ID>[quantity]=10"
Response: Similar to Get all stock items
Status: 200 OK
This endpoint updates a stock item by ID.
HTTP Request
PUT https://app.jetbuilt.com/api/stock/items/<ID>
Data Parameters
Parameter | Description |
---|---|
quantity | The quantity in stock required integer |
For now only the quantity of the item can be updated.
The quantity must be greater than 0. If there are no items left in stock, then delete the item.
Delete a stock item
curl "https://app.jetbuilt.com/api/stock/items/<ID>" \
-X DELETE \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/stock/items/<ID>" \
-X DELETE \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
{
"message": "The item has been deleted"
}
Status: 200 OK
This endpoint deletes a stock item by ID.
HTTP Request
DELETE https://app.jetbuilt.com/api/stock/items/<ID>
Stock Locations
Get all stock locations
curl "https://app.jetbuilt.com/api/stock/locations" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/stock/locations" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
[
{
"id": 5,
"name": "Warehouse",
"position": "Rack 2",
"description": "The rack in the back",
"office_id": 3,
"project_id": null,
"kind": "company",
"created_at": "2021-08-31T13:01:17.641-07:00",
"updated_at": "2021-08-31T13:01:17.641-07:00"
},
{
...
}
]
Status: 200 OK
This endpoint retrieves all of your stock locations.
HTTP Request
GET https://app.jetbuilt.com/api/stock/locations
URL Parameters
Parameter | Description |
---|---|
page | A specific page of results. |
Get a stock location
curl "https://app.jetbuilt.com/api/stock/locations/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/stock/locations/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response: Similar to Get all stock locations
Status: 200 OK
This endpoint retrieves a stock location by ID.
HTTP Request
GET https://app.jetbuilt.com/api/stock/locations/<ID>
URL Parameters
Parameter | Description |
---|---|
ID | The ID of the stock location to retrieve |
Create a stock location
curl "https://app.jetbuilt.com/api/stock/locations" \
-X POST \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json' \
-d '{
"kind": "company",
"office_id": "3",
"name": "East Warehouse",
"position": "Shelf 20",
"description": ""
}'
curl "https://app.jetbuilt.com/api/stock/locations" \
-X POST \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-F "location[kind]=company" \
-F "location[office_id]=3" \
-F "location[name]=East Warehouse" \
-F "location[position]=Shelf 20" \
-F "location[description]="
Response: Similar to Get all stock locations
Status: 201 Created
This endpoint creates a new stock location.
HTTP Request
POST https://app.jetbuilt.com/api/stock/locations
Data Parameters
Parameter | Description |
---|---|
kind | The kind of location, either company or project required string |
office_id | The company office location only required if location is 'company' kind; integer |
project_id | The project this stock location is at only required if location is a 'project' kind; integer |
name | The name of the location. e.g. Warehouse required string |
position | Detail of the location. e.g. Rack 1 only required if is a 'project' kind; string |
description | Optional description e.g. The new rack string |
The stock location's kind
must be either company
or project
.
If the kind
is a company
stock location, then it's a normal company location. An office_id
and position
are required.
The office_id
can be found using the Company endpoint, under the company's locations
. (We now refer company locations as offices within the app.)
If it's a project
stock location, then a project_id
must also be supplied. (The project takes the place of the position
, so position
is not required.) The project_id
can be found using the Projects endpoint.
Update a stock location
curl "https://app.jetbuilt.com/api/stock/locations/<ID>" \
-X PATCH \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json' \
-d '{
"name": "Warehouse",
"position": "Shelf 20A",
"description": ""
}'
curl "https://app.jetbuilt.com/api/stock/locations/<ID>" \
-X PATCH \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-F "<ID>[name]=Warehouse" \
-F "<ID>[position]=Shelf 20A" \
-F "<ID>[description]="
Response: Similar to Get all stock locations
Status: 200 OK
This endpoint updates a stock location by ID.
HTTP Request
PUT https://app.jetbuilt.com/api/stock/locations/<ID>
Data Parameters
Parameter | Description |
---|---|
name | The name of the location. e.g. Warehouse required string |
position | Detail of the location. e.g. Rack 1 required string |
description | Optional description e.g. The new rack |
Delete a stock location
curl "https://app.jetbuilt.com/api/stock/locations/<ID>" \
-X DELETE \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/stock/locations/<ID>" \
-X DELETE \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
{
"message": "The location has been deleted"
}
Status: 200 OK
This endpoint deletes a stock location by ID.
HTTP Request
DELETE https://app.jetbuilt.com/api/stock/locations/<ID>
Stock Products
Get all stock products
curl "https://app.jetbuilt.com/api/stock/products" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/stock/products" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
[
{
"name": "Tannoy DI 5 DC BLACK",
"company_product_id": 22328,
"quantity_available": 5
},
{
...
}
]
Status: 200 OK
This endpoint retrieves all of your stock products.
HTTP Request
GET https://app.jetbuilt.com/api/stock/products
URL Parameters
Parameter | Description |
---|---|
page | A specific page of results. |
Get a stock product
curl "https://app.jetbuilt.com/api/stock/products/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/stock/products/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
{
"name": "Tannoy DI 5 DC BLACK",
"company_product_id": 22328,
"quantity_available": 8,
"offices": [
{
"id": 1977,
"quantity_avaliable": 3
},
{
"id": 3,
"quantity_avaliable": 5
}
]
}
Status: 200 OK
This endpoint retrieves a stock product by ID.
The quantity_avaliable
is the sum of all the individual stock items for that product.
The available quantities are also broken out by office location.
HTTP Request
GET https://app.jetbuilt.com/api/stock/products/<COMPANY_PRODUCT_ID>
URL Parameters
Parameter | Description |
---|---|
COMPANY_PRODUCT_ID | The ID of the company product to retrieve stock levels for |
The company_product_id
can be found using the Stock Products endpoint, or the Company Products endpoint.
The quantity_avaliable
is the sum of all the individual stock items for that product.
Get a stock product items
curl "https://app.jetbuilt.com/api/stock/products/<COMPANY_PRODUCT_ID>/items" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/stock/products/<COMPANY_PRODUCT_ID>/items" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response: Similar to Get all stock items
Status: 200 OK
This endpoint retrieves all stock items for a given stock product.
HTTP Request
GET https://app.jetbuilt.com/api/stock/products/<COMPANY_PRODUCT_ID>/items
URL Parameters
Parameter | Description |
---|---|
COMPANY_PRODUCT_ID | The ID of the stock product to retrieve |
The company_product_id
can be found using the Stock Products endpoint, or the Company Products endpoint.
Users
Get all active users
curl "https://app.jetbuilt.com/api/users" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/users" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
[
{
"id": 123,
"full_name": "Josh Smith",
"email": "joshsmith@example.com",
"created_at": "2020-06-30T15:32:08.813-07:00",
"updated_at": "2020-07-27T19:17:41.928-07:00"
},
{
...
}
]
Status: 200 OK
This endpoint retrieves all active users for you company.
HTTP Request
GET https://app.jetbuilt.com/api/users
URL Parameters
Parameter | Description |
---|
Get a user
curl "https://app.jetbuilt.com/api/users/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/users/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response: Similar to Get all users
Status: 200 OK
This endpoint retrieves an active user by ID.
HTTP Request
GET https://app.jetbuilt.com/api/users/<ID>
URL Parameters
Parameter | Description |
---|---|
ID | The ID of the user to retrieve |
Vendors
Get all vendors
curl "https://app.jetbuilt.com/api/product_databases/<DB_ID>/vendors" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/product_databases/<DB_ID>/vendors" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
[
{
"id": 123,
"name": "ACME",
"rank": "low",
"preferred": false,
"purchasing_source": "AV R Us",
"price_list_date": "Jan 2022",
"discount_percentage": "0",
"dealer_pricing_status": "approved",
"manufacturer": true,
"distributor": false
},
{
"id":456,
"name": "Distributor",
...
"distributor": true,
"distributed_manufacturers": [
{
"id": 123,
"name": "ACME"
}
]
}
]
Status: 200 OK
This endpoint retrieves all of your connected vendors.
A list of manufacturers (Manufacturers that you have pricing connections with through the distributor) is present in the response when the vendor is a distributor.
HTTP Request
GET https://app.jetbuilt.com/api/product_databases/<DB_ID>/vendors
The product database ID is prefixed since it's possible for products and pricing to vary across office locations. (Most companies share a single product database across all office locations.)
This DB_ID
can be retrieved from the Company endpoint.
URL Parameters
Parameter | Description |
---|---|
DB_ID | The ID of the the product database (see the Company endpoint) |
page | A specific page of results. |
Get a vendor
curl "https://app.jetbuilt.com/api/product_databases/<DB_ID>/vendors/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/product_databases/<DB_ID>/vendors/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response: Similar to Get all vendors
Status: 200 OK
This endpoint retrieves a vendor by ID.
HTTP Request
GET https://app.jetbuilt.com/api/product_databases/<DB_ID>/vendors/<ID>
Note: The dealer pricing integration status must be approved
in order to
retrieve additional information for the vendor.
URL Parameters
Parameter | Description |
---|---|
DB_ID | The ID of the the product database (see the Company endpoint) |
ID | The ID of the vendor to retrieve |
Vendor Products
Get all products for a vendor
curl "https://app.jetbuilt.com/api/product_databases/<DB_ID>/vendors/<VENDOR_ID>/products" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/product_databases/<DB_ID>/vendors/<VENDOR_ID>/products" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response:
[
{
"id": 392342,
"model": "ACME-123",
"part_number": null,
"short_description": "A great speaker",
"long_description": "A really great speaker",
"msrp": "175.0",
"mapp": "0.0",
"discontinued": false,
"created_at": "2015-03-30T14:58:46.398-07:00",
"updated_at": "2022-04-27T16:01:44.767-07:00",
"dealer_price": {
"cost": "120.0",
"sheet_date": "2017-05-17",
"updated_at": "2017-05-17T08:02:43.485-07:00"
},
"manufacturer": "ACME",
"currency": "USD",
"purchasing_source": {
"id": 441,
"dealer_number": "abc"
},
"favorite": false
},
{
...
}
]
Status: 200 OK
This endpoint retrieves all products with your connected pricing for a vendor.
HTTP Request
GET https://app.jetbuilt.com/api/product_databases/<DB_ID>/vendors/<VENDOR_ID>/products
The product database ID is prefixed since it's possible for products and pricing to vary across office locations. (Most companies share a single product database across all office locations.)
This DB_ID
can be retrieved from the Company endpoint.
Note: The dealer pricing integration status must be approved
in order to
retrieve product information for the vendor.
Note for vendors that are both a manufacturer and a distributor:
Manufactured products will be returned by default.
Specifying distributed_products=true
will return their distributed products.
Filtering by a manufacturer_id
will also return their distributed products.
URL Parameters
Parameter | Description |
---|---|
DB_ID | The ID of the the product database (see the Company endpoint) |
VENDOR_ID | The ID of the vendor (An approved Manufacturer or Distributor) |
page | A specific page of results. |
manufacturer_id | Filter distributed products by manufacturer |
distributed_products | Whether or not to return the distributed_products. Defaults to false . boolean (true/false) |
Get a product for a vendor
curl "https://app.jetbuilt.com/api/product_databases/<DB_ID>/vendors/<VENDOR_ID>/products/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1" \
-H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/product_databases/<DB_ID>/vendors/<VENDOR_ID>/products/<ID>" \
-H "Authorization: Token token=YOURAPIKEY" \
-H "Accept: application/vnd.jetbuilt.v1"
Response: Similar to Get all products for a vendor
Status: 200 OK
This endpoint retrieves a product for a vendor by ID.
HTTP Request
GET https://app.jetbuilt.com/api/product_databases/<DB_ID>/vendors/<VENDOR_ID>/products/<ID>
URL Parameters
Parameter | Description |
---|---|
DB_ID | The ID of the the product database (see the Company endpoint) |
VENDOR_ID | The ID of the vendor (An approved Manufacturer or Distributor) |
ID | The ID of the product to retrieve |
Errors
The Jetbuilt API uses the following error codes:
Error Code | Meaning |
---|---|
400 | Bad Request -- Your request is invalid. |
401 | Unauthorized -- Your API key is wrong. |
403 | Forbidden -- You don't have access to the resource. |
404 | Not Found -- The specified item could not be found. |
406 | Not Acceptable -- You requested an unsupported format. |
422 | Unprocessable Entity -- Unable to save because some required data was missing. |
429 | Too Many Requests -- You're making too many requests. Please slow down. |
500 | Internal Server Error -- We had a problem with our server. Try again later. |
503 | Service Unavailable -- We're temporarily offline for maintenance. Please try again later. |
Rate Limiting
You can perform up to 50 requests per 10 second period from the same IP address when accessing the API. If you exceed this limit, you'll get a 429 Too Many Requests response for subsequent requests.