Radario.Api

Текущая версия API 1.1.

Документация по версии v1 доступна по адресу https://radario.github.io/slate/radario.api/.

Обратите внимание, все новые клиенты должны использовать только версию API не ниже 1.1. Использование версии v1 новыми клиентами в любой момент может быть ограничено, без предварительного уведомления.

Изменения относительно версии v1

Пример как было

curl -X GET "https://api.radario.ru/v1/events?onlyWithOrderCreationAvailableViaApi=true" \
  -H "api-id: XXX" \
  -H "api-key: XXX"

как стало

curl -X GET "https://api.radario.ru/events" -H "api-id: XXX" -H "api-key: XXX" -H "api-version: 1.1"

Общие сведения

Базовый адрес для всех запросов https://api.radario.ru/

При передаче данных на сервер, следует использовать формат application/json с указанием соответствующего заголовка Content-Type.

Для всех запросов и ответов используется кодировка UTF-8.

Для работы с API, с каждым запросом в HTTP заголовках app-id, app-key требуется передать ключи доступа, а в заголовке api-version используемую версию API .

Ключи доступа можно получить связавшись с представителем радарио.

Пример запроса

curl -X GET "https://api.radario.ru/events" -H "api-id: XXX" -H "api-key: XXX" -H "api-version: 1.1"

Categories

Get events categories

GET /categories

Response model

{
  "success": "bool",
  "data": [{
    "id": "int",
    "name": "string"
  }],
  "error": {
    "errorCode": "int",
    "message": "string",
    "requestId": "string"
  }
}

Attributes

Attribute Description
id Category id
name Category name

Cities

Get cities

GET /cities

Parameters

Parameter In Type Required Description
limit query integer false Specifies the number of items to return (default 30)
offset query integer false Specifies the number of items to skip

Response model

{
  "success": "bool",
  "data": [{
    "id": "int",
    "name": "string",
    "latitude": "double",
    "longitude": "double",
    "gmtOffset": "int"
  }],
  "error": {
    "errorCode": "int",
    "message": "string",
    "requestId": "string"
  }
}

Attributes

Attribute Description
id City id
name City name
latitude City latitude
longitude City longitude
gmtOffset City GMT offset

Company

Get company by id

GET /hosts/{id}

Parameters

Parameter In Type Required Description
id path integer true No description

Response model

{
  "success": "bool",
  "data": {
    "id": "int",
    "title": "string",
    "logoUri": "string",
    "requisiteName": "string",
    "requisiteINN": "string",
    "requisiteAddress": "string",
    "supportEmail": "string",
    "supportPhone": "string",
    "visitingRules": "string",
    "refundRules": "string"
  },
  "error": {
    "errorCode": "int",
    "message": "string",
    "requestId": "string"
  }
}

Attributes

Attribute Description
id Company id
title Company title
logoUri Company logo URI
requisiteName Company requisite name
requisiteINN Company requisite INN
requisiteAddress Company requisite address
supportEmail Company support email
supportPhone Company support phone
visitingRules Company visiting rules
refundRules Company refund phone

Events

Get events by query

GET /events

Parameters

Parameter In Type Required Description
onlyActual query bool false Flag for actual events only
cityId query integer false Id of city where event take place
placeId query integer false Id of place where event take place
companyId query integer false Id of company that organize event
superTagId query integer false Event type id (e.g concert, perfomance, party, etc.)
limit query integer false Specifies the number of items to return (default 20). Max value is 100
offset query integer false Specifies the number of items to skip
groupId query integer false Id of event group
eventDateFrom query string false If endDate is not specified, then events filtered by eventDateFrom and eventDateTo. So you can fetch all events, that active in this range. ISO 8601 format.
eventDateTo query string false If endDate is not specified, then events filtered by eventDateFrom and eventDateTo. So you can fetch all events, that active in this range. ISO 8601 format.

Response model

{
  "success": "bool",
  "data": {
  "items": [{
    "id": "int",
    "title": "string",
    "description": "string",
    "age": "int",
    "beginDate": "datetime",
    "endDate": "datetime",
    "salesStopped": "bool",
    "videoUrl": "string",
    "images": "string",
    "category": "string",
    "placeId": "int",
    "placeTitle": "string",
    "placeAddress": "string",
    "companyId": "int",
    "companyTitle": "string",
    "eventProviderId": "int",
    "eventProviderName": "string",
    "cityId": "int",
    "cityName": "string",
    "placeSchemeId": "int",
    "groupId": "int",
    "currency": "string",
    "ticketCount": "int",
    "gmtOffset": "int",
    "barcodeType": "string",
    "onlineTranslation": "bool",
    "autoClosingSalesMinutes": "int", nullable
    "proCultureId": string
  }],
  "totalCount": "int"
  },
  "error": {
    "errorCode": "int",
    "message": "string",
    "requestId": "string"
  }
}

Attributes

Attribute Description
id Event id
title Event title
description Event description
age Allowable age
beginDate Event begining date
endDate Event ending date
salesStopped Should specify to return events whose sales stopped
videoUrl Event video URL
images Event images
category Event category
placeId Id of place where event take place
placeTitle Title of place where event take place
placeAddress Address of place where event take place
companyId Id of company that organize event
companyTitle Title of company that organize event
eventProviderId Id of event provider that organize event
eventProviderName Name of event provider that organize event
cityId Id of city where event take place
cityName Name of city where event take place
placeSchemeId Id of event place schema
groupId Id of event group
currency Payment currency
ticketCount Remaining number of tickets that is available for purchase
gmtOffset GMT offset of city where event take place
totalCount Total count of items
barcodeType Type of event barcode. Posible types: Code128a, Code128b, Code128c, Ean13, Itf14, Interleaved2of5, Undefined. If you don't support any barcode type in your system, you shouldn't create new Events and UserOrders based on this barcode type
onlineTranslation Is event type - online
autoClosingSalesMinutes Time in minutes before event begin date, when sales become stopped
proCultureId поле показывающее айдишку события в ПроКультура

