1. Get Started
1.1 Overview
This STiX Cloud REST API Specification Document provides the API endpoints for accessing the resources and operations in the STiX Cloud Ticketing System for event booking flow.
1.2 Authorization
To authorize, use this code:
# With shell, you can just pass the correct header with each request
curl -u "<client_id>":"<client_secret>" -X POST
"https://auth.stixcloud.com/auth/v0/{tenant}/oauth/token?grant_type=client_credentials"
The above command returns JSON structured like this:
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9....",
"token_type": "bearer",
"expires_in": 3599,
"scope": "sistic product cart payment patron package membership",
"jti": "befa68ee-5355-4819-aef3-..."
}
The STiX Cloud REST API implements the OAuth 2.0 authorization protocol that gives an API client limited access to the resources on web server.
OAuth 2.0 Endpoint :
Env | URL |
---|---|
Staging | https://auth.stixcloudtest.com/auth/v0/{tenant}/oauth/token |
Production | https://auth.stixcloud.com/auth/v0/{tenant}/oauth/token |
To access the API, the clients need to first authenticate themselves using the client credential grant in exchange for an access token with the following parameters:
- tenant: REQUIRED. Please use tenant ID provided
- grant_type: REQUIRED. Value must be set to "client_credentials"
- client_id: REQUIRED. Client ID.
- client_secret: REQUIRED. Client Secret/Password.
1.3 Request Header
The access token is then passed to each API request via the HTTP header.
curl -H "Authorization: Bearer <accessToken>" <resourceURL>
Key | Value | Description |
---|---|---|
Content-Type | application/json | |
Authorization | Bearer |
1.4 Staging/Production Environment
Rest API Endpoint:
Env | URL |
---|---|
Staging | https://api.stixcloudtest.com/api/v0/{tenant} |
Production | https://api.stixcloud.com/api/v0/{tenant} |
--
Image Resource Endpoint:
Env | URL |
---|---|
Staging | https://api.stixcloudtest.com/{imagePath} |
Production | https://api.stixcloud.com/{imagePath} |
You must replace imagePath
with images retrieved from 2.1 Get Events, 2.2 Get Events Show Date & Time, and other endpoints that return images.
1.5 Sales Flow Diagram
1.6 Postman Collection
Import StixCloud Sales Flow API Postman Collection. Click the image below to download the collection.
2. Sales Flow API
This section contains a set of booking REST API endpoints that allow the API client to retrieve the event information such as available event timing
, category
, section
, inventory status
, pricing
or even to commit an order
.
2.1 Get Events
Retrieve the list of active events
available for sale. The list contains both current and future events.
Sample request:
curl --request GET \
--url https://api.stixcloud.com/api/v0/{tenant}/icc \
--header 'authorization: Bearer <Access-Token>' \
--header 'content-type: application/json'
The above command returns JSON structured like this:
Status: 200. Retrieve the list of active events available for sale.
{
"content": [
{
"summaryImagePath": "/public/SISTIC/01-01-2018/1514769287351/238x94.jpg",
"internetContentCode": "cbest0418",
"title": "The Best Gift - Cross Talk Play <<最棒的礼物>> 青少年相声剧",
"promoters": [
"<a href ='http://www.yppae.org/'>Young People’s Performing ..;"
],
"genre": [
"Theatre"
],
"startDate": "2018-04-06T20:00:00+08:00",
"endDate": "2018-04-07T20:00:00+08:00",
"sellabilityStartDate": "2018-01-01T00:00:00+08:00",
"sellabilityEndDate": "2018-04-08T00:00:00+08:00",
"venue": "Drama Centre Theatre",
"synopsis": "<p>Inspired by and adapted from Jean-Jacques Sempé and Ren&eacut#39..",
"bookingUrl": "http://www.sistic.com.sg/events/cbest0418",
"priceDescription": "<p>Standard: S$27, S$25</p>\n",
"duration": "<p>Approximately 1 hour 30 minutes<br />\n(Inclusive of 15 minutes interval)&..",
"admissionRules": "<p><strong>Rating / Age Limit</strong></p>\n\n<ul>...",
"salesDateText": "<p><strong>ALL Channel:</strong><br />\n1 Jan 2018, ...",
"languageTitle": "The Best Gift - Cross Talk Play <<最棒的礼物>> 青少年相声剧",
"updateDate": "2018-01-01T09:14:47+08:00",
"languageVenue": "<p><a href="http://www.sistic.com.sg/venues?id=196">..."
},
{
"summaryImagePath": "/public/SISTIC/01-02-2018/1517453085160/238X94.jpg",
"internetContentCode": "cescape2016aa",
"title": "Captivate Escape Rooms Singapore",
"promoters": [
"<a href ='http://www.admiralassociates.com/'>Admiral As..."
],
"genre": [
"Lifestyle"
],
"startDate": "2018-01-31T23:59:00+08:00",
"endDate": "2018-12-31T23:59:00+08:00",
"sellabilityStartDate": "2016-07-01T00:00:00+08:00",
"sellabilityEndDate": "2019-01-01T00:00:00+08:00",
"venue": "Singapore Shopping Centre, #06-28",
"synopsis": "<p>Book tickets for the biggest new entertainment buzz since the ...",
"priceDescription": "<p>Monday - Sunday: S$25 (min 2 pax)<br />\n<br />\n<strong&g...",
"duration": "<p></p>\n\n<p></p>\n\n<p></p>\n\n&l,,",
"admissionRules": "<p><strong>Rating / Age Limit</strong></p>...",
"updateDate": "2018-02-01T10:44:45+08:00",
"languageVenue": "<p><a href="http://www.sistic.com.sg/venues?id=955"..\n"
}
],
"totalPages": 103,
"totalElements": 205,
"last": false,
"size": 2,
"number": 0,
"first": true,
"numberOfElements": 2,
"links": [
{
"rel": "self",
"href": "http://api.stixcloud.com/api/v0/SISTIC/icc?page=0&size=2&lang=EN_SG"
},
{
"rel": "next",
"href": "http://api.stixcloud.com/api/v0/SISTIC/icc?lang=EN_SG&page=1&size=2"
}
],
"url": "http://api.stixcloud.com/api/v0/SISTIC/icc"
}
ICC Search Sample Request (Pass at least 3 characters for search criteria)
curl --request GET \
--url https://api.stixcloud.com/api/v0/{tenant}/icc?title=Natural History \
--header 'authorization: Bearer <Access-Token>' \
--header 'content-type: application/json'
The above command returns JSON structured like this:
{
"content": [
{
"summaryImagePath": "/public/SISTIC/17-02-2019/1550383995701/Hydrangeas.jpg",
"internetContentCode": "lkc2015",
"title": "Lee Kong Chian Natural History Museum",
"promoters": [
"<a href ='http://www.nus.edu.sg/'>Lee Kong Chian Natural History Museum</a>"
],
"genre": [
"Lifestyle"
],
"startDate": "2034-06-01T10:00:00+08:00",
"endDate": "2118-12-31T00:00:00+08:00",
"sellabilityStartDate": "2015-03-30T10:00:00+08:00",
"sellabilityEndDate": "2037-01-01T00:00:00+08:00",
"venue": "Lee Kong Chian Natural History Museum",
"language": "<ul>\n\t<li>English</li>\n</ul>\n",
"synopsis": "<p>Get acquainted with the incredible world of biodiversity at Singapore’s ..",
"bookingUrl": "http://www.sistic.com.sg/events/lkc2015",
"priceDescription": "<p><strong><strong>Singaporean / Permanent Resident (PR)... ",
"admissionRules": "<p><u><strong>Terms and Conditions<...",
"salesDateText": "<p>All Channels:<br />\n30 Mar 2015, 10am</p>\n",
"languageTitle": "Lee Kong Chian Natural History Museum",
"updateDate": "2019-02-17T14:13:16+08:00",
"languageVenue": "<p><a href="/venues?id=889">Lee Kong Chian Natural History Museum<.."
}
],
"totalElements": 1,
"totalPages": 1,
"last": true,
"first": true,
"numberOfElements": 1,
"size": 20,
"number": 0,
"links": [
{
"rel": "self",
"href": "https://api.stixcloud.com/api/v0/SISTIC/icc?page=0&size=20&lang=EN_SG"
}
],
"url": "https://api.stixcloud.com/api/v0/SISTIC/icc"
}
ICC Sorting Request (Refer to section 2.1.3)
curl --request GET \
--url https://api.stixcloud.com/api/v0/{tenant}/icc?sort=sellabilityStartDate \
--header 'authorization: Bearer <Access-Token>' \
--header 'content-type: application/json'
The above command returns JSON structured like this:
{
"content": [
{
"summaryImagePath": "/public/SISTIC/17-02-2019/1550383995701/Hydrangeas.jpg",
"internetContentCode": "lkc2015",
"title": "Lee Kong Chian Natural History Museum",
"promoters": [
"<a href ='http://www.nus.edu.sg/'>Lee Kong Chian Natural Hist..."
],
"genre": [
"Lifestyle"
],
"startDate": "2034-06-01T10:00:00+08:00",
"endDate": "2118-12-31T00:00:00+08:00",
"sellabilityStartDate": "2015-03-30T10:00:00+08:00",
"sellabilityEndDate": "2037-01-01T00:00:00+08:00",
"venue": "Lee Kong Chian Natural History Museum",
"language": "<ul>\n\t<li>English</li>\n</ul>\n",
"synopsis": "<p>Get acquainted with the incredible world of biodiversity at Singapore’s ...",
"bookingUrl": "http://www.sistic.com.sg/events/lkc2015",
"priceDescription": "<p><strong><strong>Singaporean / Permanent Re...",
"admissionRules": "<p><u><strong>Terms and Conditions</strong><..",
"salesDateText": "<p>All Channels:<br />\n30 Mar 2015, 10am</p>\n",
"languageTitle": "Lee Kong Chian Natural History Museum",
"updateDate": "2019-02-17T14:13:16+08:00",
"languageVenue": "<p><a href="/venues?id=889">Lee Kong Chian Natural History M.."
},
{
"summaryImagePath": "/public/SISTIC/17-01-2019/1547714720502/_ep.jpg",
"internetContentCode": "ctest0615",
"title": "(TEST) Esplanade-Presented GA",
"promoters": [
"The Esplanade Co Ltd"
],
"genre": [
"Concert"
],
"startDate": "2020-06-30T09:00:00+08:00",
"endDate": "2023-08-01T23:00:00+08:00",
"sellabilityStartDate": "2015-04-30T10:00:00+08:00",
"sellabilityEndDate": "2030-07-31T00:00:00+08:00",
"venue": "Esplanade Recital Studio",
"language": "English",
"synopsis": "What happens in the jungle when the sun goes down?<br />\nYou w...",
"priceDescription": "Standard: S$100",
"duration": "1 hour",
"admissionRules": "Admission is subject to tickets produced at the entrance.<br />...",
"salesDateText": "Internet : 4 May 2015, 9am<br />\nOther Channels : 4 May 2015, 10am",
"languageTitle": "(TEST) Esplanade-Presented GA",
"updateDate": "2019-01-17T16:45:21+08:00"
},
{
"summaryImagePath": "/public/SISTIC/17-01-2019/1547714720502/_ep.jpg",
"internetContentCode": "ctest0615",
"title": "(TEST) Esplanade-Presented GA",
"promoters": [
"The Esplanade Co Ltd"
],
"genre": [
"Concert"
],
"startDate": "2025-06-30T08:00:00+08:00",
"endDate": "2025-06-30T08:00:00+08:00",
"sellabilityStartDate": "2015-04-30T10:00:00+08:00",
"sellabilityEndDate": "2030-07-31T00:00:00+08:00",
"venue": "Esplanade Recital Studio",
"language": "English",
"synopsis": "What happens in the jungle when the sun goes down?<br />\...",
"priceDescription": "Standard: S$100",
"duration": "1 hour",
"admissionRules": "Admission is subject to tickets produced at the entrance.<br />...",
"salesDateText": "Internet : 4 May 2015, 9am<br />\nOther Channels : 4 May 2015, 10am",
"languageTitle": "(TEST) Esplanade-Presented GA",
"updateDate": "2019-01-17T16:45:21+08:00"
}
],
"totalElements": 162,
"totalPages": 54,
"last": false,
"sort": [
{
"direction": "ASC",
"property": "sellabilityStartDate",
"ignoreCase": false,
"nullHandling": "NATIVE",
"ascending": true
}
],
"first": true,
"numberOfElements": 3,
"size": 3,
"number": 0,
"links": [
{
"rel": "self",
"href": "https://api.stixcloud.com/api/v0/SISTIC/icc?page=0&size=3&lang=EN_SG"
},
{
"rel": "next",
"href": "https://api.stixcloud.com/api/v0/SISTIC/icc?lang=EN_SG&page=1&size=3"
}
],
"url": "https://api.stixcloud.com/api/v0/SISTIC/icc"
}
Errors:
Http Code: 500. Internal Server Error
{
"httpStatus": "500",
"errorTime":"2017-07-01T16:53:26.535+08:00",
"exceptionName": "java.lang.NullPointerException",
"statusMessage": "NullPointerException: ",
"url" : "https://api.stixcloud.com/api/v0/{tenant}/icc"
}
2.1.1 Request
You must replace tenant
with your tenant code.
2.1.2 Path Variables and Parameters
Name | Type | Description |
---|---|---|
tenant | String | [required] Tenant ID given |
page | Number | [optional] Page of record, default 0 |
size | Number | [optional] Number of item per page, default 20 |
lang | String | [optional] Language Code Defaults to EN_SG Below are the supported Locale ID: EN_SG English ZH_CN Simplified Chinese ZH_HK Traditional Chinese MS_MY Malay |
2.1.3 Searching and Sorting
Generic Search
- Note:
- The generic search method will search for the following attributes ()
- Search criteria must have at least 3 characters
- Searching is using wildcard search and case insensitive
Name | Type | Sample Usage |
---|---|---|
title | String | /api/v0/{tenant}/icc?q=The Best Gift |
promoter | String | /api/v0/{tenant}/icc?q=Young People |
genre | String | /api/v0/{tenant}/icc?q=Drama Chi |
venue | String | /api/v0/{tenant}/icc?q=Theatre |
synopsis | String | /api/v0/{tenant}/icc?q=Inspired by |
Specific Attribute Search
- Note:
- You can combine multiple search criteria, such as /icc?tile=foo&venue=bar
- For searching, please pass at least minimum 3 characters for the criteria
- Searching is using wildcard search and case insensitive
Name | Type | Sample Usage |
---|---|---|
title | String | /api/v0/{tenant}/icc?title=The Best Gift |
internetContentCode | String | /api/v0/{tenant}/icc?internetContentCode=aladdin2019 |
promoter | String | /api/v0/{tenant}/icc?promoter=Performing Arts Ensemble |
genre | String | /api/v0/{tenant}/icc?promoter=Arts |
venue | String | /api/v0/{tenant}/icc?venue=Theatre |
synopsis | String | /api/v0/{tenant}/icc?synopsis=Inspired by and adapted |
Sorting for ICC supports the follow attributes
- Note:
- There is no default sort for icc
- You can combine search and sort, example as /icc?q=esplanade&sort=sellabilityStartDate or /icc?title=Gift&sort=sellabilityStartDate
Name | Type | Sample Usage |
---|---|---|
title | String | /api/v0/{tenant}/icc?sort=title |
promoter | String | /api/v0/{tenant}/icc?sort=promoter,desc (Descending sorting)* |
venue | String | /api/v0/{tenant}/icc?sort=venue |
synopsis | String | /api/v0/{tenant}/icc?sort=synopsis |
sellabilityStartDate | String | /api/v0/{tenant}/icc?sort=sellabilityStartDate |
2.1.4 Response
Status Code | Meaning |
---|---|
200 | Returns the available events |
500 | Internal server error |
2.1.5 Additional Notes
- Only those events/shows available for sale by the specific client will be retrieved
- The return list includes both current and future events.
- The client shall ensure that patrons cannot purchase future events based on the event start and end date.
2.1.6 Data Model
2.1.6.1 Response Object
Name | Description on attribute | Data Type | Length/Data Range | Nullable |
---|---|---|---|---|
content | List of event details | List of content object | - | Y |
links | List of links for pagination Rules: 1. Next page link will appear if have more record 2. Previous page link will appear if it’s not in the first page 3. Last page link will appear if there is more than 1 page |
List of link object | - | Y |
last | Flag for last page | Boolean | 4 | Y |
totalPages | Total number of page | Number | 10 | Y |
totalElements | Total number of records | Number | 10 | Y |
sort | Sorting for elements | Boolean | 255 | Y |
numberOfElements | Number of record per page | Number | 10 | Y |
first | Flag for first page | Boolean | 4 | Y |
size | Number of element per page | Number | 10 | Y |
httpStatus | Service response code | String | 255 | N |
statusMessage | Service response status message | String | 255 | Y |
url | Service request url API endpoint |
String | 255 | Y |
exceptionName | Exception class name | String | 255 | Y |
exceptionCode | defined exception code for multi-language purpose | String | 255 | Y |
errorTime | Exception datetime ISO 8601 Date format - yyyy-mm-ddThh:mm:ss+-hh:mm (24hours) |
String | 25 | Y |
number | Number of Page | Integer | - | Y |
2.1.6.2 Content Object
Name | Description on attribute | Data Type | Length/Data Range | Nullable |
---|---|---|---|---|
summaryImagePath | Image for the event. Please refer to 1.4 Image Resource Endpoint | String | 255 | Y |
internetContentCode | Event internet content code Unique code for event |
String | 255 | N |
title | Event title Value is encoded using htmlEscape() for security purposes. The corresponding htmlUnescape() method must be invoked by client before usage |
String | 255 | Y |
genre | List of available genre for Sistic Events Comedy Concert Dance Family Entertainment Film/Movies Food & Beverage Lifestyle/Leisure MICE Merchandise Musical Orchestra Seminar/Workshop Sports Theatre |
Array of String | - | Y |
promoters | Event promoters Value is encoded using htmlEscape() for security purposes. The corresponding htmlUnescape() method must be invoked by client before usage |
Array of String | - | Y |
startDate | Event start date ISO 8601 Date format - yyyy-mm-ddThh:mm:ss+-hh:mm (24hours) |
String | 25 | Y |
endDate | Event end date ISO 8601 Date format - yyyy-mm-ddThh:mm:ss+-hh:mm (24hours) |
String | 25 | Y |
sellabilityStartDate | Internet content start selling date ISO 8601 Date format - yyyy-mm-ddThh:mm:ss+-hh:mm (24hours) |
String | 25 | Y |
sellabilityEndDate | Internet content end selling date ISO 8601 Date format - yyyy-mm-ddThh:mm:ss+-hh:mm (24hours) |
String | 25 | Y |
venue | Venue | String | 255 | Y |
language | Event language | String | 255 | Y |
synopsis | Synopsis Description returned based on lang parameter Value is encoded using htmlEscape() for security purposes. The corresponding htmlUnescape() method must be invoked by client before usage |
String | 255 | Y |
bookingUrl | URL to event booking page | String | 255 | Y |
priceDescription | Price description as in StixCloud configuration Description returned based on lang parameter Value is encoded using htmlEscape() for security purposes. The corresponding htmlUnescape() method must be invoked by client before usage |
String | 1000 | Y |
duration | Show duration Description returned based on lang parameter Value is encoded using htmlEscape() for security purposes. The corresponding htmlUnescape() method must be invoked by client before usage |
String | 1000 | Y |
admissionRules | Show admission rules Description returned based on lang parameter Value is encoded using htmlEscape() for security purposes. The corresponding htmlUnescape() method must be invoked by client before usage |
String | 1000 | Y |
salesDateText | Sales date description Description returned based on lang parameter Value is encoded using htmlEscape() for security purposes. The corresponding htmlUnescape() method must be invoked by client before usage |
String | 1000 | - |
languageTitle | Multi-language Title | String | 3000 | Y |
updateDate | Last changed date of internet content record ISO 8601 Date format - yyyy-mm-ddThh:mm:ss+-hh:mm (24hours) |
String | 25 | Y |
languageVenue | Venue description. | String | 4000 | Y |
2.1.6.3 Links Object
Name | Description on attribute | Data Type | Length/Data Range | Nullable |
---|---|---|---|---|
rel | Page id | String | 255 | Y |
href | Link to other page | String | 255 | Y |
2.2 Get Event Show Date & Time
Sample request:
curl --request GET \
--url https://api.stixcloud.com/api/v0/SISTIC/icc/lkc2015 \
--header 'authorization: Bearer <Access-Token>' \
--header 'content-type: application/json'
The above command returns JSON structured like this:
Status: 200. return list of available events info such as the exct event Show Date and Time as well as the availability status
{
"summaryImagePath": "/public/SISTIC/12-03-2018/1520849308453/Booking Summary.jpg",
"sponsoredImagePath": "/public/SISTIC/12-03-2018/1520849308453/Sponsored imagepath.jpg",
"icAttributesList": [
"1",
"2",
"32",
"512",
"64"
],
"promotionStatus": "0",
"showTimingList": [
{
"productId": 270783,
"showTitle": "Lee Kong Chian Natural History Museum (Jan20) (Group Ticket)",
"showDate": "2020-01-01T20:00:00+08:00",
"availabilityStatus": 16,
"isPromo": false,
"venue": "+博物馆Lee Kong Chian Natural History Museum",
"ticketType": "GA"
},
{
"productId": 270784,
"showTitle": "Lee Kong Chian Natural History Museum (Jan20) (Normal Ticket)&",
"showDate": "2020-01-02T20:00:00+08:00",
"availabilityStatus": 19,
"isPromo": false,
"venue": "+博物馆Lee Kong Chian Natural History Museum",
"ticketType": "GA"
},
{
"productId": 270789,
"showTitle": "Lee Kong Chian Natural History Museum (Jan20) (Group Ticket)",
"showDate": "2020-01-03T20:00:00+08:00",
"availabilityStatus": 19,
"isPromo": false,
"venue": "+博物馆Lee Kong Chian Natural History Museum",
"ticketType": "GA"
},
{
"productId": 270790,
"showTitle": "Lee Kong Chian Natural History Museum (Jan20) (Normal Ticket)%",
"showDate": "2020-01-04T20:00:00+08:00",
"availabilityStatus": 19,
"isPromo": false,
"venue": "+博物馆Lee Kong Chian Natural History Museum",
"ticketType": "GA"
},
{
"productId": 268915,
"showTitle": "M+ 博物馆",
"showDate": "2038-06-22T00:00:00+08:00",
"availabilityStatus": 19,
"isPromo": false,
"venue": "+博物馆Lee Kong Chian Natural History Museum",
"ticketType": "GA"
},
{
"productId": 254829,
"showTitle": "Wonder Full – Light & Water Show",
"showDate": "2052-10-30T12:00:00+08:00",
"availabilityStatus": 19,
"isPromo": false,
"venue": "National Gallery Singapore",
"ticketType": "GA"
}
]
}
Errors
Error: 400. This exception occurs when the Internet Content Code is invalid or expired.
{
"httpStatus":"400",
"errorCode":" error.product.icc.invalid",
"errorTime":"2017-07-01T16:53:26.535+08:00",
"exceptionName":" com.stixcloud.common.exception.SisticApiException",
"statusMessage":" Invalid Internet Content Code.",
"url":"https://api.stixcloud.com/api/v0/SISTIC/icc/lkc20153"
}
Error: 500. Internal Server Error
{
"httpStatus": "500",
"errorTime":"2017-07-01T16:53:26.535+08:00",
"exceptionName":" java.lang.NullPointerException",
"statusMessage": "NullPointerException.",
"url" : "https://api.stixcloud.com/api/v0/SISTIC/icc/lkc20153"
}
For a given InternetContentCode, the API will return a list of available events info such as the exact event Show Date and Time as well as the availability status.
2.2.1 Request
You must replace tenant
with your tenant code and internetContentCode
retrieved from Get Events.
2.2.2 Path Variables and Parameters
Name | Type | Description |
---|---|---|
tenant | String | [required] Tenant ID given |
internetContentCode | Number | [required] internet content code selected from "get event list" endpoint |
startDate | Number | [optional] Show date, default to system date, format YYYYMMDD |
numOfDays | String | [optional] Shows availability for number of day. Default to 31 if you pass in the startDate |
promoCode | String | [optional] Use for Private Link purpose. Note: Not in used for this module. |
2.2.3 Data Model
2.2.3.1 Response Object
Name | Description on attribute | Data Type | Length/Data Range | Nullable |
---|---|---|---|---|
httpStatus | Service response code Rules 200, 400 or 500 |
String | 255 | N |
statusMessage | Service response status message | String | 255 | Y |
url | Service request url API endpoint |
String | 255 | Y |
exceptionName | Exception class name | String | 255 | Y |
exceptionCode | Sistic defined exception code for multi-language purpose | String | 255 | Y |
errorTime | Exception datetime ISO 8601 Date format - yyyy-mm-ddThh:mm:ss+ -hh:mm (24hours) |
String | 25 | Y |
summaryImagePath | Image for event. Please refer to 1.4 Image Resource Endpoint | String | 255 | Y |
icAttributesList | Internet content attributes | Array[String] | 255 | Y |
showTimingList | List of product object | List of Product JSON object | - | - |
advisory | Advisory message for the event | String | Y | |
promotionStatus | To determine if private link is configured and to verify the validity of promocode if there is any. Note: Not in used for this module. Promo Status 0: Private Link is not being configured. Status 1: Valid PromoCode entered. Status 2: Invalid PromoCode entered. Status 3: Promo code is unavailable for the configured date range. |
String | - | - |
sponsoredImage | Path Image of sponsored Note: Not in used for this module. Please refer to 1.4 Image Resource Endpoint | String | 255 | Y |
2.2.3.1 Product Object
Name | Description on attribute | Data Type | Length/Data Range | Nullable |
---|---|---|---|---|
productId | Product Id Unique key for product |
Number | 10 | N |
showTitle | Show title | String | 255 | N |
showDate | Show date time ISO 8601 Date format - yyyy-mm-ddThh:mm:ss+-hh:mm (24hours) |
String | 25 | N |
availabilityStatus | Show availability availabilityStatus:20 => COMING SOON availabilityStatus:16 => UNAVAILABLE/SOLD OUT availabilityStatus:17 => SINGLE SEATS availabilityStatus:18 => LIMITED SEATS (Front End shows SELLING FAST) availabilityStatus:19 => AVAILABLE availabilityStatus:-6 => SHOW RECONFIG availabilityStatus:-7 => SHOW CANCELLED availabilityStatus:-8 => SHOW POSTPONED |
Number | 10 | Y |
ticketType | Ticket type – GA or RS | List of ticket Type | Y | |
venue | Venue | String | 255 | Y |
isPromo | Is promo code valid or not Note: Not in used for this module. |
Boolean | N |
2.3 Get Event Overview Seat Map
To retrieve the event overview seat map based on the product ID. API will return the information such as Overview Seat Map Image
, Price Category
, Seat Section
and also the coodinates for each section
.
Sample Request:
curl --request GET \
--url https://api.stixcloud.com/api/v0/{tenant}/products/{productId}/seatmap/overview \
--header 'authorization: Bearer <Access-Token>' \
--header 'content-type: application/json'
The above command returns JSON structured like this:
Status: 200. Retrieve the event overview seat map based on the product ID
{
"hideStandardPrice": 0,
"imageAvailable": 1,
"interactive": 1,
"mode": "SP",
"imageURL": "/public/SISTIC/SeatmapMapping/3088/espl1805201930_Valentina_Lisitsa.jpg",
"groupBookingMode": 0,
"isMembership": 0,
"seatSectionList": [
{
"priceCatAlias": "Cat 1",
"priceCatAmount": {
"amount": 88,
"currency": "SGD",
"formatted": "$88.00"
},
"SeatLevel": [
{
"seatLevelAlias": "Foyer Stalls",
"seatSectionId": 128847,
"seatSectionAlias": "Foyer Stalls",
"seatSectionType": "RS",
"seatEntrance": "Door 2",
"priceCategoryNum": 1,
"priceCategoryId": 59158,
"price": {
"amount": 70.4,
"currency": "SGD",
"formatted": "$70.40"
},
"redeem": false,
"coordinatesList": [
"564,874,565,862,573,851,589,842,609,836,627,834,649,834,669,838,670,849,662,855,655,866,642,864,627,863,604,869,592,879"
]
},
{
"seatLevelAlias": "Foyer Stalls",
"seatSectionId": 128847,
"seatSectionAlias": "Foyer Stalls",
"seatSectionType": "RS",
"seatEntrance": "Door 1",
"priceCategoryNum": 1,
"priceCategoryId": 59158,
"price": {
"amount": 70.4,
"currency": "SGD",
"formatted": "$70.40"
},
"redeem": false,
"coordinatesList": [
"564,874,565,862,573,851,589,842,609,836,627,834,649,834,669,838,670,849,662,855,655,866,642,864,627,863,604,869,592,879"
]
}
]
},
{
"priceCatAlias": "Cat 2",
"priceCatAmount": {
"amount": 68,
"currency": "SGD",
"formatted": "$68.00"
},
"SeatLevel": [
{
"seatLevelAlias": "Circle 1",
"seatSectionId": 129804,
"seatSectionAlias": "Circle 1",
"seatSectionType": "RS",
"seatEntrance": "Door 3",
"priceCategoryNum": 2,
"priceCategoryId": 59159,
"price": {
"amount": 54.4,
"currency": "SGD",
"formatted": "$54.40"
},
"redeem": false,
"coordinatesList": [
"532,549,551,554,552,542,564,529,576,522,590,516,601,513,619,512,631,513,645,516,658,520,660,507,638,503,620,502,601,502,586,504,574,507,562,511,551,517,541,527,534,537"
]
},
{
"seatLevelAlias": "Circle 1",
"seatSectionId": 129804,
"seatSectionAlias": "Circle 1",
"seatSectionType": "RS",
"seatEntrance": "Door 4",
"priceCategoryNum": 2,
"priceCategoryId": 59159,
"price": {
"amount": 54.4,
"currency": "SGD",
"formatted": "$54.40"
},
"redeem": false,
"coordinatesList": [
"532,549,551,554,552,542,564,529,576,522,590,516,601,513,619,512,631,513,645,516,658,520,660,507,638,503,620,502,601,502,586,504,574,507,562,511,551,517,541,527,534,537"
]
}
]
}
]
}
Errors:
Http Code: 400. Error generating overview seatmap
{
"httpStatus": "400",
"errorCode": "error.product.overview-seatmap.generation.fail",
"errorTime":"2017-07-01T16:53:26.535+08:00",
"exceptionName":"SisticApiInternalErrorException",
"statusMessage": "Error generating overview seatmap.",
"url" : "https://api.stixcloud.com/api/v0/SISTIC/products/973113/seatmap/overview"
}
Http Code: 500. Internal Server Error
{
"httpStatus": "500",
"errorTime":"2017-07-01T16:53:26.535+08:00",
"exceptionName":" java.lang.NullPointerException",
"statusMessage": "NullPointerException: ",
"url" : "https://api.stixcloud.com/api/v0/SISTIC/icc"
}
2.3.1 Request
You must replace tenant
with your Tenant code and productId
retrieved from Get Event Show Date & Time
2.3.2 Data model
2.3.2.1 Response object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
httpStatus | Service response code 400 or 500 |
String | 255 | N |
statusMessage | Service response status message | String | 255 | Y |
url | Service request url API endpoint |
String | 255 | Y |
exceptionName | Exception class name | String | 255 | Y |
exceptionCode | Sistic defined exception code for multi-language purpose | String | 255 | Y |
errorTime | Exception datetime ISO 8601 Date format - yyyy-mm-ddThh:mm:ss+-hh:mm (24hours) |
String | 25 | Y |
hideStandardPrice | Flag to hide or show standard price 0 for false, 1 for true |
Number | 2 | Y |
imageAvailable | Flag to indicate the availability of seat map image 0 for false, 1 for true |
Number | 2 | Y |
interactive | Flag for Interactive mode for seat selection 0 for false, 1 for true |
Number | 2 | Y |
mode | Seat selection | String | 10 | Y |
imageURL | URL to seat map. Please refer to 1.4 Image Resource Endpoint | String | 100 | Y |
seatSectionList | List of Seat section object | List of seatMap Json Object | - | Y |
groupBookingMode | Flag for Group Booking Module. Note: Not in used for this module. 0 for false, 1 for true |
Number | ||
isMembership | Flag for Membership Module. Note: Not in used for this module. 0 for false, 1 for true |
Number |
2.3.2.2 SeatMap object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
priceCatAlias | Service response code | String | 100 | Y |
seatLevel | List of Seat level object | List of seatLevel JSON object | - | - |
priceCatAmount | Price category amount | Monetary JSON object | - | - |
2.3.2.3 SeatLevel object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
seatLevelAlias | level code | String | 100 | Y |
SeatSectionId | section id Unique key for seat section |
Number | 10 | N |
seatSectionAlias | section code | String | 100 | Y |
seatSectionType | Section type | String | 100 | Y |
seatEntrance | Entrance door number | String | 255 | Y |
priceCategoryNum | Price category number | Number | 10 | Y |
priceCategoryId | Price category id Unique key for seat section |
Number | 10 | N |
price | Monetary JSON object | Monetary JSON object | - | N |
redeem | Flag for ticket redeem | Boolean | 5 | Y |
coordinatesList | Seat Section coordinates for mapping purpose. Note: Require backend configuration. |
List |
- | Y |
2.3.2.3 Monetary Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
amount | Amount | Number | 10 | N |
currency | Currency code Default to SGD for SISTIC Tenant. |
Number | 3 | N |
formatted | Formatted amount | String | 100 | Y |
2.3.3 Price Category Number Colors
Map the following colors with the response value of priceCategoryNum in 2.3.2.2 SeatLevel Object
priceCategoryNum | Color |
---|---|
1 | #FECD84 |
2 | #A5C7F5 |
3 | #71BA64 |
4 | #D097F0 |
5 | #F7F19F |
6 | #B5EDF3 |
7 | #D9C297 |
8 | #A6F0B9 |
9 | #FB9CC0 |
10 | #D6CC1B |
11 | #929E92 |
12 | #4AD1B1 |
13 | #8C65A0 |
14 | #A80717 |
15 | #FF0049 |
16 | #D89D61 |
17 | #3D7717 |
18 | #AE9FD6 |
19 | #EC826A |
20 | #FFC7CE |
2.4 Get Seat Section Availability
Each event may consist of multiple seat section, this API endpoint will return the Availability Status on all section for a given product ID. Supported Seat Section Availability Status:
- 0 => Sold Out
- 1 => Available
- 2 => Limited Seats
- 3 => Single Seat
Sample Request:
curl --request GET \
--url 'https://api.stixcloud.com/api/v0/SISTIC/products/973113/seatmap/availability' \
--header 'authorization: Bearer <Access-Token>' \
--header 'content-type: application/json'
The above command returns JSON structured like this:
Status: 200. Return the Availability Status on all section for a given product ID
[
{
"seatSectionId": 129804,
"priceCategoryId": 59165,
"seatSectionAvailability": 0
},
{
"seatSectionId": 129804,
"priceCategoryId": 59164,
"seatSectionAvailability": 0
},
{
"seatSectionId": 129801,
"priceCategoryId": 59160,
"seatSectionAvailability": 2
},
{
"seatSectionId": 128844,
"priceCategoryId": 59158,
"seatSectionAvailability": 1
}
]
Errors
Status: 500. Internal Server Error
{
"httpStatus": "500",
"errorTime":"2017-07-01T16:53:26.535+08:00",
"exceptionName":" java.lang.NullPointerException",
"statusMessage": "NullPointerException: ",
"url" : "https://api.stixcloud.com/api/v0/SISTIC/icc"
}
2.4.1 Request
You must replace {tenant}
with your Tenant code and {productId}
retrieved from Get Event Show Date & Time
2.4.2 Path Variables and Parameters
Name | Type | Description |
---|---|---|
tenant | String | [required] tenant id given |
productId | Number | [required] Unique identifier to identify each product. |
promoCode | String | [optional] Use for Private Link purpose. Note: Not in used for this module. |
2.4.3 Data model
2.4.4.1 Response object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
httpStatus | Service response code 500 |
String | 255 | N |
statusMessage | Service response status message | String | 255 | Y |
url | Service request url API endpoint |
String | 255 | Y |
exceptionName | Exception class name | String | 255 | Y |
exceptionCode | Sistic defined exception code for multi-language purpose | String | 255 | Y |
errorTime | Exception datetime ISO 8601 Date format - yyyy-mm-ddThh:mm:ss+-hh:mm (24hours) |
String | 25 | Y |
seatAvailibilityList | List of seatAvailability object | List of seatAvailibility JSON object | - | - |
2.4.4.2 Seat Section Availability object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
seatSectionId | Seat Section Details | Number | 10 | N |
priceCategoryId | Price Category Details | Number | 10 | Y |
seatSectionAvailability | Seat Availability Status code 0 => Sold Out 1 => Available 2 => Limited Seats 3 => Single Seat |
Number | 10 | N |
2.5 Seat Offer (Applicable for Reserved Seating Event Only)
Seat Offer API supports the following two Seat Offer Mode:
HS (Hot Show) Mode
If you are looking for the exact Quantity of seat offer mechanism you may consider HS mode which offer you exactly 1 set of seat(s).
BA (Best Avalaible) Mode
If you are requesting for 2 seats (Quantity=2), system will assign 2 SET of Best Available seats based on ordered seat ranking defined backend, thus 4 Best Available seats will be returned.
Do take note to call Release Seat API to release the unused seats.
3D Seatmap Image
By default system will return the 3D Seatmap image & seat coordinates, these info can be used to render the selected seats for HS/BA Seat Offer mode.
2D Seatmap Image (Preferred option)
If 2DSeatmap has value '1', 2D seatmap image will be rendered with seat number as an overlay, example as below.
Sample Request BA (Best Available) Mode:
curl --request GET \
--url 'https://api.stixcloud.com/api/v0/{tenant}/products/{productId}/seatmap/availability?priceCatId={priceCatId}&seatSectionId={seatSectionId}&mode=BA&quantity=1' \
--header 'authorization: Bearer <Acess-Token>' \
--header 'content-type: application/json'
The above command returns JSON structured like this:
Status: 200. Seat Offer with BA Mode
{
"reservedTime": "2018-04-03T15:03:20.451+08:00",
"expirationTime": "2018-11-08T14:42:03.237+08:00",
"imageAvailable": 1,
"viewFromSeatAvailable": 0,
"seatSelectedType": "IO",
"imageURL": "/public/SISTIC/SeatmapMapping/3088/EsplanadeConcertHall_FoyerStalls_Cat4.jpg",
"overlayImagePath": "/SisticWebApp/images",
"setsReservedList": [
{
"setsReserved": [
{
"inventoryId": 178886000,
"seatRowAlias": "DD",
"seatAlias": "46",
"seatType": 1,
"topLeftCoordinates": "645,310",
"seatAngle": "310",
"coordinates": "656,310,645,324,659,336,670,322",
"isGroupBookingReserved": false
}
]
},
{
"setsReserved": [
{
"inventoryId": 178885981,
"seatRowAlias": "DD",
"seatAlias": "47",
"seatType": 1,
"topLeftCoordinates": "656,297",
"seatAngle": "310",
"coordinates": "667,297,656,310,670,322,681,309",
"isGroupBookingReserved": false
}
]
}
],
"seatsAvailableList": [],
"seatsUnavailableList": [],
"groupBookingSeatList": [],
"sectionAlias": "Foyer Stalls"
}
Sample Request HS (Hot Show) Mode:
curl --request GET \
--url 'https://api.stixcloud.com/api/v0/{tenant}/products/{productId}/seatmap/availability?priceCatId={priceCatId}&seatSectionId={seatSectionId}&mode=HS&quantity=1' \
--header 'authorization: Bearer <Acess-Token>' \
--header 'content-type: application/json'
The above command returns JSON structured like this:
Status: 200. Seat Offer with HS Mode
{
"reservedTime": "2018-04-03T15:03:20.451+08:00",
"expirationTime": "2018-11-08T14:42:03.237+08:00",
"imageAvailable": 1,
"viewFromSeatAvailable": 0,
"seatSelectedType": "IO",
"imageURL": "/public/SISTIC/SeatmapMapping/3088/EsplanadeConcertHall_FoyerStalls_Cat4.jpg",
"overlayImagePath": "/SisticWebApp/images",
"setsReservedList": [
{
"setsReserved": [
{
"inventoryId": 178886000,
"seatRowAlias": "DD",
"seatAlias": "46",
"seatType": 1,
"topLeftCoordinates": "645,310",
"seatAngle": "310",
"coordinates": "656,310,645,324,659,336,670,322",
"isGroupBookingReserved": false
}
]
}
],
"seatsAvailableList": [],
"seatsUnavailableList": [],
"groupBookingSeatList": [],
"sectionAlias": "Foyer Stalls"
}
Sample Request BA (Best Available) 2DSeatmap Mode:
curl --request GET \
--url 'https://api.stixcloud.com/api/v0/{tenant}/products/{productId}/seatmap/availability?priceCatId={priceCatId}&seatSectionId={seatSectionId}&mode=BA&quantity=1&2DSeatmap=1' \
--header 'authorization: Bearer <Acess-Token>' \
--header 'content-type: application/json'
The above command returns JSON structured like this:
Status: 200. Seat Offer with BA 2DSeatmap Mode
{
"reservedTime": "2020-01-10T13:41:22+08:00",
"imageAvailable": 1,
"viewFromSeatAvailable": 0,
"seatSelectedType": "IO",
"imageURL": "/public/SISTIC/EventManagement/1153783/image_overview_29569460_307593690.jpg",
"overlayImagePath": "/SisticWebApp/images",
"setsReservedList": [
{
"setsReserved": [
{
"inventoryId": 307593690,
"seatRowAlias": "FF",
"seatAlias": "17",
"seatType": 1,
"topLeftCoordinates": "306,54",
"seatAngle": "0",
"coordinates": "306,54,323,72",
"isGroupBookingReserved": false
}
]
},
{
"setsReserved": [
{
"inventoryId": 307593683,
"seatRowAlias": "GG",
"seatAlias": "16",
"seatType": 1,
"topLeftCoordinates": "299,77",
"seatAngle": "0",
"coordinates": "299,77,316,95",
"isGroupBookingReserved": false
}
]
}
],
"seatsAvailableList": [],
"seatsUnavailableList": [],
"groupBookingSeatList": [],
"sectionAlias": "Circle 2"
}
Errors
Http Code: 400. Note: This exception occurs when system is busy allocating seat and hit the timeout ratio.
{
"httpStatus": "400",
"errorCode": "error.product.detail-seatmap.system-allocation-busy",
"errorTime":"2017-07-01T16:53:26.535+08:00",
"exceptionName":"SisticApiInternalErrorException",
"statusMessage": "System is busy allocating seat the seat please try again",
"url" : "https://api.stixcloud.com/api/v0/SISTIC/products/973113/seatmap/availability"
}
Http Code: 400. Note: This exception occurs when system detects there is a missing coordinate due to config issue
{
"httpStatus": "400",
"errorCode": "error.product.detail-seatmap.generation.coordinate.missing",
"errorTime":"2017-07-01T16:53:26.535+08:00",
"exceptionName":"SisticApiInternalErrorException",
"statusMessage": "Missing seatmap properties - coordinates"
"url" : "https://api.stixcloud.com/api/v0/SISTIC/products/973113/seatmap/availability"
}
Http Code: 400. Note: This exception occurs when system detects there is a missing SEAT ANGLE due to config issue.
{
"httpStatus": "400",
"errorCode": "error.product.detail-seatmap.generation.seatangle.missing",
"errorTime":"2017-07-01T16:53:26.535+08:00",
"exceptionName":"SisticApiInternalErrorException",
"statusMessage": "Missing seatmap properties - seat angles"
"url" : "https://api.stixcloud.com/api/v0/SISTIC/products/973113/seatmap/availability"
}
Http Code: 500. Internal Server Issue
{
"httpStatus": "500",
"errorTime":"2017-07-01T16:53:26.535+08:00",
"exceptionName":" java.lang.NullPointerException",
"statusMessage": "NullPointerException: ",
"url" : "https://api.stixcloud.com/api/v0/SISTIC/icc"
}
2.5.1 Request
You must replace tenant
with your Tenant code and productId
retrieved from Get Event Show Date & Time
Supply additional required/optional parameters for the http request, priceCatId
, seatSectionId
, mode
, quantity
and promoCode
.
2.5.2 Path Variables and Parameters
Name | Type | Description |
---|---|---|
tenant | String | [required] tenant id given |
productId | Number | [required] Unique identifier to identify each product. |
priceCatId | Number | [required] Price Category ID of a product. This value can be obtained through the Get Event Overview Seat API call. |
seatSectionId | Number | [required] Seat Section ID of a product. This value can be obtained through the Get Event Overview Seat API call. |
mode | String | [required] Two supported mode which is "BA" or "HS" |
quantity | Number | [required] Number of seats you wish to get. |
2DSeatmap | String | [optional] If 2DSeatmap has value '1', 2D seatmap image will be rendered with seat number as an overlay. |
promoCode | String | [optional] Use for Private Link purpose. Note: Not in used for this module. |
2.5.3 Data model
2.5.3.1 Response object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
httpStatus | Service response code | String | 255 | N |
statusMessage | Service response status message | String | 255 | Y |
url | Service request url | String | 255 | Y |
exceptionName | Exception class name | String | 255 | Y |
exceptionCode | Sistic defined exception code for multi-language purpose | String | 255 | Y |
errorTime | Exception datetime | String | 25 | Y |
imageAvailable | Flag to indicate if Detail Seat Map is available | Number | - | - |
imageURL | Detail Seat Map Image URL Please refer to 1.4 Image Resource Endpoint | String | ||
overlayImagePath | Note: Not in used for this module. | String | ||
seatSelectedType | Note: Not in used for this module. | String | ||
setsReservedList | List of Reserved Seat(s) Info | JSON object | ||
seatsAvailableList | List of Available Seat(s) Info | JSON object | ||
seatsUnavailableList | List of Unavailable Seat(s) Info | JSON object | ||
groupBookingSeatList | List of Group Booking Seat(s) Note: Not in used for this module. |
JSON object | ||
sectionAlias | Section Name | String | ||
reservedTime | The time when seats are being reserved in the system. ISO 8601 Date format - yyyy-mm-ddThh:mm:ss+-hh:mm (24hours) |
|||
expirationTime | The time when seats reservations are expired in the system. ISO 8601 Date format - yyyy-mm-ddThh:mm:ss+-hh:mm (24hours) |
|||
viewFromSeatAvailable | Note: Not in used for this module. | Number |
2.5.3.2 setsReservedList object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
setsReserved | List of seat information | JSON object | - |
2.5.3.3 Seat object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
inventoryId | Inventory | id | Number | |
seatRowAlias | Seat Row Alias | String | ||
seatAlias | Seat Alias | String | ||
seatType | Seat type | Number | ||
topLeftCoordinates | Seat coordinates from top left | String | ||
seatAngle | Seat angle | Number | ||
coordinates | Seat coordinates | String | 255 | |
isGroupBookingReserved | Is Seat reserved for group booking Note: Not in used for this module. |
Boolean | 2 |
2.5.3.4 SeatUnavailable object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
topLeftCoordinates | Top Left coordinates for the seat | String | ||
seatAngle | Seat angle | Number | ||
coordinates | Seat coordinates | String |
2.6 Release Seat (Applicable for Reserved Seating Event only)
This API endpoint is only used when you need to release a particular reserved seat. This could happen when you make a SEAT OFFER API called in BA mode which you will get 2 set of seats and you only need to retain 1 set, so you will need to call this Release Seat API endpoint to release another set of reserved seats by passing in the Seat Inventory ID.
Sample Request:
curl --request POST \
--url https://api.stixcloud.com/api/v0/{tenant}/products/{productID}/seats \
--header 'authorization: Bearer <Access-Token>' \
--header 'content-type: application/json' \
--data ' {
"releasedSeatList":[178884948]
}'
The above command returns JSON structured like this:
Status: 200. Release seats successfully
{
"status" : 0,
"statusMessage" : "SUCCESS",
"reservedTime" : "2018-04-02T21:32:46.014+08:00"
}
Status: 200. Release seats unsuccessful
{
"status": "1",
"statusMessage": "Error releasing seats",
}
2.6.1 Request
You must replace tenant
with your tenant code and productId
retrieved from Get Events API
2.6.2 Path Variables and Parameters
Name | Type | Description |
---|---|---|
tenant | String | [required] tenant id given |
productId | Number | [required] Unique identifier to identify each product. |
2.6.3 Request Body
List of seat inventory ID to be released in json format.
{
"releasedSeatList":[131833481]
}
2.6.4 Data model
2.6.4.1 Response object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
reservedTime | Seat reserved time | String | Y | |
statusMessage | Service response status message | String | 255 | |
status | Service response status | String |
2.7 Get Ticket Type
This API end point will return all the available Ticket Pricing
tie to this particular channel as well as the configured booking fee (service fee).
Sample Request
curl --request GET \
--url 'https://api.stixcloud.com/api/v0/{tenant}/products/{productID}/tickettype?priceCatId=52632' \
--header 'authorization: Bearer <Access-Token>' \
--header 'content-type: application/json'
The above command returns JSON structured like this:
Status: 200. Retrieve the event overview seat map based on the product ID
[
{
"priceClassId": 378981,
"priceClassCode": "L",
"priceClassAlias": "Early Bird",
"priceValueAmount": {
"amount": 38.4,
"currency": "SGD",
"formatted": "$38.40"
},
"availableQty": "1,2,3,4,5,6,7,8,9,10,11,12",
"passwordRequired": 0,
"feeList": [
{
"code": "Service Fee",
"charge": {
"amount": 3,
"currency": "SGD",
"formatted": "$3.00"
}
}
]
},
{
"priceClassId": 378981,
"priceClassCode": "L",
"priceClassAlias": "Early Bird",
"priceValueAmount": {
"amount": 70.4,
"currency": "SGD",
"formatted": "$70.40"
},
"availableQty": "1,2,3,4,5,6,7,8,9,10,11,12",
"passwordRequired": 0,
"feeList": [
{
"code": "Service Fee",
"charge": {
"amount": 4,
"currency": "SGD",
"formatted": "$4.00"
}
}
]
},
{
"priceClassId": 378981,
"priceClassCode": "L",
"priceClassAlias": "Early Bird",
"priceValueAmount": {
"amount": 46.4,
"currency": "SGD",
"formatted": "$46.40"
},
"availableQty": "1,2,3,4,5,6,7,8,9,10,11,12",
"passwordRequired": 0,
"feeList": [
{
"code": "Service Fee",
"charge": {
"amount": 4,
"currency": "SGD",
"formatted": "$4.00"
}
}
]
},
{
"priceClassId": 378981,
"priceClassCode": "L",
"priceClassAlias": "Early Bird",
"priceValueAmount": {
"amount": 70.4,
"currency": "SGD",
"formatted": "$70.40"
},
"availableQty": "1,2,3,4,5,6,7,8,9,10,11,12",
"passwordRequired": 0,
"feeList": [
{
"code": "Service Fee",
"charge": {
"amount": 4,
"currency": "SGD",
"formatted": "$4.00"
}
}
]
}
]
Errors
Error Code 400: Invalid Package Type Class Type
{
"httpStatus": "400",
"errorCode": "error.product.package.classtype.invalid",
"errorTime":"2017-07-01T16:53:26.535+08:00",
"exceptionName":"com.stixcloud.common.exception.SisticApiException",
"statusMessage": "Invalid Package Class Type.",
"url" : "https://api.stixcloud.com/api/v0/SISTIC/products/270784/tickettype"
}
Error Code 500: Internal System Error
{
"httpStatus": "500",
"errorCode": "error.sistic.internal",
"errorTime":"2017-07-01T16:53:26.535+08:00",
"exceptionName":"com.stixcloud.common.exception.SisticApiException",
"statusMessage": "Internal system error. Please try again later",
"url" : "https://api.stixcloud.com/api/v0/SISTIC/products/270784/tickettype"
}
2.7.1 Request
You must replace tenant
with your tenant code and productId
retrieved from Get Events API
2.7.2 Path Variables and Parameters
Name | Type | Description |
---|---|---|
tenant | String | [required] Tenant ID given |
productId | Number | [required] Unique identifier to identify each product. |
priceCatId | Number | [Optional] Price Category ID of a product. This value can be obtained through the Get Event Overview Seat API |
promoCode | String | [Optional] Use for Private Link purpose. Note: Not in used for now |
2.7.3
2.7.3.1 Response Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
priceClassList | List of price class details 200,400 or 500 |
List of priceClass object | - | N |
httpStatus | Service response | code | String | 255 |
statusMessage | Service response status message | String | 255 | Y |
url | Service request url API endpoint |
String | 255 | Y |
exceptionName | Exception class name | String | 255 | Y |
exceptionCode | Sistic defined exception code for multi-language purpose | String | 255 | Y |
errorTime | Exception datetime ISO 8601 Date format - yyyy-mm-ddThh:mm:ss+-hh:mm (24hours) |
String | 25 | Y |
2.7.3.2 PriceClass Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
priceClassCode | Price class code | String | 255 | N |
priceClassAlias | Price class alias | String | 255 | Y |
priceValueAmount | Unit price | JSON Monetary Object | - | N |
feeList | List of fee object | List of fee JSON Object | - | Y |
availableQty | Adjust ticket quantity selection based with this property. Ex) 1,2,3,4,5,6,7,8 4,8,12 |
String | 255 | Y |
priceClassId | Price Class ID | Long | N | |
passwordRequire | Flag to indicate if the price class require to input password. Note: In development. |
Integer | Y |
2.7.3.3 Fee Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
code | Fee code | String | 255 | N |
charge | Monetary object | Monetary JSON object | 10 | N |
2.7.3.4 Monetary Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
amount | Amount | Number | 10 | N |
currency | Currency code Default to SGD for SISTIC Tenant. |
Number | 3 | N |
formatted | Formatted amount | String | 100 | Y |
2.8 Get Delivery/Payment Methods
2.8.1 Get Common Delivery Methods
Retrieve delivery method
for sales. The list of delivery methods
corresponds to the product ids and price classes. In case we don’t submit request body, we retrieve all delivery methods by profile Id
from tenant and set charges value of delivery methods is zero.
Sample Request for Retrieving Delivery Methods
curl --request POST \
--url 'https://api.stixcloud.com/api/v0/SISTIC/cart/deliverymethods' \
--header 'authorization: Bearer <Access-Token>' \
--header 'content-type: application/json' \
--data '[
{
"productId": 863697,
"priceCatId": 48354,
"mode": "GA",
"priceClassCodeList": [
"A"
]
},
{
"productId": 956277,
"priceCatId": 56058,
"mode": "GA",
"priceClassCodeList": [
"A"
]
}
]'
The above command returns JSON structured like this:
Status: 200.
[
{
"code": "OUTLET_PICKUP",
"charge": {
"amount": 0.5,
"currency": "SGD",
"formatted": "$0.50"
},
"order": 0,
"addressRequired": false,
"feeWaived": false
},
{
"code": "MAIL_WORLD_ELITE_MASTERCARD",
"charge": {
"amount": 0,
"currency": "SGD",
"formatted": "$0.00"
},
"order": 1,
"addressRequired": true,
"feeWaived": false
},
{
"code": "REGISTERED_MAIL",
"charge": {
"amount": 3,
"currency": "SGD",
"formatted": "$3.00"
},
"order": 3,
"addressRequired": true,
"feeWaived": false
},
{
"code": "COURIER",
"charge": {
"amount": 15,
"currency": "SGD",
"formatted": "$15.00"
},
"order": 4,
"addressRequired": true,
"feeWaived": false
},
{
"code": "MASTERCARD_PICKUP",
"charge": {
"amount": 0,
"currency": "SGD",
"formatted": "$0.00"
},
"order": 6,
"addressRequired": false,
"feeWaived": false
}
]
Errors
Error Code 400: Note : This exception occurs when product id is null
{
"httpStatus": "400",
"errorCode": "error.cart.product-ids.invalid",
"exceptionName": "com.stixcloud.common.exception.SisticApiException",
"statusMessage": "The list of product id is null or invalid.",
"errorTime": "2018-06-04T09:29:20.201+07:00",
"url": "https://api.stixcloud.com/api/v0/SISTIC/deliveryMethods"
}
2.8.1.1 Request
You must replace tenant
with your tenant code.
2.8.1.2 Path Variables and Parameters
Name | Type | Description |
---|---|---|
tenant | String | [required] Tenant ID given |
2.8.1.3 Data Model
2.8.1.3.1 Request Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
JSON List | The list object to retrieve delivery method | Array List | - | N |
2.8.1.3.2 JSON Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
productId | product id corresponds to delivery method. | Number | N | |
priceCatId | priceCatId to retrieve fee for product | Number | Y | |
mode | mode to delivery method. | String | Y | |
priceClassCodeList | to retrieve fee for delivery method | List String priceClassCode | String | Y |
2.8.1.3.3 Response Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
code | Delivery method code. | String | 100 | N |
charge | Delivery amount | Monetary object | - | N |
order | Display ordering number | Number | - | N |
addressRequired | Flag to indicate if address is required. | Boolean | - | N |
feeWaived | Flag to indicate if the fee waiver is required. Default value is false |
Boolean | - | N |
httpStatus | Service response code 400 in case occurs errors |
String | 255 | Y |
statusMessage | Service response status message Message error is display when there is any errors |
String | 255 | Y |
exceptionName | Exception class name Available in response when there is any errors processing request |
String | 255 | Y |
errorCode | Available in response when there is any errors processing request | String | 255 | Y |
2.8.1.3.4 Monetary Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
amount | Amount | Number | 10 | N |
currency | Currency code Default to SGD for SISTIC Tenant. |
Number | 3 | N |
formatted | Formatted amount | String | 100 | Y |
2.8.2 Get Common Payment Methods
Retrieve all common payment methods
code by the list of product id.
Sample Request for Retrieving Payment Methods
curl --request POST \
--url 'https://api.stixcloud.com/api/v0/SISTIC/cart/paymentmethods' \
--header 'authorization: Bearer <Access-Token>' \
--header 'content-type: application/json' \
--data '{
"productIdList": [
956273,
956275
]
}'
The above command returns JSON structured like this:
Status: 200.
{
"paymentMethodList": [
"VISA",
"MASTER",
"AMEX",
"DINERS",
"JCB",
"CUP",
"SISTIC_E_VOUCHER",
"OCBC_E_VOUCHER",
"MASTER_E_VOUCHER"
]
}
Errors
Error Code 400: Note: This exception occurs when the list product ids is null or invalid.
{
"httpStatus": "400",
"errorCode": "error.cart.product-ids.invalid",
"exceptionName": "com.stixcloud.common.exception.SisticApiException",
"statusMessage": "The list of product id is null or invalid.",
"errorTime": "2018-06-04T10:35:40.489+07:00",
"url": "https://api.stixcloud.com/api/v0/SISTIC/paymentMethods"
}
2.8.2.1 Request
You must replace tenant
with your tenant code.
2.8.2.2 Path Variables and Parameters
Name | Type | Description |
---|---|---|
tenant | String | [required] Tenant ID given |
2.8.2.3 Data Model
2.8.2.3.1 Request Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
productIdList | The list of the product ids to retrieve list payment method code. | List of Number | - | N |
2.8.2.3.2 Response Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
paymentMethodList | The list payment method code corresponds product ids | List of String | - | N |
httpStatus | Service response code 400 in case occurs errors |
String | 255 | Y |
statusMessage | Service response status message Message error is display when there is any errors |
String | 255 | Y |
exceptionName | Exception class name Available in response when there is any errors processing request |
String | 255 | Y |
errorCode | Available in response when there is any errors processing request | String | 255 | Y |
2.9 Submit Pre Payment Order
Submit purchase order and reserved seat for selected events. SISTIC will calculate total amount to be paid and validate against passed in amount. Client is required making payment at its side and calls other endpoint (confirm order) to secure the order and seats.
The following steps will be carried out by this endpoint:
- Create patron account. Reuse existing patron account number if email existed in SISTIC.
- If submitted mode has value of type "",
2.1. Check for seat availability and throw error if seat is not available.
2.2. Allocate and reserve seats. - If submitted mode has value of type "BA/HS/SP"
3.1. Pass in a list of valid seatInventoryIds - Validate total amount of cart items. Throw error if amount not match.
- Return invoice with transaction reference number and amount to be paid.
Sample Request: Purchase order with Guest Account + GA event
curl --request POST \
--url https://api.stixcloud.com/api/v0/SISTIC/orders/ \
--header 'authorization: Bearer <Access-Token>' \
--header 'content-type: application/json' \
--data '{
{
"patronInfo":{
"patronType":"G",
"email":"[email protected]"
},
"cartItemList": [
{
"productId": 893138,
"seatSectionId": 122701,
"priceCatId": 50754,
"mode": "",
"priceClassList": [
{
"priceClassCode": "A",
"promoPassword" : "CAESAR2018",
"quantity": 1,
"subTotal": {
"amount": 20,
"currency": "SGD"
}
}
],
"productTotal": {
"amount": 21,
"currency": "SGD"
}
}
],
"deliveryMethod": {
"code": "E_TICKET",
"charge": {
"amount": 0.0,
"currency": "SGD"
}
},
"cartItemTotal": {
"amount": 21,
"currency": " SGD”
},
"remarks": "John Doe - +6599994444"
}
'
Sample Request: Purchase order with Individual Account + GA event
curl --request POST \
--url https://api.stixcloud.com/api/v0/SISTIC/orders/ \
--header 'authorization: Bearer <Access-Token>' \
--header 'content-type: application/json' \
--data '{
"patronInfo":{
"patronType":"I",
"accountNo":"5179566",
"email":"[email protected]",
"password":"m3536024",
"firstname":"Tang",
"lastName":"weiming",
"contacts":[
{
"contactType":"MOBILE",
"areaCode":"+65",
"phoneNumber":"93257860"
}
]
},
"cartItemList": [
{
"productId": 893138,
"seatSectionId": 122701,
"priceCatId": 50754,
"mode": "",
"priceClassList": [
{
"priceClassCode": "A",
"quantity": 1,
"subTotal": {
"amount": 20,
"currency": "SGD"
}
}
],
"productTotal": {
"amount": 21,
"currency": "SGD"
}
}
],
"deliveryMethod": {
"code": "E_TICKET",
"charge": {
"amount": 0.0,
"currency": "SGD"
}
},
"cartItemTotal": {
"amount": 21,
"currency": "SGD"
},
"remarks": "John Doe - +6599994444"
}
'
Sample Request: Purchase order with Individual Account + RS event
curl --request POST \
--url https://api.stixcloud.com/api/v0/SISTIC/orders/ \
--header 'authorization: Bearer <Access-Token>' \
--header 'content-type: application/json' \
--data '{
"patronInfo":{
"patronType":"G",
"email":" [email protected]"
},
"cartItemList": [
{
"productId": 973113,
"seatSectionId": 129804,
"priceCatId": 59158,
"mode": "HS",
"priceClassList": [
{
"priceClassCode": "L",
"quantity": 1,
"subTotal": {
"amount": 70.4,
"currency": "SGD"
}
}
],
"productTotal": {
"amount": 74.4,
"currency": "SGD"
},
"seatInventoryIds": [
178885987
]
}
],
"deliveryMethod": {
"code": "E_TICKET",
"charge": {
"amount": 0.0,
"currency": "SGD"
}
},
"cartItemTotal": {
"amount": 74.9,
"currency": "SGD"
},
"remarks": "John Doe - +6599994444"
}
'
Sample Request: Purchase order with Individual Account + RS Event
curl --request POST \
--url https://api.stixcloud.com/api/v0/SISTIC/orders/ \
--header 'authorization: Bearer <Access-Token>' \
--header 'content-type: application/json' \
--data '{
"patronInfo":{
"patronType":"I",
"accountNo":"5179566",
"email":"[email protected]",
"password":"m3536024",
"firstname":"Tang",
"lastName":"weiming",
"contacts":[
{
"contactType":"MOBILE",
"areaCode":"+65",
"phoneNumber":"93257860"
}
]
},
"cartItemList": [
{
"productId": 973113,
"seatSectionId": 129804,
"priceCatId": 59158,
"mode": "BA",
"priceClassList": [
{
"priceClassCode": "L",
"quantity": 1,
"subTotal": {
"amount": 70.4,
"currency": "SGD"
}
}
],
"productTotal": {
"amount": 74.4,
"currency": "SGD"
},
"seatInventoryIds": [
178885987
]
}
],
"deliveryMethod": {
"code": "E_TICKET",
"charge": {
"amount": 0.0,
"currency": "SGD"
}
},
"cartItemTotal": {
"amount": 74.9,
"currency": "SGD"
},
"remarks": "John Doe - +6599994444"
}'
The above commands returns JSON structured like this:
Please Refer to the Response Object of this section.
Status: 200.
{
"httpStatus": "200",
"statusMessage": "Pending for payment",
"accountNo": "5089412",
"transactionRefNo": "20180326-000040",
"remarks": "John Doe - +6599994444"
"timeLeftSeconds": 900,
"lineItemList": [
{
"product": {
"productId": 270784,
"productName": "Lee Kong Chian Natural History Museum (Jan20) (Normal Ticket)&",
"productDate": "2020-01-02T20:00:00+08:00",
"level": "-",
"section": "General Admission",
"seatNo": [],
"productType": "GA",
"venue": "+博物馆Lee Kong Chian Natural History Museum"
},
"priceClass": {
"priceClassCode": "A",
"priceClassName": "Standard Adult"
},
"quantity": 1,
"unitPrice": {
"amount": 20,
"currency": "SGD",
"formatted": "$20.00"
},
"feeList": [
{
"code": "BOOKING",
"charge": {
"amount": 0,
"currency": "SGD",
"formatted": "$0.00"
}
}
],
"subTotal": {
"amount": 20,
"currency": "SGD",
"formatted": "$20.00"
},
"cartItemId": "5362033d-9d2d-43b0-bb08-1dc5c614fd97"
}
],
"deliveryMethod": {
"code": "E_TICKET",
"charge": {
"amount": 0,
"currency": "SGD",
"formatted": "$0.00"
},
"order": 7,
"addressRequired": false,
"feeWaived": false
},
"totalLineItems": 1,
"lineItemTotal": {
"amount": 20,
"currency": "SGD",
"formatted": "$20.00"
}
}
Errors
Error Code: 400. Seats not available for product.
{
"httpStatus":"400",
"errorCode":"error.cart.order.seat.not-available",
"errorTime":"2017-07-01T16:53:26.535+08:00",
"exceptionName":"com.stixcloud.common.exception.SisticApiException",
"statusMessage":"Seats not available for product:261704",
"url": "https://api.stixcloud.com/api/v0/SISTIC/orders/"
}
Error Code: 400. Note: This exception occurs when there is a product amount mismatch
{
"httpStatus":"400",
"errorCode":"error.cart.order.product-total-amount.mismatch",
"errorTime":"2017-07-01T16:53:26.535+08:00",
"params": {
"productId": "261704",
"lineItemTotal": "SGD 92"
},
"exceptionName":"com.stixcloud.common.exception.SisticApiException",
"statusMessage":"Product total amount mismatch for product: 261704, expected amount is SGD 92.00",
"url": "https://api.stixcloud.com/api/v0/SISTIC/orders/"
}
Error Code: 400. Note: Generic Exception might due to empty object Cart Total amount or delivery method.
{
"httpStatus":"400",
"errorCode":"error.cart.order.generic",
"errorTime":"2017-07-01T16:53:26.535+08:00",
"exceptionName":"com.stixcloud.common.exception.SisticApiException",
"statusMessage": "Failed to process your order. Please try again later.",
"url": "https://api.stixcloud.com/api/v0/SISTIC/orders/"
}
Error Code: 400. Note: This exception occurs when there is a cart amount mismatch.
{
"httpStatus":"400",
"errorCode":"error.cart.order.cart-total-amount.mismatch",
"errorTime":"2017-07-01T16:53:26.535+08:00",
"params": {
"lineItemTotal" : "SGD 20",
},
"exceptionName":"com.stixcloud.common.exception.SisticApiException",
"statusMessage":"Cart Item total amount mismatch, expected amount is SGD 20",
"url": "https://api.stixcloud.com/api/v0/SISTIC/orders/"
}
Error Code: 400. Note: This exception occurs when there is a delivery amount mismatch.
{
"httpStatus": "400",
"errorCode": "error.cart.order.delivery-charge.mismatch",
"params": {
"lineItemTotal": "SGD 0.5"
},
"exceptionName": "com.stixcloud.common.exception.SisticApiException",
"statusMessage": "Delivery charge not matched. Expected delivery fee is SGD 0.5",
"errorTime": "2018-04-03T15:15:51.58+07:00",
"url": "https://api.stixcloud.com/api/v0/SISTIC/orders/"
}
Error Code: 400. Note: This exception occurs when event mix is not allowed.
{
"httpStatus": "400",
"errorCode": "error.cart.add-event.mix-not-allowed",
"params": {
"productGroupName": "ArtScience Museum Workshop - August 2018 (Test)"
},
"exceptionName": "com.stixcloud.cart.AddToCartException",
"statusMessage": "Please complete purchase of existing shopping cart items before proceeding to purchase tickets for the event: ArtScience Museum Workshop - August 2018 (Test).",
"errorTime": "2018-11-05T10:10:09.315+08:00",
"url": "https://api.stixcloud.com/api/v0/MBS/orders"
}
Error Code: 400. Note: The exception occurs when patron type is null or not (G or T)
{
"httpStatus": "400",
"exceptionName": "org.springframework.web.bind.MethodArgumentNotValidException",
"statusMessage": "Patron type is null or invalid.",
"errorTime": "2018-04-16T15:24:48.984+07:00",
"url": "https://api.stixcloud.com/api/v0/SISTIC/orders/"
}
Error Code: 400. Note : This exception occurs when password is null or empty for the individual account.
{
"httpStatus": "400",
"exceptionName": "org.springframework.web.bind.MethodArgumentNotValidException",
"statusMessage": "Patron password is invalid.",
"errorTime": "2018-04-16T15:38:17.97+07:00",
"url": "https://api.stixcloud.com/api/v0/SISTIC/orders/"
}
Error Code: 400. Note: This exception occurs when patron email is null or empty for the guest account
{
"httpStatus": "400",
"exceptionName": "org.springframework.web.bind.MethodArgumentNotValidException",
"statusMessage": "Patron email is null or invalid.",
"errorTime": "2018-04-16T15:27:25.53+07:00",
"url": "https://api.stixcloud.com/api/v0/SISTIC/orders/"
}
Error Code: 400. Note : This exception occurs when list of cart line items of request is null or empty
{
"httpStatus": "400",
"exceptionName": "org.springframework.web.bind.MethodArgumentNotValidException",
"statusMessage": "The list of cart line items are null or empty.",
"errorTime": "2018-04-16T15:42:02.314+07:00",
"url": "https://api.stixcloud.com/api/v0/SISTIC/orders/"
}
Error Code: 400. Note : This exception occurs when total cart items is null in request
{
"httpStatus": "400",
"exceptionName": "org.springframework.web.bind.MethodArgumentNotValidException",
"statusMessage": "The total cart items is invalid.",
"errorTime": "2018-04-16T15:43:59.422+07:00",
"url": "https://api.stixcloud.com/api/v0/SISTIC/orders/"
}
Error Code: 400. Note: This exception occurs when delivery method is null in request
{
"httpStatus": "400",
"exceptionName": "org.springframework.web.bind.MethodArgumentNotValidException",
"statusMessage": "Delivery method is invalid.",
"errorTime": "2018-04-16T15:45:16.679+07:00",
"url": "https://api.stixcloud.com/api/v0/SISTIC/orders/"
}
Error Code: 400. Note: This error occurs when productid and list of inventory id mismatch
{
"httpStatus": "400",
"errorCode": "error.cart.product.inventory-id.mismatch",
"exceptionName": "com.stixcloud.cart.AddToCartException",
"statusMessage": "Product id and Inventory Id values mismatch.",
"errorTime": "2018-04-27T11:06:47.104+07:00",
"url": "https://api.stixcloud.com/api/v0/SISTIC/orders"
}
Error Code: 400. Note: This error occurs when delivery method code mismatch with the code of system
{
"httpStatus": "400",
"errorCode": "error.cart.order.delivery-method.invalid",
"exceptionName": "com.stixcloud.common.exception.SisticApiException",
"statusMessage": "Delivery method is invalid.",
"errorTime": "2018-04-27T13:55:24.32+07:00",
"url": "https://api.stixcloud.com/api/v0/SISTIC/orders"
}
Error Code: 400. Note : This error occurs when product id or section type was not exist in the system
{
"httpStatus": "400",
"exceptionName": "com.stixcloud.cart.AddToCartException",
"errorTime": "2018-04-27T14:00:59.943+07:00",
"url": "https://api.stixcloud.com/api/v0/SISTIC/orders"
}
Error Code: 400. Note : This error occurs when there's no seat available.
{
"httpStatus": "400",
"errorCode": "error.cart.inventory.seat.insufficient",
"exceptionName": "com.stixcloud.cart.AddToCartException",
"statusMessage": "Failed to find seats for GA.",
"errorTime": "2018-04-27T14:03:49.344+07:00",
"url": "https://api.stixcloud.com/api/v0/SISTIC/orders"
}
Error Code: 400. Note: This error occurs when the quota has been reached.
{
"httpStatus": "400",
"errorCode": "error.cart.postcommit.exceed-quota",
"exceptionName": "com.stixcloud.cart.AddToCartException",
"statusMessage": "Exceeded quota for cart",
"errorTime": "2019-08-01T16:00:32.57+08:00",
"url": "https://api.stixcloud.com/api/v0/SISTIC/orders"
}
Error Code: 400. Note :For mode RS, this error occurs when priceCartID mismatch with the system
{
"httpStatus": "400",
"errorCode": "error.cart.postcommit.generic",
"exceptionName": "com.stixcloud.cart.AddToCartException",
"statusMessage": "Validate price model template failed!",
"errorTime": "2018-04-27T14:25:51.346+07:00",
"url": "https://api.stixcloud.com/api/v0/SISTIC/orders"
}
Error Code: 400. Note : This error occurs when uses promo password more one time usage
{
"httpStatus": "400",
"errorCode": "error.cart.promo.code.popup.text",
"errorDetails": [
{
"code": "error.cart.promo.password.quota-reached",
"details": {
"priceClassCode": "NE",
"priceClassName": "10% Discount for Singtel (Pavilion)"
}
}
],
"exceptionName": "com.stixcloud.cart.AddToCartException",
"statusMessage": "Invalid Promo Code entered!",
"errorTime": "2018-05-15T10:49:20.988+07:00",
"url": "https://api.stixcloud.com/api/v0/SISTIC/orders"
}
Error Code: 400. Note : This errors occurs when promo password is empty
{
"httpStatus": "400",
"errorCode": "error.cart.promo.code.popup.text",
"errorDetails": [
{
"code": "error.cart.promo.password.empty",
"details": {
"priceClassCode": "NE",
"priceClassName": "10% Discount for Singtel (Pavilion)"
}
}
],
"exceptionName": "com.stixcloud.cart.AddToCartException",
"statusMessage": "Invalid Promo Code entered!",
"errorTime": "2018-05-15T16:42:01.194+07:00",
"url": "https://api.stixcloud.com/api/v0/SISTIC/orders"
}
Error Code: 500. Note: This errors occurs when use invalid promo password
{
"httpStatus": "400",
"errorCode": "error.cart.promo.code.popup.text",
"errorDetails": [
{
"code": "error.cart.promo.password.incorrect",
"details": {
"priceClassCode": "NE",
"priceClassName": "10% Discount for Singtel (Pavilion)"
}
}
],
"exceptionName": "com.stixcloud.cart.AddToCartException",
"statusMessage": "Invalid Promo Code entered!",
"errorTime": "2018-05-15T16:37:49.962+07:00",
"url": "https://api.stixcloud.com/api/v0/SISTIC/orders"
}
Error Code: 500. Note: This errors occurs when use invalid promo password
{
"httpStatus": "400",
"errorCode": "error.cart.promo.code.popup.text",
"errorDetails": [
{
"code": "error.cart.promo.password.incorrect",
"details": {
"priceClassCode": "NE",
"priceClassName": "10% Discount for Singtel (Pavilion)"
}
}
],
"exceptionName": "com.stixcloud.cart.AddToCartException",
"statusMessage": "Invalid Promo Code entered!",
"errorTime": "2018-05-15T16:37:49.962+07:00",
"url": "https://api.stixcloud.com/api/v0/SISTIC/orders"
}
2.9.1 Request
You must replace tenant
with your tenant code
2.9.2 Path Variables and Parameters
Name | Type | Description |
---|---|---|
tenant | String | [required] Tenant Id given |
2.9.3 Additional Notes
The amount passed will be used for validation purpose only. System will calculate price based on SISTIC configuration for finalized amount. Error will be thrown if amount not match.
Seats will be reserved for 15 or 30 minutes based on the default tenant configuration at the system backend upon order confirmation and released thereafter. Client is required completing payment within 15 or 30 minute to confirm order.
Transaction will expire when timeLeftSecond equals 0 in SISTIC.
For patron account information,
o Email address – if disableWebAccount is false, no patron web account will be created if no email address is passed over.
o Password – required if patronType = ‘I’, email address is provided and disableWebAccount is false
o NewPassword –Password is required, when patronType is "I", accountNo and newPassword is provided. If password is matched, system will update the password of the patron web account with the new password.
o For GUEST account, only patron type is mandatory. Error will return if patron type is invalid for Guest account
o For non-GUEST account, firstName and lastName is optional
o If account no. is given, the API will do an update. System will not update email address based on account no.
o If no account no. is given but same external customer ID and email address of the same patron type is found, the API will do an update.
2.9.4 Data model
2.9.4.1 Request Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
patronInfo | Patron information Carry information of user who submitting order. Patron can be a registered user (Individual), guest or anonymous user (Guest) |
JSON object | - | N |
cartItemList | List of cartItemObject | Array List | - | N |
cartItemTotal | Monetary object Carry the total value of order and is used to check with calculated value based on item list |
JSON object | - | N |
deliveryMethod | Delivery method Requested delivery method code |
Json object | N | |
remarks | Remarks field. Store other info, such as Contact info. Example: John Doe - +65 9999 4444 |
255 | String | Y |
2.9.4.2 patronInfo Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
patronType | Patron Account Type Accept either two values: G for guest account I for individual account |
String | - | N |
accountNo | Sistic patron account no Account no given by SISTIC |
String | 25 | Y |
Customer email address Unique key for patron profile. Email can be omitted if patron type is Guest. (For guest account email can be null) If email and external customer id found in the system, SISTIC will reuse the same patron account. |
String | 75 | N | |
password | Password to create SISTIC web account required for individual account |
String | 255 | Y |
firstName | Given name optional for individual account |
String | 100 | Y |
lastName | Family Surname optional for individual account |
String | 100 | Y |
contacts | List of Contact number object | List of JSON object | - | Y |
2.9.4.3 contact Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
contactType | Contact type for mobile | String | 25 | N |
country | Country object | JSON object | - | Y |
areaCode | Phone area code | String | 100 | Y |
phoneNumber | Phone number | String | 100 | N |
2.9.4.4 country Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
code | Country code | String | 5 | N |
callingCode | Country calling code | String | 5 | N |
2.9.4.5 cartItemList Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
productId | Product ID | String | 5 | N |
seatSectionId | Seat section id | Number | 10 | N |
priceCatId | Price category id | Number | 10 | N |
mode | Seat selected mode Default to BA |
String | 5 | Y |
priceClassList | List of priceClass Object | Array List | - | Y |
productTotal | Total amount of ticket. Expected total amount of ticket. System will throw error if amount do not reconcile in SISTIC Booking Engine |
JSON Monetary Object | - | N |
seatInventoryIds | Seat inventory id | Array List |
2.9.4.6 priceClass Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
priceClassCode | Price class code | String | 5 | N |
promoPassword | Promo password | String | N | |
quantity | quantity of ticket per price class | Number | 10 | N |
subtotal | Subtotal for price class subtotal of value getting from "get ticket type" endpoint (priceValueAmount + fee) * quantity |
JSON Monetary Object | - | N |
2.9.4.7 monetary Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
amount | Number | 10 | N | |
currency | Currency Code Default to SGD |
String | 5 | N |
2.9.4.8 Response Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
httpStatus | Service response code 200, 400 or 500 |
String | 255 | N |
statusMessage | Service response status message Default “pending for payment” |
String | 255 | Y |
exceptionName | Exception class name Available in response when there is any errors processing request |
String | 255 | Y |
errorCode | Sistic defined exception code for multi-language purpose Available in response when there is any errors processing request |
String | 255 | Y |
accountNo | Sistic patron account no | String | 25 | N |
transactionRefNo | Transaction Reference No Unique key. Sistic generated transaction no |
String | 255 | N |
errorTime | Exception datetime ISO 8601 Date format - yyyy-mm-ddThh:mm:ss+-hh:mm (24hours) |
String | 25 | Y |
timeLeftSeconds | Transaction timeup time | Number | 10 | N |
remarks | Transaction remarks | String | 255 | Y |
lineItemList | Cart item separated by product, price class and seat row number per item | JSON cartItem object | - | N |
totalLineItems | Total line item | Number | 10 | N |
lineItemTotal | Total amount of line item | JSON Monetary object | - | N |
deliveryMethod | delivery method details Default to E_TICKET for now |
deliveryMethod object | - | Y |
params | List of additional information to display error messages when there is error Available in response when there is any errors processing request |
Y |
2.9.4.9 cartItem Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
product | Product details | JSON productDetail object | - | N |
priceClass | PriceClass object | JSON priceClass object | - | N |
quantity | Ticket quantity | Number | 10 | N |
unitPrice | Unit price for ticket | JSON Monetary object | - | N |
feeList | List of fee List of fee | JSON object | - | Y |
subTotal | Subtotal for price class Summation of ticket (unitPrice + bookingFee) * quantity |
JSON Monetary object | - | N |
cartItemId | Unique identifier of shopping cart | String | N | |
bookingFee | Also known as service fee | Object | N |
2.9.4.10 productDetail Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
productId | Product Id | Number | - | N |
productName | Product Name | String | 255 | Y |
productDate | Product Date ISO 8601 Date format - yyyy-mm-ddThh:mm:ss+-hh:mm (24hours) |
String | 100 | N |
level | Venue Seating Level | String | 25 | Y |
section | Venue Seating Section | String | 255 | Y |
row | Seat row number | String | 25 | N |
seatNo | Seat number | Array |
- | N |
productType | Product Type | String | 25 | Y |
venue | Venue | String | 255 | N |
2.9.4.11 priceClass Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
priceClassCode | Price class code | String | 255 | N |
priceClassName | Price class name | String | 255 | Y |
2.9.4.12 fee Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
code | Booking fee code | String | - | N |
charge | JSON of monetary object Monetary | JSON object | - | N |
2.9.4.13 deliveryMethod Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
code | Delivery method code | String | 100 | N |
charge | Delivery amount | JSON Monetary object | - | N |
order | Ordering Number | Number | N | |
addressRequired | Flag to indicate if address is required. Default value is false since E_TICKET is default deliver method |
Boolean | N | |
feeWaived | Flag to indicate if the fee waiver is required. | Boolean | N |
2.9.4.13 monetary Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
amount | Amount | Number | 10 | N |
currency | Currency code | String | 25 | N |
formatted | Formatted amount | String | 255 | N |
2.10 Confirm/Cancel Order
Confirm order after receiving the payment or cancel the order.
Sample Request: Confirm Order
curl --request POST \
--url 'https://api.stixcloud.com/api/v0/SISTIC/orders/{transactionRefNo}?=' \
--header 'authorization: Bearer <Access-Token>' \
--header 'content-type: application/json' \
--data '{
"confirmOrder":true,
"externalTransactionId": "externalTxnID:ab123123ccc|octopus:1232132131",
"payment":{
"paymentRefNo":"ch_1EsPsG2eZvKYlo2Co9aNBqG6",
"paymentMethod":"VISA",
"ccNumber" : "442266xxxx0000",
"charge":{
"amount":21.0,
"currency":"SGD"
}
}
}'
The above command returns JSON structured like this:
Status: 200. Confirm Order
{
"httpStatus": "200",
"statusMessage": "Order with ref no.20180427-000023 confirmed.",
"transactionDateTime": "2018-04-27T10:07:40+07:00",
"externalTransactionId": "externalTxnID:ab123123ccc|octopus:1232132131",
"deliveryMethod": {
"code": "E_TICKET",
"eticketURL": [
"http://sistic.stixclouduat.com/Stix/pac/acs/downloadEticket.htm?linkId=C3KjceMYMZ"
]
},
"barcode": {
"178722432": "45573530839",
"178722433": "45573530339"
}
}
Sample Request:
curl --request POST \
--url 'https://api.stixcloud.com/api/v0/SISTIC/orders/{transactionRefNo}?=' \
--header 'authorization: Bearer <Access-Token>' \
--header 'content-type: application/json' \
--data '{
"confirmOrder":false
}'
The above command returns JSON structured like this:
Status: 200. Cancel Order
{
"httpStatus":200,
"statusMessage ":"Order with ref no. 20180402-000017 cancelled ",
"transactionDateTime":"2016-06-28T03:00:00+08:00"
}
Errors
Error Code 400. Note: This exception occurs when cart is not found or expired.
{
"httpStatus": "400",
"errorCode": "error.cart.order.not-found-expired",
"errorTime":"2017-07-01T16:53:26.535+08:00",
"params": {
"transactionRefNo": "20180405-000024"
},
"exceptionName":"com.stixcloud.common.exception.SisticApiException",
"statusMessage": "Order ref no. 20180402-000017 not found or expired."
}
Error Code 400. Note: This exception occurs when paid amount mismatch.
{
"httpStatus": "400",
"errorCode": "error.cart.order.paid-amount.mismatch",
"errorTime":"2017-07-01T16:53:26.535+08:00",
"params": {
"lineItemTotal": "358.5",
"transactionRefNo": "20180405-000024 "
},
"exceptionName":"com.stixcloud.common.exception.SisticApiException",
"statusMessage": "Order ref no 20180405-000024 paid amount mismatch, expected amount is 358.5"
}
Error Code 400. Note: This error is returned when an oder reference number is submitted (confirm or cancel) again. An order is valid to submit if the transaction status is PENDING
{
"httpStatus": "400",
"errorCode": "error.cart.order.transaction.submitted",
"errorTime":"2017-07-01T16:53:26.535+08:00",
"params": {
"lineItemTotal": "358.5",
"transactionRefNo": "20180405-000024 "
},
"exceptionName":"com.stixcloud.common.exception.SisticApiException",
"statusMessage": "Order ref no. 20180405-000024 is already submitted"
}
Error Code 400. Note: This error is returned when an order is using an invalid payment method.
{
"httpStatus": "400",
"errorCode": "error.cart.precommit.payment-method.invalid",
"params": {
"transactionRefNo": "20180427-000065"
},
"exceptionName": "com.stixcloud.common.exception.SisticApiException",
"statusMessage": "Invalid payment method",
"errorTime": "2018-04-27T19:26:04.327+08:00",
"url": "https://api.stixcloud.com/api/v0/SISTIC/orders/20180427-000065"
}
Error Code 400. Note: This error occurs when External transaction id is already submitted
{
"httpStatus": "400",
"errorCode": "error.cart.order.external.transaction.submitted",
"exceptionName": "com.stixcloud.common.exception.SisticApiException",
"statusMessage": "External transaction id is already submitted",
"errorTime": "2018-07-19T12:16:09.432+08:00",
"url": "https://api.stixcloud.com/api/v0/SISTIC/orders/20180719-000001"
}
Error Code 400. Note: This error occurs when External transaction id is null or empty.
{
"httpStatus": "400",
"exceptionName": "org.springframework.web.bind.MethodArgumentNotValidException",
"statusMessage": "External transaction id is missing.",
"errorTime": "2018-07-19T12:12:02.586+08:00",
"url": "https://api.stixcloud.com/api/v0/SISTIC/orders/20180719-000001"
}
Error Code 400. Note: This error occurs when External transaction id is null or empty.
{
"httpStatus": "400",
"exceptionName": "org.springframework.web.bind.MethodArgumentNotValidException",
"statusMessage": "External transaction id is missing.",
"errorTime": "2018-07-19T12:12:02.586+08:00",
"url": "https://api.stixcloud.com/api/v0/SISTIC/orders/20180719-000001"
}
Error Code 500. Note: This error is returned when there is an internal system error
{
"httpStatus":"500",
"errorTime":"2017-07-01T16:53:26.535+08:00",
"exceptionName":" java.lang.NullPointerException",
"statusMessage": "NullPointerException: "
}
2.10.1 Request
You must replace tenant
with your Tenant code and transactionRefNo
retrieved from Pre Payment Order
2.10.2 Path Variables and Parameters
Name | Type | Description |
---|---|---|
tenant | String | [Required] Tenant Id given |
transactionRefNo | String | [Required] Transaction ref no. |
2.10.3 Additional Notes
- Payment to be handled on client side and periodic settlement will be made by client as per agreement.
- eticket url is generated but no email will be sent to patron. Email with eticket information needed to be handled by client.
- All tickets sold are subject to SISTIC terms and conditions.
2.10.4 Data model
2.10.4.1 Request object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
confirmOrder | Flag to indicate if you wish to proceed to confirm order true for confirm order false for cancel order |
Boolean | 5 | N |
externalTransactionId | Client transaction id for future tracking and maintenance purpose (can be contained otherCardNumber in case payment via octopus) Format: "externalTxnId:qqww-123|octpus:1111222" |
String | 255 | N |
payment | Payment Info | JSON payment object | - | N |
2.10.4.2 Payment object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
paymentRefNo | Client side Payment Reference Number A unique ID generated by Payment Gateway such as Stripe/MIGS/PayLah. ex) ch_1EsPsG2eZvKYlo2Co9aNBqG6 |
String | 100 | N |
paymentMethod | Payment method selected by customer. Call 2.8 Get Payment Methods for available payment methods | String | 20 | N |
charge | MonetaryAmount object | MonetaryAmount Object | - | N |
ccNumber | Masked Credit Card Number used in transaction. Include first 6 and last 4 only ex) 442266xxxx0000 | String | 150 | Y |
2.10.4.3 MonetaryAmount object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
amount | Payment amount | Number | 10 | N |
currency | Currency code | String | 5 | N |
2.10.4.4 Response object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
httpStatus | Service response code 200, 400 or 500 |
String | 255 | N |
statusMessage | Service response status message | String | 255 | Y |
exceptionName | Exception class name | String | 255 | Y |
errorCode | Sistic defined exception code for multi-language purpose | String | 255 | Y |
transactionDateTime | Transaction date time ISO 8601 Date format - yyyy-mm-ddThh:mm:ss+-hh:mm (24hours) |
String | 100 | Y |
externalTransactionId | Client transaction id for future tracking and maintenance purpose (can be contained otherCardNumber in case payment via octopus) Format: "externalTxnId:qqww-123!octpus:1111222" |
String | 255 | N |
deliveryMethod | Ticket delivery details | JSON deliveryMethod object | - | Y |
barcode | Barcode of transaction Barcode object contains list of txnProductId with its barcode with format "{txnProductId}": "{barcode}". Barcode scanner supports Code 128 only. |
String |
2.10.4.5 DeliveryMethod object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
code | Delivery method code | String | 25 | N |
eticketURL | Eticket url | Array[String] | - | Y |
2.11 Get Transactions
This endpoint retrieves Transactions based on following attributes transactionRefNo
, externalTransactionId
, ccNumber
and emailAddress
.
Note : There should be at the least attribute .
Sample Request:
curl --request POST \
--url https://api.stixcloud.com/api/v0/SISTIC/transaction?page=0&size=10 \
--header 'authorization: Bearer <Access-Token>' \
--header 'content-type: application/json' \
--data '{
"transactionRefNo": "20180601-000010"
}'
The above command returns JSON structured like this:
Status: 200. Transactions Retrieved
{
"content": [
{
"transactionRefNo": "20180601-000010",
"externalTransactionId": "K1-20180605-0000018686",
"transactionDateTime": "2018-04-27T10:07:40+07:00",
"paymentMethod": "Kiosk - Visa MBS",
"deliveryMethod": "MBS Kiosk Pickup",
"accountNo": 5180349,
"channelType": "Internet",
"lineItemList": [
{
"productId": 387184,
"productName": "(Test) New B.E. & QR Code Test Events (GA)",
"productDate": "2018-06-12T12:00:00+07:00",
"level": "-",
"section": "Stall",
"seatNo": [],
"productType": "GA",
"venue": "Drama Centre Theatre",
"nearestEntrance": "Door 1",
"priceClass": {
"priceClassCode": "A",
"priceClassName": "Standard"
},
"txnProductList": [
{
"txnProductId": 4952265,
"printStatus": 1,
"ticketType": 1,
"ticketReprintedCount": 0,
"isReturned": false,
"description": "EVENT TICKET"
}
]
}
]
}
],
"totalElements": 1,
"totalPages": 1,
"last": true,
"size": 15,
"number": 0,
"first": true,
"numberOfElements": 1,
"links": [
{
"rel": "self",
"href": "https://api.stixcloud.com/api/v0/SISTIC/transaction?page=0&size=15"
}
],
"httpStatus": "200",
"statusMessage": "Transaction Retrieved Successfully (1)",
"url": "https://api.stixcloud.com/api/v0/SISTIC/transaction"
}
Status: 200. No Transactions Retrieved
{
"content": [],
"totalElements": 0,
"totalPages": 0,
"last": true,
"size": 10,
"number": 0,
"first": true,
"numberOfElements": 0,
"links": [
{
"rel": "self",
"href": "https://api.stixcloud.com/api/v0/SISTIC/transaction?page=0&size=10"
}
],
"statusMessage": "No transaction found.",
"url": "https://api.stixcloud.com/api/v0/SISTIC/transaction"
}
Status: 400. Note : This exception occurs when there is no search condition.
{
"httpStatus": "400",
"errorCode": "transaction-seach-conditon-invalid",
"exceptionName": "com.stixcloud.common.exception.SisticApiException",
"statusMessage": "There should be at least one search condition",
"errorTime": "2018-06-15T15:34:12.86+07:00",
"url": "https://api.stixcloud.com/api/v0/SISTIC/transaction"
}
2.11.1 Request
You must replace tenant
with your tenant code.
2.11.2 Path Variables and Parameters
Name | Type | Description |
---|---|---|
tenant | String | [required] Tenant ID given |
page | Number | [optional] Page of record, default 0 |
size | Number | [optional] Number of item per page, default 10 |
2.11.3 Data model
2.11.3.1 Request Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
transactionRefNo | Unique TransctionRefNo for each Transaction | String | 40 | Y |
externalTransactionId | Unique ExternalTxnId for each Transaction | String | 25 | Y |
ccNumber | masked CC Number. Showing first 6 and last 4 numbers only | String | 150 | Y |
emailAddress | emailAddress used in Transaction | String | 75 | Y |
channelTypeList | List of channelType | List of String | 75 | Y |
2.11.3.2 Response Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
content | List of transactions details | List of transaction object | - | Y |
links | List of links for pagination Rules: 1. Next page link will appear if have more record 2. Previous page link will appear if it’s not in the first page 3. Last page link will appear if there is more than 1 page |
List of link object | - | Y |
last | Flag for last page | Boolean | 4 | Y |
totalPages | Total number of page | Number | 10 | Y |
totalElements | Total number of records | Number | 10 | Y |
sort | Sorting for elements | Boolean | 255 | Y |
numberOfElements | Number of record per page | Number | 10 | Y |
first | Flag for first page | Boolean | 4 | Y |
size | Number of element per page | Number | 10 | Y |
httpStatus | Service response code | String | 255 | N |
statusMessage | Service response status message | String | 255 | Y |
url | Service request url API endpoint |
String | 255 | Y |
exceptionName | Exception class name | String | 255 | Y |
exceptionCode | defined exception code for multi-language purpose | String | 255 | Y |
errorTime | Exception datetime ISO 8601 Date format - yyyy-mm-ddThh:mm:ss+-hh:mm (24hours) |
String | 25 | Y |
number | Number of Page | Integer | - | Y |
2.11.3.3 Transaction Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
transactionRefNo | Transaction Reference No Unique key. Sistic generated transaction no |
String | 40 | N |
externalTransactionId | Client transaction id for future tracking and maintenance purpose | String | 25 | Y |
transactionDateTime | Transaction date time ISO 8601 Date format - yyyy-mm-ddThh:mm:ss+-hh:mm (24hours) |
String | 100 | N |
paymentMethod | The payment method name used in the Transaction | String | 100 | N |
deliveryMethod | The delivery method name used in the Transaction | String | 100 | N |
accountNo | Account Number of the Patron | Number | 10 | N |
channelType | channelType tied with the transaction | String | 25 | N |
lineItemList | Cart item separated by product, price class and seat row number per item | List of LineItem Object | - | Y |
2.11.3.4 LineItem Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
productId | Product Id | Number | - | N |
productName | Product Name | String | 255 | Y |
productDate | Product Date ISO 8601 Date format - yyyy-mm-ddThh:mm:ss+-hh:mm (24hours) |
String | 100 | N |
level | Venue Seating Level | String | 25 | Y |
section | Venue Seating Section | String | 255 | Y |
row | Seat row number | String | 25 | Y |
seatNo | Seat number | Array |
- | Y |
productType | Product Type | String | 25 | Y |
venue | Venue | String | 255 | N |
nearestEntrance | Nearest Entrance | String | 255 | Y |
txnProductList | - | List of TxnProduct Object | - | N |
priceClassObject | - | PriceClass Object | - | N |
2.11.3.5 PriceClass Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
priceClassCode | Price class code | String | 255 | N |
priceClassName | Price class name | String | 255 | Y |
2.11.3.6 TxnProduct Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
txnProductId | TxnProductId can be used to update or retrieve ticket | Number | 10 | Y |
printStatus | printStatus is a flag that is used to identify status. Note: 1 - Not Printed 2 - Printed |
Number | 2 | N |
reprintedCount | Count of number of TxnProduct reprinted | Number | 2 | N |
ticketType | ticketType is a flag that is used to identify its type. 1 - Paper Ticket 2 - E-Ticket |
Number | 1 | N |
isReturned | Indicates the return status of the ticket. Returned TxnProduct means this ticket has been void and not available to use. | Boolean | 1 | N |
description | Description of the TxnProduct | String | 255 | N |
2.12 Get TxnProduct Tickets
This endpoint generate TxnProduct Tickets for printing. It consumes list of txnProductId that can be retrieved in 2_11_get_transaction
Sample Request:
curl --request POST \
--url https://api.stixcloud.com/api/v0/SISTIC/transaction/txnproducts \
--header 'authorization: Bearer <Access-Token>' \
--header 'content-type: application/json' \
--data '{
"transactionRefNo": "20180723-000014",
"txnProductIdList": [
5736826,
5736827
],
"ticketPrintType": "FGL",
"printerDPI": "300"
}'
The above command returns JSON structured like this:
Status: 200.
{
"transactionRefNo": "20180723-000014",
"receiptTicket": "AxzZsdPjxSQzM1OCw3NjI+PE5SPjxIVzMsMz48U0QyPjxGMjA+...",
"txnProductList": [
{
"txnProductId": 5736826,
"printStatus": 1,
"reprintedCount": 0,
"ticketType": 1,
"eventTicket": "CfA1aaxSQzM1OCw3NjI+PE5SPjxIVzMsMz48U0QyPjxGMjA+..."
},
{
"txnProductId": 5736827,
"printStatus": 2,
"reprintedCount": 0,
"ticketType": 1,
"eventTicket": "ZccZ1XdfxSQzM1OCw3NjI+PE5SPjxIVzMsMz48U0QyPjxGMjA+..."
}
],
"ticketPrintType": "FGL"
}
2.12.1 Request
You must replace tenant
with your tenant code.
2.12.2 Path Variables and Parameters
Name | Type | Description |
---|---|---|
tenant | String | [required] tenant id given |
2.12.3 Data model
2.12.3.1 Request Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
transactionRefNo | Transaction Reference No Unique key. Sistic generated transaction no |
String | 255 | N |
txnProductIdList | List of TxnProductIdList for ticket generation | List of Number | - | Y |
ticketPrintType | Ticket Print Type to produce. Note: Only support FGL Ticket Type | String | 255 | Y |
printerDPI | Printer DPI Configuration. Default to 300 | Number | 255 | Y |
2.12.3.2 Response Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
transactionRefNo | Transaction Reference No Unique key. Sistic generated transaction no |
String | 255 | N |
receiptPrint | Receipt Ticket for Transaction. Ticket is encoded to Base64, decode it first to Base64 before use. |
255 | N | |
txnProductList | List of txnProduct Object | List of txnProduct Object | ||
ticketPrintType | Ticket Print Type to produce. Note: Only support FGL Ticket Type | String | - | N |
2.12.3.3 TxnProduct Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
txnProductId | TxnProductId a unique Id for generating ticket | Number | 10 | Y |
printStatus | printStatus is a flag that is used to identify status. Note: 1 - Not Printed 2 - Printed |
Number | 2 | N |
reprintedCount | Number of reprintedCount of TxnProduct | Number | - | N |
ticketType | ticketType is a flag that is used to identify its type. 1 - Paper Ticket 2 - E-Ticket |
Number | - | Y |
eventTicket | Event Ticket Generated encoded in Base64. Must be decoded to Base64 before using | Base 64 | - | N |
2.13 Update TxnProduct Tickets
This endpoint updates TxnProduct printStatus providing the txnProductId
, printStatus
and a flag isReprint
to check if the ticket is for reprint.
Sample Request:
curl --request PUT \
--url https://api.stixcloud.com/api/v0/{tenant}/transaction/txnproducts \
--header 'authorization: Bearer <Access-Token>' \
--header 'content-type: application/json' \
--data '[
{
"txnProductId": 1104715,
"printStatus": 1,
"isReprinted": false
},
{
"txnProductId": 1104781,
"printStatus": 1,
"isReprinted": true
}
]'
The above command returns JSON structured like this:
Status: 200. Ticket Updated Successfully
[
{
"txnProductId": 1104715,
"transactionRefNo": "20180601-000010",
"printStatus": 1,
"reprintedCount": 0,
"isReprint": false,
"ticketType": 1,
"printedBy": "internet_wkcda"
},
{
"txnProductId": 1104781,
"transactionRefNo": "20180611-000002",
"printStatus": 1,
"reprintedCount": 2,
"isReprint": true,
"ticketType": 1,
"printedBy": "internet_wkcda"
}
]
Errors
Error Code: 400.Note: This error occur when fields are invalid, such as missing fields and invalid values.
{
"httpStatus": "400",
"errorCode": "error.transaction.invalid-update-txn-ticket-request",
"params": {
"txnProductId": "txnProductId is a required field."
},
"exceptionName": "com.stixcloud.common.exception.SisticApiException",
"statusMessage": "Invalid request",
"errorTime": "2018-06-12T17:18:50.175+08:00",
"url": "http://localhost:1000/api/v0/WESTKOWLOON/transaction/tickets"
}
Error Code: 400. Note: This error occur when printStatus supplied is invalid. 1 - Printed, 6 - Not Printed
{
"httpStatus": "400",
"errorCode": "error.transaction.invalid-update-txn-ticket-request",
"params": {
"printStatus": "printStatus must be valid. 1 - Printed. 6 - Not Printed"
},
"exceptionName": "com.stixcloud.common.exception.SisticApiException",
"statusMessage": "Invalid request",
"errorTime": "2018-06-12T17:27:55.066+08:00",
"url": "http://localhost:1000/api/v0/WESTKOWLOON/transaction/tickets"
}
Error Code: 400. Note: This error occur when txnProductId supplied is not found.
{
"httpStatus": "400",
"errorCode": "error.transaction.ticket-not-found",
"params": {
"txnProductId": "1111123123123"
},
"exceptionName": "com.stixcloud.common.exception.SisticApiException",
"statusMessage": "Ticket Id not found.",
"errorTime": "2018-06-12T16:36:39.381+08:00",
"url": "http://localhost:1000/api/v0/WESTKOWLOON/transaction/tickets"
}
Error Code: 400. Note: This error occur when trying to update printStatus that has been printed already.
{
"httpStatus": "400",
"errorCode": "error.transaction.ticket-already-printed",
"params": {
"txnProductId": "1104715"
},
"exceptionName": "com.stixcloud.common.exception.SisticApiException",
"statusMessage": "Ticket already printed.",
"errorTime": "2018-06-12T16:38:31.369+08:00",
"url": "http://localhost:1000/api/v0/WESTKOWLOON/transaction/tickets"
}
2.13.1 Request
You must replace tenant
with your tenant code.
2.13.2 Path Variables and Parameters
Name | Type | Description |
---|---|---|
tenant | String | [required] tenant id given |
productId | Number | [required] Unique identifier to identify each product. |
2.13.3 Data model
2.13.3.1 Request Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
txnProductList | List of TxnProduct Object | - | N |
2.13.3.2 TxnProduct Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
txnProductId | txnProductId. Unique value for each TxnProduct to be updated | Number | - | N |
printStatus | printStatus is a flag that is used to identify status. Note: 1 - Not Printed 2 - Printed |
Number | 2 | N |
isReprint | Flag to use if the txnProduct is for reprint | Boolean | - | N |
2.13.3.3 Response Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
httpStatus | Service response code 200, 400 or 500 |
String | 255 | Y |
statusMessage | Service response status message | String | 255 | Y |
exceptionName | Exception class name | String | 255 | Y |
errorCode | Sistic defined exception code for multi-language purpose | String | 255 | Y |
txnProductList | List of TxnProduct Object |
2.13.3.4 TxnProduct Object
Name | Description on attribute | Data Type | Length / Data Range | Nullable |
---|---|---|---|---|
txnProductId | txnProductId. Unique value for each TxnProduct to be updated | Number | - | N |
transactionRefNo | Transaction Reference No Unique key. Sistic generated transaction no |
String | - | N |
reprintedCount | Number of reprintedCount of TxnProduct | Number | N | |
isReprinted | Flag to use if the txnProduct is reprinted | Boolean | - | N |
ticketType | ticketType is a flag that is used to identify its type. 1 - Paper Ticket 2 - E-Ticket |
Number | - | Y |
printedBy | printedBy the user who printed the ticket | String | - | N |
3. Release Notes
Release v0.20
STiX Cloud REST API Release Notes v0.20
Each set of release notes describes changes that apply to the release:
- API updates. New, changed, and deleted resources, request parameters, and response fields.
Update | Update Summary | API Section | Previous Version |
---|---|---|---|
Moved externalTransactionId from 2.9 to 2.10 | externalTransactionId in 2.9 Submit Pre Payment Order is moved to 2.10 Confirm/Cancel Order | 2.10 Confirm Order | v0.19 |
Added ccNumber in 2.10 Confirm Order | Added ccNumber in Confirm Order API Endpoint | 2.10 Confirm Order | v0.19 |
externalTransactionId in 2.10 Confirm Order | externalTransactionId can add other payment method. | 2.10 Confirm Order | v0.19 |
Added channelType in 2.11 | Added channelType as filter in Request. Add channelType in Response per Transaction | 2.11 Get Transactions | v0.19 |
Update TxnProducts | updated from ticketStatus to printStatus in 2.11 Get Transaction, 2.12 Get TxnProduct Tickets and 2.13 Update TxnProduct Tickets | 2.11 Get Transaction | |
Added deliveryMethod | Added value of delivery method used in the transaction 2.11 Get Transaction | 2.11 Get Transaction | |
Added expirationTime | Added expirationTime in Seat Reservation Endpoint 2.5 Seat Offer | 2.5 Seat Offer | |
Added isReturned | Added value of isReturned in the transaction 2.11 Get Transaction | 2.11 Get Transaction | |
Added nearestEntrance | Added value of nearestEntrance in the transaction 2.11 Get Transaction | 2.11 Get Transaction | |
Added remarks | Added remarks field for transaction in 2.9 Submit Pre Payment Order | 2.9 Submit Pre Payment Order |
- Doc updates. Documentation updates not mentioned in API updates, new features, functional updates, or announcements.
Update | Update Summary | API Section |
---|---|---|
Sales Flow Diagram | Updated Sales Flow Diagram for v.20 Release | 1.5 Sales Flow Diagram |
Release v0.19
STiX Cloud REST API Release Notes v0.19
Each set of release notes describes changes that apply to the release:
- API updates. New, changed, and deleted resources, request parameters, and response fields.
Update | Update Summary | API Section | Previous Version |
---|---|---|---|
Changed Section Number for 2.8 | Moved Submit Pre-Payment Order from 2.8 to 2.9 | 2.9 Submit Pre Payment | v0.18 |
Changed Section Number for 2.9 | Moved Confirm/Cancel Order from 2.9 to 2.10 | 2.10 Confirm/Cancel | v0.18 |
- New features. New dashboards and tools related to the STiX Cloud REST APIs.
Name | Feature Summary | API Section |
---|---|---|
Get Common Delivery Methods | To retrieve Common Delivery Methods between given Products Ids and User Profile. | 2.8 Get Common Delivery Methods |
Get Common Payment Methods | To retrieve Common Payment Methods between given Products Ids. | 2.8 Get Common Payment Methods |
Get Transaction Endpoint | This endpoint retrieve Transactions based on following attributes transactionRefNo, externalTransactionId, ccNumber and emailAddress. | 2.11 Get Transactions |
Get TxnProduct Ticket Endpoint | This endpoint generates TxnProduct Tickets by providing the following attributes txnProductIdList, ticketPrintType and printerDPI in request body. | 2.12 Get TxnProduct Tickets |
Update TxnProducts | This endpoint updates TxnProduct ticketStatus by providing the txnProductId, ticketStatus and a flag isReprint in request body. | 2.13 Update TxnProduct Ticket |
Functional updates. Functional updates to operations, including new code list values and validation rule changes.
Announcements. Announcements related to the STiX Cloud REST API.
Doc updates. Documentation updates not mentioned in API updates, new features, functional updates, or announcements.