Solo Stove
Solo Stove's bundle-builder check flow — search bundles by what a shopper would type (e.g. "pizza bundle"), then check one bundle's own product id (fire…
Solo Stove's bundle-builder check flow — search bundles by what a shopper would type (e.g. "pizza bundle"), then check one bundle's own product id (fire pit + accessories, e.g. the Dream Backyard Bundle) for its combined price and whether the exact combination is orderable right now, broken down per component so a caller can see WHICH piece is out of stock when it is not.
Domain: solostove.com
Also known as: Solo Stove, SoloStove
Call it directly
bowmark.providers.solostove.listBundles(query: string): Promise<SolostoveBundleSearch>
bowmark.providers.solostove.checkBundle(args: { bundleId: string }): Promise<SolostoveBundleCheck>Functions
| Function | What it does |
|---|---|
listBundles | Searches Solo Stove's own storefront search for BUNDLE products (fire pit + accessories sold as one combination) by what a shopper would type, e.g. "pizza bundle" or "Dream Backyard".… |
checkBundle | Checks one Solo Stove bundle (fire pit + accessories, e.g. the Dream Backyard Bundle) by its own product id — the +-joined component SKUs from the bundle's product page URL, or a bundleId… |
Types
interface SolostoveBundleSummary {
bundleId: string;
name: string;
price: number;
currency: string;
orderable: boolean;
}
interface SolostoveBundleSearch {
query: string;
bundles: SolostoveBundleSummary[];
total: number;
}
interface SolostoveBundleComponent {
sku: string;
name: string;
price: number;
quantity: number;
orderable: boolean;
availableToSell: number;
}
interface SolostoveBundleCheck {
bundleId: string;
name: string;
price: number;
currency: string;
orderable: boolean; // false when even ONE component is out of stock
components: SolostoveBundleComponent[]; // empty for a non-bundle product
}Examples
// find a bundle by what a shopper would say, then check if it's buildable right now
const found = await bowmark.providers.solostove.listBundles("pizza bundle");
const bundleId = found.bundles[0]?.bundleId;
const check = await bowmark.providers.solostove.checkBundle({ bundleId });
log(`${check.name}: $${check.price} — ${check.orderable ? "orderable" : "NOT orderable"}`);
if (!check.orderable) {
const broken = check.components.filter(c => !c.orderable).map(c => c.name);
log(`blocked by: ${broken.join(", ")}`);
}