Skip to content

UPC-aggregated catalog search

POST
/v1/catalog/search
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.

x-client-id
Any of:
string
x-timestamp
Any of:
string
x-signature
Any of:
string
Media typeapplication/json
CatalogSearchRequest
object
distributor
Any of:
string
include_removed
Include Removed

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.

boolean
limit
Limit
integer
default: 10 >= 1 <= 50
q
required
Q
string
>= 1 characters

Successful Response

Media typeapplication/json
CatalogSearchResponse
object
results
required
Results
Array<object>
ProductHit
object
best_offer
Any of:
OfferOut
object
cost
required
Cost
number
department
required
Department
string
discontinued
required
Discontinued
boolean
distributor
required
Distributor
string
dropship_blocked
required
Dropship Blocked
boolean
ffl_required
required
Ffl Required
boolean
image_url
required
Image Url
string
manufacturer
required
Manufacturer
string
map
required
Map
number
model
required
Model
string
msrp
required
Msrp
number
product_class
required
Product Class

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.

string
qty
required
Qty
integer
short_description
required
Short Description
string
sku
required
Sku
string
status_flag
required
Status Flag
string
upc
required
Any of:
string
vendor_approval_required
required
Vendor Approval Required
boolean
description
required
Description
string
ffl_required
required
Ffl Required
boolean
image_url
required
Image Url
string
manufacturer
required
Manufacturer
string
model
required
Model
string
offers
required
Offers
Array<object>
OfferOut
object
cost
required
Cost
number
department
required
Department
string
discontinued
required
Discontinued
boolean
distributor
required
Distributor
string
dropship_blocked
required
Dropship Blocked
boolean
ffl_required
required
Ffl Required
boolean
image_url
required
Image Url
string
manufacturer
required
Manufacturer
string
map
required
Map
number
model
required
Model
string
msrp
required
Msrp
number
product_class
required
Product Class

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.

string
qty
required
Qty
integer
short_description
required
Short Description
string
sku
required
Sku
string
status_flag
required
Status Flag
string
upc
required
Any of:
string
vendor_approval_required
required
Vendor Approval Required
boolean
upc
required
Any of:
string
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

Media typeapplication/json
HTTPValidationError
object
detail
Detail
Array<object>
ValidationError
object
ctx
Context
object
input
Input
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string
Examplegenerated
{
"detail": [
{
"ctx": {},
"input": "example",
"loc": [
"example"
],
"msg": "example",
"type": "example"
}
]
}