Skip to content

Basket Overall API

Feature name: basket

Api name: basketOverallApi


API used to perform actions related to actions regarding a basket summary section like setting a comment to order, clearing the products in the basket or retrieving a sum, delivery method or invalid sections of this part of the basket.

classDiagram
direction LR
    class selectActions["selectActions$"]
    class selectId["selectId$"]
    class selectComment["selectComment$"]
    class selectIsVatEu["selectIsVatEu$"]
    class selectDelivery["selectDelivery$"]
    class selectSum["selectSum$"]
    class selectSumWithoutPaymentAndShipping["selectSumWithoutPaymentAndShipping$"]
    class selectInvalidSections["selectInvalidSections$"]
    class selectSectionValidation["selectSectionValidation$"]


    BasketOverallAPI --> getActions
    BasketOverallAPI --> selectActions
    BasketOverallAPI --> selectId
    BasketOverallAPI --> getId
    BasketOverallAPI --> selectComment
    BasketOverallAPI --> getComment
    BasketOverallAPI --> selectIsVatEu
    BasketOverallAPI --> getIsVatEu
    BasketOverallAPI --> selectDelivery
    BasketOverallAPI --> getDelivery
    BasketOverallAPI --> selectSum
    BasketOverallAPI --> getSum
    BasketOverallAPI --> getSumWithoutPaymentAndShipping
    BasketOverallAPI --> selectSumWithoutPaymentAndShipping
    BasketOverallAPI --> cleanBasket
    BasketOverallAPI --> setComment
    BasketOverallAPI --> getInvalidSections
    BasketOverallAPI --> selectInvalidSections
    BasketOverallAPI --> getSectionValidation
    BasketOverallAPI --> selectSectionValidation

    class BasketOverallAPI {
        getActions() TBasketActions
        selectActions$() Observable~TBasketActions~
        getId() string
        selectId$() Observable~string~
        getComment() string
        selectComment$() Observable~string~
        getIsVatEu() boolean
        selectIsVatEu$() Observable~boolean~
        getDelivery() Delivery
        selectDelivery$() Observable~Delivery~
        getSum() FullPrice
        selectSum$() Observable~FullPrice~
        getSumWithoutPaymentAndShipping() FullPrice
        selectSumWithoutPaymentAndShipping$() Observable~FullPrice~
        cleanBasket() Promise~void~
        setComment(comment: string) Promise~void~
        getInvalidSections() TBasketInvalidSections
        selectInvalidSections$() Observable~TBasketInvalidSections~
        getSectionValidation() TSectionValidation
        selectSectionValidation$() Observable~TSectionValidation~
    }

    link getActions "../methods/get-actions/"
    link selectActions "../methods/select-actions/"
    link getId "../methods/get-id/"
    link selectId "../methods/select-id/"
    link getComment "../methods/get-comment/"
    link selectComment "../methods/select-comment/"
    link getIsVatEu "../methods/get-is-vat-eu/"
    link selectIsVatEu "../methods/select-is-vat-eu/"
    link getDelivery "../methods/get-delivery/"
    link selectDelivery "../methods/select-delivery/"
    link getSum "../methods/get-sum/"
    link selectSum "../methods/select-sum/"
    link getSumWithoutPaymentAndShipping "../methods/get-sum-without-payment-and-shipping/"
    link selectSumWithoutPaymentAndShipping "../methods/select-sum-without-payment-and-shipping/"
    link cleanBasket "../methods/clean-basket/"
    link setComment "../methods/set-comment/"
    link getInvalidSections "../methods/get-invalid-sections/"
    link selectInvalidSections "../methods/select-invalid-sections/"
    link getSectionValidation "../methods/get-section-validation/"
    link selectSectionValidation "../methods/select-section-validation/"

Get API

To get the Basket Overall API use its name basketOverallApi with the getApiSync method.

useStorefront(async (storefront) => {
    const basketOverallApi = storefront.getApiSync('basketOverallApi');
});

This API is not automatically initialized. Unless you initialize it by hand, you won't be able to fetch the API. To do it you can use the registerDynamic method from the Feature System API. Here is an example on how to do it:

useStorefront(async (storefront) => {
    const featureSystemApi = this.getApiSync('FeatureSystemApi');
    await featureSystemApi.registerDynamic('basket');

    const basketOverallApi = storefront.getApiSync('basketOverallApi');
});

