@opencals/storefront-sdk is the official TypeScript client for the Storefront
API — generated from the OpenAPI spec, fully typed, with Zod runtime validation
and formatting helpers for prices, durations, and timezones. MIT licensed.
Version history
DeprecationBreaking
Staff contact details removed. The Storefront API no longer returns staff
email, userId or refreshToken, and staff detail no longer includes the
linked user. Storefront keys ship in browsers, so these were readable by
anyone. The fields are gone from every *StaffMember type, and the
StaffMemberDetailUser type is removed. If you used email for avatar
initials, use firstName / lastName instead.Appointment externalOrderId / externalOrderName deprecated. These fields
predate orders. Read the platform order from appointment.order instead
(order.externalId, order.externalName).- Both fields stay in appointment responses and are now filled from the linked
order, so they’re correct again for new bookings. They’re marked
@deprecatedin the types. AppointmentService.findByExternalOrderNameis deprecated. It now only returns appointments from the store making the request, and it returns 404 instead of 400 when nothing matches.
Custom Attributes
Custom attributes on appointments. Ships support for the new
custom attributes feature.
CreateAppointmentaccepts an optionalcustomAttributesmap (string keys → string values) to attach arbitrary data at booking time- Appointment responses now echo
customAttributes
DiscountsAuth
Discounts & passwordless auth. Ships support for the new
discounts feature and magic-link sign-in.
CartService.applyDiscountCode()andCartService.removeDiscountCode()- New discount types:
AppliedDiscount,ApplyCode,CartItemAppliedDiscount,OrderLineItemDiscount,OrderLineItemDiscountWritable - Passwordless / magic-link auth:
AuthService.requestLoginCode(),AuthService.verifyLoginCode(),AuthService.resolveLink(), withRequestLoginCode,VerifyLoginCode,ResolveLinkResponsetypes
Fix
- Fixed the
AppointmentAddOntype, which was missing fields due to a backend OpenAPI schema name collision (the DTO was renamed toCreateAppointmentAddOnDto)
Add-Ons
Add-ons support. First version with the Add-Ons
feature.
AddonService, withCartAddOnItem,AppointmentAddOn, andOrderAddOnLineItemtypesStoreService.getStorePublicSettings()for storefront currency and public store settings
API change
Service classes. Released alongside the public
Storefront API v1.
- Grouped SDK methods into
*Serviceclasses by tag (e.g.ProductService,AuthService,CartService) - Stripped the controller prefix from operation IDs (e.g.
ProductService.list()instead ofproductList()) - Fixed
Authoperations missing from the spec (tag collision with the admin controller) - Rewrote the README with updated examples and a service table
Initial
Initial releases of the auto-generated TypeScript client.
- v0.1.0 — auto-generated client, Zod validation schemas,
setupOpencals()one-line init, API-key/error/logging interceptors, and helpers (formatPrice,formatDuration, timezone conversion). Full support for products, cart, checkout, customer auth, appointments, orders, and feedback. - v0.1.1 — renamed
external_domain→externalDomainonStorePublicSettings. - v0.1.2 — renamed
client_secret→clientSecretonCheckoutStartResponse.