UNPKG

@spree/storefront-api-v2-sdk

Version:

Node module to easily integrate your JavaScript or TypeScript application with Spree Storefront API V2. You can create an entirely custom Storefront in JS/TS with this package including one page checkout, Single Page Apps, PWAs and so on.

444 lines (443 loc) 16.4 kB
import { Http } from '@spree/core-api-v2-sdk'; import type { IQuery, IToken, NoContentResult } from '@spree/core-api-v2-sdk'; import type { AddItem, CouponCode, EstimateShippingMethods, SetQuantity, AssociateCart, ChangeCurrency, EstimateShippingRates } from '../interfaces/endpoints/CartClass'; import type { EstimatedShippingRatesResult, IEstimatedShippingMethodsResult } from '../interfaces/EstimatedShippingMethod'; import type { IOrderResult } from '../interfaces/Order'; import type { AddItemOptions, ApplyCouponCodeOptions, AssociateGuestCartOptions, ChangeCurrencyOptions, CreateOptions, EmptyCartOptions, EstimateShippingRatesOptions, RemoveAllCouponsOptions, RemoveCouponCodeOptions, RemoveItemOptions, RemoveOptions, SetQuantityOptions, ShowOptions } from '../interfaces/Cart'; export default class Cart extends Http { /** * Creates a new Cart and returns its attributes. See [api docs](https://api.spreecommerce.org/docs/api-v2/6a57a5a49594f-create-a-cart). * * **Required token:** [Bearer token](../pages/tokens.html#bearer-token) - if logged in user * * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema) * * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema) * * **Example:** * ```ts * // Logged in user * const response = await client.cart.create({ * bearer_token: '7381273269536713689562374856' * }) * * // or guest user * const response = await client.cart.create() * ``` */ create(options?: CreateOptions): Promise<IOrderResult>; /** * @hidden * @deprecated Use the combined options signature instead. */ create(token?: IToken, params?: IQuery): Promise<IOrderResult>; /** * Returns contents of the cart. See [api docs](https://api.spreecommerce.org/docs/api-v2/b3A6MzE0Mjc0Ng-retrieve-a-cart). * * **Required token:** [Bearer token](../pages/tokens.html#bearer-token) or [Order token](../pages/tokens.html#order-token) * * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema) * * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema) * * **Example:** * ```ts * // Logged in user * const response = await client.cart.show({ * bearer_token: '7381273269536713689562374856' * }) * * // or guest user * const response = await client.cart.show({ * order_token: '7381273269536713689562374856' * }) * ``` */ show(options: ShowOptions): Promise<IOrderResult>; /** * @hidden * @deprecated Use the combined options signature instead. */ show(token: IToken, params?: IQuery): Promise<IOrderResult>; /** * Adds a Product Variant to the Cart. See [api docs](https://api.spreecommerce.org/docs/api-v2/b3A6MzE0Mjc0Nw-add-an-item-to-cart). * * **Required token:** [Bearer token](../pages/tokens.html#bearer-token) or [Order token](../pages/tokens.html#order-token) * * **Options schema:** * ```ts * interface options { * variant_id: string * quantity: number * options?: { * [key: string]: string * } * } * ``` * * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema) * * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema) * * **Example:** * ```ts * // Logged in user * const response = await client.cart.addItem({ * bearer_token: '7381273269536713689562374856', * variant_id: '1', * quantity: 1 * }) * * // or guest user * const response = await client.cart.addItem({ * order_token: '7381273269536713689562374856', * variant_id: '1', * quantity: 1 * }) * ``` */ addItem(options: AddItemOptions): Promise<IOrderResult>; /** * @hidden * @deprecated Use the combined options signature instead. */ addItem(token: IToken, params: AddItem): Promise<IOrderResult>; /** * Sets the quantity of a given line item. It has to be a positive integer greater than 0. See [api docs](https://api.spreecommerce.org/docs/api-v2/b3A6MzE0Mjc0OA-set-line-item-quantity). * * **Required token:** [Bearer token](../pages/tokens.html#bearer-token) or [Order token](../pages/tokens.html#order-token) * * **Options schema:** * ```ts * interface options { * line_item_id: string * quantity: number * } * ``` * * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema) * * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema) * * **Example:** * ```ts * // Logged in user * const response = await client.cart.setQuantity({ * bearer_token: '7381273269536713689562374856', * line_item_id: '9', * quantity: 100 * }) * * // or guest user * const response = await client.cart.setQuantity({ * order_token: '7381273269536713689562374856', * line_item_id: '9', * quantity: 100 * }) * ``` */ setQuantity(options: SetQuantityOptions): Promise<IOrderResult>; /** * @hidden * @deprecated Use the combined options signature instead. */ setQuantity(token: IToken, params: SetQuantity): Promise<IOrderResult>; /** * Removes Line Item from Cart. See [api docs](https://api.spreecommerce.org/docs/api-v2/8b7783ed322f1-remove-a-line-item). * * **Required token:** [Bearer token](../pages/tokens.html#bearer-token) or [Order token](../pages/tokens.html#order-token) * * **Options schema:** * ```ts * interface options { * id: string * } * ``` * * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema) * * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema) * * **Example:** * ```ts * // Logged in user * const response = await client.cart.removeItem({ * bearer_token: '7381273269536713689562374856', * id: '1' * }) * * // or guest user * const response = await client.cart.removeItem({ * order_token: '7381273269536713689562374856', * id: '1' * }) * ``` */ removeItem(options: RemoveItemOptions): Promise<IOrderResult>; /** * @hidden * @deprecated Use the combined options signature instead. */ removeItem(token: IToken, id: string, params?: IQuery): Promise<IOrderResult>; /** * Empties the Cart. See [api docs](https://api.spreecommerce.org/docs/api-v2/b3A6MzE0Mjc1MA-empty-the-cart). * * **Required token:** [Bearer token](../pages/tokens.html#bearer-token) or [Order token](../pages/tokens.html#order-token) * * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema) * * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema) * * **Example:** * ```ts * // Logged in user * const response = await client.cart.emptyCart({ * bearer_token: '7381273269536713689562374856' * }) * * // or guest user * const response = await client.cart.emptyCart({ * order_token: '7381273269536713689562374856' * }) * ``` */ emptyCart(options: EmptyCartOptions): Promise<IOrderResult>; /** * @hidden * @deprecated Use the combined options signature instead. */ emptyCart(token: IToken, params?: IQuery): Promise<IOrderResult>; /** * Removes the Cart. See [api docs](https://api.spreecommerce.org/docs/api-v2/b3A6MTcyNTA0NDc-delete-a-cart). * * **Required token:** [Bearer token](../pages/tokens.html#bearer-token) or [Order token](../pages/tokens.html#order-token) * * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema) * * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema) * * **Example:** * ```ts * // Logged in user * const response = await client.cart.remove({ * bearer_token: '7381273269536713689562374856' * }) * * // or guest user * const response = await client.cart.remove({ * order_token: '7381273269536713689562374856' * }) * ``` */ remove(options: RemoveOptions): Promise<NoContentResult>; /** * @hidden * @deprecated Use the combined options signature instead. */ remove(token: IToken): Promise<NoContentResult>; /** * Applies a coupon code to the Cart. See [api docs](https://api.spreecommerce.org/docs/api-v2/b3A6MzE0Mjc1MQ-apply-a-coupon-code). * * **Required token:** [Bearer token](../pages/tokens.html#bearer-token) or [Order token](../pages/tokens.html#order-token) * * **Options schema:** * ```ts * interface options { * coupon_code: string * } * ``` * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema) * * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema) * * **Example:** * ```ts * // Logged in user * const response = await client.cart.applyCouponCode({ * bearer_token: '7381273269536713689562374856', * coupon_code: 'promo_test' * }) * * // or guest user * const response = await client.cart.applyCouponCode({ * order_token: '7381273269536713689562374856', * coupon_code: 'promo_test' * }) * ``` */ applyCouponCode(options: ApplyCouponCodeOptions): Promise<IOrderResult>; /** * @hidden * @deprecated Use the combined options signature instead. */ applyCouponCode(token: IToken, params: CouponCode): Promise<IOrderResult>; /** * Removes a coupon code from the Cart. See [api docs](https://api.spreecommerce.org/docs/api-v2/b3A6MzE0Mjc1Mg-remove-a-coupon). * * **Required token:** [Bearer token](../pages/tokens.html#bearer-token) or [Order token](../pages/tokens.html#order-token) * * **Options schema:** * ```ts * interface options { * code?: string * } * ``` * * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema) * * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema) * * **Example:** * ```ts * // Logged in user * const response = await client.cart.removeCouponCode({ * bearer_token: '7381273269536713689562374856', * code: 'promo_test' * }) * * // or guest user * const response = await client.cart.removeCouponCode({ * order_token: '7381273269536713689562374856', * code: 'promo_test' * }) * ``` */ removeCouponCode(options: RemoveCouponCodeOptions): Promise<IOrderResult>; /** * @hidden * @deprecated Use the combined options signature instead. */ removeCouponCode(token: IToken, code: string, params?: IQuery): Promise<IOrderResult>; /** * Removes all coupon codes from the Cart. See [api docs](https://api.spreecommerce.org/docs/api-v2/b3A6MjM5NTU3NTg-remove-all-coupons). * * **Required token:** [Bearer token](../pages/tokens.html#bearer-token) or [Order token](../pages/tokens.html#order-token) * * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema) * * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema) * * **Example:** * ```ts * // Logged in user * const response = await client.cart.removeAllCoupons({ * bearer_token: '7381273269536713689562374856' * }) * * // or guest user * const response = await client.cart.removeAllCoupons({ * order_token: '7381273269536713689562374856' * }) * ``` */ removeAllCoupons(options: RemoveAllCouponsOptions): Promise<IOrderResult>; /** * @hidden * @deprecated Use the combined options signature instead. */ removeAllCoupons(token: IToken, params: IQuery): Promise<IOrderResult>; /** * @hidden * @deprecated Use {@link estimateShippingRates} instead. */ estimateShippingMethods(token: IToken, params: EstimateShippingMethods): Promise<IEstimatedShippingMethodsResult>; /** * Returns a list of Estimated Shipping Rates for Cart. See [api docs](https://api.spreecommerce.org/docs/api-v2/b3A6MzE0Mjc1Mw-list-estimated-shipping-rates). * * **Required token:** [Bearer token](../pages/tokens.html#bearer-token) or [Order token](../pages/tokens.html#order-token) * * **Options schema:** * ```ts * interface options { * country_iso: string * } * ``` * * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema) * * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema) * * **Example:** * ```ts * // Logged in user * const response = await client.cart.estimateShippingRates({ * bearer_token: '7381273269536713689562374856', * country_iso: 'USA' * }) * * // or guest user * const response = await client.cart.estimateShippingRates({ * order_token: '7381273269536713689562374856', * country_iso: 'USA' * }) * ``` */ estimateShippingRates(options: EstimateShippingRatesOptions): Promise<EstimatedShippingRatesResult>; /** * @hidden * @deprecated Use the combined options signature instead. */ estimateShippingRates(token: IToken, params: EstimateShippingRates): Promise<EstimatedShippingRatesResult>; /** * Associates a guest cart with the currently signed in user. See [api docs](https://api.spreecommerce.org/docs/api-v2/b3A6MjAxMTAyMzM-associate-a-cart-with-a-user). * * **Required token:** [Bearer token](../pages/tokens.html#bearer-token) * * **Options schema:** * ```ts * interface options { * guest_order_token: string * } * ``` * * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema) * * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema) * * **Example:** * ```ts * // Logged in user * const response = await client.cart.associateGuestCart({ * bearer_token: '7381273269536713689562374856', * guest_order_token: 'aebe2886d7dbba6f769e20043e40cfa3447e23ad9d8e82c632f60ed63a2f0df1' * }) * ``` */ associateGuestCart(options: AssociateGuestCartOptions): Promise<IOrderResult>; /** * @hidden * @deprecated Use the combined options signature instead. */ associateGuestCart(token: IToken, params: AssociateCart): Promise<IOrderResult>; /** * Changes the Cart's currency. See [api docs](https://api.spreecommerce.org/docs/api-v2/b3A6MjA2OTMwMDM-change-cart-currency). * * **Required token:** [Bearer token](../pages/tokens.html#bearer-token) or [Order token](../pages/tokens.html#order-token) * * **Options schema:** * ```ts * interface options { * new_currency: string * } * ``` * * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema) * * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema) * * **Example:** * ```ts * // Logged in user * const response = await client.cart.changeCurrency({ * bearer_token: '7381273269536713689562374856', * new_currency: 'CAD' * }) * ``` */ changeCurrency(options: ChangeCurrencyOptions): Promise<IOrderResult>; /** * @hidden * @deprecated Use the combined options signature instead. */ changeCurrency(token: IToken, params: ChangeCurrency): Promise<IOrderResult>; }