NAV
CURL NODEJS C#

Introduction

This document describes the BIGTIX API endpoints provided to partners of BookMyShow Southeast Asia. You can use these API endpoints to get information on the events and movies going on sale in BookMyShow system.

By default, all requests are using the latest version of the API.

Authentication

The API uses OAUTH2 client credential flow to authenticate and identify the caller. For testing, you need to request for your client_id and client_secret to be setup in the testing environment.

Testing environment domain is https://api-sg.uat.bigtix.dev

Create access token

Before calling the subsequent API, you have to create an access_token using the client_id and client_secret assigned to your organization. Add the Bearer access_token to the API Authorization header to identify yourself in the subsequent API calls.

HTTP Request

curl --location --request POST 'https://api.bigtix.io/oauth2/token' \
--header 'Content-Type: application/json' \
--data-raw '{
    "client_id": "tester",
    "client_secret": "secret123456",
    "grant_type": "client_credentials",
    "scope": "api"
}'
var request = require('request');
var options = {
  'method': 'POST',
  'url': 'https://api.bigtix.io/oauth2/token',
  'headers': {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({"client_id":"tester","client_secret":"secret123456","grant_type":"client_credentials","scope":"api"})

};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});
var client = new RestClient("https://api.bigtix.io/oauth2/token");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n    \"client_id\": \"tester\",\n    \"client_secret\": \"secret123456\",\n    \"grant_type\": \"client_credentials\",\n    \"scope\": \"api\"\n}",  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
var request = require('request');
var options = {
  'method': 'POST',
  'url': 'https://api.bigtix.io/oauth2/token',
  'headers': {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({"client_id":"tester","client_secret":"secret123456","grant_type":"client_credentials","scope":"api"})

};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});

POST https://api.bigtix.io/oauth2/token

Request Headers

None.

Request Parameters

None.

Request Body

Request Body

{
    "client_id": "tester",
    "client_secret": "secret123456",
    "grant_type": "client_credentials",
    "scope": "api"
}
Name Type Description
client_id string Client identifier assigned to the organisation.
client_secret string Private password for the client. Do not share.
grant_type string Type of authentication. Supported values: client_credentials
scope string Scope to be granted to the client. Supported values: api.

200 OK Response

Response Body

{
    "token_type": "bearer",
    "access_token": "kgHoEm8Kvln9UejERAaJ5bLqkjO1ZuDD",
    "expires_in": 7200
}
Name Type Description
token_type string Type of the token issued.
access_token string Access token to be set in the header of the subsequent API calls.
expires_in string Expiry duration of the token in seconds.

Basic API Sequence

The diagram below describes a typical basic API calls sequence. It is not mandatory to follow this sequence, but it helps in understanding how to use the API provided.

alt text

Exploratory API

List all products

Returns all the products.

HTTP Request

curl --location --request GET 'https://api.bigtix.io/api/live/v3/products' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y'

GET https://api.bigtix.io/api/live/v3/products

Request Headers

Name Description
Authorization Bearer: {{access_token}}

Request Parameters

Name Description
region (Optional) Filter by region.
productType (Optional) Filter by product type. Supported value: event, external_event, online, package, pass
pageNo (Optional) Page number. Default value: 1.
pageSize (Optional) Number of documents per page. Default value: 20.

Request Body

None.

200 OK Response

200 OK Response Body

{
    "success": true,
    "data": [
        {
            "id": "e043da77-982e-46c0-8c62-0176ae298950",
            "code": "GAEVENT1",
            "type": "event",
            "stopSales": false,
            "isPackage": false,
            "name": "GA Event 1",
            "venue": "Capitol Theatre",
            "cardImageUrl": "//cdn-sea.bookmyshow.com/api/v2/images/182eda84d1d4-1596531072093.jpg",
            "bannerImageUrl": "//cdn-sea.bookmyshow.com/api/v2/images/5908016ed1c8-1596531066136.jpg",
            "minTicketPerTxn": 1,
            "maxTicketPerTxn": 12,
            "currency": {
                "code": "SGD",
                "name": "Singapore Dollar",
                "symbol": "S$",
                "decimals": 2,
                "rounding": 0
            },
            "timezone": {
                "code": "ASIA/SINGAPORE",
                "name": "Singapore Standard Time",
                "offset": 8
            },
            "org": {
                "name": "BookMyShow Singapore",
                "country": "SG",
                "logo": "//cdn-sea.bookmyshow.com/38/44/3844ad1f5be9672711d64dbd8fbb251e.png"
            }
        }
    ]
}
Name Type Description
code string Product code
type string Product type: event, external_event, online, package, pass
stopSales boolean Identifies if the product sale has stopped
isPackage boolean Identifies if it is a package product
name string Product name
venue string Venue name
cardImageUrl string Card image URL
bannerImageUrl string Banner image URL
minTicketPerTxn integer Minimum number of tickets per transaction
maxTicketPerTxn integer Maximum number of tickets per transaction
currency string Base currency of the product
currency.code string Currency code
currency.name string Currency name
currency.symbol string Currency symbol
timezone string Timezone of the product
org string Organization that owns the product

Negative Scenarios

Negative Scenarios Response Body

{
    "success": false,
    "error": {
        "code": "not_found",
        "message": "Product not found",
        "path": "/api/v2/live/listProducts",
        "exception": "ApplicationError: Product not found\n    at ProductsService.listProducts (/dist/products/products.service.js:71:19)\n    at runMicrotasks (<anonymous>)\n    at processTicksAndRejections (internal/process/task_queues.js:97:5)\n    at async ListProductsLiveController.findAll (/dist/products/listproducts.live.controller.js:50:31)",
        "timestamp": "2020-11-09T09:31:53.735Z"
    }
}
HTTP Error Code Error Message Remarks
422 not_found Product not found Product does not exist for the provided channel partner.

Get a single product

Returns the details of the provided product ID.

HTTP Request

curl --location --request GET 'https://api.bigtix.io/api/live/v3/products/MULAND20' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y'

GET https://api.bigtix.io/api/live/v3/products/:productCode

Request Headers

Name Description
Authorization Bearer: {{access_token}}

Request Parameters

Name Description
productCode Product code

Request Body

None.

200 OK Response

200 OK Response Body

{
    "success": true,
    "data": {
        "id": "e043da77-982e-46c0-8c62-0176ae298950",
        "code": "GAEVENT1",
        "type": "event",
        "stopSales": false,
        "isPackage": false,
        "name": "GA Event 1",
        "venue": "Capitol Theatre",
        "cardImageUrl": "//cdn-sea.bookmyshow.com/api/v2/images/182eda84d1d4-1596531072093.jpg",
        "bannerImageUrl": "//cdn-sea.bookmyshow.com/api/v2/images/5908016ed1c8-1596531066136.jpg",
        "minTicketPerTxn": 1,
        "maxTicketPerTxn": 12,
        "passRedeemProducts": [
            {
                "productName": "ABC 123",
                "productCode": "ABC123",
                "sessions": [
                    "*"
                ],
                "tickettypes": [
                    "*"
                ]
            }
        ],
        "bookingInfo": [],
        "currency": {
            "code": "SGD",
            "name": "Singapore Dollar",
            "symbol": "S$",
            "decimals": 2,
            "rounding": 0
        },
        "timezone": {
            "code": "ASIA/SINGAPORE",
            "name": "Singapore Time",
            "offset": 8
        },
        "org": {
            "name": "BookMyShow Singapore",
            "country": "SG",
            "logo": "static.bigtix.dev/b2/4f/b24f1a423d33f6299de64d1da3f80088.jpeg"
        },
        "categories": {
            "A1": {
                "name": "Category A",
                "color": "#2DD4BF",
                "seatType": "GA",
                "autoAssign": false,
                "allowSplitSeats": false,
                "position": 1,
                "hue": 175.0831863901911,
                "saturation": 94.84019157679293,
                "lightness": 76.9231368195963
            }
        },
        "content": {
            "description": "Contrary to popular belief, Lorem Ipsum is not simply random text.",
            "place": "CAPITOL",
            "ageRestriction": "18+",
            "censorshipRating": "UA",
            "languages": [
                "EN"
            ],
            "subTitleLanguages": [
                "EN"
            ],
            "format": [
                "3D",
                "2D"
            ],
            "genres": [
                "concert",
                "comedy"
            ],
            "duration": 180,
            "startDate": "2020-08-04",
            "startTime": "20:54",
            "endDate": "2020-08-09",
            "endTime": "18:54",
            "startPrice": 10,
            "trailerURL": "www.youtube.com/GAEVENT1",
            "socialSharing": {
                "Facebook": "http://facebook.com",
                "Instagram": "http://instagram.com"
            },
            "sections": {
                "pretext": {
                    "text": "<p>Custom card details</p>",
                    "title": "Custom card title",
                    "visible": true,
                    "position": 1
                },
                "highlights": {
                    "visible": true,
                    "title": "Highlights",
                    "position": 2,
                    "value": [
                        {
                            "id": "5886b186-a0af-4d47-ac36-1833b117ceb8",
                            "text": "Highlight 1"
                        },
                        {
                            "text": "Highlight 2",
                            "id": "f6049b8b-3b62-468d-b7bb-5c304f4c3e8c"
                        }
                    ]
                },
                "importantNotes": {
                    "text": "<p>Important Information Card</p>",
                    "position": 3,
                    "title": "Important Information",
                    "visible": true
                },
                "galleries": {
                    "visible": true,
                    "title": "Gallery",
                    "position": 5,
                    "value": [
                        {
                            "key": "8b9724b9-8b41-405a-a60a-2f9fe8bfaa4c",
                            "type": "external",
                            "url": "https://www.youtube.com/watch?v=xsngloRfnHY"
                        }
                    ]
                },
                "synopsis": {
                    "text": "<p>Synopsis card</p>",
                    "title": "Synopsis",
                    "visible": true,
                    "position": 4
                },
                "termsAndCond": {
                    "text": "<p>Terms and conditions card</p>",
                    "position": 6,
                    "title": "Terms and Conditions",
                    "visible": true
                },
                "posttext": {
                    "text": "<p>custom details</p>",
                    "title": "custom title",
                    "visible": true,
                    "position": 7
                },
                "directorAndCast": {
                    "visible": true,
                    "title": "Director and Cast",
                    "position": 3,
                    "director": [
                        {
                            "id": "8cd3da82-a726-4892-a38e-be9b59b7f23b",
                            "name": "Karan Johar",
                            "imgName": "karan.jpg",
                            "url": "/static.bigtix.pro/mov/202010/e39ff71806e4-1602125210135.jpg"
                        }
                    ],
                    "cast": [
                        {
                            "id": "318a939a-5b98-497d-a292-2dd294eb3ee7",
                            "name": "Shahrukh khan",
                            "imgName": "khan.jpg",
                            "url": "/static.bigtix.pro/mov/202010/464f9706278d-1602125220943.jpg"
                        }
                    ]
                }
            }
        }
    }
}

200 OK Response Body for Package

{
  "success": true,
  "data": {
    "_id": "d239b83b-3234-4f51-b7e1-c7522ea03e4e",
    "code": "WYPBIEBC",
    "bannerImageUrl": "",
    "cardImageUrl": "",
    "content": {
      "socialMedia": [],
      "sections": {}
    },
    "currency": {
      "symbol": "S$",
      "name": "Singapore Dollar",
      "code": "SGD"
    },
    "isPackage": true,
    "maxTicketPerTxn": 12,
    "minTicketPerTxn": 1,
    "name": "External Package",
    "packageType": "flexible",
    "packagedProducts": [
      {
        "position": 1,
        "productCode": "WYA29155",
        "productName": "GA Event",
        "productType": "event",
        "isCompulsory": false,
        "sessionCodes": [
          {
            "code": "3LZ5",
            "startDateTime": "2024-11-01 00:00:00"
          }
        ],
        "ticketTypes": [
          {
            "code": "T1",
            "minQuantityPerPackage": 1,
            "maxQuantityPerPackage": 1,
            "name": "Ticket T1",
            "category": "C1",
            "categoryName": "Cat 1"
          }
        ],
        "isMultiSession": false,
        "packagedCategories": {
          "C1": {
            "allowSplitSeats": false,
            "autoAssign": false,
            "minQuantityPerPackage": 1,
            "maxQuantityPerPackage": 1
          }
        },
        "categories": [
          {
            "category": "C1",
            "categoryName": "Cat 1",
            "catColor": "#E02424",
            "autoAssign": false
          }
        ]
      },
      {
        "position": 2,
        "productCode": "WYY27686",
        "productName": "WYY27686 External",
        "productType": "event",
        "isCompulsory": false,
        "sessionCodes": [
          {
            "code": "3LZ5",
            "startDateTime": "2024-09-01 00:00:00"
          },
          {
            "code": "QXG5",
            "startDateTime": "2024-09-18 00:00:00"
          }
        ],
        "ticketTypes": [
          {
            "code": "T1",
            "minQuantityPerPackage": 1,
            "maxQuantityPerPackage": 1,
            "name": "Ticket T1",
            "category": "C1",
            "categoryName": "Cat 1"
          }
        ],
        "isMultiSession": false,
        "packagedCategories": {
          "C1": {
            "allowSplitSeats": false,
            "autoAssign": false,
            "minQuantityPerPackage": 1,
            "maxQuantityPerPackage": 1
          }
        },
        "categories": [
          {
            "category": "C1",
            "categoryName": "Cat 1",
            "catColor": "#E02424",
            "autoAssign": false
          }
        ]
      }
    ],
    "passRedeemProducts": [],
    "placeDetail": {},
    "salesProfileSettings": [
      {
        "code": "LZ",
        "name": "sales profile",
        "tags": [],
        "productXtickettype": [
          {
            "product": "WYA29155",
            "tickettype": "T1",
            "packageUnitPrice": 20
          },
          {
            "product": "WYY27686",
            "tickettype": "T1",
            "packageUnitPrice": 18
          }
        ],
        "minimumPrice": 18,
        "maxQuantityPerTransaction": 99999,
        "minQuantityPerTransaction": 1
      }
    ],
    "stopSales": false,
    "type": "event",
    "venueDetail": {},
    "id": "d239b83b-3234-4f51-b7e1-c7522ea03e4e"
  }
}
Name Type Description
code string Product code
type string Product type: event, external_event, online, package, pass
stopSales boolean Identifies if the product sale has stopped
isPackage boolean Identifies if it is a package product?
name string Product name
venue string Venue name
cardImageUrl string Card image URL
bannerImageUrl string Banner image URL
minTicketPerTxn integer Minimum number of tickets per transaction
maxTicketPerTxn integer Maximum number of tickets per transaction
passRedeemProducts array Array of product that can be redeemed with Pass
passRedeemProducts[].productName string Product name
passRedeemProducts[].productCode string Product code
passRedeemProducts[].sessions array Applicable sessions. * means all.
passRedeemProducts[].tickettypes array Applicable ticket types. * means all.
packageType string Applicable to a package. Possible values flexible fixed
currency object Base currency of the product
currency.code string Currency code
currency.name string Currency name
currency.symbol string Currency symbol
currency.decimals integer Number of decimals of the currency
currency.rounding integer Rounding used in currency. Deprecated and will be removed.
timezone object Timezone of the product
timezone.code string Timezone code
timezone.name string Timezone name
timezone.offset decimal Offset of the timezone
org object Organization that owns the product
org.name string Organization name
org.country string Organization's registered country
org.logo string Organization's logo image
categories array Array of price categories
categories[code] object Category code
categories[code].name string Category name
categories[code].description string Long description of the category
categories[code].color string Display colour of the category
categories[code].seatType string Seating type. Possible values: General Admission - GA or Reserved Seating - RS
categories[code].autoAssign boolean Automatic seat allocation instead of manual selection
categories[code].order integer Display order of the category. Smallest number will be displayed first
content object Web content of the product
content.description string Long description of the product
content.place string Text label of the place where the product is happening
content.ageRestriction string Text label of the age restriction
content.censorshipRating string Text label of censorship rating
content.languages array Array of language codes
content.subTitleLanguages array Array of subTitleLanguages codes
content.format array Array of format codes
content.genres array Array of genre labels
content.duration integer Duration of the event or movie in minutes
content.startDate string Starting date of the event or movie
content.startTime string Starting time of the event or movie
content.endDate string Ending date of the event or movie
content.endTime string Ending time of the event or movie
content.startPrice decimal Indicative starting price
content.trailerURL string Movie trailer URL link
content.socialSharing string Social sharing links
content.sections string Content sections. Each section contains partial information for the product
content.sections[pretext] object Information to be shown at the top
content.sections[highlights] object Highlights of the event or movie
content.sections[importantNotes] object Important notes for the customer
content.sections[galleries] object Images, videos, and trailers of the event or movie
content.sections[synopsis] object Synopsis writeup of the event or movie
content.sections[termsAndCond] object Terms and conditions
content.sections[posttext] object Information to be shown at the bottom
content.sections[directorAndCast] object Director and Cast details of the movie
stopSales boolean Determins whether the sale of the package has stopped
venueDetail object Venue detail object
venueDetail.name string Venue name
venueDetail.place string Venue place
packagedProduct object Details of the packaged product
packagedProduct.position integer Position of the product in a package
packagedProduct.productCode string Product's code that is in a package
packagedProduct.packagedCategories object Details of the product's category in a package
packagedProduct.packagedCategories.CATEGORY_CODE object Category object of a packaged's product
packagedProduct.packagedCategories.CATEGORY_CODE.allowSplitSeats boolean Determines if category allows seats to be splitted
packagedProduct.packagedCategories.CATEGORY_CODE.autoAssign boolean Determines if category allows seats to be auto assigned
packagedProduct.packagedCategories.CATEGORY_CODE.minQuantityPerPackage integer Minimum quantity of the ticket in a package
packagedProduct.packagedCategories.CATEGORY_CODE.maxQuantityPerPackage integer Maximum quantity of the ticket in a package
salesProfileSettings object Only applicable to package. Sales profile settings object
salesProfileSettings.code string Only applicable to package. Sales profile settings code
salesProfileSettings.tag array Only applicable to package. Sales profile settings tag
salesProfileSettings.minimumPrice decimal Only applicable to package. Package's minimum price
salesProfileSettings.maxQuantityPerTransaction integer Only applicable to package. Package's maximum quantity per transaction
productXtickettype[].product string Only applicable to package. Product in the package
productXtickettype[].tickettype string Only applicable to package. Ticket type in package
productXtickettype[].packageUnitPrice string Only applicable to package. Unit price of package.

