Hanzo
OpenapiCommerce

Open a cart for a shopper to fill

Opens an empty cart for a shopper to fill, and answers it with its new id.

POST /v1/commerce/cart

Addresshttps://api.hanzo.ai/v1/commerce/cart
MethodPOST
OperationopenCart
AuthAuthorization: Bearer $HANZO_API_KEY

Opens an empty cart for a shopper to fill, and answers it with its new id.

This is the first step of a sale: hold the id, add items to it with setCartItem, then hand it to checkout. Every field of the request is optional — an empty body opens a perfectly good anonymous cart — and the fields exist only to pre-fill what is already known about the shopper.

The STORE defaults to the org's own default storefront, so a merchant selling through one storefront never has to name it. The CURRENCY defaults to usd; note that checkout overrides it with the store's own currency when the sale is authorized, so a currency set here is a hint rather than a commitment.

The cart is created in the CALLER'S OWN org namespace, taken from the validated principal and never from the body, so a cart can never be opened on another tenant's books.

A named handler, not a closure, so zipdoc can lift this prose into the registry.

Request

4 fields, body application/json (required).

FieldInTypeRequiredDescription
currencybodystringCurrency is the ISO 4217 code the cart is priced in, lower-cased.
emailbodystringEmail is the shopper's address, for a cart that belongs to someone who has not signed in. It is what a guest checkout and an abandoned-cart follow-up key on.
storebodystringStore is the storefront this cart is being filled on.
userbodystringUser is the id of the signed-in shopper this cart belongs to, when there is one.

Response

StatusBodyMeaning
201Cartcreated

201 body — 23 fields.

FieldInTypeAlwaysDescription
createdAtbodystringCreatedAt is when the cart was opened, RFC3339.
currencybodystringCurrency is the ISO 4217 code every amount below is denominated in.
discountCentsbodyintegerDiscountCents is what coupons and promotions took off, in whole cents.
emailbodystringEmail is the shopper's address, when the cart carries one.
idbodystringID is the cart's id — what every other cart op addresses it by, and what a storefront persists against the browser session.
itemsbodyCartItem[]Items are the cart's lines, in the order they were added.
items[].freebodybooleanFree reports a line that costs nothing because a coupon or a promotion made it so, rather than because its price is zero.
items[].idbodystringID is the line's identity — the variant id when the line is a variant, otherwise the product id.
items[].kindbodystringKind is "variant" when this line is a specific sellable variant and "product" when it is the product itself.
items[].namebodystringName is the item's display name, cached onto the line when it was added so a cart renders without a second read.
items[].priceCentsbodyintegerPriceCents is the unit price in whole cents, cached at the moment the line was added.
items[].quantitybodyintegerQuantity is how many units of this item the cart holds.
items[].skubodystringSKU is the line's stock-keeping unit — the variant's when it has one, otherwise the product's.
lineTotalCentsbodyintegerLineTotalCents is the sum of the lines before any discount, in whole cents.
orderbodystringOrder is the order this cart became, once checkout completed it.
shippingCentsbodyintegerShippingCents is the shipping charge, in whole cents.
statusbodystringStatus is "active" for a cart still being filled, "ordered" once checkout turned it into an order, and "discarded" when the shopper abandoned it.
storebodystringStore is the storefront the cart is being filled on.
subtotalCentsbodyintegerSubtotalCents is LineTotalCents less DiscountCents, in whole cents.
taxCentsbodyintegerTaxCents is the sales tax, in whole cents.
totalCentsbodyintegerTotalCents is what the shopper pays: subtotal plus shipping plus tax, in whole cents.
updatedAtbodystringUpdatedAt is when the cart was last amended, RFC3339.
userbodystringUser is the signed-in shopper this cart belongs to, empty for a guest cart.

Failure carries the platform error shape — see Errors.

Examples

hanzo has no subcommand for this operation — the CLI serves only what cloud's live route table confirms. Use HTTP or an SDK.


Commerce API · All Hanzo APIs · Interactive reference

How is this guide?

On this page