Order processing tutorial

Step 5. Add items to the cart

This step shows how to add a simple product, a downloadable product, and a bundle product to the cart.

These calls are performed on behalf of a customer, and the customer’s token is specified in the authorization header.

Use the V1/guest-carts/<cartId>/items endpoint to add items to the cart on behalf of a guest. Do not include an authorization token. The payload and response is same as the logged-in customer for all product types, except for from quote ID in the payload.

Add a simple product to a cart

To add a simple product to a cart, you must provide a sku, the quantity, and the quote ID, which was generated when the cart was created.

The following example adds an orange medium-sized Radiant women’s t-shirt (sku: WS12-M-Orange) to the cart.

Endpoint:

POST <host>/rest/<store_code>/V1/carts/mine/items

Headers:

Content-Type application/json

Authorization Bearer <customer token>

Payload:

1
2
3
4
5
6
7
{
  "cartItem": {
    "sku": "WS12-M-Orange",
    "qty": 1,
    "quote_id": "4"
  }
}

Response:

1
2
3
4
5
6
7
8
{
  "item_id": 7,
  "sku": "WS12-M-Orange",
  "qty": 1,
  "name": "Radiant Tee-M-Orange",
  "product_type": "simple",
  "quote_id": "4"
}

Add a downloadable product to a cart

The requirements for adding a downloadable product to a cart are the same as a simple product. You must specify the sku, the quantity, and quote ID.

The following example adds the downloadable product Advanced Pilates & Yoga (sku: 240-LV08)

Endpoint:

POST <host>/rest/<store_code>/V1/carts/mine/items

Headers:

Content-Type application/json

Authorization Bearer <customer token>

Payload:

1
2
3
4
5
6
7
{
  "cartItem": {
    "sku": "240-LV08",
    "qty": 1,
    "quote_id": "4"
  }
}

Response:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
  "item_id": 8,
  "sku": "240-LV08",
  "qty": 1,
  "name": "Advanced Pilates & Yoga (Strength)",
  "price": 18,
  "product_type": "downloadable",
  "quote_id": "4",
  "product_option": {
    "extension_attributes": {
      "downloadable_option": {
        "downloadable_links": [
          5
        ]
      }
    }
  }
}

Add a configurable product to a cart

To add a configurable product to a cart, you must specify the sku as well as the set of option_id/option_value pairs that make the product configurable.

In this example, we’ll add the Chaz Kangeroo Hoodie (sku: MH01) configurable product to the cart. This product comes in three colors (black, gray, and orange) and five sizes (XS, S, M, L, XL). In the sample data, the option_id values for Size and Color are 141 and 93, respectively. You can use the GET /V1/configurable-products/:sku/options/all call to determine the option_id values for the given SKU.

The GET /V1/configurable-products/:sku/children call returns information about each combination of color and size, 15 in all for MH01. The following sample shows the returned values for size and color for a small gray Chaz Kangeroo Hoodie.

1
2
3
4
5
6
7
8
9
10
11
12
{
  "custom_attributes": [
    {
      "attribute_code": "size",
      "value": "168"
    },
    {
      "attribute_code": "color",
      "value": "52"
    }
  ]
}

We now know the values for option_value for size and color are 168 and 52, so we’re ready to add the product to the cart.

Endpoint:

POST <host>/rest/<store_code>/V1/carts/mine/items

Headers:

Content-Type application/json

Authorization Bearer <customer token>

Payload:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
  "cartItem": {
    "sku": "MH01",
    "qty": 1,
    "quote_id": "4",
    "product_option": {
      "extension_attributes": {
        "configurable_item_options": [
          {
            "option_id": "93",
            "option_value": 52
          },
          {
            "option_id": "141",
            "option_value": 168
          }
        ]
      }
    },
    "extension_attributes": {}
  }
}

Response:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
    "item_id": 13,
    "sku": "MH01-S-Gray",
    "qty": 1,
    "name": "Chaz Kangeroo Hoodie",
    "price": 52,
    "product_type": "configurable",
    "quote_id": "4",
    "product_option": {
        "extension_attributes": {
            "configurable_item_options": [
                {
                    "option_id": "93",
                    "option_value": 52
                },
                {
                    "option_id": "141",
                    "option_value": 168
                }
            ]
        }
    }
}

Add a bundle product to a cart

