Purchasing Concessions for Delivery to Seat

In this article we will run through a basic process for finding concessions available at a theatre, and purchasing them with a credit card for delivery to seat (for express pickup refer to Purchasing Concessions for Express Pickup).

  1. Finding a performance
  2. Finding concessions at a theatre
  3. Creating an empty order
  4. Finding a delivery time
  5. Adding concessions items to the order
  6. Adding a credit card as payment
  7. Fulfilling the order

Finding a performance

To get started with purchasing delivery to seat concessions we will begin by selecting a theatre and a performance we would like to have concessions delivered to our seat for. In this guide we will be using AMC Town Center 20, and pulling the showtimes for today. We'll construct the url using Town Center 20's theatre number 38 and today's date, to keep things simple we will set the page size to one and just use the first result.

GET  /v2/theatres/38/showtimes/2-24-2017?page-size=1

Response

{
  "pageSize": 1,
  "pageNumber": 1,
  "count": 98,
  "_links": {
    "self": {
      "href": "https://api.amctheatres.com/v2/theatres/38/showtimes/2-24-2017?page-number=1&page-size=1",
      "templated": false
    },
    "next": {
      "href": "https://api.amctheatres.com/v2/theatres/38/showtimes/2-24-2017?page-number=2&page-size=1",
      "templated": false
    }
  },
  "_embedded": {
    "showtimes": [
      {
        "id": 52644359,
        "internalReleaseNumber": 57342,
        "performanceNumber": 24718,
        "movieId": 44762,
        "movieName": "The Lego Batman Movie",
        "sortableMovieName": "Lego Batman Movie, The",
        "genre": "ANIMATION",
        "showDateTimeUtc": "2017-02-24T16:00:00Z",
        "showDateTimeLocal": "2017-02-24T10:00:00",
        "sellUntilDateTimeUtc": "2017-02-24T16:10:00Z",
        "isSoldOut": false,
        "isAlmostSoldOut": false,
        "isCanceled": false,
        "utcOffset": "-06:00",
        "theatreId": 38,
        "auditorium": 9,
        "runTime": 105,
        "mpaaRating": "PG",
        "premiumFormat": "",
        "purchaseUrl": "https://www.amctheatres.com/showtimes/all/2017-02-24/towncenter/all/52644359",
        "mobilePurchaseUrl": "https://www.amctheatres.com/showtimes/all/2017-02-24/towncenter/all/52644359",
        "movieUrl": "https://www.amctheatres.com/movies/the-lego-batman-movie",
        "wwmReleaseNumber": 209280,
        "attributes": [
          {
            "code": "RECLINERSEATING",
            "name": "Premium Power Recliners",
            "description": "This auditorium has recliner seats."
          },
          {
            "code": "RESERVEDSEATING",
            "name": "Reserved Seating",
            "description": "Select your seat when you buy your tickets online, on our mobile app or at the theatre."
          },
          {
            "code": "CLOSEDCAPTION",
            "name": "Closed Caption",
            "description": "Closed Caption"
          }
        ],
        "ticketPrices": [
          {
            "price": 5.76,
            "type": "ADULT",
            "sku": "TICKET-RS-52644359-ADULT",
            "tax": 0.47
          },
          {
            "price": 5.76,
            "type": "CHILD",
            "sku": "TICKET-RS-52644359-CHILD",
            "agePolicy": "Age 2-12",
            "tax": 0.47
          },
          {
            "price": 5.76,
            "type": "SENIOR",
            "sku": "TICKET-RS-52644359-SENIOR",
            "agePolicy": "Age 60+",
            "tax": 0.47
          }
        ],
        "media": {
          "heroDesktopDynamic": "https://cdn.amctheatres.com/production/2/movies/44800/44762/MovieStills/25892.jpg",
          "heroMobileDynamic": "",
          "posterDynamic": "https://cdn.amctheatres.com/production/2/movies/44800/44762/MovieStills/26678.jpg",
          "posterAlternateDynamic": "",
          "poster3DDynamic": "",
          "posterIMAXDynamic": "",
          "trailerTeaserDynamic": "",
          "trailerAlternateDynamic": ""
        },
        "languages": {
          "spoken": "English"
        },
        "_links": {
          "self": {
            "href": "https://api.amctheatres.com/v2/showtimes/52644359",
            "templated": false
          },
          "https://api.amctheatres.com/rels/v2/movie": {
            "href": "https://api.amctheatres.com/v2/movies/44762",
            "templated": false
          },
          "https://api.amctheatres.com/rels/v2/theatre": {
            "href": "https://api.amctheatres.com/v2/theatres/38",
            "templated": false
          },
          "https://api.amctheatres.com/rels/v1/seating-layout": {
            "href": "https://api.amctheatres.com/v1/seating-layouts/38/24718",
            "templated": false
          },
          "https://api.amctheatres.com/rels/v2/seating-layout": {
            "href": "https://api.amctheatres.com/v2/seating-layouts/38/24718",
            "templated": false
          }
        }
      }
    ]
  }
}

We need to note the showtime id so that we can retrieve valid delivery times for the performance later in the process.

"id": 40451171

Finding concessions at a theatre

To get started with purchasing concessions we will begin by selecting the theatre from which we want to order concessions. In this tutorial we will be using AMC Town Center 20. We'll construct the url using Town Center 20's theatre number 38 and to keep things simple we will look at a shortened response which only displays the items we intend to purchase.

Please note that if you do not specify a page-size in the query string, the endpoint will default to a page-size of 10 and if all the items are not returned you will need to page through the results by specifying a page-number in the query string.

Also important to note, each SKU is theatre specific, meaning the SKU for Chicken Nachos at AMC Town Center 20 is different from the SKU for the same product at AMC Studio 30.

GET  /v1/theatres/38/concessions?page-size=2&page-number=1

Response