Get event by id

GET /events/{eventId}

Parameters

Parameter In Type Required Description
eventId path integer true Event id

Response model

{
  "success": "bool",
  "data": {
    "id": "int",
    "title": "string",
    "description": "string",
    "age": "int",
    "beginDate": "datetime",
    "endDate": "datetime",
    "salesStopped": "bool",
    "videoUrl": "string",
    "images": "string",
    "category": "string",
    "placeId": "int",
    "placeTitle": "string",
    "placeAddress": "string",
    "companyId": "int",
    "companyTitle": "string",
    "eventProviderId": "int",
    "eventProviderName": "string",
    "cityId": "int",
    "cityName": "string",
    "placeSchemeId": "int",
    "groupId": "int",
    "currency": "string",
    "ticketCount": "int",
    "gmtOffset": "int",
    "barcodeType": "string",
    "onlineTranslation": "bool",
    "autoClosingSalesMinutes": "int", nullable
    "proCultureId": string
  },
  "error": {
    "errorCode": "int",
    "message": "string",
    "requestId": "string"
  }
}

Attributes

Attribute Description
id Event id
title Event title
description Event description
age Allowable age
beginDate Event begining date
endDate Event ending date
salesStopped Should specify to return events whose sales stopped
videoUrl Event video URL
images Event images
category Event category
placeId Id of place where event take place
placeTitle Title of place where event take place
placeAddress Address of place where event take place
companyId Id of company that organize event
companyTitle Title of company that organize event
eventProviderId Id of event provider that organize event
eventProviderName Name of event provider that organize event
cityId Id of city where event take place
cityName Name of city where event take place
placeSchemeId Id of event place schema
groupId Id of event group
currency Payment currency
ticketCount Count of all event tickets
gmtOffset GMT offset of city where event take place
totalCount Total count of items
barcodeType Type of event barcode. Posible types: Code128a, Code128b, Code128c, Ean13, Itf14, Interleaved2of5, Undefined. If you don't support any barcode type in your system, you shouldn't create new Events and UserOrders based on this barcode type
onlineTranslation Is event type - online
autoClosingSalesMinutes Time in minutes before event begin date, when sales become stopped
proCultureId поле показывающее айдишку события в ПроКультура

Get event TicketType item

GET /events/{eventId}/ticket_types

Parameters

Parameter In Type Required Description
eventId path integer true Event id
limit query integer false Specifies the number of items to return (default 30)
offset query integer false Specifies the number of items to skip
getDeteled query boolean false Additionally includes deleted ticket types if set to true.

Response model

{
  "success": "bool",
  "data": {
    "items": [{
      "id": "int",
      "title": "string",
      "price": "decimal",
      "ticketCount": "int",
      "soldTicketCount": "int",
      "withSeats": "bool",
      "series": "string",
      "seatBeginNumber": "int",
      "seatEndNumber": "int",
      "zoneId": "int",
      "participantNameRequired": "bool",
      "seats": [{
        "isOccupied": "bool",
        "number": "int",
        "rowName": "string",
        "seatName": "string"
      }],
      "baseTicketTypeId": "int"
    }],
    "totalCount": "int"
  },
  "error": {
    "errorCode": "int",
    "message": "string",
    "requestId": "string"
  }
}

Attributes

Attribute Description
id TicketType id
title TicketType title
price Ticket price
ticket Number of all tickets
soldTicketCount Sold ticket amount
withSeats Indicate if tickets of TicketType with seat
series Series of tickets
seatBeginNumber Indicate seat number range (from)
seatEndNumber Indicate seat number range (to)
participantNameRequired Requires participant name on ticket
zoneId Id of seats zone
seats List of seat
seats[i].IsOccupied Indicate if seat is occupied
seats[i].Number Number of seat
seats[i].RowName Name of seat row
seats[i].SeatName Name of seat
baseTicketTypeId Base TicketType Id

ZoneId

Для квот на событие с SVG схемой и посадочными местами отсутствует понятие зоны. Для таких квот значение атрибута zoneId не должно учитываться и как правило содержит значение 0.

Для квот на событие с SVG схемой без посадочных мест в атрибуте ZoneId задается идентификатор объекта на схеме к которому привязана квота. Если квота не привязана к объекту, то атрибут ZoneId будет иметь значение null.

Get event Tariffs

GET /events/{eventId}/tariffs

Parameters

Parameter In Type Required Description
eventId path integer true Event id
limit query integer false Specifies the number of items to return (default 30)
offset query integer false Specifies the number of items to skip

Response model

{
  "success": "bool",
  "data": {
    "items": [
      {
        "id" : "int",
        "title" : "string",
        "description" : "string",
        "ticketTypes": [
          {
            "id": "int",
            "title": "string",
            "price": "decimal",
            "ticketCount": "int",
            "soldTicketCount": "int",
            "withSeats": "bool",
            "series": "string",
            "seatBeginNumber": "int",
            "seatEndNumber": "int",
            "zoneId": "int",
            "participantNameRequired": "bool",
            "seats": [
              {
                "isOccupied": "bool",
                "number": "int",
                "rowName": "string",
                "seatName": "string"
              }
            ],
            "baseTicketTypeId": "int"
          }
        ]
      }
    ],
    "totalCount": "int"
  },
  "error": {
    "errorCode": "int",
    "message": "string",
    "requestId": "string"
  }
}

Attributes

