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.
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.
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.
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.
| 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. |
{- "data": [
- {
- "id": 42,
- "profile": "coil",
- "material": "colorbond",
- "grade": "G550",
- "coating_class": "AZ150",
- "bmt": 0.42,
- "width": 1219,
- "standard": "AS1397",
- "specification": null,
- "hs_code": "7210.70"
}
], - "meta": {
- "current_page": 1,
- "per_page": 25,
- "total_pages": 4,
- "total_count": 87
}
}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.
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.
| product_id required | integer >= 1 Unique product identifier. Obtain via the list products endpoint. |
| 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) |
{- "unit_base_price": 980.5,
- "valid_to": "2026-01-31T23:59:59Z",
- "price_affecting_attributes": {
- "paint_technology": "sadp",
- "paint_type": "standard",
- "paint_sided": "single_sided"
}
}{- "id": 310,
- "product_id": 42,
- "unit_base_price": 980.5,
- "valid_to": "2026-01-31T23:59:59Z",
- "colour_id": 12,
- "price_affecting_attributes": {
- "paint_technology": "sadp",
- "paint_type": "standard",
- "paint_sided": "single_sided"
}, - "updated_at": "2026-01-04T01:23:45Z"
}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.
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.
| order_id required | integer >= 1 Unique order identifier, as shown in the iTrade Steel platform. |
| 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. |
{ "document_type": "bill_of_lading", "file": "binary-data", "original_filename": "BL_1234.pdf" }
{- "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"
}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.
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.
| order_id required | integer >= 1 Unique order identifier, as shown in the iTrade Steel platform. |
| 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. |
{- "step_title": "Processing",
- "planned_at": "2026-01-12T00:00:00Z",
- "actual_at": "2026-01-10T00:00:00Z"
}{- "id": 145,
- "order_id": 5521,
- "title": "Processing",
- "planned_at": "2026-01-12T00:00:00Z",
- "actual_at": "2026-01-10T00:00:00Z"
}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.
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.
| order_id required | integer >= 1 Unique order identifier, as shown in the iTrade Steel platform. |
| 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. |
{- "vessel_name": "Pacific Trader",
- "bill_of_lading_number": "BL-2026-00123",
- "etd": "2026-02-03T00:00:00Z"
}{- "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"
}