Bowmark AIdocs

BaubleBar

BaubleBar's personalized jewelry — every product, its size/color variants and real prices, PLUS the free-text personalizer's own character rules and the…

BaubleBar's personalized jewelry — every product, its size/color variants and real prices, PLUS the free-text personalizer's own character rules and the current made-to-order ship-by date — read off the live Shopify storefront, plus a live-validated checkout handoff link carrying the personalization.

Domain: baublebar.com

Also known as: BaubleBar, baublebar, BAUBLEBAR, Baublebar

Call it directly

bowmark.providers.baublebar.listBaublebarCollections(opts?: { limit?: number }): Promise<BaublebarCollectionRow[]>
bowmark.providers.baublebar.listBaublebarProducts(collectionHandle: string, opts?: { limit?: number }): Promise<BaublebarCatalogueRow[]>
bowmark.providers.baublebar.getBaublebarProduct(handle: string): Promise<BaublebarProduct>
bowmark.providers.baublebar.getBaublebarCheckoutLink(handle: string, selections: { size?: string; color?: string; text?: string }, opts?: { quantity?: number }): Promise<BaublebarCheckoutLink>

Functions

FunctionWhat it does
listBaublebarCollectionsThe entry door: reads BaubleBar's own published list of collections — e.g. "Tennis Bracelets", "Personalized Jewelry" — with each one's handle and product count, so a caller holding only…
listBaublebarProductsReads a BaubleBar collection's live products — e.g. "tennis-bracelets", "personalized-jewelry", "name-initial-jewelry" — with handle, title, price range and stock.
getBaublebarProductReads one product by its handle — every size/color variant with live price and stock, plus (when the product has a free-text personalizer) its exact character-count/allowed-character rules…
getBaublebarCheckoutLinkResolves a product handle + size/color + personalization text to a real Shopify cart-permalink URL carrying the customization as a line-item property, validated live against the…

Types

interface BaublebarPersonalizationField {
  index: number;
  minLength: number;
  maxLength: number;
  /** The exact allowed-character set as the site states it, e.g. "A, B, C, …, Z". */
  restriction: string;
  required: boolean;
  lettercase: "uppercase" | "lowercase" | "none";
}
interface BaublebarPersonalization {
  fields: BaublebarPersonalizationField[];
  /** True when a single "_Customization" cart property is used instead of one per field. */
  hasIcons: boolean;
}
interface BaublebarVariant {
  id: string;
  title: string;
  /** Integer cents, verbatim from the storefront. */
  price: number;
  available: boolean;
  options: string[];
}
interface BaublebarProduct {
  handle: string;
  title: string;
  vendor: string;
  url: string;
  optionNames: string[];
  variants: BaublebarVariant[];
  inStock: boolean;
  images: string[];
  /** null on a product with no free-text personalizer. */
  personalization: BaublebarPersonalization | null;
  /** The literal made-to-order ship-by date as rendered right now, e.g. "9/11/26", or null. */
  shipBy: string | null;
}
interface BaublebarCatalogueRow {
  handle: string;
  title: string;
  vendor: string;
  url: string;
  priceRange: { min: number; max: number } | null;
  inStock: boolean;
  images: string[];
}
interface BaublebarCollectionRow {
  handle: string;
  title: string;
  productsCount: number;
}
interface BaublebarCheckoutLink {
  url: string;
  variant: BaublebarVariant;
  product: BaublebarProduct;
  shipBy: string | null;
}

Examples

// what does BaubleBar even sell — find a collection handle to search inside
const collections = await bowmark.providers.baublebar.listBaublebarCollections();
log(collections.map(c => `${c.title} (${c.handle}): ${c.productsCount} items`).join(", "));
// what personalized tennis bracelets does BaubleBar sell, and what do they cost?
const rows = await bowmark.providers.baublebar.listBaublebarProducts("tennis-bracelets", { limit: 20 });
log(rows.map(r => `${r.title}: $${(r.priceRange?.min ?? 0) / 100}`).join(", "));