{
  "pageSize": 2,
  "pageNumber": 1,
  "count": 85,
  "_embedded": {
    "concessions": [      
      {
        "name": "Chicken Nachos",
        "displayName": "Chicken Nachos",
        "nutritionalInfo": "610-1000",
        "price": 8.48,
        "tax": 0.69,
        "taxGroupId": 11,
        "taxAtComboItemLevel": false,
        "SKU": "CONCESSIONS-12632",
        "prepTime": 37,
        "theatreId": 38,
        "concessionId": 8081287,
        "media": {
          "imageSmall": "http://cdn.amctheatres.com/concessions/8081287-small.png",
          "imageLarge": "http://cdn.amctheatres.com/concessions/8081287-large.png"
        },
        "_embedded": {
          "categories": [
            {
              "name": "Nachos",
              "level": 2,
              "sortOrder": 1,
              "productSortOrder": 1,
              "media": {
                "imageSmall": "http://cdn.amctheatres.com/concessions/categories/25-small.png",
                "imageLarge": "http://cdn.amctheatres.com/concessions/categories/25-large.png"
              },
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/theatres/38/concessions/categories/nachos",
                  "templated": false
                },
                "https://api.amctheatres.com/rels/v1/concessions": {
                  "href": "https://api.amctheatres.com/v1/theatres/38/concessions?category=nachos",
                  "templated": false
                }
              }
            },
            {
              "name": "Entrees",
              "level": 1,
              "sortOrder": 4,
              "media": {
                "imageSmall": "http://cdn.amctheatres.com/concessions/categories/5-small.png",
                "imageLarge": "http://cdn.amctheatres.com/concessions/categories/5-large.png"
              },
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/theatres/38/concessions/categories/entrees",
                  "templated": false
                },
                "https://api.amctheatres.com/rels/v1/concessions": {
                  "href": "https://api.amctheatres.com/v1/theatres/38/concessions?category=entrees",
                  "templated": false
                }
              }
            }
          ],
          "modifierGroups": [
            {
              "groupName": "Nacho Toppings",
              "required": false,
              "_embedded": {
                "modifiers": [
                  {
                    "name": "No Guacamole ",
                    "displayName": "No Guacamole (***Nacho only)",
                    "SKU": "CONCESSIONS-42913",
                    "price": 0,
                    "tax": 0,
                    "_links": {
                      "self": {
                        "href": "https://api.amctheatres.com/v1/concessions/42913",
                        "templated": false
                      }
                    }
                  },
                  {
                    "name": "No Sour Cream ",
                    "displayName": "No Sour Cream (***Nacho only)",
                    "SKU": "CONCESSIONS-42914",
                    "price": 0,
                    "tax": 0,
                    "_links": {
                      "self": {
                        "href": "https://api.amctheatres.com/v1/concessions/42914",
                        "templated": false
                      }
                    }
                  }
                ]
              },
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/theatres/38/concessions/groups/170",
                  "templated": false
                },
                "https://api.amctheatres.com/rels/v1/concessions": {
                  "href": "https://api.amctheatres.com/v1/theatres/38/concessions?group=nacho+toppings",
                  "templated": false
                }
              }
            }
          ]
        },
        "_links": {
          "self": {
            "href": "https://api.amctheatres.com/v1/concessions/12632",
            "templated": false
          },
          "https://api.amctheatres.com/rels/v2/media": {
            "href": "https://api.amctheatres.com/v1/media/concessions/8081287/{media-type}",
            "templated": true
          },
          "https://api.amctheatres.com/rels/v2/theatre": {
            "href": "https://api.amctheatres.com/v1/theatres/38",
            "templated": false
          }
        }
      },
      {
        "name": "Combo #2- 2 Fountain Drinks",
        "displayName": "w/ Fountain",
        "nutritionalInfo": "838-2878",
        "size": "Large",
        "price": 21.76,
        "tax": 1.77,
        "taxGroupId": 11,
        "taxAtComboItemLevel": false,
        "SKU": "CONCESSIONS-3600",
        "prepTime": 37,
        "theatreId": 38,
        "concessionId": 597880,
        "media": {
          "imageSmall": "http://cdn.amctheatres.com/concessions/597880-small.png",
          "imageLarge": "http://cdn.amctheatres.com/concessions/597880-large.png"
        },
        "groups": [
          {
            "name": "Combo #2 Upsell Group",
            "media": {
              "imageSmall": "http://cdn.amctheatres.com/concessions/groups/4000001-small.png",
              "imageLarge": "http://cdn.amctheatres.com/concessions/groups/4000001-large.png"
            }
          }
        ],
        "_embedded": {
          "categories": [
            {
              "name": "Combo 2 - 1 LG Popcorn + 2 LG Drinks",
              "level": 2,
              "sortOrder": 2,
              "productSortOrder": 1,
              "media": {
                "imageSmall": "http://cdn.amctheatres.com/concessions/categories/9-small.png",
                "imageLarge": "http://cdn.amctheatres.com/concessions/categories/9-large.png"
              },
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/theatres/38/concessions/categories/combo+2+-+1+lg+popcorn+%2b+2+lg+drinks",
                  "templated": false
                },
                "https://api.amctheatres.com/rels/v1/concessions": {
                  "href": "https://api.amctheatres.com/v1/theatres/38/concessions?category=combo+2+-+1+lg+popcorn+%2b+2+lg+drinks",
                  "templated": false
                }
              }
            },
            {
              "name": "Combos",
              "level": 1,
              "sortOrder": 1,
              "media": {
                "imageSmall": "http://cdn.amctheatres.com/concessions/categories/2-small.png",
                "imageLarge": "http://cdn.amctheatres.com/concessions/categories/2-large.png"
              },
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/theatres/38/concessions/categories/combos",
                  "templated": false
                },
                "https://api.amctheatres.com/rels/v1/concessions": {
                  "href": "https://api.amctheatres.com/v1/theatres/38/concessions?category=combos",
                  "templated": false
                }
              }
            }
          ],
          "comboComponents": [
            {
              "name": "Drink Large",
              "sku": "CONCESSIONS-19816",
              "type": "Concession",
              "quantity": 2,
              "sortOrder": 0,
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/concessions/19816",
                  "templated": false
                }
              }
            },
            {
              "name": "Popcorn Large",
              "sku": "CONCESSIONS-22739",
              "type": "Concession",
              "quantity": 1,
              "sortOrder": 0,
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/concessions/22739",
                  "templated": false
                }
              }
            }
          ]
        },
        "_links": {
          "self": {
            "href": "https://api.amctheatres.com/v1/concessions/3600",
            "templated": false
          },
          "https://api.amctheatres.com/rels/v2/media": {
            "href": "https://api.amctheatres.com/v1/media/concessions/597880/{media-type}",
            "templated": true
          },
          "https://api.amctheatres.com/rels/v2/theatre": {
            "href": "https://api.amctheatres.com/v1/theatres/38",
            "templated": false
          }
        }
      }
    ]
  },
  "_links": {
    "self": {
      "href": "https://api.amctheatres.com/v1/theatres/38/concessions?page-number=1&page-size=2",
      "templated": false
    }
  }
}
                    