Attribute Description
id Tariff id
title Tariff title
description Tariff description
ticketTypes[i].id TicketType id
ticketTypes[i].title TicketType title
ticketTypes[i].price Ticket price
ticketTypes[i].ticket Number of all tickets
ticketTypes[i].soldTicketCount Sold ticket amount
ticketTypes[i].withSeats Indicate if tickets of TicketType with seat
ticketTypes[i].series Series of tickets
ticketTypes[i].seatBeginNumber Indicate seat number range (from)
ticketTypes[i].seatEndNumber Indicate seat number range (to)
ticketTypes[i].participantNameRequired Requires participant name on ticket
ticketTypes[i].zoneId Id of seats zone
ticketTypes[i].seats List of seat
ticketTypes[i].seats[j].IsOccupied Indicate if seat is occupied
ticketTypes[i].seats[j].Number Number of seat
ticketTypes[i].seats[j].RowName Name of seat row
ticketTypes[i].seats[j].SeatName Name of seat
ticketTypes[i].baseTicketTypeId Base TicketType Id

О тарифах

Роут повторяет /events/{eventId}/ticket_types, за исключением того, что квоты обёрнуты в тарифы. Особенность тарифов в заключаются том, что на одно место могут быть заведены различные квоты с разными ценовыми категориями(прим. "Взрослый" - "Детский"). Следовательно, одни и те же места могут содержаться в нескольких квотах разных тарифов. Внутри одного тарифа места могут принадлежать только одной квоте.

ZoneId

Для квот на событие с SVG схемой и посадочными местами отсутствует понятие зоны. Для таких квот значение атрибута zoneId не должно учитываться и как правило содержит значение 0.

Для квот на событие с SVG схемой без посадочных мест в атрибуте ZoneId задается идентификатор объекта на схеме к которому привязана квота. Если квота не привязана к объекту, то атрибут ZoneId будет иметь значение null.

Get tickets (only bought or booked) by event id

GET /events/{eventId}/tickets

Parameters

Parameter In Type Required Description
eventId path integer true Event id
limit query integer false Specifies the number of items to return (default 30). Max value is 100
offset query integer false Specifies the number of items to skip

Response model

{
  "success": "bool",
  "data": {
    "items": [{
      "id": "int",
      "ticketTypeId": "int",
      "userOrderId": "int",
      "ticketTypeTitle": "string",
      "ticketTypeZoneId": "int",
      "number": "string",
      "price": "double",
      "discount": "double",
      "isUsed": "bool",
      "barcodeKey": "string",
      "seatNumber": "string",
      "seatName": "string",
      "rowName": "string",
      "participantName": "string",
	  "email": "string",
      "seatInfo": "string"
    }],
    "totalCount": "int"
  },
  "error": {
    "errorCode": "int",
    "message": "string",
    "requestId": "string"
  }
}

Attributes

Attribute Description
id Ticket id
ticketTypeId TicketType id
userOrderId UserOrder id
ticketTypeTitle TicketType title
ticketTypeZoneId TicketType zone id
number Ticket number
price Ticket price
discount Ticket price discount
isUsed Indicate if ticket is used
barcodeKey Ticket barcode key
seatNumber Ticket seat number
seatName Ticket seat name
rowName Ticket row name
participantName Ticket participant name
email Order email, which ticket belongs to
seatInfo Ticket customer name

Get orders by event id

GET /events/{eventId}/orders

Parameters

Parameter In Type Required Description
eventId path integer true Event id
limit query integer false Specifies the number of items to return (default 30). Max value is 100
offset query integer false Specifies the number of items to skip

Response model

{
  "success": "bool",
  "data": {
    "items": [{
      "id": "int",
      "isPaid": "bool",
      "eventId": "int",
      "creationDate": "datetime",
      "ticketCount": "int",
      "baseAmount": "double",
      "amount": "double",
      "tickets": [{
        "id": "int",
        "ticketTypeId": "int",
        "userOrderId": "int",
        "ticketTypeTitle": "string",
        "ticketTypeZoneId": "int",
        "number": "string",
        "price": "double",
        "discount": "double",
        "isUsed": "bool",
        "barcodeKey": "string",
        "seatNumber": "string",
        "seatName": "string",
        "rowName": "string",
        "participantName": "string",
        "seatInfo": "string"
      }],
      "orderNumber": "string",
      "distributionType": "string",
      "paymentType": "int"
    }],
    "totalCount": "int"
  },
  "error": {
    "errorCode": "int",
    "message": "string",
    "requestId": "string"
  }
}

Attributes

Attribute Description
id Order id
isPaid Indicate if order is paid
eventId Order event id
creationDate Order creation datetime
ticketCount Order ticket amount
baseAmount Summarу tickets price
amount Order amount (with considering debit from user cash)
orderNumber Order number
distributionType Order DistributionType
paymentType Order PaymentType
tickets List of tickets
tickets[i].id Ticket id
tickets[i].ticketTypeId TicketType id
tickets[i].userOrderId UserOrder id
tickets[i].ticketTypeTitle TicketType title
tickets[i].ticketTypeZoneId TicketType zone id
tickets[i].number Ticket number
tickets[i].price Ticket price
tickets[i].discount Ticket price discount
tickets[i].isUsed Indicate if ticket is used
tickets[i].barcodeKey Ticket barcode key
tickets[i].seatNumber Ticket seat number
tickets[i].seatName Ticket seat name
tickets[i].rowName Ticket row name
tickets[i].participantName Ticket participant name
tickets[i].seatInfo Ticket customer name

Get place scheme by event id

GET /events/{eventId}/place-scheme

Parameters

Parameter In Type Required Description
eventId path integer true Event id

Response model

{
  "success": "bool",
  "data": {
    "id": "int",
    "name": "string",
    "seatCount": "int",
    "zones": [{
      "id": "int",
      "name": "string",
      "withSeats": "bool",
      "rowCount": "int",
      "colCount": "int",
      "capacity": "int",
      "seats": [ {
        "number": "int",
        "rowName": "string",
        "seatName": "string",
        "exists": "bool"
      }]
    }],
    "image": "string",
    "version": "int"
  }
  "error": {
    "errorCode": "int",
    "message": "string",
    "requestId": "string"
  }
}

