HTTP метод: GET, POST
Авторизация: GET - не обязательна, POST - необходима
Query параметры для GET:
server: ID радиосервера
start_ts: начало диапазона в Unix timestamp
end_ts: конец диапазона в Unix timestamp
utc: необязательный флаг, `1` если `start_ts` и `end_ts` передаются в UTC
Этот endpoint позволяет получить события сетки вещания за выбранный диапазон времени и создать новое событие в расписании.
Как работает GET списка событий
При запросе списка API:
- получает события для указанного сервера;
- разворачивает periodic-события в реальные вхождения по дням недели и неделям месяца;
- автоматически вычисляет
finish_date,finish_timeиend_tsна основе следующего события или окончания radioshow; - может добавлять служебное событие завершения radioshow, если у эфира задан
playlist_after_radioshowилиrotation_after_radioshow.
Пример: GET
Получить сетку вещания для сервера с ID 1 на определённый диапазон:
import requests
response = requests.get(
"https://demo.streaming.center:1030/api/v2/grid/?server=1&start_ts=1744041600&end_ts=1744646400&utc=1"
)
print(response.json())Пример ответа
[
{
"id": 10,
"server": 1,
"name": "Morning show",
"periodicity": "onetime",
"cast_type": "radioshow",
"break_track": true,
"start_playlist_from_beginning": true,
"start_date": "2026-04-08",
"start_time": "08:00:00",
"finish_date": "2026-04-08",
"finish_time": "10:00:00",
"wd_mon": false,
"wd_tue": false,
"wd_wed": false,
"wd_thu": false,
"wd_fri": false,
"wd_sat": false,
"wd_sun": false,
"week_1": false,
"week_2": false,
"week_3": false,
"week_4": false,
"playlist": 2,
"playlist_after_radioshow": 1,
"rotation_after_radioshow": null,
"dj": null,
"rotation": null,
"allow_jingles": true,
"allow_song_requests": true,
"allow_jingles_after": true,
"allow_song_requests_after": true,
"color": "#87c95f",
"color2": "#a2e47a",
"local_time": "08:00:00",
"timezone": "Europe/Moscow",
"parent_id": null,
"start_ts": 1744099200,
"start_ts_utc_readable": "2026-04-08T05:00:00Z",
"end_ts": 1744106400
},
{
"id": null,
"server": 1,
"name": "All music",
"periodicity": "onetime",
"cast_type": "playlist",
"break_track": false,
"start_playlist_from_beginning": true,
"start_date": "2026-04-08",
"start_time": "10:00:00",
"finish_date": "2026-04-08",
"finish_time": "12:00:00",
"playlist": 1,
"playlist_after_radioshow": null,
"rotation_after_radioshow": null,
"dj": null,
"rotation": null,
"allow_jingles": true,
"allow_song_requests": true,
"allow_jingles_after": false,
"allow_song_requests_after": false,
"color": "#a2e47a",
"color2": null,
"local_time": "10:00:00",
"timezone": "UTC",
"parent_id": 10,
"start_ts": 1744106400,
"start_ts_utc_readable": "2026-04-08T07:00:00Z",
"end_ts": 1744113600
}
]Поля объекта события
- id: ID события. У служебных событий завершения radioshow может быть
null. - server: ID радиосервера.
- name: название события.
- periodicity: тип периодичности,
onetimeилиperiodic. - cast_type: режим события. В модели используются значения
playlist,radioshow,relay,rotation. - break_track: прерывать ли текущий трек при старте события.
- start_playlist_from_beginning: запускать ли плейлист с начала.
- start_date: дата начала события.
- start_time: время начала события.
- finish_date: дата окончания события.
- finish_time: время окончания события.
- wd_mon: признак повтора по понедельникам.
- wd_tue: признак повтора по вторникам.
- wd_wed: признак повтора по средам.
- wd_thu: признак повтора по четвергам.
- wd_fri: признак повтора по пятницам.
- wd_sat: признак повтора по субботам.
- wd_sun: признак повтора по воскресеньям.
- week_1: активна ли первая неделя месяца.
- week_2: активна ли вторая неделя месяца.
- week_3: активна ли третья неделя месяца.
- week_4: активна ли четвёртая неделя месяца.
- playlist: ID плейлиста, если событие запускает плейлист или radioshow-плейлист.
- playlist_after_radioshow: ID плейлиста, который должен стартовать после radioshow.
- rotation_after_radioshow: ID ротации, которая должна стартовать после radioshow.
- dj: ID DJ, если событие связано с DJ.
- rotation: ID ротации.
- allow_jingles: разрешены ли джинглы во время события.
- allow_song_requests: разрешены ли заказы треков во время события.
- allow_jingles_after: разрешены ли джинглы после radioshow.
- allow_song_requests_after: разрешены ли заказы треков после radioshow.
- color: основной цвет события.
- color2: дополнительный цвет события, обычно для продолжения после radioshow.
- local_time: локальное время события.
- timezone: таймзона события.
- parent_id: ID родительского radioshow-события для автоматически добавленного завершающего события.
- start_ts: Unix timestamp времени начала события.
- start_ts_utc_readable: UTC datetime начала события в читаемом формате.
- end_ts: Unix timestamp времени окончания события.
Поведение periodic событий
Если periodicity=periodic, то событие в списке разворачивается по выбранным дням недели wd_* и неделям месяца week_1 … week_4. Если в это же время существует onetime событие, приоритет получает onetime, и periodic-вхождение в ответ не попадает.
Пример: POST
Создать одноразовое событие для запуска плейлиста:
import requests
API_KEY = "your_api_key"
headers = {"SC-API-KEY": API_KEY}
response = requests.post(
"https://demo.streaming.center:1030/api/v2/grid/",
headers=headers,
json={
"server": 1,
"name": "Morning playlist",
"periodicity": "onetime",
"cast_type": "playlist",
"break_track": True,
"start_playlist_from_beginning": True,
"start_date": "2026-04-08",
"start_time": "08:00:00",
"playlist": 2,
"local_time": "08:00:00",
"timezone": "Europe/Moscow",
"color": "#87c95f"
}
)
print(response.json())Параметры POST
Основные параметры, которые используются при создании события:
- server: обязательный ID радиосервера.
- name: обязательное название события.
- periodicity: обязательный тип периодичности,
onetimeилиperiodic. - cast_type: обязательный режим события.
- break_track: нужно ли прерывать текущий трек.
- start_playlist_from_beginning: запускать ли плейлист с начала.
- start_date: обязательная дата начала для
onetimeсобытия. - start_time: обязательное время начала.
- finish_date: необязательная дата окончания.
- finish_time: необязательное время окончания.
- wd_mon, wd_tue, wd_wed, wd_thu, wd_fri, wd_sat, wd_sun: дни недели для
periodicсобытия. - week_1, week_2, week_3, week_4: недели месяца для
periodicсобытия. - playlist: ID плейлиста.
- playlist_after_radioshow: ID плейлиста после radioshow.
- rotation_after_radioshow: ID ротации после radioshow.
- dj: ID DJ.
- rotation: ID ротации.
- allow_jingles: разрешить джинглы.
- allow_song_requests: разрешить song requests.
- allow_jingles_after: разрешить джинглы после radioshow.
- allow_song_requests_after: разрешить song requests после radioshow.
- color: основной цвет события в hex-формате.
- color2: дополнительный цвет события в hex-формате.
- local_time: локальное время события.
- timezone: таймзона события.
Валидация событий
При создании и обновлении API проверяет ограничения модели и может вернуть ошибки валидации:
repeat_week_days_not_set: дляperiodicсобытия не выбран ни один день недели.repeat_weeks_not_set: дляperiodicсобытия не выбрана ни одна неделя месяца.playlist_required: событие требует плейлист, но полеplaylistне заполнено.time_slot_busy: выбранный слот уже занят другим событием.
В ответ на успешное создание API возвращает созданный объект события в JSON.
HTTP метод: GET, PUT, DELETE
Авторизация: GET - не обязательна, PUT и DELETE - необходимы
Параметры:
id: ID события сетки
Позволяет получить одно событие, обновить его или удалить.
Пример: GET
import requests
response = requests.get(
"https://demo.streaming.center:1030/api/v2/grid/10/"
)
print(response.json())В ответ возвращается один объект события с теми же полями, что и в списке.
Пример: PUT
import requests
API_KEY = "your_api_key"
headers = {"SC-API-KEY": API_KEY}
response = requests.put(
"https://demo.streaming.center:1030/api/v2/grid/10/",
headers=headers,
json={
"id": 10,
"server": 1,
"name": "Morning show updated",
"periodicity": "onetime",
"cast_type": "radioshow",
"break_track": True,
"start_playlist_from_beginning": True,
"start_date": "2026-04-08",
"start_time": "08:30:00",
"playlist": 2,
"playlist_after_radioshow": 1,
"allow_jingles": True,
"allow_song_requests": True,
"allow_jingles_after": True,
"allow_song_requests_after": True,
"local_time": "08:30:00",
"timezone": "Europe/Moscow",
"color": "#87c95f",
"color2": "#a2e47a"
}
)
print(response.json())Для PUT обычно передают полный объект события. В ответ API возвращает обновлённый объект.
Пример: DELETE
import requests
API_KEY = "your_api_key"
headers = {"SC-API-KEY": API_KEY}
response = requests.delete(
"https://demo.streaming.center:1030/api/v2/grid/10/",
headers=headers
)
print(response.status_code)При успешном удалении endpoint возвращает HTTP status 204 No Content.
HTTP метод: DELETE
Авторизация: необходима
Параметры:
server: ID радиосервера
Удаляет все события сетки вещания для указанного сервера.
Пример запроса
import requests
API_KEY = "your_api_key"
headers = {"SC-API-KEY": API_KEY}
response = requests.delete(
"https://demo.streaming.center:1030/api/v2/grid/clear/?server=1",
headers=headers
)
print(response.json())Пример ответа
{
"result": "ok"
}Практическое замечание по запросу списка
Для GET /api/v2/grid/ лучше всегда передавать одновременно server, start_ts и end_ts. Именно в таком виде этот endpoint рассчитывает диапазон календаря, разворачивает periodic события и корректно отфильтровывает события вне выбранного интервала.