UPC-aggregated catalog search
const url = 'https://api.oldsteelarsenal.com/v1/catalog/search';const options = { method: 'POST', headers: { 'x-client-id': '<x-client-id>', 'x-signature': '<x-signature>', 'x-timestamp': '<x-timestamp>', 'Content-Type': 'application/json' }, body: '{"distributor":"example","include_removed":false,"limit":10,"q":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.oldsteelarsenal.com/v1/catalog/search \ --header 'Content-Type: application/json' \ --header 'x-client-id: <x-client-id>' \ --header 'x-signature: <x-signature>' \ --header 'x-timestamp: <x-timestamp>' \ --data '{ "distributor": "example", "include_removed": false, "limit": 10, "q": "example" }'Typeahead over the distributor catalog. Hits are grouped by UPC (one product, N offers, best_offer = in-stock cheapest); offers with no UPC surface as standalone orphan hits. Deleted rows excluded unless include_removed=true (archive lookup — best_offer is null when every offer on a hit is Deleted). Pass distributor to scope results to one distributor_code; omitted searches every distributor. Scope: catalog:read.
Authorizations
Section titled “Authorizations”Parameters
Section titled “ Parameters ”Header Parameters
Section titled “Header Parameters”Request Bodyrequired
Section titled “Request Bodyrequired”object
Archive lookup: also match offers the distributor has removed (status_flag ‘Deleted’). Discontinued and out-of-stock rows are searchable regardless. Default false keeps the purchasing typeahead clean. Not a strict superset of the default results: removed rows compete for the same scan budget and FTS candidate cap, so narrow broad queries with a second word.
Responses
Section titled “ Responses ”Successful Response
object
object
object
Handgun / Long Gun / Other Firearm / Ammunition / Accessory, from this distributor’s own department code — the one class table; a client keeps none of its own.
object
Handgun / Long Gun / Other Firearm / Ammunition / Accessory, from this distributor’s own department code — the one class table; a client keeps none of its own.
Examplegenerated
{ "results": [ { "best_offer": { "cost": 1, "department": "example", "discontinued": true, "distributor": "example", "dropship_blocked": true, "ffl_required": true, "image_url": "example", "manufacturer": "example", "map": 1, "model": "example", "msrp": 1, "product_class": "example", "qty": 1, "short_description": "example", "sku": "example", "status_flag": "example", "upc": "example", "vendor_approval_required": true }, "description": "example", "ffl_required": true, "image_url": "example", "manufacturer": "example", "model": "example", "offers": [ { "cost": 1, "department": "example", "discontinued": true, "distributor": "example", "dropship_blocked": true, "ffl_required": true, "image_url": "example", "manufacturer": "example", "map": 1, "model": "example", "msrp": 1, "product_class": "example", "qty": 1, "short_description": "example", "sku": "example", "status_flag": "example", "upc": "example", "vendor_approval_required": true } ], "upc": "example" } ]}Validation Error
object
object
object
Examplegenerated
{ "detail": [ { "ctx": {}, "input": "example", "loc": [ "example" ], "msg": "example", "type": "example" } ]}