Вместимость зон

В связи с введением тарифов, стала актуальным вместимость зон - общее количество мест, которые могут быть реализованны для конктертной зоны со входными местами. За вместимость зон отвечает параметр Capacity.

Пример: Входная зона "Входная". Для данной зоны заведено два тарифа: "Взрослый"(100 шт.) и "Детский"(100 шт.). Вместимость зоны - 100. В таком случае, сумма по реализованным взрослым и детским билетам не должна превышать 100.

Attributes

Attribute Description
id Place schema id
name Place schema name
seatCount Количетсво мест на схеме. Используется только для схем версии 1, для других схем имеет значение 0. Данный атрибут является устаревшим и не должен использоваться.
zones List of zone
zones[i].Id Zone id
zones[i].Name Zone name
zones[i].WithSeats Indicate if zone with seat
zones[i].RowCount Amount of rows in the zone
zones[i].ColCount Amount of columns in the zone
zones[i].Capacity Zone capacity for the entrance tickets. Null if capacity is not defined
zones[i].Seats List of zone seats
zones[i].Seats[j].Number Seat number
zones[i].Seats[j].RowName Seat row name
zones[i].Seats[j].RowName Seat name
zones[i].Seats[j].Exists Indicate if seat is exist on grid
version Scheme rendering method Enum (Html = 1; Svg = 2)

EventProviders

Get event provider by id

GET /event-providers/{eventProviderId}

Parameters

Parameter In Type Required Description
id path integer true No description

Response model

{
  "success": "bool",
  "data": {
    "id": "int",
    "companyId": "int",
    "cityId": "int",
    "Name": "string",
    "Description": "string",
    "Email": "string",
    "AdditionalEmails": "string",
    "Phone": "string",
    "INN": "string",
    "AllowSendSoldTicketReportForPrevDay": "bool"
    "AllowSendSoldTicketReportForAllTime": "bool",
    "CreationdDate": "datetime",
    "UpdateDate": "datetime",
    "Deleted": "bool",
    "CommissionFeePercent": "decimal",
    "Address": "string",
    "ContractNumber": "string",
    "ContractDate": "datetime"
  },
  "error": {
    "errorCode": "int",
    "message": "string",
    "requestId": "string"
  }
}

Attributes

Attribute Description
id Event provider id
companyId Company id
cityId City id
name Event provider name
description Description
email Email
additionalEmails Additional emails
phone Phone
INN INN
AllowSendSoldTicketReportForPrevDay Flag to send reports to event provider
AllowSendSoldTicketReportForAllTime Flag to send reports to event provider
CreationdDate Creation Date
UpdateDate Update Date
Deleted Deleted
CommissionFeePercent Event provider percent
Address Adress
ContractNumber Contract number
ContractDate Contract date

Get event providers by company

GET /company/{companyId}/event-providers

Parameters

Parameter In Type Required Description
companyId path integer true No description

Response model

{
  "success": "bool",
  "data": [{
    "id": "int",
    "companyId": "int",
    "cityId": "int",
    "Name": "string",
    "Description": "string",
    "Email": "string",
    "AdditionalEmails": "string",
    "Phone": "string",
    "INN": "string",
    "AllowSendSoldTicketReportForPrevDay": "bool"
    "AllowSendSoldTicketReportForAllTime": "bool",
    "CreationdDate": "datetime",
    "UpdateDate": "datetime",
    "Deleted": "bool",
    "CommissionFeePercent": "decimal",
    "Address": "string",
    "ContractNumber": "string",
    "ContractDate": "datetime"
  }]
  "error": {
    "errorCode": "int",
    "message": "string",
    "requestId": "string"
  }
}

Attributes

Attribute Description
id Event provider id
companyId Company id
cityId City id
name Event provider name
description Description
email Email
additionalEmails Additional emails
phone Phone
INN INN
AllowSendSoldTicketReportForPrevDay Flag to send reports to event provider
AllowSendSoldTicketReportForAllTime Flag to send reports to event provider
CreationdDate Creation Date
UpdateDate Update Date
Deleted Deleted
CommissionFeePercent Event provider percent
Address Adress
ContractNumber Contract number
ContractDate Contract date

Group

Get events groups by company id

GET /hosts/{hostId}/groups

Parameters

Parameter In Type Required Description
hostId path integer true Company id
limit query string false Specifies the number of items to return (default 100). Max value is 100
offset query string false Specifies the number of items to skip

Response model

{
  "success": "bool",
  "data": {
    "items": [{
      "id": "int",
      "name": "string",
      "hostId": "int",
      "ticketCount": "int"
    }],
    "totalCount": "int"
  },
  "error": {
    "errorCode": "int",
    "message": "string",
    "requestId": "string"
  }
}

Attributes

Attribute Description
id Event group id
name Event group name
hostId Company id
ticketCount Total ticket amount of events group

Orders

Резервирование мест для оплаты (создание заказа)

Данный метод создает заказ в режиме ожидания подтверждения оплаты. Пока заказ не будет успешно подтвержден, выбранные места нельзя считать закрепленными за агентом, а билеты нельзя выдавать покупателю. Максимальное время на подтверждение заказа составляет 20 минут, но может быть изменено в индивидуальном порядке.

POST /orders/reserve

Parameters

Parameter In Type Required Description
request body ReserveOrderRequest true Request object

Body parameter

{
  "eventId": "int",
  "tickets": [{
    "ticketTypeId": "int",
    "seatNumber": "int",
    "participantName": "string",
    "externalUserId": "string"
  }],
  "email": "string",
  "partnerId": "int",
  "promocode": "string",
  "utmData": {
    "utmSource": "string",
    "utmMedium": "string",
    "utmTerm": "string",
    "utmContent": "string",
    "utmCampaign": "string",
    "utmUserId": "string"
  },
  "IsPaymentUsingPushkinCard": "bool"
}

