SazitoSazito SDKv1.2.2
API Reference

Cart

Cart APIs for guest and authenticated checkout entry, line-item changes, and cart credential lifecycle.

Module role in sales flow

cart is the first checkout module for both guest and authenticated users.

  • Use create when you want an explicit initial cart payload (variants, coupon, and optional form/booking attributes).
  • Use addItem for quick add-to-cart UX. If no cart exists, SDK creates it automatically.
  • After cart is ready, continue with invoices.create() to move into checkout.

V2 contract notes

  • cart.get() always sends required query identifier from stored cart credentials.
  • Only send schedulerBookingAttributes when all required booking fields are present.
  • updateItem accepts count = 0 to remove the target line-item.

Attribute map (form vs booking)

FieldScopeWhat it is for
variants[].formAttributes in cart.createProduct line itemProduct-specific dynamic form values for that variant (for example engraving text, custom options).
input.formAttributes in cart.createCart add requestAdditional dynamic form payload accepted by checkout cart endpoint.
attributes.formAttributes in cart.addItemWithAttributesProduct line itemSame as above, but for a single add-item action.
attributes.schedulerBookingAttributes in cart.addItemWithAttributesBooking product onlyBooking/scheduling payload (eventEntityId, startDateTimeLocal, endDateTimeLocal, timezone).
input.formAttributes in invoices.addFormInvoice/checkout levelCheckout-level form values (not product customization, not booking time).

Methods

Get

Use: cart.get(options?).

ParameterTypeRequiredDescription
optionsRequestOptionsOptionalPer-request controls.

Returns: SazitoResponse<Cart>.

const cartRes = await client.cart.get();
if (cartRes.error?.type === 'validation') {
  // No stored cart yet, create one or call addItem.
}

Create

Use: cart.create(input, options?).

FieldTypeRequiredDescription
input.variantsAddToCartInput[]RequiredVariants to initialize cart with.
input.couponstringOptionalInitial coupon.
input.formAttributesRecord<string, any>OptionalDynamic form values.
input.schedulerBookingAttributesSchedulerBookingAttributesOptionalBooking attributes for scheduler products.
optionsRequestOptionsOptionalPer-request controls.
const cartRes = await client.cart.create({
  variants: [
    { id: 12001, count: 2 },
    { id: 12009, count: 1, formAttributes: { engraving: 'SAZITO' } },
  ],
  coupon: 'WELCOME10',
});

Add Item

Use: cart.addItem(variantId, count, formAttributes?, options?).

ParameterTypeRequiredDescription
variantIdnumberRequiredVariant ID.
countnumberRequiredQuantity to add.
formAttributesRecord<string, any>OptionalProduct dynamic form attributes (not booking schedule).
optionsRequestOptionsOptionalPer-request controls.
const cartRes = await client.cart.addItem(12001, 1);

Add Item With Attributes

Use: cart.addItemWithAttributes(variantId, count, attributes?, options?).

addItemWithAttributes is the explicit add-to-cart API when you need to pass attributes object(s) in a structured way.

  • Use addItem for simple quantity-only add.
  • Use addItemWithAttributes when the product requires form answers, booking time fields, or both.
  • It can create the cart automatically if no cart exists yet.
FieldTypeRequiredDescription
variantIdnumberRequiredVariant ID.
countnumberRequiredQuantity to add.
attributes.formAttributesRecord<string, any>OptionalProduct form answers attached to the added line item.
attributes.schedulerBookingAttributesSchedulerBookingAttributesOptionalBooking-only schedule payload for reservable/schedulable products.
attributes.couponstringOptionalCoupon token for this add-to-cart request.
optionsRequestOptionsOptionalPer-request controls.
const cartRes = await client.cart.addItemWithAttributes(14022, 1, {
  formAttributes: { participantName: 'John Doe' },
  schedulerBookingAttributes: {
    eventEntityId: 987,
    startDateTimeLocal: '2026-03-10T10:00:00',
    endDateTimeLocal: '2026-03-10T11:00:00',
    timezone: 'Asia/Tehran',
  },
});

Update Item

Use: cart.updateItem(cartProductId, variantId, count, formAttributes?, options?).