Negative Scenarios

Negative Scenarios Response Body

{
    "success": false,
    "error": {
        "code": "not_found",
        "message": "Product not found",
        "path": "/api/v2/live/listProducts/BLKWIDOW1",
        "exception": "ApplicationError: Product not found\n    at ProductsService.listProduct (/dist/products/products.service.js:71:19)\n    at runMicrotasks (<anonymous>)\n    at processTicksAndRejections (internal/process/task_queues.js:97:5)\n    at async ListProductsLiveController.getLive (/dist/products/listproducts.live.controller.js:50:31)",
        "timestamp": "2020-12-07T09:31:53.735Z"
    }
}
HTTP Error Code Error Message Remarks
422 not_found Product not found Product with the given code does not exist in the database.

List a product's sessions

Returns the sessions of a product for the provided product code.

HTTP Request

curl --location --request GET 'https://api.bigtix.io/api/live/v3/sessions?product=MULAND20&session=3LZ6' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y'

GET https://api.bigtix.io/api/live/v3/sessions

Request Headers

Name Description
Authorization Bearer: {{access_token}}

Request Parameters

Name Description
product Product code
session (Optional) Session code. Provides more details of a specific product's session
pageNo (Optional) Page number. Default value: 1
pageSize (Optional) Number of documents per page. Default value: 20

Request Body

None.

200 OK Response

200 OK Response Body for General Admission or Reserved Seating with product URL params

{
    "success": true,
    "data": [
        {
            "code": "3LZ5",
            "product": "WYGATIXC",
            "startDateTime": "2023-08-01 00:00:00",
            "endDateTime": "2023-08-31 00:00:00",
            "availability": "available",
            "place": "Active Place",
            "venue": "Singapore Sports Stadium",
            "city": "Singapore",
            "state": "Singapore",
            "totalCapacity": 2000,
            "remaining": 1994
        }
    ]
}

200 OK Response Body for General Admission with product and session URL params

{
    "success": true,
    "data": {
        "code": "3LZ5",
        "product": "WYGATIXC",
        "startDateTime": "2023-08-01 00:00:00",
        "endDateTime": "2023-08-31 00:00:00",
        "availability": "available",
        "venue": "Singapore Sports Stadium",
        "orphanSeat": null,
        "venueLayoutDetail": {
            "capacityPerCategory": [
                {
                    "categoryCode": "GA",
                    "section": "S0",
                }
            ]
        }
    }
}

200 OK Response Body for Reserved Seating with product and session URL params