Attributes

Attribute Description
eventId Event id
email Customer email
tickets List of seat info
tickets[i].TicketTypeId TicketType id
tickets[i].SeatNumber (Optional for tickets without seats) Seat number
tickets[i].ParticipantName (Optional) Participant name
tickets[i].ExternalUserId Participant Id. Required field for event by an organization subordinate to the Moscow City Department of Culture
PartnerId (Optional) Partner ID
Promocode (Optional) Promocode to apply on userOrder
UtmData (Optional) List of UTM Tracking tags.
UtmData.UtmSource (Required if UtmData is present) utm-source of request
UtmData.UtmMedium utm-medium of request
UtmData.UtmTerm utm-term of request
UtmData.UtmContent utm-content of request
UtmData.UtmCampaign utm-campaign of request
UtmData.UtmUserId utm-userid of requester
IsPaymentUsingPushkinCard Признак что оплата проходила по пушкинкской карте (true/false)

Response model

{
  "success": "bool",
  "data": {
    "order": {
      "id": "int",
      "isPaid": "bool",
      "eventId": "int",
      "creationDate": "datetime",
      "ticketCount": "int",
      "baseAmount": "double",
      "amount": "double",
      "tickets": [{
        "id": "int",
        "ticketTypeId": "int",
        "userOrderId": "int",
        "ticketTypeTitle": "string",
        "ticketTypeZoneId": "int",
        "number": "string",
        "price": "double",
        "discount": "double",
        "isUsed": "bool",
        "barcodeKey": "string",
        "seatNumber": "string",
        "seatName": "string",
        "rowName": "string",
        "participantName": "string",
        "seatInfo": "string"
      }],
      "orderNumber": "string",
      "distributionType": "string",
      "paymentType": "int",
      "customData": "string",
      "resolveDate" : "datetime",
      "status" : "string"
    }
  },
  "error": {
    "errorCode": "int",
    "message": "string",
    "requestId": "string"
  }
}

Attributes

Attribute Description
order Order info
order.Id Order id
order.IsPaid Indicate if order is paid
order.EventId Order event id
order.CreationDate Order creation datetime
order.TicketCount Order ticket amount
order.BaseAmount Summarу tickets price
order.Amount Order amount (with considering debit from user cash)
order.OrderNumber Order number
order.DistributionType Order DistributionType
order.PaymentType Order PaymentType
order.CustomData Order custom data
order.ResolveDate Automatic order cancellation time. It does not guarantee the preservation of the order until this time, so tickets should be issued to the user ONLY after successful confirmation of the order
order.Status Order status
order.Tickets List of tickets
order.Tickets[i].id Ticket id
order.Tickets[i].ticketTypeId TicketType id
order.Tickets[i].userOrderId UserOrder id
order.Tickets[i].ticketTypeTitle TicketType title
order.Tickets[i].ticketTypeZoneId TicketType zone id
order.Tickets[i].number Ticket number
order.Tickets[i].price Ticket price
order.Tickets[i].discount Ticket price discount
order.Tickets[i].isUsed Indicate if ticket is used
order.Tickets[i].barcodeKey Ticket barcode key
order.Tickets[i].seatNumber Ticket seat number
order.Tickets[i].seatName Ticket seat name
order.Tickets[i].rowName Ticket row name
order.Tickets[i].participantName Ticket participant name
order.Tickets[i].seatInfo Ticket customer name

Предварительный резерв мест

Данный функционал может быть использован во время процесса выбора мест клиентом, что бы никто другой не смог создать заказ на эти же самые места. Метод не создает заказа и лишь временно выводит места из продажи и может быть использован только для посадочных мест на схеме. Для входных мест предварительный резерв не работает.

POST /orders/add_pre_reserved_seat

Parameters

Parameter In Type Required Description
request body ReserveOrderRequest true Request object

Body parameter

{
  "eventId": "int",
  "ticketTypeId": "int",
  "seatNumber": "int",
  "timeToLive": "int"
}

Attributes

Attribute Required Description
eventId true Event id
ticketTypeId true TicketType id
seatNumber true Seat number
timeToLive false Reservation lifetime in minutes. Default value - 15min

Response model

{
  "success": "bool",
  "error": {
    "errorCode": "int",
    "message": "string",
    "requestId": "string"
  }
}

Снятие предварительного резерва с места

POST /orders/remove_pre_reserved_seat

Parameters

Parameter In Type Required Description
request body ReserveOrderRequest true Request object

Body parameter

{
  "eventId": "int",
  "ticketTypeId": "int",
  "seatNumber": "int"
}

Attributes

Attribute Required Description
eventId true Event id
ticketTypeId true TicketType id
seatNumber true Seat number

Response model

{
  "success": "bool",
  "error": {
    "errorCode": "int",
    "message": "string",
    "requestId": "string"
  }
}

Подтверждение оплаты заказы

После создания заказа необходимо подтвердить его оплату. Только после успешного подтверждения оплаты заказа билеты закрепляются за агентом, т.е. только после выполнения данной операции билеты можно передавать покупателю. До подтверждения заказа по тем или иным причинам заказ может быть удален и билеты могут быть перепроданы другими агентами или через другие каналы продаж. Подтверждение оплаты заказа может быть вызвано только над еще не подвержденным заказом, не был удален или не был возвращен.

POST /orders/approve

Body parameter

{
  "orderId": "int"
}

Parameters

Parameter In Type Required Description
request body OrderApproveRequest true Request object

Attributes

Attribute Description
orderId Order Id

Response model

{
  "success": "bool",
  "error": {
    "errorCode": "int",
    "message": "string",
    "requestId": "string"
  }
}

Update order information

POST /orders/update

Body parameter

{
  "orderId": "int",
  "email": "string",
  "tickets": [{
	"id": "int",
	"participantName": "string",
	"externalUserId": "string"
  }],
  "isPaymentUsingPushkinCard": "bool"
}