The response above provides us with the blueprint for ordering the desired concessions items just the way we want. If we want to add Chicken Nachos to the order we will need to make note of it's SKU:

"SKU": "CONCESSIONS-12632"

Some items, such as Chicken Nachos can be modified. How an item can be modified is described within the "modifierGroups" section, certain items will require one or more modifier selections. In this example, you can modify the Chicken Nachos by specifying "No Gaucomole" or "No Sour Cream", neither of which are required. If we want "No Sour Cream" we will need to note the SKU:

"SKU": "CONCESSIONS-42914"

Please note: The prices on concessions are not final and are for display only.


Creating an empty order

To create a basic guest order we just need to send a quick post to the order service with an email address:

POST  /v3/orders

Request

{
    "email": "[email protected]"
}
                    

Response

HTTP/1.1 201 Created
Location: https://api.amctheatres.com/v3/orders/98096
                    

Assuming our email address is valid we should get back a 201 (created) response, and a Location header value which is the base URI for all operations we can perform on the order.

Location: https://api.amctheatres.com/v3/orders/98096 

Following the new Location Url found in the Location Header we get our empty order and can use the hypermedia links to complete the order.

GET  /v3/orders/98096

Response

{
  "email": "[email protected]",
  "status": "Pending",
  "createdDateUtc": "2016-04-8T08:33:14.513Z",
  "total": 0.00,
  "subtotal": 0.0,
  "paid": 0.0,
  "token": "92e325ab-2b96-429f-ae67-3815a1b3449b",
  "paymentOptions": [
    "creditCard",
    "giftCard"
  ],
  "_embedded": {
    "products": [],
    "payments": []
  },
  "_links": {
    "self": {
      "href": "https://api.amctheatres.com/v3/orders/98096",
      "templated": false
    },
    "https://api.amctheatres.com/rels/v3/order-payments": {
      "href": "https://api.amctheatres.com/v3/orders/98096/payments",
      "templated": false
    },
    "https://api.amctheatres.com/rels/v3/order-products": {
      "href": "https://api.amctheatres.com/v3/orders/98096/products",
      "templated": false
    },
    "https://api.amctheatres.com/rels/v3/order-fulfillment": {
      "href": "https://api.amctheatres.com/v3/orders/98096/fulfill",
      "templated": false
    }
  }
}
                    

As you can see in the above example, we provide a list of links to endpoints (payments, products, and fulfill) which allow you to perform order actions or review the order (self).


Finding a delivery time

Now we need to find an acceptable delivery time for specifying when we want to receive our concessions items. The delivery time tells the kitchen when to have your concessions delivered to your seat. You can obtain a list of delivery times by issuing the following request which specifies the theatre, year, month and day.

GET  /v1/showtimes/40451171/concession-delivery-times

Response

                        {
  "showtimeId": 40451171,
  "deliveryTimes": [
    {
      "deliveryDateTimeLocal": "2016-04-08T10:35:00",
      "available": 1
    },
    {
      "deliveryDateTimeLocal": "2016-04-08T10:45:00",
      "available": 2
    },
    {
      "deliveryDateTimeLocal": "2016-04-08T10:55:00",
      "available": 6
    },
    {
      "deliveryDateTimeLocal": "2016-04-08T11:05:00",
      "available": 8
    },
    {
      "deliveryDateTimeLocal": "2016-04-08T11:15:00",
      "available": 7
    }
  ]
}
                    

Make note of the desired delivery time and make sure that there are spots available. The following time has 6 available spots so we know the theatre's kitchen will have staff available to prepare and deliver the order.

"pickupDateTimeLocal": "2016-04-08T10:55:00"

Adding Chicken Nachos with No Sour Cream

Now that we have our base order in addition to the SKU for the Chicken Nachos (the top-level product), and the SKU for the No Sour Cream modifier, we're ready to add them to our order with some additional information about how we would like to receive the order after fulfillment.

