Globe Trade API Walkthrough
BASE=https://api-sandbox.globeparts.com.au/trade/v1
The key goes in the X-Globe-Api-Key header. No login call, no token
exchange — the key is the whole authentication.
https://docs.globeparts.com.au/spec.yaml, and Postman generates a
collection with every endpoint. Set your key once at the collection level
(Authorization → API Key, key X-Globe-Api-Key, add to Header) and every
call on this page is ready to send.- A1 Health
- A2 IVDS → the windscreen
- A3 Price & stock
- A3b Delivery time
- A4 Place the order
- A5 Order status
- Coverage
- B1 The miss
- B2 Resubmit
- B3 Cross-references
Journey A
A real IVDS report, straight to a placed order
The vehicle arrives as an InfoAgent IVDS report — the shape a caller gets from a
plate or VIN lookup, not something typed by hand. Forward it verbatim under
vehicle.infoagentReport, outer data wrapper and all; the API
reads data.result and ignores the rest — the
identification block included. Plate and VIN play no part in glass
matching.
Step A1
Health first — what "fresh" means
curl -sS \ -H "X-Globe-Api-Key: $KEY" \ "$BASE/health"
{
"status": "healthy",
"stockFreshAsOf": "2026-08-27T09:10:15.825736+00:00",
"readBackend": "liverelay",
"catalogueBuiltAt": "2026-08-27T08:10:37.936811+00:00",
"mode": "sandbox"
}catalogueBuiltAt— when the fitment/catalogue snapshot behind/fitment/glasswas last built. This is whatstockAsOfon a fitment response is measured against.stockFreshAsOf— how current the live stock read is, independent of the catalogue build.mode—sandboxconfirms you're not looking at production; sandbox orders are never fulfilled, billed, or visible to a branch.
Step A2
The IVDS report → one windscreen
The vehicle fields below — make, model, year, sub-model, body type, doors, and the
three equipment flags that matter to glass — are a real 2022 Isuzu D-MAX report's
values from a genuine InfoAgent lookup. Hand us the report exactly as you received it,
identification block and all (the plate and VIN shown here are the spec's
placeholder values — yours will carry the real ones): the API reads
data.result.vehicle.details and .specifications and ignores
the rest. Asking for glassPositions: ["F"] up front — the front
windscreen — is one call, not a search-then-narrow pair. The response below is
a genuine live capture:
curl -sS \
-H "X-Globe-Api-Key: $KEY" \
-H 'Content-Type: application/json' \
-d '{
"vehicle": {
"source": "infoagent",
"infoagentReport": {
"data": {
"type": "IVDS_AU_ADAS_REPORT",
"result": {
"responseCode": "SUCCESS",
"vehicle": {
"identification": {
"plate": "1TAG123",
"state": "WA",
"vin": "JTEBH3FJ50K000000"
},
"details": {
"year": 2022,
"make": "ISUZU",
"model": "D-MAX",
"subModel": "LS-M",
"series": null,
"bodyType": "Utility",
"doors": 4
},
"specifications": {
"informationDisplayHeadUp": "NOT_AVAILABLE",
"rainSensorAutoWipers": "STANDARD",
"camerasADASOnly": "NOT_AVAILABLE"
}
}
}
}
}
},
"glassPositions": [
"F"
]
}' \
"$BASE/fitment/glass"{
"vehicleResolved": {
"make": "ISUZU",
"model": "D-MAX",
"year": 2022,
"series": null,
"badge": "LS-M",
"bodyType": "UTILITY",
"features": {
"rainSensor": true
},
"matchedOn": [
"make",
"model",
"year",
"bodyType"
],
"unresolved": [
"badge"
],
"absentFromRequest": [
"series"
],
"catalogueOptions": {
"badge": []
}
},
"coverage": "full",
"branch": {
"code": "PER",
"name": "Perth HQ"
},
"currency": "AUD",
"gstRate": 0.1,
"stockAsOf": "2026-08-27T08:10:37Z",
"relaxation": {
"relaxedOn": [
"badge"
]
},
"matches": [
{
"sku": "ISDM21-LFW-MROY",
"description": "ISUZU D-MAX 07/20 - 04/24 WINDSCREEN (MB+RS+CAM+MLG)",
"glassPosition": "F",
"confidence": "catalogue",
"glassAttributes": [
"mirror_button",
"rain_sensor",
"adas",
"top_moulding"
],
"quantityRequested": 1,
"status": "in_stock",
"quantityAvailable": 101,
"canFulfil": true,
"imageUrl": "https://api-sandbox.globeparts.com.au/media/parts/ISDM21%20LFWMROY.jpg",
"crossReferences": {
"eurocode": null,
"nagsau": [],
"oemNumbers": [
"8975553992",
"1K0A63901"
],
"alternatePartNumbers": [],
"supersededBy": null
}
}
]
}One call, one part.
The match carries live stock (status: in_stock,
quantityAvailable: 101) and a photo you can show the customer
(imageUrl, served from our own origin), plus
crossReferences.oemNumbers inline — no second call for any of those.
The one thing deliberately not here is price: fitment stays fast enough to sit
behind a search box, and pricing is live against your account, so it rides the
next call — send the SKU to POST /availability (step A3) and you get your
price and a stock re-read in one hit.
Step A3
Live price and stock
curl -sS \
-H "X-Globe-Api-Key: $KEY" \
-H 'Content-Type: application/json' \
-d '{
"lines": [
{
"sku": "ISDM21-LFW-MROY",
"quantity": 1
}
]
}' \
"$BASE/availability"{
"branch": {
"code": "PER",
"name": "Perth HQ"
},
"currency": "AUD",
"gstRate": 0.1,
"pricedAt": "2026-08-27T09:10:23Z",
"stockAsOf": "2026-08-27T09:10:23Z",
"lines": [
{
"sku": "ISDM21-LFW-MROY",
"quantityRequested": 1,
"status": "in_stock",
"quantityAvailable": 101,
"canFulfil": true,
"unitExGst": "222.00",
"unitIncGst": "244.20",
"lineExGst": "222.00",
"lineIncGst": "244.20"
}
],
"delivery": {
"metro": null,
"reason": "no_postcode_supplied"
}
}pricedAt /
stockAsOf are the moment of this call, not a cached number; re-run it
before quoting. 101 on hand at Perth HQ comfortably covers a one-off windscreen order.
delivery.metro is null because this call carried no
deliverTo postcode.Step A3b
The account's real delivery time
This account's own configured delivery runs — separate from any one order:
curl -sS \ -H "X-Globe-Api-Key: $KEY" \ "$BASE/delivery-schedule"
{
"branch": {
"code": "MALAGA",
"name": "Malaga"
},
"runs": [
{
"run": "morning",
"deliveryWindow": {
"start": "10:00",
"end": "11:00"
},
"orderBy": {
"time": "16:30",
"dayPrior": true
}
},
{
"run": "afternoon",
"deliveryWindow": {
"start": "13:30",
"end": "14:30"
},
"orderBy": {
"time": "12:00",
"dayPrior": false
}
}
]
}This is the delivery-time answer for this account. Every order
dispatches from our Perth (Welshpool) branch — the branch in this
response is your store, the delivery destination, and the runs are when our
truck reaches it. This account is the Malaga store, which takes two runs a day: a
morning window (10:00–11:00) with a day-prior cutoff — order by 16:30 the day
before — and a same-day afternoon window (13:30–14:30) cutting off at noon. Order
before a run's cutoff and it goes out on that run. This endpoint answers for your
account, not for one order — check it once, not per order.
Step A4
Place the order
Idempotency-Key is a required header — a fresh UUID per order attempt,
reused on any retry of that same attempt. Replaying a key that already succeeded
returns the original order and creates nothing; reusing a key with a different body is
rejected. This one is real and sandbox-only:
curl -sS \
-H "X-Globe-Api-Key: $KEY" \
-H 'Content-Type: application/json' \
-H "Idempotency-Key: 4f9092a7-57e9-448b-b729-fb5e2e435b82" \
-d '{
"partnerReference": "WALKTHROUGH-A-20260827",
"fulfilment": {
"method": "local_delivery",
"deliveryAddress": {
"line1": "12 Example Road",
"suburb": "Malaga",
"state": "WA",
"postcode": "6090"
},
"instructions": "Walkthrough capture — GOE-0736, sandbox only."
},
"lines": [
{
"sku": "ISDM21-LFW-MROY",
"quantity": 1
}
],
"vehicleContext": {
"make": "ISUZU",
"model": "D-MAX",
"year": 2022
}
}' \
"$BASE/orders"{
"orderId": "GP-B2AA0BB67130",
"partnerReference": "WALKTHROUGH-A-20260827",
"submissionKey": "4f9092a7-57e9-448b-b729-fb5e2e435b82",
"status": "received",
"placedAt": "2026-08-27T09:10:28.802151+00:00",
"lineCount": 1,
"totalExGst": {
"amount": "222.00",
"currency": "AUD"
},
"totalIncGst": {
"amount": "244.20",
"currency": "AUD"
},
"lines": [
{
"sku": "ISDM21-LFW-MROY",
"partnerLineReference": null,
"quantityOrdered": 1,
"unitPriceExGst": {
"amount": "222.00",
"currency": "AUD"
},
"lineTotalExGst": {
"amount": "222.00",
"currency": "AUD"
}
}
],
"fulfilment": {
"method": "local_delivery",
"deliveryAddress": {
"line1": "12 Example Road",
"line2": null,
"suburb": "Malaga",
"state": "WA",
"postcode": "6090",
"contactName": null,
"contactPhone": null
},
"instructions": "Walkthrough capture — GOE-0736, sandbox only."
},
"gstTotal": {
"amount": "22.20",
"currency": "AUD"
},
"updatedAt": "2026-08-27T09:10:28.802187+00:00"
}Placing an order commits you to it — there is no cancellation endpoint.
To change or cancel, email dev@globeparts.com.au; once the branch
processes it you'll see status: cancelled on a read. This call priced the
order fresh at submission — no expectedTotalExGst guard was sent, so any
total would have been accepted. The proof your order exists is the read-back: call
GET /orders/{orderId} and the orderId and
status it returns are the record.
Step A5
The order, read back
curl -sS \ -H "X-Globe-Api-Key: $KEY" \ "$BASE/orders/GP-B2AA0BB67130"
{
"orderId": "GP-B2AA0BB67130",
"partnerReference": "WALKTHROUGH-A-20260827",
"submissionKey": "4f9092a7-57e9-448b-b729-fb5e2e435b82",
"status": "received",
"placedAt": "2026-08-27T09:10:28.802151+00:00",
"lineCount": 1,
"totalExGst": {
"amount": "222.00",
"currency": "AUD"
},
"totalIncGst": {
"amount": "244.20",
"currency": "AUD"
},
"lines": [
{
"sku": "ISDM21-LFW-MROY",
"partnerLineReference": null,
"quantityOrdered": 1,
"unitPriceExGst": {
"amount": "222.00",
"currency": "AUD"
},
"lineTotalExGst": {
"amount": "222.00",
"currency": "AUD"
}
}
],
"fulfilment": {
"method": "local_delivery",
"deliveryAddress": {
"line1": "12 Example Road",
"line2": null,
"suburb": "Malaga",
"state": "WA",
"postcode": "6090",
"contactName": null,
"contactPhone": null
},
"instructions": "Walkthrough capture — GOE-0736, sandbox only."
},
"gstTotal": {
"amount": "22.20",
"currency": "AUD"
},
"updatedAt": "2026-08-27T09:10:28.802187+00:00"
}Coverage
Coverage grades our answer, not the car
coverage never scores how complete the vehicle's own glass is —
it scores how complete our answer is, for exactly what you asked.
full— every part Globe holds for the resolved vehicle, within the positions you requested, is sitting inmatches.none— the vehicle resolved fine; we simply have nothing to serve for what you asked (Journey B's step B1 is different again — there, the vehicle itself didn't resolve, socoverageis moot).
It promises nothing about panes the car has that we don't stock, and nothing about
positions you didn't request. Journey A asked for one position and got it — that says
nothing about the other six glass positions on this D-MAX. A full response
can still leave individual lines out_of_stock — coverage is about whether we
have an answer for the position, not whether that answer is sitting on the
shelf. Check each match's own status/canFulfil for that.
Journey B
The same vehicle, entered by hand — and the retry that gets it right
No IVDS report this time — just make, model and year, typed or looked up from
somewhere else. Leave out bodyType and the API refuses rather than guess;
the refusal itself tells you what to send next.
Step B1
The miss — no bodyType, and the 422 that teaches you the fix
curl -sS \
-H "X-Globe-Api-Key: $KEY" \
-H 'Content-Type: application/json' \
-d '{
"vehicle": {
"source": "attributes",
"attributes": {
"make": "ISUZU",
"model": "D-MAX",
"year": 2022
}
}
}' \
"$BASE/fitment/glass"{
"type": "https://api.globeparts.com.au/problems/vehicle-unresolved",
"title": "Vehicle could not be resolved",
"status": 422,
"detail": "the vehicle is missing bodyType — make, model, year and bodyType are never relaxed",
"instance": "32048c6e0dd4d8bf3b9dbf00377a7875",
"requestId": "32048c6e0dd4d8bf3b9dbf00377a7875",
"catalogueOptions": {
"bodyType": [
"UTE DUAL CAB",
"UTE SINGLE CAB",
"UTE SPACE CAB"
]
}
}Notice the attributes sit nested one level down, under vehicle.attributes
— not flat on vehicle itself. Get that nesting wrong and you get a
different refusal (a missing-vehicle 422) that doesn't carry catalogueOptions
at all.
Step B2
Resubmit with the real value — full coverage, seven matches
Any one of the three listed values resolves it. Also asking for fitting materials
this time — includeFittingMaterials: true pulls the mouldings and rubbers a
fitter needs alongside the glass itself, priced and stocked:
curl -sS \
-H "X-Globe-Api-Key: $KEY" \
-H 'Content-Type: application/json' \
-d '{
"vehicle": {
"source": "attributes",
"attributes": {
"make": "ISUZU",
"model": "D-MAX",
"year": 2022,
"bodyType": "UTE DUAL CAB"
}
},
"includeFittingMaterials": true
}' \
"$BASE/fitment/glass"{
"vehicleResolved": {
"make": "ISUZU",
"model": "D-MAX",
"year": 2022,
"series": null,
"badge": null,
"bodyType": "UTE DUAL CAB",
"features": {},
"matchedOn": [
"make",
"model",
"year",
"bodyType"
],
"unresolved": [],
"absentFromRequest": [
"series",
"badge"
],
"catalogueOptions": {}
},
"coverage": "full",
"branch": {
"code": "PER",
"name": "Perth HQ"
},
"currency": "AUD",
"gstRate": 0.1,
"stockAsOf": "2026-08-27T08:10:37Z",
"matches": [
{
"sku": "ISDM21-LFW-MROY",
"description": "ISUZU D-MAX 07/20 - 04/24 WINDSCREEN (MB+RS+CAM+MLG)",
"glassPosition": "F",
"confidence": "catalogue",
"glassAttributes": [
"mirror_button",
"rain_sensor",
"adas",
"top_moulding"
],
"quantityRequested": 1,
"status": "in_stock",
"quantityAvailable": 101,
"canFulfil": true,
"fittingMaterialSkus": [
"ISDM21-FWM",
"RS-P-OZ-ST10"
],
"imageUrl": "https://api-sandbox.globeparts.com.au/media/parts/ISDM21%20LFWMROY.jpg",
"crossReferences": {
"eurocode": null,
"nagsau": [],
"oemNumbers": [
"8975553992",
"1K0A63901"
],
"alternatePartNumbers": [],
"supersededBy": null
}
},
{
"sku": "ISDM21-FD-LH-GY",
"description": "LEFT FRONT DOOR GLASS W/FITT",
"glassPosition": "FDL",
"confidence": "catalogue",
"glassAttributes": [
"green_tint"
],
"quantityRequested": 1,
"status": "in_stock",
"quantityAvailable": 11,
"canFulfil": true,
"fittingMaterialSkus": [],
"imageUrl": "https://api-sandbox.globeparts.com.au/media/parts/ISDM21%20FDLH%20GY.jpg"
},
{
"sku": "ISDM21-FD-RH-GY",
"description": "RIGHT FRONT DOOR GLASS W/FITT",
"glassPosition": "FDR",
"confidence": "catalogue",
"glassAttributes": [
"green_tint"
],
"quantityRequested": 1,
"status": "in_stock",
"quantityAvailable": 2,
"canFulfil": true,
"fittingMaterialSkus": [],
"imageUrl": "https://api-sandbox.globeparts.com.au/media/parts/ISDM21%20FDRH%20GY.jpg"
},
{
"sku": "ISDM21-RD-LH-GY",
"description": "LEFT REAR DOOR GLASS W/FITT",
"glassPosition": "RDL",
"confidence": "catalogue",
"glassAttributes": [
"green_tint"
],
"quantityRequested": 1,
"status": "in_stock",
"quantityAvailable": 10,
"canFulfil": true,
"fittingMaterialSkus": [],
"imageUrl": "https://api-sandbox.globeparts.com.au/media/parts/ISDM21%20RDLH%20GY.jpg"
},
{
"sku": "ISDM21-RD-RH-GY",
"description": "RIGHT REAR DOOR GLASS W/FITT",
"glassPosition": "RDR",
"confidence": "catalogue",
"glassAttributes": [
"green_tint"
],
"quantityRequested": 1,
"status": "in_stock",
"quantityAvailable": 5,
"canFulfil": true,
"fittingMaterialSkus": [],
"imageUrl": "https://api-sandbox.globeparts.com.au/media/parts/ISDM21%20RDRH%20GY.jpg"
},
{
"sku": "ISDM21-RW-TGHX",
"description": "REAR HEATED WINDOW GREEN",
"glassPosition": "RW",
"confidence": "catalogue",
"glassAttributes": [
"tempered",
"heater"
],
"quantityRequested": 1,
"status": "out_of_stock",
"quantityAvailable": 0,
"canFulfil": false,
"fittingMaterialSkus": [],
"imageUrl": "https://api-sandbox.globeparts.com.au/media/parts/ISDM21%20RWTGHX.jpg"
},
{
"sku": "ISDM21-RW-TPHX",
"description": "REAR HEATED WINDOW PRIVACY GREY",
"glassPosition": "RW",
"confidence": "catalogue",
"glassAttributes": [
"tempered",
"heater"
],
"quantityRequested": 1,
"status": "in_stock",
"quantityAvailable": 3,
"canFulfil": true,
"fittingMaterialSkus": [],
"imageUrl": "https://api-sandbox.globeparts.com.au/media/parts/ISDM21%20RWTPHX.jpg"
}
],
"fittingMaterials": {
"ISDM21-FWM": {
"sku": "ISDM21-FWM",
"description": "WINDSCREEN MOULD (526351) (OZ-686)",
"relationship": "moulding",
"availability": {
"status": "out_of_stock",
"branchCode": "PER",
"quantityAvailable": 0,
"stockAsOf": "2026-08-27T08:10:37Z"
}
},
"RS-P-OZ-ST10": {
"sku": "RS-P-OZ-ST10",
"description": "SENSORFIX RAIN SENSOR PAD – 31MM (ROUND) OZ-SF10",
"relationship": "accessory",
"availability": {
"status": "in_stock",
"branchCode": "PER",
"quantityAvailable": 63,
"stockAsOf": "2026-08-27T08:10:37Z"
}
}
}
}glassPosition: "RW" —
green tint (out of stock today) and privacy grey (3 on hand). glassPosition
narrows to a slot on the vehicle, not to a single SKU — a fitter still picks by
tint/attribute. Only the windscreen names fitting materials
(fittingMaterialSkus); the moulding is out of stock at Perth today, the rain
sensor pad is not — real information the door-glass rows don't need to carry, because
none of them named a fitting material.Step B3
One part, in detail — the same windscreen, confirmed by cross-reference
Two different paths — a real IVDS report in Journey A, a hand-typed retry here in Journey B — land on the same real part. Asking for it directly confirms it:
curl -sS \ -H "X-Globe-Api-Key: $KEY" \ "$BASE/products/ISDM21-LFW-MROY"
{
"sku": "ISDM21-LFW-MROY",
"description": "ISUZU D-MAX 07/20 - 04/24 WINDSCREEN (MB+RS+CAM+MLG)",
"productType": "windscreen",
"longDescription": "WINDSCREEN WITH MIRROR BUTTON, RAIN SENSOR, CAMERA X2 (ADAS) AND MOULDING",
"glassPosition": "F",
"glassAttributes": [
"mirror_button",
"rain_sensor",
"adas",
"top_moulding"
],
"manufacturingStandard": "aftermarket",
"brand": null,
"crossReferences": {
"eurocode": null,
"nagsau": [],
"oemNumbers": [
"8975553992",
"1K0A63901"
],
"alternatePartNumbers": [],
"supersededBy": null
},
"barcodes": [],
"glassSize": "1458*849",
"imageUrls": [
"https://api-sandbox.globeparts.com.au/media/parts/ISDM21%20LFWMROY.jpg",
"https://api-sandbox.globeparts.com.au/media/parts/ISDM21%20LFWMROY_2.jpg",
"https://api-sandbox.globeparts.com.au/media/parts/ISDM21%20LFWMROY_3.jpg"
],
"status": "active"
}crossReferences.oemNumbers carries the OEM part numbers for
cross-checking against a customer's own reference — the same two values Journey A's
inline match already showed. nagsau, eurocode,
alternatePartNumbers and supersededBy are declared by the
contract and not populated for this SKU today — don't read the empties as "this part
has none." manufacturingStandard: "aftermarket" — this is not a genuine-OE
windscreen. The product endpoint doesn't add anything the fitment call didn't already
carry inline; it's the same data, addressable by SKU alone.
Timings observed on this run
| Call | Wall time |
|---|---|
GET /health | 0.17 s |
POST /fitment/glass (IVDS, one position) | 0.20 s |
POST /availability (one line) | 3.1 s |
GET /delivery-schedule | 0.17 s |
POST /orders | 0.50 s |
GET /orders/{orderId} | 0.17 s |
POST /fitment/glass (missing bodyType, 422) | 0.18 s |
POST /fitment/glass (resolved, fitting materials) | 0.17 s |
GET /products/{sku} | 0.23 s |
Catalogue-snapshot calls (fitment, products — including the 422 refusal, which is
checked before anything is priced) answer in a few hundred milliseconds or less;
/availability and /orders take longer because they re-resolve
live account pricing at the moment of the call. Set your client timeout at 30 s.