Introduction
Importations Thibault communication system for part details and orders.
This document aims to provide all the information you need to work with our API.
Authenticating requests
To authenticate requests, include an `Authorization` header with the value `"Bearer :{YOUR_AUTH_KEY}"`.
All authenticated endpoints are marked with a `requires authentication` badge in the documentation below.
You can retrieve your token by calling Importations Thibault Customer Service and ask to submit a Web API token.
Endpoints
Part Info
requires authentication
Get products informations. If everything is okay, you'll get a 200 OK response. Otherwise, the request will answer with a 400 error and a response listing the issues.
Example request:
curl --request GET \
--get "https://api.importationsthibault.com/api/v1/part_info?sku=123456%2C654321&language=en&subs=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.importationsthibault.com/api/v1/part_info"
);
const params = {
"sku": "123456,654321",
"language": "en",
"subs": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200, scribe.pat_info.withSubs):
{
"items": [
{
"sku": "123456",
"description": "TEST PRODUCT 1 LABEL",
"weight": {
"value": 1.19,
"unit": {
"code": "LB",
"name": "LIVRE"
}
},
"upc": "7410258",
"status": {
"discontinued": false,
"special_order": false,
"seasonal": false,
"back_order": true,
"requirement": false,
"satisfy": false,
"ltl_only": false,
"air": false,
"oversized": false
},
"substitute": [
{
"sku": "123456A",
"description": "TEST SUBTITUTES 1",
"weight": {
"value": 1.146,
"unit": {
"code": "LB",
"name": "LIVRE"
}
},
"upc": "7410258A",
"status": {
"discontinued": true,
"special_order": false,
"seasonal": false,
"back_order": false,
"requirement": false,
"satisfy": false,
"ltl_only": false,
"air": true,
"oversized": false
}
}
]
},
{
"sku": "654321",
"description": "TEST PRODUCT 2 LABEL",
"weight": {
"value": 595.35,
"unit": {
"code": "LB",
"name": "LIVRE"
}
},
"upc": null,
"status": {
"discontinued": false,
"special_order": false,
"seasonal": false,
"back_order": true,
"requirement": false,
"satisfy": false,
"ltl_only": true,
"air": false,
"oversized": true
}
}
]
}
Example response (200, scribe.pat_info.withoutSubs):
{
"items": [
{
"sku": "123456",
"description": "TEST PRODUCT 1 LABEL",
"weight": {
"value": 1.19,
"unit": {
"code": "LB",
"name": "LIVRE"
}
},
"upc": "7410258",
"status": {
"discontinued": false,
"special_order": false,
"seasonal": false,
"back_order": true,
"requirement": false,
"satisfy": false,
"ltl_only": false,
"air": false,
"oversized": false
}
},
{
"sku": "654321",
"description": "TEST PRODUCT 2 LABEL",
"weight": {
"value": 595.35,
"unit": {
"code": "LB",
"name": "LIVRE"
}
},
"upc": null,
"status": {
"discontinued": false,
"special_order": false,
"seasonal": false,
"back_order": true,
"requirement": false,
"satisfy": false,
"ltl_only": true,
"air": false,
"oversized": true
}
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network and your API Key is correctly configured.
Response
Response Fields
items
object []
Response list from the request.
sku
string
Importations Thibault Product number.
description
string
Importations Thibault product description label.
weight
object
Weight of the product.
value
number
Current weight base unit.
unit
object
Unit code and name.
code
string
Weight unit code.
name
string
Weight unit name.
upc
string
scribe.part_info.response.upc
availability
object
Next available date of the product.
eta_date
integer
Epoch date (EST) ETA before the next purchase order received.
confirmed_date
integer
Epoch date (EST) Confirmed date of reception.
status
object
Various product status rulings.
discontinued
boolean
The product is discontinued.
special_order
boolean
The product can only be ordered as a special order. Call Customer service for more detail and to order.
seasonal
boolean
It is a seasonally produced product. No back order and purchase will be done by Importations Thibault Lted.
back_order
boolean
Back-ordering the product is an option.
requirement
boolean
Product require training or special action in order to be purchased. Call Customer service for more detail.
satisfy
boolean
You are meeting the special action or training requirements.
ltl_only
boolean
The product is oversize and shipment might charge extra.
air
boolean
The product is oversize and shipment might charge extra.
oversize
boolean
The product is oversize and shipment might charge extra.
Stock
requires authentication
Check the inventory status of products. If everything is okay, you'll get a 200 OK response. Otherwise, the request will answer with a 400 error and a response listing the issues.
Example request:
curl --request GET \
--get "https://api.importationsthibault.com/api/v1/stock?sku=123456%2C654321&language=en" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.importationsthibault.com/api/v1/stock"
);
const params = {
"sku": "123456,654321",
"language": "en",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200):
{
"items": [
{
"sku": "123456",
"status": {
"discontinued": false,
"special_order": false,
"seasonal": false,
"back_order": true,
"requirement": false,
"satisfy": false,
"ltl_only": false,
"air": true,
"oversized": false
},
"quantity": {
"value": 1,
"unit": {
"code": "UN",
"name": "UNITE"
}
}
},
{
"sku": "654321",
"status": {
"discontinued": false,
"special_order": false,
"seasonal": false,
"back_order": true,
"requirement": false,
"satisfy": false,
"ltl_only": true,
"air": false,
"oversized": true
},
"quantity": {
"value": 8,
"unit": {
"code": "UN",
"name": "UNITE"
}
}
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network and your API Key is correctly configured.
Response
Response Fields
items
object []
Response list from the request.
sku
string
Importations Thibault Product number.
availability
object
Next available date of the product.
eta_date
integer
Epoch date (EST) ETA before the next purchase order received.
confirmed_date
integer
Epoch date (EST) Confirmed date of reception.
status
object
Various product status rulings.
discontinued
boolean
The product is discontinued.
special_order
boolean
The product can only be ordered as a special order. Call Customer service for more detail and to order.
seasonal
boolean
It is a seasonally produced product. No back order and purchase will be done by Importations Thibault Lted.
back_order
boolean
Back-ordering the product is an option.
requirement
boolean
Product require training or special action in order to be purchased. Call Customer service for more detail.
satisfy
boolean
You are meeting the special action or training requirements.
ltl_only
boolean
The product is oversize and shipment might charge extra.
air
boolean
The product is oversize and shipment might charge extra.
oversize
boolean
The product is oversize and shipment might charge extra.
quantity
object
Quantity available for purchase.
value
number
Quantity purchasable.
unit
object
Unit code and name.
code
string
Quantity unit code. Will always be per unit.
name
string
Quantity unit name. Will always be per unit.
Pricing
requires authentication
Obtain the pricing for the product. If everything is okay, you'll get a 200 OK response. Otherwise, the request will answer with a 400 error and a response listing the issues.
Example request:
curl --request GET \
--get "https://api.importationsthibault.com/api/v1/pricing?sku=123456%2C654321&language=en" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.importationsthibault.com/api/v1/pricing"
);
const params = {
"sku": "123456,654321",
"language": "en",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200):
{
"items": [
{
"sku": "123456",
"retail": 74.99,
"discount": {
"dealer": 30,
"additional": 0
},
"net": 52.49
},
{
"sku": "654321",
"retail": 2649.99,
"discount": {
"dealer": 0,
"additional": 0
},
"net": 2649.99
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network and your API Key is correctly configured.
Response
Response Fields
items
object []
Response list from the request.
sku
string
Importations Thibault Product number.
retail
number
Retail price for the product.
discount
object
Discounts related to product and account.
dealer
number
Dealer discount percent.
additional
number
Additional discount percent.
net
number
Net pricing for the product
Tracking
requires authentication
Get current status of an order or invoice including shipment details. If everything is okay, you'll get a 200 OK response. The request requires at least one parameter. Otherwise, the request will answer with a 400 error and a response listing the issues.
Example request:
curl --request GET \
--get "https://api.importationsthibault.com/api/v1/tracking?order_date=4&order=16&invoice=et" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.importationsthibault.com/api/v1/tracking"
);
const params = {
"order_date": "4",
"order": "16",
"invoice": "et",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200):
{
"items": [
{
"document": {
"order": 236871,
"invoice": "1960055",
"order_date": 1684123200,
"invoice_date": 1684123200
},
"recipient": {
"name": "TEST ACCOUNT",
"line1": "165 RUE SAUVE",
"city": "SHERBROOKE",
"zip": "J1L 1L6",
"state": "QC"
}
},
{
"document": {
"order": 236849,
"invoice": "1967422",
"order_date": 1685937600,
"invoice_date": 1685937600
},
"recipient": {
"name": "TEST ACCOUNT",
"line1": "165 RUE SAUVE",
"city": "SHERBROOKE",
"zip": "J1L 1L6",
"state": "QC"
},
"shipment": {
"pin": "W7472897501",
"carrier": "Dicom",
"date": 1655524800
}
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network and your API Key is correctly configured.
Response
Response Fields
item
object []
Response list from the request.
document
object
Details about Order and Invoice.
order
integer
Order / Confirmation number.
invoice
string
Invoice number.
order_date
integer
Order / Confirmation Epoch date (EST).
invoice_date
integer
Invoice Epoch date (EST).
recipient
object
List of shipment detail for each tracking.
name
string
Company/Contact name.
line1
string
Recipient address line 1.
line2
string
Recipient address line 2.
city
string
Recipient city name.
zip
string
Recipient zip / postal code.
phone
string
Recipient Contact phone number.
state
string
Recipient address state code (ISO 3166-2:CA).
shipment
object []
List of shipment detail for each tracking.
pin
string
Carrier tracking number.
carrier
string
Carrier name.
label_date
integer
The date of label in Epoch (EST).
eta_date
integer
The ETA date in Epoch (EST).
Dealer Information
requires authentication
Get your saved information with ids required for orders. If everything is okay, you'll get a 200 OK response. Otherwise, the request will answer with a 400 error and a response listing the issues.
Example request:
curl --request GET \
--get "https://api.importationsthibault.com/api/v1/dealer_info" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.importationsthibault.com/api/v1/dealer_info"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200, scribe.dealer_info.dealer_same):
{
"customer": "AAA3",
"dropship": false,
"credit_card": [
{
"digit": "1111",
"active": true,
"master": false,
"expiration": "1609477200"
},
{
"digit": "0027",
"active": true,
"master": false,
"expiration": "1761969600"
}
]
}
Example response (200, scribe.dealer_info.dealer_dropship):
{
"customer": "AAA1",
"dropship": true,
"credit_card": [
{
"digit": "1111",
"active": true,
"master": false,
"expiration": "1609477200"
},
{
"digit": "0027",
"active": true,
"master": false,
"expiration": "1761969600"
}
]
}
Example response (200, scribe.dealer_info.dealer_credit):
{
"customer": "AAA2",
"dropship": false,
"ship_to": [
{
"code": "1",
"company": "TEST ITL",
"line1": "165 RUE SAUVE",
"city": "SHERBROOKE",
"zip": "J1L 1L6",
"state": "QC"
},
{
"code": "2",
"company": "TEST 2",
"line1": "4050 RUE BRODEUR",
"city": "SHERBROOKE",
"zip": "J1L 1V9",
"state": "QC"
}
]
}
Example response (200, scribe.dealer_info.dealer_delivery):
{
"customer": "AAA2",
"dropship": false,
"ship_to": [
{
"code": "1",
"company": "TEST ITL",
"line1": "165 RUE SAUVE",
"city": "SHERBROOKE",
"zip": "J1L 1L6",
"state": "QC"
},
{
"code": "2",
"company": "TEST 2",
"line1": "4050 RUE BRODEUR",
"city": "SHERBROOKE",
"zip": "J1L 1V9",
"state": "QC"
}
],
"credit_card": [
{
"digit": "1111",
"active": true,
"master": false,
"expiration": "1609477200"
},
{
"digit": "0027",
"active": true,
"master": false,
"expiration": "1761969600"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network and your API Key is correctly configured.
Response
Response Fields
customer
string
scribe.dealer_info.response.customer.
dropship
boolean
You're authorized to do drop-ship directly from Importations Thibault.
ship_to
object []
List of shipping address registered and authorized by Importations Thibault for direct shipment.
code
string
Recipient ID for delivery address.
company
string
scribe.ship_to.company
line1
string
Recipient address line 1.
line2
string
scribe.ship_to.line2 string
city
string
Recipient city name.
zip
string
Recipient zip / postal code.
state
string
Recipient address state code (ISO 3166-2:CA).
phone
string
Recipient Contact phone number.
credit_card
object []
List of shipping address registered and authorized by Importations Thibault for direct shipment.
digit
string
Last 4 digits of the card.
active
boolean
Credit Card is registered as an active card for purchase.
master
boolean
Credit Card is registered as default card for purchase.
expiration
integer
Credit Card expiration date in Epoch (Always set on the first of the month).
Order
requires authentication
Import order. If everything is okay, you'll get a 200 OK response with order details. Otherwise, the request will answer with a 400 error and a response listing the issues.
Example request:
curl --request POST \
"https://api.importationsthibault.com/api/v1/order" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"test_mode\": \"voluptatem\",
\"item\": {
\"0\": [],
\"sku\": \"qui\",
\"qty\": 18813633.257
},
\"no_backorder\": true,
\"selected_card\": \"inventore\",
\"customer_refs\": \"nesciunt\",
\"signature\": false,
\"note\": \"voluptas\",
\"ship_to\": {
\"code\": \"quia\",
\"company\": \"officia\",
\"contact\": \"modi\",
\"line1\": \"pariatur\",
\"line2\": \"qui\",
\"city\": \"nesciunt\",
\"zip\": \"ratione\",
\"phone\": \"quia\",
\"state\": \"aliquid\"
},
\"dropship\": false
}"
const url = new URL(
"https://api.importationsthibault.com/api/v1/order"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"test_mode": "voluptatem",
"item": {
"0": [],
"sku": "qui",
"qty": 18813633.257
},
"no_backorder": true,
"selected_card": "inventore",
"customer_refs": "nesciunt",
"signature": false,
"note": "voluptas",
"ship_to": {
"code": "quia",
"company": "officia",
"contact": "modi",
"line1": "pariatur",
"line2": "qui",
"city": "nesciunt",
"zip": "ratione",
"phone": "quia",
"state": "aliquid"
},
"dropship": false
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network and your API Key is correctly configured.
Response
Response Fields
items
object []
List of found product ordered.
sku
string
Importations Thibault Product number.
ordered
number
Imported quantity wanted for the product.
shipped
number
Quantity ready for shipment of the product.
back_order
number
Quantity ready to be put in back order.
order_number
number
Order & Confirmation number (if import is not in evaluation).
environmental_tax
number
Environmental tax amount (added to subtotal).
recycling_fee
object []
Recycling fees for certain products with the recycling service name (added to subtotal).
value
number
Recycling fee amount.
name
string
Recycling fee name.
volume_drawback
number
Penalty amount for volume threshold drawback reached (added to subtotal).
subtotal_discount
number
Special discount amount on the subtotal (removed on subtotal).
subtotal
number
Subtotal amount before tax & carrier rates.
fees
object
Fees values before taxes.
carrier
number
Carrier fee amount.
insurance
number
Insurance fee amount.
cod
number
Collect On Delivery & overcharge fee.
taxes
object []
Taxes amounts and Names.
value
number
Tax amount.
name
string
Tax name.
total
number
scribe.order.response.taxes.total
Errors
Errors
{
"errors": [
{
"id":"E013",
"data":"123456A"
},
{
"id":"E013",
"data":"123456"
}
]
}