Radario.Api
Текущая версия API 1.1
.
Документация по версии v1
доступна по адресу https://radario.github.io/slate/radario.api/
.
Обратите внимание, все новые клиенты должны использовать только версию API не ниже 1.1
. Использование версии v1
новыми клиентами в любой момент может быть ограничено, без предварительного уведомления.
Изменения относительно версии v1
- версию API теперь следует передавать не в URL адресе запроса, а в отдельном заголовке
api-version
, передача данного атрибута является обязательной
- теперь все запросы требуют передачу заголовков авторизации
api-id
и api-key
- больше не требуется передавать атрибут
onlyWithOrderCreationAvailableViaApi=true
, все права будут учитываться автоматически, в отличие от версии v1
где из за сохранения обратной совместимости, следовало отдельно передавать атрибут onlyWithOrderCreationAvailableViaApi=true
в некоторых запросах
Пример как было
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) |
Поддерживаемые типы квот
Входные на событие без схемы
- событие не имеет схемы (атрибут
placeSchemeId
у события имеет значение null
)
- квота не имеет посадочного места (атрибут
withSeats
у квоты имеет значение false
)
Посадочные места без схемы
- событие не имеет схемы (атрибут
placeSchemeId
у события имеет значение null
)
- квота имеет посадочные места (атрибут
withSeats
у квоты имеет значение true
)
Входные на событие со схемой, с привязкой к объекту на схеме
- событие имеет схему (атрибут
placeSchemeId
у события имеет значение, отличное от null
)
- квота не имеет посадочных мест (атрибут
withSeats
у квоты имеет значение false
)
- для квоты указана зона (атрибут
zoneId
у квоты имеет значение отличное от null
)
Входные на событие со схемой, без привязкй к объекту на схеме
- событие имеет схему (атрибут
placeSchemeId
у события имеет значение, отличное от null
)
- квота не имеет посадочных мест (атрибут
withSeats
у квоты имеет значение false
)
- для квоты не указана зона (атрибут
zoneId
у квоты имеет значение null
)
Посадочные места со схемой
- событие имеет схему (атрибут
placeSchemeId
у события имеет значение, отличное от null
)
- квота имеет посадочные места (атрибут
withSeats
у квоты имеет значение true
)
Особенности работы с датами
Даты возвращаются в формате 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 поддерживает как возврат отдельного билета по его номеру так и заказа целиком. Возврат отдельного билета возможен только в том случае, если после возврата в заказе остается еще хотя бы один билет, в противном случае следует использовать возврат всего заказа.
Коды ошибок
2000
заказ уже был отменен (удален). Ошибка может возникать при попытке выполнить операцию над отмененным заказом, например при повторной попытке отменить уже отмененный заказ.
2013
заказ уже был оплачен (подтвержден). Ошибка может возникать при попытке подтвердить уже ранее подтвержденный заказ