-->
  • OAuth API
  • International Discovery API
  • Season Ticketing API
  • Presence API
  • API Explorer
  • SDKs

  • Tutorials

  • TM 3rd Party Integration API

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

    This document contains information about the structure for the messages to be exchanged by both systems. Technical aspects regarding the communication of the systems are not included but will be included in a later phase.

    Contact

    If you have any question regarding this content, please do not hesitate to contact 3rd Party Integrations team via email at 3pi-team@ticketmaster.es

    API Architecture

    The exchange of information between the two systems will be done through REST architecture with information encoded in JSON.

    The 3P system must have a connection with the TM system that allows establishing a session for the exchange of messages. The proposed connection type is over HTTPS protocol (Hypertext Transfer Protocol Secure).

    For all services the 3P system will act as “server” and the TM system will act as “client”. Therefore, it is 3P system which exposes the services of the API.

    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

    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.

    An event is defined as a set of:

    • Base information (dates, manifest, promoter and genre)
    • Text information (title and description) for differents languages
    • Price types. Ticket types offered to customers.
    • Price levels. Extra information of the price levels defined in the manifest for this event.
    • Prices. Each price type might have a different price (face value) per price level and the sales period.
    • Price Components. Each price can contain an optional definition of different taxable amounts that when combined form the full ticket price.
    • Timestamp. It will be used to manage the validity of the information.

    3rd-party-api-events

    Price Components

    When ticket prices include additional items and services, price components provide a way for the 3P to specify these taxable components so that they can be provided to the promoter and/or they can be printed. Price components will not be displayed to the customer through the TM purchase flow. Price components contain the following information:

    • Price Component ID
    • Price Component Amount
    • Tax Plan ID
      • If TM does not have a copy of that tax plan ID, the Tax Plan service is called to obtain the tax plan name and tax rates
    • Taxable Organization. Default value is the event’s promoter

    Tickets

    A ticket can contain a combination of information provided from the event’s information, such as Event Title, Venue and Date, as well as information provided by the 3P specifically for the ticket:

    • Ticket Text
    • Ticket Logos
    • Print Messages

    NOTE: The coordination of the ticket format and content will be coordinated between the local TM office and the 3P.

    Ticket Text

    It is possible to specify a maximum of 14 ticket text lines with a maximum length of 42 characters. This information is ingested with the creation of the event and can be updated.

    Ticket Logos

    A ticket logo is an image that is printed on a physical ticket. The logos are provided on the event with an ID, if TM does not have a copy of that logo, the Logo service is called to download the logo. It is possible to specify logos at the event level and at the price type level.

    • Must be unique
    • Supported formats: pcx, png, bmp, gif, tiff, jpeg
    • Maximum size: 1MB
    • Base64 encoded string

    Logo Position

    Each event logo is required to have a position. The position will be static on the ticket design. If no logo is sent, the allocated space on the ticket is empty.

    3rd-party-api-events

    Print Messages

    When TM prints a ticket, it is possible for the 3P to provide an additional 3 lines of text that can be printed on the ticket. For example, this information could contain any door/gate information. This information is only printed on the ticket and will not persist any other part of the Ticketmaster system. The maximum length of these print messages is 100 characters.

    Ingestion services

    The ingestion services retrieve information (system status, events and manifests) from 3P and push it to TM.

    MESSAGE SERVICE DESCRIPTION
    AVAILABILITY OF THE SYSTEM    
    Healthcheck GET /healthcheck Validate availability and read notifications from the 3P.
    IMPORT OF CONTENTS    
    Events.GetEventList GET /events Retrieve detailed information of the events to be imported from the 3P.
    Events.GetEvent GET /events/{event_id} Retrieve detailed information of a event from the 3P.
    Manifests.GetManifest GET /manifests/{manifest_id} Retrieve detailed information of a manifest from the 3P.

    TM sends requests to 3P to validate the availability of the system (through the Healthcheck message). The 3P can send a notification in the response (ex. service not currently available).

    The management of the synchronization of the programming between the systems will be done by the date of the last modification associated to each event.

    The TM system will provide the date of the last synchronization to the 3P in order to obtain the updated schedule (list of events through the message Events.GetEventList). Events may require the loading of the manifets (throught the Manifests.GetManifest message)

    3rd-party-api-ingestion-services

    Import process

    There are two types of importation processes:

    3rd-party-api-importation

    Import of all the events of a venue

    This process will be activated by the scheduler, by a manual request from the BackOffice or by a request from the 3P.

    EIB will request the list of new events or that have changed after a certain date/time.

    3P will return a list of new and updated events (indicating the type of change).

    EIB will create the new events and update the modified events. EIB will also generate a log with errors, warnings and important information.

    In some cases, EIB will request the manifest associated with the imported events.

    Import of an event:

    This process will be activated when discrepancies are detected with the timestamp associated with the events.

    The process is similar to the previous one but only applies to an event.

    Availability


    This synchronization process retrieves availability information of areas and seats from 3P and pushes it to TM.

    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

    There are two types of availability synchronization processes:

    3rd-party-availability-synchronization

    Full availability synchronization

    This process will be activated by the importation of a new / updated event.

    EIB will request the total availability of an event.

    3P will return the status of all areas (available and unavailable quantities for general admission and reserved seat areas) and all available seats.

    Partial availability synchronization

    This process will be activated when EIB wants to refresh the availability of one area.

    EIB will request the availability of an area identified by level and section.

    3P will return the status of the area (available and unavailable quantities) and all available seats.

    Runtime


    The runtime process manages bookings and orders for an integrated venue.

    Bookings and Orders

    A booking is an amount of tickets reserved in order to buy them. An order is an amount of tickets purchased. So, a booking is a potential order.

    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.

    Reconciliation


    The Reconciliation process retrieves information of transactions from an integrated venue when an error happens. In these cases, TM has to retrieve information of an order and then, if was necessary, it would have to cancel the order.

    3rd-party-reconsolidation

    There are two critical messages that require the Reconciliation process:

    3rd-party-reconsolidation-messages

    Reconciliation services

    Service that will manage the following operation:

    MESSAGE SERVICE DESCRIPTION
    RECONCILIATION OF TRANSACTIONS    
    Orders.GetOrderList GET /orders Get the detail of the orders processed.

    Reconsolidation process

    TM will be able to request information of an order or some orders in two possible ways:

    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 API Versions

    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

    Logo

    A logo image resource

    get /logos/{logo_id} Get a logo from the Partner system

    Tax plan

    A tax plan resource

    get /tax-plans/{tax_plan_id} Get a tax plan 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
              • logos(array) - List of price type logos. At the moment it only supports up to 1 logos per price type.
                • {array item object}
                  • logo_id(string) - Logo identifier
          • price_components(array) - list of price components
            • {array item object}
              • id(string) - Price component identifier
              • tax_plan_id(string) - Tax plan identifier
              • taxable_organization_id(string) - The taxable organization. In case that this value is empty, the system will use the promoter identifier value
          • face_value_prices(array) - list of prices
            • {array item object}
              • price_period(object)
                • id(string) - Period 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)
                  • per_price_component_amount(array)
                    • {array item object}
                      • price_component_id(string) - Price component identifier
                      • amount(string) - Amount for this price component (Minor currency units ex. 2000 = 20EUR)
          • logos(array) - List of event logos. At the moment it only supports up to 2 logos per event.
            • {array item object}
              • logo_id(string) - Logo identifier
              • position(integer) - Position in the ticket * Must be greater than 0 * Must be unique * Can be unordered and non-sequential * Position not used by a logo is simply a blank on the ticket
        • status(string: enum) - Event status (no letter casing)
          • ON_SALE
          • CANCELED
          • DELETED
    • page(object) - No description 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
          • logos(array) - List of price type logos. At the moment it only supports up to 1 logos per price type.
            • {array item object}
              • logo_id(string) - Logo identifier
      • price_components(array) - list of price components
        • {array item object}
          • id(string) - Price component identifier
          • tax_plan_id(string) - Tax plan identifier
          • taxable_organization_id(string) - The taxable organization. In case that this value is empty, the system will use the promoter identifier value
      • face_value_prices(array) - list of prices
        • {array item object}
          • price_period(object)
            • id(string) - Period 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)
              • per_price_component_amount(array)
                • {array item object}
                  • price_component_id(string) - Price component identifier
                  • amount(string) - Amount for this price component (Minor currency units ex. 2000 = 20EUR)
      • logos(array) - List of event logos. At the moment it only supports up to 2 logos per event.
        • {array item object}
          • logo_id(string) - Logo identifier
          • position(integer) - Position in the ticket * Must be greater than 0 * Must be unique * Can be unordered and non-sequential * Position not used by a logo is simply a blank on the ticket
    • status(string) - Event status (no letter casing)

    400 Bad request (error description in response body)

    • id(integer)
      -1 - Syntax error213 - Invalid last modification...
      • 1 - Syntax error 213 - Invalid last modification data time
    • message(string) - No description specified

    401 Unauthorized (the request has not been applied because it lacks valid authentication credentials)

    403 Forbidden (resource cannot be accessed)

    404 Not found (the event has not been found)

    410 Unsuccessful operation (error description in response body)

    • id(integer) - 305 - Event not currently available
    • message(string) - No description specified

    500 Internal error

    Authorization:

    3p_auth: ingestion:3p-system

    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"
    }

    Retrieves a specific logo.

    Method: GET

    Summary: Retrieves a specific logo.

    Description: Get a logo from the Partner system

    /logos/{logo_id}

    URL parameters:

    Parameter Description Type Default Value Required
    logo_id Logo identifier String Yes

    Other parameters:

    Parameter In Description Type Default Value Required
    X-Correlation-Id header Unique identifier value that is attached to requests that allow reference to a particular transaction
    String No

    Response structure:

    200 Successful operation

    • logo_id(string) - Logo identifier
    • type(string) - Logo identifier
    • image(string) - The base64 encoded string of the image itself. The maximum size of logo is 1MB
    • description(string) - Description of the logo

    400 Bad request (error description in response body)

    • id(integer) - 1 - Syntax error
    • message(string) - No description specified

    401 Unauthorized (the request has not been applied because it lacks valid authentication credentials)

    403 Forbidden (resource cannot be accessed)

    404 Not found (the logo has not been found)

    500 Internal error

    Authorization:

    3p_auth: ingestion:3p-system

    Retrieves a specific tax plan.

    Method: GET

    Summary: Retrieves a specific tax plan.

    Description: Get a tax plan from the Partner system

    /tax-plans/{tax_plan_id}

    URL parameters:

    Parameter Description Type Default Value Required
    tax_plan_id Tax plan identifier String Yes

    Other parameters:

    Parameter In Description Type Default Value Required
    X-Correlation-Id header Unique identifier value that is attached to requests that allow reference to a particular transaction
    String No

    Response structure:

    200 Successful operation

    • tax_plan_id(string) - Tax plan identifier
    • names(array) - No description specified
      • { array item object }
        • language(string) - ISO language and country codes (Example "es-ES"). Language for some request parameters.
        • value(string) - Tax plan value
    • tax_plan_rate(string) - Tax plan rate

    400 Bad request (error description in response body)

    • id(integer) - 1 - Syntax error
    • message(string) - No description specified

    401 Unauthorized (the request has not been applied because it lacks valid authentication credentials)

    403 Forbidden (resource cannot be accessed)

    404 Not found (the logo has not been found)

    500 Internal error

    Authorization:

    3p_auth: ingestion:3p-system

    Available authorizations:

    3p_auth

    type: oauth2

    tokenUrl: http://partner.com/tm-3pi-api/login

    flow: application

    scopes:

    check:3p-system: TM can check the Partner system

    ingestion:3p-system: TM can manage manifests & events from the Partner system

    runtime:3p-system: TM can manage bookings & orders to the Partner system

    Technical requirements

    This document describes the aspects related to service guarantee, environments and all those technical aspects necessary for the operation of the integration solution.

    1. Service guarantee

    A Service Level Agreement will be defined between the owner of the solution that implements the TM 3rd party integration API (the partner or service provider) and Ticketmaster (the client) in order to ensure the quality of the service.

    The SLA will be based on the different topics that are described below:

    A. System availability

    This availability refers to the period of time when the system is fully operational. A failure in an item that has its back-up and that does not interrupt the service is not considered unavailability. The following cases are excluded from this availability: stops for planned maintenance, emergency or force majeure stops and stops at the customer’s request.

    B. Performance

    The performance will be assessed through measurements like response time and processing rate (transactions/sec).

    C. Disaster recovery plan

    This plan refers to the recovery time and acceptable level of service that must be achieved after a disaster or interruption to avoid unacceptable consequences for the business. The backup policy will be one of the key points of the plan.

    D. On-call service

    The partner will establish a 24x7 on-call service in order to ensure the resolution of possible incidents that may occur.

    Depending on the different levels of severity, the response and resolution times will be defined. These levels will be different in relation to the affected domain.

    DOMAIN LEVEL OF SEVERITY
    Authentication services HIGH
    Ingestion services MEDIUM
    Availability services LOW
    Runtime services HIGH

    2. Environments

    Regarding the development process, we must have different environments in order to manage the software during its life cycle before reaching the final production environment.

    We will define an environment as a system made up of infrastructure and software, as well as the corresponding configuration.

    Minimum required work environments:

    - Development environment

    It’s the environment where we will develop, most often it is a local environment so that several people can be working without bothering.

    Only when the developer completes a perfectly functional code and after carrying out the necessary tests to ensure that the software developed has enough stability, can be transferred to the integration environment.

    - Integration environment

    This environment allows the work of the different developers to be integrated, resulting in an updated and consolidated version of the code and allows the integration tests and their validation to be carried out before sending the code to the pre-production environment.

    - Pre-production environment

    Here the user acceptance tests will be carried out on the software, aiming to locate any error before reaching the production environment and thus avoid the problems derived from them.

    This environment will be fully functional at the user level, and it should be as similar as possible to the production environment.

    - Production environment

    It’s the environment that customers will use. The above environments are designed to get here as efficiently as possible while ensuring reliability.

    The partner shall provide the following information for the integration, pre-production and production environments:

    ENVIRONMENT DATA Integration Pre-production Production
    URL      
    Username      
    Credentials      
    Venue code      

    3. Other requirements

    - Barcodes

    While we are able to print the partner’s barcode on tickets, it will be done so using our supported symbologies. If the partner supplies an access control system, that system needs to be able to read at least one of our symbologies. We support Code 39, Code 128, and QR codes.

    - Search types (Best Available and Specific seats)

    The API allows TM to sell tickets through seat selection (identifying the specific desired seats) and through best available selection (customer indicates quantity of seats and the system offers the best seats according to their request). At a minimum, the partner’s system is required to support best available selection.