TM 3rd Party Integration API
This is the first version of the 3rd Party Integration API specification for Ticketmaster Partners which will be available in our EU markets starting in late 2020. Through this API, Partners can provide allocations to the Ticketmaster ticketing platform in order to sell their inventory through the broad reach of Ticketmaster sales channels.
Introduction
This document describes the 3rd Party Integration API for Ticketmaster Partners. Through it, the Partner systems (3P) can export their content to the Ticketmaster ticketing platform (TM) in order to sell their inventory via the available sales channels.
The first version of this API will manage the flow of information through the following services:
- Ingestion services: to import events and configuration for venues
- Availability services: to synchronize the availability from 3P to TM
- Runtime services: to manage inventory booking, inventory release, order confirmation, order cancellation, order status, order print and order rollback print
- Reconciliation services: to synchronize the status of the transactions if an error happen
This document contains information about the structure for the messages to be exchanged by both systems. Technical aspects regarding the communication of the systems are not included but will be included in a later phase.
Contact
If you have any question regarding this content, please do not hesitate to contact 3rd Party Integrations team via email at 3pi-team@ticketmaster.es
API Architecture
The exchange of information between the two systems will be done through REST architecture with information encoded in JSON.
The 3P system must have a connection with the TM system that allows establishing a session for the exchange of messages. The proposed connection type is over HTTPS protocol (Hypertext Transfer Protocol Secure).
For all services the 3P system will act as “server” and the TM system will act as “client”. Therefore, it is 3P system which exposes the services of the API.
Security
To guarantee the security of the API, the OAuth2.0 standard is used. This method is based on the use of temporary access codes called tokens.
To obtain an access token it will be necessary for the client to connect to an authentication server through their credentials.
The client then makes a request to the resource server (API server). The access token is added to the header of the API request with the word “Bearer” followed by the token string. The API server verifies the access token in the user’s request and decides whether to authenticate the user.
The access tokens not only provide authentication for the requestor, they also define the permissions of how the client can use the API. In addition, access tokens generally expire after a period of time and require the user to log in again.
Authentification Server
Request
Property | Type | Description |
---|---|---|
grant_type | String | The value must be “client_credentials”. Required |
client_id | String | Identifier of the client application (application key) |
client_secret | String | Password for the authentication service (secret) |
Example
Response
Property | Type | Description |
---|---|---|
scope | String | List of strings separated by spaces with accessible resources. |
access_token | String | Once access token has expired it will be necessary to obtain a new one. |
token_type | String | Type of token issued according to the Oauth2.0 RFC6749 standard. |
expires_in | String | Token Expiration Time (in seconds) |
Example
Resource server (API server)
Request
Property | Type | Description |
---|---|---|
Authorization | String | The value must be “Bearer” followed by the access token. |
Example
Data Model And Processes
Ingestion
The ingestion process imports manifests and events for an integrated venue.
Manifests
A manifest is the seat configuration for a venue. A venue can have several different configurations (depending on the events that take place).
A manifest is defined as a set of:
- Levels. Usually a level refers to a position with respect to a height.
- Sections. Usually a section refers to a physical subdivision of a venue.
- Price levels. A price level refers to the price category of seats.
- Reserved seat areas / General admission areas. These areas contain inventory associated / not associated with seats.
Note: The areas can belong to a level and/or a section. These areas are assigned to a price level.
Example:
This manifest is composed for 7 areas (one general admission and 6 reserved seats) and 3 price levels (A, B and C).
Events
An event is a public entertainment pending to take place in a venue.
An event is defined as a set of:
- Base information (dates, manifest, promoter and genre)
- Text information (title and description) for differents languages
- Price types. Ticket types offered to customers.
- Price levels. Extra information of the price levels defined in the manifest for this event.
- Prices. Each price type might have a different price (face value) per price level and the sales period.
- Price Components. Each price can contain an optional definition of different taxable amounts that when combined form the full ticket price.
- Timestamp. It will be used to manage the validity of the information.
Price Components
When ticket prices include additional items and services, price components provide a way for the 3P to specify these taxable components so that they can be provided to the promoter and/or they can be printed. Price components will not be displayed to the customer through the TM purchase flow. Price components contain the following information:
- Price Component ID
- Price Component Amount
- Tax Plan ID
- If TM does not have a copy of that tax plan ID, the Tax Plan service is called to obtain the tax plan name and tax rates
- Taxable Organization. Default value is the event’s promoter
Tickets
A ticket can contain a combination of information provided from the event’s information, such as Event Title, Venue and Date, as well as information provided by the 3P specifically for the ticket:
- Ticket Text
- Ticket Logos
- Print Messages
NOTE: The coordination of the ticket format and content will be coordinated between the local TM office and the 3P.
Ticket Text
It is possible to specify a maximum of 14 ticket text lines with a maximum length of 42 characters. This information is ingested with the creation of the event and can be updated.
Ticket Logos
A ticket logo is an image that is printed on a physical ticket. The logos are provided on the event with an ID, if TM does not have a copy of that logo, the Logo service is called to download the logo. It is possible to specify logos at the event level and at the price type level.
- Must be unique
- Supported formats: pcx, png, bmp, gif, tiff, jpeg
- Maximum size: 1MB
- Base64 encoded string
Logo Position
Each event logo is required to have a position. The position will be static on the ticket design. If no logo is sent, the allocated space on the ticket is empty.
Print Messages
When TM prints a ticket, it is possible for the 3P to provide an additional 3 lines of text that can be printed on the ticket. For example, this information could contain any door/gate information. This information is only printed on the ticket and will not persist any other part of the Ticketmaster system. The maximum length of these print messages is 100 characters.
Ingestion services
The ingestion services retrieve information (system status, events and manifests) from 3P and push it to TM.
MESSAGE | SERVICE | DESCRIPTION |
---|---|---|
AVAILABILITY OF THE SYSTEM | ||
Healthcheck | GET /healthcheck | Validate availability and read notifications from the 3P. |
IMPORT OF CONTENTS | ||
Events.GetEventList | GET /events | Retrieve detailed information of the events to be imported from the 3P. |
Events.GetEvent | GET /events/{event_id} | Retrieve detailed information of a event from the 3P. |
Manifests.GetManifest | GET /manifests/{manifest_id} | Retrieve detailed information of a manifest from the 3P. |
TM sends requests to 3P to validate the availability of the system (through the Healthcheck message). The 3P can send a notification in the response (ex. service not currently available).
The management of the synchronization of the programming between the systems will be done by the date of the last modification associated to each event.
The TM system will provide the date of the last synchronization to the 3P in order to obtain the updated schedule (list of events through the message Events.GetEventList). Events may require the loading of the manifets (throught the Manifests.GetManifest message)
Import process
There are two types of importation processes:
Import of all the events of a venue
This process will be activated by the scheduler, by a manual request from the BackOffice or by a request from the 3P.
EIB will request the list of new events or that have changed after a certain date/time.
3P will return a list of new and updated events (indicating the type of change).
EIB will create the new events and update the modified events. EIB will also generate a log with errors, warnings and important information.
In some cases, EIB will request the manifest associated with the imported events.
Import of an event:
This process will be activated when discrepancies are detected with the timestamp associated with the events.
The process is similar to the previous one but only applies to an event.
Availability
This synchronization process retrieves availability information of areas and seats from 3P and pushes it to TM.
The availability for general admission areas contains information about the quantities. The availability for reserved seat areas contains information about the quantities and a list of available seats.
Availability services
Services that will manage the following operations:
MESSAGE | SERVICE | DESCRIPTION |
---|---|---|
AVAILABILITY QUERY | ||
Events.GetAvailability | GET /events/{event_id}/availability | Retrieve availability information (capacity of the sections and seat status) of an integrated event from the 3P. |
The same service can be used to retrieve overview information or detailed information about the availability of all areas of an event or of a specific area.
Availability synchronization process
There are two types of availability synchronization processes:
Full availability synchronization
This process will be activated by the importation of a new / updated event.
EIB will request the total availability of an event.
3P will return the status of all areas (available and unavailable quantities for general admission and reserved seat areas) and all available seats.
Partial availability synchronization
This process will be activated when EIB wants to refresh the availability of one area.
EIB will request the availability of an area identified by level and section.
3P will return the status of the area (available and unavailable quantities) and all available seats.
Runtime
The runtime process manages bookings and orders for an integrated venue.
Bookings and Orders
A booking is an amount of tickets reserved in order to buy them. An order is an amount of tickets purchased. So, a booking is a potential order.
Runtime services
Services that will manage the following messages:
MESSAGE | SERVICE | DESCRIPTION |
---|---|---|
TRANSACTION MANAGEMENT | ||
Bookings.Request | POST /bookings | Create a booking |
Bookings.Release | DELETE /booking/{inventory_token} | Release a booking |
Orders.Request | POST /orders | Confirm a booking and convert it into a purchase order. |
Orders.OrderStatus | GET /orders/{inventory_order} | Get the status of an order. |
Orders.Print | POST /orders/{inventory_order} | Get information to print an order and record the print. |
Orders.PrintRollback | POST /orders/{inventory_order} | Report the non-printing of an order. |
Orders.Cancel | POST /orders/{inventory_order} | Cancel a purchase order |
State graph of a reservation / purchase order
Transactional process
Before starting a purchase process, TM will consult the availability as many times as it sees fit through the messages created for this purpose. In the case that, when checking availability and when starting the purchase, 3P notified that the event information has changed (by validating the date of the last modification of the event), TM will connect to 3P to update the information of the event.
From the point of view of 3P the process will be as follows:
Bookings.Request
3P will try to reserve the requested tickets. If it is possible, 3P will return a positive confirmation to TM; otherwise it will return a negative confirmation and the purchase process will not have begun. In the possitive case, 3P will be waiting for confirmation or cancellation of the purchase process started. In this time 3P will activate a “TimeOut” that controls the waiting time. If after that time TM has not confirmed or canceled the purchase, 3P will cancel the purchase by putting the tickets back for sale.
Bookings.Release
Assuming that for any reason TM decided that the purchase started is aborted, it must make a call to this function to cancel the purchase and for 3P to put the tickets on sale again.
Orders.Request
Before calling this function, TM must have managed the payment. The call for this function implies the final sale of the tickets that were reserved with the Bookings.Request function. The reservation made may have been canceled by the 3P due to the completion of the timeout, the decision of which to arrive at this point depends on TM, could for example try again to reserve the tickets.
This would be the normal process of ticket sales. But there is the possibility that TM would need to cancel a confirmed sale thought the function Orders.Cancel. Note: In the case that the 3P is off-line when canceling an order, that message will be queued and will be attempted to be sent periodically until the 3P receives it.
The call to Orders.PrintStatus can be sent immediately after the purchase (pick up in an outlet) or later (non-presential purchase) to obtain authorization to print the tickets. This will be followed by the call Orders.Print to register the printing of the tickets and, only in the case of problems, will be followed by a call Order.PrintRollback to record the non-printing.
Reconciliation
The Reconciliation process retrieves information of transactions from an integrated venue when an error happens. In these cases, TM has to retrieve information of an order and then, if was necessary, it would have to cancel the order.
There are two critical messages that require the Reconciliation process:
Reconciliation services
Service that will manage the following operation:
MESSAGE | SERVICE | DESCRIPTION |
---|---|---|
RECONCILIATION OF TRANSACTIONS | ||
Orders.GetOrderList | GET /orders | Get the detail of the orders processed. |
Reconsolidation process
TM will be able to request information of an order or some orders in two possible ways:
Retrieve information for an order
EIB will request the status of an order.
In this case EIB will send the inventory_token because it doen’t know the inventory order identifier.
Retrieve information for some orders
EIB will request the status of all orders processed in a period.
In this case EIB will send the event and the start and the end of the period.
API Specification
Event
get | /events | Retrieves a list of events | Get an event list from the Partner system |
get | /events/{event_id} | Retrieves a specific event. | Get an event from the Partner system |
get | /events/{event_id}/availability | Retrieves the availability of an event. | Get the event availability from the Partner system. |
Manifest
get | /manifests/{manifest_id} | Retrieves a specific manifest. | Get a manifest from the Partner system |
Logo
get | /logos/{logo_id} | Retrieves a specific logo. | Get a logo from the Partner system |
Tax plan
get | /tax-plans/{tax_plan_id} | Retrieves a specific tax plan. | Get a tax plan from the Partner system |
Booking
post | /bookings | Inventory Request | Create a reservation in the Partner ticketing system |
delete | /bookings/{inventory_token} | Inventory Release | Release a reservation in the Partner system |
Order
get | /orders | Retrieves an Order list | Get an list of order information from the Partner system |
post | /orders | Order Request (Inventory Commit) | Create an order in the Partner ticketing system |
get | /orders/{inventory_order} | Order Status | Get the order status from the Partner system |
post | /orders/{inventory_order} | Order Print, Order Print Rollback or Order Cancel | Update an order to print, to rollback the print or to cancel |
Default
get | /healthcheck | Testing for the reachability of a Partner system and retrieve notifications |
Check system and read notifications
Method: GET
Summary: Health Check Request
Description: Testing for the reachability of a Partner system and retrieve notifications
/healthcheck
Other parameters:
Parameter | In | Description | Type | Default Value | Required |
---|---|---|---|---|---|
X-Correlation-Id
|
header | Unique identifier value that is attached to requests that allow reference to a particular transaction |
String | No |
Response structure:
200 Successful operation
-
id
(integer)-0 - Successful901 - Service not currently avail...- 0 - Successful 901 - Service not currently available 902 - Syncronization required
-
message
(string) - No description specified -
venues_to_sync
(array) - No description specified[ "string" ]
401 Unauthorized (the request has not been applied because it lacks valid authentication credentials)
403 Forbidden (resource cannot be accessed)
500 Internal error
Authorization:
3p_auth: check:3p-system
Retrieves a list of events
Method: GET
Summary: Retrieves a list of events
Description: Get an event list from the Partner system
/events
Query parameters:
Parameter | Description | Type | Default Value | Required |
---|---|---|---|---|
venue
|
Venue where the event take place | String | Yes | |
last_modification
|
Minimum last modification (UTC date and time) | String | Yes | |
size
|
Page size of the response | Integer | 20 | No |
page
|
Page number | Integer | 1 | No |
sort
|
Sorting order of the search result. Allowable values - "NAME,DATE" or "DATE,NAME" (no letter casing) | String enum:["name,date", "date,name"] | DATE,NAME | No |
Other parameters:
Parameter | In | Description | Type | Default Value | Required |
---|---|---|---|---|---|
X-Correlation-Id
|
header | Unique identifier value that is attached to requests that allow reference to a particular transaction |
String | No |
Response structure:
200 Successful operation
-
events_info
(array) - No description specified{ array item object }
event
(object)event_id
(string) - Event identifierlast_modification
(string) - UTC date and time of the event last modificationorganization_info
(object)promoter_id
(string) - Promoter identifier (tax identification number)promoter_name
(string) - Promoter name
manifest_id
(string) - Manifest identifiertext_infos
(array){array item object}
lang
(string) - ISO language and country codes (Example "es-ES").name
(string) - Event name or titledescription
(string) - Event description
ticket_texts
(array){array item object}
lang
(string) - ISO language and country codes (Example "es-ES").lines
(array){array item object}
number
(integer) - The line number to print the ticket text. Sequence starting at 1 and always incremented by 1. No gap allowed. Positioning of text is coordinated with the local TM representative.text
(string) - The ticket text line content. The text must not contain the following characters: '~', '/' , '^', '{' and '}' or carriage return. Can be empty. Trailing lines having empty text will not be considered.
maximum_tickets_quantity
(integer) - Global maximum number of ticketsgenre_info
(array){array item object}
genre_id
(string) - Event genre identifiergenre_name
(string) - Event genre name
date_time
(string) - Event UTC date and timedate_time_properties
(object)date_hidden
(boolean) - True if the event date can't be showedtime_hidden
(boolean) - True if the event time can't be showed
visibility
(object)default_visibility
(string: enum) - Visibility of the event in TM sales channels at the event creation (no letter casing) "VISIBLE" - the event is published in the sales channels "NOT_VISIBLE" - the event is not published in the sales channels and it isn't operational "HIDDEN" - the event is not published on the sales channels but it's operational- VISIBLE
- NOT_VISIBLE
- HIDDEN
visibility_override
(object)visibility
(string: enum) - Visibility of the event in TM sales channels at a specific date/time (no letter casing) "VISIBLE" - the event is published in the sales channels "NOT_VISIBLE" - the event is not published in the sales channels and it isn't operational "HIDDEN" - the event is not published on the sales channels but it's operational- VISIBLE
- NOT_VISIBLE
- HIDDEN
starts_on
(string) - Specific UTC date/time of the visibility change
doors_date_time
(string) - Doors UTC date timedoors_date_time_properties
(object)date_hidden
(boolean) - True if the doors date can't be showedtime_hidden
(boolean) - True if the doors time can't be showed
price_levels
(array) - list of price categories{array item object}
id
(string) - Price level identifiertext_infos
(array){array item object}
lang
(string) - ISO language and country codes (Example "es-ES").name
(string) - Price level namedescription
(string) - Price level description
price_types
(array) - list of price types{array item object}
id
(string) - Price type identifierregular
(boolean) - Indicates if this price type is the "regular" price. Can have only one price type set to true.access_code
(string) - password to access this price typetext_infos
(array){array item object}
lang
(string) - ISO language and country codes (Example "es-ES").name
(string) - Price type namedescription
(string) - Price type descriptionadditional_info
(string) - Price type additional infoprinted_description
(string) - Price type printed description
logos
(array) - List of price type logos. At the moment it only supports up to 1 logos per price type.{array item object}
logo_id
(string) - Logo identifier
price_components
(array) - list of price components{array item object}
id
(string) - Price component identifiertax_plan_id
(string) - Tax plan identifiertaxable_organization_id
(string) - The taxable organization. In case that this value is empty, the system will use the promoter identifier value
face_value_prices
(array) - list of prices{array item object}
price_period
(object)id
(string) - Period idstart_date_time
(string) - Period start date and time (UTC date and time, the seconds will be discarded)end_date_time
(string) - Period end date and time (UTC date and time, the seconds will be discarded)
prices
(array){array item object}
price_level_id
(string) - Price level identifierprice_type_id
(string) - Price type identifieramount
(string) - Price for these price level and price type (Minor currency units ex. 2000 = 20EUR)per_price_component_amount
(array){array item object}
price_component_id
(string) - Price component identifieramount
(string) - Amount for this price component (Minor currency units ex. 2000 = 20EUR)
logos
(array) - List of event logos. At the moment it only supports up to 2 logos per event.{array item object}
logo_id
(string) - Logo identifierposition
(integer) - Position in the ticket * Must be greater than 0 * Must be unique * Can be unordered and non-sequential * Position not used by a logo is simply a blank on the ticket
status
(string: enum) - Event status (no letter casing)- ON_SALE
- CANCELED
- DELETED
-
page
(object) - No description specifiedsize
(integer) - size of pagetotal_elements
(integer) - total number of available elementstotal_pages
(integer) - total number of available pagesnumber
(integer) - current page number counted from 1
400 Bad request (error description in response body)
-
id
(integer)-1 - Syntax error101 - Invalid venue id205 - Inv...- 1 - Syntax error 101 - Invalid venue id 205 - Invalid sort criteria 213 - Invalid last modification data time 214 - Invalid size page 215 - Invalid page number
-
message
(string) - No description specified
401 Unauthorized (the request has not been applied because it lacks valid authentication credentials)
403 Forbidden (resource cannot be accessed)
410 Unsuccessful operation (error description in response body)
-
id
(integer) - 317 - Venue not currently available -
message
(string) - No description specified
500 Internal error
Authorization:
3p_auth: ingestion:3p-system
Retrieves a specific event.
Method: GET
Summary: Retrieves a specific event.
Description: Get an event from the Partner system
/events/{event_id}
URL parameters:
Parameter | Description | Type | Default Value | Required |
---|---|---|---|---|
event_id
|
Event identifier | String | Yes |
Query parameters:
Parameter | Description | Type | Default Value | Required |
---|---|---|---|---|
last_modification
|
Minimum last modification (UTC date and time) | String | Yes |
Other parameters:
Parameter | In | Description | Type | Default Value | Required |
---|---|---|---|---|---|
X-Correlation-Id
|
header | Unique identifier value that is attached to requests that allow reference to a particular transaction |
String | No |
Response structure:
200 Successful operation
-
event
(object) - No description specifiedevent_id
(string) - Event identifierlast_modification
(string) - UTC date and time of the event last modificationorganization_info
(object)promoter_id
(string) - Promoter identifier (tax identification number)promoter_name
(string) - Promoter name
manifest_id
(string) - Manifest identifiertext_infos
(array){array item object}
lang
(string) - ISO language and country codes (Example "es-ES").name
(string) - Event name or titledescription
(string) - Event description
ticket_texts
(array){array item object}
lang
(string) - ISO language and country codes (Example "es-ES").lines
(array){array item object}
number
(integer) - The line number to print the ticket text. Sequence starting at 1 and always incremented by 1. No gap allowed. Positioning of text is coordinated with the local TM representative.text
(string) - The ticket text line content. The text must not contain the following characters: '~', '/' , '^', '{' and '}' or carriage return. Can be empty. Trailing lines having empty text will not be considered.
maximum_tickets_quantity
(integer) - Global maximum number of ticketsgenre_info
(array){array item object}
genre_id
(string) - Event genre identifiergenre_name
(string) - Event genre name
date_time
(string) - Event UTC date and timedate_time_properties
(object)date_hidden
(boolean) - True if the event date can't be showedtime_hidden
(boolean) - True if the event time can't be showed
visibility
(object)default_visibility
(string: enum) - Visibility of the event in TM sales channels at the event creation (no letter casing) "VISIBLE" - the event is published in the sales channels "NOT_VISIBLE" - the event is not published in the sales channels and it isn't operational "HIDDEN" - the event is not published on the sales channels but it's operational- VISIBLE
- NOT_VISIBLE
- HIDDEN
visibility_override
(object)visibility
(string: enum) - Visibility of the event in TM sales channels at a specific date/time (no letter casing) "VISIBLE" - the event is published in the sales channels "NOT_VISIBLE" - the event is not published in the sales channels and it isn't operational "HIDDEN" - the event is not published on the sales channels but it's operational- VISIBLE
- NOT_VISIBLE
- HIDDEN
starts_on
(string) - Specific UTC date/time of the visibility change
doors_date_time
(string) - Doors UTC date timedoors_date_time_properties
(object)date_hidden
(boolean) - True if the doors date can't be showedtime_hidden
(boolean) - True if the doors time can't be showed
price_levels
(array) - list of price categories{array item object}
id
(string) - Price level identifiertext_infos
(array){array item object}
lang
(string) - ISO language and country codes (Example "es-ES").name
(string) - Price level namedescription
(string) - Price level description
price_types
(array) - list of price types{array item object}
id
(string) - Price type identifierregular
(boolean) - Indicates if this price type is the "regular" price. Can have only one price type set to true.access_code
(string) - password to access this price typetext_infos
(array){array item object}
lang
(string) - ISO language and country codes (Example "es-ES").name
(string) - Price type namedescription
(string) - Price type descriptionadditional_info
(string) - Price type additional infoprinted_description
(string) - Price type printed description
logos
(array) - List of price type logos. At the moment it only supports up to 1 logos per price type.{array item object}
logo_id
(string) - Logo identifier
price_components
(array) - list of price components{array item object}
id
(string) - Price component identifiertax_plan_id
(string) - Tax plan identifiertaxable_organization_id
(string) - The taxable organization. In case that this value is empty, the system will use the promoter identifier value
face_value_prices
(array) - list of prices{array item object}
price_period
(object)id
(string) - Period idstart_date_time
(string) - Period start date and time (UTC date and time, the seconds will be discarded)end_date_time
(string) - Period end date and time (UTC date and time, the seconds will be discarded)
prices
(array){array item object}
price_level_id
(string) - Price level identifierprice_type_id
(string) - Price type identifieramount
(string) - Price for these price level and price type (Minor currency units ex. 2000 = 20EUR)per_price_component_amount
(array){array item object}
price_component_id
(string) - Price component identifieramount
(string) - Amount for this price component (Minor currency units ex. 2000 = 20EUR)
logos
(array) - List of event logos. At the moment it only supports up to 2 logos per event.{array item object}
logo_id
(string) - Logo identifierposition
(integer) - Position in the ticket * Must be greater than 0 * Must be unique * Can be unordered and non-sequential * Position not used by a logo is simply a blank on the ticket
-
status
(string) - Event status (no letter casing)
400 Bad request (error description in response body)
-
id
(integer)-1 - Syntax error213 - Invalid last modification...- 1 - Syntax error 213 - Invalid last modification data time
-
message
(string) - No description specified
401 Unauthorized (the request has not been applied because it lacks valid authentication credentials)
403 Forbidden (resource cannot be accessed)
404 Not found (the event has not been found)
410 Unsuccessful operation (error description in response body)
-
id
(integer) - 305 - Event not currently available -
message
(string) - No description specified
500 Internal error
Authorization:
3p_auth: ingestion:3p-system
Retrieves the availability of an event.
Method: GET
Summary: Retrieves the availability of an event.
Description: Get the event availability from the Partner system.
/events/{event_id}/availability
URL parameters:
Parameter | Description | Type | Default Value | Required |
---|---|---|---|---|
event_id
|
Event identifier | String | Yes |
Query parameters:
Parameter | Description | Type | Default Value | Required |
---|---|---|---|---|
last_modification
|
UTC date and time of the event last modification | String | Yes | |
level
|
Level identifier or 'ALL' | String | ALL | No |
section
|
Section identifier or 'ALL' | String | ALL | No |
avail_level
|
Level of information detail (no letter casing) "OVERVIEW" retrieves only quantities object (no rows) "DETAIL" retrieves quantities and rows objects | String enum:["overview", "detail"] | OVERVIEW | No |
Other parameters:
Parameter | In | Description | Type | Default Value | Required |
---|---|---|---|---|---|
X-Correlation-Id
|
header | Unique identifier value that is attached to requests that allow reference to a particular transaction |
String | No |
Response structure:
200 Successful operation
-
venue_id
(string) - Venue associated to the event -
manifest_id
(string) - Manifest identifier -
ga_areas
(array) - No description specified{ array item object }
level_id
(string) - Level idsection_id
(string) - Section idprice_level_id
(string) - Price level or price category for all seats of the areaquantities
(object)available
(integer) - Number of available seats in the areaunavailable
(integer) - Number of unavailable seats in the area
-
rs_areas
(array) - No description specified{ array item object }
level_id
(string) - Level idsection_id
(string) - Section idquantities
(object)available
(integer) - Number of available seats in the areaunavailable
(integer) - Number of unavailable seats in the area
rows
(array){array item object}
row
(string) - row labelseats
(object)available
(array)[ "string" ]
- seat label
400 Bad request (error description in response body)
-
id
(integer)-1 - Syntax error103 - Invalid level id104 - Inv...- 1 - Syntax error 103 - Invalid level id 104 - Invalid section id 213 - Invalid last modification data time 216 - Invalid availability level
-
message
(string) - No description specified
401 Unauthorized (the request has not been applied because it lacks valid authentication credentials)
403 Forbidden (resource cannot be accessed)
404 Not found (the event has not been found)
409 Conflict (invalid last_modification)
410 Unsuccessful operation (error description in response body)
-
id
(integer) - 305 - Event not currently available -
message
(string) - No description specified
500 Internal error
Authorization:
3p_auth: ingestion:3p-system
Examples:
Retrieve detailed availability information of the event "000002002000007", section "0013 01"
Retrieves a specific manifest.
Method: GET
Summary: Retrieves a specific manifest.
Description: Get a manifest from the Partner system
/manifests/{manifest_id}
URL parameters:
Parameter | Description | Type | Default Value | Required |
---|---|---|---|---|
manifest_id
|
Manifest identifier | String | Yes |
Other parameters:
Parameter | In | Description | Type | Default Value | Required |
---|---|---|---|---|---|
X-Correlation-Id
|
header | Unique identifier value that is attached to requests that allow reference to a particular transaction |
String | No |
Response structure:
200 Successful operation
-
manifest_id
(string) - Manifest identifier -
description
(string) - Manifest description -
venue_id
(string) - Venue associated to the manifest -
total_capacity
(integer) - Total capacity for the manifest that must match the total number of seats in all areas -
ga_areas
(array) - No description specified{ array item object }
level_id
(string) - Level idsection_id
(string) - Section idprice_level_id
(string) - Price level or price category for all seats of the areafree_text
(string) - Free text to include on tickets, will apply to all seats of the areacapacity
(integer) - Total capacity for the area
-
rs_areas
(array) - No description specified{ array item object }
level_id
(string) - Level idsection_id
(string) - Section idprice_level_id
(string) - Default price level or price category for all seats of the areafree_text
(string) - Default free text to include on tickets, will apply to all seats of the arearows
(array){array item object}
row
(string) - row labelposition_y
(integer) - Indicates the relative y position of this seat in relation to the other seats of the same area (i.e y position in the area's seat matrix).seats
(array){array item object}
seat
(string) - seat labelkilled
(boolean) - True if the seat is killedfree_text
(string) - Free text to include on the ticket of the seat (overwrite rs_area.free_text)position_x
(integer) - Indicates the relative x position of this seat in relation to the other seats of the same area (i.e x position in the area's seat matrix).
-
sections
(array) - No description specified{ array item object }
id
(string) - Section identifierdescription
(string) - Section description
-
levels
(array) - No description specified{ array item object }
id
(string) - Level identifierdescription
(string) - Level description
-
price_levels
(array) - No description specified{ array item object }
id
(string) - Price level identifier
400 Bad request (error description in response body)
-
id
(integer) - 1 - Syntax error -
message
(string) - No description specified
401 Unauthorized (the request has not been applied because it lacks valid authentication credentials)
403 Forbidden (resource cannot be accessed)
404 Not found (the manifest has not been found)
410 Unsuccessful operation (error description in response body)
-
id
(integer) - 318 - Manifest not currently available -
message
(string) - No description specified
500 Internal error
Authorization:
3p_auth: ingestion:3p-system
Inventory Request
Method: POST
Summary: Inventory Request
Description: Create a reservation in the Partner ticketing system
/bookings
Other parameters:
Parameter | In | Description | Type | Default Value | Required |
---|---|---|---|---|---|
X-Correlation-Id
|
header | Unique identifier value that is attached to requests that allow reference to a particular transaction |
String | No | |
request
|
body | Information to create a reservationInventoryRequestshow all |
Yes |
Response structure:
200 Successful opertaion (it has been processed but reservation not created).
-
event_id
(string) - Partner event id -
inventory_token
(string) - Reservation reference that must be used for Commit or Release -
inventory_ttl
(integer) - Time to live in seconds for this reservation -
search_results
(array) - No description specified{ array item object }
search_index
(integer) - Search index, so responses can be matched with requeststatus
(object)id
(integer) - 0 - Successful (no error) 103 - Invalid level id 104 - Invalid section id 105 - Invalid row 106 - Invalid seat 107 - Invalid price level id 109 - Invalid price type id 201 - Invalid search index 202 - Invalid accept alternate criteria 203 - Invalid search type 303 - Exceeded the number of available tickets 307 - Some of the requested items are not availablemessage
(string)
non_adjacent
(boolean) - True for non adjacent seatsalternate
(boolean) - True for alternate seatstickets
(array){array item object}
price_level_id
(string) - Ticket price level idprice_type_id
(string) - Ticket price type idticket_id
(string) - Ticket idlevel
(string) - Ticket level idsection
(string) - Ticket section idrow
(string) - Row for reserved seat ticket. Won't be present for general admissionseat
(string) - Seat number for reserved seat ticket. Won't be present for general admission
201 Successful operation (the reservation has been successfully created).
-
event_id
(string) - Partner event id -
inventory_token
(string) - Reservation reference that must be used for Commit or Release -
inventory_ttl
(integer) - Time to live in seconds for this reservation -
search_results
(array) - No description specified{ array item object }
search_index
(integer) - Search index, so responses can be matched with requeststatus
(object)id
(integer) - 0 - Successful (no error) 103 - Invalid level id 104 - Invalid section id 105 - Invalid row 106 - Invalid seat 107 - Invalid price level id 109 - Invalid price type id 201 - Invalid search index 202 - Invalid accept alternate criteria 203 - Invalid search type 303 - Exceeded the number of available tickets 307 - Some of the requested items are not availablemessage
(string)
non_adjacent
(boolean) - True for non adjacent seatsalternate
(boolean) - True for alternate seatstickets
(array){array item object}
price_level_id
(string) - Ticket price level idprice_type_id
(string) - Ticket price type idticket_id
(string) - Ticket idlevel
(string) - Ticket level idsection
(string) - Ticket section idrow
(string) - Row for reserved seat ticket. Won't be present for general admissionseat
(string) - Seat number for reserved seat ticket. Won't be present for general admission
400 Bad request (error description in response body)
-
id
(integer)-1 - Syntax error108 - Invalid event id110 - Inv...- 1 - Syntax error 108 - Invalid event id 110 - Invalid language 111 - Invalid channel type 213 - Invalid last modification data time
-
message
(string) - No description specified
401 Unauthorized (the request has not been applied because it lacks valid authentication credentials)
403 Forbidden (resource cannot be accessed)
409 Conflict (invalid last_modification)
410 Unsuccessful operation (error description in response body)
-
id
(integer)-301 - Exceeded the number of tickets for reques...- 301 - Exceeded the number of tickets for request 305 - Event not currently available 306 - Event have no availability 308 - Unauthorized sales channel
-
message
(string) - No description specified
500 Internal error
Authorization:
3p_auth: runtime:3p-system
Examples:
Booking of 2 general admission tickets (2 adults)
Booking of 3 general admission tickets (2 adults and 1 child)
Booking of 2 specific reserved seat tickets (1 adult and 1 discount), the best available in “0011 01” sector with the possibility of alternative in another area and not contiguous
Booking of 2 reserved seat tickets (1 adults and 1 child), specific seats, no alternative
Booking of 2 general admission tickets and 2 reserved seat tickets
Inventory Release
Method: DELETE
Summary: Inventory Release
Description: Release a reservation in the Partner system
/bookings/{inventory_token}
URL parameters:
Parameter | Description | Type | Default Value | Required |
---|---|---|---|---|
inventory_token
|
Token of reservation | String | Yes |
Other parameters:
Parameter | In | Description | Type | Default Value | Required |
---|---|---|---|---|---|
X-Correlation-Id
|
header | Unique identifier value that is attached to requests that allow reference to a particular transaction |
String | No |
Response structure:
204 Successful operation (the reservation has been successfully released).
400 Bad request (error description in response body)
-
id
(integer) - 1 - Syntax error -
message
(string) - No description specified
401 Unauthorized (the request has not been applied because it lacks valid authentication credentials)
403 Forbidden (resource cannot be accessed)
404 Not found (the reservation has not been found)
410 Unsuccessful operation (error description in response body)
-
id
(integer) - 305 - Event not currently available -
message
(string) - No description specified
500 Internal error
Authorization:
3p_auth: runtime:3p-system
Examples:
Release a booking
Release an inexistent booking
Release a booking and the 3rd party returns an internal error
Retrieves an Order list
Method: GET
Summary: Retrieves an Order list
Description: Get an list of order information from the Partner system
/orders
Query parameters:
Parameter | Description | Type | Default Value | Required |
---|---|---|---|---|
venue
|
Venue where the event take place | String | Yes | |
inventory_token
|
Token of reservation | String | No | |
event_id
|
Event identifier | String | No | |
start_date_time
|
UTC date and time of first order | String | No | |
end_date_time
|
UTC date and time of last order | String | No | |
size
|
Page size of the response | Integer | 20 | No |
page
|
Page number | Integer | 1 | No |
Other parameters:
Parameter | In | Description | Type | Default Value | Required |
---|---|---|---|---|---|
X-Correlation-Id
|
header | Unique identifier value that is attached to requests that allow reference to a particular transaction |
String | No |
Response structure:
200 Successful operation
-
orders_info
(array) - No description specified{ array item object }
event_id
(string) - Parnert event idinventory_order
(string) - Partner order referencetickets
(array){array item object}
ticket
(object)price_level_id
(string) - Ticket price level idprice_type_id
(string) - Ticket price type idticket_id
(string) - Ticket idlevel
(string) - Ticket level idsection
(string) - Ticket section idrow
(string) - Row for reserved seat ticket. Won't be present for general admissionseat
(string) - Seat number for reserved seat ticket. Won't be present for general admission
price_without_fees
(string) - Price without fees (mandatory for order response)
-
page
(object) - No description specifiedsize
(integer) - size of pagetotal_elements
(integer) - total number of available elementstotal_pages
(integer) - total number of available pagesnumber
(integer) - current page number counted from 1
400 Bad request (error description in response body)
-
id
(integer) - 1 - Syntax error -
message
(string) - No description specified
401 Unauthorized (the request has not been applied because it lacks valid authentication credentials)
403 Forbidden (resource cannot be accessed)
410 Unsuccessful operation (error description in response body)
-
id
(integer)-101 - Invalid venue id108 - Invalid event id214...- 101 - Invalid venue id 108 - Invalid event id 214 - Invalid size page 215 - Invalid page number 305 - Event not currently available 314 - Reservation has not been found 317 - Venue not currently available
-
message
(string) - No description specified
500 Internal error
Authorization:
3p_auth: runtime:3p-system
Examples:
Retrieve information of an order with the inventory token
Retrieve information of orders from an event and a period
Order Request (Inventory Commit)
Method: POST
Summary: Order Request (Inventory Commit)
Description: Create an order in the Partner ticketing system
/orders
Other parameters:
Parameter | In | Description | Type | Default Value | Required |
---|---|---|---|---|---|
X-Correlation-Id
|
header | Unique identifier value that is attached to requests that allow reference to a particular transaction |
String | No | |
request
|
body | Information to create an orderOrderRequestshow all |
Yes |
Response structure:
200 Successful operation (it has been processed but order not created).
-
event_id
(string) - Parnert event id -
inventory_order
(string) - Partner order reference -
tickets
(array) - No description specified{ array item object }
ticket
(object)price_level_id
(string) - Ticket price level idprice_type_id
(string) - Ticket price type idticket_id
(string) - Ticket idlevel
(string) - Ticket level idsection
(string) - Ticket section idrow
(string) - Row for reserved seat ticket. Won't be present for general admissionseat
(string) - Seat number for reserved seat ticket. Won't be present for general admission
price_without_fees
(string) - Price without fees (mandatory for order response)
201 Successful operation (the order has been successfully created).
-
event_id
(string) - Parnert event id -
inventory_order
(string) - Partner order reference -
tickets
(array) - No description specified{ array item object }
ticket
(object)price_level_id
(string) - Ticket price level idprice_type_id
(string) - Ticket price type idticket_id
(string) - Ticket idlevel
(string) - Ticket level idsection
(string) - Ticket section idrow
(string) - Row for reserved seat ticket. Won't be present for general admissionseat
(string) - Seat number for reserved seat ticket. Won't be present for general admission
price_without_fees
(string) - Price without fees (mandatory for order response)
400 Bad request (error description in response body)
-
id
(integer)-1 - Syntax error112 - Invalid payment method ty...- 1 - Syntax error 112 - Invalid payment method type 113 - Invalid delivery method type 206 - Invalid order id 207 - Invalid inventory tickets amount 208 - Invalid inventory tickets quantity 209 - Invalid payment card number 210 - Invalid email 211 - Invalid country id
-
message
(string) - No description specified
401 Unauthorized (the request has not been applied because it lacks valid authentication credentials)
403 Forbidden (resource cannot be accessed)
410 Unsuccessful operation (error description in response body)
-
id
(integer)-305 - Event not currently available311 - Reserv...- 305 - Event not currently available 311 - Reservation has already released 312 - Reservation has expired 314 - Reservation has not been found 316 - Exceeded the number of tickets for customer
-
message
(string) - No description specified
500 Internal error
Authorization:
3p_auth: runtime:3p-system
Examples:
Confirmation of an anonymous booking paid in cash and collected at the time of purchase
Confirmation of a nominal booking paid with card and "print at home" collection
Order Status
Method: GET
Summary: Order Status
Description: Get the order status from the Partner system
/orders/{inventory_order}
URL parameters:
Parameter | Description | Type | Default Value | Required |
---|---|---|---|---|
inventory_order
|
Order reference | String | Yes |
Other parameters:
Parameter | In | Description | Type | Default Value | Required |
---|---|---|---|---|---|
X-Correlation-Id
|
header | Unique identifier value that is attached to requests that allow reference to a particular transaction |
String | No |
Response structure:
200 Successful operation
-
event_id
(string) - Parnert event id -
inventory_order
(string) - Partner order reference -
tickets
(array) - No description specified{ array item object }
ticket
(object)price_level_id
(string) - Ticket price level idprice_type_id
(string) - Ticket price type idticket_id
(string) - Ticket idlevel
(string) - Ticket level idsection
(string) - Ticket section idrow
(string) - Row for reserved seat ticket. Won't be present for general admissionseat
(string) - Seat number for reserved seat ticket. Won't be present for general admission
printable
(boolean) - Ticket is printable.printed
(boolean) - Ticket was printed.cancellable
(boolean) - Ticket is cancellable.cancelled
(boolean) - Ticket was cancelled.
400 Bad request (error description in response body)
-
id
(integer) - 1 - Syntax error -
message
(string) - No description specified
401 Unauthorized (the request has not been applied because it lacks valid authentication credentials)
403 Forbidden (resource cannot be accessed)
404 Not found (the order reference has not been found)
410 Unsuccessful operation (error description in response body)
-
id
(integer) - 305 - Event not currently available -
message
(string) - No description specified
500 Internal error
Authorization:
3p_auth: runtime:3p-system
Examples:
Order status for an order of 1 reserved seat tickets
Order status for an order of 2 general admission tickets
Order Print, Order Print Rollback or Order Cancel
Method: POST
Summary: Order Print, Order Print Rollback or Order Cancel
Description: Update an order to print, to rollback the print or to cancel
/orders/{inventory_order}
URL parameters:
Parameter | Description | Type | Default Value | Required |
---|---|---|---|---|
inventory_order
|
Order reference | String | Yes |
Other parameters:
Parameter | In | Description | Type | Default Value | Required |
---|---|---|---|---|---|
X-Correlation-Id
|
header | Unique identifier value that is attached to requests that allow reference to a particular transaction |
String | No | |
request
|
body | Information to update an orderOrderUpdateRequestshow all |
Yes |
Response structure:
200 Successful operation (the action has been processed but not modified).
-
event_id
(string) - Parnert event id -
inventory_order
(string) - Partner order reference echoed -
tickets
(array) - No description specified{ array item object }
ticket
(object)price_level_id
(string) - Ticket price level idprice_type_id
(string) - Ticket price type idticket_id
(string) - Ticket idlevel
(string) - Ticket level idsection
(string) - Ticket section idrow
(string) - Row for reserved seat ticket. Won't be present for general admissionseat
(string) - Seat number for reserved seat ticket. Won't be present for general admission
status
(object)id
(integer) - 0 - Successful (no error) 103 - Invalid level id 104 - Invalid section id 105 - Invalid row 106 - Invalid seat 107 - Invalid price level id 109 - Invalid price type id 114 - Invalid ticket idmessage
(string)
entry_code
(string) - Ticket barcode. Required for "PRINT".print_messages
(array) - Extra info to print on the ticket[ "string" ]
- No description specified
-
action
(string)-Action echoed."PRINT" - to set the sta...- Action echoed. "PRINT" - to set the status of the tickets to printed. "ROLLBACK_PRINT" - to reset the status to printable (for printing problems) "CANCEL" - to cancel the order
201 Successful operation (the action has been successfully e).
-
event_id
(string) - Parnert event id -
inventory_order
(string) - Partner order reference echoed -
tickets
(array) - No description specified{ array item object }
ticket
(object)price_level_id
(string) - Ticket price level idprice_type_id
(string) - Ticket price type idticket_id
(string) - Ticket idlevel
(string) - Ticket level idsection
(string) - Ticket section idrow
(string) - Row for reserved seat ticket. Won't be present for general admissionseat
(string) - Seat number for reserved seat ticket. Won't be present for general admission
status
(object)id
(integer) - 0 - Successful (no error) 103 - Invalid level id 104 - Invalid section id 105 - Invalid row 106 - Invalid seat 107 - Invalid price level id 109 - Invalid price type id 114 - Invalid ticket idmessage
(string)
entry_code
(string) - Ticket barcode. Required for "PRINT".print_messages
(array) - Extra info to print on the ticket[ "string" ]
- No description specified
-
action
(string)-Action echoed."PRINT" - to set the sta...- Action echoed. "PRINT" - to set the status of the tickets to printed. "ROLLBACK_PRINT" - to reset the status to printable (for printing problems) "CANCEL" - to cancel the order
400 Bad request (error description in response body)
-
id
(integer)-1 - Syntax error108 - Invalid event id110 - Inv...- 1 - Syntax error 108 - Invalid event id 110 - Invalid language 111 - Invalid channel type 204 - Invalid action
-
message
(string) - No description specified
401 Unauthorized (the request has not been applied because it lacks valid authentication credentials)
403 Forbidden (resource cannot be accessed)
404 Not found (the order reference has not been found)
410 Unsuccessful operation (error description in response body)
-
id
(integer)-304 - Exceeded the allowed time limit305 - Even...- 304 - Exceeded the allowed time limit 305 - Event not currently available 308 - Unauthorized sales channel 309 - The request does not correspond to the order 310 - Partial requests are not allowed
-
message
(string) - No description specified
500 Internal error
Authorization:
3p_auth: runtime:3p-system
Examples:
Full order print (2 general admission tickets)
Partial order print (2 general admission tickets)
Full order print (the 3rd party system returns an error)
Report a printing error
Total cancellation of an order with 2 general admission tickets
Total cancellation of an order with 2 reserved seat tickets
Partial cancellation of an order with 2 general admission tickets
Partial cancellation of an order with 2 reserved seat tickets
Retrieves a specific logo.
Method: GET
Summary: Retrieves a specific logo.
Description: Get a logo from the Partner system
/logos/{logo_id}
URL parameters:
Parameter | Description | Type | Default Value | Required |
---|---|---|---|---|
logo_id
|
Logo identifier | String | Yes |
Other parameters:
Parameter | In | Description | Type | Default Value | Required |
---|---|---|---|---|---|
X-Correlation-Id
|
header | Unique identifier value that is attached to requests that allow reference to a particular transaction |
String | No |
Response structure:
200 Successful operation
-
logo_id
(string) - Logo identifier -
type
(string) - Logo identifier -
image
(string) - The base64 encoded string of the image itself. The maximum size of logo is 1MB -
description
(string) - Description of the logo
400 Bad request (error description in response body)
-
id
(integer) - 1 - Syntax error -
message
(string) - No description specified
401 Unauthorized (the request has not been applied because it lacks valid authentication credentials)
403 Forbidden (resource cannot be accessed)
404 Not found (the logo has not been found)
500 Internal error
Authorization:
3p_auth: ingestion:3p-system
Retrieves a specific tax plan.
Method: GET
Summary: Retrieves a specific tax plan.
Description: Get a tax plan from the Partner system
/tax-plans/{tax_plan_id}
URL parameters:
Parameter | Description | Type | Default Value | Required |
---|---|---|---|---|
tax_plan_id
|
Tax plan identifier | String | Yes |
Other parameters:
Parameter | In | Description | Type | Default Value | Required |
---|---|---|---|---|---|
X-Correlation-Id
|
header | Unique identifier value that is attached to requests that allow reference to a particular transaction |
String | No |
Response structure:
200 Successful operation
-
tax_plan_id
(string) - Tax plan identifier -
names
(array) - No description specified{ array item object }
language
(string) - ISO language and country codes (Example "es-ES"). Language for some request parameters.value
(string) - Tax plan value
-
tax_plan_rate
(string) - Tax plan rate
400 Bad request (error description in response body)
-
id
(integer) - 1 - Syntax error -
message
(string) - No description specified
401 Unauthorized (the request has not been applied because it lacks valid authentication credentials)
403 Forbidden (resource cannot be accessed)
404 Not found (the logo has not been found)
500 Internal error
Authorization:
3p_auth: ingestion:3p-system
Available authorizations:
3p_auth
type: oauth2
tokenUrl: http://partner.com/tm-3pi-api/login
flow: application
scopes:
check:3p-system: TM can check the Partner system
ingestion:3p-system: TM can manage manifests & events from the Partner system
runtime:3p-system: TM can manage bookings & orders to the Partner system
Technical requirements
This document describes the aspects related to service guarantee, environments and all those technical aspects necessary for the operation of the integration solution.
1. Service guarantee
A Service Level Agreement will be defined between the owner of the solution that implements the TM 3rd party integration API (the partner or service provider) and Ticketmaster (the client) in order to ensure the quality of the service.
The SLA will be based on the different topics that are described below:
A. System availability
This availability refers to the period of time when the system is fully operational. A failure in an item that has its back-up and that does not interrupt the service is not considered unavailability. The following cases are excluded from this availability: stops for planned maintenance, emergency or force majeure stops and stops at the customer’s request.
B. Performance
The performance will be assessed through measurements like response time and processing rate (transactions/sec).
C. Disaster recovery plan
This plan refers to the recovery time and acceptable level of service that must be achieved after a disaster or interruption to avoid unacceptable consequences for the business. The backup policy will be one of the key points of the plan.
D. On-call service
The partner will establish a 24x7 on-call service in order to ensure the resolution of possible incidents that may occur.
Depending on the different levels of severity, the response and resolution times will be defined. These levels will be different in relation to the affected domain.
DOMAIN | LEVEL OF SEVERITY |
---|---|
Authentication services | HIGH |
Ingestion services | MEDIUM |
Availability services | LOW |
Runtime services | HIGH |
2. Environments
Regarding the development process, we must have different environments in order to manage the software during its life cycle before reaching the final production environment.
We will define an environment as a system made up of infrastructure and software, as well as the corresponding configuration.
Minimum required work environments:
- Development environment
It’s the environment where we will develop, most often it is a local environment so that several people can be working without bothering.
Only when the developer completes a perfectly functional code and after carrying out the necessary tests to ensure that the software developed has enough stability, can be transferred to the integration environment.
- Integration environment
This environment allows the work of the different developers to be integrated, resulting in an updated and consolidated version of the code and allows the integration tests and their validation to be carried out before sending the code to the pre-production environment.
- Pre-production environment
Here the user acceptance tests will be carried out on the software, aiming to locate any error before reaching the production environment and thus avoid the problems derived from them.
This environment will be fully functional at the user level, and it should be as similar as possible to the production environment.
- Production environment
It’s the environment that customers will use. The above environments are designed to get here as efficiently as possible while ensuring reliability.
The partner shall provide the following information for the integration, pre-production and production environments:
ENVIRONMENT DATA | Integration | Pre-production | Production |
---|---|---|---|
URL | |||
Username | |||
Credentials | |||
Venue code |
3. Other requirements
- Barcodes
While we are able to print the partner’s barcode on tickets, it will be done so using our supported symbologies. If the partner supplies an access control system, that system needs to be able to read at least one of our symbologies. We support Code 39, Code 128, and QR codes.
- Search types (Best Available and Specific seats)
The API allows TM to sell tickets through seat selection (identifying the specific desired seats) and through best available selection (customer indicates quantity of seats and the system offers the best seats according to their request). At a minimum, the partner’s system is required to support best available selection.