Tire Supplier Ordering Integration Guide
This document provides a comprehensive guide to integrating with the TireConnect Supplier Ordering API. It is intended for developers and technical teams who are implementing automated tire ordering capabilities between a dealer system and connected tire suppliers.
The guide walks you step-by-step through the ordering integration process, beginning with initial configuration and authentication, then covering how to search available tires, query supplier details and stock, and finally create and manage orders programmatically.
This guide is designed to help you establish a seamless and reliable procurement workflow with supported tire suppliers.
Search
You can make any kind of search, for example using search By Size method
Please make sure you are using sandbox environment base URL:
https://devdemo.tireconnect.caRequest Example
curl --location 'https://devdemo.tireconnect.ca/api/tire/search/v1/by/size' \
--header 'token: {{token}}' \
--header 'Content-Type: application/json' \
--data '{
"location_id": {{location_id}},
"size": {
"front": {
"size_part_1": "205",
"size_part_2": "55",
"size_part_3": "16"
}
}
}'Authentication
POST api/partner/auth | POST api/account/auth
To be able to search you should authorize and get token. Use Partner or Account token.
Request Example
curl --location 'https://devdemo.tireconnect.ca/api/partner/auth' \
--header 'Content-Type: application/json' \
--data '{
"client_id": "{{client_id}}",
"client_secret": "{{client_secret}}"
}'Request parameters
client_id | Client ID required |
|---|---|
client_secret | Client Secret required |
Response Example
{
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJkZWFsZXJfbG9jYXRpb24iOjEyNjc0LCJleHAiOjE1NjA1MjY1ODl9.uEjbXiu1EoZ5E9IyXDz4JEVySY4C_C5mYXCC6SsGTwOCXyU3tHJU79FJkh5X2uMUlJttIQwoyC1HqljDl7_zIj-6XxvT-ismKDmdW7z7ZqrsGi6N3VACx9Rt1o3aJvBdDkSw4QfqhE8DZlLsYDH-TIGEOUP6E462Rfxn8bE149g",
"expire": 900
}Response Parameters
token | Authorisation token |
|---|---|
expire | expire time |
Suppliers Connected to Location
He highly recommend to use this method to get common information about specific supplier in ordering array. Please see description below response example.
Request example
curl --location 'https://devdemo.tireconnect.ca/api/location/v1/tire/supplier-connection/list' \
--header 'accept: application/json' \
--header 'Content-Type: application/json' \
--header 'token: {{token}}' \
--data '{
"location_id": {{location_id}}
}'Response example
{
"success": true,
"data": {
"items": [
{
"supplier_id": "AF",
"supplier_connection_id": "usautoforce",
"supplier_connection_name": "U.S. AutoForce",
"is_internal": false,
"ordering": {
"enabled": true,
"max_items_per_order": 25,
"branch_required": true,
"multiple_branch": false
},
"availability": null
},
{
"supplier_id": "TH",
"supplier_connection_id": "tirehub",
"supplier_connection_name": "TireHub",
"is_internal": false,
"ordering": {
"enabled": true,
"max_items_per_order": 10,
"branch_required": true,
"multiple_branch": false
},
"availability": null
},
{
"supplier_id": "LI-TEST",
"supplier_connection_id": "discountgroup",
"supplier_connection_name": "Discount Group",
"is_internal": false,
"ordering": null,
"availability": null
},
{
"supplier_id": "FMT",
"supplier_connection_id": "fairmonttire",
"supplier_connection_name": "Fairmont Tire",
"is_internal": false,
"ordering": {
"enabled": true,
"max_items_per_order": 25,
"branch_required": true,
"multiple_branch": true
},
"availability": null
},
{
"supplier_id": "TR",
"supplier_connection_id": "trwholesale",
"supplier_connection_name": "TR Wholesale",
"is_internal": false,
"ordering": {
"enabled": true,
"max_items_per_order": 12,
"branch_required": false,
"multiple_branch": false
},
"availability": null
},
]
},
"meta": {
"total": 5
}
}Useful response parameters
supplier_id | Global supplier ID. Can be used to map supplier across different systems |
|---|---|
supplier_connection_id | Connection ID. Used in stock method |
supplier_connection_name | Connection nice name. Can be used to show to a customer as a connection label |
ordering | Set of settings specific to ordering flow. In case supplier don’t support ordering will be null |
enabled | Settings that shows if ordering enabled for specific connection |
max_items_per_order | Max items that can be ordered in one order |
branch_required | Specifies if branch should be passed in order or no |
multiple_branch | Specifies if tires from different branches can be passed in one order |
Detailed Tire Stock
POST api/tire/search/v1/by/catalog-id
You should use this method to retrieve detailed tire stock information by supplier.
Please note that you must set the "group_results": false parameter in order to receive stock information for each supplier separately.
Additionally, if you need more detailed stock information, such as inventory broken down by warehouse, please include the following parameter in your request:"include": ["supplier_info"]
If you need to retrieve stock information for a specific supplier, use the supplier_connection_ids array to limit the results to the required supplier(s).
Request Example
curl --location 'https://devdemo.tireconnect.ca/api/tire/search/v1/by/catalog-id' \
--header 'accept: application/json' \
--header 'Content-Type: application/json' \
--header 'token: {{token}}' \
--data '{
"min_quantity": 1,
"location_id": {{location_id}},
"catalog_ids": [
2336,
1576,
464
],
"group_results": false,
"include": [
"supplier_info"
]
}'
Ordering
Authentication
GET /api/location/auth/token
To be able to order you should authorize and get token.
Use Location Authorize method (/api/location/auth/token) which requires location, and token that was used for search methods.
Request Example
curl --location 'https://devdemo.tireconnect.ca/api/location/auth/token' \
--header 'accept: application/json' \
--header 'Content-Type: application/json' \
--header 'token: {{token}}' \
--data '{
"location_id": {{location_id}}
}'Request parameters
location_id | Dealer location required |
|---|---|
token | Token that were used in search method required |
Response Example
{
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJkZWFsZXJfbG9jYXRpb24iOjEyNjc0LCJleHAiOjE1NjA1MjY1ODl9.uEjbXiu1EoZ5E9IyXDz4JEVySY4C_C5mYXCC6SsGTwOCXyU3tHJU79FJkh5X2uMUlJttIQwoyC1HqljDl7_zIj-6XxvT-ismKDmdW7z7ZqrsGi6N3VACx9Rt1o3aJvBdDkSw4QfqhE8DZlLsYDH-TIGEOUP6E462Rfxn8bE149g",
"expire": 900
}Response Parameters
token | Authorisation token |
|---|---|
expire | expire time |
Supplier Fields
GET /api/supplier/{supplier_connection_id}/fields
Each item in the response represents a field that is either required for the order or can be optionally included in the order request.
Request example
curl --location 'https://devdemo.tireconnect.ca/api/supplier/{{supplier_connection_id}}/fields?tires=S2VsbHl8fDM1NjYwNjEwN3x8dGlyZWh1Ynx8MTM1Njd8fEI%3D%2CU3RhcmZpcmV8fDE2MjE5NDAwMXx8dGlyZWh1Ynx8MTM1Njd8fEI%3D&quantities=1%2C1&branches=103%2C103' \
--header 'token: {{token}}'Request parameters
supplier_connection_id | Supplier connection ID |
|
|---|---|---|
tire_ids | Tire IDs |
|
quantities | Tire quantities | We recommend to make additional call to this method when user changing quantity as some fields can be changed according to it |
branches | Tire branches required | Some suppliers may vary accepted fields and their values based on the selected branch. |
Response example
[
{
"tag": "input",
"label": "PO number",
"description": "Purchase Order Number",
"attributes": {
"name": "po_number",
"required": true,
"type": "text",
"maxlength": 20,
"minlength": 3,
"pattern": "[a-zA-Z0-9\\s\\-_]{3,15}",
"min": null,
"max": null,
"step": null
},
"default": null,
"hidden": false,
"required_for_pricing": false
},
{
"tag": "textarea",
"label": "Delivery Instructions",
"description": "Shipping and Delivery Instructions",
"attributes": {
"name": "deliveryInstructions",
"required": false,
"maxlength": 255
},
"default": null,
"hidden": false,
"required_for_pricing": false
},
{
"tag": "select",
"label": "Delivery method",
"description": "Delivery Method",
"attributes": {
"name": "deliveryMethod",
"required": true
},
"default": "UPS",
"hidden": false,
"required_for_pricing": true,
"options": [
{
"value": "2DA",
"text": "UPS 2nd Day Air",
"disabled": true
},
{
"value": "CPU",
"text": "Customer Pick-Up",
"disabled": false
}
]
}
]Response parameters
tag | The HTML element type (input, textarea, or select). Determines which attributes are available. |
|---|---|
label | The user-friendly name of the field displayed in the UI |
description | Tooltip or helper text explaining the purpose of the field |
attributes | Configuration object for field constraints (depends on the tag type). |
↳name | The unique key/identifier used when submitting the value to the API |
↳required | Indicates if the field must be filled out before submission |
↳type | Data input type (e.g., text, number) for input tags. |
↳maxlength | The maximum number of characters allowed in the field |
↳minlength | The minimum number of characters required in the field |
↳pattern | Regex string for client-side value validation |
↳min | The minimum valid value allowed (applicable for numeric). |
↳max | The maximum valid value allowed (applicable for numeric) |
↳step | The legal number intervals allowed for the input (applicable for numeric types) |
default | The initial or pre-selected value for the field |
hidden | Determines if the field should be hidden from the UI |
required_for_pricing | If true, changing this value can trigger a price recalculation |
options | A list of selectable items (specifically for select tags) |
↳value | The actual data value sent to the server |
↳text | The descriptive label shown to the user in the dropdown |
↳disabled | If |
Pre-Ordering Info
POST /api/supplier/order/preOrderingInfo
This method will show you actual tire availability and depending on requested qty/delivery method/requested date/ect
Request example
curl --location 'https://devdemo.tireconnect.ca/api/supplier/order/preOrderingInfo' \
--header 'Content-Type: application/json' \
--header 'token: {{token}}' \
--data '{
"tires":[
{
"tire_id":"TGF1ZmVubnx8MTAxNjc1OXx8ZmFpcm1vbnR0aXJlfHwxMjY3NHx8Qg==",
"quantity":1,
"branch": "3" //please read parameters description
},
{
"tire_id":"SGFua29va3x8MTAyNjk5M3x8ZmFpcm1vbnR0aXJlfHwxMjY3NHx8Qg==",
"quantity":2,
"branch": "8" //please read parameters description
}
],
"supplier_fields":{
"po_number":"TEST PO",
"delivery_type":"2",
"delivery_instructions":"Some instructions"
}
}'Request parameters
token string | Authorisation token required |
|---|---|
tires | Array of tires with quantities |
tires.tire_id string | Tire ID required |
tires.quantity | Tire Quantity |
tires.branch | Supplier branch |
supplier_fields | Object with supplier filelds |
Response example
{
"tires": [
{
"cost": 90.39,
"tire_id": "TmV4ZW58fDE1MTQ4TlhLfHxhdGRudGR8fDEyNjcxfHxC",
"branch": null,
"fet": 0,
"fet_source": "vendor",
"quantity": 2,
"quantity_available": 6,
"stock_available": [
{
"branch": "local",
"id": "local",
"branch_type": "primary",
"quantity": 6,
"name": "Local - Same-day delivery (if ordered before cut off time)",
"ship_data": null,
"address": null,
"contact": null,
"delivery_date_time": {
"date": "2024-04-04",
"time": null,
"timezone": null,
"notes": null
},
"cutoff": {
"date": "2024-04-03",
"time": "22:30",
"timezone": "-05:00"
},
"distance": null,
"distance_unit": null
}
],
"delivery_date_time": {
"date": "2024-04-04",
"time": null,
"timezone": null
}
},
{
"cost": 58.39,
"tire_id": "SXJvbm1hbnx8OTg0Njl8fGF0ZG50ZHx8MTI2NzF8fEI=",
"branch": null,
"fet": 0,
"fet_source": "vendor",
"quantity": 2,
"quantity_available": 69,
"stock_available": [
{
"branch": "local",
"id": "local",
"branch_type": "primary",
"quantity": 69,
"name": "Local - Same-day delivery (if ordered before cut off time)",
"ship_data": null,
"address": null,
"contact": null,
"delivery_date_time": {
"date": "2024-04-04",
"time": null,
"timezone": null,
"notes": null
},
"cutoff": {
"date": "2024-04-03",
"time": "22:30",
"timezone": "-05:00"
},
"distance": null,
"distance_unit": null
}
],
"delivery_date_time": {
"date": "2024-04-04",
"time": null,
"timezone": null
}
}
],
"cost": 90.39,
"quantity": 2,
"quantity_available": 6,
"stock_available": [
{
"branch": "local",
"id": "local",
"branch_type": "primary",
"quantity": 6,
"name": "Local - Same-day delivery (if ordered before cut off time)",
"ship_data": null,
"address": null,
"contact": null,
"delivery_date_time": {
"date": "2024-04-04",
"time": null,
"timezone": null,
"notes": null
},
"cutoff": {
"date": "2024-04-03",
"time": "22:30",
"timezone": "-05:00"
},
"distance": null,
"distance_unit": null
}
],
"total_cost": 297.56,
"total_fet": 0,
"shipping_cost": null,
"total_order": 297.56,
"delivery_date_time": {
"date": "2024-04-04",
"time": null,
"timezone": null
}
}Response parameters
tire_id | Tire ID |
|---|---|
branch | Branch ID |
cost | Tire Cost |
fet | FET |
quantity | Selected tire quantity |
quantity_available | Available quantity for this tire |
stock_available | List of branches with quantities where this tire currently available |
branch | Branch ID. Deprecated |
id | Branch ID |
quantity | Quantity available in this branch |
name | Branch name |
ship_data | Some shipping rules provided by the supplier |
address | Warehouse address |
contact | Warehouse contact details |
delivery_date_time | Estimated delivery date & time provided by the supplier |
cutoff | Cutoff |
distance | Distance from warehouse (provided by the supplier) |
distance_unit | Distance unit |
cost | Tire cost |
quantity | Selected quantity |
quantity_available | Available quantity |
total_cost | Total cost of tires in order |
total_fet | Total FET |
shipping_cost | Total shipping cost |
vendor_total_order | Total order counted by vendor. Can be null in case vendor don’t provide this information |
total_order | Total order counted by TireConnect |
delivery_date_time | Estimated delivery date & time provided by the supplier |
Order Create
POST /api/supplier/order/create
Request example
curl --location --request POST 'https://devdemo.tireconnect.ca/api/supplier/order/create?token="SUBSTITUTE_YOUR_TOKEN_HERE"' \
--header 'Content-Type: application/json' \
--header 'token: {{token}}' \
--data-raw '{
"tires":[
{
"tire_id":"TGF1ZmVubnx8MTAxNjc1OXx8ZmFpcm1vbnR0aXJlfHwxMjY3NHx8Qg==",
"quantity":1,
"branch": "3"
},
{
"tire_id":"SGFua29va3x8MTAyNjk5M3x8ZmFpcm1vbnR0aXJlfHwxMjY3NHx8Qg==",
"quantity":2,
"branch": "8"
}
],
"supplier_fields":{
"po_number":"TEST PO",
"delivery_type":"2",
"delivery_instructions":"Some instructions"
}
}'Request parameters
tire_id | Tire ID |
|---|---|
quantity | Tire quantity |
branch | Supplier branch |
supplier_fields | Object with supplier filelds |
Response example
{
"order_id":16172,
"invoice":"LG30537",
"shipping_cost":135.4,
"tires":[
{
"id":"QnJpZGdlc3RvbmV8fDAxMjAwMXx8dHJ3aG9sZXNhbGV8fDEyNjc0fHxC",
"part_number":"012001",
"quantity_demand":4,
"quantity_ordered":4,
"price":117.75,
"price_ordered":117.75,
"status":"Successful",
"message":"",
"delivery_date_time":{
"date":"2023-06-25",
"time":"16:45:00",
"timezone":"+02:00"
}
},
{
"id":"QnJpZGdlc3RvbmV8fDAwNjA3MHx8dHJ3aG9sZXNhbGV8fDEyNjc0fHxC",
"part_number":"006070",
"quantity_demand":4,
"quantity_ordered":4,
"price":128.75,
"price_ordered":128.75,
"status":"Successful",
"message":"",
"delivery_date_time":{
"date":"2023-06-25",
"time":"16:45:00",
"timezone":"+02:00"
}
}
],
"status":"Successful",
"message":"The order successfully submitted.",
"delivery_date_time":{
"date":"2023-06-25",
"time":"16:45:00",
"timezone":"+02:00"
}
}Response parameters
order_id | Order ID in TireConnect system |
|---|---|
invoice | Invoice ID returned by supplier |
shipping_cost |