The sample data provides one bundled product, the Sprite Yoga Companion Kit (sku: 24-WG080). The kit contains the following items:

  • Sprite Statis Ball in sizes 55 cm (sku: 24-WG081-blue), 65 cm (sku: 24-WG082-blue), or 75 cm (sku: 24-WG083-blue)
  • Sprite Foam Yoga brick (sku: 24-WG084)
  • Sprite Yoga Strap in lengths 6 ft (sku: 24-WG085), 8 ft (sku: 24-WG086), or 10 ft (sku: 24-WG087)
  • Sprite Foam Roller (sku: 24-WG088)

To add a bundle product to a cart, you must specify the sku of the bundle product, but not the individual items. You add individual items to the bundle product by specifying the id defined in the item’s product_links object. The product_links object primarily describes the ordering and placement of options on the customization page, but it also links an item’s sku and id to the sku of the bundle product.

The GET <host>/rest/<store_code>/V1/bundle-products/24-WG080/options/all call returns id values, as shown in the following simplified response:

Show code sample
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
[
  {
    "option_id": 1,
    "title": "Sprite Stasis Ball",
    "required": true,
    "type": "radio",
    "position": 1,
    "sku": "24-WG080",
    "product_links": [
      {
        "id": "1",
        "sku": "24-WG081-blue",
        "option_id": 1,
        "qty": 1
      },
      {
        "id": "2",
        "sku": "24-WG082-blue",
        "option_id": 1,
        "qty": 1
      },
      {
        "id": "3",
        "sku": "24-WG083-blue",
        "option_id": 1,
        "qty": 1
      }
    ]
  },
  {
    "option_id": 2,
    "title": "Sprite Foam Yoga Brick",
    "required": true,
    "type": "radio",
    "position": 2,
    "sku": "24-WG080",
    "product_links": [
      {
        "id": "4",
        "sku": "24-WG084",
        "option_id": 2,
        "qty": 1
      }
    ]
  },
  {
    "option_id": 3,
    "title": "Sprite Yoga Strap",
    "required": true,
    "type": "radio",
    "position": 3,
    "sku": "24-WG080",
    "product_links": [
      {
        "id": "5",
        "sku": "24-WG085",
        "option_id": 3,
        "qty": 1
      },
      {
        "id": "6",
        "sku": "24-WG086",
        "option_id": 3,
        "qty": 1
      },
      {
        "id": "7",
        "sku": "24-WG087",
        "option_id": 3,
        "qty": 1
      }
    ]
  },
  {
    "option_id": 4,
    "title": "Sprite Foam Roller",
    "required": true,
    "type": "radio",
    "position": 4,
    "sku": "24-WG080",
    "product_links": [
      {
        "id": "8",
        "sku": "24-WG088",
        "option_id": 4,
        "qty": 1
      }
    ]
  }
]

For this example, we’ll configure the Sprite Yoga Companion Kit as follows:

  • 65 cm Sprite Stasis Ball (id: 2)
  • Sprite Foam Yoga Brick (id: 4)
  • 8 ft Sprite Yoga strap (id: 6)
  • Sprite Foam Roller (id: 8)

Endpoint:

POST <host>/rest/<store_code>/V1/carts/mine/items

Headers:

Content-Type application/json

Authorization Bearer <customer token>

Payload:

Show code sample
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
{
    "cartItem": {
        "sku": "24-WG080",
        "qty": "1",
        "quote_id": "4",
        "product_option": {
            "extension_attributes": {
                "bundle_options": [
                    {
                        "option_id": 1,
                        "option_qty": 1,
                        "option_selections": [2]
                    },
                    {
                        "option_id": 2,
                        "option_qty": 1,
                        "option_selections": [4]
                    },
                    {
                        "option_id": 3,
                        "option_qty": 1,
                        "option_selections": [6]
                    },
                    {
                        "option_id": 4,
                        "option_qty": 1,
                        "option_selections": [8]
                    }
                ]
            }
        }
    }
}

Response:

Show code sample
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
{
  "item_id": 9,
  "sku": "24-WG080-24-WG084-24-WG088-24-WG082-blue-24-WG086",
  "qty": 1,
  "name": "Sprite Yoga Companion Kit",
  "price": 68,
  "product_type": "bundle",
  "quote_id": "4",
  "product_option": {
    "extension_attributes": {
      "bundle_options": [
        {
          "option_id": 1,
          "option_qty": 1,
          "option_selections": [
            2
          ]
        },
        {
          "option_id": 2,
          "option_qty": 1,
          "option_selections": [
            4
          ]
        },
        {
          "option_id": 3,
          "option_qty": 1,
          "option_selections": [
            6
          ]
        },
        {
          "option_id": 4,
          "option_qty": 1,
          "option_selections": [
            8
          ]
        }
      ]
    }
  }
}

Verify this step

Sign in as the customer and click on the shopping cart. All the items you added are displayed.