MEC Restful API
API RESTful in Modern Events Calendar Позволяет разработчикам программно получать доступ, извлекать и управлять данными о событиях из внешних приложений, веб-сайтов или сервисов. Он предоставляет структурированный и стандартизированный способ взаимодействия с данными MEC (такими как события, местоположения, организаторы и расписания) без использования интерфейса WordPress. Это делает его подходящим для интеграции с мобильными приложениями, сторонними платформами или пользовательскими интерфейсными решениями.
Базовый URL
Базовый URL-адрес различается для каждого веб-сайта, но общая схема выглядит следующим образом.
http://example.com/wp-json/mec/v1.0
API ключ
Для всех следующих команд требуется ключ API. Ключ API следует отправлять в заголовках с именем mec-token. Если вы не отправите mec-token в заголовках, вы получите ошибку invalid_api_token.
Все события
GET /events/
Это публичная команда, то есть ее могут выполнить все пользователи, имеющие ключ API.
Запрос
Отправьте следующие параметры в формате JSON.
| Имя | Тип | Принятые значения | Пример |
| предел | целое | 12 | |
| заказ | string | По возрастанию / убыванию | ASC |
| смещение | целое | 0 | |
| Начало | string | сегодня / дата / завтра / вчера / начало_прошлого_месяца / начало_текущего_месяца / начало_следующего_месяца | даты |
| Дата начала | string | (гггг-мм-дд) | 2024-12-15 |
| показывать только прошедшие события | целое | 0,1 | 0 |
| include_past_events | целое | 0,1 | 0 |
| показывать только текущие события | целое | 0,1 | 0 |
| include_ongoing_events | целое | 0,1 | 0 |
Режимы секции мощности
Все события будут указаны в ключе events ответа. События классифицируются по дате начала, поэтому вы можете использовать это для отображения событий в любом необходимом вам формате, например, в виде списка, ежемесячного календаря, еженедельного расписания или любого другого.
Вы также можете использовать ключ пагинации в ответе, чтобы читать все события постранично. Просто отправьте значение next_date в качестве start_date вашего следующего запроса и значение параметра offset — next_offset.
{
"events": {
"2025-01-15": [{ ... }],
...
},
"pagination": {
"next_date": "2025-12-15",
"next_offset": 1,
"has_more_events": true,
"found": 12
}
}
Одиночное событие
GET /events/{id}
Это публичная команда, то есть ее могут выполнить все пользователи, имеющие ключ API.
Запрос
Отправьте следующие параметры в виде строки запроса.
| Имя | Тип | Пример |
| id * | целое | 1 |
| вхождение | целое | 1747335600 |
Режимы секции мощности
Вы получите множество информации, включая, но не ограничиваясь следующим: ключ данных содержит много полезной информации о событии, которую вы можете использовать в своем приложении; ключ дат содержит информацию о предстоящих датах события. Вы можете передать значение начальной временной метки, которое отображается как значение события, в строку запроса для продвижения во времени. Кроме того, ключ дат содержит информацию о текущем событии.
{
"ID": 1,
"data": { ... },
"dates": [{
"start": {
"date": "2025-05-15",
"hour": 7,
"minutes": "0",
"ampm": "PM",
"timestamp": 1747335600
},
"end": {
"date": "2025-05-15",
"hour": 11,
"minutes": "0",
"ampm": "PM",
"timestamp": 1747350000
},
"allday": "0",
"hide_time": "0",
"past": 0
}],
"date": {}
}
Логин
POST /login
Запрос
Отправьте следующие параметры как данные в обычном формате.
| Имя | Тип | Пример |
| username * | string | пользователь |
| password * | string | 12345678 |
Режимы секции мощности
Используйте токен для авторизации пользователей в других командах. Для команд, требующих аутентификации, таких как команды my-events или trash events, его следует отправлять в виде нового заголовка с именем user-token .
{
"success": 1,
"id": 1,
"token": "W2X53XpClol8TquAIKWaZo0j68L0tuho3o4wmwD0"
}
Загрузить изображение
POST /images
Для выполнения этой команды пользователи должны быть аутентифицированы. В заголовках должны быть указаны как mec-token, так и user-token.
Запрос
Отправьте следующие параметры в формате JSON.
| Имя | Тип | Пример |
| изображение * | файл |
Режимы секции мощности
Используйте image_id в других командах, например, при создании событий и т. д.
{
"success": 1,
"image_id": 10
}
Загрузить файл
POST /files
Для выполнения этой команды пользователи должны быть аутентифицированы. В заголовках должны быть указаны как mec-token, так и user-token.
Запрос
Отправьте следующие параметры в формате JSON.
| Имя | Тип | Пример |
| файл * | файл |
Режимы секции мощности
Используйте file_id в других командах, например, при создании событий и т. д.
{
"success": 1,
"file_id": 10
}
Создать событие
POST /events
Для выполнения этой команды пользователи должны быть аутентифицированы. В заголовках должны быть указаны как mec-token, так и user-token.
Запрос
Отправьте следующие параметры в формате JSON.
| Имя | Тип | Пример |
| название * | string | Название события |
| содержание | string | Содержание события |
| местоположение[имя] | string | Галерея искусств |
| местоположение[адрес] | текст | Художественная галерея, Город |
| местоположение[широта] | плавать | |
| местоположение[долгота] | плавать | |
| местоположение[миниатюра] | Int | 10 |
| организатор[имя] | string | Джон Дью |
| организатор[email] | [электронная почта защищена] | |
| организатор[тел] | телефон | +13007772299 |
| организатор[url] | URL | https://google.com |
| органайзер[миниатюра] | номер | 10 |
| Дата начала | дата (гггг-мм-дд) | 2025-06-01 |
| начальный_час | Int | 10 |
| начальные_минуты | Int | 15 |
| start_ampm | string | AM |
| Дата окончания | дата (гггг-мм-дд) | 2025-06-01 |
| конец_часа | Int | 2 |
| конечные_минуты | Int | 45 |
| end_ampm | string | PM |
Режимы секции мощности
Используйте event_id в других командах, например, для получения отдельного события и т. д.
{
"success": 1,
"message": "The event is published.",
"event_id": 12
}
Изменить событие
PUT /events/{id}
Для выполнения этой команды пользователи должны быть аутентифицированы. В заголовках должны быть указаны как mec-token, так и user-token.
Запрос
Запрос в точности аналогичен команде создания события.
Режимы секции мощности
Ответ также полностью аналогичен команде создания события.
Мои события
GET /my-events
Для выполнения этой команды пользователи должны быть аутентифицированы. В заголовках должны быть указаны как mec-token, так и user-token.
Запрос
Отправьте следующие параметры в формате JSON.
| Имя | Тип | Пример |
| предел * | целое | 12 |
| страниц * | целое | 1 |
Режимы секции мощности
Вы можете циклически просматривать события, чтобы отобразить все из них. Используйте данные пагинации для навигации по страницам событий.
{
"events": [
{
"id": 2645,
"title": "Monthly",
"url": "http://example.com/events/monthly/",
"status": "publish"
}
],
"pagination": {
"current_page": 2,
"total_pages": 5
}
}
Событие по утилизации мусора
DELETE /events/{id}/trash
Для выполнения этой команды пользователи должны быть аутентифицированы. В заголовках должны быть указаны как mec-token, так и user-token.
Запрос
Нет.
Режимы секции мощности
Если команда выполнена успешно, вы получите следующий ответ, в противном случае будет возвращен объект ошибки с правильным http-кодом.
{
"success": 1
}
Удалить событие
DELETE /events/{id}
Для выполнения этой команды пользователи должны быть аутентифицированы. В заголовках должны быть указаны как mec-token, так и user-token.
Эта команда принудительно удалит событие. Неважно, удалено ли событие уже или нет.
Запрос
Нет.
Режимы секции мощности
Если команда выполнена успешно, вы получите следующий ответ, в противном случае будет возвращен объект ошибки с правильным http-кодом.
{
"success": 1
}
Сущности таксономии
Эти конечные точки позволяют управлять сущностями таксономии MEC, включая категории, теги, метки, докладчиков и спонсоров.
Для выполнения этих команд пользователи должны пройти аутентификацию. Оба варианта mec-token и user-token их следует включить в заголовки.
Список таксономических сущностей
GET /taxonomies/{entity}
Параметры пути:
| Параметр | Тип | Описание |
| организация | string | Тип сущности. Один из следующих вариантов: categories, tags, labels, speakers, sponsors |
Параметры запроса:
| Параметр | Тип | По умолчанию | Описание |
| предел | Int | 20 | Количество элементов на странице |
| выгружаемый | Int | 1 | Номер страницы |
| Сортировать по | string | имя | Поле сортировки. Варианты: name, slug, count, term_id |
| заказ | string | ASC | Порядок сортировки. Варианты: ASC, DESC |
| по области применения | string | Поисковый запрос для фильтрации результатов | |
| скрыть_пустой | логический | ложный | Скрывать ли пустые термины |
Пример ответа:
{
"data": {
"categories": [
{
"id": 1,
"name": "Music",
"slug": "music",
"description": "",
"count": 5,
"taxonomy": "mec_category",
"icon": "",
"color": "",
"fallback_image": "",
"parent": 0
}
],
"pagination": {
"current_page": 1,
"per_page": 20,
"total": 1,
"total_pages": 1
}
},
"status": 200
}
Примечание:
- До
categoriesКаждый предмет включает в себяicon,color,fallback_imageиparentполей. - До
labelsКаждый предмет включает в себяcolorиstyleполей. - До
speakersКаждый предмет включает в себяtype,job_title,tel,email,website,mec_index,facebook,twitter,instagram,linkedinиthumbnailполей. - До
sponsorsКаждый предмет включает в себяlinkиlogoполей. - До
tags, только поля терминов по умолчанию (id,name,slug,description,count,taxonomyвозвращаются ) - Для обеспечения доступности необходимо включить возможность добавления докладчиков и спонсоров в настройках MEC.
Получить сущность единой таксономии
GET /taxonomies/{entity}/{id}
Параметры пути:
| Параметр | Тип | Описание |
| организация | string | Тип сущности. Один из следующих вариантов: categories, tags, labels, speakers, sponsors |
| id | Int | Термин ID |
Пример ответа (категория):
{
"data": {
"category": {
"id": 1,
"name": "Music",
"slug": "music",
"description": "",
"count": 5,
"taxonomy": "mec_category",
"icon": "",
"color": "#ff0000",
"fallback_image": "",
"parent": 0
}
},
"status": 200
}
Пример ответа (выступающего):
{
"data": {
"speaker": {
"id": 2,
"name": "John Doe",
"slug": "john-doe",
"description": "",
"count": 3,
"taxonomy": "mec_speaker",
"type": "person",
"job_title": "CEO",
"tel": "+1234567890",
"email": "[email protected]",
"website": "https://example.com",
"mec_index": "1",
"facebook": "https://facebook.com/johndoe",
"twitter": "https://twitter.com/johndoe",
"instagram": "",
"linkedin": "",
"thumbnail": ""
}
},
"status": 200
}
Пример ответа (спонсора):
{
"data": {
"sponsor": {
"id": 3,
"name": "Acme Inc",
"slug": "acme-inc",
"description": "",
"count": 2,
"taxonomy": "mec_sponsor",
"link": "https://acme.com",
"logo": "https://example.com/logo.png"
}
},
"status": 200
}
Пример ответа (метка):
{
"data": {
"label": {
"id": 5,
"name": "Featured",
"slug": "featured",
"description": "",
"count": 12,
"taxonomy": "mec_label",
"color": "#ff0000",
"style": ""
}
},
"status": 200
}
Пример ответа (тег):
{
"data": {
"tag": {
"id": 7,
"name": "Workshop",
"slug": "workshop",
"description": "Hands-on workshop sessions",
"count": 8,
"taxonomy": ""
}
},
"status": 200
}
Создать сущность таксономии
POST /taxonomies/{entity}
Параметры пути:
| Параметр | Тип | Описание |
| организация | string | Тип сущности. Один из следующих вариантов: categories, tags, labels, speakers, sponsors |
Тело запроса:
Общие параметры для всех типов сущностей:
| Параметр | Тип | необходимые | Описание |
| имя | string | Да | Имя сущности |
| слизняк | string | Нет | URL-удобный слаг (сгенерирован автоматически, если опущен) |
| описание | string | Нет | Описание объекта |
Параметры, специфичные для сущности:
До categories:
| Параметр | Тип | необходимые | Описание |
| родителя | Int | Нет | Родитель category ID |
| значок | string | Нет | CSS-класс для category значок |
| цвете | string | Нет | Шестнадцатеричный цветовой код (например, #ff0000) |
| fallback_image | string | Нет | URL для резервного изображения |
До labels:
| Параметр | Тип | необходимые | Описание |
| цвете | string | Нет | Шестнадцатеричный цветовой код для этикетки |
| стиль | string | Нет | Стиль этикетки |
До speakers:
| Параметр | Тип | необходимые | Описание |
| напишите | string | Нет | person or group. Дефолт: person |
| название работы | string | Нет | Должность выступающего |
| телефон | string | Нет | Номер телефона |
| string | Нет | ||
| . | string | Нет | ссылка на сайт |
| mec_index | Int | Нет | Отображаемый индекс порядка. По умолчанию: 99 |
| string | Нет | URL-адрес профиля Facebook | |
| string | Нет | URL-адрес профиля Твиттера | |
| string | Нет | URL-адрес профиля Instagram | |
| string | Нет | URL профиля LinkedIn | |
| миниатюрами | string | Нет | URL миниатюрного изображения |
До sponsors:
| Параметр | Тип | необходимые | Описание |
| ссылка. | string | Нет | URL-адрес сайта спонсора |
| логотип | string | Нет | URL изображения логотипа спонсора |
Пример запроса (Категория):
{
"name": "Conference",
"slug": "conference",
"description": "Conference events",
"color": "#3498db",
"icon": "mec-fa-video"
}
Запрос на выступление (докладчика):
{
"name": "Jane Smith",
"job_title": "Keynote Speaker",
"email": "[email protected]",
"type": "person",
"twitter": "https://twitter.com/janesmith"
}
Запрос образца (спонсор):
{
"name": "Tech Corp",
"link": "https://techcorp.com",
"logo": "https://techcorp.com/logo.png"
}
Образец запроса (метка):
{
"name": "VIP",
"color": "#9b59b6",
"style": ""
}
Пример запроса (тег):
{
"name": "Technology",
"description": "Technology-related events"
}
Пример ответа:
{
"data": {
"success": 1,
"category": {
"id": 10,
"name": "Conference",
"slug": "conference",
"description": "Conference events",
"count": 0,
"taxonomy": "mec_category",
"icon": "mec-fa-video",
"color": "#3498db",
"fallback_image": "",
"parent": 0
}
},
"status": 200
}
Обновить сущность таксономии
PUT /taxonomies/{entity}/{id}
Параметры пути:
| Параметр | Тип | Описание |
| организация | string | Тип сущности. Один из следующих вариантов: categories, tags, labels, speakers, sponsors |
| id | Int | Идентификатор термина для обновления |
Тело запроса:
Те же параметры, что и при создании. Укажите только те поля, которые хотите обновить.
Пример запроса:
{
"name": "International Conference",
"color": "#e74c3c"
}
Пример ответа:
{
"data": {
"success": 1,
"category": {
"id": 10,
"name": "International Conference",
"slug": "conference",
"description": "Conference events",
"count": 0,
"taxonomy": "mec_category",
"icon": "mec-fa-video",
"color": "#e74c3c",
"fallback_image": "",
"parent": 0
}
},
"status": 200
}
Удалить сущность таксономии
DELETE /taxonomies/{entity}/{id}
Параметры пути:
| Параметр | Тип | Описание |
| организация | string | Тип сущности. Один из следующих вариантов: categories, tags, labels, speakers, sponsors |
| id | Int | Идентификатор термина для обновления |
Пример ответа:
{
"data": {
"success": 1
},
"status": 200
}
Ответы на ошибки
Сущность не найдена (404):
{
"data": {
"code": "404",
"message": "Taxonomy entity not found!"
},
"status": 404
}
Несанкционированный доступ (401):
{
"data": {
"code": "401",
"message": "You're not authorized to manage this taxonomy!"
},
"status": 401
}
Ошибка проверки (400):
{
"data": {
"code": "400",
"message": "Name field is required!"
},
"status": 400
}
Настраиваемые поля
GET /config/custom-fields
Это публичная команда, то есть ее могут выполнить все пользователи, имеющие ключ API.
Запрос
Нет.
Режимы секции мощности
Если команда выполнена успешно, вы получите следующий ответ, в противном случае будет возвращен объект ошибки с правильным http-кодом.
{
"success": 1,
"fields": {
"1": {
"mandatory": "1",
"type": "text",
"label": "Your Comment"
},
"2": {
"mandatory": "0",
"type": "date",
"label": "Preferred Date"
},
"3": {
"mandatory": "0",
"ignore": "0",
"type": "select",
"label": "Gender",
"options": {
"1": {
"label": "Male"
},
"2": {
"label": "Female"
}
}
}
}
}
Иконки
GET /config/icons
Это публичная команда, то есть ее могут выполнить все пользователи, имеющие ключ API.
Запрос
Нет.
Режимы секции мощности
Если команда выполнена успешно, вы получите следующий ответ, в противном случае будет возвращен объект ошибки с правильным http-кодом.
{
"success": 1,
"icons": [
{
"name": "Location Marker Icon",
"default": "<i class=\"mec-sl-location-pin\"></i>",
"modules": [
"single",
"shortcode"
],
"value": "<img class=\"mec-custom-image-icon\" src=\"http://site.com/wp-content/uploads/2025/03/location.jpg\" alt=\"location-pin\">"
}
]
}
Погода
GET /events/{id}/weather
Это публичная команда, то есть ее могут выполнить все пользователи, имеющие ключ API.
Запрос
Отправьте следующие параметры как строку запроса.
| Имя | Тип | Пример |
| даты | string | гггг-мм-дд |
Режимы секции мощности
Если команда выполнена успешно, вы получите следующий ответ, в противном случае будет возвращен объект ошибки с правильным http-кодом.
{
"success": 1,
"weather": {
"icon": "//cdn.weatherapi.com/weather/64x64/day/113.png",
"condition": "Sunny",
"temp_c": 13.699999999999999,
"temp_f": 56.700000000000003,
"wind_kph": 9,
"wind_mph": 5.5999999999999996,
"humidity": 58,
"feelslike_c": 13.199999999999999,
"feelslike_f": 55.799999999999997
}
}
Связанные события
GET /events/{id}/related-events
Это публичная команда, то есть ее могут выполнить все пользователи, имеющие ключ API.
Запрос
Нет.
Режимы секции мощности
Если команда выполнена успешно, вы получите следующий ответ, в противном случае будет возвращен объект ошибки с правильным http-кодом.
{
"success": 1,
"related_events": [
{
"id": 21,
"title": "Daily Event",
"url": "http://site.com/events/daily-event/",
"timestamp": 1746432000,
"date": "May 5, 2025"
}
]
}
Следующие / предыдущие события
GET /events/{id}/next-previous-events
Это публичная команда, то есть ее могут выполнить все пользователи, имеющие ключ API.
Запрос
Нет.
Режимы секции мощности
Если команда выполнена успешно, вы получите следующий ответ, в противном случае будет возвращен объект ошибки с правильным http-кодом.
{
"success": 1,
"next": {
"id": "21",
"title": "Daily Event",
"url": "http://rezamiri.test/events/daily-event/"
},
"previous": []
}
Следующие вхождения
GET /events/{id}/next-occurrences
Это публичная команда, то есть ее могут выполнить все пользователи, имеющие ключ API.
Запрос
Нет.
Режимы секции мощности
Если команда выполнена успешно, вы получите следующий ответ, в противном случае будет возвращен объект ошибки с правильным http-кодом.
{
"success": 1,
"occurrences": [
{
"start": {
"date": "2025-05-10",
"hour": "8",
"minutes": "0",
"ampm": "AM",
"timestamp": 1746864000
},
"end": {
"date": "2025-05-10",
"hour": 6,
"minutes": "0",
"ampm": "PM",
"timestamp": 1746900000
},
"allday": "0",
"hide_time": "0",
"past": 0
}
]
}
Поля участников
GET /config/attendee-fields
Это публичная команда, то есть ее могут выполнить все пользователи, имеющие ключ API.
Запрос
Нет.
Режимы секции мощности
Если команда выполнена успешно, вы получите следующий ответ, в противном случае будет возвращен объект ошибки с правильным http-кодом.
{
"success": 1,
"fields": [
{
"mandatory": "1",
"type": "mec_email",
"label": "Email"
},
{
"mandatory": "1",
"type": "name",
"label": "Name"
},
{
"mandatory": "0",
"type": "textarea",
"label": "Text",
"mapping": ""
}
]
}
Фиксированные поля
GET /config/fixed-fields
Это публичная команда, то есть ее могут выполнить все пользователи, имеющие ключ API.
Запрос
Нет.
Режимы секции мощности
Если команда выполнена успешно, вы получите следующий ответ, в противном случае будет возвращен объект ошибки с правильным http-кодом.
{
"success": 1,
"fields": {
"1": {
"mandatory": "0",
"type": "text",
"label": "Text"
},
"2": {
"mandatory": "1",
"type": "date",
"label": "Date"
}
}
}
Варианты билетов
GET /config/ticket-variations
Это публичная команда, то есть ее могут выполнить все пользователи, имеющие ключ API.
Запрос
Нет.
Режимы секции мощности
Если команда выполнена успешно, вы получите следующий ответ, в противном случае будет возвращен объект ошибки с правильным http-кодом.
{
"success": 1,
"ticket_variations": {
"1": {
"title": "Pizza",
"price": "6",
"max": "2"
},
"2": {
"title": "Juice",
"price": "4",
"max": "3"
}
}
}
Налог/сборы за бронирование
GET /events/{id}/fees
Это публичная команда, то есть ее могут выполнить все пользователи, имеющие ключ API.
Запрос
Нет.
Режимы секции мощности
Если команда выполнена успешно, вы получите следующий ответ, в противном случае будет возвращен объект ошибки с правильным http-кодом.
{
"success": 1,
"fees": {
"1": {
"title": "Tax",
"amount": "12",
"type": "percent"
},
"2": {
"title": "Deposit",
"amount": "50",
"type": "amount_per_booking"
}
}
}
билеты
GET /events/{id}/tickets
Это публичная команда, то есть ее могут выполнить все пользователи, имеющие ключ API.
Запрос
| Имя | Тип | Пример |
| вхождение | string | гггг-мм-дд чч: мм: сс |
Режимы секции мощности
Если команда выполнена успешно, вы получите следующий ответ, в противном случае будет возвращен объект ошибки с правильным http-кодом.
{
"success": 1,
"tickets": {
"1": {
"name": "Ticket A",
"ticket_start_time_hour": "08",
"ticket_start_time_minute": "0",
"ticket_end_time_hour": "06",
"ticket_end_time_minute": "0",
"description": "",
"private_description": "",
"price": "8.97",
"price_label": "$8.97",
"limit": "",
"unlimited": "0",
"seats": "1",
"minimum_ticket": "1",
"maximum_ticket": "",
"stop_selling_value": "0",
"stop_selling_type": "day",
"dates": [],
"ticket_start_time_ampm": "AM",
"ticket_end_time_ampm": "PM",
"category_ids": [],
"id": 1,
"variations": {
"1": {
"title": "Pizza",
"price": "6",
"max": "2"
},
"2": {
"title": "Juice",
"price": "4",
"max": "3"
}
}
}
},
"availability": {
"1": 100,
"seats_1": 1,
"total": 100
}
}