{
    "success": true,
    "data": {
        "code": "3LZ6",
        "product": "WYRSTIXC",
        "startDateTime": "2023-08-01 00:00:00",
        "endDateTime": "2024-10-31 00:00:00",
        "availability": "available",
        "venue": "[Bryan] Venue",
        "orphanSeat": null,
        "venueLayoutDetail": {
            "capacityPerCategory": [
                {
                    "categoryCode": "C4",
                    "section": "Upper Circle Center",
                    "sectionId": "c2669bfc-5f3b-4b0a-a892-1f0960a5158a",
                    "inventoryId": "28f22dfd-ef19-4da7-ae70-856217886f0a"
                },
                {
                    "categoryCode": "C4",
                    "section": "Upper Circle Right",
                    "sectionId": "82ee55a6-bfda-4408-860e-6dc9b9b21265",
                    "inventoryId": "28f22dfd-ef19-4da7-ae70-856217886f0a"
                }
            ],
            "seatPlan":{
                "svgUrl": "https://static.bigtix.dev/uat-v1/202311/f0fa6ab86f6e-1701357251707.svg",
                "sections": [
                    {
                        "seatplanId": "e0e7188f-a743-45a0-a003-e2eccbdad979",
                        "svgUrl": "https://static.bigtix.dev/uat-v1/202311/ab9b29a626bd-1701357268853.svg",
                        "fileName": "Dress Circle Center.svg",
                        "seats": [
                            "seat-DressCircleCenter-A-11",
                            "seat-DressCircleCenter-A-12",
                            "seat-DressCircleCenter-A-13",
                            "seat-DressCircleCenter-A-14",
                        ]
                    },
                    {
                        "seatplanId": "e0e7188f-a743-45a0-a003-e2eccbdad979",
                        "svgUrl": "https://static.bigtix.dev/uat-v1/202311/8bb2666c6aa6-1701357268851.svg",
                        "fileName": "Dress Circle Left.svg",
                        "seats": [
                            "seat-DressCircleLeft-A-2",
                            "seat-DressCircleLeft-A-3",
                            "seat-DressCircleLeft-A-4",
                            "seat-DressCircleLeft-A-5",
                        ]
                    }
                ],
                "areas": [
                    {
                        "seatplanId": "e0e7188f-a743-45a0-a003-e2eccbdad979",
                        "areaCode": "1R",
                        "seats": [
                            "seat-VIP-A-001",
                            "seat-VIP-A-002",
                            "seat-VIP-A-003",
                            "seat-VIP-A-004",
                            "seat-VIP-A-005",
                        ],
                        "categoryCode": "C1",
                        "entrance": "",
                        "section": "VIP",
                        "sectionId": "3eeadbb0-2fd8-4e03-9bac-1bd198f71f32"
                    },
            }
        }
    }
}
Name Type Description
code string Session code
attributes array Array of attributes codes that describes a movie format, such as 2D, 3D
product string Product code
startDateTime string Session starting date and time
endDateTime string Ending data and time of the session
availability string Availability of tickets or seats. Possible values: available, selling_fast, sold_out.
place string Place where the event / movie is held. E.g. for Movie (Cinema complex)
venue string Venue where the event / movie is held. E.g. for Movie (Hall 1)
city string City where the event / movie is held
state string State where the event / movie is held
totalCapacity integer Total number of tickets or seats available
remaining integer Remaining tickets or seats available for sale
venueLayoutDetail.capacityPerCategory[].categoryCode string Category code
venueLayoutDetail.capacityPerCategory[].section string Section of the venue
venueLayoutDetail.capacityPerCategory[].sectionId string Section ID. Only applicable to Reserved Seating event
venueLayoutDetail.capacityPerCategory[].inventoryId string Inventory ID
venueLayoutDetail.seatPlan.svgUrl string seatPlan.svgUrl
venueLayoutDetail.seatPlan.sections[] array Details of the sections map
venueLayoutDetail.seatPlan.sections[].seatplanId string Seat plan ID of a section
venueLayoutDetail.seatPlan.sections[].svgUrl string Seat plan section map. Please refer to the section 'SEATPLAN.SECTIONS[].SVGURL DOCUMENT EXPLANATION' for more details
venueLayoutDetail.seatPlan.sections[].fileName string File name of the SVG file
venueLayoutDetail.seatPlan.sections[].seats string Seats in a section
venueLayoutDetail.seatPlan.areas[].seatplanId string Seat plan ID
venueLayoutDetail.seatPlan.areas[].areaCode string Area Code
venueLayoutDetail.seatPlan.areas[].seats[] array Seats in the area
venueLayoutDetail.seatPlan.areas[].categoryCode string Area's category code
venueLayoutDetail.seatPlan.areas[].entrance string Area's entrance name
venueLayoutDetail.seatPlan.areas[].section string Area's section name
venueLayoutDetail.seatPlan.areas[].sectionId string Area's section ID

Negative Scenarios

HTTP Error Code Error Message Remarks
400 bad_request Parameter [product] must not be empty Product code is not provided in URL parameter
422 not_found Product not found Product with the given code does not exist.

Negative Scenarios Response Body

{
    "success": false,
    "error": {
        "code": "not_found",
        "message": "Product not found",
        "path": "/api/v2/live/sessions/?product=BLKWIDOW1",
        "exception": "ApplicationError: Product not found\n    at SessionsService.listSessions (/dist/sessions/sessions.service.js:75:19)\n    at runMicrotasks (<anonymous>)\n    at processTicksAndRejections (internal/process/task_queues.js:97:5)\n    at async SessionsLiveController.getLive (/dist/sessions/sessions.live.controller.js:116:33)",
        "timestamp": "2020-12-09T09:32:52.822Z"
    }
}

seatPlan.svgUrl Document Explanation

This svg contains the inventory map of the event. The screenshot belows shows how the Inventory mapping looks like.

attributes Remarks
g Inside <g#layer-overview></g>, all these are belonged to the same group
path#id Id of the area
path#link Links to the section svg files. Please ensure the svg files specified here exists and with the same name stated at the link attribute. Refer to seatPlan.svg Example for the SVG content example.

img

seatPlan.svg Example

<svg viewBox="0 0 500 700" version="1.1" xmlns="http://www.w3.org/2000/svg">
    <g id="layer-overview">
        <path id="area-S1" d="m 10 10 l 480 0 l 0 200 l -480 0 l 0 -200" style="fill:#F0F0F0;stroke:#555;stroke-width:1px;"/>
        <path id="area-S2" d="m 10 220 l 480 0 l 0 200 l -480 0 l 0 -200" style="fill:#F0F0F0;stroke:#555;stroke-width:1px;" link="Section Map S2.svg"/>
        <path id="area-S3" d="m 10 430 l 480 0 l 0 200 l -480 0 l 0 -200" style="fill:#F0F0F0;stroke:#555;stroke-width:1px;" link="Section Map S3.svg"/>
    </g>
    <g id="layer-seats">
        <g id="seats">
            <g>
                <circle cx="40" cy="40" r="20" id="seat-S1-A-1"></circle>
                <circle cx="85" cy="40" r="20" id="seat-S1-A-2"></circle>
                <circle cx="130" cy="40" r="20" id="seat-S1-A-3"></circle>
                <circle cx="175" cy="40" r="20" id="seat-S1-A-4"></circle>
                <circle cx="220" cy="40" r="20" id="seat-S1-A-5"></circle>
                <circle cx="265" cy="40" r="20" id="seat-S1-A-6"></circle>
                <circle cx="310" cy="40" r="20" id="seat-S1-A-7"></circle>
                <circle cx="355" cy="40" r="20" id="seat-S1-A-8"></circle>
                <circle cx="400" cy="40" r="20" id="seat-S1-A-9"></circle>
                <circle cx="445" cy="40" r="20" id="seat-S1-A-10"></circle>
            </g>
            <g>
                <circle cx="40" cy="85" r="20" id="seat-S1-B-1"></circle>
                <circle cx="85" cy="85" r="20" id="seat-S1-B-2"></circle>
                <circle cx="130" cy="85" r="20" id="seat-S1-B-3"></circle>
                <circle cx="175" cy="85" r="20" id="seat-S1-B-4"></circle>
                <circle cx="220" cy="85" r="20" id="seat-S1-B-5"></circle>
                <circle cx="265" cy="85" r="20" id="seat-S1-B-6"></circle>
                <circle cx="310" cy="85" r="20" id="seat-S1-B-7"></circle>
                <circle cx="355" cy="85" r="20" id="seat-S1-B-8"></circle>
                <circle cx="400" cy="85" r="20" id="seat-S1-B-9"></circle>
                <circle cx="445" cy="85" r="20" id="seat-S1-B-10"></circle>
            </g>
            <g>
                <circle cx="40" cy="130" r="20" id="seat-S1-C-1"></circle>
                <circle cx="85" cy="130" r="20" id="seat-S1-C-2"></circle>
                <circle cx="130" cy="130" r="20" id="seat-S1-C-3"></circle>
                <circle cx="175" cy="130" r="20" id="seat-S1-C-4"></circle>
                <circle cx="220" cy="130" r="20" id="seat-S1-C-5"></circle>
                <circle cx="265" cy="130" r="20" id="seat-S1-C-6"></circle>
                <circle cx="310" cy="130" r="20" id="seat-S1-C-7"></circle>
                <circle cx="355" cy="130" r="20" id="seat-S1-C-8"></circle>
                <circle cx="400" cy="130" r="20" id="seat-S1-C-9"></circle>
                <circle cx="445" cy="130" r="20" id="seat-S1-C-10"></circle>
            </g>
            <g>
                <circle cx="40" cy="175" r="20" id="seat-S1-D-1"></circle>
                <circle cx="85" cy="175" r="20" id="seat-S1-D-2"></circle>
                <circle cx="130" cy="175" r="20" id="seat-S1-D-3"></circle>
                <circle cx="175" cy="175" r="20" id="seat-S1-D-4"></circle>
                <circle cx="220" cy="175" r="20" id="seat-S1-D-5"></circle>
                <circle cx="265" cy="175" r="20" id="seat-S1-D-6"></circle>
                <circle cx="310" cy="175" r="20" id="seat-S1-D-7"></circle>
                <circle cx="355" cy="175" r="20" id="seat-S1-D-8"></circle>
                <circle cx="400" cy="175" r="20" id="seat-S1-D-9"></circle>
                <circle cx="445" cy="175" r="20" id="seat-S1-D-10"></circle>
            </g>
        </g>
    </g>
</svg>

seatPlan.sections[].svgUrl Document Explanation

attributes Remarks
g Inside <g></g>, all the circles are belonged to the same group
g#seats All within the same belongs to one group. Best seat allocation sequence is from top to bottom and allocated within the same group. SVG example code shown on the right shows there are 4 groups of seats. The screenshot belows shows how the section mapping looks like. Refer to seatPlan.sections[].svg Example for the SVG content example.

img

seatPlan.sections[].svg Example

<svg viewBox="0 0 500 700" version="1.1" xmlns="http://www.w3.org/2000/svg">
    <g id="layer-seats">
        <g id="seats">
            <g>
                <circle cx="40" cy="250" r="20" id="seat-S2-E-1"></circle>
                <circle cx="85" cy="250" r="20" id="seat-S2-E-2"></circle>
                <circle cx="130" cy="250" r="20" id="seat-S2-E-3"></circle>
                <circle cx="175" cy="250" r="20" id="seat-S2-E-4"></circle>
                <circle cx="220" cy="250" r="20" id="seat-S2-E-5"></circle>
                <circle cx="265" cy="250" r="20" id="seat-S2-E-6"></circle>
                <circle cx="310" cy="250" r="20" id="seat-S2-E-7"></circle>
                <circle cx="355" cy="250" r="20" id="seat-S2-E-8"></circle>
                <circle cx="400" cy="250" r="20" id="seat-S2-E-9"></circle>
                <circle cx="445" cy="250" r="20" id="seat-S2-E-10"></circle>
            </g>
            <g>
                <circle cx="40" cy="295" r="20" id="seat-S2-F-1"></circle>
                <circle cx="85" cy="295" r="20" id="seat-S2-F-2"></circle>
                <circle cx="130" cy="295" r="20" id="seat-S2-F-3"></circle>
                <circle cx="175" cy="295" r="20" id="seat-S2-F-4"></circle>
                <circle cx="220" cy="295" r="20" id="seat-S2-F-5"></circle>
                <circle cx="265" cy="295" r="20" id="seat-S2-F-6"></circle>
                <circle cx="310" cy="295" r="20" id="seat-S2-F-7"></circle>
                <circle cx="355" cy="295" r="20" id="seat-S2-F-8"></circle>
                <circle cx="400" cy="295" r="20" id="seat-S2-F-9"></circle>
                <circle cx="445" cy="295" r="20" id="seat-S2-F-10"></circle>
            </g>
            <g>
                <circle cx="40" cy="340" r="20" id="seat-S2-G-1"></circle>
                <circle cx="85" cy="340" r="20" id="seat-S2-G-2"></circle>
                <circle cx="130" cy="340" r="20" id="seat-S2-G-3"></circle>
                <circle cx="175" cy="340" r="20" id="seat-S2-G-4"></circle>
                <circle cx="220" cy="340" r="20" id="seat-S2-G-5"></circle>
                <circle cx="265" cy="340" r="20" id="seat-S2-G-6"></circle>
                <circle cx="310" cy="340" r="20" id="seat-S2-G-7"></circle>
                <circle cx="355" cy="340" r="20" id="seat-S2-G-8"></circle>
                <circle cx="400" cy="340" r="20" id="seat-S2-G-9"></circle>
                <circle cx="445" cy="340" r="20" id="seat-S2-G-10"></circle>
            </g>
            <g>
                <circle cx="40" cy="385" r="20" id="seat-S2-H-1"></circle>
                <circle cx="85" cy="385" r="20" id="seat-S2-H-2"></circle>
                <circle cx="130" cy="385" r="20" id="seat-S2-H-3"></circle>
                <circle cx="175" cy="385" r="20" id="seat-S2-H-4"></circle>
                <circle cx="220" cy="385" r="20" id="seat-S2-H-5"></circle>
                <circle cx="265" cy="385" r="20" id="seat-S2-H-6"></circle>
                <circle cx="310" cy="385" r="20" id="seat-S2-H-7"></circle>
                <circle cx="355" cy="385" r="20" id="seat-S2-H-8"></circle>
                <circle cx="400" cy="385" r="20" id="seat-S2-H-9"></circle>
                <circle cx="445" cy="385" r="20" id="seat-S2-H-10"></circle>
            </g>
        </g>
    </g>
</svg>

List a product's inventories

Returns the inventories of a product for the provided session code.

HTTP Request

curl --location --request GET 'https://api.bigtix.io/api/live/v3/inventories?product=MULAND20&session=D414' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y'

GET https://api.bigtix.io/api/live/v3/inventories

Request Headers

Name Description
Authorization Bearer: {{access_token}}

Request Parameters

Name Description
product Product code
session Session code

Request Body

None.

200 OK Response

200 OK Response Body

{
    "success": true,
    "data": [
        {
            "id": "b6bafecc-76a0-42ea-96df-f666155b46c8",
            "totalCapacity": 20,
            "remaining": 10,
            "type": "rs",
            "product": "ABRSTIRS",
            "session": "3LZ5",
            "category": "RS",
            "section": "15b87560-f343-40ec-817d-09ba4d2b0c39",
            "categoriesDetail": {
                "RS": {
                    "autoAssign": true,
                    "color": "#E02424",
                    "name": "RS 1",
                    "position": 1
                },
                "R2": {
                    "autoAssign": true,
                    "color": "#5850EC",
                    "name": "Cat R2",
                    "position": 2
                }
            }
        }
    ]
}
Name Type Description
id string Inventory ID
totalCapacity integer Total number of seats
remaining integer Total number of seats remaining
type string Seating type. Possible values: General Admission - ga or Reserved Seating - rs
product string Product code
session string Session code
category string Category code
section string Section code. Only present when the product is a reserved seating
categoriesDetail array Details of the categories
categoriesDetail.{categoryCode}.autoAssign boolean Allow automatic seat allocation
categoriesDetail.{categoryCode}.color string Category color
categoriesDetail.{categoryCode}.name string Category name
categoriesDetail.{categoryCode}.position integer Category position

Negative Scenarios

Negative Scenarios Response Body

{
    "success": false,
    "error": "Bad Request",
    "statusCode": 400,
    "message": "Parameter [product] must not be empty."
}
HTTP Error Code Error Message Remarks
400 bad_request Parameter [product] must not be empty Product code is not provided in URL parameter
400 bad_request Parameter [session] must not be empty Session code is not provided in URL parameter
500 server_error Server error Server or network issue

List ticket types

Returns the ticket types for a session of product for the provided session code. Ticket types represent the different prices for a product and are grouped by category.

HTTP Request

curl --location --request GET 'https://api.bigtix.io/api/live/v3/tickettypes?product=MULAND20&session=D414' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y'

GET https://api.bigtix.io/api/live/v3/tickettypes

Request Headers

Name Description
Authorization Bearer: {{access_token}}

Request Parameters

Name Description
product Product code
session Session code
pageNo (Optional) Page number. Default value: 1
pageSize (Optional) Number of documents per page. Default value: 20

Request Body

None.

200 OK Response

200 OK Response Body

{
    "success": true,
    "data": [
        {
            "product": "GAEVENT1",
            "category": {
                "code": "GB",
                "name": "GA Cat 1",
                "description": null,
                "color": "#E02424",
                "autoAssign": false,
                "position": 1
            },
            "tickettypes": [
                {
                    "code": "G1",
                    "name": "GA Ticket 1",
                    "order": 1,
                    "price": 50,
                    "isStandardPrice": false,
                    "isComplimentary": false,
                    "isBundle": false,
                    "bundledTicketTypes": [],
                    "minQuantityPerTransaction": 1,
                    "deliveryMethods": [
                        {
                            "code": "ETICKET",
                            "instructions": ""
                        }
                    ]
                },
                {
                    "code": "G2",
                    "name": "GA Ticket 2",
                    "order": 2,
                    "price": 50,
                    "isStandardPrice": false,
                    "isComplimentary": false,
                    "isBundle": false,
                    "bundledTicketTypes": [],
                    "minQuantityPerTransaction": 1,
                    "deliveryMethods": [
                        {
                            "code": "ETICKET",
                            "instructions": ""
                        }
                    ]
                },
                {
                    "code": "GB",
                    "name": "GA Bundle Ticket",
                    "order": 3,
                    "price": 80,
                    "isStandardPrice": false,
                    "isComplimentary": false,
                    "isBundle": true,
                    "bundledTicketTypes": [
                        {
                            "ticketTypeCode": "G1",
                            "ticketTypeName": "GA Ticket 1",
                            "quantity": 1,
                            "unitPrice": 50
                        },
                        {
                            "ticketTypeCode": "G2",
                            "ticketTypeName": "GA Ticket 2",
                            "quantity": 1,
                            "unitPrice": 30
                        }
                    ],
                    "minQuantityPerTransaction": 1,
                    "deliveryMethods": [
                        {
                            "code": "ETICKET",
                            "instructions": ""
                        }
                    ]
                }
            ]
        },
    ]
}
Name Type Description
product string Product code
category object Category object
category.code string Category code
category.name string Category name
category.description string Category long description
category.color string Category color code
category.autoAssign boolean Automatic seat allocation instead of manual selection
category.order integer Display order of the category. Smallest number will be displayed first
tickettypes array Array of ticket type
tickettypes[].code string Ticket type code
tickettypes[].name string Ticket type name
tickettypes[].description string Long description of the ticket type
tickettypes[].order integer Display order of the ticket type. Smallest number will be displayed first
tickettypes[].price decimal Ticket price
tickettypes[].isStandardPrice boolean Identifies if it is standard ticket price
tickettypes[].isComplimentary boolean Identifies if it is a complimentary ticket
tickettypes[].isBundle boolean Identifies if it is a bundle ticket
tickettypes[].bundledTicketTypes[].ticketTypeCode string Code of ticket type
tickettypes[].bundledTicketTypes[].ticketTypeName string Name of ticket type
tickettypes[].bundledTicketTypes[].quantity string Quatity of ticket in the bundle
tickettypes[].bundledTicketTypes[].unitPrice string Unit price of ticket in the bundle
tickettypes[].minQuantityPerTransaction integer Minimum number of tickets per transaction
tickettypes[].maxQuantityPerTransaction integer Maximum number of tickets per transaction
tickettypes[].deliveryMethods array Delivery methods available
tickettypes[].deliveryMethods[].code string Delivery method code
tickettypes[].deliveryMethods[].instructions string Special instructions for choosen delivery method

Negative Scenarios

Negative Scenarios Response Body

{
    "success": false,
    "error": {
        "code": "not_found",
        "message": "Product not found",
        "path": "/api/v2/live/tickettypes?product=AVENGERS&sessions=X0XV",
        "exception": "ApplicationError: Product not found\n    at SessionsService.listSessions (/dist/sessions/sessions.service.js:75:19)\n    at runMicrotasks (<anonymous>)\n    at processTicksAndRejections (internal/process/task_queues.js:97:5)\n    at async SessionsLiveController.getLive (/dist/sessions/sessions.live.controller.js:116:33)",
        "timestamp": "2020-12-09T09:32:52.822Z"
    }
}
HTTP Error Code Error Message Remarks
400 bad_request Parameter [product] must not be empty Product code is not provided in URL parameter
400 bad_request Parameter [session] must not be empty Session code is not provided in URL parameter
422 not_found Product not found! Incorrect / invalid product code is given
422 invalid_session_code Invalid Session Code Incorrect / invalid session code is given

List delivery methods

Returns all the delivery methods for a product. Delivery method indicates how the customer receives the purchased tickets. Please check against the allowed delivery methods for the selected ticket types before proceeding.

HTTP Request

curl --location --request GET 'https://api.bigtix.io/api/live/v3/deliverymethods' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y'

GET https://api.bigtix.io/api/live/v3/deliverymethods

Request Headers

Name Description
Authorization Bearer: {{access_token}}

Request Parameters

None.

Request Body

None.

200 OK Response

200 OK Response Body

{
    "success": true,
    "data": [
        {
            "code": "EMAIL",
            "name": "E-Ticket"
        },
        {
            "code": "PICKUPAGENT",
            "name": "Collect at Authorised Agent",
            "description": "Ticket(s) can be collected at The Theatre Practice.",
            "meta": {
                "pickUpPoints": [
                    {
                        "code": "TTP",
                        "name": "The Theatre Practice",
                        "description": "54 Waterloo St, Singapore 187953"
                    }
                ]
            }
        },
        {
            "code": "COURIER",
            "name": "Courier",
            "description": "We deliver to all countries, except China, Russia, Indonesia, and Vietnam.",
            "meta": {
                "requiresMailAddress": true,
                "countries": [
                    "SG",
                    "MY",
                    "ID"
                ]
            }
        },
        {
            "code": "REGISTERED",
            "name": "Registered Mail",
            "description": "Support local mailing address only.",
            "meta": {
                "requiresMailAddress": true,
                "countries": [
                    "SG",
                    "MY",
                    "ID"
                ]
            }
        },
        {
            "code": "POST",
            "name": "Standard Mail",
            "description": "Support local mailing address only.",
            "meta": {
                "requiresMailAddress": true,
                "countries": [
                    "SG",
                    "MY",
                    "ID"
                ]
            }
        }
    ]
}
Name Type Description
code string Delivery method code
name string Delivery method name
description string Delivery method description
meta object Additional information
meta.requiresMailAddress boolean Identifies if frontend needs to capture the mailing address
meta.countries array Countries accepted by the delivery method
meta.pickUpPoints array Pickup points
meta.pickUpPoints[].code string Pickup point code
meta.pickUpPoints[].name string Pickup point name
meta.pickUpPoints[].description string Pickup point description

Check product status

Returns the status of the product. Checks if the product is available to be purchased.

HTTP Request

curl --location --request GET 'https://api.bigtix.io/api/live/v3/products/status' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y'

GET https://api.bigtix.io/api/live/v3/products/status

Request Headers

Name Description
Authorization Bearer: {{access_token}}

Request Parameters

Name Description
productCode Product code
packageCode Package code

Request Body

None.

200 OK Response

200 OK Response Body

{
    "success": true,
    "data":
        {
            "status": "available"
        }
}
Name Type Description
status string Availability of product and pacakge. Possible values: available or unavailable

Transactional API

List available seats

Returns all available seats for a reserved seating event for the provided product or session code. This API provides the seat status to be represented graphically in the seat plan displayed to the customers. It contains the position data which can be used to draw the simple 2D seat plan if required.

HTTP Request

curl --location --request GET 'https://api.bigtix.io/api/live/v3/seats?product=MULAND20&session=D414' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y'

GET https://api.bigtix.io/api/live/v3/seats

Request Headers

Name Description
Authorization Bearer: {{access_token}}

Request Parameters

Name Description
product Product code
session Session code
pageNo (Optional) Page number. Default value: 1
pageSize (Optional) Number of documents per page. Default value: 20

Request Body

None.

200 OK Response

Response Body

{
  "success": true,
  "data": {
    "areas": [
      {
        "columnCount": 30,
        "rowCount": 12,
        "top": 71.83,
        "number": 1,
        "height": 28.17,
        "width": 66,
        "left": 19,
        "areaDescription": "Front"
      },
      {
        "columnCount": 26,
        "rowCount": 18,
        "top": 63,
        "number": 2,
        "height": 23.17,
        "width": 51.8,
        "left": 26.2,
        "areaDescription": "VIP Area"
      }
    ],
    "seats": [
      {
        "status": 1,
        "code": "seat-1-A-10",
        "svgId": "seat-1-A-10",
        "areaCode": "0000000001",
        "blockSelection": false,
        "rowLabel": "A",
        "attributes": [
          "handicap"
        ],
        "position": {
          "colNum": 0,
          "areaNum": 0,
          "rowNum": 0
        },
        "seatLabel": "10",
        "block": 1
      },
      {
        "status": 1,
        "code": "seat-1-A-11",
        "svgId": "seat-1-A-11",
        "areaCode": "0000000001",
        "blockSelection": false,
        "rowLabel": "A",
        "attributes": [
          "handicap"
        ],
        "position": {
          "colNum": 1,
          "areaNum": 0,
          "rowNum": 0
        },
        "seatLabel": "11",
        "block": 1
      }
      }
    ]
  }
}
Name Type Description
areas array Areas in the seating plan
areas[].number integer Area number
areas[].top decimal Area starting from top (y axis - 100 to 0)
areas[].left decimal Area starting from left (x axis - 0 to 100)
areas[].areaDescription string Area text description
areas[].height decimal Total height of the area from top
areas[].width decimal Total width of the area from left
areas[].columnCount integer Total no of columns in the row of that particular area
areas[].rowCount integer Total no of rows in that particular area
seats array Array of seat information
seats[].code string Unique seat identifier
seats[].svgId string Reference to the graphic element representing the seat in the SVG plan
seats[].status string Current seat status. Supported values: 0, 1, 2, 3, 4. Refer to table below for description.
seats[].areaCode string Reference to the area
seats[].rowLabel string Display label of the row
seats[].seatLabel string Display label of the seat
seats[].position object Position of the seat used for 2D seat plan drawing
seats[].position.areaNum integer Area index number
seats[].position.rowNum integer Row index number. Starting with 0 for each area
seats[].position.colNum integer Column index number. Starting with 0 for each row
seats[].block integer Grouping of seats by block number
seats[].blockSelection boolean Enforce seat selection by the entire block if set to true. All seats in the block must be selected for purchase in the same transaction. E.g. couple seats must be bought together
attributes array Array of special tagging for the seat. Possible values: handicap, couple