We require you to include the next 5 fields for each top-level/parent delivery to seat concessions item. First, the ConcessionOrderName value which specifies who the order is for (and whom it is to be delivered to, i.e. the customer's firstname):

"ConcessionOrderName": "Stephen"

Secondly the DeliveryType. There are two methods of delivery: ExpressPickup and DeliveryToSeat, you must choose one and specify it by passing the value in DeliveryType field. ExpressPickup orders require fewer field values to be specified which you can see in the guide to Purchasing Concessions for Express Pickup.

"DeliveryType": "DeliveryToSeat"

Next you must set a DeliveryDateTimeLocal value which we obtained in the previous step.

"DeliveryDateTimeLocal": "2016-04-08T10:55:00"

Differing from ExpressPickup, we must provide a DeliveryShowtimeId value (which we obtained in step #1):

"DeliveryShowtimeId": 40451171

Lastly, and also differing from ExpressPickup, we must provide the a DeliverySeatName value to indicate to the staff where the recipient of the order is seated:

"DeliverySeatName": "A10"

Now we're ready to add the Chicken Nachos and No Sour Cream modifier to the order:

POST  /v3/orders/98096/products

Request

{
    "SKU": "CONCESSIONS-12632",
    "Quantity": 1,
    "ConcessionOrderName": "Stephen",
    "DeliveryType": "DeliveryToSeat",
    "DeliveryDateTimeLocal": "2016-04-08T10:55:00",
    "DeliveryShowtimeId": 40451171,
    "DeliverySeatName": "A10",
    "Modifiers": [
        { 
            "SKU": "CONCESSIONS-42914",
            "Quantity": 1
        }
    ]
}
                    

Response

HTTP/1.1 201 Created
Location: https://api.amctheatres.com/v3/orders/98096/products/1
                    

Next we pull down the updated order and find our new product is added inside the embedded products list with a status of "Held" and our subtotal has increased to 8.48 and the total to 9.17.

GET  /v3/orders/98096

Response

{
  "email": "[email protected]",
  "status": "Pending",
  "createdDateUtc": "2016-04-8T08:33:14.513Z",
  "total": 9.17,
  "subtotal": 8.48,
  "paid": 0,
  "token": "92e325ab-2b96-429f-ae67-3815a1b3449b",
  "paymentOptions": [
    "creditCard",
    "giftCard"
  ],
  "expirationDateUtc": "2016-04-8T08:40:14.513Z",
  "_embedded": {
    "products": [
      {
        "sku": "CONCESSIONS-12632",
        "quantity": 1,
        "status": "Held",
        "cost": 8.48,
        "tax": 0.69,
        "name": "Chicken Nachos",
        "theatre": "AMC Town Center 20",
        "theatreId": 38,
        "concessionOrderName": "Stephen",
        "deliveryType": "DeliveryToSeat",
        "deliveryDateTimeLocal": "2016-04-08T10:55:00",
        "deliveryShowtimeId": 40451171,
        "deliverySeatName": "A10",
        "components": [],
        "modifiers": [
          {
            "name": "No Sour Cream",
            "sku": "CONCESSIONS-42914",
            "status": "Held",
            "cost": 0,
            "tax": 0,
            "token": "628b8e0d-6b1e-4631-9035-139e90dd24f4"
          }
        ],
        "token": "628b8e0d-6b1e-4631-9035-139e90dd24f4",
        "fees": [],
        "_links": {
          "self": {
            "href": "https://api.amctheatres.com/v3/orders/98096/products/1",
            "templated": false
          }
        },
        "lineItemNumber": 1
      }
    ],
    "payments": []
  },
  "_links": {
    "self": {
      "href": "https://api.amctheatres.com/v3/orders/98096",
      "templated": false
    },
    "https://api.amctheatres.com/rels/v3/order-payments": {
      "href": "https://api.amctheatres.com/v3/orders/98096/payments",
      "templated": false
    },
    "https://api.amctheatres.com/rels/v3/order-products": {
      "href": "https://api.amctheatres.com/v3/orders/98096/products",
      "templated": false
    }
  }
}                       
                    

Adding a Combo with 2 Fountain Drinks (with flavor modifiers) and a Popcorn

Now that we've seen an example of how to add a standard product with modifier to our order, let's have a look at how one adds a combo with its components which also have modifiers.

We will refer back to the Step #1 where we retrieved the list of concessions for AMC Town Center 20. The SKU for the combo we wish to order is:

CONCESSIONS-3600

Next we need to identify the quanties of the component SKUs which are listed in the "comboComponents" section. We can see that there are 2 Drink Large components which have the SKU:

CONCESSIONS-19816

And lastly there is a single Popcorn Large component with the SKU:

CONCESSIONS-22739

Now we need to check if these components have any required modifiers by issuing a GET request against the URL provided in their self links, so for the 2x Large Drinks we can see that there is a required "Freestyle Flavors" modifier group within the "modifierGroups" list:

GET  /v1/concessions/19816

Response

{
  "name": "Drink Large",
  "displayName": "Large",
  "nutritionalInfo": "0-1020",
  "size": "Large",
  "price": 6.52,
  "tax": 0.53,
  "taxGroupId": 11,
  "taxAtComboItemLevel": false,
  "sku": "CONCESSIONS-19816",
  "prepTime": 37,
  "theatreId": 38,
  "concessionId": 19816,
  "media": {
    "imageSmall": "https://cdn.amctheatres.com/concessions/19816-small.png",
    "imageLarge": "https://cdn.amctheatres.com/concessions/19816-large.png"
  },
  "_embedded": {
    "categories": [
      {
        "name": "Fountain",
        "level": 2,
        "sortOrder": 1,
        "productSortOrder": 1,
        "media": {
          "imageSmall": "https://cdn.amctheatres.com/concessions/categories/17-small.png",
          "imageLarge": "https://cdn.amctheatres.com/concessions/categories/17-large.png"
        },
        "_links": {
          "self": {
            "href": "https://api.amctheatres.com/v1/theatres/38/concessions/categories/fountain",
            "templated": false
          },
          "https://api.amctheatres.com/rels/v1/concessions": {
            "href": "https://api.amctheatres.com/v1/theatres/38/concessions?category=fountain",
            "templated": false
          }
        }
      },
      {
        "name": "Beverages",
        "level": 1,
        "sortOrder": 3,
        "media": {
          "imageSmall": "https://cdn.amctheatres.com/concessions/categories/4-small.png",
          "imageLarge": "https://cdn.amctheatres.com/concessions/categories/4-large.png"
        },
        "_links": {
          "self": {
            "href": "https://api.amctheatres.com/v1/theatres/38/concessions/categories/beverages",
            "templated": false
          },
          "https://api.amctheatres.com/rels/v1/concessions": {
            "href": "https://api.amctheatres.com/v1/theatres/38/concessions?category=beverages",
            "templated": false
          }
        }
      }
    ],
    "modifierGroups": [
      {
        "groupName": "Freestyle Flavors",
        "required": true,
        "_embedded": {
          "modifiers": [
            {
              "name": "Coca-Cola",
              "displayName": "Coca-Cola",
              "sku": "CONCESSIONS-54864",
              "price": 0,
              "tax": 0,
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/concessions/54864",
                  "templated": false
                }
              }
            },
            {
              "name": "Coca-Cola Cherry",
              "displayName": "Coca-Cola Cherry",
              "sku": "CONCESSIONS-54865",
              "price": 0,
              "tax": 0,
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/concessions/54865",
                  "templated": false
                }
              }
            },
            {
              "name": "Coca-Cola Cherry Vanilla",
              "displayName": "Coca-Cola Cherry Vanilla",
              "sku": "CONCESSIONS-54866",
              "price": 0,
              "tax": 0,
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/concessions/54866",
                  "templated": false
                }
              }
            },
            {
              "name": "Coca-Cola Vanilla",
              "displayName": "Coca-Cola Vanilla",
              "sku": "CONCESSIONS-42903",
              "price": 0,
              "tax": 0,
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/concessions/42903",
                  "templated": false
                }
              }
            },
            {
              "name": "Diet Coke",
              "displayName": "Diet Coke",
              "sku": "CONCESSIONS-55481",
              "price": 0,
              "tax": 0,
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/concessions/55481",
                  "templated": false
                }
              }
            },
            {
              "name": "Diet Coke Cherry",
              "displayName": "Diet Coke Cherry",
              "sku": "CONCESSIONS-55482",
              "price": 0,
              "tax": 0,
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/concessions/55482",
                  "templated": false
                }
              }
            },
            {
              "name": "Coke Zero",
              "displayName": "Coke Zero",
              "sku": "CONCESSIONS-55203",
              "price": 0,
              "tax": 0,
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/concessions/55203",
                  "templated": false
                }
              }
            },
            {
              "name": "CF Diet Coke",
              "displayName": "CF Diet Coke",
              "sku": "CONCESSIONS-43283",
              "price": 0,
              "tax": 0,
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/concessions/43283",
                  "templated": false
                }
              }
            },
            {
              "name": "Sprite",
              "displayName": "Sprite",
              "sku": "CONCESSIONS-43286",
              "price": 0,
              "tax": 0,
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/concessions/43286",
                  "templated": false
                }
              }
            },
            {
              "name": "Sprite Cherry",
              "displayName": "Sprite Cherry",
              "sku": "CONCESSIONS-43256",
              "price": 0,
              "tax": 0,
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/concessions/43256",
                  "templated": false
                }
              }
            },
            {
              "name": "Sprite Strawberry",
              "displayName": "Sprite Strawberry",
              "sku": "CONCESSIONS-43258",
              "price": 0,
              "tax": 0,
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/concessions/43258",
                  "templated": false
                }
              }
            },
            {
              "name": "Sprite Zero",
              "displayName": "Sprite Zero",
              "sku": "CONCESSIONS-43254",
              "price": 0,
              "tax": 0,
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/concessions/43254",
                  "templated": false
                }
              }
            },
            {
              "name": "Mello Yello",
              "displayName": "Mello Yello",
              "sku": "CONCESSIONS-55217",
              "price": 0,
              "tax": 0,
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/concessions/55217",
                  "templated": false
                }
              }
            },
            {
              "name": "Mello Yello Zero",
              "displayName": "Mello Yello Zero",
              "sku": "CONCESSIONS-55194",
              "price": 0,
              "tax": 0,
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/concessions/55194",
                  "templated": false
                }
              }
            },
            {
              "name": "Barqs Root Beer",
              "displayName": "Barqs Root Beer",
              "sku": "CONCESSIONS-54877",
              "price": 0,
              "tax": 0,
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/concessions/54877",
                  "templated": false
                }
              }
            },
            {
              "name": "Barqs Root Beer Vanilla",
              "displayName": "Barqs Root Beer Vanilla",
              "sku": "CONCESSIONS-54878",
              "price": 0,
              "tax": 0,
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/concessions/54878",
                  "templated": false
                }
              }
            },
            {
              "name": "Diet Barqs Root Beer",
              "displayName": "Diet Barqs Root Beer",
              "sku": "CONCESSIONS-55207",
              "price": 0,
              "tax": 0,
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/concessions/55207",
                  "templated": false
                }
              }
            },
            {
              "name": "Fanta Orange",
              "displayName": "Fanta Orange",
              "sku": "CONCESSIONS-54890",
              "price": 0,
              "tax": 0,
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/concessions/54890",
                  "templated": false
                }
              }
            },
            {
              "name": "Fanta Strawberry",
              "displayName": "Fanta Strawberry",
              "sku": "CONCESSIONS-55241",
              "price": 0,
              "tax": 0,
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/concessions/55241",
                  "templated": false
                }
              }
            },
            {
              "name": "Pibb Xtra",
              "displayName": "Pibb Xtra",
              "sku": "CONCESSIONS-362970",
              "price": 0,
              "tax": 0,
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/concessions/362970",
                  "templated": false
                }
              }
            },
            {
              "name": "Lemonade",
              "displayName": "Lemonade",
              "sku": "CONCESSIONS-362972",
              "price": 0,
              "tax": 0,
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/concessions/362972",
                  "templated": false
                }
              }
            },
            {
              "name": "Hi-C Fruit Punch",
              "displayName": "Hi-C Fruit Punch",
              "sku": "CONCESSIONS-362980",
              "price": 0,
              "tax": 0,
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/concessions/362980",
                  "templated": false
                }
              }
            },
            {
              "name": "Seagrams Gin Ale",
              "displayName": "Seagrams Gin Ale",
              "sku": "CONCESSIONS-362982",
              "price": 0,
              "tax": 0,
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/concessions/362982",
                  "templated": false
                }
              }
            },
            {
              "name": "Hi-C Orange",
              "displayName": "Hi-C Orange",
              "sku": "CONCESSIONS-362992",
              "price": 0,
              "tax": 0,
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/concessions/362992",
                  "templated": false
                }
              }
            },
            {
              "name": "Coke Zero Cherry",
              "displayName": "Coke Zero Cherry",
              "sku": "CONCESSIONS-363000",
              "price": 0,
              "tax": 0,
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/concessions/363000",
                  "templated": false
                }
              }
            },
            {
              "name": "Pibb Xtra Cherry",
              "displayName": "Pibb Xtra Cherry",
              "sku": "CONCESSIONS-363002",
              "price": 0,
              "tax": 0,
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/concessions/363002",
                  "templated": false
                }
              }
            },
            {
              "name": "Pibb Xtra Cherry Vanilla",
              "displayName": "Pibb Xtra Cherry Vanilla",
              "sku": "CONCESSIONS-363010",
              "price": 0,
              "tax": 0,
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/concessions/363010",
                  "templated": false
                }
              }
            }
          ]
        },
        "_links": {
          "self": {
            "href": "https://api.amctheatres.com/v1/theatres/38/concessions/groups/189",
            "templated": false
          },
          "https://api.amctheatres.com/rels/v1/concessions": {
            "href": "https://api.amctheatres.com/v1/theatres/38/concessions?group=freestyle+flavors",
            "templated": false
          }
        }
      }
    ]
  },
  "_links": {
    "self": {
      "href": "https://api.amctheatres.com/v1/concessions/19816",
      "templated": false
    },
    "https://api.amctheatres.com/rels/v2/media": {
      "href": "https://api.amctheatres.com/v1/media/concessions/91499/{media-type}",
      "templated": true
    },
    "https://api.amctheatres.com/rels/v2/theatre": {
      "href": "https://api.amctheatres.com/v1/theatres/38",
      "templated": false
    }
  }
}
                    

