TM 3RD PARTY INTEGRATION API

V 0.22.0

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.

introduction

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
  • Reconsolidation services: to synchronize the status of the transactions if an error happen

Features not supported by this version: Shopping cart, Promotions management, Invoiced sales / reservations, Season tickets, Resale, External events as an upsell, Attendee name, etc.

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.

introduction

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.

introduction

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

POST http://partner.com/tm-3pi-api/login
    grant_type=client_credentials&  
    client_id=CLIENT_ID&  
    client_secret=CLIENT_SECRET  

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

{  
“scope”: https://partner.com/tm-3pi-api/v1/.*,  
“access_token”: “EEwJ6tF9x5WCIZDYzyZGaz6Khbw”,  
“token_type”: “Bearer”,  
“expires_in”: 28800  
}  

Resource server (API server)

Request

Property Type Description
Authorization String The value must be “Bearer” followed by the access token.

Example

curl –X POST  "http://partner.com/tm-3pi-api/v1/$SERVICE" \  
-H "Authorization: Bearer ACCESS_TOKEN"  

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).

manifest

Basically, 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:

menifest-example-1

This manifest is composed for 7 areas (one general admission and 6 reserved seats) and 3 price levels (A, B and C).

menifest-example-2

Events

An event is a public entertainment pending to take place in a venue.

Basically, 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.
  • Timestamp. It will be used to manage the validity of the information.

3rd-party-api-events

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)

3rd-party-api-ingestion-services

Importation process

Basically there are two types of importation processes:

3rd-party-api-importation

Importation 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.

Importation 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.

3rd-party-api-availability

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.

3rd-party-api-avail-services

Availability synchronization process

Basically there are two types of availability synchronization processes:

3rd-party-availability-synchronization

Total 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.

3rd-party-booking-and-orders

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

3rd-party-state-graph-reservation

Transactional process

3rd-party-transaction-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.

Reconsolidation


The reconsolidation 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.

3rd-party-reconsolidation

There are two critical messages that require the reconsolidation process:

3rd-party-reconsolidation-messages

Reconsolidation services

Service that will manage the following operation:

MESSAGE SERVICE DESCRIPTION
RECONSOLIDATION 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:

3rd-party-reconsolidation-process

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

Compare Version 0.16.0 and 0.21.0

Event

A public entertainment pending to take place

get /events Get an event list from the Partner system
get /events/{event_id} Get an event from the Partner system
get /events/{event_id}/availability Get the event availability from the Partner system.

Manifest

A seat configuration associated to an event

get /manifests/{manifest_id} Get a manifest from the Partner system

Booking

An amount of tickets reserved in order to buy them

post /bookings Create a reservation in the Partner ticketing system
delete /bookings/{inventory_token} Release a reservation in the Partner system

Order

An amount of tickets purchased

get /orders Get an list of order information from the Partner system
post /orders Create an order in the Partner ticketing system
get /orders/{inventory_order} Get the order status from the Partner system
post /orders/{inventory_order} 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

Examples:

Successful sync

Request Response

GET /healhtcheck HTTP/1.1
Host: partner.com
X-Target-URI: https://partner.com
Connection: Keep-Alive
HTTP/1.1 200 OK

{
  "id": 0,
  "message": "Successful"
}

Synchronization required

Request Response

GET /healhtcheck HTTP/1.1
Host: partner.com
X-Target-URI: https://partner.com
Connection: Keep-Alive
HTTP/1.1 200 OK

