SelectBlinds
SelectBlinds' real made-to-measure blinds/shades catalog and its real live 'HD Pricing' engine — search real buyable styles, read one style's real…
SelectBlinds' real made-to-measure blinds/shades catalog and its real live 'HD Pricing' engine — search real buyable styles, read one style's real configurator (mount type, lift style, and their real nested sub-options), and price one exact width/height/mount build against the site's own numbers.
Domain: selectblinds.com
Also known as: SelectBlinds, selectblinds, Select Blinds, selectblinds.com
Call it directly
bowmark.providers.selectblinds.listBlindStyles(query?: string): Promise<SelectBlindsStyle[]>
bowmark.providers.selectblinds.getConfigurator(handle: string): Promise<SelectBlindsConfigurator>
bowmark.providers.selectblinds.priceConfiguration(handle: string, featureOptionIds: number[], width: number, drop: number): Promise<SelectBlindsPriceResult>Functions
| Function | What it does |
|---|---|
listBlindStyles | Searches SelectBlinds' real made-to-measure catalog, optionally filtered by a free-text query matched against title and vendor. |
getConfigurator | Reads one style's real live configurator: every real feature (Mount Type, Lift Style and their real nested sub-options) straight off the product page's own embedded catalogue data, plus the… |
priceConfiguration | Resolves one exact build (a style handle + the chosen feature option ids from getConfigurator + a real width/height in inches) to SelectBlinds' own real computed price, matching the number… |
Types
// SelectBlinds' OWN shapes — not a capability contract.
interface SelectBlindsStyle {
handle: string; // the key getConfigurator/priceConfiguration take
title: string;
vendor: string;
priceMin: number; // dollars — cheapest color variant's base price
priceMax: number;
colorCount: number;
}
interface SelectBlindsFeatureOption {
id: number; // pass this in priceConfiguration's featureOptionIds
label: string;
nestedFeatures: SelectBlindsFeature[]; // further choices this option reveals, if any
}
interface SelectBlindsFeature {
id: number;
label: string; // e.g. "Mount Type", "Lift Style"
name: string;
displayType: string;
required: boolean; // true only for an UNCONDITIONAL requirement
options: SelectBlindsFeatureOption[];
}
interface SelectBlindsMeasurement {
minWidth: number; // inches
maxWidth: number;
widthIncrement: number;
minHeight: number;
maxHeight: number;
heightIncrement: number;
baseUnit: string;
}
interface SelectBlindsConfigurator {
handle: string;
title: string;
productId: number; // pass straight into priceConfiguration
sku: string;
productColorId: number;
features: SelectBlindsFeature[];
measurement: SelectBlindsMeasurement;
}
interface SelectBlindsPriceResult {
handle: string;
width: number;
drop: number; // SelectBlinds' own name for height
featureOptionIds: number[];
retailPrice: number; // the real computed total
warranties: { warrantyId: number; warrantyPrice: number }[];
}Examples
// What would a 46x60in cordless blackout cellular shade cost, inside mount?
const styles = await bowmark.providers.selectblinds.listBlindStyles("cellular shades");
const style = styles[0];
const configurator = await bowmark.providers.selectblinds.getConfigurator(style.handle);
const mountType = configurator.features.find((f) => f.name === "Mount_Type");
const liftStyle = configurator.features.find((f) => f.name === "Lift_Style");
const inside = mountType.options.find((o) => o.label === "Inside");
const cordless = liftStyle.options.find((o) => o.label === "Cordless");
const priced = await bowmark.providers.selectblinds.priceConfiguration(
style.handle,
[inside.id, cordless.id],
46,
60,
);
return { price: priced.retailPrice, bounds: configurator.measurement };