Introduction
This document describes the BIGTIX API endpoints provided to partners of BookMyShow Southeast Asia. They can use these API endpoints to get information on the events and movies going on sale in BookMyShow system.
By default, all requests will be routed to latest version of the REST 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.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. Put the access token in the header of the API calls 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. Use "client_credential" for API access. |
scope | string | Scope to be granted to the client. Use "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 put 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
Retrieves all the events and movies configured for the specific channel.
HTTP Request
curl --location --request GET 'https://api.bigtix.io/api/live/products' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y'
GET https://api.bigtix.io/api/live/products
Request Headers
Name | Description |
---|---|
Authorization | Bearer: {{access_token}} |
Request Parameters
Name | Description |
---|---|
region | (Optional) Filter by the region. |
productType | (Optional) Filter by the product type. E.g. event, movie, external, internal ... |
pageNo | (Optional) Which page number to return. If not specified, the default value is 1. |
pageSize | (Optional) Number of documents per page. If not specified, the default value is 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": "MPST",
"name": "Singapore Standard Time",
"offset": 8
},
"org": {
"name": "BookMyShow Singapore",
"country": "SG",
"logo": "//cdn-sea.bookmyshow.com/38/44/3844ad1f5be9672711d64dbd8fbb251e.png"
}
}
],
"paging": {
"totalCount": 1,
"pageSize": 1,
"pageCount": 1,
"pageNo": 1,
"currentCount": 1,
"hasPrevPage": null,
"hasNextPage": null
}
}
Name | Type | Description |
---|---|---|
code | string | Product code. |
type | string | Type of product: online, event, internal_movie, external_movie |
stopSales | boolean | Flag to indicate that the product sale has stopped. |
isPackage | boolean | Is this a package product? |
name | string | Display name of the product. |
venue | string | Display name of the venue. |
cardImageUrl | string | Image URL |
bannerImageUrl | string | Image URL |
minTicketPerTxn | integer | Minimum no of tickets allowed per transaction |
maxTicketPerTxn | integer | Maximum no of tickets allowed per transaction |
currency | string | Base currency of the product. |
currency.code | string | Currency code. |
currency.name | string | Display name of the currency. |
currency.symbol | string | Display symbol of the currency. |
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 in the database for the provided channel partner. |
Get a single product
Retrieves the details of a specific event or movie. The details include the full web content, links to the poster and banner images, location and dates range of the event or movie.
HTTP Request
curl --location --request GET 'https://api.bigtix.io/api/live/products/MULAND20' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y'
GET https://api.bigtix.io/api/live/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": {
"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": "MPST",
"name": "Singapore Standard Time",
"offset": 8
},
"org": {
"name": "BookMyShow Singapore",
"country": "SG",
"logo": "//cdn-sea.bookmyshow.com/38/44/3844ad1f5be9672711d64dbd8fbb251e.png"
},
"categories": {
"A1": {
"name": "Category A",
"description": "Category A",
"color": "#d0021b",
"seatType": "GA",
"autoAssign": false,
"order": 1
},
"B1": {
"name": "Category B",
"description": "Category B",
"color": "#f5a623",
"seatType": "GA",
"autoAssign": false,
"order": 2
}
},
"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"
}
]
}
}
}
}
}
Name | Type | Description |
---|---|---|
code | string | Product code. |
type | string | Type of product. E.g. event, movie, ... |
stopSales | boolean | Stop the sales of this product. |
isPackage | boolean | Is this a package product? |
name | string | Display name of the product. |
venue | string | Display name of the venue. |
cardImageUrl | string | Poster image of the product. |
bannerImageUrl | string | Banner image of the product. |
minTicketPerTxn | integer | Minimum number of tickets per transaction. |
maxTicketPerTxn | integer | Maximum number of tickets per transaction. |
currency | object | Currency information. |
currency.code | string | Currency code. |
currency.name | string | Display name of the currency. |
currency.symbol | string | Display symbol of the currency. |
currency.decimals | integer | Display decimals of the currency. |
currency.rounding | integer | Rounding used in computing currency. Deprecated and will be removed. |
timezone | object | Timezone of the product. |
timezone.code | string | Timezone code. |
timezone.name | string | Display name of the timezone. |
timezone.offset | decimal | Offset of the timezone. |
org | object | Organization that owns the product. |
org.name | string | Display name of the organization. |
org.country | string | Registered country of the organization. |
org.logo | string | Logo image for the organization. |
categories | array | Array of price categories. |
categories[code] | object | Category code. |
categories[code].name | string | Display name of the category. |
categories[code].description | string | Long description of the category. |
categories[code].color | string | Display colour of the category. |
categories[code].seatType | string | Seating type. "GA" or "RS". |
categories[code].autoAssign | boolean | Auto allocate the seats instead of manual selection. |
categories[code].order | integer | Display ordering of the category. Smallest number on top. |
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 a part of the information for the product. |
content.sections[pretext] | object | Information to be shown at the top. |
content.sections[highlights] | object | Configured highlights of the event or movie. |
content.sections[importantNotes] | object | Configured important notes for the customer. |
content.sections[galleries] | object | Configured images, videos, and trailers of the event or movie. |
content.sections[synopsis] | object | Configured event or movie synopsis writeup. |
content.sections[termsAndCond] | object | Configured terms and conditions. |
content.sections[posttext] | object | Information to be shown at the bottom. |
content.sections[directorAndCast] | object | Configure Director and Cast details of the movie. |
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 product sessions
Retrieves the sessions of a specific event.
HTTP Request
curl --location --request GET 'https://api.bigtix.io/api/live/sessions?product=MULAND20' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y'
GET https://api.bigtix.io/api/live/sessions
Request Headers
Name | Description |
---|---|
Authorization | Bearer: {{access_token}} |
Request Parameters
Name | Description |
---|---|
product | Product code |
pageNo | (Optional) Which page number to return. If not specified, the default value is 1. |
pageSize | (Optional) Number of documents per page. If not specified, the default value is 20. |
Request Body
None.
200 OK Response
200 OK Response Body
{
"success": true,
"data": [
{
"code": "7LEG",
"attributes": [
"3D",
"2D"
],
"product": "GAEVENT1",
"place": "Orchard Cineplex",
"venue": "Hall 1",
"startDateTime": "2020-08-19 10:00:00",
"endDateTime": "2020-08-19 12:59:00",
"availability": "available",
"totalCapacity": 50,
"remaining": 39
},
{
"code": "X5OP",
"attributes": [
"3D",
"IMAX"
],
"product": "GAEVENT1",
"place": "Orchard Cineplex",
"venue": "Hall 2",
"startDateTime": "2020-08-20 10:00:00",
"endDateTime": "2020-08-20 12:59:00",
"availability": "available",
"totalCapacity": 50,
"remaining": 28
}
],
"paging": {
"pageNo": 0,
"pageSize": 0,
"totalCount": 0,
"hasNextPage": false,
"hasPrevPage": false,
"pageCount": 0
}
}
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. |
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). |
startDateTime | string | Starting date and time of the session. |
endDateTime | string | Ending data and time of the session. |
availability | string | Availability of tickets or seats. |
totalCapacity | integer | Total number of tickets or seats available: available, selling_fast, sold_out |
remaining | integer | Remaining tickets or seats available for sale during this time. |
Negative Scenarios
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"
}
}
HTTP | Error Code | Error Message | Remarks |
---|---|---|---|
422 | not_found | Product not found | Product with the given code does not exist in the database. |
Get a single session
Retrieves the details of a specific session. Each session contains the availability of tickets or seats, the place cum venue, information on the categories, the seating areas and the link to the seat plan.
HTTP Request
curl --location --request GET 'https://api.bigtix.io/api/live/sessions?product=MULAND20&session=D414' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y'
GET https://api.bigtix.io/api/live/sessions
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": {
"code": "K0KN",
"attributes": [
"3D",
"2D"
],
"product": "FARTEST3",
"orphanSeat": true,
"startDateTime": "2020-09-01 00:00:00",
"endDateTime": "2020-09-02 23:59:00",
"totalAvailable": 289,
"available": "available",
"venue": {
"code": "TPLS",
"name": "Screen 1",
"place": {
"code": "STAR",
"name": "Star Cineplex",
"region": "Singapore",
"country": "Singapore"
},
"seatplan": {
"id:": "8746a153-49b8-4446-88a1-3b05ff2065f8",
"svgUrl": "https://static.bigtix.pro/sit/202007/ba2d30456b35-1596010568272.svg",
"hasOverviewLayer": false,
"areas": [
{
"code": "1",
"description": "A",
"section": "A",
"entrance": "A",
"categoryCode": "C1"
},
{
"code": "2",
"description": "A",
"section": "B",
"entrance": "B",
"categoryCode": "C2"
},
{
"code": "3",
"description": "A",
"section": "C",
"entrance": "C",
"categoryCode": "C3"
}
]
}
}
}
}
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. |
orphanSeat | boolean | Allow orphan seat during selection. |
startDateTime | string | Session starting date and time. |
endDateTime | string | Session ending date and time. |
totalAvailable | integer | Total number of seats available for sale. |
available | string | Display label for availability status. |
venue | object | Venue layout information. |
venue.code | string | Venue code. |
venue.name | string | Display name of the venue. |
venue.place | object | The place where the venue is. |
venue.place.code | string | Place code. |
venue.place.name | string | Display name of the place. |
venue.place.region | string | Region of the place. |
venue.place.country | string | Country where the place is. |
venue.seatplan | object | Seating plan of the venue. |
venue.seatplan.id | string | Seat plan identifier. |
venue.seatplan.svgUrl | string | Link to the SVG seat plan file. (To be implemented in the later phase) |
venue.seatplan.hasOverviewLayer | boolean | Show overview plan. |
venue.seatplan.areas | array | Array of areas in the seat plan. |
venue.seatplan.areas[].code | string | Area code. |
venue.seatplan.areas[].description | string | Long description of the area. |
venue.seatplan.areas[].section | string | Section label. |
venue.seatplan.areas[].entrance | string | Nearest entrance label. |
venue.seatplan.areas[].category | string | Category code. |
Negative Scenarios
Negative Scenarios Response Body
{
"success": false,
"error": {
"code": "not_found",
"message": "Product not found",
"path": "/api/v2/live/sessions/?product=AVENGERS",
"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 | missing_session_code | Missing session code | No session code passed in the parameters. |
422 | not_found | Product not found | Product with the given code does not exist in the database. |
422 | not_found | Session not found | When the session with the given code does not exists in the database. |
422 | invalid_data | Invalid Session Code | When an invalid session code is passed in the parameters. |
500 | server_error | Server error | Any problem with the servers or network. |
List ticket types
Retrieves the ticket types for a specific session of an event or movie. Ticket types represent the different prices for the product. The ticket types are grouped by category.
HTTP Request
curl --location --request GET 'https://api.bigtix.io/api/live/tickettypes?product=MULAND20&session=D414' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y'
GET https://api.bigtix.io/api/live/tickettypes
Request Headers
Name | Description |
---|---|
Authorization | Bearer: {{access_token}} |
Request Parameters
Name | Description |
---|---|
product | Product code |
session | Session code |
pageNo | (Optional) Which page number to return. If not specified, the default value is 1. |
pageSize | (Optional) Number of documents per page. If not specified, the default value is 20. |
Request Body
None.
200 OK Response
200 OK Response Body
{
"success": true,
"data": [
{
"product": "GAEVENT1",
"category": {
"code": "A1",
"name": "Category A",
"description": "Category A",
"color": "#d0021b",
"autoAssign": false,
"order": 1
},
"tickettypes": [
{
"code": "A1",
"name": "Adult",
"description": "Ticket type A1",
"order": 1,
"price": 10,
"isStandardPrice": true,
"isComplimentary": false,
"minQuantityPerTransaction": 1,
"deliveryMethods": [
{
"code": "EMAIL",
"instructions": "Just show, do not need to print"
}
]
},
{
"code": "A2",
"name": "Senior Citizen",
"description": "Ticket type A2",
"order": 2,
"price": 5.99,
"isStandardPrice": false,
"isComplimentary": false,
"minQuantityPerTransaction": 1,
"maxQuantityPerTransaction": 20,
"deliveryMethods": [
{
"code": "EMAIL",
"instructions": "Just show, do not need to print"
}
]
}
]
},
{
"product": "GAEVENT1",
"category": {
"code": "B1",
"name": "Category B",
"description": "Category B",
"color": "#f5a623",
"autoAssign": false,
"order": 2
},
"tickettypes": [
{
"code": "B1",
"name": "Child",
"description": "For children age 13 and below",
"order": 3,
"price": 2.99,
"isStandardPrice": true,
"isComplimentary": false,
"minQuantityPerTransaction": 1,
"maxQuantityPerTransaction": 4,
"deliveryMethods": [
{
"code": "EMAIL",
"instructions": "Just show, do not need to print"
}
]
}
]
}
],
"paging": {
"pageNo": 0,
"pageSize": 0,
"totalCount": 0,
"hasNextPage": false,
"hasPrevPage": false,
"pageCount": 0
}
}
Name | Type | Description |
---|---|---|
product | string | Product code. |
category | object | Category object. |
category.code | string | Category code. |
category.name | string | Display name of the category. |
category.description | string | Long description of the category. |
category.color | string | Colour code for the category. |
category.autoAssign | boolean | Seats are auto-allocated by the system instead of manually selected by the customer. |
category.order | integer | Display ordering of the category. Smallest number on top of the list. |
tickettypes | array | Array of ticket type. |
tickettypes[].code | string | Ticket type code. |
tickettypes[].name | string | Display name of the ticket type. |
tickettypes[].description | string | Long description of the ticket type. |
tickettypes[].order | integer | Display ordering of the ticket type. Smallest number on top of the list. |
tickettypes[].price | decimal | Price of the ticket. |
tickettypes[].isStandardPrice | boolean | Standard ticket price. |
tickettypes[].isComplimentary | boolean | Complimentary ticket price. |
tickettypes[].minQuantityPerTransaction | integer | Minimum number of tickets to purchase. |
tickettypes[].maxQuantityPerTransaction | integer | Maximum number of tickets to purchase. |
tickettypes[].deliveryMethods | array | Array of delivery methods. |
tickettypes[].deliveryMethods[].code | string | Delivery method code. |
tickettypes[].deliveryMethods[].instructions | string | Special instructions for choosing the 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 | Parameter [xxx] must not be empty. | Mandatory parameter needs to be filled in. | |
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
Lists all the delivery methods for an event or movie. Delivery method indicate how the customer receives the purchased tickets. Please take note to 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/deliverymethods' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y'
GET https://api.bigtix.io/api/live/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"
]
}
}
],
"paging": {
"pageNo": 1,
"pageSize": 20,
"totalCount": 5,
"hasNextPage": false,
"hasPrevPage": false,
"pageCount": 0
}
}
Name | Type | Description |
---|---|---|
code | string | Delivery method code. |
name | string | Display name of the delivery method. |
description | string | Long description of the delivery method. |
meta | object | Additional information. |
meta.requiresMailAddress | boolean | Requires the frontend to capture the mailing address. |
meta.countries | array | Array of countries accepted by the delivery method. |
meta.pickUpPoints | array | Array of pickup points. |
meta.pickUpPoints[].code | string | Delivery pickup point code. |
meta.pickUpPoints[].name | string | Display name of the pickup point. |
meta.pickUpPoints[].description | string | Long description of the pickup point. |
Transactional API
List available seats
Retrieves the seats for a specific session of a reserved seating event. This API provides the seat status to be represented graphically in the seat plan displayed to the customers. It also 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/seats?product=MULAND20&session=D414' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y'
GET https://api.bigtix.io/api/live/seats
Request Headers
Name | Description |
---|---|
Authorization | Bearer: {{access_token}} |
Request Parameters
Name | Description |
---|---|
product | Product code |
session | Session code |
pageNo | (Optional) Which page number to return. If not specified, the default value is 1. |
pageSize | (Optional) Number of documents per page. If not specified, the default value is 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
},
{
"code": "seat-1-11-23",
"svgId": "seat-1-11-23",
"status": 1,
"areaNumber": 1,
"areaCode": "0000000001",
"rowLabel": "A",
"seatLabel": "1",
"position": {
"areaNum": 1,
"rowNum": 11,
"colNum": 23
},
"blockSelection": false,
"attributes": [
"normal"
]
},
{
"code": "seat-2-0-0",
"svgId": "seat-2-0-0",
"status": 1,
"areaNumber": 2,
"areaCode": "0000000002",
"rowLabel": "P",
"seatLabel": "20",
"position": {
"areaNum": 2,
"rowNum": 0,
"colNum": 0
},
"block": 4,
"blockSelection": true,
"attributes": [
"normal",
"group-left-seat"
]
},
{
"code": "seat-2-0-1",
"svgId": "seat-2-0-1",
"status": 1,
"areaNumber": 2,
"areaCode": "0000000002",
"rowLabel": "P",
"seatLabel": "19",
"position": {
"areaNum": 2,
"rowNum": 0,
"colNum": 1
},
"block": 4,
"blockSelection": true,
"attributes": [
"normal",
"group-right-seat"
]
}
]
},
"paging": {
"currentCount": 1,
"pageSize": 10,
"pageNo": 1,
"pageCount": 1,
"totalCount": 5,
"hasPrevPage": null,
"hasNextPage": null
}
}
Name | Type | Description |
---|---|---|
areas | array | Array of area information |
areas[].number | integer | Represents the 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 | Text description of the area. |
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 |
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. E.g. handicap, couple... |
Seat Status:
Code | Description |
---|---|
0 | Non existence seat |
1 | Available seat |
2 | Reserved seat |
3 | Held seat |
4 | Sold seat |
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 is used for keeping track of the selected tickets or seats before making payment and transacting.
HTTP Request
curl --location --request POST 'https://api.bigtix.io/api/live/carts/' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y' \
--data-raw '{}'
POST https://api.bigtix.io/api/live/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 |
Add item to cart
Add an item selection to the cart.
HTTP Request
curl --location --request POST 'https://api.bigtix.io/api/live/carts/1cf53331-46da-477a-b267-a5cdf318c6ad' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y' \
--data-raw '{}'
POST https://api.bigtix.io/api/live/carts/:cartId
Request Headers
Name | Description |
---|---|
Authorization | Bearer: {{access_token}} |
Request Parameters
Name | Description |
---|---|
cartId | Cart identifier. |
Request Body
Request Body
[
{
"type": "product",
"deliveryMethod": "EMAIL",
"product": "MULAND20",
"session": "K0KN",
"ticketType": "A1",
"category": "A",
"qty": 1,
"seats": ["seat-A-A-10", "seat-A-A-11"]
}
]
Name | Type | Description |
---|---|---|
[] | array | Array of selected products. |
[].type | string | Cart item type. Use "product". |
[].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. |
[].seats | array | Array of seat codes. For reserved seating event or movie only. |
200 OK Response
200 OK Response Body
{
"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": [
{
"section": "A",
"row": "M",
"seatNo": "10",
"areaCode": "1"
},
{
"section": "A",
"row": "M",
"seatNo": "11",
"areaCode": "1"
}
]
}
]
}
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. |
product | object | Product information. |
product.code | string | Product code. |
product.type | string | type. E.g. event, movie, ... |
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 | Complimentary ticket. |
venue | string | Display name of the venue. |
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 |
Remove item from cart
Removes an item from the cart.
HTTP Request
curl --location --request DELETE 'https://api.bigtix.io/api/live/carts/1cf53331-46da-477a-b267-a5cdf318c6ad' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y' \
--data-raw '{}'
DELETE https://api.bigtix.io/api/live/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 items found in cart. |
422 | update_cart | Cart has expired | Cart has expired. |
Get a single cart
Retrieves a specific cart with the items.
HTTP Request
curl --location --request GET ' https://api.bigtix.io/api/live/carts/1cf53331-46da-477a-b267-a5cdf318c6ad' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y'
GET https://api.bigtix.io/api/live/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
{
"success": true,
"data": {
"id": "6ffd0395-69da-455a-b244-2f4e9ea24958",
"currency": "SGD",
"totalPrice": 20,
"totalFees": 2,
"totalDiscount": 0,
"totalPayable": 22,
"totalInclusiveTax": 1.44,
"utcExpiryTime": 1604912705852,
"patron": {
"email": ""
},
"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"
}
}
]
}
]
}
}
Name | Type | Description |
---|---|---|
id | string | Cart identifier. |
currency | string | Currency code. |
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. |
utcExpiryTime | integer | Cart expiry time. |
patron | object | Patron information. |
items | array | Array of cart items. |
items[].id | string | Cart item identifier. |
items[].type | string | Cart item type. E.g. product, fee, discount, ... |
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[].feeName | string | Display name of the fee. Only for cart item with type = "fee". |
items[].feeClass | string | Class grouping of the fee. Only for cart item with type = "fee". |
items[].refProductCartItem | string | Reference identifier to the parent product cart item. |
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 in the database. |
Extend cart expiry
Extends the expiry timer of the specific cart.
HTTP Request
curl --location --request POST 'https://api.bigtix.io/api/live/carts/1cf53331-46da-477a-b267-a5cdf318c6ad/expiry' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y' \
--data-raw '{}'
POST https://api.bigtix.io/api/live/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 | New 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 is expired. |
422 | not_found | Cart does not exist | Cart ID entered is invalid. |
422 | not_found | No cart items found | No item is found within the given cart. |
Update patron to cart
Update the patron information in the specific cart.
HTTP Request
curl --location --request PUT 'https://api.bigtix.io/api/live/carts/1cf53331-46da-477a-b267-a5cdf318c6ad/patron' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y' \
--data-raw '{
"name": "Tester",
"email": "tester@gmail.com",
"phone": "+6587654321",
"country": "SG"
}'
PUT https://api.bigtix.io/api/live/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": "tester@gmail.com",
"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": "tester@gmail.com",
"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 is passed. |
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. |
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/carts/1cf53331-46da-477a-b267-a5cdf318c6ad/paymentmethods' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y' \
--data-raw '{}'
PUT https://api.bigtix.io/api/live/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 using the payment method. |
200 OK Response
200 OK Response Body
{
"success": true
}
Name | Type | Description |
---|---|---|
success | boolean | Whether 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. This is called 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/transactions' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y' \
--data-raw '{
"cartId": "f05ee798-3938-433b-89b4-35e4b407b793"
}'
POST https://api.bigtix.io/api/live/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 is passed. |
Create payment
Create a payment for the specific transaction.
HTTP Request
curl --location --request POST 'https://api.bigtix.io/api/live/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/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. Use only "MERCHANT_CREDIT" if payment collection is handled by the client side. |
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": "c1a26f86-0793-47ba-9388-e9713911632f",
"paymentDetails": [{
"id": "358a31b4-ee9b-4899-bd9d-3187b7504e75",
"paymentRef": "AP6XN7QDYG0K",
"paymentRefTimestamp": "1597241438",
"paymentMethod": "MERCHANT_CREDIT",
"amount": 11,
"authorisation": "KSsHOo6byE",
"merchantAccount": "5ec28b35c6d68b001948fd0b",
"status": 0
}]
}
}
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. Use "MERCHANT_CREDIT" if payment collection is handled by the client side. |
paymentDetails[].merchantAccount | string | Merchant account number issued to the organization. |
paymentDetails[].amount | decimal | Payment amount. |
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. |
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 is passed. |
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/payments/358a31b4-ee9b-4899-bd9d-3187b7504e75' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y' \
--data-raw '{
"authorisation": "KSsHOo6byE",
"paymentStatus": 1,
"merchantAccount": "MERC0001",
"merchantReference": "5ec28b43c6d68b001948fd0d"
}'
PUT https://api.bigtix.io/api/live/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 initiating the payment. |
paymentStatus | integer | New payment status. (1: Success, 2: Failed) |
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. Use "MERCHANT_CREDIT" if payment collection is handled by the client side. |
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 | New payment status. (1: Success, 2: Failed) |
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 in request. |
422 | patron_info_missing | Email address and phone number are mandatory | Patron information not updated. |
Get a single transaction
Retrieves the result of a single transaction. After completing the payment, the client can call this API to find out if the status of the transaction.
HTTP Request
curl --location --request GET 'https://api.bigtix.io/api/live/transactions/5217fd8d-aad8-4c3b-aa6a-d872ea7610c7' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y'
GET https://api.bigtix.io/api/live/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": "tester@gmail.com",
"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. Use "MERCHANT_CREDIT" if payment collection is handled by the client side. |
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. (0: Pending, 1: Success, 2: Failed) |
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 is passed. |
List tickets
Retrieves the list of tickets for a specific transaction.
HTTP Request
curl --location --request GET 'https://api.bigtix.io/api/live/tickets/?transactionId=5217fd8d-aad8-4c3b-aa6a-d872ea7610c7' \
--header 'Authorization: Bearer QxGC6j2dNIF7AF1PnfYJSX8Bko6EFW2Y'
GET https://api.bigtix.io/api/live/tickets/
Request Headers
Name | Description |
---|---|
Authorization | Bearer: {{access_token}} |
Request Parameters
Name | Description |
---|---|
transactionId | Transaction identifier. |
pageNo | (Optional) Which page number to return. If not specified, the default value is 1. |
pageSize | (Optional) Number of documents per page. If not specified, the default value is 20. |
Request Body
None.
200 OK Response
Response Body
{
"success": true,
"data": [
{
"id": "1a546928-24da-48a0-a585-dc0af00e03fd",
"ticketNo": "AK21KM8XX7VY",
"seat": {
"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,
"barcode": "6Af0ZP98DGvSObxeLh4M4b6ejSxTf8yFz+8r8jnHcME=",
"status": 1
}
],
"paging": {
"totalCount": 1,
"pageSize": 20,
"pageCount": 1,
"pageNo": 1,
"currentCount": 1,
"hasPrevPage": null,
"hasNextPage": null
}
}
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. E.g. event, movie, ... |
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 | 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 |
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 |