{
  "id": 902,
  "message": "Synchronization required",
  "venues_to_sync": ["venue1", "venue2"]
}

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 identifier
        • last_modification(string) - UTC date and time of the event last modification
        • organization_info(object)
          • promoter_id(string) - Promoter identifier (tax identification number)
          • promoter_name(string) - Promoter name
        • manifest_id(string) - Manifest identifier
        • text_infos(array)
          • {array item object}
            • lang(string) - ISO language and country codes (Example "es-ES").
            • name(string) - Event name or title
            • description(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 tickets
        • genre_info(array)
          • {array item object}
            • genre_id(string) - Event genre identifier
            • genre_name(string) - Event genre name
        • date_time(string) - Event UTC date and time
        • date_time_properties(object)
          • date_hidden(boolean) - True if the event date can't be showed
          • time_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 time
        • doors_date_time_properties(object)
          • date_hidden(boolean) - True if the doors date can't be showed
          • time_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 identifier
            • text_infos(array)
              • {array item object}
                • lang(string) - ISO language and country codes (Example "es-ES").
                • name(string) - Price level name
                • description(string) - Price level description
        • price_types(array) - list of price types
          • {array item object}
            • id(string) - Price type identifier
            • regular(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 type
            • text_infos(array)
              • {array item object}
                • lang(string) - ISO language and country codes (Example "es-ES").
                • name(string) - Price type name
                • description(string) - Price type description
                • additional_info(string) - Price type additional info
                • printed_description(string) - Price type printed description
        • face_value_prices(array) - list of prices
          • {array item object}
            • price_period(object)
              • id(string) - Period id
              • start_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 identifier
                • price_type_id(string) - Price type identifier
                • amount(string) - Price for these price level and price type (Minor currency units ex. 2000 = 20EUR)
      • status(string: enum) - Event status (no letter casing)
        • ON_SALE
        • CANCELED
        • DELETED
  • page(object) - No description specified
    • size(integer) - size of page
    • total_elements(integer) - total number of available elements
    • total_pages(integer) - total number of available pages
    • number(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

Examples:

Retrieve events of "000001" venue since "July 19th at 14:00"

Request Response

GET /events?venue=000001&last_modification=2019-07-19T14:00:44Z&size=10&page=1 HTTP/1.1
Host: partner.com
X-Target-URI: https://partner.com
Connection: Keep-Alive
HTTP/1.1 200 OK

{
  "events_info":[
    {
      "event":{
        "event_id":"000001003000007",
        "last_modification":"2019-07-31T09:38:21Z",
        "organization_info":{
          "promoter_id":"00000001 R",
          "promoter_name":"EMPRESA PATROCINADORA"
        },
        "manifest_id":"000001003",
        "text_infos":[
          {
            "lang":"es-es",
            "name":"Festival Flamenco on Fire 2019 Sara Baras",
            "description":"Prohibido Menores 16 Años\r\n"
          }
        ],
        "maximum_tickets_quantity":6,
        "genre_info":[
          {
            "genre_id":"009",
            "genre_name":"MUSICAL"
          }
        ],
        "date_time":"2019-09-15T19:00:00Z",
        "visibility":{
          "default_visibility":"VISIBLE"
        },
        "price_levels":[
          {
            "id":"011 01",
            "text_infos":[
              {
                "lang":"es-es",
                "name":"011 01",
                "description":"GRADA A"
              }
            ]
          },
          {
            "id":"011 02",
            "text_infos":[
              {
                "lang":"es-es",
                "name":"011 02",
                "description":"GRADA A Minusvàlids"
              }
            ]
          },
          {
            "id":"012 01",
            "text_infos":[
              {
                "lang":"es-es",
                "name":"012 01",
                "description":"GRADA B"
              }
            ]
          },
          {
            "id":"013 01",
            "text_infos":[
              {
                "lang":"es-es",
                "name":"013 01",
                "description":"GRADA C"
              }
            ]
          },
          {
            "id":"014 01",
            "text_infos":[
              {
                "lang":"es-es",
                "name":"014 01",
                "description":"GRADA D"
              }
            ]
          }
        ],
        "price_types":[
          {
            "id":"0000000",
            "regular":true,
            "text_infos":[
              {
                "lang":"es-es",
                "name":"TARIFA GEN",
                "description":"TARIFA GENERAL",
                "printed_description":"TARIFA GENERAL"
              }
            ]
          },
          {
            "id":"0001000",
            "regular":false,
            "text_infos":[
              {
                "lang":"es-es",
                "name":"DESCUENTO ",
                "description":"DESCUENTO 10%",
                "printed_description":"DESCUENTO 10%"
              }
            ]
          }
        ],
        "face_value_prices":[
          {
            "price_period":{
              "id":"Periodo de venta",
              "start_date_time":"2019-05-27T22:00:00Z",
              "end_date_time":"2019-09-15T19:00:00Z"
            },
            "prices":[
              {
                "price_level_id":"011 01",
                "price_type_id":"0000000",
                "amount":"1500"
              },
              {
                "price_level_id":"011 01",
                "price_type_id":"0001000",
                "amount":"1350"
              },
              {
                "price_level_id":"011 02",
                "price_type_id":"0000000",
                "amount":"1500"
              },
              {
                "price_level_id":"011 02",
                "price_type_id":"0001000",
                "amount":"1350"
              },
              {
                "price_level_id":"012 01",
                "price_type_id":"0000000",
                "amount":"1500"
              },
              {
                "price_level_id":"012 01",
                "price_type_id":"0001000",
                "amount":"1350"
              },
              {
                "price_level_id":"013 01",
                "price_type_id":"0000000",
                "amount":"1500"
              },
              {
                "price_level_id":"013 01",
                "price_type_id":"0001000",
                "amount":"1350"
              },
              {
                "price_level_id":"014 01",
                "price_type_id":"0000000",
                "amount":"1500"
              },
              {
                "price_level_id":"014 01",
                "price_type_id":"0001000",
                "amount":"1350"
              }
            ]
          }
        ]
      },
      "status":"ON_SALE"
    }
  ],
  "page":{
    "size":1,
    "total_elements":1,
    "total_pages":1,
    "number":1
  }
}

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 specified
    • event_id(string) - Event identifier
    • last_modification(string) - UTC date and time of the event last modification
    • organization_info(object)
      • promoter_id(string) - Promoter identifier (tax identification number)
      • promoter_name(string) - Promoter name
    • manifest_id(string) - Manifest identifier
    • text_infos(array)
      • {array item object}
        • lang(string) - ISO language and country codes (Example "es-ES").
        • name(string) - Event name or title
        • description(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 tickets
    • genre_info(array)
      • {array item object}
        • genre_id(string) - Event genre identifier
        • genre_name(string) - Event genre name
    • date_time(string) - Event UTC date and time
    • date_time_properties(object)
      • date_hidden(boolean) - True if the event date can't be showed
      • time_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 time
    • doors_date_time_properties(object)
      • date_hidden(boolean) - True if the doors date can't be showed
      • time_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 identifier
        • text_infos(array)
          • {array item object}
            • lang(string) - ISO language and country codes (Example "es-ES").
            • name(string) - Price level name
            • description(string) - Price level description
    • price_types(array) - list of price types
      • {array item object}
        • id(string) - Price type identifier
        • regular(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 type
        • text_infos(array)
          • {array item object}
            • lang(string) - ISO language and country codes (Example "es-ES").
            • name(string) - Price type name
            • description(string) - Price type description
            • additional_info(string) - Price type additional info
            • printed_description(string) - Price type printed description
    • face_value_prices(array) - list of prices
      • {array item object}
        • price_period(object)
          • id(string) - Period id
          • start_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 identifier
            • price_type_id(string) - Price type identifier
            • amount(string) - Price for these price level and price type (Minor currency units ex. 2000 = 20EUR)
  • 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

Examples:

Update information of "000002002000006" event

Request Response

GET /events/000002002000006?last_modification=2019-02-19T14:00:44Z HTTP/1.1
Host: partner.com
X-Target-URI: https://partner.com
Connection: Keep-Alive
HTTP/1.1 200 OK

{
  "event":{
    "event_id":"000002002000006",
    "last_modification":"2019-07-29T06:14:31Z",
    "organization_info":{
      "promoter_id":"00000003 A",
      "promoter_name":"CAMBIO PROMOTOR"
    },
    "manifest_id":"000002002",
    "text_infos":[
      {
        "lang":"es-es",
        "name":"Anthrax - Testament 4",
        "description":"Prohibido Menores 16 Años\r\nAnthrax es una banda estadounidense de thrash metal, formada en Nueva York en 1981. 4"
      }
    ],
    "maximum_tickets_quantity":6,
    "genre_info":[
      {
        "genre_id":"012",
        "genre_name":"CONCIERTO"
      }
    ],
    "date_time":"2019-10-10T18:00:00Z",
    "visibility":{
      "default_visibility":"VISIBLE"
    },
    "price_levels":[
      {
        "id":"011 01",
        "text_infos":[
          {
            "lang":"es-es",
            "name":"011 01",
            "description":"GRADA A"
          }
        ]
      },
      {
        "id":"011 02",
        "text_infos":[
          {
            "lang":"es-es",
            "name":"011 02",
            "description":"GRADA A Minusvàlids"
          }
        ]
      },
      {
        "id":"012 01",
        "text_infos":[
          {
            "lang":"es-es",
            "name":"012 01",
            "description":"GRADA B"
          }
        ]
      },
      {
        "id":"013 01",
        "text_infos":[
          {
            "lang":"es-es",
            "name":"013 01",
            "description":"GRADA C"
          }
        ]
      },
      {
        "id":"014 01",
        "text_infos":[
          {
            "lang":"es-es",
            "name":"014 01",
            "description":"GRADA D"
          }
        ]
      }
    ],
    "price_types":[
      {
        "id":"0003000",
        "regular":true,
        "text_infos":[
          {
            "lang":"es-es",
            "name":"TARIFA GEN",
            "description":"TARIFA GENERAL",
            "printed_description":"TARIFA GENERAL"
          }
        ]
      },
      {
        "id":"0004000",
        "regular":false,
        "text_infos":[
          {
            "lang":"es-es",
            "name":"DESCUENTO ",
            "description":"DESCUENTO 5%",
            "printed_description":"DESCUENTO 5%"
          }
        ]
      }
    ],
    "face_value_prices":[
      {
        "price_period":{
          "id":"Periodo de venta",
          "start_date_time":"2019-07-12T08:00:00Z",
          "end_date_time":"2019-10-10T18:00:00Z"
        },
        "prices":[
          {
            "price_level_id":"011 01",
            "price_type_id":"0003000",
            "amount":"2000"
          },
          {
            "price_level_id":"011 01",
            "price_type_id":"0004000",
            "amount":"1900"
          },
          {
            "price_level_id":"011 02",
            "price_type_id":"0003000",
            "amount":"2000"
          },
          {
            "price_level_id":"011 02",
            "price_type_id":"0004000",
            "amount":"1900"
          },
          {
            "price_level_id":"012 01",
            "price_type_id":"0003000",
            "amount":"2200"
          },
          {
            "price_level_id":"012 01",
            "price_type_id":"0004000",
            "amount":"2090"
          },
          {
            "price_level_id":"013 01",
            "price_type_id":"0003000",
            "amount":"2500"
          },
          {
            "price_level_id":"013 01",
            "price_type_id":"0004000",
            "amount":"2375"
          },
          {
            "price_level_id":"014 01",
            "price_type_id":"0003000",
            "amount":"2200"
          },
          {
            "price_level_id":"014 01",
            "price_type_id":"0004000",
            "amount":"2090"
          }
        ]
      }
    ]
  },
  "status":"ON_SALE"
}

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 id
      • section_id(string) - Section id
      • price_level_id(string) - Price level or price category for all seats of the area
      • quantities(object)
        • available(integer) - Number of available seats in the area
        • unavailable(integer) - Number of unavailable seats in the area
  • rs_areas(array) - No description specified
    • { array item object }
      • level_id(string) - Level id
      • section_id(string) - Section id
      • quantities(object)
        • available(integer) - Number of available seats in the area
        • unavailable(integer) - Number of unavailable seats in the area
      • rows(array)
        • {array item object}
          • row(string) - row label
          • seats(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"

Request Response

GET /events/000002002000007/availability?last_modification=2019-09-12T11:17:19Z&section=001301p&avail_level=detail HTTP/1.1
Host: partner.com
X-Target-URI: https://partner.com
Connection: Keep-Alive
HTTP/1.1 200 OK

{
  "venue_id":"000002",
  "manifest_id":"000002002",
  "rs_areas":[
    {
      "section_id":"0013 01",
      "quantities":{
        "available":"72",
        "unavailable":"6"
      },
      "rows":[
        {
          "row":"01",
          "seats":{
            "available":[
              "005",
              "010",
              "012"
            ]
          }
        },
        {
          "row":"02",
          "seats":{
            "available":[
              "002",
              "001",
              "014",
              "012",
              "010",
              "003",
              "007",
              "006",
              "005",
              "004",
              "008"
            ]
          }
        }
      ]
    }
  ]
}

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 id
      • section_id(string) - Section id
      • price_level_id(string) - Price level or price category for all seats of the area
      • free_text(string) - Free text to include on tickets, will apply to all seats of the area
      • capacity(integer) - Total capacity for the area
  • rs_areas(array) - No description specified
    • { array item object }
      • level_id(string) - Level id
      • section_id(string) - Section id
      • price_level_id(string) - Default price level or price category for all seats of the area
      • free_text(string) - Default free text to include on tickets, will apply to all seats of the area
      • rows(array)
        • {array item object}
          • row(string) - row label
          • position_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 label
              • killed(boolean) - True if the seat is killed
              • free_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 identifier
      • description(string) - Section description
  • levels(array) - No description specified
    • { array item object }
      • id(string) - Level identifier
      • description(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

Examples:

Retrieve information of manifest "000001002"

Request Response

GET /manifests/000001002 HTTP/1.1
Host: partner.com
X-Target-URI: https://partner.com
Connection: Keep-Alive
HTTP/1.1 200 OK

{
  "manifest_id":"000001002",
  "description":"Sala Mixta                              ",
  "venue_id":"000001",
  "total_capacity":496,
  "ga_areas":[
    {
      "level_id":"1",
      "section_id":"1012 01",
      "price_level_id":"012 01",
      "capacity":100
    }
  ],
  "rs_areas":[
    {
      "level_id":"1",
      "section_id":"0011 01",
      "price_level_id":"011 01",
      "rows":[
        {
          "row":"01",
          "position_y":18,
          "seats":[
            {
              "seat":"001",
              "position_x":13
            },
            {
              "seat":"022",
              "position_x":1
            },
            {
              "seat":"003",
              "position_x":14
            },
            {
              "seat":"004",
              "position_x":10
            },
            {
              "seat":"005",
              "position_x":15
            },
            {
              "seat":"006",
              "position_x":9
            }
          ]
        }
      ]
    }
  ],
  "sections":[
    {
      "id":"0011 01",
      "description":"Patio de Butacas"
    },
    {
      "id":"1012 01",
      "description":"Anfiteatro"
    }
  ],
  "levels":[
    {
      "id":"1",
      "description":"Planta 1"
    }
  ],
  "price_levels":[
    {
      "id":"011 01"
    },
    {
      "id":"012 01"
    }
  ]
}

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 reservation
InventoryRequest
show 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 request
      • 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 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 available
        • message(string)
      • non_adjacent(boolean) - True for non adjacent seats
      • alternate(boolean) - True for alternate seats
      • tickets(array)
        • {array item object}
          • price_level_id(string) - Ticket price level id
          • price_type_id(string) - Ticket price type id
          • ticket_id(string) - Ticket id
          • level(string) - Ticket level id
          • section(string) - Ticket section id
          • row(string) - Row for reserved seat ticket. Won't be present for general admission
          • seat(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 request
      • 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 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 available
        • message(string)
      • non_adjacent(boolean) - True for non adjacent seats
      • alternate(boolean) - True for alternate seats
      • tickets(array)
        • {array item object}
          • price_level_id(string) - Ticket price level id
          • price_type_id(string) - Ticket price type id
          • ticket_id(string) - Ticket id
          • level(string) - Ticket level id
          • section(string) - Ticket section id
          • row(string) - Row for reserved seat ticket. Won't be present for general admission
          • seat(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)

Request Response

POST /bookings HTTP/1.1
Host: partner.com
X-Target-URI: https://partner.com
Connection: Keep-Alive

{
  "language":"es-es",
  "channel_info":{
    "channel_type":"INTERNET",
    "sub_channel_name":"WEB regular"
  },
  "event_id":"000001004000004",
  "last_modification":"2019-06-13T12:45:06Z",
  "searches":[
    {
      "index":"1",
      "accept_non_adjacent":false,
      "accept_alternate":[

      ],
      "search_type":"BESTAVAIL",
      "bestavail":{
        "areas":[

        ],
        "price_level_ids":[
          "011 01",
          "012 01"
        ],
        "price_types":[
          {
            "id":"0001000",
            "quantity":"2"
          }
        ]
      }
    }
  ]
}
HTTP/1.1 200 OK

{
  "event_id":"000001004000004",
  "inventory_token":"000001M000000019_19090915583001",
  "inventory_ttl":"570",
  "search_results":[
    {
      "search_index":"1",
      "status":{
        "id":"0",
        "message":"Successful (no error)"
      },
      "non_adjacent":false,
      "alternate":false,
      "tickets":[
        {
          "price_level_id":"011 01",
          "price_type_id":"0001000",
          "ticket_id":"000000",
          "level":"1",
          "section":"1011 01"
        },
        {
          "price_level_id":"011 01",
          "price_type_id":"0001000",
          "ticket_id":"000001",
          "level":"1",
          "section":"1011 01"
        }
      ]
    }
  ]
}

Booking of 3 general admission tickets (2 adults and 1 child)

Request Response

POST /bookings HTTP/1.1
Host: partner.com
X-Target-URI: https://partner.com
Connection: Keep-Alive

{
  "language":"es-es",
  "channel_info":{
    "channel_type":"INTERNET",
    "sub_channel_name":"WEB regular"
  },
  "event_id":"000001004000004",
  "last_modification":"2019-06-13T12:45:06Z",
  "searches":[
    {
      "index":"1",
      "accept_non_adjacent":false,
      "accept_alternate":[

      ],
      "search_type":"BESTAVAIL",
      "bestavail":{
        "areas":[

        ],
        "price_level_ids":[
          "011 01",
          "012 01"
        ],
        "price_types":[
          {
            "id":"0001000",
            "quantity":"2"
          },
          {
            "id":"0002000",
            "quantity":"1"
          }
        ]
      }
    }
  ]
}
HTTP/1.1 200 OK

{
  "event_id": "000001004000004",
    "inventory_token": "000001M000000019_19090915583099",
    "inventory_ttl": "570",
    "search_results": [
      {
        "search_index": "1",
        "status": {
          "id": "0",
          "message": "Successful (no error)"
        },
        "non_adjacent": false,
        "alternate": false,
        "tickets": [
          {
              "price_level_id": "011 01",
              "price_type_id": "0001000",
              "ticket_id": "000000",
              "level": "1",
              "section": "1011 01"
          },
          {
              "price_level_id": "011 01",
              "price_type_id": "0001000",
              "ticket_id": "000001",
              "level": "1",
              "section": "1011 01"
          },
          {
              "price_level_id": "011 01",
              "price_type_id": "0002000",
              "ticket_id": "000002",
              "level": "1",
              "section": "1011 01"
          }
        ]
      }
    ]
}

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

Request Response

POST /bookings HTTP/1.1
Host: partner.com
X-Target-URI: https://partner.com
Connection: Keep-Alive

{
  "language":"es-es",
  "channel_info":{
    "channel_type":"INTERNET",
    "sub_channel_name":"WEB regular"
  },
  "event_id":"000002002000006",
  "last_modification":"2019-07-29T06:14:31Z",
  "searches":[
    {
      "index":"1",
      "accept_non_adjacent":true,
      "accept_alternate":[
        "AREA"
      ],
      "search_type":"SPECIFIC",
      "specific":{
        "tickets":[
          {
            "price_level_id":"011 01",
            "price_type_id":"0003000",
            "section":"0011 01",
            "row":"03",
            "seat":"002"
          },
          {
            "price_level_id":"011 01",
            "price_type_id":"0004000",
            "section":"0011 01",
            "row":"03",
            "seat":"004"
          }
        ]
      }
    }
  ]
}
HTTP/1.1 200 OK

{
  "event_id":"000002002000006",
  "inventory_token":"000002M000000004_19091011113701",
  "inventory_ttl":570,
  "search_results":[
    {
      "search_index":1,
      "non_adjacent":false,
      "alternate":false,
      "status":{
        "id":0,
        "message":"Successful (no error)"
      },
      "tickets":[
        {
          "price_level_id":"011 01",
          "price_type_id":"0003000",
          "ticket_id":"000032",
          "section":"0011 01",
          "row":"03",
          "seat":"002"
        },
        {
          "price_level_id":"011 01",
          "price_type_id":"0004000",
          "ticket_id":"000031",
          "section":"0011 01",
          "row":"03",
          "seat":"004"
        }
      ]
    }
  ]
}

Booking of 2 reserved seat tickets (1 adults and 1 child), specific seats, no alternative

Request Response

POST /bookings HTTP/1.1
Host: partner.com
X-Target-URI: https://partner.com
Connection: Keep-Alive

{
  "language":"es-es",
  "channel_info":{
    "channel_type":"INTERNET",
    "sub_channel_name":"WEB regular"
  },
  "event_id":"000002002000006",
  "last_modification":"2019-07-29T06:14:31Z",
  "searches":[
    {
      "index":"1",
      "accept_non_adjacent":false,
      "accept_alternate":[

      ],
      "search_type":"SPECIFIC",
      "specific":{
        "tickets":[
          {
            "price_level_id":"011 01",
            "price_type_id":"0003000",
            "section":"0011 01",
            "row":"03",
            "seat":"006"
          },
          {
            "price_level_id":"011 01",
            "price_type_id":"0004000",
            "section":"0011 01",
            "row":"03",
            "seat":"008"
          }
        ]
      }
    }
  ]
}
HTTP/1.1 200 OK

{
  "event_id":"000002002000006",
  "inventory_token":"000002M000000005_19091011162801",
  "inventory_ttl":570,
  "search_results":[
    {
      "search_index":1,
      "non_adjacent":false,
      "alternate":false,
      "status":{
        "id":0,
        "message":"Successful (no error)"
      },
      "tickets":[
        {
          "price_level_id":"011 01",
          "price_type_id":"0003000",
          "ticket_id":"000030",
          "section":"0011 01",
          "row":"03",
          "seat":"006"
        },
        {
          "price_level_id":"011 01",
          "price_type_id":"0004000",
          "ticket_id":"000029",
          "section":"0011 01",
          "row":"03",
          "seat":"008"
        }
      ]
    }
  ]
}

Booking of 2 general admission tickets and 2 reserved seat tickets

Request Response

POST /bookings HTTP/1.1
Host: partner.com
X-Target-URI: https://partner.com
Connection: Keep-Alive

{
  "language":"es-es",
  "channel_info":{
    "channel_type":"INTERNET",
    "sub_channel_name":"WEB regular"
  },
  "event_id":"000001004000004",
  "last_modification":"2019-06-13T12:45:06Z",
  "searches":[
    {
      "index":"1",
      "accept_non_adjacent":false,
      "accept_alternate":[

      ],
      "search_type":"BESTAVAIL",
      "bestavail":{
        "areas":[

        ],
        "price_level_ids":[
          "011 01",
          "012 01"
        ],
        "price_types":[
          {
            "id":"0001000",
            "quantity":"2"
          }
        ]
      }
    },
    {
      "index":"2",
      "accept_non_adjacent":false,
      "accept_alternate":[

      ],
      "search_type":"SPECIFIC",
      "specific":{
        "tickets":[
          {
            "price_level_id":"011 01",
            "price_type_id":"0003000",
            "section":"0011 01",
            "row":"03",
            "seat":"006"
          },
          {
            "price_level_id":"011 01",
            "price_type_id":"0004000",
            "section":"0011 01",
            "row":"03",
            "seat":"008"
          }
        ]
      }
    }
  ]
}
HTTP/1.1 200 OK

{
  "event_id":"000001004000004",
  "inventory_token":"000001M000000019_19090915583001",
  "inventory_ttl":"570",
  "search_results":[
    {
      "search_index":"1",
      "status":{
        "id":"0",
        "message":"Successful (no error)"
      },
      "non_adjacent":false,
      "alternate":false,
      "tickets":[
        {
          "price_level_id":"011 01",
          "price_type_id":"0001000",
          "ticket_id":"000000",
          "level":"1",
          "section":"1011 01"
        },
        {
          "price_level_id":"011 01",
          "price_type_id":"0001000",
          "ticket_id":"000001",
          "level":"1",
          "section":"1011 01"
        }
      ]
    },
    {
      "search_index":2,
      "non_adjacent":false,
      "alternate":false,
      "status":{
        "id":0,
        "message":"Successful (no error)"
      },
      "tickets":[
        {
          "price_level_id":"011 01",
          "price_type_id":"0003000",
          "ticket_id":"000030",
          "section":"0011 01",
          "row":"03",
          "seat":"006"
        },
        {
          "price_level_id":"011 01",
          "price_type_id":"0004000",
          "ticket_id":"000029",
          "section":"0011 01",
          "row":"03",
          "seat":"008"
        }
      ]
    }
  ]
}

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

Request Response

DELETE /bookings/000002M000000003_19091011032201 HTTP/1.1
Host: partner.com
X-Target-URI: https://partner.com
Connection: Keep-Alive
HTTP/1.1 204 Successful operation (the reservation has been successfully released) 

Release an inexistent booking

Request Response

DELETE /bookings/000002M000000003_190910110322012 HTTP/1.1
Host: partner.com
X-Target-URI: https://partner.com
Connection: Keep-Alive
HTTP/1.1 404 Not found (the reservation has not been found)   

Release a booking and the 3rd party returns an internal error

Request Response

DELETE /bookings/000002M000000003_190910110322099 HTTP/1.1
Host: partner.com
X-Target-URI: https://partner.com
Connection: Keep-Alive
HTTP/1.1 500 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 id
      • inventory_order(string) - Partner order reference
      • tickets(array)
        • {array item object}
          • ticket(object)
            • price_level_id(string) - Ticket price level id
            • price_type_id(string) - Ticket price type id
            • ticket_id(string) - Ticket id
            • level(string) - Ticket level id
            • section(string) - Ticket section id
            • row(string) - Row for reserved seat ticket. Won't be present for general admission
            • seat(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 specified
    • size(integer) - size of page
    • total_elements(integer) - total number of available elements
    • total_pages(integer) - total number of available pages
    • number(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

Request Response

GET /orders?venue=000001&inventory_token=000001M000000001_19091116070701 HTTP/1.1
Host: partner.com
X-Target-URI: https://partner.com
Connection: Keep-Alive
HTTP/1.1 200 OK

{
  "orders_info":[
    {
      "event_id":"000001003000007",
      "inventory_order":"000001101301432",
      "tickets":[
        {
          "ticket":{
            "price_level_id":"013 01",
            "price_type_id":"0000000",
            "ticket_id":"000136",
            "level":"1",
            "section":"0013 01",
            "row":"01",
            "seat":"001"
          },
          "price_without_fees":"1500"
        }
      ]
    }
  ],
  "page":{
    "size":1,
    "total_elements":1,
    "total_pages":1,
    "number":1
  }
}

Retrieve information of orders from an event and a period

Request Response

GET /orders?venue=000001&start_date_time=2019-09-10T00:00:44Z&end_date_time=2019-09-12T00:00:44Z&
event_id=000001004000005&size=10&page=1 HTTP/1.1
Host: partner.com
X-Target-URI: https://partner.com
Connection: Keep-Alive
HTTP/1.1 200 OK

{
  "orders_info":[
    {
      "event_id":"000001004000005",
      "inventory_order":"000001141301337",
      "tickets":[
        {
          "ticket":{
            "price_level_id":"011 01",
            "price_type_id":"0001000",
            "ticket_id":"000000",
            "level":"1",
            "section":"1011 01"
          },
          "price_without_fees":"5000"
        },
        {
          "ticket":{
            "price_level_id":"011 01",
            "price_type_id":"0001000",
            "ticket_id":"000001",
            "level":"1",
            "section":"1011 01"
          },
          "price_without_fees":"5000"
        }
      ]
    },
    {
      "event_id":"000001004000005",
      "inventory_order":"000001151301338",
      "tickets":[
        {
          "ticket":{
            "price_level_id":"012 01",
            "price_type_id":"0001000",
            "ticket_id":"005677",
            "level":"1",
            "section":"1012 01"
          },
          "price_without_fees":"3500"
        },
        {
          "ticket":{
            "price_level_id":"012 01",
            "price_type_id":"0001000",
            "ticket_id":"005780",
            "level":"1",
            "section":"1012 01"
          },
          "price_without_fees":"3500"
        },
        {
          "ticket":{
            "price_level_id":"012 01",
            "price_type_id":"0002000",
            "ticket_id":"005781",
            "level":"1",
            "section":"1012 01"
          },
          "price_without_fees":"1750"
        },
        {
          "ticket":{
            "price_level_id":"012 01",
            "price_type_id":"0002000",
            "ticket_id":"005782",
            "level":"1",
            "section":"1012 01"
          },
          "price_without_fees":"1750"
        }
      ]
    }
  ],
  "page":{
    "size":2,
    "total_elements":2,
    "total_pages":1,
    "number":1
  }
}

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 order
OrderRequest
show 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 id
        • price_type_id(string) - Ticket price type id
        • ticket_id(string) - Ticket id
        • level(string) - Ticket level id
        • section(string) - Ticket section id
        • row(string) - Row for reserved seat ticket. Won't be present for general admission
        • seat(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 id
        • price_type_id(string) - Ticket price type id
        • ticket_id(string) - Ticket id
        • level(string) - Ticket level id
        • section(string) - Ticket section id
        • row(string) - Row for reserved seat ticket. Won't be present for general admission
        • seat(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

Request Response

POST /orders/ HTTP/1.1
Host: partner.com
X-Target-URI: https://partner.com
Connection: Keep-Alive

{
  "orderRequest": {
    "inventory_token": "1td9puejvvqa5o76h69o8u0mre",
    "order_info": {
      "order_id": "2-22593",
      "tickets_amount": "100",
      "tickets_quantity": "1"
    },
    "payment_info": {
      "payment_method_type": "CARD",
      "payment_method_name": "Visa PTS",
      "payment_card_number": "****"
    },
    "delivery_info": {
      "delivery_method_type": "PU",
      "delivery_method_name": "Pick-up" 
  }
}
HTTP/1.1 200 OK

{
  "event_id": "000001003000007",
  "inventory_order": "1td9puejvvqa5o76h69o8u0mre",
  "tickets": [
    {
      "ticket": {
        "price_level_id": "011 01",
        "price_type_id": "0000000",
        "ticket_id": "000073",
        "level": "1",
        "section": "0011 01" 
      },
      "price_without_fees": "0100"
    }  
  ]
}

Confirmation of a nominal booking paid with card and "print at home" collection

Request Response

POST /orders/ HTTP/1.1
Host: partner.com
X-Target-URI: https://partner.com
Connection: Keep-Alive

{
  "orderRequest":{
    "inventory_token":"000001M000000017_19090913531101",
    "order_info":{
      "order_id":"101-2343965",
      "tickets_amount":"1500",
      "tickets_quantity":"1"
    },
    "payment_info":{
      "payment_method_type":"CARD",
      "payment_method_name":"Visa",
      "payment_card_number":"****"
    },
    "delivery_info":{
      "delivery_method_type":"PH",
      "delivery_method_name":"Print at home"
    },
    "customer_info":{
      "customer_email":"4f53000d2f8942a46417cd6fcaf42b7c5fdf6c1b2a52ce86e99bef44d69d170e",
      "first_name":"Guillermo",
      "last_name":"Sanchez",
      "address":[
        "Torre Espacio",
        "Paseo de la Castellana, 259D"
      ],
      "postal_code":"28046",
      "city":"Madrid",
      "province":"Madrid",
      "country_id":724,
      "phone":"123456789"
    }
  }
}
HTTP/1.1 200 OK

{
  "event_id":"000001003000007",
  "inventory_order":"000001131301336",
  "tickets":[
    {
      "ticket":{
        "price_level_id":"011 01",
        "price_type_id":"0000000",
        "ticket_id":"000073",
        "level":"1",
        "section":"0011 01",
        "row":"06",
        "seat":"001"
      },
      "price_without_fees":"1500"
    }
  ]
}

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 id
        • price_type_id(string) - Ticket price type id
        • ticket_id(string) - Ticket id
        • level(string) - Ticket level id
        • section(string) - Ticket section id
        • row(string) - Row for reserved seat ticket. Won't be present for general admission
        • seat(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

Request Response

GET /orders/000001131301336 HTTP/1.1
Host: partner.com
X-Target-URI: https://partner.com
Connection: Keep-Alive
HTTP/1.1 200 OK

{
  "event_id":"000001003000007",
  "inventory_order":"000001131301336",
  "tickets":[
    {
      "ticket":{
        "price_level_id":"011 01",
        "price_type_id":"0000000",
        "ticket_id":"000073",
        "level":"1",
        "section":"0011 01",
        "row":"06",
        "seat":"001"
      },
      "printable":true,
      "printed":false,
      "cancellable":true,
      "cancelled":false
    }
  ]
}

Order status for an order of 2 general admission tickets

Request Response

GET /orders/000001141301238 HTTP/1.1
Host: partner.com
X-Target-URI: https://partner.com
Connection: Keep-Alive
HTTP/1.1 200 OK

{
  "event_id":"000001004000005",
  "inventory_order":"000001141301238",
  "tickets":[
    {
      "ticket":{
        "price_level_id":"011 01",
        "price_type_id":"0001000",
        "ticket_id":"000003",
        "level":"1",
        "section":"1011 01"
      },
      "printable":true,
      "printed":false,
      "cancellable":true,
      "cancelled":false
    },
    {
      "ticket":{
        "price_level_id":"011 01",
        "price_type_id":"0001000",
        "ticket_id":"000002",
        "level":"1",
        "section":"1011 01"
      },
      "printable":true,
      "printed":false,
      "cancellable":true,
      "cancelled":false
    }
  ]
}

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 order
OrderUpdateRequest
show 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 id
        • price_type_id(string) - Ticket price type id
        • ticket_id(string) - Ticket id
        • level(string) - Ticket level id
        • section(string) - Ticket section id
        • row(string) - Row for reserved seat ticket. Won't be present for general admission
        • seat(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 id
        • message(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 id
        • price_type_id(string) - Ticket price type id
        • ticket_id(string) - Ticket id
        • level(string) - Ticket level id
        • section(string) - Ticket section id
        • row(string) - Row for reserved seat ticket. Won't be present for general admission
        • seat(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 id
        • message(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)

Request Response

POST /orders/000001141301238 HTTP/1.1
Host: partner.com
X-Target-URI: https://partner.com
Connection: Keep-Alive

{
  "language":"en-us",
  "channel_info":{
    "channel_type":"INTERNET",
    "sub_channel_name":"WEB"
  },
  "event_id":"000001004000005",
  "action":"PRINT"
}
HTTP/1.1 200 OK

{
  "event_id":"000001004000005",
  "inventory_order":"000001141301238",
  "tickets":[
    {
      "ticket":{
        "price_level_id":"011 01",
        "price_type_id":"0001000",
        "ticket_id":"000003",
        "level":"1",
        "section":"1011 01"
      },
      "status":{
        "id":0,
        "message":"Successful (no error)"
      },
      "entry_code":"40005101000406",
      "print_messages":[
        "",
        "Todos los Públicos"
      ]
    },
    {
      "ticket":{
        "price_level_id":"011 01",
        "price_type_id":"0001000",
        "ticket_id":"000002",
        "level":"1",
        "section":"1011 01"
      },
      "status":{
        "id":0,
        "message":"Successful (no error)"
      },
      "entry_code":"40005101000306",
      "print_messages":[
        "",
        "Todos los Públicos"
      ]
    }
  ],
  "action":"PRINT"
}

Partial order print (2 general admission tickets)

Request Response

POST /orders/000001141301238 HTTP/1.1
Host: partner.com
X-Target-URI: https://partner.com
Connection: Keep-Alive

{
  "language":"en-us",
  "channel_info":{
    "channel_type":"INTERNET",
    "sub_channel_name":"WEB"
  },
  "event_id":"000001004000005",
  "tickets":[
    {
      "price_level_id":"011 01",
      "price_type_id":"0001000",
      "ticket_id":"000002",
      "level":"1",
      "section":"1011 01"
    },
    {
      "price_level_id":"011 01",
      "price_type_id":"0001000",
      "ticket_id":"000003",
      "level":"1",
      "section":"1011 01"
    }
  ],
  "action":"ROLLBACK_PRINT"
}
HTTP/1.1 200 OK

{
  "event_id":"000001004000005",
  "inventory_order":"000001141301238",
  "tickets":[
    {
      "ticket":{
        "price_level_id":"011 01",
        "price_type_id":"0001000",
        "ticket_id":"000002",
        "level":"1",
        "section":"1011 01"
      },
      "status":{
        "id":0,
        "message":"Successful (no error)"
      },
      "entry_code":"40005101000307",
      "print_messages":[
        "",
        "Todos los Públicos"
      ]
    }
  ],
  "action":"PRINT"
}

Full order print (the 3rd party system returns an error)

Request Response

POST /orders/000001141301299 HTTP/1.1
Host: partner.com
X-Target-URI: https://partner.com
Connection: Keep-Alive

{
  "language": "en-us",
  "channel_info": {
    "channel_type": "INTERNET",
    "sub_channel_name": "WEB"
  },
  "event_id": "000001004000005",
  "action": "PRINT"
}
HTTP/1.1 410 Unsuccessful operation (error description in response body) 
{
  "id": 305,
  "message": "Event not currently available"
}

Report a printing error

Request Response

POST /orders/000001141301238 HTTP/1.1
Host: partner.com
X-Target-URI: https://partner.com
Connection: Keep-Alive

{
  "language":"en-us",
  "channel_info":{
    "channel_type":"INTERNET",
    "sub_channel_name":"WEB"
  },
  "event_id":"000001004000005",
  "tickets":[
    {
      "price_level_id":"011 01",
      "price_type_id":"0001000",
      "ticket_id":"000002",
      "level":"1",
      "section":"1011 01"
    },
    {
      "price_level_id":"011 01",
      "price_type_id":"0001000",
      "ticket_id":"000003",
      "level":"1",
      "section":"1011 01"
    }
  ],
  "action":"ROLLBACK_PRINT"
}
HTTP/1.1 200 OK

{
  "event_id":"000001004000005",
  "inventory_order":"000001141301238",
  "tickets":[
    {
      "ticket":{
        "price_level_id":"011 01",
        "price_type_id":"0001000",
        "ticket_id":"000002",
        "level":"1",
        "section":"1011 01"
      },
      "status":{
        "id":0,
        "message":"Successful (no error)"
      }
    },
    {
      "ticket":{
        "price_level_id":"011 01",
        "price_type_id":"0001000",
        "ticket_id":"000003",
        "level":"1",
        "section":"1011 01"
      },
      "status":{
        "id":0,
        "message":"Successful (no error)"
      }
    }
  ],
  "action":"ROLLBACK_PRINT"
}

Total cancellation of an order with 2 general admission tickets

Request Response

POST /orders/000001141301238 HTTP/1.1
Host: partner.com
X-Target-URI: https://partner.com
Connection: Keep-Alive

{
  "language":"en-us",
  "channel_info":{
    "channel_type":"INTERNET",
    "sub_channel_name":"WEB"
  },
  "event_id":"000001004000005",
  "action":"CANCEL"
}
HTTP/1.1 200 OK

{
  "event_id":"000001004000005",
  "inventory_order":"000001141301238",
  "tickets":[
    {
      "ticket":{
        "price_level_id":"011 01",
        "price_type_id":"0001000",
        "ticket_id":"000003",
        "level":"1",
        "section":"1011 01"
      },
      "status":{
        "id":0,
        "message":"Successful (no error)"
      }
    },
    {
      "ticket":{
        "price_level_id":"011 01",
        "price_type_id":"0001000",
        "ticket_id":"000002",
        "level":"1",
        "section":"1011 01"
      },
      "status":{
        "id":0,
        "message":"Successful (no error)"
      }
    }
  ],
  "action":"CANCEL"
}

Total cancellation of an order with 2 reserved seat tickets

Request Response

POST /orders/000001111301433 HTTP/1.1
Host: partner.com
X-Target-URI: https://partner.com
Connection: Keep-Alive

{
  "language":"en-us",
  "channel_info":{
    "channel_type":"INTERNET",
    "sub_channel_name":"WEB"
  },
  "event_id":"000001003000007",
  "action":"CANCEL"
}
HTTP/1.1 200 OK

{
  "event_id":"000001003000007",
  "inventory_order":"000001111301433",
  "tickets":[
    {
      "ticket":{
        "price_level_id":"012 01",
        "price_type_id":"0000000",
        "ticket_id":"000114",
        "level":"1",
        "section":"0012 01",
        "row":"03",
        "seat":"010"
      },
      "status":{
        "id":0,
        "message":"Successful (no error)"
      }
    },
    {
      "ticket":{
        "price_level_id":"012 01",
        "price_type_id":"0000000",
        "ticket_id":"000113",
        "level":"1",
        "section":"0012 01",
        "row":"03",
        "seat":"012"
      },
      "status":{
        "id":0,
        "message":"Successful (no error)"
      }
    }
  ],
  "action":"CANCEL"
}

Partial cancellation of an order with 2 general admission tickets

Request Response

POST /orders/000001131301435 HTTP/1.1
Host: partner.com
X-Target-URI: https://partner.com
Connection: Keep-Alive

{
  "language":"en-us",
  "channel_info":{
    "channel_type":"INTERNET",
    "sub_channel_name":"WEB"
  },
  "event_id":"000001004000005",
  "tickets":[
    {
      "price_level_id":"011 01",
      "price_type_id":"0001000",
      "ticket_id":"000002",
      "level":"1",
      "section":"1011 01"
    },
    {
      "price_level_id":"011 01",
      "price_type_id":"0001000",
      "ticket_id":"000003",
      "level":"1",
      "section":"1011 01"
    }
  ],
  "action":"CANCEL"
}
HTTP/1.1 200 OK

{
  "event_id":"000001004000005",
  "inventory_order":"000001131301435",
  "tickets":[
    {
      "ticket":{
        "price_level_id":"011 01",
        "price_type_id":"0001000",
        "ticket_id":"000002",
        "level":"1",
        "section":"1011 01"
      },
      "status":{
        "id":0,
        "message":"Successful (no error)"
      }
    },
    {
      "ticket":{
        "price_level_id":"011 01",
        "price_type_id":"0001000",
        "ticket_id":"000003",
        "level":"1",
        "section":"1011 01"
      },
      "status":{
        "id":0,
        "message":"Successful (no error)"
      }
    }
  ],
  "action":"CANCEL"
}

Partial cancellation of an order with 2 reserved seat tickets

Request Response

POST /orders/000001121301434 HTTP/1.1
Host: partner.com
X-Target-URI: https://partner.com
Connection: Keep-Alive

{
  "language":"en-us",
  "channel_info":{
    "channel_type":"INTERNET",
    "sub_channel_name":"WEB"
  },
  "event_id":"000001003000007",
  "tickets":[
    {
      "price_level_id":"012 01",
      "price_type_id":"0000000",
      "ticket_id":"000113",
      "level":"1",
      "section":"0012 01",
      "row":"03",
      "seat":"012"
    },
    {
      "price_level_id":"012 01",
      "price_type_id":"0000000",
      "ticket_id":"000114",
      "level":"1",
      "section":"0012 01",
      "row":"03",
      "seat":"010"
    }
  ],
  "action":"CANCEL"
}
HTTP/1.1 200 OK

{
  "event_id":"000001003000007",
  "inventory_order":"000001121301434",
  "tickets":[
    {
      "ticket":{
        "price_level_id":"012 01",
        "price_type_id":"0000000",
        "ticket_id":"000113",
        "level":"1",
        "section":"0012 01",
        "row":"03",
        "seat":"012"
      },
      "status":{
        "id":0,
        "message":"Successful (no error)"
      }
    },
    {
      "ticket":{
        "price_level_id":"012 01",
        "price_type_id":"0000000",
        "ticket_id":"000114",
        "level":"1",
        "section":"0012 01",
        "row":"03",
        "seat":"010"
      },
      "status":{
        "id":0,
        "message":"Successful (no error)"
      }
    }
  ],
  "action":"CANCEL"
}

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.