Filtered offer scan (keyset-paged)
const url = 'https://api.oldsteelarsenal.com/v1/catalog/offers?distributor=example&fields=full&limit=500&dropship_ready=false&include_discontinued=false';const options = { method: 'GET', headers: { 'x-client-id': '<x-client-id>', 'x-signature': '<x-signature>', 'x-timestamp': '<x-timestamp>' }};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://api.oldsteelarsenal.com/v1/catalog/offers?distributor=example&fields=full&limit=500&dropship_ready=false&include_discontinued=false' \ --header 'x-client-id: <x-client-id>' \ --header 'x-signature: <x-signature>' \ --header 'x-timestamp: <x-timestamp>'Filter whitelist mirrors the POS select_catalog contract: department (repeatable), manufacturer, min_qty, max_cost, ffl_required, dropship_ready (⇒ not blocked + no vendor approval), search (description ILIKE), include_discontinued. fields=sku returns bare SKUs for bulk selection; fields=full returns full rows for cache rebuild / rules preview. Page with cursor = last sku of the previous page. Scope: catalog:read.
Authorizations
Section titled “Authorizations”Parameters
Section titled “ Parameters ”Query Parameters
Section titled “Query Parameters”Header Parameters
Section titled “Header Parameters”Responses
Section titled “ Responses ”Successful Response
object
object
Manufacturer price-policy mark when the distributor ships one (ss: ‘M’ = enforceable MAP, ‘U’ = suggested MSRP, ‘’ = no policy — render ‘’ as ‘no policy’, never as MAP $0). Always ‘’ for rsr.
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.
Example
{ "rows": [ { "map_policy": "" } ]}Validation Error
object
object
object
Examplegenerated
{ "detail": [ { "ctx": {}, "input": "example", "loc": [ "example" ], "msg": "example", "type": "example" } ]}