Purchasing Concessions for Express Pickup

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 express pickup (for delivery to seat refer to Purchasing Concessions for Delivery to Seat).

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

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 DINE-IN Studio 28. We'll construct the url using Studio 28's theatre number of 610 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 DINE-IN Studio 28 is different from the SKU for the same product at AMC Town Center 20.

GET  /v1/theatres/610/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": 610,
        "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/610/concessions/categories/nachos",
                  "templated": false
                },
                "https://api.amctheatres.com/rels/v1/concessions": {
                  "href": "https://api.amctheatres.com/v1/theatres/610/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/610/concessions/categories/entrees",
                  "templated": false
                },
                "https://api.amctheatres.com/rels/v1/concessions": {
                  "href": "https://api.amctheatres.com/v1/theatres/610/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/610/concessions/groups/170",
                  "templated": false
                },
                "https://api.amctheatres.com/rels/v1/concessions": {
                  "href": "https://api.amctheatres.com/v1/theatres/610/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/610",
            "templated": false
          }
        }
      },
      {
        "name": "Large Popcorn + 2 Large Drinks",
        "displayName": "Large Popcorn + 2 Large Drinks",
        "description": "",
        "nutritionalInfo": "970-3010",
        "size": "",
        "price": 23.2,
        "tax": 2.01,
        "taxGroupId": 7,
        "sku": "CONCESSIONS-1781559",
        "prepTime": 0,
        "theatreId": 610,
        "concessionId": 8080778,
        "media": {
          "imageSmall": "https://cdn.amctheatres.com/production/2/concessions/8080778-small.jpg",
          "imageLarge": "https://cdn.amctheatres.com/production/2/concessions/8080778-large.jpg"
        },
        "discounts": [],
        "_embedded": {
          "categories": [
            {
              "name": "1 Large Popcorn + 2 Large Drinks",
              "level": 2,
              "sortOrder": 1,
              "productSortOrder": 0,
              "categoryId": 9,
              "media": {
                "imageSmall": "https://cdn.amctheatres.com/production/2/concessions/categories/9-small.jpg",
                "imageLarge": "https://cdn.amctheatres.com/production/2/concessions/categories/9-large.jpg"
              },
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/theatres/610/concessions/categories/1+large+popcorn+%2b+2+large+drinks",
                  "templated": false
                },
                "https://api.amctheatres.com/rels/v1/concessions": {
                  "href": "https://api.amctheatres.com/v1/theatres/610/concessions?category=1+large+popcorn+%2b+2+large+drinks",
                  "templated": false
                },
                "https://api.amctheatres.com/rels/v2/media": {
                  "href": "https://api.amctheatres.com/v2/media/product-categories/9/{media-type}",
                  "templated": true
                }
              }
            },
            {
              "name": "Combos",
              "level": 1,
              "sortOrder": 1,
              "categoryId": 2,
              "media": {
                "imageSmall": "https://cdn.amctheatres.com/production/2/concessions/categories/2-small.jpg",
                "imageLarge": "https://cdn.amctheatres.com/production/2/concessions/categories/2-large.jpg"
              },
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/theatres/610/concessions/categories/combos",
                  "templated": false
                },
                "https://api.amctheatres.com/rels/v1/concessions": {
                  "href": "https://api.amctheatres.com/v1/theatres/610/concessions?category=combos",
                  "templated": false
                },
                "https://api.amctheatres.com/rels/v2/media": {
                  "href": "https://api.amctheatres.com/v2/media/product-categories/2/{media-type}",
                  "templated": true
                }
              }
            }
          ],
          "comboComponents": [
            {
              "name": "Large Popcorn Tub",
              "sku": "CONCESSIONS-2267122",
              "type": "Concession",
              "quantity": 1,
              "sortOrder": 1,
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/concessions/2267122",
                  "templated": false
                }
              }
            },
            {
              "name": "Large Drink",
              "sku": "CONCESSIONS-2270585",
              "type": "Concession",
              "quantity": 2,
              "sortOrder": 2,
              "_links": {
                "self": {
                  "href": "https://api.amctheatres.com/v1/concessions/2270585",
                  "templated": false
                }
              }
            }
          ]
        },
        "_links": {
          "self": {
            "href": "https://api.amctheatres.com/v1/concessions/1781559",
            "templated": false
          },
          "https://api.amctheatres.com/rels/v2/media": {
            "href": "https://api.amctheatres.com/v2/media/products/8080778/{media-type}",
            "templated": true
          },
          "https://api.amctheatres.com/rels/v2/theatre": {
            "href": "https://api.amctheatres.com/v1/theatres/610",
            "templated": false
          }
        }
      }
    ]
  },
  "_links": {
    "self": {
      "href": "https://api.amctheatres.com/v1/theatres/610/concessions?page-number=1&page-size=167",
      "templated": false
    },
    "upSellProduct": {
      "href": "https://api.amctheatres.com/v1/theatres/610/concessions/up-sell",
      "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.


Finding a pickup time

Now we need to find an acceptable pickup time for specifying when we want to pickup our concessions items. The pickup time tells the kitchen when to have your concessions prepared for pickup. If you are placing an order with no associated showtime (such as one with no tickets) you must first check that the theatre does not require a showtime to be associated with the concessions. To do this, query the theatre and check the value of the hasMultipleKitchens field. If hasMultipleKitchens is true, the theatre will require that a showtime is provided with all concession orders.

GET  /v2/theatres/610

Response

{
    "deliveryToSeat": false,
    "id": 610,
    "longName": "AMC DINE-IN Studio 28",
    "name": "AMC DINE-IN Studio 28",
    "guestServicesPhoneNumber": "9133933030",
    "utcOffset": "-05:00",
    "timezone": "CENTRAL TIME",
    "slug": "amc-dine-in-studio-28",
    "facebookUrl": "https://www.facebook.com/AMCStudio28",
    "websiteUrl": "https://www.amctheatres.com/movie-theatres/kansas-city/amc-dine-in-studio-28",
    "ticketable": "AMC",
    "attributes": [
        {
            "code": "macguffins",
            "name": "MacGuffins Bar",
            "description": "Enjoy delicious, adult-only, beverages at MacGuffins Bar. Beer and wine are always ready to be poured, and select theatres also offer premium spirits and AMC-crafted cocktails. For guests 21+ only."
        },
        {
            "code": "amcindependent",
            "name": "AMC independent",
            "description": "AMC independent is our renewed commitment to advancing independent film. Now, you can see more distinct and unconventional films at our theatres around the country. We’re bringing you more of what you want -- a diverse line-up of films that excite, encourage and engage. Over 20% of our theatres are committed to showing independent films throughout the year, including AMC-exclusive releases. We hope that you enjoy these new stories that we are bringing to the screen, and more importantly, to your local theatres."
        },
        {
            "code": "sensoryfriendly",
            "name": "Sensory Friendly Films",
            "description": "We turn the lights up and the sound down, so you can feel free to be you at these unique showings for people living with autism or other special needs."
        },
        {
            "code": "marketplace",
            "name": "The Marketplace",
            "description": "Choose from an expanded menu of concessions including Coca-Cola Freestyle with over 100 drink choices.  Also featuring chicken tender bites, loaded hot dogs, specialty smoothies and coffee drinks, gourmet popcorn and healthier options in a self-service concession stand that’s built like a convenience store."
        },
        {
            "code": "digitalprojection",
            "name": "Digital Projection",
            "description": "This theatre features digital projection in all auditoriums."
        },
        {
            "code": "stadiumseating",
            "name": "Stadium Seating",
            "description": "This theatre features stadium seating in all auditoriums."
        },
        {
            "code": "reservedseating",
            "name": "Reserved Seating",
            "description": "Select your seat when you buy your tickets online, on our mobile app or at the theatre."
        },
        {
            "code": "theatrerentals",
            "name": "Theatre Rentals",
            "description": "Theatre rentals are available at this theatre. Please email your contact information to [email protected] for information on pricing and availability."
        },
        {
            "code": "assistedlisteningdevices",
            "name": "Assisted Listening Devices",
            "description": "This theatre offers assisted listening devices. Contact the guest services desk at the theatre for more information."
        },
        {
            "code": "wheelchairaccess",
            "name": "Wheelchair Access",
            "description": "This theatre is wheelchair-accessible in all auditoriums."
        },
        {
            "code": "distractionfreeenvironment",
            "name": "Age Policy for R-Rated Movies After 6 p.m.",
            "description": "This theatre does not allow children under the age of 6 to attend R-rated movies after 6 p.m. For R-rated showtimes starting before 6 p.m., children under the age of 6 may only be admitted with a parent or legal guardian."
        },
        {
            "code": "nooutsidefoodandbeverage",
            "name": "No Outside Food and Beverage",
            "description": "Please refrain from bringing outside food and beverage items into the theatre."
        },
        {
            "code": "alcoholcardingpolicy",
            "name": "Alcohol Carding Policy",
            "description": "Regardless of age, all guests purchasing or consuming alcohol within the theatre must show positive proof of age. Guests without a valid ID cannot purchase or consume alcohol per AMC policy."
        },
        {
            "code": "agepolicyforrratedfilms",
            "name": "Age Policy for R-Rated Films",
            "description": "Under 17 requires accompanying parent or adult guardian (age 21 or older). Guests 25 years and under must show ID.\nWe restrict children younger than 6 from attending R-Rated films after 6pm to improve the experience for everyone. To bring your children younger than 6 to R-Rated films, please visit us before 6pm."
        },
        {
            "code": "pricingnotice",
            "name": "Pricing Notice",
            "description": "AMC reserves the right to exercise special pricing options for unique in-theatre experiences."
        },
        {
            "code": "refundpolicy",
            "name": "Refund Policy",
            "description": "No refunds after printed showtime."
        },
        {
            "code": "specialengagements",
            "name": "Special Engagements",
            "description": "Some types of passes may be restricted for Special Engagements or New Releases and thus subject to a surcharge. Be sure to read the back of your pass for more details."
        },
        {
            "code": "printathome",
            "name": "Mobile Ticketing",
            "description": "Skip the box office and go straight to the ticket drop with our mobile ticketing solution when buying tickets online."
        },
        {
            "code": "hundredplusdrinkchoices",
            "name": "Coca-Cola Freestyle",
            "description": "Select from 100+ drink choices.  Whether you're craving a classic Coca-Cola, a Sprite Peach, or a Dasani Lime for your show,  we’ve got you covered."
        },
        {
            "code": "closedcaption",
            "name": "Closed Caption",
            "description": "Closed captioning devices available at this theatre.  Contact the guest services desk at the theatre for more information."
        },
        {
            "code": "descriptivevideo",
            "name": "Audio Description",
            "description": "Audio Description devices available at this theatre. Contact the guest services desk at the theatre for more information."
        },
        {
            "code": "seniorpricing",
            "name": "Senior Pricing",
            "description": "If you're 60 or over, save on your movie ticket any day, starting at 12pm. Just show a valid ID at the box office."
        },
        {
            "code": "militarypricingafter4pm",
            "name": "Military Pricing",
            "description": "This location offers special military pricing. See box office for details. Must present a valid military ID."
        },
        {
            "code": "studentpricing",
            "name": "Student Pricing",
            "description": "Every day, starting at 4pm, show your valid student ID at the box office and save on your ticket."
        },
        {
            "code": "fooddrinksonlineordering",
            "name": "Food & Drinks Online Ordering",
            "description": "Now, you can order your food and drinks online or on our mobile app before you get to the theatre."
        },
        {
            "code": "featurefare",
            "name": "Feature Fare",
            "description": "We're elevating the movie menu, offering better quality and variety with new loaded hot dogs, stone-fired flatbread pizzas, gluten-free snacks, and so much more!"
        },
        {
            "code": "dolbycinemaatamcprime",
            "name": "Dolby Cinema at AMC",
            "description": "Powerful images and sound technologies combine with cutting-edge, reserved recliners to transform each show into a completely captivating cinematic event."
        },
        {
            "code": "5tickettuesdays",
            "name": "Discount Tuesdays",
            "description": "All AMC Stubs members save big on tickets on Tuesday showtimes! Available at the box office, online or on our app. It’s just a weekly reminder of the many perks of being a member. (Discount varies by location. Surcharges for premium formats and special events. Exclusions apply. Not valid 12/22-1/2.)"
        },
        {
            "code": "amcstubsalist",
            "name": "AMC Stubs A-List",
            "description": "Subscribe to A-List and see all the movies you want at this theatre for a low monthly fee.  Click to learn more and find other participating theatres."
        },
        {
            "code": "forkandscreen",
            "name": "Fork & Screen",
            "description": "A cool and casual, family-friendly experience featuring in-theatre dining, full bar, and premium seats.  Enjoy handcrafted burgers, bowls, desserts and more while you watch the show."
        },
        {
            "code": "dineinseatsideservice",
            "name": "Dine-In Full Service",
            "description": "The perfect way to experience dinner and a movie.  Reserve your seat and enjoy a made-from-scratch menu prepared fresh by our chefs, plus a full bar.  Just push the service button at your seat to order."
        },
        {
            "code": "reald3d",
            "name": "RealD 3D",
            "description": "Feast your eyes on the mind-blowing RealD 3D experience at AMC. Using a new digital approach, you can watch movies with amazing depth and clarity, without sacrificing comfort."
        },
        {
            "code": "reclinerseating",
            "name": "AMC Signature Recliners",
            "description": "This auditorium has recliner seats."
        },
        {
            "code": "cinemasuites",
            "name": "Cinema Suites",
            "description": "A grown-up atmosphere featuring in-theatre dining, full bar, and extra-comfy recliners.  Enjoy handcrafted burgers, bowls, desserts and more while you watch the show."
        },
        {
            "code": "imax",
            "name": "IMAX at AMC",
            "description": "Immersive, heart-pounding audio combined with the clearest images on the largest screens takes you beyond the standard cinema experience.  Experience films to the fullest in IMAX at AMC."
        },
        {
            "code": "dineIn",
            "name": "In-Theatre Dining",
            "description": "In-Theatre Dining"
        }
    ],
    "location": {
        "addressLine1": "12075 So Strang Line Road",
        "city": "OLATHE",
        "cityUrlSuffixText": "olathe",
        "postalCode": "66062-5256",
        "state": "KS",
        "stateName": "KANSAS",
        "stateUrlSuffixText": "kansas",
        "country": "United States",
        "latitude": 38.907652,
        "longitude": -94.76736,
        "directionsUrl": "http://bing.com/maps/default.aspx?v=2&lvl=9&style=r&mode=D&rtop=0~0~0~&cp=38.9076520000~-94.7673600000&rtp=adr.~pos.38.9076520000_-94.7673600000_AMC+DINE-IN+Studio+28+12075+So+Strang+Line+Road+OLATHE+KS+66062-5256",
        "marketName": "Kansas City",
        "marketUrlSuffixText": "kansas-city",
        "marketId": 108
    },
    "media": {
        "theatreImageIcon": "https://amc-theatres-res.cloudinary.com/amc-cdn/theatres/images/StoreIcon/Thumb/335_studio-28-olathe_7E96.jpg",
        "theatreImageLarge": "https://amc-theatres-res.cloudinary.com/amc-cdn/theatres/images/Primary/Large/fallback-3.jpg",
        "theatreImageStandard": "https://amc-theatres-res.cloudinary.com/amc-cdn/theatres/images/Primary/Standard/fallback-3.jpg",
        "theatreImageThumbnail": "https://amc-theatres-res.cloudinary.com/amc-cdn/theatres/images/Primary/Thumb/fallback-3.jpg",
        "heroDesktopDynamic": "https://amc-theatres-res.cloudinary.com/amc-cdn/production/2/movies/600/610/MovieStills/25256.jpg",
        "heroMobileDynamic": "https://amc-theatres-res.cloudinary.com/amc-cdn/production/2/movies/600/610/MovieStills/25257.jpg",
        "interiorDynamic": "https://amc-theatres-res.cloudinary.com/amc-cdn/theatres/images/InteriorDynamic/Dynamic/fallback-3.jpg",
        "exteriorDynamic": "https://amc-theatres-res.cloudinary.com/amc-cdn/theatres/images/ExteriorDynamic/Dynamic/fallback-3.jpg",
        "promotionDynamic": "https://amc-theatres-res.cloudinary.com/amc-cdn/theatres/images/PromotionDynamic/Dynamic/fallback-3.jpg"
    },
    "_links": {
        "self": {
            "href": "https://api.amctheatres.com/v2/theatres/610",
            "templated": false
        },
        "https://api.amctheatres.com/rels/v2/media": {
            "href": "https://api.amctheatres.com/v2/media/theatres/610/{media-type}",
            "templated": true
        },
        "https://api.amctheatres.com/rels/v2/theatre-seating-layouts": {
            "href": "https://api.amctheatres.com/v2/theatres/610/seating-layouts",
            "templated": false
        }
    },
    "redemptionMethods": [
        "Credit Card Swipe",
        "AMC Gift Card Swipe",
        "AMC Stubs Card Swipe",
        "Confirmation Code",
        "QR Code"
    ],
    "westWorldMediaNumber": 4174,
    "loyaltyVersionId": 3,
    "onlineConcessions": true,
    "hasMultipleKitchens": false,
    "concessionsDeliveryOptions": [
        "EXPRESSPICKUP"
    ],
    "convenienceFeeTaxPercent": 9.475,
    "convenienceFeeTaxFlatAmount": 0,
    "brand": "DIT",
    "subscriptionUsageLevel": 1
}
                    

If hasMultipleKitchens is false then concessions orders may be placed without providing a showtime id. In this scenario, you can obtain a list of pickup times by issuing the following request which specifies the theatre, year, month and day.

GET  /v1/theatres/610/concessions/pickup-times/2019/01/27

Response

{
    "theatreId": 610,
    "showtimeId": 0,
    "pickupTimes": [
        {
            "pickupDateTimeUtc": "2019-01-27T15:30:00Z",
            "pickupDateTimeLocal": "2019-01-27T09:30:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T15:40:00Z",
            "pickupDateTimeLocal": "2019-01-27T09:40:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T15:50:00Z",
            "pickupDateTimeLocal": "2019-01-27T09:50:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T16:00:00Z",
            "pickupDateTimeLocal": "2019-01-27T10:00:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T16:10:00Z",
            "pickupDateTimeLocal": "2019-01-27T10:10:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T16:20:00Z",
            "pickupDateTimeLocal": "2019-01-27T10:20:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T16:30:00Z",
            "pickupDateTimeLocal": "2019-01-27T10:30:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T16:40:00Z",
            "pickupDateTimeLocal": "2019-01-27T10:40:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T16:50:00Z",
            "pickupDateTimeLocal": "2019-01-27T10:50:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T17:00:00Z",
            "pickupDateTimeLocal": "2019-01-27T11:00:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T17:10:00Z",
            "pickupDateTimeLocal": "2019-01-27T11:10:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T17:20:00Z",
            "pickupDateTimeLocal": "2019-01-27T11:20:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T17:30:00Z",
            "pickupDateTimeLocal": "2019-01-27T11:30:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T17:40:00Z",
            "pickupDateTimeLocal": "2019-01-27T11:40:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T17:50:00Z",
            "pickupDateTimeLocal": "2019-01-27T11:50:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T18:00:00Z",
            "pickupDateTimeLocal": "2019-01-27T12:00:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T18:10:00Z",
            "pickupDateTimeLocal": "2019-01-27T12:10:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T18:20:00Z",
            "pickupDateTimeLocal": "2019-01-27T12:20:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T18:30:00Z",
            "pickupDateTimeLocal": "2019-01-27T12:30:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T18:40:00Z",
            "pickupDateTimeLocal": "2019-01-27T12:40:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T18:50:00Z",
            "pickupDateTimeLocal": "2019-01-27T12:50:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T19:00:00Z",
            "pickupDateTimeLocal": "2019-01-27T13:00:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T19:10:00Z",
            "pickupDateTimeLocal": "2019-01-27T13:10:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T19:20:00Z",
            "pickupDateTimeLocal": "2019-01-27T13:20:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T19:30:00Z",
            "pickupDateTimeLocal": "2019-01-27T13:30:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T19:40:00Z",
            "pickupDateTimeLocal": "2019-01-27T13:40:00",
            "available": 5,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T19:50:00Z",
            "pickupDateTimeLocal": "2019-01-27T13:50:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T20:00:00Z",
            "pickupDateTimeLocal": "2019-01-27T14:00:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T20:10:00Z",
            "pickupDateTimeLocal": "2019-01-27T14:10:00",
            "available": 5,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T20:20:00Z",
            "pickupDateTimeLocal": "2019-01-27T14:20:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T20:30:00Z",
            "pickupDateTimeLocal": "2019-01-27T14:30:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T20:40:00Z",
            "pickupDateTimeLocal": "2019-01-27T14:40:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T20:50:00Z",
            "pickupDateTimeLocal": "2019-01-27T14:50:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T21:00:00Z",
            "pickupDateTimeLocal": "2019-01-27T15:00:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T21:10:00Z",
            "pickupDateTimeLocal": "2019-01-27T15:10:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T21:20:00Z",
            "pickupDateTimeLocal": "2019-01-27T15:20:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T21:30:00Z",
            "pickupDateTimeLocal": "2019-01-27T15:30:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T21:40:00Z",
            "pickupDateTimeLocal": "2019-01-27T15:40:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T21:50:00Z",
            "pickupDateTimeLocal": "2019-01-27T15:50:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T22:00:00Z",
            "pickupDateTimeLocal": "2019-01-27T16:00:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T22:10:00Z",
            "pickupDateTimeLocal": "2019-01-27T16:10:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T22:20:00Z",
            "pickupDateTimeLocal": "2019-01-27T16:20:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T22:30:00Z",
            "pickupDateTimeLocal": "2019-01-27T16:30:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T22:40:00Z",
            "pickupDateTimeLocal": "2019-01-27T16:40:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T22:50:00Z",
            "pickupDateTimeLocal": "2019-01-27T16:50:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T23:00:00Z",
            "pickupDateTimeLocal": "2019-01-27T17:00:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T23:10:00Z",
            "pickupDateTimeLocal": "2019-01-27T17:10:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T23:20:00Z",
            "pickupDateTimeLocal": "2019-01-27T17:20:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T23:30:00Z",
            "pickupDateTimeLocal": "2019-01-27T17:30:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T23:40:00Z",
            "pickupDateTimeLocal": "2019-01-27T17:40:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T23:50:00Z",
            "pickupDateTimeLocal": "2019-01-27T17:50:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-28T00:00:00Z",
            "pickupDateTimeLocal": "2019-01-27T18:00:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-28T00:10:00Z",
            "pickupDateTimeLocal": "2019-01-27T18:10:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-28T00:20:00Z",
            "pickupDateTimeLocal": "2019-01-27T18:20:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-28T00:30:00Z",
            "pickupDateTimeLocal": "2019-01-27T18:30:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-28T00:40:00Z",
            "pickupDateTimeLocal": "2019-01-27T18:40:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-28T00:50:00Z",
            "pickupDateTimeLocal": "2019-01-27T18:50:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-28T01:00:00Z",
            "pickupDateTimeLocal": "2019-01-27T19:00:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-28T01:10:00Z",
            "pickupDateTimeLocal": "2019-01-27T19:10:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-28T01:20:00Z",
            "pickupDateTimeLocal": "2019-01-27T19:20:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-28T01:30:00Z",
            "pickupDateTimeLocal": "2019-01-27T19:30:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-28T01:40:00Z",
            "pickupDateTimeLocal": "2019-01-27T19:40:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-28T01:50:00Z",
            "pickupDateTimeLocal": "2019-01-27T19:50:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-28T02:00:00Z",
            "pickupDateTimeLocal": "2019-01-27T20:00:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-28T02:10:00Z",
            "pickupDateTimeLocal": "2019-01-27T20:10:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-28T02:20:00Z",
            "pickupDateTimeLocal": "2019-01-27T20:20:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-28T02:30:00Z",
            "pickupDateTimeLocal": "2019-01-27T20:30:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-28T02:40:00Z",
            "pickupDateTimeLocal": "2019-01-27T20:40:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-28T02:50:00Z",
            "pickupDateTimeLocal": "2019-01-27T20:50:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-28T03:00:00Z",
            "pickupDateTimeLocal": "2019-01-27T21:00:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-28T03:10:00Z",
            "pickupDateTimeLocal": "2019-01-27T21:10:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-28T03:20:00Z",
            "pickupDateTimeLocal": "2019-01-27T21:20:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-28T03:30:00Z",
            "pickupDateTimeLocal": "2019-01-27T21:30:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-28T03:40:00Z",
            "pickupDateTimeLocal": "2019-01-27T21:40:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-28T03:50:00Z",
            "pickupDateTimeLocal": "2019-01-27T21:50:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-28T04:00:00Z",
            "pickupDateTimeLocal": "2019-01-27T22:00:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-28T04:10:00Z",
            "pickupDateTimeLocal": "2019-01-27T22:10:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-28T04:20:00Z",
            "pickupDateTimeLocal": "2019-01-27T22:20:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-28T04:30:00Z",
            "pickupDateTimeLocal": "2019-01-27T22:30:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-28T04:40:00Z",
            "pickupDateTimeLocal": "2019-01-27T22:40:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-28T04:50:00Z",
            "pickupDateTimeLocal": "2019-01-27T22:50:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-28T05:00:00Z",
            "pickupDateTimeLocal": "2019-01-27T23:00:00",
            "available": 10,
            "isDefault": false
        }
    ],
    "_links": {
        "self": {
            "href": "https://api.amctheatres.com/v1/theatres/610/concessions/pickup-times/2019/1/27",
            "templated": false
        }
    }
}
                    

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

"pickupDateTimeLocal": "2019-01-27T14:10:00"

Alternatively, if your order contains tickets or if you have associated your concessions products with a showtime using the DeliveryShowtimeId value as demonstrated in step 4 you should obtain pickup times using the following request which uses the showtime id.

GET  /v1/showtimes/76438629/concession-pickup-times

Response

{
    "theatreId": 610,
    "showtimeId": 76386058,
    "pickupTimes": [
        {
            "pickupDateTimeUtc": "2019-01-27T22:25:00Z",
            "pickupDateTimeLocal": "2019-01-27T16:25:00",
            "available": 10,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T22:35:00Z",
            "pickupDateTimeLocal": "2019-01-27T16:35:00",
            "available": 5,
            "isDefault": false
        },
        {
            "pickupDateTimeUtc": "2019-01-27T22:45:00Z",
            "pickupDateTimeLocal": "2019-01-27T16:45:00",
            "available": 10,
            "isDefault": true
        },
        {
            "pickupDateTimeUtc": "2019-01-27T22:55:00Z",
            "pickupDateTimeLocal": "2019-01-27T16:55:00",
            "available": 10,
            "isDefault": false
        }
    ],
    "_links": {
        "self": {
            "href": "https://api.amctheatres.com/v1/showtimes/76386058/concession-pickup-times",
            "templated": false
        }
    }
}
                    

Again, take note of the desired pickup time and make sure that there are spots available. The following time has 5 available spots so we know the theatre's kitchen will have staff available to prepare the order.

"pickupDateTimeLocal": "2019-01-27T16:35:00"

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": "2019-01-27T08: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).


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 3 fields for each top-level/parent express pickup concessions item. First, the ConcessionOrderName value which specifies who the order is for (and who will be picking it up, 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. DeliveryToSeat orders require other field values to be specified which are covered in the guide to Purchasing Concessions for Delivery to Seat.

"DeliveryType": "ExpressPickup"

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

"DeliveryDateTimeLocal": "2019-01-27T16:35:00"

Optionally, to associate these concessions with a particular showtime, you may set the DeliveryShowtimeId value which will allow you to get pickup times specific to the provided showtime. Remember that if the hasMultipleKitchens field on the theatre is true as described in step 2, then DeliveryShowtimeId is a required field.

"DeliveryShowtimeId": 76438629

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": "ExpressPickup",
    "DeliveryDateTimeLocal": "2019-01-27T16:35:00",
    "DeliveryShowtimeId": 76438629,
    "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": "2019-01-27T08:33:14.513Z",
  "total": 9.17,
  "subtotal": 8.48,
  "paid": 0,
  "token": "92e325ab-2b96-429f-ae67-3815a1b3449b",
  "paymentOptions": [
    "creditCard",
    "giftCard"
  ],
  "expirationDateUtc": "2019-01-2708:40:14.513Z",
  "_embedded": {
    "products": [
      {
        "sku": "CONCESSIONS-12632",
        "quantity": 1,
        "status": "Held",
        "cost": 8.48,
        "tax": 0.69,
        "name": "Chicken Nachos",
        "theatre": "AMC DINE-IN Studio 28",
        "theatreId": 610,
        "deliveryDateTimeLocal": "2019-01-27T14:10:00",
        "concessionOrderName": "Stephen",
        "deliveryType": "ExpressPickup",
        "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 DINE-IN Studio 28. The SKU for the combo we wish to order is:

CONCESSIONS-1781559

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 Large Drink components which have the SKU:

CONCESSIONS-2270585

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

CONCESSIONS-2267122

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/2270585

Response

{
  "name": "Large Drink",
  "displayName": "Large",
  "description": "",
  "nutritionalInfo": "0-880",
  "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/production/2/concessions/91499-small.jpg",
    "imageLarge": "https://cdn.amctheatres.com/production/2/concessions/91499-large.jpg"
  },
  "groups": [
    {
      "name": "2 for $10 Offer",
      "media": {
        "imageSmall": "https://cdn.amctheatres.com/production/2/concessions/groups/4000219-small.jpg",
        "imageLarge": "https://cdn.amctheatres.com/production/2/concessions/groups/4000219-large.jpg"
      }
    },
    {
      "name": "",
      "media": {
        "imageSmall": "https://cdn.amctheatres.com/production/2/concessions/groups/4000220-small.jpg",
        "imageLarge": "https://cdn.amctheatres.com/production/2/concessions/groups/4000220-large.jpg"
      }
    },
    {
      "name": "2 for $10 AMC to Classic A",
      "media": {
        "imageSmall": "https://cdn.amctheatres.com/production/2/concessions/groups/4000229-small.jpg",
        "imageLarge": "https://cdn.amctheatres.com/production/2/concessions/groups/4000229-large.jpg"
      }
    },
    {
      "name": "2 for $10 AMC to Classic B",
      "media": {
        "imageSmall": "https://cdn.amctheatres.com/production/2/concessions/groups/4000230-small.jpg",
        "imageLarge": "https://cdn.amctheatres.com/production/2/concessions/groups/4000230-large.jpg"
      }
    },
    {
      "name": "",
      "media": {
        "imageSmall": "https://cdn.amctheatres.com/production/2/concessions/groups/4000242-small.jpg",
        "imageLarge": "https://cdn.amctheatres.com/production/2/concessions/groups/4000242-large.jpg"
      }
    },
    {
      "name": "",
      "media": {
        "imageSmall": "https://cdn.amctheatres.com/production/2/concessions/groups/4000243-small.jpg",
        "imageLarge": "https://cdn.amctheatres.com/production/2/concessions/groups/4000243-large.jpg"
      }
    }
  ],
  "discounts": [
    {
      "id": 3000011,
      "amount": -0.5,
      "type": "Loyalty",
      "method": "Product Replacement (Upgrade)",
      "referenceProductId": 91300
    }
  ],
  "_embedded": {
    "categories": [
      {
        "name": "Coca-Cola Freestyle",
        "level": 2,
        "sortOrder": 0,
        "productSortOrder": 1,
        "categoryId": 17,
        "media": {
          "imageSmall": "https://cdn.amctheatres.com/production/2/concessions/categories/17-small.jpg",
          "imageLarge": "https://cdn.amctheatres.com/production/2/concessions/categories/17-large.jpg"
        },
        "_links": {
          "self": {
            "href": "https://api.amctheatres.com/v1/theatres/610/concessions/categories/coca-cola+freestyle",
            "templated": false
          },
          "https://api.amctheatres.com/rels/v1/concessions": {
            "href": "https://api.amctheatres.com/v1/theatres/610/concessions?category=coca-cola+freestyle",
            "templated": false
          },
          "https://api.amctheatres.com/rels/v2/media": {
            "href": "https://api.amctheatres.com/v2/media/product-categories/17/{media-type}",
            "templated": true
          }
        }
      },
      {
        "name": "Drinks",
        "level": 1,
        "sortOrder": 3,
        "categoryId": 4,
        "media": {
          "imageSmall": "https://cdn.amctheatres.com/production/2/concessions/categories/4-small.jpg",
          "imageLarge": "https://cdn.amctheatres.com/production/2/concessions/categories/4-large.jpg"
        },
        "_links": {
          "self": {
            "href": "https://api.amctheatres.com/v1/theatres/610/concessions/categories/drinks",
            "templated": false
          },
          "https://api.amctheatres.com/rels/v1/concessions": {
            "href": "https://api.amctheatres.com/v1/theatres/610/concessions?category=drinks",
            "templated": false
          },
          "https://api.amctheatres.com/rels/v2/media": {
            "href": "https://api.amctheatres.com/v2/media/product-categories/4/{media-type}",
            "templated": true
          }
        }
      }
    ]
  },
  "_links": {
    "self": {
      "href": "https://api.amctheatres.com/v1/concessions/2270585",
      "templated": false
    },
    "https://api.amctheatres.com/rels/v2/media": {
      "href": "https://api.amctheatres.com/v2/media/products/91499/{media-type}",
      "templated": true
    },
    "https://api.amctheatres.com/rels/v2/theatre": {
      "href": "https://api.amctheatres.com/v1/theatres/610",
      "templated": false
    }
  }
}
                    

Unlike delivery to seat, express pickup theatres do not provide drink modifiers as the guest is responsible for filling their own drink. 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-1781559",
    "Quantity": 1,
    "ConcessionOrderName": "Stephen",
    "DeliveryType": "ExpressPickup",
    "DeliveryDateTimeLocal": "2019-01-27T16:35:00",
    "DeliveryShowtimeId": 76438629,
    "Components": [
        {
            "SKU": "CONCESSIONS-2270585",
            "Quantity": 1,
        },
        {
            "SKU": "CONCESSIONS-2270585",
            "Quantity": 1
        },
        {
            "SKU": "CONCESSIONS-2267122",
            "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": "2019-01-27T08:33:14.513Z",
  "total": 30.36,
  "subtotal": 27.95,
  "paid": 0,
  "token": "92e325ab-2b96-429f-ae67-3815a1b3449b",
  "paymentOptions": [
    "creditCard",
    "giftCard"
  ],
  "expirationDateUtc": "2019-01-27T08:40:14.513Z",
  "_embedded": {
    "products": [
      {
        "sku": "CONCESSIONS-12632",
        "quantity": 1,
        "status": "Held",
        "cost": 8.48,
        "tax": 0.69,
        "name": "Chicken Nachos",
        "theatre": "AMC DINE-IN Studio 28",
        "theatreId": 610,
        "deliveryDateTimeLocal": "2019-01-27T16:35:00",
        "concessionOrderName": "Stephen",
        "deliveryType": "ExpressPickup",
        "components": [],
        "modifiers": [],
        "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-1781559",
        "status": "Held",
        "cost": 21.19,
        "tax": 1.72,
        "name": "Large Popcorn + 2 Large Drinks",
        "theatre": "AMC DINE-IN Studio 28",
        "theatreId": 610,
        "deliveryDateTimeLocal": "2019-01-27T16:35:00",
        "concessionOrderName": "Stephen",
        "deliveryType": "ExpressPickup",
        "components": [
          {
            "name": "Large Drink",
            "token": "37bfc6b8-c077-46a9-99a6-5ddddbbded77",
            "sku": "CONCESSIONS-2270585",
            "modifiers": []
          },
          {
            "name": "Large Drink",
            "token": "60f39073-0a40-4a02-a40a-13336eb70768",
            "sku": "CONCESSIONS-2270585",
            "modifiers": []
          },
          {
            "name": "Large Popcorn Tub",
            "token": "cfab6a4a-8a3b-44ac-9949-cc7d169a3cae",
            "sku": "CONCESSIONS-2267122",
            "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": "2019-01-27T08:33:14.513Z",
  "total": 30.36,
  "subtotal": 27.95,
  "paid": 0,
  "token": "92e325ab-2b96-429f-ae67-3815a1b3449b",
  "paymentOptions": [
    "creditCard",
    "giftCard"
  ],
  "expirationDateUtc": "2019-01-27T08:40:14.513Z",
  "_embedded": {
    "products": [
      {
        "sku": "CONCESSIONS-12632",
        "quantity": 1,
        "status": "Held",
        "cost": 8.48,
        "tax": 0.69,
        "name": "Chicken Nachos",
        "theatre": "AMC DINE-IN Studio 28",
        "theatreId": 610,
        "deliveryDateTimeLocal": "2019-01-27T16:35:00",
        "concessionOrderName": "Stephen",
        "deliveryType": "ExpressPickup",
        "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-1781559",
        "status": "Held",
        "cost": 21.19,
        "tax": 1.72,
        "name": "Large Popcorn + 2 Large Drinks",
        "theatre": "AMC DINE-IN Studio 28",
        "theatreId": 610,
        "deliveryDateTimeLocal": "2019-01-27T16:35:00",
        "concessionOrderName": "Stephen",
        "deliveryType": "ExpressPickup",
        "components": [
          {
            "name": "Large Drink",
            "token": "37bfc6b8-c077-46a9-99a6-5ddddbbded77",
            "sku": "CONCESSIONS-2270585",
            "modifiers": []
          },
          {
            "name": "Large Drink",
            "token": "60f39073-0a40-4a02-a40a-13336eb70768",
            "sku": "CONCESSIONS-2270585",
            "modifiers": []
          },
          {
            "name": "Large Popcorn Tub",
            "token": "cfab6a4a-8a3b-44ac-9949-cc7d169a3cae",
            "sku": "CONCESSIONS-2267122",
            "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": "2019-01-27T08:33:14.513Z",
  "total": 30.36,
  "subtotal": 27.95,
  "paid": 30.36,
  "confirmationNumber": "0113826828",
  "token": "92e325ab-2b96-429f-ae67-3815a1b3449b",
  "paymentOptions": [
    "creditCard",
    "giftCard"
  ],
  "expirationDateUtc": "2019-01-27T08:40:14.513Z",
  "_embedded": {
    "products": [
      {
        "sku": "CONCESSIONS-12632",
        "quantity": 1,
        "status": "Fulfilled",
        "cost": 8.48,
        "tax": 0.69,
        "name": "Chicken Nachos",
        "theatre": "AMC DINE-IN Studio 28",
        "theatreId": 610,
        "deliveryDateTimeLocal": "2019-01-27T16:35:00",
        "concessionOrderName": "Stephen",
        "deliveryType": "ExpressPickup",
        "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-1781559",
        "status": "Fulfilled",
        "cost": 21.19,
        "tax": 1.72,
        "name": "Large Popcorn + 2 Large Drinks",
        "theatre": "AMC DINE-IN Studio 28",
        "theatreId": 610,
        "deliveryDateTimeLocal": "2019-01-27T16:35:00",
        "concessionOrderName": "Stephen",
        "deliveryType": "ExpressPickup",
        "components": [
          {
            "name": "Large Drink",
            "token": "37bfc6b8-c077-46a9-99a6-5ddddbbded77",
            "sku": "CONCESSIONS-2270585",
            "modifiers": []
          },
          {
            "name": "Large Drink",
            "token": "60f39073-0a40-4a02-a40a-13336eb70768",
            "sku": "CONCESSIONS-2270585",
            "modifiers": []
          },
          {
            "name": "Large Popcorn Tub",
            "token": "cfab6a4a-8a3b-44ac-9949-cc7d169a3cae",
            "sku": "CONCESSIONS-2267122",
            "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
    }
  }
}