Bowmark AIdocs

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

FunctionWhat it does
listBlindStylesSearches SelectBlinds' real made-to-measure catalog, optionally filtered by a free-text query matched against title and vendor.
getConfiguratorReads 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…
priceConfigurationResolves 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 };