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
| Function | What it does |
|---|---|
listBaublebarCollections | The 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… |
listBaublebarProducts | Reads a BaubleBar collection's live products — e.g. "tennis-bracelets", "personalized-jewelry", "name-initial-jewelry" — with handle, title, price range and stock. |
getBaublebarProduct | Reads 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… |
getBaublebarCheckoutLink | Resolves 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(", "));