So if we want a Coca-Cola we need to make not of the SKU:

CONCESSIONS-54864

And if we want the second drink to be a Lemonade we note the SKU:

"CONCESSIONS-362972

All that's left to do now is to submit the request to add our new product which specifies the combo, it's components, and it's component's modifiers:

POST  /v3/orders/98096/products

Request

{
    "SKU": "CONCESSIONS-3600",
    "Quantity": 1,
    "ConcessionOrderName": "Stephen",
    "DeliveryType": "DeliveryToSeat",
    "DeliveryDateTimeLocal": "2016-04-08T10:55:00",
    "DeliveryShowtimeId": 40451171,
    "DeliverySeatName": "A10",
    "Components": [
        {
            "SKU": "CONCESSIONS-19816",
            "Quantity": 1,
            "Modifiers": [
                { 
                    "SKU": "CONCESSIONS-54864",
                    "Quantity": 1
                }
            ]
        },
        {
            "SKU": "CONCESSIONS-19816",
            "Quantity": 1,
            "Modifiers": [
                { 
                    "SKU": "CONCESSIONS-362972",
                    "Quantity": 1
                }
            ]
        },
        {
            "SKU": "CONCESSIONS-22739",
            "Quantity": 1
        }
    ]
}
                    

Response

HTTP/1.1 201 Created
Location: https://api.amctheatres.com/v3/orders/98096/products/1
                    

