Tire Supplier Ordering Integration Guide

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.ca

Request 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
string

Client ID

required

client_secret
string

Client Secret

required

Response Example

{   "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJkZWFsZXJfbG9jYXRpb24iOjEyNjc0LCJleHAiOjE1NjA1MjY1ODl9.uEjbXiu1EoZ5E9IyXDz4JEVySY4C_C5mYXCC6SsGTwOCXyU3tHJU79FJkh5X2uMUlJttIQwoyC1HqljDl7_zIj-6XxvT-ismKDmdW7z7ZqrsGi6N3VACx9Rt1o3aJvBdDkSw4QfqhE8DZlLsYDH-TIGEOUP6E462Rfxn8bE149g",   "expire": 900 }

Response Parameters

token
string

Authorisation token

expire
int

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
string

Global supplier ID. Can be used to map supplier across different systems

supplier_connection_id
string

Connection ID. Used in stock method

supplier_connection_name
string

Connection nice name. Can be used to show to a customer as a connection label

ordering
object

Set of settings specific to ordering flow. In case supplier don’t support ordering will be null

enabled
boolean

Settings that shows if ordering enabled for specific connection

max_items_per_order
int

Max items that can be ordered in one order

branch_required
boolean

Specifies if branch should be passed in order or no

multiple_branch
boolean

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
int

Dealer location

required

token
string

Token that were used in search method

required

Response Example

{   "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJkZWFsZXJfbG9jYXRpb24iOjEyNjc0LCJleHAiOjE1NjA1MjY1ODl9.uEjbXiu1EoZ5E9IyXDz4JEVySY4C_C5mYXCC6SsGTwOCXyU3tHJU79FJkh5X2uMUlJttIQwoyC1HqljDl7_zIj-6XxvT-ismKDmdW7z7ZqrsGi6N3VACx9Rt1o3aJvBdDkSw4QfqhE8DZlLsYDH-TIGEOUP6E462Rfxn8bE149g",   "expire": 900 }

Response Parameters

token
string

Authorisation token

expire
int

expire time

Supplier Fields

GET /api/supplier/{supplier_connection_id}/fields

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
string
path

Supplier connection ID

required

 

tire_ids
string
query

Tire IDs
comma separated

required

 

quantities
int
query

Tire quantities
comma separated

optional

We recommend to make additional call to this method when user changing quantity as some fields can be changed according to it

branches
string
query

Tire branches
comma separated

required
optional if  branch_required = false

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 }, "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": [] } ]

Every item of response describes a fields which required for order or can be additionally sent with the order.

NOTE: Also for “select” type of fields, options list was extended, disabled property introduced.
When disabled is true, this option is not allowed to be passed, but we recommend to show it to the user, but as an unavailable option, as soon as for another quantity amount, it could be available. If disabled is false, option is available as earlier.

Response Example

[ { "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 } ] } ]

 

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
list

Array of tires with quantities

tires.tire_id

string

Tire ID

required

tires.quantity
int

Tire Quantity
required

tires.branch
string

Supplier branch
not needed if branch_required = false
if multiple_branch = false you should send the same branch for each tire

supplier_fields
object

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
string

Tire ID

branch
string

Branch ID

cost
int

Tire Cost

fet
int

FET

quantity
int

Selected tire quantity

quantity_available
int

Available quantity for this tire

stock_available
array

List of branches with quantities where this tire currently available

branch
string

Branch ID. Deprecated

id
string

Branch ID

quantity
int

Quantity available in this branch

name
string

Branch name

ship_data
string

Some shipping rules provided by the supplier

address
object

Warehouse address

contact
object

Warehouse contact details

delivery_date_time
string

Estimated delivery date & time provided by the supplier

cutoff
string

Cutoff

distance
int

Distance from warehouse (provided by the supplier)

distance_unit
string

Distance unit

cost
int

Tire cost

quantity
int

Selected quantity

quantity_available
int

Available quantity

total_cost
int

Total cost of tires in order

total_fet
int

Total FET

shipping_cost
int

Total shipping cost

vendor_total_order
int

Total order counted by vendor. Can be null in case vendor don’t provide this information

total_order
int

Total order counted by TireConnect

delivery_date_time
object

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
query

Tire ID

quantity
query

Tire quantity

branch
string

Supplier branch
not needed if branch_required = false
if multiple_branch = false you should send the same branch for each tire

supplier_fields
object

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
int

Order ID in TireConnect system

invoice
string

Invoice ID returned by supplier

shipping_cost
int

Shipping cost of order

vendor_total_order
int

Total order counted by vendor. Can be null in case vendor don’t provide this information

total_order
int

Total order counted by TireConnect

tires
array

Array of tires

id
string

Tire ID

part_number
string

Tire part number

quantity_demand
int

Requested tire quantity

quantity_ordered
int

Ordered tire quantity

price
int

Requested tire price

price_ordered
int

Ordered tire price

status
string

Tire status in order

message
string

Message returned by supplier for each tire

status
string

Order status

message
string

Message returned by supplier for whole order

delivery_date_time
object

Estimated Delivery Date & Time provided by the supplier

Order Status

POST /api/supplier/order/status

This method used for receiving order status from the supplier.

Request Example

curl --location 'https://devdemo.tireconnect.ca/api/supplier/order/status' \ --header 'token: {{token}}' \ --header 'Content-Type: application/json' \ --data '{ "location_id": {{location_id}}, "id": 34850 }'

Request parameters

token
query

Authorisation token

required

location_id
int

Location ID which was used for placing an order

id
int

Order ID

Response Example

{ "data": { "items": [ { "order_id": 34850, "status": "Successful", "vendor_status": "Approved" } ] } }

Response parameters

order_id
int

Order ID