Customer
Interface
The authenticated buyer, as returned by activation.confirm, login, and me.
Serialized through the storefront's anonymous-branch serializer: it carries the
buyer's own contact and account state and NOTHING internal (no tenant id, no
password material, no token internals).
Property | Type | Optional | Description |
|---|---|---|---|
|
| No | Company name for a business (B2B) buyer. |
|
| No | ISO 8601 datetime the customer record was first created (guest booking or registration). |
|
| No | Account email, normalized (trimmed, lower-cased). The login identifier. Max 320 chars. |
|
| No |
|
|
| No | Buyer first name in the requested profile. |
|
| No |
|
|
| No | Opaque customer identifier ( |
|
| No | Buyer last name. |
|
| No | Buyer phone number in free form. |
|
| No | ISO 8601 datetime (e.g. |
CustomerActivationConfirmInput
Interface
Fields for CustomersService.activation.confirm: the token from the emailed
activation link, plus every value CustomerRegisterInput no longer accepts.
This is the only place a buyer's credential, terms acceptance, profile and marketing
consent enter the system, because it is the only point where the caller has proven
they control the address.
Property | Type | Optional | Description |
|---|---|---|---|
|
| No | Terms/CGV acceptance. MUST be |
|
| Yes | Optional buyer first name. Applied only when the account has none on file. |
|
| Yes | Optional buyer last name. Applied only when the account has none on file. |
|
| Yes | Optional marketing opt-in, unchecked by default. When |
|
| No | Chosen password. Between 8 and 100 characters. Never stored or logged by the SDK. |
|
| Yes | Optional buyer phone number. 3 to 40 chars when set. Applied only when the account has none on file. |
|
| No | The single-use, short-lived activation token the buyer received by email. |
CustomerAddress
Interface
A saved postal address in the authenticated buyer's address book. Optional
address fields are returned as null, never omitted.
Property | Type | Optional | Description |
|---|---|---|---|
|
| No | Street line 1 (number and street). Always set. Max 255 characters. |
|
| No | Street line 2 (apartment, floor, building). |
|
| No | Buyer-chosen label such as |
|
| No | City or town. Always set. Max 120 characters. |
|
| No | Company name for a business delivery. |
|
| No | ISO 3166-1 alpha-2 country code in uppercase (for example |
|
| No | ISO 8601 creation datetime (for example |
|
| No | Recipient first name. Always set. Max 120 characters. |
|
| No | Prefixed wire identifier (for example |
|
| No |
|
|
| No |
|
|
| No | Recipient last name. Always set. Max 120 characters. |
|
| No | Contact phone for the delivery. |
|
| No | Postal or ZIP code as unvalidated free-form text. Always set. Max 32 characters. |
|
| No | Province, state, or region. |
|
| No | ISO 8601 datetime of the last edit. Equal to |
CustomerAddressInput
Interface
Fields accepted when saving a new buyer address.
Property | Type | Optional | Description |
|---|---|---|---|
|
| No | Street line 1. Required. Max 255 characters. |
|
| Yes | Street line 2 (apartment, floor). Pass |
|
| Yes | Optional label such as |
|
| No | City or town. Required. Max 120 characters. |
|
| Yes | Company name for a business delivery. Pass |
|
| No | ISO 3166-1 alpha-2 country code. The API normalizes it to uppercase. |
|
| No | Recipient first name. Required. Max 120 characters. |
|
| Yes | Mark this address as the default billing address, atomically unsetting the previous one. |
|
| Yes | Mark this address as the default shipping address, atomically unsetting the previous one. |
|
| No | Recipient last name. Required. Max 120 characters. |
|
| Yes | Optional buyer-supplied extension data stored with the address but not returned by storefront reads. |
|
| Yes | Contact phone for the delivery. Pass |
|
| No | Postal or ZIP code. Required. Max 32 characters. |
|
| Yes | Province, state, or region. Pass |
CustomerAddressUpdateInput
TypeAlias
Partial address edit. At least one field must be present or the API returns HTTP 422.
type CustomerAddressUpdateInput = AtLeastOne<CustomerAddressInput>CustomerAuthResult
Interface
The result of a successful activation.confirm or login. The token is an opaque
signed session token: the SDK stores it in memory on the client and attaches it as
Authorization: Bearer <token> on subsequent authenticated calls. Persist it in
your own storage (for example a cookie) if the session must survive a page reload.
register does NOT return this: it is anonymous and hands out no session. A session
is only ever issued to someone who has proven they control the address.
Property | Type | Optional | Description |
|---|---|---|---|
|
| No | The authenticated buyer. |
|
| No | Opaque session token. Attach on authenticated requests; store it to keep the buyer signed in. |
CustomerBooking
TypeAlias
A booking in the me history: the buyer-safe subset of the storefront
Booking shape the authenticated buyer sees for their own reservations.
Contact fields (guestName, guestEmail) and the booked resource are omitted
here (the buyer's own identity lives on Customer). The reference and slot
fields reuse the Booking formats; status is widened to the full
CustomerBookingStatus lifecycle, because the history is NOT filtered to
confirmed bookings the way a fresh create response is.
type CustomerBooking = Pick<Booking, "reference" | "startsAt" | "endsAt" | "partySize"> & { status: CustomerBookingStatus }CustomerBookingStatus
TypeAlias
The lifecycle status of a booking in the buyer's me history. A freshly created
booking is always 'confirmed', but a historical booking can also be 'cancelled'
(and the reserved 'pending', 'completed', 'no_show' as later lifecycle
transitions ship), so the history status is wider than a create response's fixed
'confirmed'.
type CustomerBookingStatus = "pending" | "confirmed" | "cancelled" | "completed" | "no_show"CustomerEmailVerificationResult
Interface
The result of verifyEmail: the buyer's email-verification state after consuming the
token. emailVerified is true on success (an invalid, expired, or already-used token
throws instead), and once it flips, retro-linked guest bookings placed with the same
email before registration become visible in CustomerSession bookings.
Property | Type | Optional | Description |
|---|---|---|---|
|
| No |
|
CustomerLoginInput
Interface
Credentials for login.
Property | Type | Optional | Description |
|---|---|---|---|
|
| No | Account email. |
|
| No | Account password. |
CustomerLogoutOptions
Interface
Options for logout.
Property | Type | Optional | Description |
|---|---|---|---|
|
| Yes | When |
CustomerRegisterInput
Interface
The single field register accepts: the address to send an activation link to.
Credentials, terms, profile and marketing consent are deliberately NOT here. An anonymous caller proves nothing about the address they type, so nothing they type may take effect on it. Everything that used to live on this type moved to CustomerActivationConfirmInput, collected on the inbox-linked activation page from whoever actually opens the link.
Property | Type | Optional | Description |
|---|---|---|---|
|
| No | Account email. Normalized server-side (trimmed, lower-cased). The login identifier. |
CustomerSession
Interface
The result of me: the current buyer plus their bookings. Bookings are scoped to
this buyer; retro-linked guest bookings are withheld until customer.emailVerified
is true.
Property | Type | Optional | Description |
|---|---|---|---|
|
| No | Up to the buyer's 100 most recent bookings. A buyer-safe subset of the Booking shape. |
|
| No | The authenticated buyer. |
CustomerSpamOptions
Interface
Options for customer writes protected by the storefront anti-spam middleware, including registration, password-reset requests, and address-book mutations.
Extends: SubmitOptions, BaseRequestOptions
Property | Type | Optional | Description |
|---|---|---|---|
|
| Yes | Raw |
|
| Yes | Epoch timestamp in milliseconds when the buyer started filling the form. The SDK<br>sends it as |
|
| Yes | Locale override for this specific request.<br>When set, overrides the |
|
| Yes | Google reCAPTCHA v3 token for spam protection.<br>Required when the form/site has reCAPTCHA enabled (check |
MarketingChannel
TypeAlias
A marketing channel the buyer can consent to. Exposed by its generic channel
name only, never an infrastructure vendor. 'whatsapp' and 'email' in v1;
the union is additive as new channels ship.
type MarketingChannel = "whatsapp" | "email"MarketingConsentList
Interface
The consent read/write response: one entry per channel in MarketingChannel.
Property | Type | Optional | Description |
|---|---|---|---|
|
| No | Per-channel effective consent, one entry for every known channel. |
MarketingConsentState
Interface
The effective consent state for one marketing channel.
Property | Type | Optional | Description |
|---|---|---|---|
|
| No | The channel this entry describes. |
|
| No |
|
MarketingConsentUpdateInput
Interface
Input for marketingConsent.update.
Property | Type | Optional | Description |
|---|---|---|---|
|
| No | The channel to change, or the literal |
|
| No |
|
PasswordResetConfirmInput
Interface
Input for passwordReset.confirm.
Property | Type | Optional | Description |
|---|---|---|---|
|
| No | The new password. Must satisfy the server's minimum length (8). |
|
| No | The single-use, short-lived reset token the buyer received by email. |
PasswordResetRequestInput
Interface
Input for passwordReset.request.
Property | Type | Optional | Description |
|---|---|---|---|
|
| No | The account email to send a reset link to. The call always resolves, whether or not it exists. |