In-seat delivery

Concession items can have in-seat delivery requested at the time they are added to an order. In-seat delivery fees may be automatically charged depending on whether such feature is enabled.

Some requirements must be met for in-seat delivery:

  • The concession itself must be configured to allow in-seat delivery. In the BO/HO items cabinet, Allow in-seat should be checked.
  • In the AddConcessions request:
    • DeliveryOption should be set to 1 (InSeatDelivery).
    • DeliveryInfo must be specified on the concession item (or package child item).
    • SessionId must be set.

Example request and response

POST: /RESTTicketing.svc/order/concessions

Request:

{
    "UserSessionId": "d9664d6202394bb2baac345e349f29b8",
    "CinemaId": "0001",
    "SessionId": "1",
    "Concessions": [
        {
            "ItemId": "000000000000001",
            "Quantity": 1,
            "DeliveryOption": 1,
            "DeliveryInfo": {
                "Seats": [
                    {
                        "RowId": "A",
                        "SeatNumber": "1"
                    }
                ],
                "Comment": "Item comment for my delivery"
            }
        }
    ],
    "InSeatOrderDeliveryInfo": {
        "Comment": "Order comment for my delivery"
    },
    "ReturnOrder": true
}

Response:

{
    "Order": {
        "Concessions": [
            {
                "Id": "1",
                "ItemId": "000000000000001",
                "Quantity": 1,
                "DeliveryOption": 1,
                "DeliveryInfo": {
                    "Seats": [
                        {
                            "RowId": "A",
                            "SeatNumber": "1"
                        }
                    ],
                    "Comment": "Item comment for my delivery"
                }
            }
        ],
        "TotalValueCents": 500,
    },
    "Result": 0
}

InSeatOrderDeliveryInfo properties

The following properties can be set via InSeatOrderDeliveryInfo and apply to all concessions that have in-seat delivery requested.

  • Comment is an order comment that is recorded at the cinema and is displayed on the order tile of kitchen screens (when an item requires preparing). It can be updated subsequently at the cinema.
  • DeliveryWindowValue allows specifying an offset in minutes to the session start time or a percentage of the session's duration. For more information on delivery windows, see below.
  • DeliveryWindowDescription allows adding a description to the delivery window value. However, since it does not display on the order tile of kitchen screens, it is recommended to use Comment to record notes or comments instead.

DeliveryInfo properties

The following properties can be set via DeliveryInfo on a concession or package child item that has in-seat delivery requested.

  • Seats lists the array of seats for delivery, described by RowId and SeatNumber.
  • Comment is an item comment that is recorded at the cinema and is displayed next to the item on the order tile of kitchen screens (when the item requires preparing). It can be updated subsequently at the cinema.
  • DeliveryWindowValue is the same as the property set via InSeatOrderDeliveryInfo above, but can be specified per item. The item-level DeliveryWindowValue specified in DeliveryInfo will override any order-level value specified in InSeatOrderDeliveryInfo.
  • DeliveryWindowDescription is also the same property set via InSeatOrderDeliveryInfo above, but can be specified per item. However, since it does not display on the order tile of kitchen screens, it is recommended to use Comment to record notes or comments instead. The item- level DeliveryWindowDescription specified in DeliveryInfo will override any order-level description specified in InSeatOrderDeliveryInfo.

The properties from InSeatOrderDeliveryInfo and DeliveryInfo can be printed onto prepare slips in a cinema's kitchen setup (depending on the print template and if an item requires preparing). For more information on available print template fields, please see Vista's Technical Support Guide.

Delivery windows

Delivery windows allow patrons to request in-seat delivery at a specific time relative to a session start time.

Requesting delivery windows requires that a DeliveryWindowValue is set, which can be:

  • a number in minutes from the start of the session (e.g. '15', '72' or '-5') where a negative number denotes x minutes before the showtime starts, or
  • a percentage of the session duration (e.g. '50%' or '-10%') where a negative percentage denotes a delivery time before the showtime starts (e.g. '-10%' of a 90 min session will set a delivery time 9 minutes before the session start time). For a percentage value, the string must end with '%'.

