NAV
CURL NODEJS C#

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.

alt text

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.
email string Email of the patron.
phone string Phone number of the patron.
country string Residential country of the patron.

200 OK Response

200 OK Response Body

{
    "success": true,
    "data": {
        "id": "dfbd149b-83c2-4fcd-81bf-813ab0ebbeba",
        "patron": {
            "email": "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