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.
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. |
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 seatPlan.sections[].svg Example for the SVG content example. |
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 |
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 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
Get header and footer
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 |