Parameters

Parameter In Type Required Description
request body OrderUpdateRequest true Request object

Attributes

Attribute Description
orderId Order Id
email Customer email
tickets List of tickets
tickets[i].id Ticket id
tickets[i].participantName ticket owner full name
tickets[i].externalUserId buyer id
isPaymentUsingPushkinCard indication that payment was made using a Pushkin card (true/false)

Response model

{
  "success": "bool",
  "data": {
    "id": "int",
    "isPaid": "bool",
    "eventId": "int",
    "creationDate": "datetime",
    "ticketCount": "int",
    "baseAmount": "double",
    "amount": "double",
    "tickets": [{
      "id": "int",
      "ticketTypeId": "int",
      "userOrderId": "int",
      "ticketTypeTitle": "string",
      "ticketTypeZoneId": "int",
      "number": "string",
      "price": "double",
      "discount": "double",
      "isUsed": "bool",
      "barcodeKey": "string",
      "seatNumber": "string",
      "seatName": "string",
      "rowName": "string",
      "participantName": "string",
      "seatInfo": "string"
    }],
    "orderNumber": "string",
    "distributionType": "string",
    "paymentType": "int",
    "customData": "string",
    "resolveDate" : "datetime",
    "status" : "string"
  },
  "error": {
    "errorCode": "int",
    "message": "string",
    "requestId": "string"
  }
}

Attributes

Attribute Description
id Order id
isPaid Indicate if order is paid
eventId Order event id
creationDate Order creation datetime
ticketCount Order ticket amount
baseAmount Summarу tickets price
amount Order amount (with considering debit from user cash)
orderNumber Order number
distributionType Order DistributionType
paymentType Order PaymentType
customData Order custom data
resolveDate Automatic order cancellation time. It does not guarantee the preservation of the order until this time, so tickets should be issued to the user ONLY after successful confirmation of the order
status Order status
tickets List of tickets
tickets[i].id Ticket id
tickets[i].ticketTypeId TicketType id
tickets[i].userOrderId UserOrder id
tickets[i].ticketTypeTitle TicketType title
tickets[i].ticketTypeZoneId TicketType zone id
tickets[i].number Ticket number
tickets[i].price Ticket price
tickets[i].discount Ticket price discount
tickets[i].isUsed Indicate if ticket is used
tickets[i].barcodeKey Ticket barcode key
tickets[i].seatNumber Ticket seat number
tickets[i].seatName Ticket seat name
tickets[i].rowName Ticket row name
tickets[i].participantName Ticket participant name
tickets[i].seatInfo Ticket customer name

Отмена заказа

После создания заказа, но до его подтверждения, заказ можно отменить. Отмена заказа возвращает билеты в продажу. И хотя не подтвержденные заказы автоматически могут быть отменены через 20 минут (и даже раньше), крайне рекомендуется вручную отменять заказы, если клиент отказался от оплаты.

POST /orders/cancel

Body parameter

{
  "orderId": "int"
}

Parameters

Parameter In Type Required Description
request body OrderCancelRequest true Request object
Attribute Description
orderId Order id

Response model

{
  "success": "bool",
  "error": {
    "errorCode": "int",
    "message": "string",
    "requestId": "string"
  }
}

Send order to customer's email

POST /orders/send

Body parameter

{
  "orderId": "int"
}

Parameters

Parameter In Type Required Description
request body OrderSendRequest true Request object
Attribute Description
orderId Order id

Response model

{
  "success": "bool",
  "error": {
    "errorCode": "int",
    "message": "string",
    "requestId": "string"
  }
}

Возврат подтвержденного заказа

POST /orders/refund

Body parameter

{
  "userOrderId": "string",
  "ticketNumber": "string",
  "refundInitiator": "string",
  "comment": "string",
  "reason": "string",
  "RefundPenaltyPercent": "decimal"
}

Parameters

Parameter In Type Required Description
request body RefundRequest true Request object

Attributes

Attribute Description
userOrderId Id заказа. Для того, чтобы вернуть весь заказ, нужно указать только данный Id, без идентификаторов билета.
ticketNumber Номер билета. Стоит указывать для того, чтобы вернуть конкретный билет
refundInitiator Инициатор возврата. Допустимые значения: 'User', 'Company', 'null'
comment Комментарий
reason Причина возврата
RefundPenaltyPercent Штраф при возврате, значение в процентах. Ппроцент применяется к стоимости билетов за вычетом скидок.

Response model

{
  "success": "bool",
  "data": { 
    "refundId": "int",
    "companyId": "int",
    "refundedMoney": "decimal",
    "refundedUserCash": "decimal",
    "refundMethod": "int",
    "refundType": "int",
    "tickets": [{
      "ticketTypeId": "int",
      "seatNumber": "int",
      "seatInfo": {
        "rowName" : "string",
        "colName" : "string",
        "zoneName" : "string"
      },
      "price": "decimal"
    }],
    "ticketNumbers": "string"
  },
  "error": {
    "errorCode": "int",
    "message": "string",
    "requestId": "string"
  }
}

Attributes

Attribute Description
RefundId Refund id
CompanyId Company id
RefundedMoney Refunded money
RefundedUserCash Refunded user cash money
RefundMethod Refund method code. Always 'ExternalApi' (RefundMethod = 7)
RefundType Refund type code. Always 'Order' (RefundType = 2)
Tickets Ticket list
Tickets[i].TicketTypeId TicketType id
Tickets[i].SeatNumber Ticket seat number
Tickets[i].SeatInfo Ticket seat info
Tickets[i].SeatInfo.RowName Ticket seat row name
Tickets[i].SeatInfo.ColName Ticket seat column name
Tickets[i].SeatInfo.ZoneName Ticket seat zone name
Tickets[i].Price Ticket price
Tickets[i].Number Ticket number
TicketNumbers Numbers of ticket sepparated by commas