Default delivery window values and their descriptions (e.g. "1st Sitting", "2nd Sitting"), which have been configured at the cinema can be retrieved via the GetDeliveryWindowsForCinema endpoint.

The following example shows a request for the first item to be delivered halfway through the session via the DeliveryInfo object. All other items are requested for delivery 10 minutes into the session via the order-level InSeatOrderDeliveryInfo object.

POST: /RESTTicketing.svc/order/concessions

Request:

{
    "UserSessionId": "d9664d6202394bb2baac345e349f29b8",
    "CinemaId": "0001",
    "SessionId": "1",
    "Concessions": [
        {
            "ItemId": "000000000000001",
            "Quantity": 1,
            "DeliveryOption": 1,
            "DeliveryInfo": {
                "Seats": [
                    {
                        "RowId": "A",
                        "SeatNumber": "1"
                    }
                ],
                "Comment": "Item comment for my delivery",
                "DeliveryWindowValue": "50%"   <--- This is an item-level DeliveryWindowValue
            }
        },
        {
            "ItemId": "000000000000003",
            "Quantity": 2,
            "DeliveryOption": 1,
            "DeliveryInfo": {
                "Seats": [
                    {
                        "RowId": "A",
                        "SeatNumber": "1"
                    }
                ],
                "Comment": "Item comment for my delivery"
            }
        },
        {
            "ItemId": "000000000000004",
            "Quantity": 1,
            "DeliveryOption": 1,
            "DeliveryInfo": {
                "Seats": [
                    {
                        "RowId": "A",
                        "SeatNumber": "1"
                    }
                ],
                "Comment": "Item comment for my delivery"
            }
        }
    ],
    "InSeatOrderDeliveryInfo": {
        "Comment": "Order comment for my delivery",
        "DeliveryWindowValue": "10"   <--- This is an order-level DeliveryWindowValue
    },
    "ReturnOrder": true
}

Package items

For package items, DeliveryOption must be set to 1 (InSeatDelivery) on the package parent item.

DeliveryInfo can be specified on either the package parent item or package child items. DeliveryInfo specified on a package child item will take precendence over any delivery information specified on the package parent item. If no DeliveryInfo is specified on a child item, it will inherit any DeliveryInfo specified on the parent item.

POST: /RESTTicketing.svc/order/concessions

Request:

{
    "UserSessionId": "d9664d6202394bb2baac345e349f29b8",
    "CinemaId": "0001",
    "SessionId": "1",
    "Concessions": [
        {
            "ItemId": "000000000000005",
            "Quantity": 1,
            "DeliveryOption": 1,
            "DeliveryInfo": {   // DeliveryInfo is specified on the package parent item
                "Seats": [
                    {
                        "RowId": "A",
                        "SeatNumber": "1"
                    }
                ],
                "Comment": "Item comment specified on the parent item",
                "DeliveryWindowValue": "45"
            },
            "PackageChildItems": [
                {   
                    "DeliveryInfo": {   // DeliveryInfo is specified on this package child item, which will be used instead
                        "DeliveryWindowValue": "-10",
                        "Seats": [
                            {
                                "RowId": "A",
                                "SeatNumber": "1"
                            }
                        ],
                        "Comment": "Item comment for first package child item"
                    },
                    "ItemId": "000000000000001",
                    "Quantity": 1
                },
                {   
                    "ItemId": "000000000000003",   // This package child item has no DeliveryInfo, so will inherit DeliveryInfo from the parent
                    "Quantity": 1
                }
            ]
        }
    ],
    "InSeatOrderDeliveryInfo": {
        "Comment": "Order comment for my delivery"
    },
    "ReturnOrder": true
}