REST API v1

API принимает запросы на функции указанные в этой документации.

Все запросы отправляются на сервер: https://qtickets.ru/api/rest/v1/{method}

Авторизация

Каждый запрос к API должен содержать заголовок Authorization: Bearer TOKEN. Токен выдается техподдержкой.

Мероприятия

Список мероприятий

GET https://qtickets.ru/api/rest/v1/events
Accept: application/json
Cache-Control: no-cache
Content-Type: application/json
Authorization: Bearer TOKEN

{
  "where": [
    {
      "column": "deleted_at",
      "operator": "null"
    }
  ],
  "orderBy": {
    "id": "desc"
  },
  "page": 1
}

Получение данных по id мероприятия

GET https://qtickets.ru/api/rest/v1/events/1240
Accept: application/json
Cache-Control: no-cache
Content-Type: application/json
Authorization: Bearer TOKEN

Создание мероприятия

POST https://qtickets.ru/api/rest/v1/events
Accept: application/json
Cache-Control: no-cache
Content-Type: application/json
Authorization: Bearer TOKEN

{
  "data": {
    "name": "Название мероприятия",
    "is_active": 1,
    "scheme_id": 18,
    "currency_id": "RUB",
    "place_name": "Олимпийский",
    "place_address": "Адрес места",
    "place_description": "",
    "site_url": "http://your-domain.ru/your-event",
    "city_id": 1,
    "description": "Начало координат, следовательно, охватывает аксиоматичный график функции многих переменных. Определитель системы линейных уравнений, в первом приближении, небезынтересно раскручивает определитель системы линейных уравнений, что известно даже школьникам. Огибающая семейства прямых, исключая очевидный случай, позитивно порождает анормальный интеграл от функции, имеющий конечный разрыв.",
    "external_id": null,
    "ticket_id": 17,
    "mail_template_id": 35,
    "payments": [
      38
    ],
    "poster": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB2ZXJzaW9uPSIxLjEiIGJhc2VQcm9maWxlPSJmdWxsIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPiAgIDxwb2x5Z29uIGlkPSJ0cmlhbmdsZSIgcG9pbnRzPSIwLDAgMCw1MCA1MCwwIiBmaWxsPSIjMDA5OTAwIiBzdHJva2U9IiMwMDQ0MDAiLz48L3N2Zz4=",
    "shows": [
      {
        "sale_start_date": null,
        "is_active": 1,
        "sale_finish_date": "2019-12-29T18:30:00+03:00",
        "open_date": "2019-12-29T18:30:00+03:00",
        "start_date": "2019-12-29T18:30:00+03:00",
        "finish_date": "2019-12-29T23:00:00+03:00",
        "scheme_properties": {
          "admin": {
            "zones": {
              "VIP": {
                "opened": "1"
              },
              "DANCE": {
                "opened": "1"
              },
              "SUPER_VIP": {
                "opened": "1"
              }
            }
          },
          "zones": {
            "VIP": {
              "disabled": "0",
              "shared": "",
              "price_id": "#0"
            },
            "DANCE": {
              "disabled": "0",
              "shared": "",
              "price_id": "#1"
            },
            "SUPER_VIP": {
              "disabled": "0",
              "shared": "",
              "price_id": "#2"
            }
          },
          "seats": {
            "VIP-1;1": {
              "hot": "1",
              "max_quantity": "100",
              "shared_max_quantity": ""
            },
            "DANCE-1;1": {
              "hot": "1",
              "max_quantity": "200",
              "shared_max_quantity": ""
            },
            "SUPER_VIP-1;1": {
              "hot": "1",
              "max_quantity": "300",
              "shared_max_quantity": ""
            }
          }
        },
        "prices": [
          {
            "default_price": 1000,
            "color_theme": 1
          },
          {
            "default_price": 2000,
            "color_theme": 2
          },
          {
            "default_price": 3000,
            "color_theme": 3
          }
        ]
      }
    ]
  }
}

Редактирование мероприятия

PUT https://qtickets.ru/api/rest/v1/events/1240
Accept: application/json
Cache-Control: no-cache
Content-Type: application/json
Authorization: Bearer TOKEN

