iTrade Steel Supplier API (1.0.0)

Download OpenAPI specification:

RESTful API for supplier integration with the iTrade Steel platform. Supports product catalogue browsing, pricing updates, order document uploads, manufacturing status reporting, and shipping detail management. All request and response bodies use JSON, except document uploads which use multipart form data. Endpoints are scoped to the authenticated supplier — you can only access your own resources. Successful responses return the affected resource; errors return a consistent structure with a machine-readable code, human-readable message, and optional field-level details.

Authentication

Authenticate all requests by including your API key in the X-Api-Key HTTP header. API keys are provisioned by iTrade Steel on request — contact your account manager to obtain one. The key identifies your organisation and scopes all requests to your resources. No other authentication mechanism (OAuth, sessions, tokens) is required. Treat your API key as a secret: store it in a secrets manager, never expose it in client-side code or version control, and contact iTrade Steel immediately if it is compromised.

Products

Browse and search the product catalogue available to your organisation. Each product represents a unique combination of material, profile, grade, coating class, BMT, and width. Use these endpoints to retrieve product IDs required for pricing updates and other product-scoped operations. Results can be filtered by profile, material, grade, or coating class.

List products

Returns a paginated list of products available to your organisation. Each product includes its specifications (material, profile, grade, coating class, BMT, width) and a unique ID for use in other API calls. Filter by profile, material, grade, or coating class via query parameters. Pagination metadata is included in the response.

Authorizations:
ApiKeyAuth
query Parameters
profile
string
Example: profile=coil

Filter by profile name.

material
string
Example: material=colorbond

Filter by material name.

grade
string
Example: grade=G550

Filter by steel grade (e.g. G550, G300).

coating_class
string
Example: coating_class=AZ150

Filter by coating classification (e.g. AZ150, Z275).

page
integer >= 1
Default: 1

Page number for pagination. Defaults to 1.

per_page
integer [ 1 .. 100 ]
Default: 25

Number of results per page. Defaults to 25, maximum 100.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Pricing

Update mill direct pricing for your products. Each pricing record is scoped to a product and can include price-affecting attributes (paint technology, paint type, single/double-sided) and an optional colour identifier. An optional expiry date (valid_to) can be set to automatically invalidate pricing after a given time. Each update fully replaces previous pricing for the specified product and attribute combination.

Update mill direct pricing for a product

Updates pricing for a specific product. Requires unit_base_price; optionally accepts valid_to (expiry), colour_id, and price_affecting_attributes (paint technology, paint type, single/double-sided). Each update fully replaces previous pricing for the given product and attribute combination. Expired pricing (past valid_to) is excluded from new customer quotes.

Authorizations:
ApiKeyAuth
path Parameters
product_id
required
integer >= 1

Unique product identifier. Obtain via the list products endpoint.

Request Body schema: application/json
required
unit_base_price
required
number

Base unit price in the supplier's agreed currency, before attribute adjustments.

valid_to
string or null <date-time>

Pricing expiry timestamp. After this time, pricing is excluded from new quotes. Null or omitted means no expiry.

colour_id
integer or null

Colour identifier to scope pricing to a specific colour. Null for colour-agnostic pricing.

object (PriceAffectingAttributes)

Responses

Request samples

Content type
application/json
{
  • "unit_base_price": 980.5,
  • "valid_to": "2026-01-31T23:59:59Z",
  • "price_affecting_attributes": {
    }
}

Response samples

Content type
application/json
{
  • "id": 310,
  • "product_id": 42,
  • "unit_base_price": 980.5,
  • "valid_to": "2026-01-31T23:59:59Z",
  • "colour_id": 12,
  • "price_affecting_attributes": {
    },
  • "updated_at": "2026-01-04T01:23:45Z"
}

Documents

Upload shipping and trade documents against orders. Supported document types include bill of lading, weight list, packing list, commercial invoice, mill test certificate, fumigation certificate, certificate of origin, packing declaration, container list, insurance policy, beneficiary certificate, and a general "other" category. Files are uploaded via multipart form data and assigned a trackable status upon creation.

Upload an order document

Uploads a document and attaches it to the specified order. Send the file as binary data via multipart form encoding with a required document_type field. Optionally include original_filename to preserve the source filename. The document is assigned a status of uploaded on creation. The response returns the full document record including its ID and timestamps.

