1. Introduction
A long, long time ago, when the seats were square-shaped and each seat was numbered, UX and conversion rate terms were something vague for the ticketing. Ticketing giants like TM invested a lot of money using all their experience to create impressive seating plans for the users.
Nowadays, with thousands of competitors, it takes all the running you can do to stay at the same place. As well as Alice, you can run twice as fast as now, and you need the right partner.
If you are good at marketing, sales, and ticketing operation and want to compete with the best on the market – you need a perfect, nice looking, informative, convenient seating plans to sell your venues.
Seatmap.pro is the platform for seating plans creation, management, and efficient seating charts rendering for the ticketing companies. The most powerful feature of Seatmap.pro is the possibility of integration with any ticketing system regardless of seating plan supportability.
Let’s go.
2. Overview
Seatmap.pro allows you to use the cutting-edge technologies for the seating plans management and the best user experience approaches and practices for the interaction with the End User. Embed reserved ticketing with a modern seating plan software, html5 seat system, leveraging full stack of technologies for visualization: SVG, HTML canvas and WebGL. Designed as a SaaS solution, Seatmap.pro aimed at leveraging the conversion rate for the ticketing sales.
Seatmap.pro operates with two general types of tickets:
-
Unique Seats with numbered names (Seat)
-
General admission tickets, when you have only a section specified on your ticket (GA)
2.1. Components
Seatmap.pro contains the following components and services:
- Seatmap Editor
-
Seating maps editor. Allows to create, edit and manage your seating plans.
- Seatmap Booking
-
Events and price management tool. This component is a bridge between schemas and specific seats on the event available for booking.
- Seatmap Renderer
-
JavaScript component embedded into the Sales page. Renderer responsible for all visualization routines on the client side.

All the components are designed as a seamless SaaS solution and should be delivered as one product. Unfortunately, we can’t deliver the only Renderer due to complex and constantly changing protocols between Renderer and Booking components. |
2.2. Security Concerns
How to separate the seating chart’s visual representation from the complete assignments/booking/sales ticketing cycle?
Seatmap.pro is the platform only for manipulation with seating plans.
We are not:
-
A ticketing company neither a ticketing service.
-
Getting the money from the users. Checkout process is operated completely on your side.
-
Counting how many tickets did you sell. We can see only the seat locks.
-
Getting your prices information. The prices can be abstracted like – 'Price 1', 'Price 2', etc.
3. Getting Started
To understand how to integrate Seatmap.pro into your ticketing system lets review and match overall simplified lifecycle of tickets during a reserved ticketing event.
In this document, we assume that you already have some ticketing system.
In a common scenario, we need to accomplish the following steps:
-
Create a schema for a venue.
-
Create an Event.
-
Assign prices to the seats (bind the event and schema).
-
Show the sales page to customers, and allow them to interact with the seating chart.
-
Add selected seats to the cart.
-
Check them out.

3.1. Composite Key
To address any attributes to specific seats on a chart (price, state and so on), Seatmap.pro uses natural language composite keys. For example, if you have a seat named: Section B, Row 5, Seat 14 – composite key will be "Section B;;5;;14".
So, to assign a price to a seat, lock, unlock and do any operation composite keys shall be considered as the main option.
General admission "Seats" shall be addressed by the section name |
3.2. Creating a Schema
Please refer to Seatmap.pro editor documentation to learn how to create and manage seating plans.
When a schema is created and published, it is ready to be exposed by API. Please see the Venues section to get more details.
3.3. Create an Event
The event is an entity that binds prices and seats for a single show. In Seatmap.pro you can assign more than one event to the schema. For example, if you have several events of one artist with the same show at the same venue you probably want to have the same seating chart for all events.
Be advised that in your terminology Event might be Instance or Show. |
Event creation should be a synchronized operation between your Event storage and Seatmap.pro. For example, if you want to create an event named "Test event" you should perform two simple requests:

-
Retrieve schemas and venues list
-
Create an Event linked to the selected schema
The created Event ID should be saved on your side to specify it during Renderer’s initialization on the Sales page. |
Now, when the event contains a linked schema, let’s assign prices to the event.
3.4. Assign Prices
To assign a price to the seats you should use Composite keys.
To retrieve all composite keys for a schema, please use the corresponding method from the Venues section.
|

-
It is an optional step, just to validate your namespace.
-
The assign price command sends an Array of key/values like composite key/price.
3.5. Show Seating Plan to User
The user opens the sales page in a browser. Without Seatmap.pro integration, you just show theEvent description and your approach to seat selection to the User.
To integrate the Renderer component into your sales page, you need to initialize the JS component and transfer the following values to it:
-
The public key (Security).
-
Event id (Saved on step 2 during Event creation).
-
Callbacks for the handling of mouse/touch events.

-
The Sales page should be rendered or filled with a data from the Ticketing System Backend.
-
Event ID created on the step 2 shall be returned to the Sales page.
-
The Sales page initializes the Renderer with Event ID.
-
The Renderer fetches all information by Event ID and initializes a seating chart.
After the initialization phase, the Renderer retrieves all the data including the seating chart and prices by Event ID from Booking API. Now it is ready to interact.
3.6. Operations with Seats
The renderer has callbacks for the basic events like:
-
Seat selection.
-
Seat deselection.
-
onHover, onBlur, etc.
Here, for the getting started purposes we are interested in how to integrate the ticket selection process and convert it into a successful purchase.
Your sales page handles callbacks including
.
After catching this event you have two options:onSeatSelect
-
Collect all the seats is a cart without any interactions with server-side, or.
-
On each select/deselect event do preliminary locks on objects.
Let’s consider the most complicated scenario – lock per click.