{
  "data": {
    "name": "Название мероприятия",
    "is_active": 1,
    "scheme_id": 18,
    "currency_id": "RUB",
    "place_name": "Олимпийский",
    "place_address": "Адрес места",
    "place_description": "",
    "site_url": "http://your-domain.ru/your-event",
    "city_id": 1,
    "description": "Начало координат, следовательно, охватывает аксиоматичный график функции многих переменных. Определитель системы линейных уравнений, в первом приближении, небезынтересно раскручивает определитель системы линейных уравнений, что известно даже школьникам. Огибающая семейства прямых, исключая очевидный случай, позитивно порождает анормальный интеграл от функции, имеющий конечный разрыв.",
    "external_id": null,
    "ticket_id": 17,
    "mail_template_id": 35,
    "payments": [
      38
    ],
    "poster": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB2ZXJzaW9uPSIxLjEiIGJhc2VQcm9maWxlPSJmdWxsIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPiAgIDxwb2x5Z29uIGlkPSJ0cmlhbmdsZSIgcG9pbnRzPSIwLDAgMCw1MCA1MCwwIiBmaWxsPSIjMDA5OTAwIiBzdHJva2U9IiMwMDQ0MDAiLz48L3N2Zz4=",
    "shows": [
      {
        "sale_start_date": null,
        "is_active": 1,
        "sale_finish_date": "2019-12-29T18:30:00+03:00",
        "open_date": "2019-12-29T18:30:00+03:00",
        "start_date": "2019-12-29T18:30:00+03:00",
        "finish_date": "2019-12-29T23:00:00+03:00",
        "scheme_properties": {
          "admin": {
            "zones": {
              "VIP": {
                "opened": "1"
              },
              "DANCE": {
                "opened": "1"
              },
              "SUPER_VIP": {
                "opened": "1"
              }
            }
          },
          "zones": {
            "VIP": {
              "disabled": "0",
              "shared": "",
              "price_id": "1001"
            },
            "DANCE": {
              "disabled": "0",
              "shared": "",
              "price_id": "1002"
            },
            "SUPER_VIP": {
              "disabled": "0",
              "shared": "",
              "price_id": "#3"
            }
          },
          "seats": {
            "VIP-1;1": {
              "hot": "1",
              "max_quantity": "100",
              "shared_max_quantity": ""
            },
            "DANCE-1;1": {
              "hot": "1",
              "max_quantity": "200",
              "shared_max_quantity": ""
            },
            "SUPER_VIP-1;1": {
              "hot": "1",
              "max_quantity": "300",
              "shared_max_quantity": ""
            }
          }
        },
        "prices": [
          {
            "id": 1001,
            "default_price": 1000,
            "color_theme": 1
          },
          {
            "id": 1002,
            "default_price": 2000,
            "color_theme": 2
          },
          {
            "id": 1003,
            "default_price": 3000,
            "color_theme": 3
          },
          {
            "default_price": 6000,
            "color_theme": 4
          }
        ]
      }
    ]
  }
}

Заказы

Список заказов

GET https://qtickets.ru/api/rest/v1/orders
Accept: application/json
Cache-Control: no-cache
Content-Type: application/json
Authorization: Bearer TOKEN

{
  "where": [
    {
      "column": "payed",
      "value": 1
    }
  ],
  "orderBy": {
    "id": "asc"
  },
  "page": 1
}

Получение данных по заказу

GET https://qtickets.ru/api/rest/v1/orders/4360
Accept: application/json
Cache-Control: no-cache
Content-Type: application/json
Authorization: Bearer TOKEN

Пример ответа:

{
   "data":{
      "id":4360,
      "uniqid":"z7rkjcV2BV",
      "payed":true,
      "payed_at":"2019-07-30T12:50:52+03:00",
      "created_at":"2019-07-30T12:50:36+03:00",
      "updated_at":"2019-07-30T12:50:52+03:00",
      "deleted_at":null,
      "client_id":235,
      "client":{
         "id":235,
         "email":"username@gmail.com",
         "details":{
            "id":167,
            "name":"Иван",
            "middlename":null,
            "surname":"Петров",
            "phone":"+79100000000",
            "vk_id":"",
            "facebook_id":""
         }
      },
      "site_id":16,
      "site":{
         "id":16,
         "host":"qtickets.ru"
      },
      "payment_id":36,
      "payment_type_id":"bankcard",
      "payment_url":"https://qtickets.ru/pay/z7rkjcV2BV",
      "cancel_url":"https://qtickets.ru/cancel-order/z7rkjcV2BV/a800d6bfc609003205752c42844f541c",
      "basket_user_id":2111,
      "backend_user_id":null,
      "access_code_id":null,
      "discount_id":null,
      "promo_code_id":null,
      "reserved":0,
      "reserved_to":"2019-07-31T12:50:36+03:00",
      "reserve_extended":0,
      "event_id":33,
      "price":800,
      "original_price":800,
      "currency_id":"RUB",
      "utm":[

      ],
      "custom":{
         "var1":"val1",
         "var2":"val2"
      },
      "fields":{
         "organization_name":"ИП Петров"
      },
      "baskets":[
         {
            "id":63993,
            "barcode":"877076325904",
            "show_id":41,
            "seat_id":"CENTER_PARTERRE-21;12",
            "original_price":150,
            "discount_value":null,
            "price":150,
            "quantity":1,
            "client_email":"username@gmail.com",
            "client_phone":"+79100000000",
            "client_name":"Иван",
            "client_surname":"Петров",
            "organization_name":null,
            "legal_name":null,
            "work_position":null,
            "inn":null,
            "kpp":null,
            "comment":null,
            "related_baskets":[

            ],
            "checked_at":null,
            "created_at":"2019-07-30T12:49:47+03:00",
            "updated_at":"2019-07-30T12:50:52+03:00",
            "deleted_at":null,
            "refunded_at":null
         },
         {
            "id":63994,
            "barcode":"877344688530",
            "show_id":41,
            "seat_id":"CENTER_PARTERRE-21;11",
            "original_price":150,
            "discount_value":null,
            "price":150,
            "quantity":1,
            "client_email":"username@gmail.com",
            "client_phone":"+79100000000",
            "client_name":"Иван",
            "client_surname":"Петров",
            "organization_name":null,
            "legal_name":null,
            "work_position":null,
            "inn":null,
            "kpp":null,
            "comment":null,
            "related_baskets":[

            ],
            "checked_at":null,
            "created_at":"2019-07-30T12:49:50+03:00",
            "updated_at":"2019-07-30T12:50:52+03:00",
            "deleted_at":null,
            "refunded_at":null
         },
         {
            "id":63995,
            "barcode":"875606411179",
            "show_id":41,
            "seat_id":"CENTER_BALCONY-1;14",
            "original_price":500,
            "discount_value":null,
            "price":500,
            "quantity":1,
            "client_email":"username@gmail.com",
            "client_phone":"+79100000000",
            "client_name":"Иван",
            "client_surname":"Петров",
            "organization_name":null,
            "legal_name":null,
            "work_position":null,
            "inn":null,
            "kpp":null,
            "comment":null,
            "related_baskets":[

            ],
            "checked_at":null,
            "created_at":"2019-07-30T12:49:54+03:00",
            "updated_at":"2019-07-30T12:50:52+03:00",
            "deleted_at":null,
            "refunded_at":null
         }
      ],
      "integrations":{
         "roistat":{
            "roistat_visit":"100018"
         }
      }
   }
}