Seat Status:

Code Description
0 Non-existent
1 Available
2 Reserved
3 Held
4 Sold

Attributes:

Code Description
normal Normal seat
sold Sold
socialdistancing Seat to be skipped / unavailable due to social distancing rules
wheelchair Wheelchair seat
reserved Seat has been reserved into an order
broken Seat is unavailable, due to seat being broken
companion Companion seat for a wheelchair seating

Grouped seats attributes:

Code Description
group-left-seat Seat positioned on the left of a grouped seating arrangement
group-right-seat Seat positioned on the right of a grouped seating arrangement
group-middle-seat Seat positioned in the middle of a grouped seating arrangement

Create cart

Creates a new cart. The cart keeps track of the selected tickets or seats before making payment and transacting.

HTTP Request

curl --location --request POST 'https://api.bigtix.io/api/live/v3/carts/' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y' \
--data-raw '{}'

POST https://api.bigtix.io/api/live/v3/carts/

Request Headers

Name Description
Authorization Bearer: {{access_token}}

Request Parameters

None.

Request Body

None.

200 OK Response

200 OK Response Body

{
    "success": true,
    "data": {
        "id": "f05ee798-3938-433b-89b4-35e4b407b793"
    }
}
Name Type Description
id string Cart identifier

Get best available seat (Reserved Seating Event)

Creates a new cart. The cart keeps track of the selected tickets or seats before making payment and transacting. Continuously calling this endpoint with the same request body does not reserve more seats but it retains the allocated seat(s) that have been allocated to the cart. Change the quantity to reserve more seats after first request.

HTTP Request

curl --location --request POST 'https://api.bigtix.io/api/live/v3/carts/:cartId/ba' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y' \
--data-raw '{}'

POST https://api.bigtix.io/api/live/v3/carts/:cartId/ba

Request Headers

Name Description
Authorization Bearer: {{access_token}}

Request Parameters

Name Description
cartId Cart identifier.

Request Body

Name Description
inventoryId Inventory ID
qty Seat quantity to reserve for cart

Request Body

[
  {
    "inventoryId": "abc12345",
    "qty": 2
  }
]

200 OK Response

200 OK Response Body

{
  "success": true,
  "data": [
    [
      "seat-S0-AA-1",
      "seat-S0-AA-2"
    ]
  ]
}
Name Type Description
data[] array Array of best available seats allocated to cart

Negative Scenarios

Negative Scenarios Response Body

{
    "success": false,
    "error": {
        "lang": "en",
        "path": "/api/v2/inventories/ba?product=WYSMA1RS",
        "timestamp": "2024-12-27T09:34:13.603Z",
        "message": "Not enough seats for requested 50, please reduce quantity",
        "code": "get_best_available",
        "meta": {}
    }
}
HTTP Error Code Error Message Remarks
422 get_best_available Not enough seats for requested {quantity}, please reduce quantity Quantity of requested seats are not available.
422 get_best_available Not enough continuous seats for requested {quantity}, please reduce quantity Continuous seats requested are not available. If prefers non continuous seat, change in Admin > Product Details Page > Category > Selected Category > View > Uncheck Split Seats
422 get_best_available Invalid cart id {cart_id} Invalid cart ID in request body.
422 ba_inventoryid_invalid_for_product Inventoryid not found for product Inventory ID in request body is invalid.

Add item to cart

Add an item selection to the cart that matches the provided cart ID.

HTTP Request

curl --location --request POST 'https://api.bigtix.io/api/live/v3/carts/1cf53331-46da-477a-b267-a5cdf318c6ad' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y' \
--data-raw '{}'

POST https://api.bigtix.io/api/live/v3/carts/:cartId

Request Headers

Name Description
Authorization Bearer: {{access_token}}

Request Parameters

Name Description
cartId Cart identifier.

Request Body

Request Body for General Admission

[
    {
        "type": "product",
        "cartId": "d2cfe26f-5a17-4fdb-9c21-24a039b63823",
        "deliveryMethod": "EMAIL",
        "product": "MULAND20",
        "session": "K0KN",
        "ticketType": "A1",
        "category": "A",
        "qty": 1
    }
]

Request Body for Reserved Seating

[
    {
        "type": "product",
        "cartId": "d2cfe26f-5a17-4fdb-9c21-24a039b63823",
        "deliveryMethod": "EMAIL",
        "product": "MULAND20",
        "session": "K0KN",
        "ticketType": "A1",
        "category": "A",
        "qty": 1,
        "seats": [
            {
                "code": "seat-S3-AA-10"
            },
            {
                "code": "seat-S3-AA-11"
            }
        ]
    }
]

Request Body for Pass

[
    {
        "type": "pass",
        "cartId": "d2cfe26f-5a17-4fdb-9c21-24a039b63823",
        "deliveryMethod": "ETICKET",
        "product": "EMPASSXX",
        "session": {},
        "ticketType": "PT",
        "passStartValidityISO": "2023-10-19T00:00:00.000Z",
        "qty": 1
    }
]

Request Body for Redeeming Ticket with Pass

[
    {
        "type": "product",
        "cartId": "d2cfe26f-5a17-4fdb-9c21-24a039b63823",
        "deliveryMethod": "EMAIL",
        "product": "EMPATIXX",
        "session": "3LZ5",
        "ticketType": "PA",
        "category": "PA",
        "qty": 1,
        "redeemingPassId": ["DKEXQJVEDPQN"]
    }
]

Request Body for Package. 2 Packages with 2 GA tickets

[
  {
    "type": "product",
    "cartId": "149eead5-e756-4937-9b05-6c4adcb966f4",
    "package": "WY129300",
    "deliveryMethod": "ETICKET",
    "product": "WYGATIXX",
    "session": "3LZ5",
    "ticketType": "GA",
    "category": "GA",
    "qty": 2
  },
  {
    "type": "package",
    "cartId": "149eead5-e756-4937-9b05-6c4adcb966f4",
    "package": "WY129300",
    "deliveryMethod": "ETICKET",
    "qty": 2
  }
]

Request Body for Package. 2 Packages with 2 GA tickets

[
  {
    "type": "product",
    "cartId": "149eead5-e756-4937-9b05-6c4adcb966f4",
    "package": "WY129300",
    "deliveryMethod": "ETICKET",
    "product": "WYGATIXX",
    "session": "3LZ5",
    "ticketType": "GA",
    "category": "GA",
    "qty": 2
  },
  {
    "type": "package",
    "cartId": "149eead5-e756-4937-9b05-6c4adcb966f4",
    "package": "WY129300",
    "deliveryMethod": "ETICKET",
    "qty": 2
  }
]

Request Body for Package. 2 Packages with 2 RS tickets

[
  {
    "type": "product",
    "cartId": "149eead5-e756-4937-9b05-6c4adcb966f4",
    "package": "WY229300",
    "deliveryMethod": "ETICKET",
    "product": "WYRSTIXX",
    "session": "3LZ5",
    "ticketType": "RS",
    "category": "RS",
    "seats": [
      {
        "code": "seat-S0-BX-71"
      },
      {
        "code": "seat-S0-BX-72"
      },
      {
        "code": "seat-S0-BX-73"
      },
      {
        "code": "seat-S0-BX-74"
      }
    ]
  },
  {
    "type": "package",
    "cartId": "149eead5-e756-4937-9b05-6c4adcb966f4",
    "package": "WY229300",
    "deliveryMethod": "ETICKET",
    "qty": 2
  }
]

Request Body for Package. 2 Packages with 2 Single Session Bundle tickets

[
  {
    "type": "product",
    "cartId": "76840206-3e43-4b8b-9c31-1123b91495e6",
    "package": "WY329300",
    "deliveryMethod": "ETICKET",
    "product": "WYSSBBUN",
    "session": "3LZ5",
    "ticketType": "B1",
    "category": "C1",
    "qty": 2
  },
  {
    "type": "package",
    "cartId": "76840206-3e43-4b8b-9c31-1123b91495e6",
    "package": "WY329300",
    "deliveryMethod": "ETICKET",
    "qty": 2
  }
]

Request Body for Package. 2 Packages with 2 Pass tickets

[
  {
    "type": "pass",
    "cartId": "d13bef7d-833f-4258-829a-b8b7e67e6d7e",
    "package": "WYBOPASS",
    "pass": "WYPASSXX",
    "passStartValidityISO": "2024-12-16T00:00:00.000Z",
    "deliveryMethod": "ETICKET",
    "product": "WYPASSXX",
    "session": {},
    "ticketType": "PT",
    "qty": 2
  },
  {
    "type": "package",
    "cartId": "d13bef7d-833f-4258-829a-b8b7e67e6d7e",
    "package": "WYBOPASS",
    "deliveryMethod": "ETICKET",
    "qty": 2
  }
]
Name Type Description
[] array Array of selected products
[].type string Cart item type. Supported value: product, pass, package
[].deliveryMethod string Delivery method code
[].product string Product code
[].session string Session code
[].ticketType string Ticket type code
[].category string Category code
[].qty integer Quantity of tickets or items.
Not Required for Reserved Seating
[].seats array Seats details.
Required for Reserved Seating
[].passStartValidityISO string Pass start validity in ISO format
Required for Pass
[].redeemingPassId array Pass ID. Length of redeemingPassID[] must be the same as quantity. If using the same redeemingPassID, repeat the same value. Example: ["ABC123", "ABC123"]
Required for Redeeming Ticket with Pass
[].package string Package code of the item to be added to cart
productDetails object Details of the products that is in a package. Only applicable to a package type
productDetails.code string Package's code
productDetails.packagedProduct object Details of the packaged product
productDetails.packagedProduct.position integer Position of the product in a package
productDetails.packagedProduct.productCode string Product's code that is in a package
productDetails.packagedProduct.packagedCategories object Details of the product's category in a package
productDetails.packagedProduct.packagedCategories.CATEGORY_CODE object Category object of a packaged's product
productDetails.packagedProduct.packagedCategories.CATEGORY_CODE.allowSplitSeats boolean Determines if category allows seats to be splitted
productDetails.packagedProduct.packagedCategories.CATEGORY_CODE.autoAssign boolean Determines if category allows seats to be auto assigned
productDetails.packagedProduct.packagedCategories.CATEGORY_CODE.minQuantityPerPackage integer Minimum quantity of the ticket in a package
productDetails.packagedProduct.packagedCategories.CATEGORY_CODE.maxQuantityPerPackage integer Maximum quantity of the ticket in a package

200 OK Response

200 OK Response Body for General Admission

{
    "success": true,
    "data": [
        {
            "id": "1d0ca189-fce8-4ef0-8d26-9a7bd9d972af",
            "type": "product",
            "displayName": "Mulan Disney 2020 - Cat A",
            "currency": "SGD",
            "qty": 2,
            "nominalPrice": 10,
            "totalPrice": 20,
            "tax": 0.65,
            "product": {
                "code": "MULAND20",
                "type": "movie",
                "name": "Mulan Disney 2020"
            },
            "session": {
                "code": "K0KN",
                "startTime": "2020-08-19 10:00:00"
            },
            "category": {
                "code": "A1",
                "name": "Category A"
            },
            "ticketType": {
                "code": "A1",
                "name": "Category A",
                "isComplimentary": false
            },
            "venue": "Capitol Theatre",
            "deliveryMethod": "EMAIL",
            "seats": []
        }
    ]
}

200 OK Response Body for Reserved Seating

{
    "success": true,
    "data": [
        {
            "id": "fcffd96a-4f41-4ea3-9cc0-ab4d191ba22d",
            "type": "product",
            "displayName": "ABC Concert - Adult",
            "currency": "SGD",
            "qty": 1,
            "nominalPrice": 100,
            "totalPrice": 100,
            "tax": 9.09,
            "product": {
                "code": "ABCLIVE2",
                "type": "event",
                "name": "ABC Concert - RS event"
            },
            "session": {
                "code": "3LZ6",
                "startTime": "2023-10-03 10:00:00"
            },
            "category": {
                "code": "C2",
                "name": "RS category - 2"
            },
            "ticketType": {
                "code": "CT",
                "name": "Adult",
                "category": "C2",
                "isComplimentary": false
            },
            "seats": [
                {
                    "section": "Area 2",
                    "row": "W",
                    "seatNo": "6",
                    "code": "seat-UpperLevel-W-6"
                }
            ],
            "venue": "Singapore Zoo 5",
            "deliveryMethod": "ETICKET"
        }
    ]
}

200 OK Response Body for Pass

{
    "success": true,
    "data": [
        {
            "id": "2978efa9-5381-456a-84f4-d91af2a46a60",
            "type": "pass",
            "displayName": "[WY] GA Pass - Annual Pass",
            "currency": "SGD",
            "qty": 1,
            "nominalPrice": 100,
            "totalPrice": 100,
            "tax": 0,
            "pass": "WYPASSXX",
            "passStartValidityISO": "2023-10-19T00:00:00.000Z",
            "passEndValidityISO": "2024-10-17T00:00:00.000Z",
            "product": {
                "code": "EMPASSXX",
                "type": "pass",
                "name": "Annual Pass"
            },
            "session": {
                "code": "3LZ5",
                "startTime": "NA"
            },
            "category": {
                "code": "PA"
            },
            "ticketType": {
                "code": "PT",
                "name": "Annual Pass",
                "category": "PA",
                "isComplimentary": false,
                "redeemingPassId": []
            },
            "seats": [],
            "deliveryMethod": "ETICKET"
        }
    ]
}

200 OK Response Body for Redeeming Ticket with Pass