Получение информации о заказе

GET /orders/{id}

Parameters

Parameter In Type Required Description
id path integer true Order id

Response model

{
  "success": "bool",
  "data": {
    "id": "int",
    "isPaid": "bool",
    "eventId": "int",
    "creationDate": "datetime",
    "ticketCount": "int",
    "baseAmount": "double",
    "amount": "double",
    "tickets": [{
      "id": "int",
      "ticketTypeId": "int",
      "userOrderId": "int",
      "ticketTypeTitle": "string",
      "ticketTypeZoneId": "int",
      "number": "string",
      "price": "double",
      "discount": "double",
      "isUsed": "bool",
      "barcodeKey": "string",
      "seatNumber": "string",
      "seatName": "string",
      "rowName": "string",
      "participantName": "string",
      "seatInfo": "string"
    }],
    "orderNumber": "string",
    "distributionType": "string",
    "paymentType": "int",
    "customData": "string",
    "resolveDate" : "datetime",
    "status" : "string"
  },
  "error": {
    "errorCode": "int",
    "message": "string",
    "requestId": "string"
  }
}

Attributes

Attribute Description
id Order id
isPaid Indicate if order is paid
eventId Order event id
creationDate Order creation datetime
ticketCount Order ticket amount
baseAmount Summarу tickets price
amount Order amount (with considering debit from user cash)
orderNumber Order number
distributionType Order DistributionType
paymentType Order PaymentType
customData Order custom data
resolveDate Automatic order cancellation time. It does not guarantee the preservation of the order until this time, so tickets should be issued to the user ONLY after successful confirmation of the order
status Order status
tickets List of tickets
tickets[i].id Ticket id
tickets[i].ticketTypeId TicketType id
tickets[i].userOrderId UserOrder id
tickets[i].ticketTypeTitle TicketType title
tickets[i].ticketTypeZoneId TicketType zone id
tickets[i].number Ticket number
tickets[i].price Ticket price
tickets[i].discount Ticket discount
tickets[i].isUsed Indicate if ticket is used
tickets[i].barcodeKey Ticket barcode key
tickets[i].seatNumber Ticket seat number
tickets[i].seatName Ticket seat name
tickets[i].rowName Ticket row name
tickets[i].participantName Ticket participant name
tickets[i].seatInfo Ticket customer name

Получение расширенной информации о заказе организатора

Метод позволяет получить расширенную информацию о любом заказе организатора, привязанного к агенту, даже если заказ не был создан через текущего агента. Данный метод может быть использован только агентами организатора и требует повышенных прав.

GET /host/orders/{orderId}

Get only orders that created for host current account belongs to

Parameters

Parameter In Type Required Description
orderId path integer true Order id

Response model

{
  "success": "bool",
  "data": {
    "order": {
      "id": "int",
      "paymentType": "string",
      "paymentDate": "datetime",
      "amount": "decimal",
      "promoCode": "string",
      "psOrderId": "string",
      "orderUserPhone": string
    },
    "user": {
      "email": "string"
    },
    "event": {
      "id": "int",
      "title": "string"
    },
    "partnerTrack": {
      "id": "int",
      "email": "string"
    },
    "tickets": [{
      "id": "int",
      "barcode": "string",
      "participantName": "string",
      "price": "decimal",
      "discount": "decimal",
      "type": {
        "id": "int",
        "title": "string",
        "zoneId": "int"
      }
    }]
  },
  "error": {
    "errorCode": "int",
    "message": "string",
    "requestId": "string"
  }
}

Attributes

Attribute Description
id Order id
paymentType Payment type (always 'External')
paymentDate Payment datetime
amount Order amount
promoCode Order promo code
psOrderId External payment system payment id
orderUserPhone User phone number attached to order
user Customer info
user.Email Customer email
event Event info
event.Id Event id
event.Title Event title
partnerTrack Partner info
partnerTrack.Id Partner id
partnerTrack.Email Partner email
tickets List of tickets info
tickets[i].Id Ticket id
tickets[i].Barcode Ticket barcode
tickets[i].ParticipantName Ticket participant name
tickets[i].Price Ticket price
tickets[i].Discount Ticket price discount
tickets[i].Type Ticket TicketType info
tickets[i].Type.Id TicketType id
tickets[i].Type.Title TicketType title
tickets[i].Type.ZoneId TicketType zone id

Получение расширенной информации о заказах организатора

Метод работает аналогично предыдущему, но позволяет получить информацию обо всех заказах.

GET /host/orders

Parameters

Parameter In Type Required Description
startDate query string true Payment date (from)
endDate query string true Payment date (to)
eventId query string false Event id

Response model

{
  "success": "bool",
  "data": {
    "orders": [{
      "order": {
        "id": "int",
        "paymentType": "string",
        "paymentDate": "datetime",
        "amount": "decimal",
        "promoCode": "string",
        "psOrderId": "string",
        "orderUserPhone": "string"
      },
      "user": {
        "email": "string"
      },
      "event": {
        "id": "int",
        "title": "string"
      },
      "partnerTrack": {
        "id": "int",
        "email": "string"
      },
      "tickets": [{
        "id": "int",
        "barcode": "string",
        "participantName": "string",
        "price": "decimal",
        "discount": "decimal",
        "type": {
          "id": "int",
          "title": "string",
          "zoneId": "int"
        }
      }]
    }]
  },
  "error": {
    "errorCode": "int",
    "message": "string",
    "requestId": "string"
  }
}

Attributes