ParameterTypeRequiredDescription
cartProductIdnumber | stringRequiredExisting cart-product row ID.
variantIdnumberRequiredVariant ID being updated.
countnumberRequiredNew quantity (0 removes that cart row).
formAttributesRecord<string, any>OptionalUpdated dynamic form attributes.
optionsRequestOptionsOptionalPer-request controls.
const cart = await client.cart.get();
const first = cart.data?.items[0];

if (first) {
  await client.cart.updateItem(first.id, first.productVariantId, 3);
}

Update Item With Attributes

Use: cart.updateItemWithAttributes(cartProductId, variantId, count, attributes?, options?).

FieldTypeRequiredDescription
cartProductIdnumber | stringRequiredCart-product row ID.
variantIdnumberRequiredVariant ID being updated.
countnumberRequiredNew quantity (0 removes row).
attributes.formAttributesRecord<string, any>OptionalUpdated dynamic form values.
attributes.couponstringOptionalReplace active coupon on this request.
attributes.deleteCouponbooleanOptionalSet true to remove active coupon.
optionsRequestOptionsOptionalPer-request controls.
await client.cart.updateItemWithAttributes('12', 12001, 0, {
  deleteCoupon: true,
});

Remove Item

Use: cart.removeItem(cartProductId, variantId, options?).

ParameterTypeRequiredDescription
cartProductIdnumber | stringRequiredExisting cart-product row ID.
variantIdnumberRequiredVariant ID to remove.
optionsRequestOptionsOptionalPer-request controls.
const cart = await client.cart.get();
const first = cart.data?.items[0];

if (first) {
  await client.cart.removeItem(first.id, first.productVariantId);
}

Clear Cart

Use: cart.clearCart().

Clears persisted cart credentials only.

client.cart.clearCart();

Cart fields

FieldTypeRequiredDescription
idnumberRequiredBackend response field. Cart API requests always use the internal ID 0; callers use identifier for cart identity.
identifierstringRequiredGuest cart identifier.
itemsCartProduct[]RequiredCart line items.
netTotalnumberRequiredNet total from backend checkout pricing.
grossTotalnumberOptionalGross total (when present in backend response).
needsShippingbooleanRequiredWhether shipping step is required.
minBasketLimitViolatedbooleanRequiredMinimum basket status flag.
deleteCouponbooleanOptionalCoupon deletion flag from backend.

Known errors

TypeWhen it happens
validationMissing cart credentials for get/updateItem/removeItem.

Examples

// app/lib/sazito-client.ts
import { createSazitoClient } from '@sazito/client-sdk';

export const sazito = createSazitoClient({
  domain: process.env.NEXT_PUBLIC_SAZITO_DOMAIN!,
});
// app/[lang]/(home)/page.tsx
'use client';
import { useEffect, useState } from 'react';
import { sazito } from '@/app/lib/sazito-client';

export default function Example() {
  const [data, setData] = useState<any>(null);

  useEffect(() => {
    sazito.cart.addItem(12001, 1).then((res) => setData(res.data ?? null));
  }, []);

  return <pre>{JSON.stringify(data, null, 2)}</pre>;
}

Type Details

The following tables are generated from SDK TypeScript types and include nested object fields.

CreateCartInput

Source: src/types/cart.ts

FieldTypeRequired
couponstringOptional
variantsAddToCartInput[]Required
formAttributesRecord<string, FormAttributeValue>Optional
schedulerBookingAttributesSchedulerBookingAttributesOptional

AddToCartInput

Source: src/types/cart.ts

FieldTypeRequired
idnumberRequired
countnumberRequired
formAttributesRecord<string, FormAttributeValue>Optional

Cart

Source: src/types/cart.ts

FieldTypeRequired
idnumberRequired
identifierstringRequired
itemsCartProduct[]Required
netTotalnumberRequired
grossTotalnumberOptional
needsShippingbooleanRequired
minBasketLimitViolatedbooleanRequired
deleteCouponbooleanOptional

CartProduct

Source: src/types/cart.ts

FieldTypeRequired
idnumberRequired
productVariantIdnumberRequired
quantitynumberRequired
unitPricenumberRequired
lineTotalnumberRequired
productCheckoutProductSnapshotRequired
formAttributesRecord<string, FormAttributeValue>Optional
formFieldsRecord<string, any>Optional
bookingAttributesSchedulerBookingAttributesOptional

On this page