{
    "success": true,
    "data": [
        {
            "id": "0e40e9fc-3888-4fe7-ba76-0d2061c7c2a7",
            "type": "product",
            "displayName": "Music Evolution",
            "currency": "SGD",
            "qty": 1,
            "nominalPrice": 50,
            "totalPrice": 50,
            "tax": 0,
            "product": {
                "code": "EMPATIXX",
                "type": "event",
                "name": "Music Evolution"
            },
            "session": {
                "code": "3LZ5",
                "startTime": "2023-10-19 00:00:00"
            },
            "category": {
                "code": "PA",
                "name": "Cat PA"
            },
            "ticketType": {
                "code": "PA",
                "name": "Pass Ticket",
                "category": "PA",
                "isComplimentary": false,
                "redeemingPassId": [
                    "DKEXQJVEDPQN"
                ]
            },
            "seats": [],
            "venue": "Hall A1",
            "deliveryMethod": "ETICKET"
        }
    ]
}

200 OK Response Body for Package

{
  "success": true,
    "id": "581ebbb9-3d15-46be-8f92-c33573534cd8",
    "currency": "SGD",
    "totalQty": 1,
    "totalPrice": 60,
    "totalFees": 0,
    "totalDiscount": 0,
    "totalPayable": 60,
    "totalInclusiveTax": 4.95,
    "totalExclusiveTax": 4.50,
    "utcExpiryTime": 1700803571546,
    "totalTaxDetails": {
        "name": "Entertainment Tax",
        "price": 1,
    },
    "status": 0,
    "patron": {
        "email": ""
    },
    "items": [
    {
      "id": "7f05a4dc-4a42-43c0-a87c-71c468031428",
      "type": "product",
      "displayName": "GA Event - GA Ticket",
      "currency": "SGD",
      "qty": 2,
      "nominalPrice": 35,
      "totalPrice": 70,
      "tax": 5.78,
        "package": "WY129300",
      "taxInclusive": true,
      "deliveryMethod": "ETICKET",
      "product": {
        "name": "GA Event",
        "code": "WYGATIXX",
        "type": "event",
      },
      "session": {
        "code": "3LZ5",
        "startTime": "2023-08-01 00:00:00",
      },
      "ticketType": {
        "code": "GA",
        "name": "GA Ticket",
        "category": "GA",
        "isComplimentary": false,
      },
      "seats": [],
      "category": {
        "code": "GA",
        "name": "GA 1",
      },
      "deliveryDetails": {
        "name": "E-Ticket",
        "code": "ETICKET",
        "instructions": "",
        "description": "Ticket(s) are viewable via a link online."
      },
      "_id": "7f05a4dc-4a42-43c0-a87c-71c468031428"
    },
    {
      "id": "4a27f68d-b465-48e5-86d9-286383eefb0e",
      "type": "product",
      "nominalPrice": 35,
      "totalPrice": 70,
      "displayName": "GA Ticket",
      "currency": "SGD",
      "tax": 5.78,
      "taxInclusive": true,
      "deliveryMethod": "ETICKET",
      "product": {
        "name": "WY Dev GA Event",
        "code": "WYGATIXX",
        "type": "event"

      },
      "session": {
        "code": "3LZ5",
        "startTime": "2023-08-01 00:00:00",
      },
      "multiSessions": [],
      "ticketType": {
        "code": "GA",
        "name": "GA Ticket",
        "isComplimentary": false,
      },
      "seats": [],
      "venues": "Conference G",
      "refPrdtCartItem": "c6dbd7d5-76e0-4d98-980f-4d42ed525e9a",
      "category": {
        "code": "GA",
        "name": "GA 1",
      },
      "qty": 2,
      "package": "WY129300",
      "deliveryDetails": {
        "name": "E-Ticket",
        "code": "ETICKET",
        "instructions": "",
        "description": "Ticket(s) are viewable via a link online."
      },
      "autoAssign": false,
      "_id": "4a27f68d-b465-48e5-86d9-286383eefb0e"
    },
    {
      "id": "c6dbd7d5-76e0-4d98-980f-4d42ed525e9a",
      "type": "package",
      "nominalPrice": 70,
      "totalPrice": 140,
      "displayName": "WY 29300 GA Package",
      "currency": "SGD",
      "tax": 11.56,
      "taxInclusive": true,
      "deliveryMethod": "ETICKET",
      "product": {
        "name": "WY 29300 GA Package",
        "code": "WY129300",
        "type": "event",
      },
      "multiSessions": [],
      "ticketType": {
        "code": "LZ",
        "name": "sales profileeee",
      },
      "seats": [],
      "qty": 2,
      "productDetails": {
        "code": "WY129300",
        "packagedProducts": [
          {
            "position": 1,
            "productCode": "WYGATIXX",
            "packagedCategories": {
              "GA": {
                "allowSplitSeats": false,
                "autoAssign": false,
                "minQuantityPerPackage": 1,
                "maxQuantityPerPackage": 99
              }
            }
          }
        ]
      },
      "package": "WY129300",
      "isFixedPackage": false,
      "_id": "c6dbd7d5-76e0-4d98-980f-4d42ed525e9a"
    }
  ]
}
Name Type Description
id string Cart item identifier
type string Cart item type
displayName string Display name of the cart item
currency string Currency code
qty integer Number of tickets or items
nominalPrice decimal Price of one item
totalPrice decimal Total price
tax decimal Tax amount
pass string Pass code
passStartValidityISO string Pass start time validity in ISO format
passEndValidityISO string Pass end time validity in ISO format
product object Product information
product.code string Product code
product.type string Product type. Possible values: event, external_event, online, package, pass
product.name string Product name
session object Session information
session.code string Session code
session.startTime string Session date and time
category object Category information
category.code string Category code
category.name string Display name of the category
ticketType object Ticket type information
ticketType.code string Ticket type code
ticketType.name string Display name of the ticket type
ticketType.isComplimentary boolean Identifies if it is a complimentary ticket
ticketType.redeemingPassId array Pass IDs that are used to redeem a ticket
venue string Venue name
deliveryMethod string Delivery method code
seats array Array of seats
seats[].section string Section label
seats[].row string Row label
seats[].seatNo string Seat number label
seats[].area string Area code

Negative Scenarios

Negative Scenarios Response Body

{
    "success": false,
    "error": {
        "code": "unexpected_error",
        "message": "Something went wrong. Please try again later",
        "path": "/api/v2/cartitems",
        "exception": "ApplicationError: Something went wrong. Please try again later\n    at CartItemsService.createExternalOrder (/dist/cartItems/cartItems.service.js:1319:27)\n    at async CartItemsService.createMultiple (/dist/cartItems/cartItems.service.js:141:33)\n    at async CartItemsController.createMultiple (/dist/cartItems/cartItems.controller.js:78:19)",
        "timestamp": "2020-12-11T08:22:39.711Z"
    }
}
HTTP Error Code Error Message Remarks
422 invalid_data Invalid number of seats Qty does not match with number of seats in request.
422 invalid_data Invalid data Session/Ticket Type/Category does not exist in the database.
422 create_cartitem Cart items already added Adding items to cart again before removing previous items.
422 create_cartitem Channel settings are incorrect Delivery method does not exist in the database
422 server_error Seats have not been allocated Seats have not been allocated to the cart
Only applicable to Reserved Seating event
422 validate_package_missing_mandatory_prd_req_in_pkg Products ${missingMandatoryProducts} are required in this package ${currentPackageCode} Required product in package is not in request body
Only applicable to Package event
422 create_cartitem_cannot_find_pkg_cart_item Cannot find package cart item ${package} Invalid package code
Only applicable to Package event

Remove item from cart

Removes an item from the cart.

HTTP Request

curl --location --request DELETE 'https://api.bigtix.io/api/live/v3/carts/1cf53331-46da-477a-b267-a5cdf318c6ad' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y' \
--data-raw '{}'

DELETE https://api.bigtix.io/api/live/v3/carts/:cartId

Request Headers

Name Description
Authorization Bearer: {{access_token}}

Request Parameters

Name Description
cartId Cart identifier.

Request Body

Request Body

[
    "1d0ca189-fce8-4ef0-8d26-9a7bd9d972af",
    "659ffc24-efed-4d61-b0d0-e4cfda26931d"
]
Name Type Description
[] array Array of cart item identifiers.

200 OK Response

200 OK Response Body

{
  "success": true,
  "data": [
    "1d0ca189-fce8-4ef0-8d26-9a7bd9d972af",
    "659ffc24-efed-4d61-b0d0-e4cfda26931d"
  ]
}
Name Type Description
[] array Array of cart item identifiers of those removed successfully.

Negative Scenarios

Negative Scenarios Response Body

{
    "success": false,
    "error": {
        "code": "not_found",
        "message": "No cart items found",
        "path": "/api/v2/cartitems/removeItem?cartId=00968db5-f653-4a7b-9520-70a3b6971db9",
        "exception": "ApplicationError: No cart items found\n    at CartItemsService.deleteMultiple (/dist/cartItems/cartItems.service.js:1166:19)\n    at runMicrotasks (<anonymous>)\n    at processTicksAndRejections (internal/process/task_queues.js:97:5)\n    at async CartItemsController.deleteMultiple (/dist/cartItems/cartItems.controller.js:86:22)",
        "timestamp": "2020-12-11T08:50:17.415Z"
    }
}
HTTP Error Code Error Message Remarks
422 not_found No cart items found No item found in cart
422 update_cart Cart has expired Cart has expired

Get a single cart

Returns the cart that matches the provided cart ID with the items.

HTTP Request

curl --location --request GET ' https://api.bigtix.io/api/live/v3/carts/1cf53331-46da-477a-b267-a5cdf318c6ad' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y'

GET https://api.bigtix.io/api/live/v3/carts/:cartId

Request Headers

Name Description
Authorization Bearer: {{access_token}}

Request Parameters

Name Description
cartId Cart identifier

Request Body

None.

200 OK Response

200 OK Response Body for General Admission

{
    "success": true,
    "data": {
        "id": "581ebbb9-3d15-46be-8f92-c33573534cd8",
        "currency": "SGD",
        "totalQty": 1,
        "totalPrice": 60,
        "totalFees": 0,
        "totalDiscount": 0,
        "totalPayable": 60,
        "totalInclusiveTax": 4.95,
        "totalExclusiveTax": 4.50,
        "utcExpiryTime": 1700803571546,
        "totalTaxDetails": {
            "name": "Entertainment Tax",
            "price": 1,
        },
        "status": 0,
        "patron": {
            "email": ""
        },
        "promo": ["PROMO1"],
        "promoErrorMessage": [
            {
                "code": "PROMO1",
                "errorMessage": "WYORINI is not valid for items in your cart."
            }
        ],
        "items": [
            {
                "id": "5a8ea684-eeb2-4b31-87a4-1242b11b8688",
                "type": "product",
                "displayName": "Music Evolution",
                "currency": "SGD",
                "qty": 1,
                "nominalPrice": 60,
                "totalPrice": 60,
                "tax": 4.95,
                "mapUrl": "https://www.xxx.com",
                "product": {
                    "code": "EMGATIXX",
                    "type": "event",
                    "name": "Music Evolution"
                },
                "session": {
                    "code": "3LZ5",
                    "startTime": "2023-08-01 00:00:00"
                },
                "category": {
                    "code": "GA",
                    "name": "GA 1",
                    "color": "#2DD4BF"
                },
                "ticketType": {
                    "code": "GA",
                    "name": "GA Ticket",
                    "category": "GA",
                    "isComplimentary": false,
                    "redeemingPassId": []
                },
                "seats": [],
                "venue": "Hall A1",
                "deliveryMethod": "ETICKET"
            }
        ]
    }
}

200 OK Response Body for Reserved Seating

{
    "success": true,
    "data": {
        "id": "6ffd0395-69da-455a-b244-2f4e9ea24958",
        "currency": "SGD",
        "totalQty": 1,
        "totalPrice": 20,
        "totalFees": 2,
        "totalDiscount": 0,
        "totalPayable": 22,
        "totalInclusiveTax": 1.44,
        "totalExclusiveTax": 1.26,
        "utcExpiryTime": 1604912705852,
        "totalTaxDetails": {
            "name": "Entertainment Tax",
            "price": 1,
        },
        "patron": {
            "email": ""
        },
        "promo": ["PROMO1"],
        "promoErrorMessage": [
            {
                "code": "PROMO1",
                "errorMessage": "WYORINI is not valid for items in your cart."
            }
        ],
        "items": [
            {
                "id": "5b777ca6-3c15-437e-84b5-0e5d5542db5d",
                "displayName": "Booking Fee",
                "currency": "SGD",
                "qty": 2,
                "nominalPrice": 1,
                "totalPrice": 2,
                "tax": 0.13,
                "feeName": "Booking Fee",
                "feeClass": "BOOKING_FEE",
                "refProductCartItem": "d8dbec13-7cea-4071-b4d4-6d3e071127ea"
            },
            {
                "id": "d8dbec13-7cea-4071-b4d4-6d3e071127ea",
                "type": "product",
                "displayName": "Mulan Disney 2020 - Cat A",
                "currency": "SGD",
                "qty": 2,
                "nominalPrice": 10,
                "totalPrice": 10,
                "tax": 0.65,
                "product": {
                    "code": "MULAND20",
                    "type": "event",
                    "name": "Mulan Disney 2020"
                },
                "session": {
                    "code": "K0KN",
                    "startTime": "2020-08-19 10:00:00"
                },
                "category": {
                    "code": "A1",
                    "name": "Category A"
                },
                "ticketType": {
                    "code": "A1",
                    "name": "Category A",
                    "category": "A1",
                    "isComplimentary": false
                },
                "venue": "Capitol Theatre",
                "deliveryMethod": "EMAIL",
                "seats": [
                    {
                      "section": "A",
                      "row": "M",
                      "seatNo": "10",
                      "area": {
                        "section": "A",
                        "entrance": "A",
                        "categoryCode": "C1",
                        "areaCode": "1"
                      }
                    },
                    {
                      "section": "A",
                      "row": "M",
                      "seatNo": "11",
                      "area": {
                        "section": "A",
                        "entrance": "A",
                        "categoryCode": "C1",
                        "areaCode": "1"
                      }
                    }
                ]
            }
        ]
    }
}

200 OK Response Body for Pass

{
    "success": true,
    "data": {
        "id": "4ddd193a-50f4-45eb-b2d8-7c6aceaab23c",
        "currency": "SGD",
        "totalQty": 1,
        "totalPrice": 100,
        "totalFees": 12,
        "totalDiscount": 0,
        "totalPayable": 112,
        "totalInclusiveTax": 0,
        "totalExclusiveTax": 0,
        "utcExpiryTime": 1700803298884,
        "totalTaxDetails": {
            "name": "Entertainment Tax",
            "price": 1,
        },
        "status": 0,
        "patron": {
            "email": ""
        },
        "items": [
            {
                "id": "3eeceb1a-92fb-4bf0-ac28-a5362842b9c4",
                "type": "fee",
                "displayName": "Fee 3",
                "currency": "SGD",
                "qty": 1,
                "nominalPrice": 10,
                "totalPrice": 10,
                "tax": 0,
                "feeName": "Fee 3",
                "feeClass": "ADMIN_FEE"
            },
            {
                "id": "5f12ea9c-7325-47bd-bb6c-6fb885cfdddd",
                "type": "fee",
                "displayName": "[Kapil] Fee",
                "currency": "SGD",
                "qty": 1,
                "nominalPrice": 2,
                "totalPrice": 2,
                "tax": 0,
                "feeName": "[Kapil] Fee",
                "feeClass": "HANDLING_FEE",
                "refProducttCartItem": "26c44f5d-52b8-49b4-8df0-b554fec7eca3"
            },
            {
                "id": "26c44f5d-52b8-49b4-8df0-b554fec7eca3",
                "type": "pass",
                "displayName": "Annual Pass",
                "currency": "SGD",
                "qty": 1,
                "nominalPrice": 100,
                "totalPrice": 100,
                "tax": 0,
                "pass": "WYPASSXX",
                "passStartValidityISO": "2023-10-19T00:00:00.000Z",
                "passEndValidityISO": "2024-10-17T00:00:00.000Z",
                "product": {
                    "code": "WYPASSXX",
                    "type": "pass",
                    "name": "Annual Pass"
                },
                "session": {
                    "code": "3LZ5",
                    "startTime": "NA"
                },
                "category": {
                    "code": "PA"
                },
                "ticketType": {
                    "code": "PT",
                    "name": "Annual Pass",
                    "category": "PA",
                    "isComplimentary": false,
                    "redeemingPassId": []
                },
                "seats": [],
                "deliveryMethod": "ETICKET"
            }
        ]
    }
}