Next we pull down the updated order and find our new product is now represented within the embedded products list with a status of "Held" and our subtotal has increased to 27.95 and the total to 30.36.

GET  /v3/orders/98096

Response

{
  "email": "[email protected]",
  "status": "Pending",
  "createdDateUtc": "2016-04-8T08:33:14.513Z",
  "total": 30.36,
  "subtotal": 27.95,
  "paid": 0,
  "token": "92e325ab-2b96-429f-ae67-3815a1b3449b",
  "paymentOptions": [
    "creditCard",
    "giftCard"
  ],
  "expirationDateUtc": "2016-04-8T08:40:14.513Z",
  "_embedded": {
    "products": [
      {
        "sku": "CONCESSIONS-12632",
        "quantity": 1,
        "status": "Held",
        "cost": 8.48,
        "tax": 0.69,
        "name": "Chicken Nachos",
        "theatre": "AMC Town Center 20",
        "theatreId": 38,
        "concessionOrderName": "Stephen",
        "deliveryType": "DeliveryToSeat",
        "deliveryDateTimeLocal": "2016-04-08T10:55:00",
        "deliveryShowtimeId": 40451171,
        "deliverySeatName": "A10",
        "components": [],
        "modifiers": [
          {
            "name": "No Sour Cream",
            "sku": "CONCESSIONS-42914",
            "status": "Held",
            "cost": 0,
            "tax": 0,
            "token": "628b8e0d-6b1e-4631-9035-139e90dd24f4"
          }
        ],
        "token": "628b8e0d-6b1e-4631-9035-139e90dd24f4",
        "fees": [],
        "_links": {
          "self": {
            "href": "https://api.amctheatres.com/v3/orders/98096/products/1",
            "templated": false
          }
        },
        "lineItemNumber": 1
      },
      {
        "sku": "CONCESSIONS-3600",
        "status": "Held",
        "cost": 21.19,
        "tax": 1.72,
        "name": "Combo #2- 2 Fountain Drinks",
        "theatre": "AMC Town Center 20",
        "theatreId": 38,
        "concessionOrderName": "Stephen",
        "deliveryType": "DeliveryToSeat",
        "deliveryDateTimeLocal": "2016-04-08T10:55:00",
        "deliveryShowtimeId": 40451171,
        "deliverySeatName": "A10",
        "components": [
          {
            "name": "Drink Large",
            "token": "37bfc6b8-c077-46a9-99a6-5ddddbbded77",
            "sku": "CONCESSIONS-19816",
            "modifiers": [
              {
                "name": "Coca-Cola",
                "sku": "CONCESSIONS-54864",
                "status": "Held",
                "cost": 0,
                "tax": 0,
                "token": "37bfc6b8-c077-46a9-99a6-5ddddbbded77"
              }
            ]
          },
          {
            "name": "Drink Large",
            "token": "60f39073-0a40-4a02-a40a-13336eb70768",
            "sku": "CONCESSIONS-19816",
            "modifiers": [
              {
                "name": "Lemonade",
                "sku": "CONCESSIONS-362972",
                "status": "Held",
                "cost": 0,
                "tax": 0,
                "token": "60f39073-0a40-4a02-a40a-13336eb70768"
              }
            ]
          },
          {
            "name": "Popcorn Large",
            "token": "cfab6a4a-8a3b-44ac-9949-cc7d169a3cae",
            "sku": "CONCESSIONS-22739",
            "modifiers": []
          }
        ],
        "modifiers": [],
        "token": "5d3c2b28-9b79-47c6-9ef0-7f72fffca185",
        "fees": [],
        "_links": {
          "self": {
            "href": "https://api.amctheatres.com/v3/orders/98096/products/2",
            "templated": false
          }
        },
        "lineItemNumber": 2
      }
    ],
    "payments": []
  },
  "_links": {
    "self": {
      "href": "https://api.amctheatres.com/v3/orders/98096",
      "templated": false
    },
    "https://api.amctheatres.com/rels/v3/order-payments": {
      "href": "https://api.amctheatres.com/v3/orders/98096/payments",
      "templated": false
    },
    "https://api.amctheatres.com/rels/v3/order-products": {
      "href": "https://api.amctheatres.com/v3/orders/98096/products",
      "templated": false
    }
  }
}                       
                    

