If the Cart contains a LineItem for a Product Variant with the same LineItemMode, Custom Fields, supply and distribution channel, then only the quantity of the existing Line Item is increased. If LineItem shippingDetails is set, it is merged. All addresses will be present afterwards and, for address keys present in both shipping details, the quantity will be summed up. A new Line Item is added when the externalPrice or externalTotalPrice is set in this update action. The LineItem price is set as described in Line Item price selection.

If the Tax Rate is not set, a [MissingTaxRateForCountry](ctp:api:type:MissingTaxRateForCountryError) error is returned.

If the Line Items do not have a Price according to the [Product](ctp:api:type:Product) `priceMode` value for a selected currency and/or country, Customer Group, or Channel, a [MatchingPriceNotFound](ctp:api:type:MatchingPriceNotFoundError) error is returned.
interface CartAddLineItemAction {
    action: "addLineItem";
    addedAt?: string;
    custom?: CustomFieldsDraft;
    distributionChannel?: ChannelResourceIdentifier;
    externalPrice?: _Money;
    externalTaxRate?: ExternalTaxRateDraft;
    externalTotalPrice?: ExternalLineItemTotalPrice;
    inventoryMode?: string;
    key?: string;
    perMethodExternalTaxRate?: MethodExternalTaxRateDraft[];
    productId?: string;
    quantity?: number;
    shippingDetails?: ItemShippingDetailsDraft;
    sku?: string;
    supplyChannel?: ChannelResourceIdentifier;
    variantId?: number;
}

Properties

action: "addLineItem"
addedAt?: string

Date and time (UTC) the Product Variant is added to the Cart. If not set, it defaults to the current date and time.

Optional for backwards compatibility reasons.

Custom Fields for the Line Item.

distributionChannel?: ChannelResourceIdentifier

Used to select a Product Price. The Channel must have the ProductDistribution ChannelRoleEnum. If the Cart is bound to a Store with distributionChannels set, the Channel must match one of the Store's distribution channels.

externalPrice?: _Money

Sets the LineItem price value, and the priceMode to ExternalPrice LineItemPriceMode.

externalTaxRate?: ExternalTaxRateDraft

Sets the external Tax Rate for the Line Item, if the Cart has the External TaxMode and Single ShippingMode. If the Cart has Multiple ShippingMode, the Tax Rate is accepted but ignored.

externalTotalPrice?: ExternalLineItemTotalPrice

Sets the LineItem price and totalPrice values, and the priceMode to ExternalTotal LineItemPriceMode.

inventoryMode?: string

Inventory mode specific to the Line Item only, and valid for the entire quantity of the Line Item. Set only if the inventory mode should be different from the inventoryMode specified on the Cart.

key?: string

User-defined unique identifier of the LineItem.

perMethodExternalTaxRate?: MethodExternalTaxRateDraft[]

Sets the external Tax Rates for individual Shipping Methods, if the Cart has the External TaxMode and Multiple ShippingMode.

productId?: string

id of the published Product.

Either the `productId` and `variantId`, or `sku` must be provided.
quantity?: number

Quantity of the Product Variant to add to the Cart.

shippingDetails?: ItemShippingDetailsDraft

Container for Line Item-specific addresses.

sku?: string

SKU of the ProductVariant.

Either the `productId` and `variantId`, or `sku` must be provided.

Used to identify Inventory entries that must be reserved. The Channel must have the InventorySupply ChannelRoleEnum.

variantId?: number

id of the ProductVariant in the Product. If not provided, the Master Variant is used.

Either the `productId` and `variantId`, or `sku` must be provided.