200 OK Response Body for Redeeming Ticket with Pass

{
    "success": true,
    "data": {
        "id": "ca61e1da-6bcd-4a0b-93b5-92991e37134b",
        "currency": "SGD",
        "totalQty": 2,
        "totalPrice": 100,
        "totalFees": 14,
        "totalDiscount": 0,
        "totalPayable": 114,
        "totalInclusiveTax": 0,
        "totalExclusiveTax": 0,
        "utcExpiryTime": 1700705143087,
        "totalTaxDetails": {
            "name": "Entertainment Tax",
            "price": 1,
        },
        "status": 0,
        "patron": {
            "email": ""
        },
        "items": [
            {
                "id": "4613f06c-6ca1-4999-93dd-9b074122c234",
                "type": "fee",
                "displayName": "[Kapil] Fee",
                "currency": "SGD",
                "qty": 2,
                "nominalPrice": 2,
                "totalPrice": 4,
                "tax": 0,
                "feeName": "[Kapil] Fee",
                "feeClass": "HANDLING_FEE",
                "refProducttCartItem": "b078c975-d069-42ee-ae50-536bb152f04b"
            },
            {
                "id": "451f165c-ddee-4818-a486-b24cf892dc08",
                "type": "fee",
                "displayName": "Fee 3",
                "currency": "SGD",
                "qty": 1,
                "nominalPrice": 10,
                "totalPrice": 10,
                "tax": 0,
                "feeName": "Fee 3",
                "feeClass": "ADMIN_FEE"
            },
            {
                "id": "b078c975-d069-42ee-ae50-536bb152f04b",
                "type": "product",
                "displayName": "Music Evolution",
                "currency": "SGD",
                "qty": 2,
                "nominalPrice": 50,
                "totalPrice": 100,
                "tax": 0,
                "product": {
                    "code": "WYEMTIXX",
                    "type": "event",
                    "name": "Music Evolution"
                },
                "session": {
                    "code": "3LZ5",
                    "startTime": "2023-10-19 00:00:00"
                },
                "category": {
                    "code": "PA",
                    "name": "Cat PA",
                    "color": "#5850EC"
                },
                "ticketType": {
                    "code": "PA",
                    "name": "Pass Ticket",
                    "category": "PA",
                    "isComplimentary": false,
                    "redeemingPassId": [
                        "DKEXQJVEDPQN",
                        "DKEXQJVEDPQN"
                    ]
                },
                "seats": [],
                "venue": "Hall A1",
                "deliveryMethod": "ETICKET"
            }
        ]
    }
}

200 OK Response Body for Package with Event

{
  "success": true,
    "id": "581ebbb9-3d15-46be-8f92-c33573534cd8",
    "currency": "SGD",
    "totalQty": 1,
    "totalPrice": 60,
    "totalFees": 0,
    "totalDiscount": 0,
    "totalPayable": 60,
    "totalInclusiveTax": 4.95,
    "totalExclusiveTax": 4.50,
    "utcExpiryTime": 1700803571546,
    "totalTaxDetails": {
        "name": "Entertainment Tax",
        "price": 1,
    },
    "status": 0,
    "patron": {
        "email": ""
    },
    "items": [
    {
      "id": "7f05a4dc-4a42-43c0-a87c-71c468031428",
      "type": "product",
      "displayName": "GA Event - GA Ticket",
      "currency": "SGD",
        "qty": 2,
      "nominalPrice": 35,
      "totalPrice": 70,
      "tax": 5.78,
        "package": "WY129300",
      "taxInclusive": true,
      "deliveryMethod": "ETICKET",
      "product": {
        "name": "GA Event",
        "code": "WYGATIXX",
        "type": "event",
      },
      "session": {
        "code": "3LZ5",
        "startTime": "2023-08-01 00:00:00",
      },
      "multiSessions": [],
      "ticketType": {
        "code": "GA",
        "name": "GA Ticket",
        "category": "GA",
        "isComplimentary": false,
        "promo": [],
        "redeemingPassId": []
      },
      "seats": [],
      "category": {
        "code": "GA",
        "name": "GA 1",
      },
      "deliveryDetails": {
        "name": "E-Ticket",
        "code": "ETICKET",
        "instructions": "",
        "description": "Ticket(s) are viewable via a link online."
      },
      "_id": "7f05a4dc-4a42-43c0-a87c-71c468031428"
    },
    {
      "id": "4a27f68d-b465-48e5-86d9-286383eefb0e",
      "updatedTime": 1734317404747,
      "type": "product",
      "nominalPrice": 35,
      "totalPrice": 70,
      "displayName": "WY Dev GA Event - GA Ticket",
      "currency": "SGD",
      "tax": 5.78,
      "taxInclusive": true,
      "deliveryMethod": "ETICKET",
      "product": {
        "name": "WY Dev GA Event",
        "code": "WYGATIXX",
        "type": "event"

      },
      "session": {
        "code": "3LZ5",
        "startTime": "2023-08-01 00:00:00",
      },
      "multiSessions": [],
      "ticketType": {
        "code": "GA",
        "name": "GA Ticket",
        "isComplimentary": false,
      },
      "seats": [],
      "venues": "Conference G",
      "refPrdtCartItem": "c6dbd7d5-76e0-4d98-980f-4d42ed525e9a",
      "category": {
        "code": "GA",
        "name": "GA 1",
      },
      "qty": 2,
      "package": "WY129300",
      "deliveryDetails": {
        "name": "E-Ticket",
        "code": "ETICKET",
        "instructions": "",
        "description": "Ticket(s) are viewable via a link online."
      },
      "taxDetails": [
        {
          "name": "SG GST 9",
          "price": 5.78,
          "taxId": "01c8cb2d-395d-45b0-b4bd-c49176a0cc21"
        }
      ],
      "categoryColor": "#2DD4BF",
      "autoAssign": false,
      "_id": "4a27f68d-b465-48e5-86d9-286383eefb0e"
    },
    {
      "id": "c6dbd7d5-76e0-4d98-980f-4d42ed525e9a",
      "updatedTime": 1734317404836,
      "type": "package",
      "nominalPrice": 70,
      "totalPrice": 140,
      "displayName": "WY 29300 GA Package",
      "currency": "SGD",
      "tax": 11.56,
      "taxInclusive": true,
      "deliveryMethod": "ETICKET",
      "product": {
        "name": "WY 29300 GA Package",
        "code": "WY129300",
        "type": "event",
      },
      "multiSessions": [],
      "ticketType": {
        "code": "LZ",
        "name": "sales profileeee",
      },
      "seats": [],
      "qty": 2,
      "productDetails": {
        "code": "WY129300",
        "packagedProducts": [
          {
            "position": 1,
            "productCode": "WYGATIXX",
            "packagedCategories": {
              "GA": {
                "allowSplitSeats": false,
                "autoAssign": false,
                "minQuantityPerPackage": 1,
                "maxQuantityPerPackage": 99
              }
            }
          }
        ]
      },
      "package": "WY129300",
      "isFixedPackage": false,
      "_id": "c6dbd7d5-76e0-4d98-980f-4d42ed525e9a"
    }
  ]
}
Name Type Description
id string Cart identifier
currency string Currency code
totalQty integer Total quantity in cart
totalPrice decimal Total price for all items
totalFees decimal Total fee for all items
totalDiscount decimal Total discount for all items
totalPayable decimal Total amount to be paid by the customer
totalInclusiveTax decimal Total amount of tax included
totalExclusiveTax decimal Total amount of tax excluded
utcExpiryTime integer Cart expiry time
patron object Patron information
promo object Promo Code applied
package string Package's code
totalTaxDetails object Tax details object
totalTaxDetails[].name string Tax name
totalTaxDetails[].price string Tax price
promoErrorMessage object Promo code error message object
promoErrorMessage[].code string Promo code applied
promoErrorMessage[].errorMessage string Promo code error message. This will be returned when Update payment methods to cart is triggered
items array Array of cart items
items[].id string Cart item identifier
items[].type string Cart item type. Possible values: product, fee, discount, pass
items[].displayName string Display name of the cart item
items[].currency string Currency code
items[].qty integer Quantity
items[].nominalPrice decimal Unit amount
items[].totalPrice decimal Total amount
items[].tax decimal Total tax included
items[].mapUrl string Map URL
items[].pass string Pass code
items[].passStartValidityISO string Pass start time validity in ISO format
items[].passEndValidityISO string Pass end time validity in ISO format
items[].product object Product information
items[].product.code string Product code
items[].product.type string Product type. Possible values: event, external_event, online, package, pass
items[].product.name string Product name
items[].session object Session information
items[].session.code string Session code
items[].session.startTime string Session date and time
items[].category object Category information
items[].category.code string Category code
items[].category.name string Display name of the category
items[].category.color string Display color of the category
items[].ticketType object Ticket type information
items[].ticketType.code string Ticket type code
items[].ticketType.name string Display name of the ticket type
items[].ticketType.isComplimentary boolean Identifies if it is a complimentary ticket
items[].ticketType.redeemingPassId array Pass IDs that are used to redeem a ticket
seats array Array of seats
items[].feeName string Display name of the fee. Only for cart item with fee type
items[].feeClass string Class grouping of the fee. Only for cart item with fee type
items[].refProductCartItem string Reference identifier to the parent product cart item
items[].package string Package's code
items[].isFixedPackage boolean Determines if it is a fixed package
items[].productDetails object Details of the products that is in a package. Only applicable to a package type
items[].productDetails.code string Package's code
items[].productDetails.packagedProduct object Details of the packaged product
items[].productDetails.packagedProduct.position integer Position of the product in a package
items[].productDetails.packagedProduct.productCode string Product's code that is in a package
items[].productDetails.packagedProduct.packagedCategories object Details of the product's category in a package
items[].productDetails.packagedProduct.packagedCategories.CATEGORY_CODE object Category object of a packaged's product
items[].productDetails.packagedProduct.packagedCategories.CATEGORY_CODE.allowSplitSeats boolean Determines if category allows seats to be splitted
items[].productDetails.packagedProduct.packagedCategories.CATEGORY_CODE.autoAssign boolean Determines if category allows seats to be auto assigned
items[].productDetails.packagedProduct.packagedCategories.CATEGORY_CODE.minQuantityPerPackage integer Minimum quantity of the ticket in a package
items[].productDetails.packagedProduct.packagedCategories.CATEGORY_CODE.maxQuantityPerPackage integer Maximum quantity of the ticket in a package

Negative Scenarios

Negative Scenarios Response Body

{
    "success": false,
    "error": {
        "lang": "en",
        "path": "/api/v2/carts/3400c0e8-8a86-4788-a6e5-6504e5e206af8",
        "timestamp": "2020-12-11T10:52:37.144Z",
        "exception": "{\"response\":{\"statusCode\":400,\"message\":\"Cannot find cart with id or code = 3400c0e8-8a86-4788-a6e5-6504e5e206af8\",\"error\":\"Bad Request\"},\"status\":400,\"message\":\"Cannot find cart with id or code = 3400c0e8-8a86-4788-a6e5-6504e5e206af8\"}",
        "code": "server_error",
        "message": "Cannot find cart with id or code = 3400c0e8-8a86-4788-a6e5-6504e5e206af8"
    }
}
HTTP Error Code Error Message Remarks
400 server_error Cannot find cart with id or code = 00968db5-f653-4a7b-9520-70a3b6971db98 Cart Id does not exist

Extend cart expiry

Extends the expiry of cart that matches the provided cart ID.

HTTP Request

curl --location --request POST 'https://api.bigtix.io/api/live/v3/carts/1cf53331-46da-477a-b267-a5cdf318c6ad/expiry' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y' \
--data-raw '{}'

POST https://api.bigtix.io/api/live/v3/carts/:cartId/expiry

Request Headers

Name Description
Authorization Bearer: {{access_token}}

Request Parameters

Name Description
cartId Cart identifier

Request Body

None.

200 OK Response

200 OK Response Body

{
  "success": true,
  "data": {
    "utcExpiryTime": 1600348290
  }
}
Name Type Description
utcExpiryTime integer Cart expiry time in UTC timestamp

Negative Scenarios

Negative Scenarios Response Body

{
    "success": false,
    "error": {
        "lang": "en",
        "path": "/api/v2/carts/20f6e2b4-9677-4dad-aeb4-fefdabb17b10/extendExpiry",
        "timestamp": "2020-10-22T06:53:12.143Z",
        "exception": "{\"response\":{\"statusCode\":422,\"message\":\"Cart has expired\",\"error\":\"Unprocessable Entity\"},\"status\":422,\"message\":\"Cart has expired\"}",
        "code": "server_error",
        "message": "Cart has expired"
    }
}
HTTP Error Code Error Message Remarks
422 update_cart Cart has expired Countdown timer has reached 0 and cart has expired
422 not_found Cart does not exist Cart ID is invalid
422 not_found No cart items found No item is found for the given cart ID

Update patron to cart

Update the patron information of a cart that matches the provided cart ID.

HTTP Request

curl --location --request PUT 'https://api.bigtix.io/api/live/v3/carts/1cf53331-46da-477a-b267-a5cdf318c6ad/patron' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y' \
--data-raw '{
    "name": "Tester",
    "email": "[email protected]",
    "phone": "+6587654321",
    "country": "SG"
}'

PUT https://api.bigtix.io/api/live/v3/carts/:cartId/patron

Request Headers

Name Description
Authorization Bearer: {{access_token}}

Request Parameters

Name Description
cartId Cart identifier

Request Body

Request Body

{
    "name": "Tester",
    "email": "[email protected]",
    "phone": "+6587654321",
    "country": "SG"
}
Name Type Description
name string Name of the patron
email string Email of the patron
phone string Phone number of the patron
country string Residential country of the patron

200 OK Response

200 OK Response Body

{
    "success": true,
    "data": {
        "id": "dfbd149b-83c2-4fcd-81bf-813ab0ebbeba",
        "patron": {
            "email": "[email protected]",
            "phone": "+6587654321",
            "country": "SG",
            "name": "Tester"
        }
    }
}
Name Type Description
id string Cart identifier
patron object Patron information
patron.name string Name of the patron
patron.email string Email of the patron
patron.phone string Phone number of the patron
patron.country string Residential country of the patron

Negative Scenarios

Negative Scenarios Response Body

{
    "success": false,
    "error": {
        "code": "patron_info_missing",
        "message": "Email address and phone number are mandatory",
        "path": "/api/v2/carts/9d685a15-e2bf-4b95-a30b-81a4dade15a2/patron",
        "exception": "ApplicationError: Email address and phone number are mandatory\n    at CartsService.updateCartPatron (/dist/carts/carts.service.js:293:31)\n    at async CartsController.updatePatron (/dist/carts/carts.controller.js:77:18)",
        "timestamp": "2020-12-11T11:08:12.765Z"
    }
}
HTTP Error Code Error Message Remarks
422 server_error No cart items found in cart Invalid Cart Id
422 server_error No cart items found in cart No item is found within the given cart
422 patron_info_missing Email address and phone number are mandatory Name/Email/Phone are missing in request.