Attribute Description
id Order id
paymentType Payment type (always 'External')
paymentDate Payment datetime
amount Order amount
promoCode Order promo code
psOrderId External payment system payment id
orderUserPhone User phone number attached to order
user Customer info
user.Email Customer email
event Event info
event.Id Event id
event.Title Event title
partnerTrack Partner info
partnerTrack.Id Partner id
partnerTrack.Email Partner email
tickets List of tickets info
tickets[i].Id Ticket id
tickets[i].Barcode Ticket barcode
tickets[i].ParticipantName Ticket participant name
tickets[i].Price Ticket price
tickets[i].Discount Ticket price discount
tickets[i].Type Ticket TicketType info
tickets[i].Type.Id TicketType id
tickets[i].Type.Title TicketType title
tickets[i].Type.ZoneId TicketType zone id

Tickets

Get ticket in pdf format

GET /tickets/{ticketId}/pdf

Responses

Returns pdf file

Places

Get events places

GET /places

Parameters

Parameter In Type Required Description
cityId query integer true City id
onlyWithActualEvents query bool false Retrieve places that refers to actual event if parameter has 'true'
limit query integer false Specifies the number of items to return (default 30). Max value is 200
offset query integer false Specifies the number of items to skip

Response model

{
  "success": "bool",
  "data": {
    "items": [{
      "id": "int",
      "title": "string",
      "address": "string",
      "latitude": "double",
      "longitude": "double",
      "cityId": "int",
      "cityName": "string"
    }],
    "totalCount": "int"
  },
  "error": {
    "errorCode": "int",
    "message": "string",
    "requestId": "string"
  }
}

Attributes

Attribute Description
id Place id
title Place title
address Place address
latitude Place latitude
longitude Place longitude
cityId Place city id
cityName Place city name

Get event place by id

GET /places/{id}

Parameters

Parameter In Type Required Description
id path integer true Place id

Response model

{
  "success": "bool",
  "data": {
    "id": "int",
    "title": "string",
    "address": "string",
    "latitude": "double",
    "longitude": "double",
    "cityId": "int",
    "cityName": "string"
  }
  "error": {
    "errorCode": "int",
    "message": "string",
    "requestId": "string"
  }
}

Attributes

Attribute Description
id Place id
title Place title
address Place address
latitude Place latitude
longitude Place longitude
cityId Place city id
cityName Place city name

Promocodes

Get Promocode

GET /promocodes

Parameters

Parameter In Type Required Description
code query string true Promocode code
companyId query integer true Company id

Response model

{
  "success": "bool",
  "data": {
  "value": "double",
  "currency": "string",
  "isPercent": "bool",
  "validUntil": "datetime",
  "eventTitle": "string"
  },
  "error": {
    "errorCode": "int",
    "message": "string",
    "requestId": "string"
  }
}

Attributes

Attribute Description
value Discount value (in percent or not)
currency Currency
isPercent Indicate if discount value is in percentage terms
validUntil Indicate discount expiration datetime
eventTitle Event title

Schemes

Get place schema by id

GET /schemes/{id}

Parameters

Parameter In Type Required Description
id path integer true Place schema id

Response model

{
  "success": "bool",
  "data": {
    "id": "int",
    "name": "string",
    "seatCount": "int",
    "zones": [{
      "id": "int",
      "name": "string",
      "withSeats": "bool",
      "rowCount": "int",
      "colCount": "int",
      "seats": [ {
        "number": "int",
        "rowName": "string",
        "seatName": "string",
        "exists": "bool"
      }]
    }],
    "image": "string",
    "version": "int"
  }
  "error": {
    "errorCode": "int",
    "message": "string",
    "requestId": "string"
  }
}

Attributes

Attribute Description
id Place schema id
name Place schema name
seatCount Количетсво мест на схеме. Используется только для схем версии 1, для других схем имеет значение 0. Данный атрибут является устаревшим и не должен использоваться.
zones List of zone
zones[i].Id Zone id
zones[i].Name Zone name
zones[i].WithSeats Indicate if zone with seat
zones[i].RowCount Amount of rows in the zone
zones[i].ColCount Amount of columns in the zone
zones[i].Seats List of zone seats
zones[i].Seats[j].Number Seat number
zones[i].Seats[j].RowName Seat row name
zones[i].Seats[j].RowName Seat name
zones[i].Seats[j].Exists Indicate if seat is exist on grid
version Scheme rendering method Enum (Html = 1; Svg = 2)

Get place schema raw descriptor by id

GET /schemes/{id}/raw

Parameters

Parameter In Type Required Description
id path integer true Place schema id

Response model

{
  "success": "bool",
  "data": {
    "id": "int",
    "descriptor": "string",
    "version": "int"
  }
  "error": {
    "errorCode": "int",
    "message": "string",
    "requestId": "string"
  }
}

Attributes

Attribute Description
id Place schema id
descriptor Raw place schema descriptor
version Scheme rendering method Enum (Html = 1; Svg = 2)

Поддерживаемые типы квот

Входные на событие без схемы

Посадочные места без схемы

Входные на событие со схемой, с привязкой к объекту на схеме

Входные на событие со схемой, без привязкй к объекту на схеме

Посадочные места со схемой

Особенности работы с датами

Даты возвращаются в формате ISO 8601 YYYY-MM-DDThh:mm:ss.[.sss]+00:00 в UTC (значение +00:00 будет приходить у всех дат)

Пример 2018-12-31T23:59:59.000+00:00

Чтобы получить локальное время после запроса, необходимо конвертировать его в соответствии со значением поля gmtOffset из запроса GET /cities следующим образом: значение gmtOffset сконверировать в минуты (умножить на 60) и прибавить к заданному времени.

Для передачи времени в запросе, необходимо указывать его в формате ISO 8601 YYYY-MM-DDThh:mm:ssZ

Пример 2018-12-31T23:59:59Z

Возвраты

API поддерживает как возврат отдельного билета по его номеру так и заказа целиком. Возврат отдельного билета возможен только в том случае, если после возврата в заказе остается еще хотя бы один билет, в противном случае следует использовать возврат всего заказа.

Коды ошибок