Schemas
SearchRequest
termsSearch terms (1–10). Each item must be a non-empty string after trim. The server trims whitespace before searching.
limitMaximum products to return per term. Defaults to 1 when omitted.
Note: limit is not part of the cache key; a higher later limit only
returns what that cached batch stored.
SearchResponse
One result object per input term, in the same order
TermResult
termThe original (trimmed) search term from the request
sourceWhere the products came from for this term. Either the literal
cache, or an identifier for the upstream provider that served the
request.
null means every configured provider failed or none are configured;
see error for details.
Matched products (may be empty on failure)
cachedFromPresent only when source is cache. Identifier of the upstream
provider that originally fetched and stored this batch.
fetchedAtISO-8601 timestamp when this batch was fetched (or when the cached
batch was originally stored). Absent when source is null.
errorHuman-readable failure reason for this term. Present when source
is null. This is not an HTTP-level error — the overall response
status remains 200.
Product
imagesImage URLs (may be empty)
nameProduct title
priceNumeric price when available
currencyISO currency code
descriptionProduct description or joined feature bullets
urlShop now product URL
HealthResponse
okAlways true when the process is serving requests
dbWritableWhether a simple SQLite read succeeds
vendorAConfiguredWhether the primary provider env vars are present (not validated live)
vendorBConfiguredWhether the fallback provider env vars are present (not validated live)
cacheTtlHoursEffective cache TTL in hours (CACHE_TTL_HOURS, default 24)