Add promo code to cart

Update the promo code information of a cart that matches the provided cart ID.

HTTP Request

curl --location --request PUT 'https://api.bigtix.io/api/live/v3/carts/1cf53331-46da-477a-b267-a5cdf318c6ad/addPromo/PROMO1' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y' \
--data-raw '{}'

PUT https://api.bigtix.io/api/live/v3/carts/:cartId/addPromo/:promoCode

Request Headers

Name Description
Authorization Bearer: {{access_token}}

Request Parameters

Name Description
cartId Cart identifier

Request Body

Request Body

{
}

200 OK Response

200 OK Response Body

{
    "success": true,
    "data": {
        "id": "dfbd149b-83c2-4fcd-81bf-813ab0ebbeba",
        "promo": [
            "PROMO1"
        ],
    }
}
Name Type Description
id string Cart identifier
promo object Promo Code Applied

Negative Scenarios

Negative Scenarios Response Body

{
    "success": false,
    "error": {
        "lang": "en",
        "path": "/api/v2/carts/07d9bbf0-4da1-4753-b109-af503e90f713/addPromo/PROMO1",
        "timestamp": "2023-12-17T09:56:48.115Z",
        "exception": "{\"response\":{\"statusCode\":422,\"message\":\"Promocode PROMO1 is invalid\",\"error\":\"Unprocessable Entity\"},\"status\":422,\"options\":{},\"message\":\"Promocode PROMO1 is invalid\",\"name\":\"UnprocessableEntityException\"}",
        "code": "server_error",
        "message": "Promocode PROMO1 is invalid"
    }
}
HTTP Error Code Error Message Remarks
422 server_error Invalid Promo Code Applied to Cart Invalid Promo Code

Remove promo code from cart

Update the promo code information of a cart that matches the provided cart ID.

HTTP Request

curl --location --request PUT 'https://api.bigtix.io/api/live/v3/carts/1cf53331-46da-477a-b267-a5cdf318c6ad/removePromo/PROMO1' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y' \
--data-raw '{}'

PUT https://api.bigtix.io/api/live/v3/carts/:cartId/removePromo/:promoCode

Request Headers

Name Description
Authorization Bearer: {{access_token}}

Request Parameters

Name Description
cartId Cart identifier

Request Body

Request Body

{
}

200 OK Response

200 OK Response Body

{
    "success": true,
    "data": {
        "id": "dfbd149b-83c2-4fcd-81bf-813ab0ebbeba",
        "promo": [],
    }
}
Name Type Description
id string Cart identifier
promo object Promo Code Applied. [] when Promo Code is removed.

Update payment methods to cart

Override and update the payment methods in a specific cart. This will trigger the cart to re-compute and include any additional payment fee to the cart total payable.

HTTP Request

curl --location --request PUT 'https://api.bigtix.io/api/live/v3/carts/1cf53331-46da-477a-b267-a5cdf318c6ad/paymentmethods' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y' \
--data-raw '{}'

PUT https://api.bigtix.io/api/live/v3/carts/:cartId/paymentmethods

Request Headers

Name Description
Authorization Bearer: {{access_token}}

Request Parameters

Name Description
cartId Cart identifier

Request Body

Request Body

{
  "paymentDetails": [
    {
      "paymentMethod": "MERCHANT_CREDIT",
      "amount": 100.50
    }
  ]
}
Name Type Description
paymentDetails array Array of payment details. (Only single payment detail is supported currently)
paymentDetails[].paymentMethod string Payment method code
paymentDetails[].amount decimal Amount to deduct with payment method

200 OK Response

200 OK Response Body

{
    "success": true
}
Name Type Description
success boolean Identifies if payment method is updated successfully

Negative Scenarios

Negative Scenarios Response Body

{
    "success": false,
    "error": "Bad Request",
    "statusCode": 400,
    "message": "Invalid parameters."
}
HTTP Error Code Error Message Remarks
400 Invalid parameters. Payment details missing in request
422 update_cart Cart has expired. Cart has expired

Create transaction

Create a new transaction from a cart. Calls this API when the customer is ready to make payment for the selected items in the cart.

HTTP Request

curl --location --request POST 'https://api.bigtix.io/api/live/v3/transactions' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y' \
--data-raw '{
  "cartId": "f05ee798-3938-433b-89b4-35e4b407b793"
}'

POST https://api.bigtix.io/api/live/v3/transactions

Request Headers

Name Description
Authorization Bearer: {{access_token}}

Request Parameters

None.

Request Body

Request Body

{
  "cartId": "f05ee798-3938-433b-89b4-35e4b407b793"
}
Name Type Description
cartId string Cart Identifier

200 OK Response

200 OK Response Body

{
    "success": true,
    "data": {
        "id": "5217fd8d-aad8-4c3b-aa6a-d872ea7610c7",
        "transactionRef": "AX6QYGXZ9MNL",
        "cartId": "f05ee798-3938-433b-89b4-35e4b407b793",
        "channel": "BMSSGPOS",
        "currency": "SGD",
        "totalQty": 1,
        "totalPrice": 10,
        "totalFees": 1,
        "totalDiscount": 0,
        "totalPayable": 11,
        "totalInclusiveTax": 0.72
    }
}
Name Type Description
id string Transaction identifier
transactionRef string Transaction reference number
cartId string Cart identifier
channel string Sale channel code
currency string Currency code
totalQty decimal Total quantity
totalPrice decimal Total product amount
totalFees decimal Total fee amount
totalDiscount decimal Total discount amount
totalPayable decimal Total amount to be paid by the customer
totalInclusiveTax decimal Total tax amount included

Negative Scenarios

Negative Scenarios Response Body

{
    "success": false,
    "error": {
        "code": "create_transaction",
        "message": "Cart cannot found.",
        "path": "/api/v2/transactions",
        "exception": "ApplicationError: Cart cannot found.\n    at TransactionsService.create (/dist/transactions/transactions.service.js:88:19)\n    at runMicrotasks (<anonymous>)\n    at processTicksAndRejections (internal/process/task_queues.js:97:5)\n    at async TransactionsController.create (/dist/transactions/transactions.controller.js:59:29)",
        "timestamp": "2020-12-11T13:58:14.869Z"
    }
}
HTTP Error Code Error Message Remarks
422 create_transaction This cart status is EXPIRED, unable to create transaction. Cart has expired
422 create_transaction Cart cannot found. Invalid Cart Id

Create payment

Creates payment for the provided transaction ID.

HTTP Request

curl --location --request POST 'https://api.bigtix.io/api/live/v3/payments' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y' \
--data-raw '{
    "transactionId": "5217fd8d-aad8-4c3b-aa6a-d872ea7610c7",
    "paymentDetails": [
        {
            "paymentMethod": "MERCHANT_CREDIT",
            "amount": 11,
            "merchantAccount": "5ec28b35c6d68b001948fd0b",
        }
    ]
}'

POST https://api.bigtix.io/api/live/v3/payments

Request Headers

Name Description
Authorization Bearer: {{access_token}}

Request Parameters

None.

Request Body

Request Body

{
    "transactionId": "5217fd8d-aad8-4c3b-aa6a-d872ea7610c7",
    "paymentDetails": [
        {
            "paymentMethod": "MERCHANT_CREDIT",
            "amount": 11,
            "merchantAccount": "5ec28b35c6d68b001948fd0b",
        }
    ]
}
Name Type Description
transactionId string Transaction identifier
paymentDetails array List of payments. (Only single payment detail is supported currently)
paymentDetails[].paymentMethod string Payment method code. Supported value: MERCHANT_CREDIT
paymentDetails[].merchantAccount string Merchant account number issued to the organization
paymentDetails[].amount decimal Payment amount

200 OK Response

200 OK Response Body

{
    "success": true,
    "data": {
        "transactionId": "b7021956-dadf-48ce-bfce-55de0ca672ee",
        "paymentDetails": [
            {
                "id": "531c6748-6f67-4cb3-a229-d91a4161f26a",
                "paymentRef": "DP9N37X41D3E",
                "paymentRefTimestamp": "1693365496",
                "paymentMethod": "MERCHANT_CREDIT",
                "paymentMethodName": "Merchant Credit",
                "paymentGatewayOrderId": null,
                "amount": {
                    "value": 77,
                    "currency": "SGD"
                },
                "authorisation": "DPY6GM807R4XYV9N37X41D3EZP2KD6JLW1",
                "merchantAccount": "5ec28b35c6d68b001948fd0b",
                "metadata": {
                    "stripeFPXInfo": {}
                },
                "voucher": {},
                "status": 0,
                "merchantMeta": {
                    "merchantAccount": "5ec28b35c6d68b001948fd0b",
                    "merchantAccountName": "Merchant ABC Credit Account"
                }
            }
        ]
    }
}
Name Type Description
transactionId string Transaction identifier
paymentDetails array List of payments used to pay this transaction
paymentDetails[].id string Payment identifier
paymentDetails[].paymentRef string Payment reference number
paymentDetails[].paymentRefTimestamp integer Payment time in UTC timestamp in seconds
paymentDetails[].paymentMethod string Payment method code. Possible value: MERCHANT_CREDIT
paymentDetails[].merchantAccount string Merchant account number issued to the organization
paymentDetails[].amount decimal Payment details consists of value and currency
paymentDetails[].authorisation string Authorisation token to be used when updating the payment status
paymentDetails[].status integer Payment status. This will always be "0: Pending" when the payment is newly created
paymentDetails[].merchantMeta string Merchant details consists of merchant account number and name

Negative Scenarios

Negative Scenarios Response Body

{
    "success": false,
    "error": {
        "code": "not_found",
        "message": "transaction cannot found.",
        "path": "/api/v2/payments/createMultiple",
        "exception": "ApplicationError: transaction cannot found.\n    at PaymentsService.createMultiple (/dist/payments/payments.service.js:98:19)\n    at runMicrotasks (<anonymous>)\n    at processTicksAndRejections (internal/process/task_queues.js:97:5)\n    at async PaymentsController.createMultiple (/dist/payments/payments.controller.js:84:22)",
        "timestamp": "2020-12-11T14:02:07.853Z"
    }
}
HTTP Error Code Error Message Remarks
422 not_found Transaction cannot found. Invalid Transaction Id
500 server_error Another pending payment is waiting. Creating payment again for transaction before cancelling previous payment
500 server_error This transaction are completed. Creating payment after completing the transaction

Complete payment

Update the payment status to success or failed after completion of payment from customer.

HTTP Request

curl --location --request PUT 'https://api.bigtix.io/api/live/v3/payments/358a31b4-ee9b-4899-bd9d-3187b7504e75' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y' \
--data-raw '{
  "authorisation": "KSsHOo6byE",
  "paymentStatus": 1,
  "merchantAccount": "MERC0001",
  "merchantReference": "5ec28b43c6d68b001948fd0d"
}'

POST https://api.bigtix.io/api/live/v3/payments/:paymentId

Request Headers

Name Description
Authorization Bearer: {{access_token}}

Request Parameters

Name Description
paymentId Payment identifier

Request Body

Request Body

{
  "authorisation": "KSsHOo6byE",
  "paymentStatus": 1,
  "merchantAccount": "MERC0001",
  "merchantReference": "5ec28b43c6d68b001948fd0d"
}
Name Type Description
authorisation string Authorisation token given when creating the payment
paymentStatus integer Payment status. Supported values: Success - 1, Failed - 2
merchantAccount string Merchant account that uniquely identifies a merchant
merchantReference string Merchant or Partner payment reference for support

200 OK Response

200 OK Response Body

{
    "success": true,
    "data": {
        "id": "358a31b4-ee9b-4899-bd9d-3187b7504e75",
        "transactionId": "c1a26f86-0793-47ba-9388-e9713911632f",
        "paymentRef": "AP6XN7QDYG0K",
        "paymentRefTimestamp": "1597241438",
        "paymentMethod": "MERCHANT_CREDIT",
        "merchantMeta": {
            "merchantAccount": "GRAB001",
            "merchantReference": "GRAB-TEST-0004"
        },
        "status": 1
    }
}
Name Type Description
id string Payment identifier
transactionId string Transaction identifier
paymentRef string Payment reference number
paymentRefTimestamp integer Payment time in UTC timestamp in seconds
paymentMethod string Payment method code. Supported value: MERCHANT_CREDIT
merchantMeta object Merchant-related object information
merchantMeta.merchantAccount string Merchant account number issued to the organization
merchantMeta.merchantReference string External payment reference for support
status integer Payment status. Possible values: Success - 1, Failed - 2

Negative Scenarios

Negative Scenarios Response Body

{
    "success": false,
    "error": {
        "code": "update_payment",
        "message": "This payment is FAILED,  update is not allowed.",
        "path": "/api/v2/payments/f2374205-e0d4-4c65-be4f-83f7ec98ede4",
        "exception": "ApplicationError: This payment is FAILED,  update is not allowed.\n    at PaymentsService.update (/dist/payments/payments.service.js:448:19)\n    at processTicksAndRejections (internal/process/task_queues.js:97:5)\n    at async PaymentsController.update (/dist/payments/payments.controller.js:107:22)",
        "timestamp": "2020-12-11T14:24:17.949Z"
    }
}
HTTP Error Code Error Message Remarks
422 update_payment This payment is SUCCESS, update is not allowed. Payment completed for the transaction
422 update_payment This payment is FAILED, update is not allowed. Payment cancelled for the transaction
422 not_found Payment not found Invalid Payment Id is passed
422 patron_info_missing Email address and phone number are mandatory Patron information is not updated. Please refer to 'Update patron to cart'

Get a single transaction

Returns a single transaction for the provided transaction ID. After completing the payment, call this API to find out if transaction status.

HTTP Request

curl --location --request GET 'https://api.bigtix.io/api/live/v3/transactions/5217fd8d-aad8-4c3b-aa6a-d872ea7610c7' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y'

GET https://api.bigtix.io/api/live/v3/transactions/:transactionId

Request Headers

Name Description
Authorization Bearer: {{access_token}}

Request Parameters

Name Description
transactionId Transaction identifier

Request Body

None.

200 OK Response

200 OK Response Body

{
  "success": true,
  "data": {
    "id": "5217fd8d-aad8-4c3b-aa6a-d872ea7610c7",
    "transactionRef": "AX6QYGXZ9MNL",
    "cartId": "b4973cf8-e261-4b15-95a3-54a0e48e487b",
    "channel": "BMSSGPOS",
    "currency": "SGD",
    "totalQty": 1,
    "totalPrice": 10,
    "totalFees": 1,
    "totalDiscount": 0,
    "totalPayable": 11,
    "totalInclusiveTax": 0.72,
    "patron": {
      "email": "[email protected]",
      "phone": "+6587654321",
      "country": "SG",
      "name": "Tester"
    },
    "payments": [
      {
        "id": "358a31b4-ee9b-4899-bd9d-3187b7504e75",
        "paymentRef": "AP6XN7QDYG0K",
        "paymentRefTimestamp": "1597241438",
        "paymentMethod": "MERCHANT_CREDIT",
        "status": 1,
        "amount": {
            "currency": "SGD",
            "value": 11
        },
        "merchantMeta": {
            "merchantAccount": "GRAB001",
            "merchantReference": "GRAB-TEST-0004"
        }
      }
    ],
    "tickets": [
      {
        "ticketNo": "AK21KM8XX7VY"
      }
    ]
  }
}
Name Type Description
id string Transaction identifier
transactionRef string Transaction reference number
cartId string Cart identifier
channel string Sale channel code
currency string Currency code
totalQty decimal Total quantity
totalPrice decimal Total product amount
totalFees decimal Total fee amount
totalDiscount decimal Total discount amount
totalPayable decimal Total amount to be paid by the customer
totalInclusiveTax decimal Total tax amount included
patron object Patron information
patron.name string Name of the patron
patron.email string Email of the patron
patron.phone string Phone number of the patron
patron.country string Residential country of the patron
payments array Array of payment information
payments[].id string Payment identifier
payments[].paymentRef string Payment reference number
payments[].paymentRefTimestamp integer Payment time in UTC timestamp in seconds
payments[].paymentMethod string Payment method code. Possible value: MERCHANT_CREDIT
payments[].amount decimal Payment amount object
payments[].amount.currency string Payment amount currency code
payments[].amount.value decimal Payment amount
payments[].merchantMeta object Merchant-related object information.
payments[].merchantMeta.merchantAccount string Merchant account number issued to the organization.
payments[].merchantMeta.merchantReference string Partner External payment reference number.
payments[].status integer Payment status. Supported values: Pending - 0, Success - 1, Failed - 2
tickets array Array of ticket information
tickets[].ticketNo string Ticket reference number