Methods

  • getActions - retrieve a key value object with various basket actions
  • selectActions$ - select a key value object with various basket actions
  • getId - retrieve an id of a current basket
  • selectId$ - select an id of a current basket
  • getComment - retrieve the text from Comments to order field
  • selectComment$ - select the text from Comments to order field
  • getIsVatEu - retrieve whether the current order has obligations regarding the eu vat or not
  • selectIsVatEu$ - select whether the current order has obligations regarding the eu vat or not
  • getDelivery - retrieve an object containing information about a chosen delivery method of a current basket
  • selectDelivery$ - select an object containing information about a chosen delivery method of a current basket
  • getSum - retrieve information about a total sum of products in the current basket
  • selectSum$ - select information about a total sum of products in the current basket
  • getSumWithoutPaymentAndShipping - retrieve information about a total sum of products in the current basket excluding payment method and shipping costs
  • selectSumWithoutPaymentAndShipping$ - select information about a total sum of products in the current basket excluding payment method and shipping costs
  • cleanBasket - clear the products in the current basket
  • setComment - set a comment to order in the current basket
  • getInvalidSections - retrieve the incorrectly filled sections of the current basket
  • selectInvalidSections$ - select the incorrectly filled sections of the current basket
  • getSectionValidation - retrieve a validation for the basket summary section
  • selectSectionValidation$ - select a validation for the basket summary section

Example

In this example we make a basketOverallApi call to retrieve a current comment for the order.

useStorefront(async (storefront) => {
    const basketOverallApi = storefront.getApiSync('basketOverallApi');

    const comment = basketOverallApi.getComment();

    console.log('current comment: '. comment);
});

Example

In this example we make a basketOverallApi call to select a total sum of products in the basket without costs regarding the payment method and shipping.

useStorefront(async (storefront) => {
    const basketOverallApi = storefront.getApiSync('basketOverallApi');

    const sumWithoutPaymentAndShipping$ = basketOverallApi.selectSumWithoutPaymentAndShipping$();

    sumWithoutPaymentAndShipping$.subscribe((sumWithoutPaymentAndShipping) => {
        console.log('current sum without payment and shipping:'. sumWithoutPaymentAndShipping.grossValueFormatted);
    });
});

Example

In this example we make a basketOverallApi call to select the incorrectly filled sections of the current basket

useStorefront(async (storefront) => {
    const basketOverallApi = storefront.getApiSync('basketOverallApi');

    const invalidSections$ = basketOverallApi.selectInvalidSections$();

    invalidSections$.subscribe((invalidSections) => {
        console.log('currently invalid fields:');

        Object.entries(invalidSections).forEach(([section, validationError]) => {
            if (!validationError) return;

            console.log(`${section}: ${validationError}`);
        });
    });
});

Example

In this example we make a basketOverallApi call to clear the products in the basket.

useStorefront(async (storefront) => {
    const basketOverallApi = storefront.getApiSync('basketOverallApi');

    await basketOverallApi.cleanBasket();
});

Example

In this example we make a basketOverallApi call to set a comment to the order.

useStorefront(async (storefront) => {
    const basketOverallApi = storefront.getApiSync('basketOverallApi');

    await basketOverallApi.setComment('Please make sure to draw a kitten on the box');
});

Example

In this example we make a basketOverallApi call to get an action for changing a billing address in order to set its new value. We also use a getBillingAddress method from Basket Addresses API to get the action for setting the billing address with the retrieved action.

useStorefront(async (storefront) => {
    const basketAddressesApi = storefront.getApiSync('basketAddressesApi');
    const basketOverallApi = storefront.getApiSync('basketOverallApi');

    const changeBillingAddressAction = basketOverallApi.getActions().changeBillingAddress;


    await basketAddressesApi.setBillingAddress(changeBillingAddressAction, {
        isCompany: false,
        companyName: '',
        firstName: 'John',
        lastName: 'Snow',
        personalIdNumber: '',
        taxId: '',
        countryId: 'US',
        city: 'My City',
        postalCode: '12-345',
        street: 'example street 8',
        street2: '',
        phone: '123456789',
        state: '',
        useAsBillingAddress: false,
        createUserAccount: false
    });
});

Objects reference

Models reference

APIs reference