Authorizations:
ApiKeyAuth
path Parameters
order_id
required
integer >= 1

Unique order identifier, as shown in the iTrade Steel platform.

Request Body schema: multipart/form-data
required
document_type
required
string (DocumentType)
Enum: "bill_of_lading" "weight_list" "packing_list" "commercial_invoice" "mill_test_certificate" "fumigation_certificate" "certificate_of_origin" "packing_declaration" "container_list" "insurance_policy" "beneficiary_certificate" "other"
file
required
string <binary>

Binary file content (typically PDF), sent as multipart form data.

original_filename
string or null

Original filename from the supplier's system, for reference alongside the system-generated name.

Responses

Request samples

Content type
multipart/form-data
{
  "document_type": "bill_of_lading",
  "file": "binary-data",
  "original_filename": "BL_1234.pdf"
}

Response samples

Content type
application/json
{
  • "id": 981,
  • "order_id": 5521,
  • "document_type": "bill_of_lading",
  • "filename": "BL_1234.pdf",
  • "original_filename": "BL_1234.pdf",
  • "status": "uploaded",
  • "created_at": "2026-01-04T01:23:45Z",
  • "updated_at": "2026-01-04T01:24:10Z"
}

Manufacturing

Report production progress by updating planned and actual timestamps for each manufacturing step on an order. Steps follow a defined sequence: Raw Material, Processing, Packaging, and Loading Ship. Setting actual_at marks a step as complete. Timestamps can be updated as often as needed to reflect schedule changes.

Update manufacturing status for an order

Updates planned_at and/or actual_at timestamps for a manufacturing step on an order. Identify the step via step_title (Raw Material, Processing, Packaging, or Loading Ship). Setting actual_at marks the step as complete. Both timestamps can be updated repeatedly to reflect schedule changes or corrections.

Authorizations:
ApiKeyAuth
path Parameters
order_id
required
integer >= 1

Unique order identifier, as shown in the iTrade Steel platform.

Request Body schema: application/json
required
step_title
required
string (ManufacturingStepTitle)
Enum: "Raw Material" "Processing" "Packaging" "Loading Ship"
planned_at
string or null <date-time>

Planned completion timestamp for this step. Updatable as schedules change.

actual_at
string or null <date-time>

Actual completion timestamp. Setting this marks the step as complete.

Responses

Request samples

Content type
application/json
{
  • "step_title": "Processing",
  • "planned_at": "2026-01-12T00:00:00Z",
  • "actual_at": "2026-01-10T00:00:00Z"
}

Response samples

Content type
application/json
{
  • "id": 145,
  • "order_id": 5521,
  • "title": "Processing",
  • "planned_at": "2026-01-12T00:00:00Z",
  • "actual_at": "2026-01-10T00:00:00Z"
}

Shipping

Set and update logistics details for orders: vessel name, bill of lading/booking number, and estimated time of departure (ETD). All fields are optional per request, allowing incremental updates as information becomes available. Each call replaces only the fields provided; unspecified fields remain unchanged.

Set shipping information for an order

Updates shipping details for an order: vessel_name, bill_of_lading_number, and etd. All fields are optional per request — only provided fields are updated; omitted fields remain unchanged. The response returns the complete current shipping record for the order.

Authorizations:
ApiKeyAuth
path Parameters
order_id
required
integer >= 1

Unique order identifier, as shown in the iTrade Steel platform.

Request Body schema: application/json
required
vessel_name
string or null

Name of the vessel carrying the shipment.

bill_of_lading_number
string or null

Bill of lading or booking reference number from the shipping line.

etd
string or null <date-time>

Estimated time of departure from the port of loading.

Responses

Request samples

Content type
application/json
{
  • "vessel_name": "Pacific Trader",
  • "bill_of_lading_number": "BL-2026-00123",
  • "etd": "2026-02-03T00:00:00Z"
}

Response samples

Content type
application/json
{
  • "order_id": 5521,
  • "vessel_name": "Pacific Trader",
  • "bill_of_lading_number": "BL-2026-00123",
  • "etd": "2026-02-03T00:00:00Z",
  • "updated_at": "2026-02-01T01:23:45Z"
}