ZeroEvent — API

API

Общие положения

API предоставляется без каких-либо условий - "как есть". Если оно вас устраивает - вы им пользуетесь без ограничений. Не планируется никакой монетизации API. Возможно будут какие-то ограничения по кол-ву запросов в секунду (искусственное замедление ответов), возможно нужно будет зарегистрироваться как пользователь API и получить ключ. Но пока API доступно без ограничения.

Вы можете использовать API на своём сайте, либо делать мобильное приложение. Единственное условие — это должны быть ссылки на сайт zeroevent на страницы мероприятий (поле event.url). Если при разработке вам понадобятся ещё какие-то методы API, либо фильтры — свяжитесь с нами, обсудим.

Префикс для всех запросов - https://zeroevent.ru/api/

Шаблон запроса - https://zeroevent.ru/api/имя-объекта/id-объекта?параметр1=значение&...

Шаблон метода (с id и без):

https://zeroevent.ru/api/имя-метода?параметр1=значение&...
https://zeroevent.ru/api/имя-метода/id?параметр1=значение&...

Не все поля одинаково полезны.

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

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

Дата/Время. Если поле связано с датой/временем, то скорее всего это будет integer представляющий собой unix time в секундах (в локальной таймзоне).


Замечания, предложения, ошибки направлять по адресу info@zeroevent.ru

Далее идёт описание объектов и методов.

Объект город /city/__id

id города — Как узнать id города?

GET https://zeroevent.ru/api/city/96

{
  "id": 96,
  "name": "Нижний Тагил",
  "country": {
      "id": 1,
      "name": "Россия"
  },
  "location": {
      "lat": 5.79076049999999966644e+01,
      "lon": 5.99688329999999965025e+01
  },
  "region": {
      "country": 1,
      "id": 1154131,
      "name": "Свердловская область"
  }
}

Объект мероприятие /event/__id

id - либо просто цифровое значение, либо с префиксом из двух букв обозначающих источник данных и id объекта от источника.

Пример:

  • 23414 - id в zeroevent;
  • vk2345215 - id в vk (число соответствует id event в vk - адрес https://vk.com/event2345215);
  • tl23414 - id в ticketland.

Если имя поля начинается на r_, то это строковое (html) представление соответствующего поля.

Параметры

  • html: true/false - отдавать description (поле des) с тегами html. Без тегов (html: false) работает только в случае если src: vk.

Возвращаемые значения

  • name — название;
  • sname — короткое название;
  • url — ссылка на страницу;
  • start / finish — unix time начала и окончания;
  • min_price / max_price — минимальная/максимальная стоимость билета (только для tl/mt);
  • src: vk|tl|mt — источник данных. vk - vk.com, tl - tiketland, mt - mts.live. tl/mt - это можно сказать один источник со схожими данными (разные сайты, один владелец MTS);
  • age — ограничение по возрасту;
  • photo_xx — url картинки с соответствующим размером;
  • des — описание (description).

Пример

GET https://zeroevent.ru/api/event/695943

{
"id": 695943,
"url": "https://zeroevent.ru/event/695943"
"start": 1704456000,
"finish": 1704467700,
"src": "vk",
"name": "Мещеряков Александр 05.01.24  Loft Salsa Social",
"r_start": "Завтра, 5 января в 15.00 — 18.15",
"r_addr_full": "Санкт-Петербург, Заставская ул., 33, с.2",
"is_pushkin_card": false,
"place": {
    "address": "Заставская ул., 33, с.2",
    "title": "loft salsa social"
},
"city": {
    "id": 2,
    "name": "Санкт-Петербург"
},
"r_place": "loft salsa social",
"des": "'НАЧНЕМ Новый 2024 ГОД ТАНЦЕВАЛЬНО под руководством нового ⚡️ бомбического гостя",
"photo_50": "https://sun83-1.userapi.com/s/v1/ig2/ePGvLkIkcEbu1fJafLpzd8LclwO2AKK7G5G27wTKqjFgq2ecmJq1-Aa2IpK1TiO-BPS2puUxGyE01A1prG_CZ4w0.jpg?size=50x50&quality=95&crop=80,216,1057,1057&ava=1",
"photo_100": "https://sun83-1.userapi.com/s/v1/ig2/xqoqOBiTinlpP7VKZOQyjWZHsNp7fFRuKRIW3zdK81DRvD-9Kosjfm0VhSAulzPbNQEcr5oFnghgNVG4Lwnit8Lj.jpg?size=100x100&quality=95&crop=80,216,1057,1057&ava=1",
"photo_200": "https://sun83-1.userapi.com/s/v1/ig2/mOVzFYvc8VlwCz8TXci74z13G0rhj4ubxoXrzMnp2S7EvXOW4IP0RHEf6-3YlfHCpZ2ifWWycZjuBLv_8sK7m61T.jpg?size=200x200&quality=95&crop=80,216,1057,1057&ava=1",
}

Метод /events/__city-id

Выдача объектов event, отфильтрованных по параметрам. city-id — обязательный параметр. Как узнать id города?. Объекты event выдаются отсортированными по уменьшению рейтинга.

Параметры

  • limit — ограничение кол-ва возвращаемых объектов event. Если не указано, то = 70, max: 100;
  • date — дата в формате YYYY, YYYY-MM или YYYY-MM-DD. Фильтрация за период год, месяц, день соответственно. Если параметр не указан, то выдаются event наиболее популярные в будущем.

Возвращаемые значения

Возвращает объект типа {city: city, events: [event]}

В events — список объектов event. Поля соответствуют полям в объекте event, однако в этой выдаче список выдаваемых полей в сокращённом варианте (наиболее востребованные). Для получения полных данных, нужно запросить объекты event непосредственно по-отдельности.

Пример
GET https://zeroevent.ru/api/events/2?date=2024-01-04&limit=2

{
"city": {
    "country": {
        "id": 1,
        "name": "Россия"
    },
    "id": 2,
    "location": {
        "lat": 5.99339000000000012847e+01,
        "lon": 3.03061000000000007049e+01
    },
    "name": "Санкт-Петербург",
},
"events": [{
    "id": 7296928,
    "age": 6,
    "city": {
        "id": 2,
        "name": "Санкт-Петербург"
    },
    "des":  "<p>Как в сказку попасть:</p>",
    "start": 1704376800,
    "finish": 1704376800,
    "min_price": 600,
    "name": "Выставка «Тайна забытых сказок»",
    "place": {
        "address":  "г. Санкт-Петербург, Кожевенная линия, дом 40",
        "id": 2051266,
        "location": {
            "lat": 5.99243969999999990250e+01,
            "lon": 3.02420359999999988077e+01
        },
        "src": "mt",
        "title": "Севкабель Порт"
    },
    "rate": 7.67066406780705396925e-05,
    "src": "tl"
}, {
    "id": 2047473,
    "city": {
        "id": 2,
        "name": "Санкт-Петербург"
    },
    "des": "Горячие танцы и чай в уютных залах",
    "start": 1704387600,
    "finish": 1704400200,
    "name": "Вечеринка Newton Day в YouDance 04.01.24",
    "rate": 2.91706807784240962356e-01,
    "src": "vk",
    "status": "Life is better when you dance"
}]
}