Adding a credit card payment

If we examine the order from the previous step, we find that creditCard is one of the available payment options, so we can proceed with adding a credit card payment through our credit card processor, BrainTree. To add a payment to our order we will first need to cretae a transaction via the Braintree Api. Unfortunately thats beyond the scope of this guide, but you can learn more at Braintree Developers. Once you've created a transaction with Braintree, we will use the provided braintree transaction id to add a new payment to the order. For this example we will use a single transaction for the full purchase price with an id of "cr8tbw".

POST  /v3/orders/98096/payments

Request

{
    "type":"creditCard",
    "amount": 30.36,
    "gateway": "braintree",
    "merchantTransactionId": "cr8tbw"
}
                    

Response

HTTP/1.1 201 Created
Location: https://api.amctheatres.com/v3/orders/98096/payments/1
                    

When we pull down our modified order, we find our new payment with an Authorized status, this means the payment had been approved for processing, but hasn't been billed to the client yet. We also find a new fulfillment link that indicates our order is ready to be committed for final processing.

GET  /v3/orders/98096

Response

                       
{
  "email": "[email protected]",
  "status": "Pending",
  "createdDateUtc": "2016-04-8T08:33:14.513Z",
  "total": 30.36,
  "subtotal": 27.95,
  "paid": 0,
  "token": "92e325ab-2b96-429f-ae67-3815a1b3449b",
  "paymentOptions": [
    "creditCard",
    "giftCard"
  ],
  "expirationDateUtc": "2016-04-8T08:40:14.513Z",
  "_embedded": {
    "products": [
      {
        "sku": "CONCESSIONS-12632",
        "quantity": 1,
        "status": "Held",
        "cost": 8.48,
        "tax": 0.69,
        "name": "Chicken Nachos",
        "theatre": "AMC Town Center 20",
        "theatreId": 38,
        "concessionOrderName": "Stephen",
        "deliveryType": "DeliveryToSeat",
        "deliveryDateTimeLocal": "2016-04-08T10:55:00",
        "deliveryShowtimeId": 40451171,
        "deliverySeatName": "A10",
        "components": [],
        "modifiers": [
          {
            "name": "No Sour Cream",
            "sku": "CONCESSIONS-42914",
            "status": "Held",
            "cost": 0,
            "tax": 0,
            "token": "628b8e0d-6b1e-4631-9035-139e90dd24f4"
          }
        ],
        "token": "628b8e0d-6b1e-4631-9035-139e90dd24f4",
        "fees": [],
        "_links": {
          "self": {
            "href": "https://api.amctheatres.com/v3/orders/98096/products/1",
            "templated": false
          }
        },
        "lineItemNumber": 1
      },
      {
        "sku": "CONCESSIONS-3600",
        "status": "Held",
        "cost": 21.19,
        "tax": 1.72,
        "name": "Combo #2- 2 Fountain Drinks",
        "theatre": "AMC Town Center 20",
        "theatreId": 38,
        "concessionOrderName": "Stephen",
        "deliveryType": "DeliveryToSeat",
        "deliveryDateTimeLocal": "2016-04-08T10:55:00",
        "deliveryShowtimeId": 40451171,
        "deliverySeatName": "A10",
        "components": [
          {
            "name": "Drink Large",
            "token": "37bfc6b8-c077-46a9-99a6-5ddddbbded77",
            "sku": "CONCESSIONS-19816",
            "modifiers": [
              {
                "name": "Coca-Cola",
                "sku": "CONCESSIONS-54864",
                "status": "Held",
                "cost": 0,
                "tax": 0,
                "token": "37bfc6b8-c077-46a9-99a6-5ddddbbded77"
              }
            ]
          },
          {
            "name": "Drink Large",
            "token": "60f39073-0a40-4a02-a40a-13336eb70768",
            "sku": "CONCESSIONS-19816",
            "modifiers": [
              {
                "name": "Lemonade",
                "sku": "CONCESSIONS-362972",
                "status": "Held",
                "cost": 0,
                "tax": 0,
                "token": "60f39073-0a40-4a02-a40a-13336eb70768"
              }
            ]
          },
          {
            "name": "Popcorn Large",
            "token": "cfab6a4a-8a3b-44ac-9949-cc7d169a3cae",
            "sku": "CONCESSIONS-22739",
            "modifiers": []
          }
        ],
        "modifiers": [],
        "token": "5d3c2b28-9b79-47c6-9ef0-7f72fffca185",
        "fees": [],
        "_links": {
          "self": {
            "href": "https://api.amctheatres.com/v3/orders/98096/products/2",
            "templated": false
          }
        },
        "lineItemNumber": 2
      }
    ],
    "payments": [
        {
            "type": "Visa",
            "balance": 0.0,
            "amount": 30.36,
            "status": "Authorized",
            "_links": {
            "self": {
                "href": "https://api.amctheatres.com/v3/orders/98096/payments/1",
                "templated": false
              }
            }
        }
    ]
  },
  "_links": {
    "self": {
      "href": "https://api.amctheatres.com/v3/orders/98096",
      "templated": false
    },
    "https://api.amctheatres.com/rels/v3/order-payments": {
      "href": "https://api.amctheatres.com/v3/orders/98096/payments",
      "templated": false
    },
    "https://api.amctheatres.com/rels/v3/order-products": {
      "href": "https://api.amctheatres.com/v3/orders/98096/products",
      "templated": false
    }
    "fulfill": {
      "href": "https://api.amctheatres.com/v3/orders/98096/fulfill",
      "templated": false
    }
  }
}                       
                    