где:

поле тип поля Описание
id int Идентификатор заказа
uniqid string Уникальный идентификатор заказа
payed boolean Флаг оплаты заказа
payed_at date Дата оплаты заказа
created_at date Дата создания заказа
updated_at date Дата обновления заказа
client_id int Идентификатор покупателя
client array Данные о покупателе
payment_id int Идентификатор получателя платежей
payment_type_id string Идентификатор способа оплаты
payment_url string URL страницы для оплаты заказа
cancel_url string URL страницы для отмены заказа
basket_user_id int
backend_user_id int Идентификатор пользователя, если заказ был оформлен через ЛК
access_code_id int Идентификатор кода доступа
discount_id int Идентификатор скидки
promo_code_id int Идентификатор промокода
reserved boolean Флаг бесконечного бронирования
reserved_to date Дата бронирования
reserve_extended boolean Флаг продления бронирования
event_id int Идентификатор мероприятия
price float Итоговая цена
original_price float Цена, без учета скидок
currency_id string Валюта
utm array UTM-метки
custom array Дополнительные данные, которые были указаны в data-custom аттрибуте кнопки покупки
fields array Дополнительные поля (Название компании, ИНН, КПП…)
baskets array Состав заказа (билеты)
integrations array Если подключена интеграция Roistat, то будет возвращен roistat_visit

Промо

Список скидок

GET https://qtickets.ru/api/rest/v1/discounts
Accept: application/json
Cache-Control: no-cache
Content-Type: application/json
Authorization: Bearer TOKEN

{
  "where": [
    {
      "column": "deleted_at",
      "operator": "null"
    }
  ],
  "orderBy": {
    "id": "desc"
  },
  "page": 1
}

Список промокодов

GET https://qtickets.ru/api/rest/v1/promo-codes
Accept: application/json
Cache-Control: no-cache
Content-Type: application/json
Authorization: Bearer TOKEN

{
  "where": [
    {
      "column": "discount_id",
      "value": 45
    },
    {
      "column": "deleted_at",
      "operator": "null"
    }
  ],
  "orderBy": {
    "id": "desc"
  },
  "page": 1
}

Создание промокода

POST https://qtickets.ru/api/rest/v1/promo-codes
Accept: application/json
Cache-Control: no-cache
Content-Type: application/json
Authorization: Bearer TOKEN

{
  "data": {
    "is_active": 1,
    "discount_id": 45,
    "code": "308076-15950-3",
    "max_uses_count": 5,
    "active_from": null,
    "active_to": null
  }
}

Редактирование промокода

POST https://qtickets.ru/api/rest/v1/promo-codes/13513
Accept: application/json
Cache-Control: no-cache
Content-Type: application/json
Authorization: Bearer TOKEN

{
  "data": {
    "is_active": 1,
    "code": "308076-15950-3",
    "max_uses_count": 3,
    "active_from": null,
    "active_to": null
  }
}

Обработка ошибок

Если сервер не может обработать запрос, то вернется ответ с HTTP статусом не равным 200 (например 403 или 503)
Пример:

{
  "error": "Some error",
  "status": 403
}

Была ли эта статья вам полезна?

Статьи по теме