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

Swagger documentation

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

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
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, "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
string

The HTML element type (input, textarea, or select). Determines which attributes are available.
Types: Input, Select, TextArea

label
string

The user-friendly name of the field displayed in the UI

description
string

Tooltip or helper text explaining the purpose of the field

attributes
object

Configuration object for field constraints (depends on the tag type).

name
string

The unique key/identifier used when submitting the value to the API

required
boolean

Indicates if the field must be filled out before submission

type
text

Data input type (e.g., text, number) for input tags.
Available for Input: text, number, date

maxlength
int | null

The maximum number of characters allowed in the field

minlength
int | null

The minimum number of characters required in the field

pattern
string | null

Regex string for client-side value validation

min
string | null

The minimum valid value allowed (applicable for numeric).

max
string | null

The maximum valid value allowed (applicable for numeric)

step
string | null

The legal number intervals allowed for the input (applicable for numeric types)

default
string

The initial or pre-selected value for the field

hidden
boolean

Determines if the field should be hidden from the UI

required_for_pricing
boolean

If true, changing this value can trigger a price recalculation

options
array

A list of selectable items (specifically for select tags)

value
string

The actual data value sent to the server

text
string

The descriptive label shown to the user in the dropdown

disabled
boolean

If true, the option is visible but cannot be selected
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.

 

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