Negative Scenarios

Negative Scenarios Response Body

{
    "success": false,
    "error": {
        "code": "not_found",
        "message": "Transaction not found",
        "path": "/api/v2/transactions/f6d87290-1f10-4a32-a5b0-5112520f06e/transPaymentResult",
        "exception": "ApplicationError: Transaction not found\n    at TransactionsService.getTransaction (/dist/transactions/transactions.service.js:65:19)\n    at runMicrotasks (<anonymous>)\n    at processTicksAndRejections (internal/process/task_queues.js:97:5)\n    at async TransactionsController.getTransaction (/dist/transactions/transactions.controller.js:50:24)",
        "timestamp": "2020-12-11T14:45:14.078Z"
    }
}
HTTP Error Code Error Message Remarks
422 not_found Transaction not found Invalid Transaction ID

Get list of transactions by email and phone number

Returns all transactions of the provided email and phone number

HTTP Request

curl --location --request GET 'https://api.bigtix.io/api/live/v3/emails/transaction/[email protected]&phone=%2B6588888888' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y'

GET https://api.bigtix.io/api/live/v3/emails/transaction/[email protected]&phone=%2B6588888888

Request Headers

Name Description
Authorization Bearer: {{access_token}}

Request Parameters

Name Description
email Email used to create transaction
phone Phone number with country code used to create transaction. Use encoded special characters when appending country code, for example: +65 to %2B65

Request Body

None.

200 OK Response

200 OK Response Body

{
    "success": true,
    "data": {
        "transactions": [
            {
                "id": "df349758-3f71-42af-b5f3-bc2a004cdb41",
                "transactionId": "b49d7035-c096-4006-8de6-d6c39e604f6f",
                "products": [
                    {
                        "product": {
                            "name": "GA Event"
                        },
                        "sessions": [
                            {
                                "code": "3LZ5",
                                "startTime": "2023-12-01 00:00:00",
                                "endTime": "2025-11-30 00:00:00",
                                "startTimeISO": "2023-12-01T00:00:00+08:00",
                                "endTimeISO": "2025-11-30T00:00:00+08:00"
                            }
                        ],
                        "timeZoneOffset": 8
                    }
                ]
            }
        ],
        "total": 1
    }
}
Name Type Description
id string Transaction identifier
transactions[] array Transactions array
transactions[].transactionId string Transaction ID
transactions[].products[] array Transaction product details
transactions[].products[].product.name string Transaction product name
transactions[].sessions[] array Transaction's sessions
transactions[].sessions[].code string Session code
transactions[].sessions[].startTime string Session start time
transactions[].sessions[].endTime string Session end time
transactions[].sessions[].startTimeISO string Session start time in ISO format
transactions[].sessions[].endTimeISO string Session end time in ISO format

List tickets

Returns the list of tickets of a transaction for the provided transaction ID.

HTTP Request

curl --location --request GET 'https://api.bigtix.io/api/live/v3/tickets/?transactionId=5217fd8d-aad8-4c3b-aa6a-d872ea7610c7' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y'

GET https://api.bigtix.io/api/live/v3/tickets/

Request Headers

Name Description
Authorization Bearer: {{access_token}}

Request Parameters

Name Description
transactionId Transaction identifier
pageNo (Optional) Page number. Default value: 1
pageSize (Optional) Number of documents per page. Default value: 20

Request Body

None.

200 OK Response

Response Body

{
    "success": true,
    "data": [
        {
            "id": "1a546928-24da-48a0-a585-dc0af00e03fd",
            "ticketNo": "AK21KM8XX7VY",
            "seatDetails": {
                "section": "A",
                "row": "M",
                "seatNo": "10",
                "areaCode": "1",
                "entrance": "Main"
            },
            "product": {
                "code": "MULAND20",
                "type": "movie",
                "name": "Mulan Disney 2020"
            },
            "session": {
                "code": "K0KN",
                "startTime": "2020-08-19 10:00:00"
            },
            "category": {
                "code": "A1",
                "name": "Category A"
            },
            "ticketType": {
                "code": "A1",
                "name": "Category A",
                "isComplimentary": false
            },
            "venue": "Capitol Theatre",
            "totalPrice": 10,
            "isComplimentary": false,
            "barcode": "6Af0ZP98DGvSObxeLh4M4b6ejSxTf8yFz+8r8jnHcME=",
            "status": 1
        }
    ]
}
Name Type Description
id string Ticket identifier
ticketNo string Ticket reference number
product object Product information
product.code string Product code
product.type string Product type. Possible values: event, external_event, online, package, pass
product.name string Display name of the product
session object Session information
session.code string Session code
session.startTime string Session date and time
category object Category information
category.code string Category code
category.name string Display name of the category
ticketType object Ticket type information
ticketType.code string Ticket type code
ticketType.name string Display name of the ticket type
ticketType.isComplimentary boolean Identifies if it is a complimentary ticket
seat object Seat information
seat.section string Section label
seat.row string Row label
seat.seatNo string Seat number label
seat.area string Area code
seat.entrance string Entrance label
totalPrice decimal Ticket price
venue string Display name of the venue
barcode string Scannable barcode
status integer Ticket status

Ticket status:

Code Description
0 VOIDED
1 ACTIVE
2 RETURNED
3 PRINTED
4 REPRINTED

Resend booking confirmation

Resend user's booking confirmation

HTTP Request

curl --location --request POST 'https://api.bigtix.io/api/live/v3/transactions/sendBookingConfirmation' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y' \
--data-raw '{
    "transactionIds": ["69b1a86c-fc55-4770-b0c6-7bc28b1eaca2"]
}'

POST https://api.bigtix.io/api/live/v3/transactions/sendBookingConfirmation

Request Headers

Name Description
Authorization Bearer: {{access_token}}

Request Parameters

Name Description
None.

Request Body

{
    "transactionIds": ["69b1a86c-fc55-4770-b0c6-7bc28b1eaca2"]
}
Name Type Description
transactionIds array Array of transactionIds

Response Body

200 OK Response

Response Body

{
    "success": true,
    "data": [
        {
            "to": "[email protected]",
            "from": "[email protected]",
            "type": "email",
            "transactionId": "69b1a86c-fc55-4770-b0c6-7bc28b1eaca2"
        }
    ]
}
Name Type Description
to string The recipient. Can be email or phone number
from string The sender
type string Possible values: email, sms
transactionId string The transaction ID used to resend booking confirmation

Negative Scenarios

HTTP Error Code Error Message Remarks
422 not_found Transaction IDs not found No Transactions result from database

Header Footer API

Returns the channel's header and footer

HTTP Request

GET https://api.bigtix.io/api/live/v3/channels/headerFooter

curl --location --request GET 'https://api.bigtix.io/api/live/v3/channels/headerFooter' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y'

Request Headers

Name Description
Authorization Bearer: {{access_token}}

Request Parameters

Name Description
None.

Request Body

None.

200 OK Response

Response Body

{
    "success": true,
    "data": {
        "header": {
            "carouselBannerImages": [
                {
                    "imageUrl": "static.bigtix.dev/dev-v1/202403/3d0aaad6-bd9b-4e01-9754-466aa394cbd5/og/930x524/bruno_mars.png",
                    "productCode": "GATIXX",
                    "productType": "event",
                    "url": "https://sg.dev.bigtix.dev/booking/GATIXX",
                    "states": [
                        "Singapore"
                    ],
                    "title": "Dev GA Event",
                    "description": "Bruno Mars concert"
                }
            ]
        },
        "footer": {
            "faq": "",
            "contactSupport": "",
            "termsAndConditions": "",
            "privacyPolicy": "",
            "copyright": "",
            "socialMedia": [
                {
                    "code": "facebook",
                    "url": "https://sg.dev.bigtix.dev/booking/GATIXX"
                }
            ]
        }
    }

}
Name Type Description
header object Header object
header.carouselBannerImages object Carousel banner images details
header.carouselBannerImages[].imageUrl string Banner images URL
header.carouselBannerImages[].productCode string Product code
header.carouselBannerImages[].productType string Product type
header.carouselBannerImages[].url string Product URL
header.carouselBannerImages[].states array States that will be shown at
header.carouselBannerImages[].title string Product title
header.carouselBannerImages[].description object Product description
footer object Footer object
footer.faq string Footer FAQ
footer.contactSupport string Footer contact support information
footer.termsAndConditions string Footer terms and conditions
footer.privacyPolicy string Footer privacy policy
footer.copyright string Footer copyright
footer.socialMedia object Social media object
footer.socialMedia[].code string Social media code. Possible values: facebook, instagram, linkedin and others
footer.socialMedia[].url string Social media URL

Seats Layout

For reserved seating event or movie, the frontend UI can display a graphical seats layout for the customers.

For movies, the client can choose to draw the 2D seats layout from the position data provided in the "List available seats" API call.

2D Seats Layout

The 2D seats layout data is provided by the cinema. The system passes the data via the "List available seats" API call. Each seat data contains a position object which provides the area, row and column index.

The row and column index starts from 0 for each area.

_ col0 col1 col2 col3
row0 0,0 0,1 0,2 0,3
row1 1,0 1,1 1,2 1,3
row2 2,0 2,1 2,2 2,3

Example

For Row M

"seats": [
    {
        "code": "seat-1-0-0",
        "svgId": "seat-1-0-0",
        "status": 1,
        "areaNumber": 1,
        "areaCode": "0000000001",
        "rowLabel": "M",
        "seatLabel": "22",
        "position": {
            "areaNum": 1,
            "rowNum": 0,
            "colNum": 0
        },
        "blockSelection": false,
        "attributes": [
            "normal"
        ]
    },
    {
        "code": "seat-1-0-1",
        "svgId": "seat-1-0-1",
        "status": 1,
        "areaNumber": 1,
        "areaCode": "0000000001",
        "rowLabel": "M",
        "seatLabel": "21",
        "position": {
            "areaNum": 1,
            "rowNum": 0,
            "colNum": 1
        },
        "blockSelection": false,
        "attributes": [
            "normal"
        ]
    },
    {
        "code": "seat-1-0-2",
        "svgId": "seat-1-0-2",
        "status": 0,
        "areaNumber": 1,
        "areaCode": "0000000001",
        "rowLabel": "M",
        "seatLabel": "20",
        "position": {
            "areaNum": 1,
            "rowNum": 0,
            "colNum": 2
        },
        "blockSelection": false,
        "attributes": [
            "socialdistancing"
        ]
    },
    {
        "code": "seat-1-0-3",
        "svgId": "seat-1-0-3",
        "status": 1,
        "areaNumber": 1,
        "areaCode": "0000000001",
        "rowLabel": "M",
        "seatLabel": "19",
        "position": {
            "areaNum": 1,
            "rowNum": 0,
            "colNum": 3
        },
        "blockSelection": false,
        "attributes": [
            "normal"
        ]
    }
]

For Row L

"seats": [
    {
        "code": "seat-1-1-0",
        "svgId": "seat-1-1-0",
        "status": 1,
        "areaNumber": 1,
        "areaCode": "0000000001",
        "rowLabel": "L",
        "seatLabel": "22",
        "position": {
            "areaNum": 1,
            "rowNum": 1,
            "colNum": 0
        },
        "blockSelection": false,
        "attributes": [
            "normal"
        ]
    },
    {
        "code": "seat-1-1-1",
        "svgId": "seat-1-1-1",
        "status": 1,
        "areaNumber": 1,
        "areaCode": "0000000001",
        "rowLabel": "L",
        "seatLabel": "21",
        "position": {
            "areaNum": 1,
            "rowNum": 1,
            "colNum": 1
        },
        "blockSelection": false,
        "attributes": [
            "normal"
        ]
    },
    {
        "code": "seat-1-1-2",
        "svgId": "seat-1-1-2",
        "status": 0,
        "areaNumber": 1,
        "areaCode": "0000000001",
        "rowLabel": "L",
        "seatLabel": "20",
        "position": {
            "areaNum": 1,
            "rowNum": 1,
            "colNum": 2
        },
        "blockSelection": false,
        "attributes": [
            "socialdistancing"
        ]
    },
    {
        "code": "seat-1-1-3",
        "svgId": "seat-1-1-3",
        "status": 1,
        "areaNumber": 1,
        "areaCode": "0000000001",
        "rowLabel": "L",
        "seatLabel": "19",
        "position": {
            "areaNum": 1,
            "rowNum": 1,
            "colNum": 3
        },
        "blockSelection": false,
        "attributes": [
            "normal"
        ]
    }
]

For Row K

"seats": [
    {
        "code": "seat-1-2-0",
        "svgId": "seat-1-2-0",
        "status": 1,
        "areaNumber": 1,
        "areaCode": "0000000001",
        "rowLabel": "K",
        "seatLabel": "22",
        "position": {
            "areaNum": 1,
            "rowNum": 2,
            "colNum": 0
        },
        "blockSelection": false,
        "attributes": [
            "normal"
        ]
    },
    {
        "code": "seat-1-2-1",
        "svgId": "seat-1-2-1",
        "status": 1,
        "areaNumber": 1,
        "areaCode": "0000000001",
        "rowLabel": "K",
        "seatLabel": "21",
        "position": {
            "areaNum": 1,
            "rowNum": 2,
            "colNum": 1
        },
        "blockSelection": false,
        "attributes": [
            "normal"
        ]
    },
    {
        "code": "seat-1-2-2",
        "svgId": "seat-1-2-2",
        "status": 0,
        "areaNumber": 1,
        "areaCode": "0000000001",
        "rowLabel": "K",
        "seatLabel": "20",
        "position": {
            "areaNum": 1,
            "rowNum": 2,
            "colNum": 2
        },
        "blockSelection": false,
        "attributes": [
            "socialdistancing"
        ]
    },
    {
        "code": "seat-1-2-3",
        "svgId": "seat-1-2-3",
        "status": 1,
        "areaNumber": 1,
        "areaCode": "0000000001",
        "rowLabel": "K",
        "seatLabel": "19",
        "position": {
            "areaNum": 1,
            "rowNum": 2,
            "colNum": 3
        },
        "blockSelection": false,
        "attributes": [
            "normal"
        ]
    }
]

Below is an example of interpretation of an area based on given positions (Refer to the sample json on the right):

Row seat seat seat seat
M 22 21 20 19
L 22 21 20 19
K 22 21 20 19

In the sample json, seat #20 is being marked as "socialdistancing" attribute. Below can be one option of representation:

Row seat seat seat seat
M 22 21 X 19
L 22 21 X 19
K 22 21 X 19