-
User clicks on a seat.
-
The renderer component runs callback function to notify the Sales page about en event.
-
The Sales page trying to lock a seat and sending the locking request to the Ticketing Backend.
-
The Ticketing Backend checks the seat’s state in accordance with internal logic.
-
In case if lock operation is available the Ticketing Backend sends lock request to the Booking service.
4. Renderer Component
The Renderer component is a JavaScript library for a seating plan visualization. The component allows us to display any available seating chart from Seatmap.pro and provides all functionality to interact with it. A renderer may be embedded into a sales page.
As a developer, from a JS perspective, you can interact with a component with in the following ways:
-
Component’s initial configuration
-
Subscribe on events
-
Direct component’s methods call
4.1. Initialization
For the component’s initialization you need to assign two basic parameters:
-
DOM element that will be a host element for the Renderer
-
Renderer settings
var el = document.getElementById('root');
var settings = {
publicKey: 'bd780a2f-9b9d-48a8-ad05-34dc5154fb9a',
onSectorClick: handleSectorClick
};
var renderer = new SeatmapBookingRenderer(el, settings);
Settings object may include the following properties:
var settings = {
publicKey: 'bd780a2f-9b9d-48a8-ad05-34dc5154fb9a',(1)
onSeatMouseEnter: function(seat) { (2)
console.log('seat mouse enter', seat);
},
onSeatMouseLeave: function() { (3)
console.log('seat mouse leave');
},
onSeatSelect: seat =>(4)
function(seat) {
console.log('seat select', seat);
},
onSeatDeselect: function(seat) {(5)
console.log('seat deselect', seat);
},
onCartChange: function(cart) {(6)
console.log('cart change ', cart);
},
onSectorMouseEnter: function(sector) {(7)
console.log('sector mouse enter', sector);
},
onSectorMouseLeave: function() {(8)
console.log('sector mouse leave');
},
onSectorClick: function(sector) {(9)
console.log('sector click', sector);
},
onZoomStart: function(to, from) {(10)
console.log('before zoom', to, from);
},
onZoomEnd: function(to, from) {(11)
console.log('after zoom', to, from);
},
onPan: function(delta, isEnd) {(12)
console.log('pan', delta, isEnd);
}
};
1 | Public key shall be used for each request |
2 | onSeatMouseEnter rises when the mouse pointer moves above a seat |
3 | onSeatMouseLeave fires when the mouse pointer leaves a seat |
4 | onSeatSelect fires when the user mark a seat as selected |
5 | onSeatDeselect fires when the user deselect a seat |
6 | onCartChange fires when the cart is modified |
7 | onSectorMouseEnter fires when the mouse pointer moves above a section |
8 | onSectorMouseLeave fires when the mouse pointer leaves a section |
9 | onSectorClick fires when the user click on a section |
10 | onZoomStart fires before the zoom operation |
11 | onZoomEnd fires after the zoom operation |
12 | onPan fires while panning |
4.2. Renderer Methods
4.2.1. Load Event’s Schema
loadEvent(eventId: string) => Promise
Loads event’s schema with prices and GA. As a parameter, you shall specify the Event ID. Method loadEvent is asynchronous, returns a Promise object.
var eventId = 'a4a75361-7823-4847-bf22-336843022e80';
renderer.loadEvent(eventId).then(function() {
renderer.initCart(cart);
});
4.2.2. Retrieve Internal Cart State
getCart() => ICart
Seatmap.pro does not support any session mechanisms. Cart is always should be stored on the ticketing system side. For the state management reasons, the Renderer has internal selected seat representation.
Returns selected seats.
var cart = {
seats: [
{ id: 1389563, key: 'Section 1;;5;;14', price: 100 },
{ key: 'Table 3;;1;;1', price: 500 },
{ key: 'Section 2;;5;;1', price: 200 }
],
ga: [
{
id: 100500, (1)
key: 'Table 2', (2)
price: 200, (3)
count: 1 },(4)
{ key: 'Section 5', price: 100, count: 2 }
]
};
1 | Internal seat or section id |
2 | Composite Key used for the global seats addressing |
3 | Price value |
4 | For GA section – quantity of tickets |
4.2.3. Clear Cart
clearCart()
Eliminate all the elements from the cart.
4.2.4. Cart Initialization
initCart(cart: ICart)
In a case of page reload you should initialize the saved state with this method.
Cart initialization is available right after component initialization.
var cart = {
seats: [
{
id: 1389563,
key: 'Section 1;;5;;14',
price: 100 },
{ key: 'Table 3;;1;;1', price: 500 },
{ key: 'Section 2;;5;;1', price: 200 }
],
ga: [
{
id: 100500,
key: 'Table 2',
price: 200,
count: 1 },
{ key: 'Section 5', price: 100, count: 2 }
]
};
renderer.initCart(cart);
Sales page must save the cart state in the given format to support the page reload feature |
4.2.5. Retrieve Prices
getPrices() => IColoredPrice[]
Returns array of available prices.
var prices = renderer.getPrices();
[
{ id: 63, name: '100', color: '#9C27B0' },
{ id: 64, name: '200', color: '#2196F3' }
];
4.2.6. Manually Add Seats to Cart
addSeatsToCart(seats: ICartSeat[])
Adds seat to cart programmatically. This method is optional. In a common scenario, the User adds available seats by clicking them.
renderer.addSeatsToCart([
{
id: 803, (1)
key: 'Section 3;;3;;1', (2)
price: 500 (3)
}
]);
1 | Internal seat identifier |
2 | Composite Key used for the global seats addressing |
3 | Price value |
4.2.7. Manually Add GA Seats to Cart
addGaToCart(ga: ICartGa)
Adds GA seats to the cart.
This method can be used when onSectorClick
fired and developer wants to handle custom add/remove GA seats control.
Then the selection in a custom control complete – you can just add desired quantity of GA tickets in the cart.
renderer.addGaToCart({
id: 100500,(1)
key: 'Table 2',(2)
price: 200,(3)
count: 3(4)
});
1 | Internal seat or section id |
2 | Composite Key used for the global seats addressing |
3 | Price value |
4 | For GA section – quantity of tickets |
4.2.8. Disable Seats by IDs
disableSeatsByIds(seatIds: number[])
Marks seats as unavailable using internal identifiers
4.2.9. Disable Seats by Keys
disableSeatsByKeys(keys: string[])
Marks seats as unavailable using Composite Key
4.2.10. Zooming
zoomIn() / zoomOut() / zoomToFit()
Zoom operations
4.2.11. Getting Zoom level
getZoom() => number
Returns the current zoom level
5. Resources
5.1. Venues
Provides descriptions of the existing venues and schemas
5.1.1. Retrieve list of all venues
GET /api/private/v1.0/venues/
Description
Getting all the venues with paging
Parameters
Type | Name | Description | Schema | Default |
---|---|---|---|---|
Query |
limit |
Quantity of requested items |
integer (int32) |
|
Query |
offset |
Offset for the pager |
integer (int32) |
|
Responses
HTTP Code | Description | Schema |
---|---|---|
200 |
Returns list of objects |
|
400 |
Input data is not valid |
No Content |
403 |
Forbidden. Please use correct private key. |
No Content |
Produces
-
*/*
Security
Type | Name | Scopes |
---|---|---|
apiKey |
global |
Example HTTP request
GET /api/private/v1.0/venues/ HTTP/1.1
Content-Type: application/json
X-API-Key: af90387c-9071-4015-9a58-cbb543d84130
Host: booking.seatmap.pro
Example HTTP response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
Content-Length: 100
[ {
"id" : 68,
"name" : "O2 Arena",
"address" : "London, UK",
"lat" : 0.0,
"lng" : 0.0
} ]
Example Curl request
$ curl 'https://booking.seatmap.pro/api/private/v1.0/venues/' -i -X GET \
-H 'Content-Type: application/json' \
-H 'X-API-Key: af90387c-9071-4015-9a58-cbb543d84130'
5.1.2. Retrieve list of all schemas
GET /api/private/v1.0/venues/schemas/
Description
Getting all the schemas with paging
Parameters
Type | Name | Description | Schema | Default |
---|---|---|---|---|
Query |
lastUpdated |
Schemas updated after this date will be retrieved. |
string (date-time) |
|
Query |
limit |
Quantity of requested items |
integer (int32) |
|
Query |
offset |
Offset for the pager |
integer (int32) |
|
Query |
venueId |
Venue id |
integer (int64) |
Responses
HTTP Code | Description | Schema |
---|---|---|
200 |
Returns list of schemas |
|
400 |
Input data is not valid |
No Content |
403 |
Forbidden. Please use correct private key. |
No Content |
Produces
-
*/*
Security
Type | Name | Scopes |
---|---|---|
apiKey |
global |
Example HTTP request
GET /api/private/v1.0/venues/schemas/?lastUpdated=2000-10-04T06%3A14%3A36.719865&venueId=68 HTTP/1.1
Content-Type: application/json
X-API-Key: af90387c-9071-4015-9a58-cbb543d84130
Host: booking.seatmap.pro
Example HTTP response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
Content-Length: 139
[ {
"id" : 80,
"capacity" : null,
"name" : "Country Road",
"venueId" : 68,
"eventId" : "b5feeb7d-c59b-4bf5-90b6-c25d6df0ac10"
} ]
Example Curl request
$ curl 'https://booking.seatmap.pro/api/private/v1.0/venues/schemas/?lastUpdated=2000-10-04T06%3A14%3A36.719865&venueId=68' -i -X GET \
-H 'Content-Type: application/json' \
-H 'X-API-Key: af90387c-9071-4015-9a58-cbb543d84130'
5.1.3. Retrieve schema’s metadata
GET /api/private/v1.0/venues/schemas/{schemaId}/
Description
Getting schema’s metadata with Composite Keys
Parameters
Type | Name | Description | Schema | Default |
---|---|---|---|---|
Path |
schemaId |
schemaId |
integer (int64) |
|
Query |
numberedSections |
numberedSections |
boolean |
|
Responses
HTTP Code | Description | Schema |
---|---|---|
200 |
Returns schema’s metadata |
|
400 |
Input data is not valid |
No Content |
403 |
Forbidden. Please use correct private key. |
No Content |
Produces
-
*/*
Security
Type | Name | Scopes |
---|---|---|
apiKey |
global |
5.1.4. Retrieve schema’s details
GET /api/private/v1.0/venues/schemas/{schemaId}/details/
Description
Getting schema’s details
Parameters
Type | Name | Description | Schema |
---|---|---|---|
Path |
schemaId |
schemaId |
integer (int64) |
Responses
HTTP Code | Description | Schema |
---|---|---|
200 |
Returns schema’s details |
|
400 |
Input data is not valid |
No Content |
403 |
Forbidden. Please use correct private key. |
No Content |
Produces
-
*/*
Security
Type | Name | Scopes |
---|---|---|
apiKey |
global |
5.1.5. Retrieves a specific venue by id
GET /api/private/v1.0/venues/{venueId}
Description
Getting venue by Id
Parameters
Type | Name | Description | Schema |
---|---|---|---|
Path |
venueId |
venueId |
integer (int64) |
Responses
HTTP Code | Description | Schema |
---|---|---|
200 |
Returns list of objects |
|
400 |
Input data is not valid |
No Content |
403 |
Forbidden. Please use correct private key. |
No Content |
Produces
-
*/*
Security
Type | Name | Scopes |
---|---|---|
apiKey |
global |
5.2. Events
Provides CRUD operations for the Events
5.2.1. Create an Event
POST /api/private/v1.0/events/
Description
Before you start to create an Event you need to create a schema with venue.
Parameters
Type | Name | Description | Schema |
---|---|---|---|
Body |
event |
Valid event object without id field |
Responses
HTTP Code | Description | Schema |
---|---|---|
200 |
Returns created object |
|
400 |
Input data is not valid |
No Content |
403 |
Forbidden. Please use correct private key. |
No Content |
Consumes
-
application/json
Produces
-
application/json
Security
Type | Name | Scopes |
---|---|---|
apiKey |
global |
Example HTTP request
POST /api/private/v1.0/events/ HTTP/1.1
Content-Type: application/json
X-API-Key: af90387c-9071-4015-9a58-cbb543d84130
Content-Length: 143
Host: booking.seatmap.pro
{
"id" : null,
"start" : "2020-10-04T06:14:36.460473",
"killAfter" : "2020-10-04T06:14:36.460484",
"name" : "test",
"schemaId" : 80
}
Example HTTP response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
Content-Length: 163
{
"id" : "4ce60330-3092-47c1-a376-3f3f4448a250",
"start" : "2020-10-04T06:14:00",
"killAfter" : "2020-10-04T06:14:00",
"name" : "test",
"schemaId" : 80
}
Example Curl request
$ curl 'https://booking.seatmap.pro/api/private/v1.0/events/' -i -X POST \
-H 'Content-Type: application/json' \
-H 'X-API-Key: af90387c-9071-4015-9a58-cbb543d84130' \
-d '{
"id" : null,
"start" : "2020-10-04T06:14:36.460473",
"killAfter" : "2020-10-04T06:14:36.460484",
"name" : "test",
"schemaId" : 80
}'
5.2.2. Retrieve list of all events
GET /api/private/v1.0/events/
Description
Getting all the events with paging
Parameters
Type | Name | Description | Schema | Default |
---|---|---|---|---|
Query |
limit |
Quantity of requested items |
integer (int32) |
|
Query |
offset |
Offset for the pager |
integer (int32) |
|
Responses
HTTP Code | Description | Schema |
---|---|---|
200 |
Returns list of objects |
|
400 |
Input data is not valid |
No Content |
403 |
Forbidden. Please use correct private key. |
No Content |
Produces
-
application/json
Security
Type | Name | Scopes |
---|---|---|
apiKey |
global |
Example HTTP request
GET /api/private/v1.0/events/ HTTP/1.1
Content-Type: application/json
X-API-Key: af90387c-9071-4015-9a58-cbb543d84130
Host: booking.seatmap.pro
Example HTTP response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
Content-Length: 1837
[ {
"id" : "c74f804a-9721-4d61-81e2-1e5a6cab6921",
"start" : "2020-10-04T06:14:00",
"killAfter" : "2020-10-04T06:14:00",
"name" : "testPrice",
"schemaId" : 80
}, {
"id" : "05c2d5f7-2590-4c10-a45f-6a6710b0dbaf",
"start" : "2020-10-04T06:14:00",
"killAfter" : "2020-10-04T06:14:00",
"name" : "testPrice",
"schemaId" : 80
}, {
"id" : "f2535940-2491-4411-97cf-c4be6046dca4",
"start" : "2020-10-04T06:14:00",
"killAfter" : "2020-10-04T06:14:00",
"name" : "testPrice",
"schemaId" : 80
}, {
"id" : "913bb3bf-96ad-425c-84a1-28781fe23d5e",
"start" : "2020-10-04T06:14:00",
"killAfter" : "2020-10-04T06:14:00",
"name" : "testPrice",
"schemaId" : 80
}, {
"id" : "35811af3-7bf5-4017-9d28-1ad9eccddc72",
"start" : "2020-10-04T06:14:00",
"killAfter" : "2020-10-04T06:14:00",
"name" : "test",
"schemaId" : 80
}, {
"id" : "f7565a9c-9276-46a8-914e-1f1cb2dc5426",
"start" : "2020-10-04T06:14:00",
"killAfter" : "2020-10-04T06:14:00",
"name" : "test",
"schemaId" : 80
}, {
"id" : "0eba7505-2e30-4a08-b4b9-04086986353f",
"start" : "2020-10-04T06:14:00",
"killAfter" : "2020-10-04T06:14:00",
"name" : "test",
"schemaId" : 80
}, {
"id" : "367b185d-991f-4877-8ddf-c182dc77fba0",
"start" : "2020-10-04T06:14:00",
"killAfter" : "2020-10-04T06:14:00",
"name" : "test",
"schemaId" : 80
}, {
"id" : "9ee6a483-3213-4bef-9048-a767a05845a8",
"start" : "2020-10-04T06:14:00",
"killAfter" : "2020-10-04T06:14:00",
"name" : "test",
"schemaId" : 80
}, {
"id" : "73a8a372-8ca8-4bce-bdae-bc8abf5f2ad6",
"start" : "2020-10-04T06:14:00",
"killAfter" : "2020-10-04T06:14:00",
"name" : "test",
"schemaId" : 80
}, {
"id" : "4ce60330-3092-47c1-a376-3f3f4448a250",
"start" : "2020-10-04T06:14:00",
"killAfter" : "2020-10-04T06:14:00",
"name" : "test",
"schemaId" : 80
} ]
Example Curl request
$ curl 'https://booking.seatmap.pro/api/private/v1.0/events/' -i -X GET \
-H 'Content-Type: application/json' \
-H 'X-API-Key: af90387c-9071-4015-9a58-cbb543d84130'
5.2.3. Update an Event
PUT /api/private/v1.0/events/
Description
Updated event shall contains valid id.
Parameters
Type | Name | Description | Schema |
---|---|---|---|
Body |
event |
Valid event object with existing id field |
Responses
HTTP Code | Description | Schema |
---|---|---|
200 |
Returns updated object |
|
400 |
Input data is not valid |
No Content |
403 |
Forbidden. Please use correct private key. |
No Content |
Consumes
-
application/json
Produces
-
application/json
Security
Type | Name | Scopes |
---|---|---|
apiKey |
global |
Example HTTP request
PUT /api/private/v1.0/events/ HTTP/1.1
Content-Type: application/json
X-API-Key: af90387c-9071-4015-9a58-cbb543d84130
Content-Length: 165
Host: booking.seatmap.pro
{
"id" : "d4525f01-12b8-437a-a59e-e8e5ef3f6254",
"start" : "2020-10-04T06:14:00",
"killAfter" : "2020-10-04T06:14:00",
"name" : "test22",
"schemaId" : 80
}
Example HTTP response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
Content-Length: 165
{
"id" : "d4525f01-12b8-437a-a59e-e8e5ef3f6254",
"start" : "2020-10-04T06:14:00",
"killAfter" : "2020-10-04T06:14:00",
"name" : "test22",
"schemaId" : 80
}
Example Curl request
$ curl 'https://booking.seatmap.pro/api/private/v1.0/events/' -i -X PUT \
-H 'Content-Type: application/json' \
-H 'X-API-Key: af90387c-9071-4015-9a58-cbb543d84130' \
-d '{
"id" : "d4525f01-12b8-437a-a59e-e8e5ef3f6254",
"start" : "2020-10-04T06:14:00",
"killAfter" : "2020-10-04T06:14:00",
"name" : "test22",
"schemaId" : 80
}'
5.3. Prices
Provides CRUD operations for prices
5.3.1. Create a price for event
POST /api/private/v1.0/prices/
Description
Binds a price to event
Parameters
Type | Name | Description | Schema |
---|---|---|---|
Body |
price |
price |
Responses
HTTP Code | Description | Schema |
---|---|---|
200 |
Returns created object |
|
400 |
Input data is not valid |
No Content |
403 |
Forbidden. Please use correct private key. |
No Content |
Consumes
-
application/json
Produces
-
application/json
Security
Type | Name | Scopes |
---|---|---|
apiKey |
global |
Example HTTP request
POST /api/private/v1.0/prices/ HTTP/1.1
Content-Type: application/json
X-API-Key: af90387c-9071-4015-9a58-cbb543d84130
Content-Length: 89
Host: booking.seatmap.pro
{
"id" : null,
"name" : "300",
"eventId" : "c74f804a-9721-4d61-81e2-1e5a6cab6921"
}
Example HTTP response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
Content-Length: 86
{
"id" : 1,
"name" : "300",
"eventId" : "c74f804a-9721-4d61-81e2-1e5a6cab6921"
}
Example Curl request
$ curl 'https://booking.seatmap.pro/api/private/v1.0/prices/' -i -X POST \
-H 'Content-Type: application/json' \
-H 'X-API-Key: af90387c-9071-4015-9a58-cbb543d84130' \
-d '{
"id" : null,
"name" : "300",
"eventId" : "c74f804a-9721-4d61-81e2-1e5a6cab6921"
}'
5.3.2. Retrieve all prices for event
GET /api/private/v1.0/prices/
Description
All prices
Parameters
Type | Name | Description | Schema |
---|---|---|---|
Query |
id |
id |
string (uuid) |
Responses
HTTP Code | Description | Schema |
---|---|---|
200 |
Returns list of objects |
|
400 |
Input data is not valid |
No Content |
403 |
Forbidden. Please use correct private key. |
No Content |
Produces
-
application/json
Security
Type | Name | Scopes |
---|---|---|
apiKey |
global |
Example HTTP request
GET /api/private/v1.0/prices/?id=913bb3bf-96ad-425c-84a1-28781fe23d5e HTTP/1.1
Content-Type: application/json
X-API-Key: af90387c-9071-4015-9a58-cbb543d84130
Host: booking.seatmap.pro
Example HTTP response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
Content-Length: 3
[ ]
Example Curl request
$ curl 'https://booking.seatmap.pro/api/private/v1.0/prices/?id=913bb3bf-96ad-425c-84a1-28781fe23d5e' -i -X GET \
-H 'Content-Type: application/json' \
-H 'X-API-Key: af90387c-9071-4015-9a58-cbb543d84130'
5.3.3. Update a price for event
PUT /api/private/v1.0/prices/
Description
Binds a price to event
Parameters
Type | Name | Description | Schema |
---|---|---|---|
Body |
price |
price |
Responses
HTTP Code | Description | Schema |
---|---|---|
200 |
Returns updated object |
|
400 |
Input data is not valid |
No Content |
403 |
Forbidden. Please use correct private key. |
No Content |
Consumes
-
application/json
Produces
-
application/json
Security
Type | Name | Scopes |
---|---|---|
apiKey |
global |
Example HTTP request
PUT /api/private/v1.0/prices/ HTTP/1.1
Content-Type: application/json
X-API-Key: af90387c-9071-4015-9a58-cbb543d84130
Content-Length: 89
Host: booking.seatmap.pro
{
"id" : 3,
"name" : "500555",
"eventId" : "f2535940-2491-4411-97cf-c4be6046dca4"
}
Example HTTP response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
Content-Length: 89
{
"id" : 3,
"name" : "500555",
"eventId" : "f2535940-2491-4411-97cf-c4be6046dca4"
}
Example Curl request
$ curl 'https://booking.seatmap.pro/api/private/v1.0/prices/' -i -X PUT \
-H 'Content-Type: application/json' \
-H 'X-API-Key: af90387c-9071-4015-9a58-cbb543d84130' \
-d '{
"id" : 3,
"name" : "500555",
"eventId" : "f2535940-2491-4411-97cf-c4be6046dca4"
}'
5.3.4. Delete a price for event
DELETE /api/private/v1.0/prices/
Description
Binds a price to event
Parameters
Type | Name | Description | Schema |
---|---|---|---|
Query |
id |
id |
integer (int64) |
Responses
HTTP Code | Description | Schema |
---|---|---|
200 |
Returns true if everything is okt |
boolean |
400 |
Input data is not valid |
No Content |
403 |
Forbidden. Please use correct private key. |
No Content |
Produces
-
application/json
Security
Type | Name | Scopes |
---|---|---|
apiKey |
global |
Example HTTP request
DELETE /api/private/v1.0/prices/ HTTP/1.1
Content-Type: application/json
X-API-Key: af90387c-9071-4015-9a58-cbb543d84130
Host: booking.seatmap.pro
Example HTTP response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
Content-Length: 4
true
Example Curl request
$ curl 'https://booking.seatmap.pro/api/private/v1.0/prices/' -i -X DELETE \
-H 'Content-Type: application/json' \
-H 'X-API-Key: af90387c-9071-4015-9a58-cbb543d84130'
5.4. Price Assignments
Allows to assign/remove prices to seats
5.4.1. Assign prices to event
POST /api/private/v1.0/assignments/
Description
Price assignments assume using of plain representation of price. For GA sections you need to specify capacity
Parameters
Type | Name | Description | Schema | Default |
---|---|---|---|---|
Query |
clean |
Clean before assign is used when you need completely renew the price assignment. It also could be cleaned with clean method |
boolean |
|
Query |
id |
Corresponding event id |
string (uuid) |
|
Body |
list |
Array of price assignments |
< PriceAssignment > array |
Responses
HTTP Code | Description | Schema |
---|---|---|
200 |
Returns unsuccessful assignments |
|
400 |
Input data is not valid |
No Content |
403 |
Forbidden. Please use correct private key. |
No Content |
Consumes
-
application/json
Produces
-
application/json
Security
Type | Name | Scopes |
---|---|---|
apiKey |
global |
Example HTTP request
POST /api/private/v1.0/assignments/?id=367b185d-991f-4877-8ddf-c182dc77fba0 HTTP/1.1
Content-Type: application/json
X-API-Key: af90387c-9071-4015-9a58-cbb543d84130
Content-Length: 219
Host: booking.seatmap.pro
[ {
"capacity" : 50,
"compositeKey" : "Unnamed section",
"price" : 500,
"properties" : null
}, {
"capacity" : null,
"compositeKey" : "Unnamed section copy;;13;;1",
"price" : 1500,
"properties" : null
} ]
Example HTTP response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
Content-Length: 3
[ ]
Example Curl request
$ curl 'https://booking.seatmap.pro/api/private/v1.0/assignments/?id=367b185d-991f-4877-8ddf-c182dc77fba0' -i -X POST \
-H 'Content-Type: application/json' \
-H 'X-API-Key: af90387c-9071-4015-9a58-cbb543d84130' \
-d '[ {
"capacity" : 50,
"compositeKey" : "Unnamed section",
"price" : 500,
"properties" : null
}, {
"capacity" : null,
"compositeKey" : "Unnamed section copy;;13;;1",
"price" : 1500,
"properties" : null
} ]'
5.4.2. Remove specified assignments from event
DELETE /api/private/v1.0/assignments/
Description
To remove assignments from event we are using simplified object Selection. For GA sections use capacity field as well
Parameters
Type | Name | Description | Schema |
---|---|---|---|
Query |
id |
Corresponding event id |
string (uuid) |
Body |
list |
list |
< Selection > array |
Responses
HTTP Code | Description | Schema |
---|---|---|
200 |
Returns unsuccessful attempts to remove assignment |
|
400 |
Input data is not valid |
No Content |
403 |
Forbidden. Please use correct private key. |
No Content |
Produces
-
application/json
Security
Type | Name | Scopes |
---|---|---|
apiKey |
global |
Example HTTP request
DELETE /api/private/v1.0/assignments/?id=73a8a372-8ca8-4bce-bdae-bc8abf5f2ad6 HTTP/1.1
Content-Type: application/json
X-API-Key: af90387c-9071-4015-9a58-cbb543d84130
Content-Length: 138
Host: booking.seatmap.pro
[ {
"capacity" : 50,
"compositeKey" : "Unnamed section"
}, {
"capacity" : null,
"compositeKey" : "Unnamed section copy;;13;;1"
} ]
Example HTTP response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
Content-Length: 3
[ ]
Example Curl request
$ curl 'https://booking.seatmap.pro/api/private/v1.0/assignments/?id=73a8a372-8ca8-4bce-bdae-bc8abf5f2ad6' -i -X DELETE \
-H 'Content-Type: application/json' \
-H 'X-API-Key: af90387c-9071-4015-9a58-cbb543d84130' \
-d '[ {
"capacity" : 50,
"compositeKey" : "Unnamed section"
}, {
"capacity" : null,
"compositeKey" : "Unnamed section copy;;13;;1"
} ]'
5.4.3. Remove all price assignments from event
POST /api/private/v1.0/assignments/clean
Description
All states including locked seats, will be cleaned up during this operation
Parameters
Type | Name | Description | Schema |
---|---|---|---|
Query |
id |
Corresponding event id |
string (uuid) |
Responses
HTTP Code | Description | Schema |
---|---|---|
200 |
Returns true if everything is ok |
|
400 |
Input data is not valid |
No Content |
403 |
Forbidden. Please use correct private key. |
No Content |
Consumes
-
application/json
Produces
-
application/json
Security
Type | Name | Scopes |
---|---|---|
apiKey |
global |
Example HTTP request
POST /api/private/v1.0/assignments/clean HTTP/1.1
Content-Type: application/json
X-API-Key: af90387c-9071-4015-9a58-cbb543d84130
Host: booking.seatmap.pro
id=9ee6a483-3213-4bef-9048-a767a05845a8
Example HTTP response
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
Content-Length: 4
true
Example Curl request
$ curl 'https://booking.seatmap.pro/api/private/v1.0/assignments/clean' -i -X POST \
-H 'Content-Type: application/json' \
-H 'X-API-Key: af90387c-9071-4015-9a58-cbb543d84130' \
-d 'id=9ee6a483-3213-4bef-9048-a767a05845a8'
5.5. Booking
Allows to the system lock ans unlock seats
5.5.1. Lock a seat or GA
POST /api/private/v1.0/booking/lock
Description
Seat should be available
Parameters
Type | Name | Description | Schema |
---|---|---|---|
Query |
id |
id |
string (uuid) |
Body |
list |
list |
< Selection > array |
Responses
HTTP Code | Description | Schema |
---|---|---|
200 |
Returns unsuccessful attempts |
< Selection > array |
400 |
Input data is not valid |
No Content |
403 |
Forbidden. Please use correct private key. |
No Content |
Consumes
-
application/json
Produces
-
application/json
Security
Type | Name | Scopes |
---|---|---|
apiKey |
global |
5.5.2. Transfer seat or GA to the state sold
POST /api/private/v1.0/booking/sale
Description
This feature applicable only in a sales control mode
Parameters
Type | Name | Description | Schema |
---|---|---|---|
Query |
id |
id |
string (uuid) |
Body |
list |
list |
< Selection > array |
Responses
HTTP Code | Description | Schema |
---|---|---|
200 |
Returns unsuccessful attempts |
< Selection > array |
400 |
Input data is not valid |
No Content |
403 |
Forbidden. Please use correct private key. |
No Content |
Consumes
-
application/json
Produces
-
application/json
Security
Type | Name | Scopes |
---|---|---|
apiKey |
global |
5.5.3. Unlock a seat or GA
POST /api/private/v1.0/booking/unlock
Description
For GA unlocking capacity counter shall be specified
Parameters
Type | Name | Description | Schema |
---|---|---|---|
Query |
id |
id |
string (uuid) |
Body |
list |
list |
< Selection > array |
Responses
HTTP Code | Description | Schema |
---|---|---|
200 |
Returns unsuccessful attempts |
< Selection > array |
400 |
Input data is not valid |
No Content |
403 |
Forbidden. Please use correct private key. |
No Content |
Consumes
-
application/json
Produces
-
application/json
Security
Type | Name | Scopes |
---|---|---|
apiKey |
global |
6. Security
6.1. Private security key
Type : apiKey
Name : X-API-Key
In : HEADER
7. Definitions
7.1. Event
Event object contains event properties and related schema id
Name | Description | Schema |
---|---|---|
id |
Event identifier. |
string (uuid) |
killAfter |
After specified date event will be marked as archived |
string (date-time) |
name |
Event name. Must be not empty. |
string |
schemaId |
Event refers to existing schema by id. |
integer (int64) |
start |
Event start date. |
string (date-time) |
7.2. EventMetadata
Contains list of sections
Name | Description | Schema |
---|---|---|
sectors |
List of sections metadata |
< SectorMetadata > array |
7.3. Json
Type : object
7.4. Price
Name | Description | Schema |
---|---|---|
eventId |
Related price id |
string (uuid) |
id |
Price identifier |
integer (int64) |
name |
Price value |
string |
7.5. PriceAssignment
Name | Description | Schema |
---|---|---|
capacity |
Capacity may be applied only for GA sections |
integer (int32) |
compositeKey |
Composite Key to be assigned |
string |
price |
Specified price to assign. |
integer (int32) |
properties |
Additional properties. API assumes that you can pass any JSON structure to the renderer. |
7.6. RowMetadata
Name | Description | Schema |
---|---|---|
key |
string |
|
name |
Row name |
string |
seats |
Array of SeatMetadata |
< SeatMetadata > array |
7.7. Schema
Name | Description | Schema |
---|---|---|
capacity |
Maximum schema capacity |
integer (int32) |
eventId |
Default eventId for the schema. Deprecated. |
string (uuid) |
id |
Identifier |
integer (int64) |
name |
Name of the schema |
string |
venueId |
Identifier of the Venue |
integer (int64) |
7.8. SeatMetadata
Name | Description | Schema |
---|---|---|
ix |
Initial horizontal (X) coordinate, without transformations |
integer (int32) |
iy |
Initial vertical (Y) coordinate, without transformations |
integer (int32) |
key |
string |
|
name |
Seat name |
string |
x |
Absolute horizontal (X) coordinate |
integer (int32) |
y |
Absolute vertical (Y) coordinate |
integer (int32) |
7.9. SectorMetadata
Name | Description | Schema |
---|---|---|
angle |
Section’s rotation angle. Applicable only for GA sections |
integer (int32) |
guid |
Unique UUID |
string (uuid) |
height |
Section’s height. Applicable only for GA sections |
integer (int32) |
id |
Unique id of the section |
integer (int64) |
key |
string |
|
name |
Section name |
string |
rows |
List of rows |
< RowMetadata > array |
width |
Section’s width. Applicable only for GA sections |
integer (int32) |
x |
Absolute horizontal (X) coordinate |
integer (int32) |
y |
Absolute vertical (Y) coordinate |
integer (int32) |
7.10. Selection
Name | Description | Schema |
---|---|---|
capacity |
Capacity may be applied only for GA sections |
integer (int32) |
compositeKey |
Composite Key to be assigned |
string |
7.11. Venue
Name | Description | Schema |
---|---|---|
address |
Venue address |
string |
id |
Venue identifier |
integer (int64) |
lat |
Venue latitude |
number (double) |
lng |
Venue longitude |
number (double) |
name |
Venue name |
string |
8. Renderer Resources
8.1. Class: SeatmapBookingRenderer
8.1.1. Hierarchy
-
Renderer
↳ SeatmapBookingRenderer
8.1.2. Implements
-
IRenderer
8.1.3. Constructors
8.1.4. constructor
+ new SeatmapBookingRenderer(element
: HTMLElement, settings?
: IBookingRendererSettings): SeatmapBookingRenderer
Creates the booking renderer.
Parameters:
Name | Type | Description |
---|---|---|
|
HTMLElement |
DOM element that will be a host element for the Renderer |
|
Renderer settings |
Returns: SeatmapBookingRenderer
8.1.5. Methods
8.1.6. addGaToCart
▸ addGaToCart(ga
: ICartGa): void
Adds GA seats to cart programmatically.
remarks
This method can be used when onSectorClick
was fired
and developer wants to handle custom add/remove GA seats control.
You can add desired quantity of GA tickets to the cart.
example
renderer.addGaToCart({
id: 100500,
key: 'Table 2',
price: 200,
// quantity of GA tickets
count: 3
});
Parameters:
Name | Type | Description |
---|---|---|
|
GA cart item |
Returns: void
8.1.7. addSeatsToCart
▸ addSeatsToCart(seats
: ICartSeat[]): void
Adds seats to cart programmatically.
remarks
This method is optional. In a common scenario the user adds available seats by clicking on them.
example
renderer.addSeatsToCart([
{
id: 803,
key: 'Section 3;;3;;1',
price: 500
}
]);
Parameters:
Name | Type | Description |
---|---|---|
|
Array of seats to add |
Returns: void
8.1.8. clearCart
▸ clearCart(): void
Clears the internal cart state.
Returns: void
8.1.9. destroy
▸ destroy(): void
Returns: void
8.1.10. disableSeatsByIds
▸ disableSeatsByIds(ids
: number[]): void
Marks seats as unavailable and removes them from cart.
Parameters:
Name | Type | Description |
---|---|---|
|
number[] |
Array of internal seat IDs |
Returns: void
8.1.11. disableSeatsByKeys
▸ disableSeatsByKeys(keys
: string[]): void
Marks seats as unavailable and removes them from cart.
Parameters:
Name | Type | Description |
---|---|---|
|
string[] |
Array of composite seat keys |
Returns: void
8.1.12. getCart
▸ getCart(): ICart
Retrieves the internal cart state.
remarks
Seatmap.pro doesn’t support any session mechanisms. Cart is always should be stored on the ticketing system side. For the state management reasons, the Renderer has internal selected seat representation.
example
Example of cart object:
var cart = {
seats: [
{ id: 1389563, key: 'Section 1;;5;;14', price: 100 },
{ key: 'Table 3;;1;;1', price: 500 },
{ key: 'Section 2;;5;;1', price: 200 }
],
ga: [
{
id: 100500,
key: 'Table 2',
price: 200,
count: 1
},
{ key: 'Section 5', price: 100, count: 2 }
]
};
Returns: ICart
Returns selected seats and GA ticket count
8.1.13. getCategoryColor
▸ getCategoryColor( |
string* |
Returns category’s color
Parameters:
Name | Type | Description |
---|---|---|
|
number |
Category number |
Returns: *undefined |
string* |
8.1.14. getHeight
▸ getHeight(): number
Returns: number
8.1.15. getMaxZoom
▸ getMaxZoom(): number
Returns the maximum zoom preset value.
Returns: number
8.1.16. getMinZoom
▸ getMinZoom(): number
Returns the minimal zoom preset value.
Returns: number
8.1.17. getMode
▸ getMode(): *undefined |
string* |
Returns: *undefined |
string* |
8.1.18. getPrices
▸ getPrices(): IColoredPrice[]
Retrieves the available prices.
example
Example of return value:
[
{ id: 63, name: '100', color: '#9C27B0' },
{ id: 64, name: '200', color: '#2196F3' }
];
Returns: IColoredPrice[]
Array of available prices
8.1.19. getSeatIds
▸ getSeatIds( |
number[] |
string[]): number[] |
Parameters:
Name | Type |
---|---|
|
ISeat[] | number[] | string[] |
Returns: number[]
8.1.20. getSeatSelection
▸ getSeatSelection(): IExtendedSeat[]
Returns selected seats
Returns: IExtendedSeat[]
8.1.21. getSections
▸ getSections(): ISector[]
Returns sections info
Returns: ISector[]
8.1.22. getSectionsWithCoords
▸ getSectionsWithCoords(): object[]
Returns: object[]
8.1.23. getSelectedGa
▸ getSelectedGa(): *undefined |
ISector* |
Returns: *undefined |
ISector* |
8.1.24. getVisibleSeats
▸ getVisibleSeats(): ISeat[]
Returns only visible seats with coords relative to canvas
Returns: ISeat[]
8.1.25. getWidth
▸ getWidth(): number
Returns: number
8.1.26. getZoom
▸ getZoom(): number
Returns current zoom value.
Returns: number
8.1.27. initCart
▸ initCart(cart
: ICart): void
Initializes the internal cart state.
remarks
In a case of page reload you should initialize the saved state with this method.
Cart initialization is available right after component initialization.
Sales page must save the cart state in the given format to support the page reload feature.
example
var cart = {
seats: [
{
id: 1389563,
key: 'Section 1;;5;;14',
price: 100
},
{ key: 'Table 3;;1;;1', price: 500 },
{ key: 'Section 2;;5;;1', price: 200 }
],
ga: [
{
id: 100500,
key: 'Table 2',
price: 200,
count: 1
},
{ key: 'Section 5', price: 100, count: 2 }
]
};
renderer.initCart(cart);
Parameters:
Name | Type | Description |
---|---|---|
|
Cart state |
Returns: void
8.1.28. loadEvent
▸ loadEvent( |
number): Promise‹void› |
Loads event’s schema and prices.
example
var eventId = 'a4a75361-7823-4847-bf22-336843022e80';
renderer.loadEvent(eventId).then(function() {
renderer.initCart(cart);
});
Parameters:
Name | Type | Description |
---|---|---|
|
string |
Event GUID |
|
undefined | number |
You can specify sector ID to show only specific sector |
Returns: Promise‹void›
Resolves when the data fetching is completed
8.1.29. removeSeatsFromCartByIds
▸ removeSeatsFromCartByIds(ids
: number[]): void
Removes seats from internal cart.
Parameters:
Name | Type | Description |
---|---|---|
|
number[] |
Array of internal seat IDs |
Returns: void
8.1.30. removeSeatsFromCartByKeys
▸ removeSeatsFromCartByKeys(keys
: string[]): void
Removes seats from internal cart.
Parameters:
Name | Type | Description |
---|---|---|
|
string[] |
Array of composite seat keys |
Returns: void
8.1.31. resetCategories
▸ resetCategories(): void
Returns: void
8.1.32. seatKeysToIds
▸ seatKeysToIds(keys
: string[]): number[]
Convert array of seat keys to array of seat ids
Parameters:
Name | Type | Description |
---|---|---|
|
string[] |
Array of composite seat keys |
Returns: number[]
8.1.33. seatToExtendedSeat
▸ seatToExtendedSeat(seat
: ISeat): IExtendedSeat
Parameters:
Name | Type |
---|---|
|
ISeat |
Returns: IExtendedSeat
8.1.34. setGaCategory
▸ setGaCategory( |
undefined): void |
Parameters:
Name | Type |
---|---|
|
number |
|
number | undefined |
Returns: void
8.1.35. setHeight
▸ setHeight(height
: number): void
Parameters:
Name | Type |
---|---|
|
number |
Returns: void
8.1.36. setMode
▸ setMode(mode
: string): void
Parameters:
Name | Type |
---|---|
|
string |
Returns: void
8.1.37. setSeatSelection
▸ setSeatSelection( |
string[] |
ISeat[]): void |
Parameters:
Name | Type |
---|---|
|
number[] | string[] | ISeat[] |
Returns: void
8.1.38. setSeatsCategory
▸ setSeatsCategory( |
number[] |
string[], |
Parameters:
Name | Type |
---|---|
|
ISeat[] | number[] | string[] |
|
number |
Returns: void
8.1.39. setSelectedGa
▸ setSelectedGa( |
string): void |
Parameters:
Name | Type |
---|---|
|
number | string |
Returns: void
8.1.40. updateSeatLocks
▸ updateSeatLocks(filter
: SeatFilter): void
Updates seat lock states.
example
For example, you can create handler to prevent selection of seats with different special state:
const handleCartChange = (cart, prevCart) => {
if (!cart.seats.length) {
// Unlock all the seats if the cart is empty
renderer.updateSeatLocks(s => false);
} else if (!prevCart || !prevCart.seats.length) {
// Lock seats with different special state
const seat = cart.seats[0];
renderer.updateSeatLocks(
s => (s.special && s.special.s1) !== (seat.special && seat.special.s1)
);
}
};
Parameters:
Name | Type | Description |
---|---|---|
|
Function should return |
Returns: void
8.1.41. zoomIn
▸ zoomIn(): void
Returns: void
8.1.42. zoomOut
▸ zoomOut(): void
Returns: void
8.2. Interface: IBeforeSeatDrawEvent
8.2.1. Hierarchy
-
IBeforeSeatDrawEvent
8.2.2. Properties
8.2.3. context
-
context: Context
8.2.4. seat
-
seat: ISeat
8.3. Interface: IBookingRendererSettings
8.3.1. Hierarchy
-
IRendererSettings
↳ IBookingRendererSettings
8.3.2. Properties
8.3.3. Optional
debounceDelay
• debounceDelay? : *undefined |
number* |
8.3.4. Optional
env
• env? : *undefined |
string* |
Environment (prod/stage)
8.3.5. Optional
height
• height? : *undefined |
number* |
8.3.6. Optional
lockedSeatsFilter
• lockedSeatsFilter? : *undefined |
function* |
8.3.7. Optional
onBeforeSeatDraw
• onBeforeSeatDraw? : *undefined |
function* |
You can control seats' styling by returning custom style for each seat
8.3.8. Optional
onCartChange
• onCartChange? : *undefined |
function* |
Fires when the cart was modified.
remarks
Cart state is passed as a param to the handler (see ICart).
8.3.9. Optional
onPan
• onPan? : *undefined |
function* |
Fires while panning.
8.3.10. Optional
onRedrawEnd
• onRedrawEnd? : *undefined |
function* |
Fires when component full redrawing ends.
8.3.11. Optional
onRedrawStart
• onRedrawStart? : *undefined |
function* |
Fires when component full redrawing starts.
8.3.12. Optional
onSeatDebouncedEnter
• onSeatDebouncedEnter? : *undefined |
function* |
Same as onSeatMouseEnter
but with debounce.
remarks
Seat is passed as a param to the handler (see IExtendedSeat).
8.3.13. Optional
onSeatDeselect
• onSeatDeselect? : *undefined |
function* |
Fires when the user deselects a seat.
remarks
Seat is passed as a param to the handler (see IExtendedSeat).
To cancel seat deselection you can return false
or Promise resolving to false
.
8.3.14. Optional
onSeatMouseEnter
• onSeatMouseEnter? : *undefined |
function* |
Rises when the mouse pointer moves above a seat.
remarks
Seat is passed as a param to the handler (see IExtendedSeat).
8.3.15. Optional
onSeatMouseLeave
• onSeatMouseLeave? : *undefined |
function* |
Fires when the mouse pointer leaves a seat.
8.3.16. Optional
onSeatSelect
• onSeatSelect? : *undefined |
function* |
Fires when the user marks a seat as selected.
remarks
Seat is passed as a param to the handler (see IExtendedSeat).
To cancel seat selection you can return false
or Promise resolving to false
.
8.3.17. Optional
onSeatSelectionChange
• onSeatSelectionChange? : *undefined |
function* |
Fires after seat selection was updated.
8.3.18. Optional
onSectionClick
• onSectionClick? : *undefined |
function* |
Fires when the user clicks on a section.
remarks
Section is passed as a param to the handler (see ISection).
8.3.19. Optional
onSectorClick
• onSectorClick? : *undefined |
function* |
Fires when the user clicks on a section.
deprecated
Use onSectionClick instead
8.3.20. Optional
onSectorMouseEnter
• onSectorMouseEnter? : *undefined |
function* |
Fires when the mouse pointer moves above a section.
remarks
Section is passed as a param to the handler (see ISection).
8.3.21. Optional
onSectorMouseLeave
• onSectorMouseLeave? : *undefined |
function* |
Fires when the mouse pointer leaves a section.
8.3.22. Optional
onZoomEnd
• onZoomEnd? : *undefined |
function* |
Fires after the zoom animation ended.
8.3.23. Optional
onZoomStart
• onZoomStart? : *undefined |
function* |
Fires before the zoom animation started.
8.3.24. Optional
padding
• padding? : *undefined |
number* |
8.3.25. Optional
publicKey
• publicKey? : *undefined |
string* |
Public API key
8.3.26. Optional
seatSelectionMinZoom
• seatSelectionMinZoom? : *undefined |
number* |
8.3.27. Optional
selectionLimit
• selectionLimit? : *undefined |
number* |
8.4. Interface: ICart
8.4.1. Hierarchy
-
ICart
8.4.2. Properties
8.5. Interface: ICartGa
8.5.1. Hierarchy
-
ICartGa
8.5.2. Properties
8.5.3. count
-
count: number
8.5.4. key
-
key: string
8.5.5. price
-
price: number
8.6. Interface: ICartSeat
8.6.1. Hierarchy
-
ICartSeat
8.6.2. Properties
8.6.3. Optional
id
• id? : *undefined |
number* |
8.6.4. key
-
key: string
8.6.5. Optional
price
• price? : *undefined |
number* |
8.7. Interface: IColoredPrice
8.7.1. Hierarchy
-
↳ IColoredPrice
8.7.2. Properties
8.7.3. color
-
color: string
8.8. Interface: IExtendedSeat
8.8.1. Hierarchy
-
↳ IExtendedSeat
8.8.2. Properties
8.8.3. ax
-
ax: number
8.8.4. ay
-
ay: number
8.8.8. rowNumber
-
rowNumber: number
8.8.9. seatName
-
seatName: string
8.8.10. sectionId
-
sectionId: number
8.8.11. sectionName
-
sectionName: string
8.8.12. sectorId
-
sectorId: number
8.8.14. x
-
x: number
8.9. Interface: IPoint
8.9.1. Hierarchy
-
IPoint
8.9.2. Properties
8.9.3. Readonly
x
-
x: number
8.10. Interface: IPrice
8.10.1. Hierarchy
-
IPrice
8.10.2. Properties
8.10.3. id
-
id: number
8.11. Interface: IRendererSeatStyleSettings
8.11.1. Hierarchy
-
IRendererSeatStyleSettings
8.11.2. Properties
8.12. Interface: IRendererTheme
8.12.1. Hierarchy
-
IRendererTheme
8.12.2. Properties
8.12.3. bgColor
-
bgColor: string
8.12.4. Optional
colorCategories
-
colorCategories? : string[]
8.12.5. gridStep
-
gridStep: number
8.12.6. Optional
images
• images? : *undefined |
object* |
8.12.7. priceColors
-
priceColors: string[][]
8.13. Interface: ISeatStyle
8.13.1. Hierarchy
-
ISeatStyle
8.13.2. Properties
8.13.3. color
-
color: string
8.13.4. Optional
imageId
• imageId? : *undefined |
string* |
8.13.5. Optional
seatName
• seatName? : *undefined |
object* |
8.13.6. Optional
shadow
• shadow? : *undefined |
object* |
8.13.7. size
-
size: number
8.14. Interface: ISection
8.14.1. Hierarchy
-
ISection
8.14.2. Properties
8.14.3. ga
-
ga: boolean
8.14.4. Optional
id
• id? : *undefined |
number* |
8.14.5. name
-
name: string
8.14.6. Optional
price
• price? : *undefined |
number* |
8.14.7. rect
-
rect: ISectionRect
8.15. Interface: IZoomSettings
8.15.1. Hierarchy
-
IZoomSettings
8.15.2. Properties
8.15.3. maxPinchZoom
-
maxPinchZoom: number
8.15.4. maxZoomToFitScale
-
maxZoomToFitScale: number
8.15.5. minPinchZoom
-
minPinchZoom: number
8.15.6. presets
-
presets: number[]
9. API Licensing Agreement
This Customer Agreement (hereinafter – the "Agreement") sets out the terms and conditions of using the Seatmap.pro website (hereinafter "Terms of Use"), accessible at https://seatmap.pro (hereinafter, the "Website"). Before using the Website, the natural person (hereinafter "Customer") must read, agree with and accept these Terms of Use. If the Customer doesn’t accept the terms of this Agreement and shall not accept to be bound by all the terms of this Agreement, they should stop using the Website immediately.
This API licensing agreement (hereinafter referred to as the "Agreement") defines the access rights of the Customer (hereinafter referred to as "Licensee") over APIs, data and documentation provided and licensed by Seatmap.pro. By using Seatmap.pro APIs, the Customer is under obligaton to comply with the terms of the Agreement. If the Customer does not agree with the terms of the Agreement, they can not use APIs.
APIs are protected by copyright and international copyright agreements, as well as other intellectual property laws.
9.1. General provisions
-
An "application programming interface" or "API" is a set of libraries, tools, sample source codes, published specifications and documentation developed by Seatmap.pro. At its own discretion, Seatmap.pro may provide updates or API additions for Licensees.
-
The documentation includes (but is not limited to) the programmer’s manual, materials and other information needed for the use of APIs.
9.2. Licensing
-
Under the terms of this Agreement, Seatmap.pro grants the Licensee a limited, non-exclusive, non-transferable license (without the right to sublicense) to use APIs solely for the Licensee’s personal use (for the development of apps to work with Seatmap.pro products).
The Licensee may not distribute, license, or otherwise transfer APIs to third parties.
9.3. Other Rights and Restrictions
-
The Licensee may copy the APIs only for use under the terms of this Agreement.
-
Reverse engineering. The Licensee has no rights over the API source code except for the rights expressly granted to the Licensee by this Agreement. The Licensee is not entitled to process, decompile, modify, or disassemble APIs, or otherwise bring the APIs to a generally accepted form of submission, in whole or in part, except as expressly permitted by this Agreement or applicable law.
-
For the efficient use of API, additional development tools such as a compiler or other software (“Third-Party Software”) may be required. Licensee bears full responsibility for the purchase of this software and the necessary licenses. Seatmap.pro is not under any obligation and makes no warranties regarding the use of third-party software by the Licensee.
-
The Licensee is not entitled to sublicense their rights under this Agreement, except for the cases expressly provided in this Agreement. The Licensee may not use Seatmap.pro trademarks or trade names. Seatmap.pro reserves all rights not expressly granted herein.
-
The Licensee cannot obtain patent rights to APIs or applications developed using the Seatmap.pro API or APIs of other Seatmap.pro API licensees to create, use or sell any products or technologies.
9.4. Property
-
Seatmap.pro shall reserve the property rights, including all rights to patents, copyrights, trade secrets, trademark and other intellectual property rights to APIs and any changes thereto. Seatmap.pro has exclusive right to register any patents and copyrights. The Licensee recognizes that under this Agreement the Licensee does not have property rights over APIs, only the right to limited use under the terms of this Agreement.
9.5. Support
-
Seatmap.pro Customer Support does not provide technical support for the APIs under the terms of this Agreement and does not provide updates, bug fixes or API changes.
9.6. Confidentiality
-
APIs contain valuable information about the company and commercial secrets belonging to Seatmap.pro. These remain the property of Seatmap.pro. Licensees are required to avoid disclosing this information and avoid unauthorized use of APIs.
-
The Licensee shall not disclose, advertise or publish the terms of this Agreement without the prior written consent of Seatmap.pro. Any press release or publication relevant to this Agreement is subject to prior review and written approval by Seatmap.pro.
9.7. No warranty
-
APIs and documentation are provided "as is" without warranty of any kind. Seatmap.pro does not warrant that APIs and documentation are suitable for use by Licensee and free of defects or errors. In addition, Seatmap.pro does not guarantee continuous and uninterrupted access to APIs and documentation and makes no warranties or representations regarding the results of their use.
9.8. Limitation of Liability
-
The Licensee is fully liable for any damage to their computer system or loss of data resulting from the download or use of APIs. Seatmap.pro shall not be liable for any special, incidental, consequential damages (including, but not limited to, loss of profits, suspension or termination of work, failure or breakdown of the computer, loss of information or any other damages, including financial damages, arising from the use of or inability to use APIs or the provision or lack of provision of support services), even if Seatmap.pro has been notified of the possibility of such damage.
9.9. Indemnity
-
Licensee shall not hold Seatmap.pro, its customers, suppliers or other partners and employees liable for any losses, claims or demands, reasonable legal fees arising from the use of APIs.
9.10. Term and Termination of the Agreement
-
In the event that the Licensee fails to comply with any of the terms of this Agreement, they will be held liable to Seatmap.pro for any loss or damage arising from the breach of terms.
-
Upon termination of this Agreement, the Licensee shall immediately terminate the use of APIs, delete all copies of APIs and documentation or return them to Seatmap.pro.
-
Seatmap.pro shall be entitled to verify compliance of the Licensee with the terms of the Agreement. The Licensee, at the request of Seatmap.pro, is obliged to facilitate this.
9.11. Miscellaneous
-
Violation or failure to comply with the terms of this Agreement shall result in its termination.
-
Seatmap.pro shall be entitled to suspend (or terminate), at its own discretion and without notice, the Licensee’s access to the Service in the event that the terms of the Agreement are violated.
-
By installing, copying or otherwise using Seatmap.pro APIs, the Licensee acknowledges that that they have read, understood and agree to the conditions specified above.
10. Contact us
For any questions please mail us hello@seatmap.pro