Fulfilling the order

Finally we will complete the order by issueing a POST to the fulfillment link provided by the order links with a null body. Of everything goes as planned we will get a 200 OK result, and we can continue by pulling the order back down with a simple GET. Inside our order we will find our confirmation number for picking up the concessions we ordered at the theatre's kitchen.

POST  /v3/orders/98096/fulfill

Response

                       
HTTP/1.1 200 OK
                    
GET  /v3/orders/98096

Response

                       
{
  "email": "[email protected]",
  "status": "Fulfilled",
  "createdDateUtc": "2016-04-8T08:33:14.513Z",
  "total": 30.36,
  "subtotal": 27.95,
  "paid": 30.36,
  "confirmationNumber": "0113826828",
  "token": "92e325ab-2b96-429f-ae67-3815a1b3449b",
  "paymentOptions": [
    "creditCard",
    "giftCard"
  ],
  "expirationDateUtc": "2016-04-8T08:40:14.513Z",
  "_embedded": {
    "products": [
      {
        "sku": "CONCESSIONS-12632",
        "quantity": 1,
        "status": "Fulfilled",
        "cost": 8.48,
        "tax": 0.69,
        "name": "Chicken Nachos",
        "theatre": "AMC Town Center 20",
        "theatreId": 38,
        "concessionOrderName": "Stephen",
        "deliveryType": "DeliveryToSeat",
        "deliveryDateTimeLocal": "2016-04-08T10:55:00",
        "deliveryShowtimeId": 40451171,
        "deliverySeatName": "A10",
        "components": [],
        "modifiers": [
          {
            "name": "No Sour Cream",
            "sku": "CONCESSIONS-42914",
            "status": "Fulfilled",
            "cost": 0,
            "tax": 0,
            "token": "628b8e0d-6b1e-4631-9035-139e90dd24f4"
          }
        ],
        "token": "628b8e0d-6b1e-4631-9035-139e90dd24f4",
        "fees": [],
        "_links": {
          "self": {
            "href": "https://api.amctheatres.com/v3/orders/98096/products/1",
            "templated": false
          }
        },
        "lineItemNumber": 1
      },
      {
        "sku": "CONCESSIONS-3600",
        "status": "Fulfilled",
        "cost": 21.19,
        "tax": 1.72,
        "name": "Combo #2- 2 Fountain Drinks",
        "theatre": "AMC Town Center 20",
        "theatreId": 38,
        "concessionOrderName": "Stephen",
        "deliveryType": "DeliveryToSeat",
        "deliveryDateTimeLocal": "2016-04-08T10:55:00",
        "deliveryShowtimeId": 40451171,
        "deliverySeatName": "A10",
        "components": [
          {
            "name": "Drink Large",
            "token": "37bfc6b8-c077-46a9-99a6-5ddddbbded77",
            "sku": "CONCESSIONS-19816",
            "modifiers": [
              {
                "name": "Coca-Cola",
                "sku": "CONCESSIONS-54864",
                "status": "Fulfilled",
                "cost": 0,
                "tax": 0,
                "token": "37bfc6b8-c077-46a9-99a6-5ddddbbded77"
              }
            ]
          },
          {
            "name": "Drink Large",
            "token": "60f39073-0a40-4a02-a40a-13336eb70768",
            "sku": "CONCESSIONS-19816",
            "modifiers": [
              {
                "name": "Lemonade",
                "sku": "CONCESSIONS-362972",
                "status": "Fulfilled",
                "cost": 0,
                "tax": 0,
                "token": "60f39073-0a40-4a02-a40a-13336eb70768"
              }
            ]
          },
          {
            "name": "Popcorn Large",
            "token": "cfab6a4a-8a3b-44ac-9949-cc7d169a3cae",
            "sku": "CONCESSIONS-22739",
            "modifiers": []
          }
        ],
        "modifiers": [],
        "token": "5d3c2b28-9b79-47c6-9ef0-7f72fffca185",
        "fees": [],
        "_links": {
          "self": {
            "href": "https://api.amctheatres.com/v3/orders/98096/products/2",
            "templated": false
          }
        },
        "lineItemNumber": 2
      }
    ],
    "payments": [
        {
            "type": "Visa",
            "balance": 0.0,
            "amount": 30.36,
            "status": "Settled",
            "_links": {
            "self": {
                "href": "https://api.amctheatres.com/v3/orders/98096/payments/1",
                "templated": false
              }
            }
        }
    ]
  },
  "_links": {
    "self": {
      "href": "https://api.amctheatres.com/v3/orders/98096",
      "templated": false
    }
  }
}