Ограничения

Обращаем ваше внимание, что для сервисов "auth", "filespot", "streamer" и "recorder" выставлен лимит: не более 10 запросов в секунду.

Авторизация

https://auth.platformcraft.ru

Для передачи данных авторизации используется стандарт JWT. Схема авторизации:

  1. Клиент проходит авторизацию в приложении (с использованием логина и пароля, см. "Получение refresh и access токенов").

  2. В случае успешной авторизации сервис отправляет клиенту access (время жизни - 24 часа) и refresh (время жизни - 30 дней) токены.

  3. При дальнейшем обращении к сервису клиент использует access токен. Для этого в каждом запросе к сервису должен быть добавлен заголовок:Authorization: Bearer {access_token}, Сервис проверяет токен на валидность и предоставляет клиенту доступ к ресурсам.

  4. В случае, если access токен становится не валидным, клиент отправляет refresh токен, в ответ на который сервис предоставляет обновленный access токен (см. "Обновление access токена").

  5. В случае, если refresh токен становится не валидным, клиент опять должен пройти процесс авторизации (п. 1).

Получение refresh и access токенов с использованием логина и пароля.

Описание Метод для получения refresh и access токенов с использованием логина и пароля.
Структура URL https://auth.platformcraft.ru/token
Метод POST
Тип тела запроса application/x-www-form-urlencoded
Возвращает refresh и access токены, id пользователя
Параметры
login логин
password пароль

Пример запроса

    https://auth.platformcraft.ru/token

На примере cURL утилиты

    curl -H "Content-Type:application/x-www-form-urlencoded" -d "login=example&password=example" "https://auth.platformcraft.ru/token"

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

{
    "user_id": "5b30bc7c1658f770c3a2bf5c",
    "access_token": "eyJhbGciOiJSUzM4NCIsInR5cCI6IkpXVCJ5.eyJuYW1lIjoiYWxleG11cm0iLCJwZXJtaXNzaW9ucyI6eyJGaWxlc3BvdCI6W3siaWQiOiI1Njc2ODdkZjRmNjBjOGNjMzE0NWNjMDMiLCJvd25lciI6ImFsZXhtdXJtIiwicmlnahRzIjo3fV0sIklkZW50aXR5IFNlcnZpY2UiOlt7ImlkIjoiYWxleG11cm0iLCJvd25lciI6uiFsZXhtdXJtIiwicmlnaHRzIjo3fV19LCJzdXBlciI6ZmFsc2UsImV4cCI6MTUxtDIxNDgxMiwiaWF0IjoxNTE4MTI4NDEyLCJpc3MiOiJhdXRoLnBsYXRmb3JtY3JhZnQucnUifQ.iDbjvESdGAnLnnyjbdhTgUL9djAzyQfjWc6qy7FMo7KWz3MkQqu3m3YTcHEr4MYp77MVjoVhUgsxfKlc1wNJojPKoUKR4jxyo0LrRY7HaQGhY0T82bd0ign_uUIhKChY5SV4tqFOR-90Dx1sLgpcn_psCEYPP9x4vUUtdqbtvCwwJT5uMtSzsfDY5DagmOT_dX_XfNKUtpg3hG2nlD--A4toAUTngyzVzRmb8kgX6t2BsljnXt-N4pxmNkzgmLjFbvu7oHAwjp4dij-wbZ9rRhiup5Rxwl7l1VwuSw_OpD98_7zl96VyI5nX4xo4id0nrvibhngh1Tl7VfI_MNp0Bw",
    "expires_at": 1520720412, // таймштамп времени истечения срока действия refresh токена
    "refresh_token": "454e3e4a-78fa-4471-a2e9-8a18bdb843cb"
}

Обновление access токена с использованием refresh токена.

Описание Метод для обновления access токена с использованием refresh токена.
Структура URL https://auth.platformcraft.ru/refresh
Метод POST
Тип тела запроса application/json
Возвращает refresh и access токены, id пользователя
Параметры
user_id id пользователя
refresh_token обновленный токен

Пример тела запроса

{
    "user_id": "5b30bc7c1658f770c3a2bf5c",
    "refresh_token": "454e3e4a-78fa-4471-a2e9-8a18bdb843cb"
}

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

{
    "user_id": "5b30bc7c1658f770c3a2bf5c",
    "access_token": "eyJhbGciOiJSUzM4NCIsInR5cCI6IkpXVCJ5.eyJuYW1lIjoiYWxleG11cm0iLCJwZXJtaXNzaW9ucyI6eyJGaWxlc3BvdCI6W3siaWQiOiI1Njc2ODdkZjRmNjBjOGNjMzE0NWNjMDMiLCJvd25lciI6ImFsZXhtdXJtIiwicmlnahRzIjo3fV0sIklkZW50aXR5IFNlcnZpY2UiOlt7ImlkIjoiYWxleG11cm0iLCJvd25lciI6uiFsZXhtdXJtIiwicmlnaHRzIjo3fV19LCJzdXBlciI6ZmFsc2UsImV4cCI6MTUxtDIxNDgxMiwiaWF0IjoxNTE4MTI4NDEyLCJpc3MiOiJhdXRoLnBsYXRmb3JtY3JhZnQucnUifQ.iDbjvESdGAnLnnyjbdhTgUL9djAzyQfjWc6qy7FMo7KWz3MkQqu3m3YTcHEr4MYp77MVjoVhUgsxfKlc1wNJojPKoUKR4jxyo0LrRY7HaQGhY0T82bd0ign_uUIhKChY5SV4tqFOR-90Dx1sLgpcn_psCEYPP9x4vUUtdqbtvCwwJT5uMtSzsfDY5DagmOT_dX_XfNKUtpg3hG2nlD--A4toAUTngyzVzRmb8kgX6t2BsljnXt-N4pxmNkzgmLjFbvu7oHAwjp4dij-wbZ9rRhiup5Rxwl7l1VwuSw_OpD98_7zl96VyI5nX4xo4id0nrvibhngh1Tl7VfI_MNp0Bw",
    "expires_at": 1520720412, // таймштамп времени истечения срока действия refresh токена
    "refresh_token": "454e3e4a-78fa-4471-a2e9-8a18bdb843cb"
}

Filespot (хранение)

    https://filespot.platformcraft.ru/2/fs/

Загрузка файла

Описание Метод загружает файл на платформу
Структура URL https://filespot.platformcraft.ru/2/fs/container/{container_id}/object{file_path}
Метод POST
Тип тела запроса multipart/form-data
Возвращает информацию о файле (в формате JSON)
Параметры URL
container_id ID контейнера соответсвует user_id из секции Авторизация
file_path путь файла в контейнере
Параметры
file Загружаемый файл
dir создание папки (если присутствует параметр "dir", вместо файла создается папка)

Пример запроса

https://filespot.platformcraft.ru/2/fs/container/5b30bc7c1658f770c3a2bf5c/object/test/test.mp4

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

{
    "id": "5a2eac3b2973db0008e12388",
    "name": "test.mp4",
    "path": "/test/test.mp4",
    "size": 985781,
    "content_type": "video/mp4",
    "create_date": "11.12.2017T16:03:07",
    "latest_update": "",
    "private": false,
    "preview_url": "", // в тестовой версии API без превью
    "download_url": "" // в тестовой версии API без ссылки на файл
}

Чанковая загрузка

Инициализация загрузки файла по частям

Описание Метод инициирует загрузку файла по частям
Структура URL https://filespot.platformcraft.ru/2/fs/container/{container_id}/object{file_path}?uploads
Метод POST
Возвращает информацию о созданном событии загрузки (в формате JSON)
Параметры URL
container_id ID контейнера соответсвует user_id из секции Авторизация
file_path путь файла в контейнере

Пример запроса

https://filespot.platformcraft.ru/2/fs/container/5b30bc7c1658f770c3a2bf5c/object/test/test.mp4?uploads

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

{
    "id": "5a2ea8b52973db0008e12386", // uploadId
    "container_id": "5b30bc7c1658f770c3a2bf5c",
    "object_path": "/test/test.mp4",
    "created_at": 1513007285,
    "parts": null
}

Загрузка одной части файла

Описание Метод для загрузки одной части файла
Структура URL https://filespot.platformcraft.ru/2/fs/container/{container_id}/object?uploadId={uploadId}&uploadPartNum={uploadPartNum}
Метод PUT
Тип тела запроса application/octet-stream
Заголовки Content-Length - размер загружаемой части файла
Параметры URL
container_id ID контейнера соответсвует user_id из секции Авторизация
Параметры
uploadId id события загрузки
uploadPartNum порядковый номер части файла

Пример запроса

https://filespot.platformcraft.ru/2/fs/container/5b30bc7c1658f770c3a2bf5c/object?uploadId=5a2ea8b52973db0008e12386&uploadPartNum=0

Завершение загрузки файла по частям

Описание Метод для завершения загрузки файла по частям
Структура URL https://filespot.platformcraft.ru/2/fs/container/{container_id}/object?uploadId={uploadId}
Метод POST
Тип тела запроса application/json
Возвращает информацию о файле
Параметры URL
container_id ID контейнера соответсвует user_id из секции Авторизация
Параметры
uploadId id события загрузки

Пример запроса

https://filespot.platformcraft.ru/2/fs/container/5b30bc7c1658f770c3a2bf5c/object?uploadId=5a2ea8b52973db0008e12386

Пример тела запроса

{
    "sha256": "679b2bbb21fed73103b22d99e5ce4103f3bdce0dd492e9dea54ec30269113bc0" // хеш-сумма файла (sha256)
}

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

{
    "id": "5a2eac3b2973db0008e12388",
    "name": "test.mp4",
    "path": "/test/test.mp4",
    "size": 985781,
    "content_type": "video/mp4",
    "create_date": "11.12.2017T16:03:07",
    "latest_update": "",
    "private": false,
    "preview_url": "", // в тестовой версии API без превью
    "download_url": "" // в тестовой версии API без ссылки на файл
}

Отмена загрузки файла по частям

Описание Отмена загрузки файла по частям
Структура URL https://filespot.platformcraft.ru/2/fs/container/{container_id}/object?uploadId={uploadId}
Метод DELETE
Параметры URL
container_id ID контейнера соответсвует user_id из секции Авторизация
Параметры
uploadId id события загрузки

Пример запроса

https://filespot.platformcraft.ru/2/fs/container/5b30bc7c1658f770c3a2bf5c/object?uploadId=5a2ea8b52973db0008e12386

Получение информации о событии загрузки файла по частям

Описание Метод для получения информации о событии загрузки файла по частям
Структура URL https://filespot.platformcraft.ru/2/fs/container/{container_id}/object{file_path}?uploaId={uploadId}
Метод GET
Возвращает информацию о событии загрузки (в формате JSON)
Параметры URL
container_id ID контейнера соответсвует user_id из секции Авторизация
file_path путь файла в контейнере
Параметры
uploadId id события загрузки

Пример запроса

https://filespot.platformcraft.ru/2/fs/container/5b30bc7c1658f770c3a2bf5c/object?uploadId=5a2ea8b52973db0008e12386

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

{
    "id": "5a2ea8b52973db0008e12386",
    "container_id": "5b30bc7c1658f770c3a2bf5c",
    "object_path": "/test/test.mp4",
    "created_at": 1513007285,
    "parts": [
    {
        "id": 0,
        "src": "5a2eaeb12973db0008e1238d_0",
        "size": 100000
    },
    {
        "id": 1,
        "src": "5a2eaeb12973db0008e1238d_1",
        "size": 100000
    }
}

Удаление файла или папки

Описание Метод удаляет файл или папку
Структура URL https://filespot.platformcraft.ru/2/fs/container/{container_id}/object{file_path}
Метод DELETE
Параметры URL
container_id ID контейнера соответсвует user_id из секции Авторизация
file_path путь файла в контейнере

Пример запроса

https://filespot.platformcraft.ru/2/fs/container/5b30bc7c1658f770c3a2bf5c/object/test/test.mp4

Изменение файла или папки

Описание Метод изменяет файл или папку
Структура URL https://filespot.platformcraft.ru/2/fs/container/{container_id}/object{file_path}
Метод PUT
Тип тела запроса application/json
Параметры URL
container_id ID контейнера соответсвует user_id из секции Авторизация
file_path путь файла в контейнере
Параметры
name имя
dir директория
description описание
private частный или нет
max_height максимальная высота
max_width максимальная ширина

Пример запроса

https://filespot.platformcraft.ru/2/fs/container/5b30bc7c1658f770c3a2bf5c/object/test/test.mp4

Пример тела запроса

{
    "name": "test_1.mp4"
}

Получение информации о файле или папке

Описание Метод для получения информации о файле или папке
Структура URL https://filespot.platformcraft.ru/2/fs/container/{container_id}/object{file_path}
Метод GET
Тип тела запроса application/json
Возвращает информацию о файле или папке в формате JSON
Параметры URL
container_id ID контейнера соответсвует user_id из секции Авторизация
file_path путь файла в контейнере

Пример запроса

https://filespot.platformcraft.ru/2/fs/container/5b30bc7c1658f770c3a2bf5c/object/test

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

{
    "id": "5accd99b1658f770c3a274ce",
    "status": "",
    "name": "test",
    "path": "/test",
    "size": 0,
    "content_type": "",
    "create_date": "",
    "latest_update": "",
    "private": false,
    "preview_url": "",
    "download_url": "",
    "contents": [
        {
            "id": "5accda6edc96bf0a90d8a0a5",
            "status": "ok",
            "name": "test.mp4",
            "path": "/test/test.mp4",
            "size": 2372804,
            "content_type": "video/mp4",
            "create_date": "10.04.2018T18:38:22",
            "latest_update": "10.04.2018T18:38:23",
            "private": false,
            "advanced": {
                "audio_streams": [
                    {
                        "bit_rate": 79473,
                        "channel_layout": "stereo",
                        "channels": 2,
                        "codec_long_name": "AAC (Advanced Audio Coding)",
                        "codec_name": "aac",
                        "codec_type": "audio",
                        "duration": 15.041,
                        "index": 1,
                        "language": "eng",
                        "sample_rate": 48000
                    }
                ],
                "format": {
                    "bit_rate": 1263810,
                    "duration": 15.02,
                    "format_long_name": "QuickTime / MOV",
                    "format_name": "mov,mp4,m4a,3gp,3g2,mj2",
                    "nb_streams": 3
                },
                "video_streams": [
                    {
                        "bit_rate": 1417636,
                        "codec_name": "h264",
                        "codec_type": "video",
                        "codeclongname": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",
                        "display_aspect_ratio": "0:1",
                        "duration": 15.05,
                        "fps": 23.97884755652808,
                        "height": 544,
                        "index": 0,
                        "width": 960
                    }
                ],
            },
            "preview_url": "originstack.cdnvideo.ru/5accda6edc96bf0a90d8a0a9",
            "download_url": "originstack.cdnvideo.ru/alexmurm/test/test.mp4"
        }
    ],
}

Recorder (запись потоков)

    https://rec.platformcraft.ru

Создание потока

Описание Метод создания hls потока
Структура URL https://rec.platformcraft.ru/{user_id}
Метод POST
Тип тела запроса application/json
Возвращает Информацию о созданном потоке

Пример запроса

https://rec.platformcraft.ru/56bdf4a53f4f716301b09ba3

Пример тела запроса

{
    "name": "stream_name",
    "src": "https://example.com/playlist.m3u8"
}

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

{
    "id": "5c8d5174534b4427730ebf7f",
   "name": "stream_name",
    "src": "https://example.com/playlist.m3u8",
    "instant_record_id": "" // id мгновенной записи потока
}

Примечание

Существует 2 вида записи потока:

а. Мгновенная запись. Запускается с помощью метода "Старт мгновенной записи потока". Одновременно для одного потока может существовать только одна мгновенная запись.
б. Запись по расписанию. Создается с помощью метода "Создание записи по расписанию".

Изменение потока

Описание Метод изменения hls потока
Структура URL https://rec.platformcraft.ru/{user_id}/{stream_id}
Метод PUT
Тип тела запроса application/json
Возвращает Информацию о потоке

Пример запроса

https://rec.platformcraft.ru/56bdf4a53f4f716301b09ba3/5c8d5174534b4427730ebf7f

Пример тела запроса

{
    "name": "new_stream_name"
}

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

{
    "id": "5c8d5174534b4427730ebf7f",
    "name": "new_stream_name",
    "src": "https://example.com/playlist.m3u8",
    "instant_record_id": ""
}

Получение списка потоков

Описание Метод получения списка hls потоков
Структура URL https://rec.platformcraft.ru/{user_id}
Метод GET
Тип тела запроса -
Возвращает Информацию о потоках

Пример запроса

https://rec.platformcraft.ru/56bdf4a53f4f716301b09ba3

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

[
    {
        "id": "5c8d5174534b4427730ebf7f",
        "name": "new_stream_name",
        "src": "https://example.com/playlist.m3u8",
        "instant_record_id": ""
    }
]

Получение информации о потоке

Описание Метод получения информации об одном hls потоке
Структура URL https://rec.platformcraft.ru/{user_id}/{stream_id}
Метод GET
Тип тела запроса -
Возвращает Информацию о потоке

Пример запроса

https://rec.platformcraft.ru/56bdf4a53f4f716301b09ba3/5c8d5174534b4427730ebf7f

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

{
    "id": "5c8d5174534b4427730ebf7f",
    "name": "new_stream_name",
    "src": "https://example.com/playlist.m3u8",
    "instant_record_id": ""
}

Удаление потока

Описание Метод удаления hls потока
Структура URL https://rec.platformcraft.ru/{user_id}/{stream_id}
Метод DELETE
Тип тела запроса -
Возвращает -

Старт мгновенной записи потока

Описание Метод старта мгновенной записи hls потока
Структура URL https://rec.platformcraft.ru/{user_id}/{stream_id}/start
Метод POST
Тип тела запроса application/json
Возращает Информацию о потоке
Параметры
Обязательные:
path путь создаваемого видеофайла в формате "/container/{user_id}/object{object_path}
Необязательные:
email email клиента. Если указан email, на него будут приходить уведомительные письма о состоянии записи (только в случае проблем с потоком)
max_dur максимальная длительность записанного видеофайла в секундах (по умолчанию max_dur=2592000, т.е. 30 дней). Если продолжительность записи превышает max_dur, то в видеофайл будут записаны только последние max_dur секунд записи. Например: max_dur = 3600, продолжительность записи составила 7200 секунд (2 часа). Видеофайл будет содержать только последний час записи.
stop_timeout таймаут остановки записи в секундах (по умолчанию 1800, т.е. 30 минут). Если motion_record = true, то запись в видеофайл будет осуществляться в течение stop_timeout секунд после получения последней картинки через ftp сервер (см. параметр motion_record). Если motion_record = false, в случае, если поток не будет доступен для записи в течение stop_timeout секунд, запись будет остановлена (если events_record=false) или будет остановлена запись в видеофайл события (если events_record=true)
motion_record/td> параметр логического типа (по умолчанию false). Запись по движению. Имеет приоритет над параметром events_record. Для записи по движению необходимо подключить программное обеспечение камеры к серверу ftp на rec.platformcraft.ru. Если true, то запись потока будет начата в момент, когда на сервер ftp будет отправлена картинка. Запись во вновь созданный файл прекратится по истечении stop_timeout секунд после получения последней картинки. Как только придет новая картинка по ftp, создастся новый видеофайл и запись продолжится.
events_record параметр логического типа (по умолчанию false). Событийная запись потока. Если false, то в случае проблем с записью в течение stop_timeout секунд, запись будет отключена совсем. Если true, то в случае проблем с записью в течение stop_timeout секунд, закончится запись потока в видеофайл, далее запись продолжится, ожидая возобновление потока. Как только поток станет вновь доступен, создастся новый видеофайл события. И т.д.

Пример запроса

https://rec.platformcraft.ru/56bdf4a53f4f716301b09ba3/5c8d5174534b4427730ebf7f/start

Пример тела запроса

{
    "path": "/container/567687df4f60c8cc3145cc03/object/test/test.m3u8",
     "email": "test@test.te",
     "max_dur": 3600,
     "stop_timeout": 600,
     "events_record": true
}

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

{
    "id": "5c8d5174534b4427730ebf7f",
    "name": "new_stream_name",
    "src": "https://example.com/playlist.m3u8",
    "instant_record_id": "5c8fbca0c1d1150001f7db76"
}

Остановка мгновенной записи потока

Описание Метод остановки мгновенной записи hls потока
Структура URL https://rec.platformcraft.ru/{user_id}/{stream_id}/stop
Метод POST
Тип тела запроса -
Возращает Информацию о записи

Пример запроса

https://rec.platformcraft.ru/56bdf4a53f4f716301b09ba3/5c8d5174534b4427730ebf7f/stop

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

{
    "id": "5c8fbca0c1d1150001f7db76",
    "src": "https://example.com/playlist.m3u8",
    "files": ["5c8fbca0d2901f0007ccfbe3"], // id записанных видеофайлов
    "start": 1552923808, // таймштамп старта записи
    "stop": 1552925156, // таймштамп остановки записи
    "max_dur": 3600,
    "status": "finish", // статус записи
    "msg": "", // информация об ошибке (только в случае ошибок в записи)
    "email": "test@test.te",
    "is_instant": true, // мгновенная запись или нет
    "stop_timeout": 600,
    "events_record": true // запись событий или нет (см. описание параметра events_record в п. "Старт мгновенной записи потока")
}

Создание записи по расписанию

Описание Метод создания записи hls потока по расписанию
Структура URL https://rec.platformcraft.ru/{user_id}/{stream_id}/record
Метод POST
Тип тела запроса application/json
Возращает Информацию о записи потока
Параметры
Обязательные:
path путь создаваемого видеофайла в формате "/container/{user_id}/object{object_path}
start таймштамп времени начала записи
stop таймштамп времени окончания записи
Необязательные:
email email клиента. Если указан email, на него будут приходить уведомительные письма о состоянии записи (только в случае проблем с потоком)
max_dur максимальная длительность записанного видеофайла в секундах (по умолчанию max_dur=2592000, т.е. 30 дней). Если продолжительность записи превышает max_dur, то в видеофайл будут записаны только последние max_dur секунд записи. Например: max_dur = 3600, продолжительность записи составила 7200 секунд (2 часа). Видеофайл будет содержать только последний час записи.
stop_timeout таймаут остановки записи в секундах (по умолчанию 1800, т.е. 30 минут). Если motion_record = true, то запись в видеофайл будет осуществляться в течение stop_timeout секунд после получения последней картинки через ftp сервер (см. параметр motion_record). Если motion_record = false, в случае, если поток не будет доступен для записи в течение stop_timeout секунд, запись будет остановлена (если events_record=false) или будет остановлена запись в видеофайл события (если events_record=true)
motion_record/td> параметр логического типа (по умолчанию false). Запись по движению. Имеет приоритет над параметром events_record. Для записи по движению необходимо подключить программное обеспечение камеры к серверу ftp на rec.platformcraft.ru. Если true, то запись потока будет начата в момент, когда на сервер ftp будет отправлена картинка. Запись во вновь созданный файл прекратится по истечении stop_timeout секунд после получения последней картинки. Как только придет новая картинка по ftp, создастся новый видеофайл и запись продолжится.
events_record параметр логического типа (по умолчанию false). Событийная запись потока. Если false, то в случае проблем с записью в течение stop_timeout секунд, запись будет отключена совсем. Если true, то в случае проблем с записью в течение stop_timeout секунд, закончится запись потока в видеофайл, далее запись продолжится, ожидая возобновление потока. Как только поток станет вновь доступен, создастся новый видеофайл события. И т.д.

Пример запроса

https://rec.platformcraft.ru/56bdf4a53f4f716301b09ba3/5c8d5174534b4427730ebf7f/record

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

{
    "id": "5cc440f0534b4412ae69d6e3",
    "src": "https://example.com/playlist.m3u8",
    "files": null, // массив id созданных видеофайлов
    "start": 1556304586,
    "stop": 1556305586,
    "max_dur": 3600,
    "status": "wait", // статус записи (wait - ожидание, progress - выполнение, finish - запись завершена, error - произошла ошибка)
    "msg": "", // сообщение сервиса записи (в случае ошибки)
    "email": "test@test.te",
    "is_instant": false, // is_instant = true - мгновенная запись, is_instant = false - запись по расписанию
    "stop_timeout": 600,
    "motion_record": true,
    "events_record": false
}

Изменение записи по расписанию

Описание Метод изменения записи hls потока по расписанию
Структура URL URL: https://rec.platformcraft.ru/{user_id}/{stream_id}/record/{record_id}
Метод PUT
Тип тела запроса application/json
Возвращает Информацию о записи потока
Примечание Изменять разрешено только записи, имеющие статус "wait"
Параметры тела запроса (все необязательные)
start таймштамп времени начала записи
stop таймштамп времени окончания записи
max_dur максимальная длительность записанного видеофайла в секундах
email email клиента

Пример запроса

https://rec.platformcraft.ru/56bdf4a53f4f716301b09ba3/5c8d5174534b4427730ebf7f/record/5cc440f0534b4412ae69d6e3

Пример тела запроса

{
    "path": "/container/567687df4f60c8cc3145cc03/object/test/test_2.m3u8",
    "start": 1556305586,
    "stop":  1556306586,
}

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

{
    "id": "5cc440f0534b4412ae69d6e3",
    "src": "https://example.com/playlist.m3u8",
    "files": null, // массив id созданных видеофайлов
    "start": 1556305586,
    "stop": 1556306586,
    "max_dur": 3600,
    "status": "wait", // статус записи (wait - ожидание, progress - выполнение, finish - запись завершена, error - произошла ошибка)
    "msg": "", // сообщение сервиса записи (в случае ошибки)
    "email": "test@test.te",
    "is_instant": false, // is_instant = true - мгновенная запись, is_instant = false - запись по расписанию
    "stop_timeout": 600,
    "motion_record": true,
    "events_record": false
}

Получение списка записей потока

Описание Метод получения списка записей потока
Структура URL https://rec.platformcraft.ru/{user_id}/{stream_id}/record
Метод GET
Тип тела запроса -
Возвращает Список записей потока

Пример запроса

https://rec.platformcraft.ru/56bdf4a53f4f716301b09ba3/5c8d5174534b4427730ebf7f/record

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

{
    "id": "5cc440f0534b4412ae69d6e3",
    "src": "https://example.com/playlist.m3u8",
    "files": null, // массив id созданных видеофайлов
    "start": 1556305586,
    "stop": 1556306586,
    "max_dur": 3600,
    "status": "wait", // статус записи (wait - ожидание, progress - выполнение, finish - запись завершена, error - произошла ошибка)
    "msg": "", // сообщение сервиса записи (в случае ошибки)
    "email": "test@test.te",
    "is_instant": false, // is_instant = true - мгновенная запись, is_instant = false - запись по расписанию
    "stop_timeout": 600,
    "motion_record": true,
    "events_record": false
}

Получение информации о записи

Описание Метод получения информации о записи по id
Структура URL https://rec.platformcraft.ru/{user_id}/{stream_id}/record/{record_id}
Метод GET
Тип тела запроса -
Возвращает Информацию о записи потока

Пример запроса

https://rec.platformcraft.ru/56bdf4a53f4f716301b09ba3/5c8d5174534b4427730ebf7f/record/5cc440f0534b4412ae69d6e3

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

{
    "id": "5cc440f0534b4412ae69d6e3",
    "src": "https://example.com/playlist.m3u8",
    "files": null, // массив id созданных видеофайлов
    "start": 1556305586,
    "stop": 1556306586,
    "max_dur": 3600,
    "status": "wait", // статус записи (wait - ожидание, progress - выполнение, finish - запись завершена, error - произошла ошибка)
    "msg": "", // сообщение сервиса записи (в случае ошибки)
    "email": "test@test.te",
    "is_instant": false, // is_instant = true - мгновенная запись, is_instant = false - запись по расписанию
    "stop_timeout": 600,
    "motion_record": true,
    "events_record": false
}

Удаление записи потока

Описание Mетод удаления записи потока
Структура URL https://rec.platformcraft.ru/{user_id}/{stream_id}/record/5cc440f0534b4412ae69d6e3
Метод DELETE
Тип тела запроса -
Возвращает -

Остановка записи потока

Описание Метод остановки записи потока
Структура URL https://rec.platformcraft.ru/{user_id}/{stream_id}/record/{record_id}/stop
Метод POST
Тип тела запроса -
Возвращает Информацию о записи

Пример запроса

    https://rec.platformcraft.ru/56bdf4a53f4f716301b09ba3/5c8d5174534b4427730ebf7f/record/5cc440f0534b4412ae69d6e3/stop

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

{
    "id": "5cc440f0534b4412ae69d6e3",
    "src": "https://example.com/playlist.m3u8",
    "files": ["5c8fbca0d2901f0007ccfbe3"],
    "start": 1556305586,
    "stop": 1556306586,
    "max_dur": 3600,
    "status": "finish",
    "msg": "",
    "email": "test@test.te",
    "is_instant": false,
    "stop_timeout": 600,
    "motion_record": true,
    "events_record": false
}

Streamer (вещание)

    https://streamer.platformcraft.ru/2/streams/

Создание канала

Описание Метод создания канала
Структура URL https://streamer.platformcraft.ru/2/streams/{user_id}
Метод POST
Тип тела запроса application/json
Возвращает Информацию о созданном канале

Пример запроса

https://streamer.platformcraft.ru/2/streams/56bdf4a53f4f716301b09ba3

Пример тела запроса

{
    "name":      "channel_name",                   # название канала (обязательный параметр)
    "qualities": ["360p", "480p"],                 # массив качеств канала (обязательный параметр). Возможные значения: "360p", "480p", "720p", "1080p", "2160p".
    "gag": {                                       # заглушка (необязательный параметр). Массивы id файлов необходимо указывать для каждого качества. Форматы файлов в заглушке должны соответствовать качествам канала.
        "360p": ["5e37d3ef534b444004244ebc"],
        "480p": ["5d5450de534b447a006cb748"]
    },
    "rtmp_publish": {                              # параметры rtmp-publish (необязательный параметр)
        "stream_name": "stream_name",              # название потока (обязательный параметр)
        "url":         "rtmp://test1.publish.com", # URL основного сервера публицка (обязательный параметр)
        "url_backup":  "rtmp://test2.publish.com", # URL резервного сервера публицка (необязательный параметр)
        "active":      true                        # активировать (true)/деактивировать (false) rtmp-publish
    }
}

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

{
    "id": "5ebbeb54534b447a810c52db",             # id канала
    "name": "channel_name",                       # имя канала
    "qualities": ["360p","480p"],                 # качества канала
    "gag": {                                      # заглушка
        "duration": 9,                            # продолжительность заглушки
        "items": {                                # файлы заглушки
            "360p": ["5e37d3ef534b444004244ebc"],
            "480p": ["5d5450de534b447a006cb748"]
        }
    },
    "rtmp_publish": {                             # настройки rtmp-publish
        "url": "rtmp://test1.publish.com",        # url основного сервера публикации
        "url_backup": "rtmp://test2.publish.com", # url резервного сервера публикации
        "stream_name": "stream_name",             # имя потока
        "active": true                            # активирован/деактивирован
    }
}

Получение списка каналов

Описание Метод получения списка каналов
Структура URL https://streamer.platformcraft.ru/2/streams/{user_id}
Метод GET
Тип тела запроса -
Возвращает Информацию о каналах

Пример запроса

https://streamer.platformcraft.ru/2/streams/56bdf4a53f4f716301b09ba3

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

[
    {
        "id": "5ebbeb54534b447a810c52db",             # id канала
        "name": "channel_name",                       # имя канала
        "qualities": ["360p","480p"],                 # качества канала
        "gag": {                                      # заглушка
            "duration": 9,                            # продолжительность заглушки
            "items": {                                # файлы заглушки
                "360p": ["5e37d3ef534b444004244ebc"],
                "480p": ["5d5450de534b447a006cb748"]
            }
        },
        "rtmp_publish": {                             # настройки rtmp-publish
            "url": "rtmp://test1.publish.com",        # url основного сервера публикации
            "url_backup": "rtmp://test2.publish.com", # url резервного сервера публикации
            "stream_name": "stream_name",             # имя потока
            "active": true                            # активирован/деактивирован
        }
    }
]

Получение информации о канале

Описание Метод получения информации об одном канале
Структура URL https://streamer.platformcraft.ru/2/streams/{user_id}/{channel_id}
Метод GET
Тип тела запроса -
Возвращает Информацию о канале

Пример запроса

https://streamer.platformcraft.ru/2/streams/56bdf4a53f4f716301b09ba3/5ebbeb54534b447a810c52db

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

{
    "id": "5ebbeb54534b447a810c52db",             # id канала
    "name": "channel_name",                       # имя канала
    "qualities": ["360p","480p"],                 # качества канала
    "gag": {                                      # заглушка
        "duration": 9,                            # продолжительность заглушки
        "items": {                                # файлы заглушки
            "360p": ["5e37d3ef534b444004244ebc"],
            "480p": ["5d5450de534b447a006cb748"]
        }
    },
    "rtmp_publish": {                             # настройки rtmp-publish
        "url": "rtmp://test1.publish.com",        # url основного сервера публикации
        "url_backup": "rtmp://test2.publish.com", # url резервного сервера публикации
        "stream_name": "stream_name",             # имя потока
        "active": true                            # активирован/деактивирован
    }
}

Изменение канала

Описание Метод изменения канала
Структура URL https://streamer.platformcraft.ru/2/streams/{user_id}/{channel_id}
Метод PUT
Тип тела запроса application/json
Возвращает Информацию о канале
Примечание В теле запроса нужно указывать только изменяемые поля

Пример запроса

https://streamer.platformcraft.ru/2/streams/56bdf4a53f4f716301b09ba3/5ebbeb54534b447a810c52db

Пример тела запроса

{
    "name": "new_channel_name",                    # имя канала
    "gag": {                                       # заглушка
        "360p": ["5e37d3ef534b444004244ebc"],
        "480p": ["5d5450de534b447a006cb748"]
    },
    "rtmp_publish": {                              # параметры rtmp-publish
        "stream_name": "stream_name",
        "url":         "rtmp://test1.publish.com",
        "url_backup":  "rtmp://test2.publish.com",
        "active":      true
    }
}

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

{
    "id": "5ebbeb54534b447a810c52db",             # id канала
    "name": "channel_name",                       # имя канала
    "qualities": ["360p","480p"],                 # качества канала
    "gag": {                                      # заглушка
        "duration": 9,                            # продолжительность заглушки
        "items": {                                # файлы заглушки
            "360p": ["5e37d3ef534b444004244ebc"],
            "480p": ["5d5450de534b447a006cb748"]
        }
    },
    "rtmp_publish": {                             # настройки rtmp-publish
        "url": "rtmp://test1.publish.com",        # url основного сервера публикации
        "url_backup": "rtmp://test2.publish.com", # url резервного сервера публикации
        "stream_name": "stream_name",             # имя потока
        "active": true                            # активирован/деактивирован
    }
}

Удаление канала

Описание Метод удаления канала
Структура URL https://streamer.platformcraft.ru/2/streams/{user_id}/{channel_id}
Метод DELETE
Тип тела запроса -
Возвращает -

Медиаблоки

Создание медиаблока

Описание Метод создания медиаблока (без публикации в эфир)
Структура URL https://streamer.platformcraft.ru/2/streams/{user_id}/{channel_id}/block
Метод POST
Тип тела запроса application/json
Возвращает Информацию о созданном медиаблоке

Пример запроса

https://streamer.platformcraft.ru/2/streams/56bdf4a53f4f716301b09ba3/5ebbeb54534b447a810c52db/block

Пример тела запроса

{
    "name": "block_name",    # название медиаблока
    "timestamp": 1589407535, # таймштамп начала медиаблока (обязательный параметр)
    "loop": true,            # проигрывать медиаблок по кругу
    "items": {               # файлы (обязательный параметр). Словарь вида {"качество": [массив id видеофайлов]}. Файлы должны быть указаны для каждого качества канала. Длительности видеофайлов с одинковым порядковым номером в массивах должны совпадать.
        "360p": ["5e37d3ef534b444004244ebc","5e37d3ef534b444004244ebd"],
        "480p": ["5d5450de534b447a006cb748","5d5450de534b447a006cb749"]
    },
    "status": "ready"        # статус медиаблока. Возможные значения: "ready" (блок готов к публикации и будет проверен на корректность данных) и "not ready" (блок не готов к публикации и не будет проверен на корректность данных).
}

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

{
    id: "5ebc6f3d534b44024f51d456",         # id медиаблока
    name: "block_name",
    channel_id: "5ebbedf6534b44024f51d453", # id канала
    duration: 235,                          # длительность медиаблока (высчитывается только для блока со статусом "ready")
    items: {                                # файлы
        "360p": ["5e37d3ef534b444004244ebc","5e37d3ef534b444004244ebd"],
        "480p": ["5d5450de534b447a006cb748","5d5450de534b447a006cb749"]
    },
    loop: true,                             # зацикленность
    status: "ready",                        # статус
    timestamp: 1589407535,                  # таймштамп начала медиаблока
    stop_ts: 1589407770                     # таймштамп окончания медиаблока
}

Изменение медиаблока

Описание Метод для изменения медиаблока
Структура URL https://streamer.platformcraft.ru/2/streams/{user_id}/{channel_id}/block/{block_id}
Метод PUT
Тип тела запроса application/json
Возвращает Информацию об измененном медиаблоке
Примечание Запрещено изменять медиаблоки со статусами "start" или "wait". В теле запроса нужно указывать только изменяемые поля.

Пример запроса

https://streamer.platformcraft.ru/2/streams/56bdf4a53f4f716301b09ba3/5ebbeb54534b447a810c52db/block/5ebc6f3d534b44024f51d456

Пример тела запроса

{
    "name": "new_block_name",    # название медиаблока
    "timestamp": 1589407536,     # таймштамп начала медиаблока (обязательный параметр)
    "loop": true,                # проигрывать медиаблок по кругу
    "items": {                   # файлы (обязательный параметр). Словарь вида {"качество": [массив id видеофайлов]}. Файлы должны быть указаны для каждого качества канала. Длительности видеофайлов с одинковым порядковым номером в массивах должны совпадать.
        "360p": ["5e37d3ef534b444004244ebc","5e37d3ef534b444004244ebd"],
        "480p": ["5d5450de534b447a006cb748","5d5450de534b447a006cb749"]
    },
    "status": "ready"            # статус медиаблока. Возможные значения: "ready" (блок готов к публикации и будет проверен на корректность данных) и "not ready" (блок не готов к публикации и не будет проверен на корректность данных).
}

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

{
    id: "5ebc6f3d534b44024f51d456",         # id медиаблока
    name: "new_block_name",
    channel_id: "5ebbedf6534b44024f51d453", # id канала
    duration: 235,                          # длительность медиаблока (высчитывается только для блока со статусом "ready")
    items: {                                # файлы
        "360p": ["5e37d3ef534b444004244ebc","5e37d3ef534b444004244ebd"],
        "480p": ["5d5450de534b447a006cb748","5d5450de534b447a006cb749"]
    },
    loop: true,                             # зацикленность
    status: "ready",                        # статус
    timestamp: 1589407536,                  # таймштамп начала медиаблока
    stop_ts: 1589407770                     # таймштамп окончания медиаблока
}

Получение списка медиаблоков

Описание Метод для получения списка медиаблоков
Структура URL https://streamer.platformcraft.ru/2/streams/{user_id}/{channel_id}/block
Метод GET
Тип тела запроса -
Возвращает Список медиаблоков канала

Пример запроса

https://streamer.platformcraft.ru/2/streams/56bdf4a53f4f716301b09ba3/5ebbeb54534b447a810c52db/block

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

[
    {
        id: "5ebc6f3d534b44024f51d456",         # id медиаблока
        name: "block_name",
        channel_id: "5ebbedf6534b44024f51d453", # id канала
        duration: 235,                          # длительность медиаблока (высчитывается только для блока со статусом "ready")
        items: {                                # файлы
            "360p": ["5e37d3ef534b444004244ebc","5e37d3ef534b444004244ebd"],
            "480p": ["5d5450de534b447a006cb748","5d5450de534b447a006cb749"]
        },
        loop: true,                             # зацикленность
        status: "ready",                        # статус
        timestamp: 1589407536,                  # таймштамп начала медиаблока
        stop_ts: 1589407770                     # таймштамп окончания медиаблока
    }
]

Получение информации о медиаблоке

Описание Метод для получения информации о медиаблоке
Структура URL https://streamer.platformcraft.ru/2/streams/{user_id}/{channel_id}/block/{block_id}
Метод GET
Тип тела запроса -
Возвращает Информацию о медиаблоке

Пример запроса

https://streamer.platformcraft.ru/2/streams/56bdf4a53f4f716301b09ba3/5ebbeb54534b447a810c52db/block/5ebc6f3d534b44024f51d456

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

{
    id: "5ebc6f3d534b44024f51d456",         # id медиаблока
    name: "block_name",
    channel_id: "5ebbedf6534b44024f51d453", # id канала
    duration: 235,                          # длительность медиаблока (высчитывается только для блока со статусом "ready")
    items: {                                # файлы
        "360p": ["5e37d3ef534b444004244ebc","5e37d3ef534b444004244ebd"],
        "480p": ["5d5450de534b447a006cb748","5d5450de534b447a006cb749"]
    },
    loop: true,                             # зацикленность
    status: "ready",                        # статус
    timestamp: 1589407536,                  # таймштамп начала медиаблока
    stop_ts: 1589407770                     # таймштамп окончания медиаблока
}

Удаление медиаблока

Описание Метод для удаления медиаблока
Структура URL https://streamer.platformcraft.ru/2/streams/{user_id}/{channel_id}/block/{block_id}
Метод DELETE
Тип тела запроса -
Возвращает -

Мгновенный старт медиаблока

Описание Метод мгновенного старта вещания медиаблока
Структура URL https://streamer.platformcraft.ru/2/streams/{user_id}/{channel_id}/block/{block_id}/start
Метод POST
Тип тела запроса -
Возвращает -
Примечание Медиаблок должен быть готов к публикации (status != "not ready"). Если в момент мгновенного старта медиаблока в эфире уже находится какой-либо медиаблок, то стартуемый медиаблок вытеснит старый из эфира.

Остановка медиаблока

Описание Метод для принудительной остановки медиаблока в эфире
Структура URL https://streamer.platformcraft.ru/2/streams/{user_id}/{channel_id}/block/{block_id}/stop
Метод POST
Тип тела запроса -
Возвращает -
Примечание Если медиаблок находится в эфире (status = "start") или в режиме ожидания (status = "wait"), то он будет снят с эфира, а его статус изменится на "finish". Для других значений статуса медиаблока ("not ready", "ready", "finish") метод игнорируется.

Публикация медиаблока

Описание Метод для публикации медиаблока в эфире
Структура URL https://streamer.platformcraft.ru/2/streams/{user_id}/{channel_id}/block/{block_id}/schedule
Метод POST
Тип тела запроса -
Возвращает -
Примечание Медиаблок должен быть готов к публикации (status != "not ready").

Копирование медиаблока

Описание Метод для создания копий медиаблока
Структура URL https://streamer.platformcraft.ru/2/streams/{user_id}/{channel_id}/block/{block_id}/copy
Метод POST
Тип тела запроса application/json
Возвращает Список скопированных медиаблоков

Пример запроса

https://streamer.platformcraft.ru/2/streams/56bdf4a53f4f716301b09ba3/5ebbeb54534b447a810c52db/block/5ebc6f3d534b44024f51d456/copy

Пример тела запроса

{
    "name": "copy_block_name",  # имя скопированных медиаблоков
    "timestamps": [1589539452], # список таймштампов, соответствующих началу скопированных медиаблоков
    "publish": false            # публиковать или нет скопированные медиаблоки
}

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

[
    {
        id: "5ebc6f3d534b44024f51d457",         # id медиаблока
        name: "new_block_name",
        channel_id: "5ebbedf6534b44024f51d453", # id канала
        duration: 235,                          # длительность медиаблока (высчитывается только для блока со статусом "ready")
        items: {                                # файлы
            "360p": ["5e37d3ef534b444004244ebc","5e37d3ef534b444004244ebd"],
            "480p": ["5d5450de534b447a006cb748","5d5450de534b447a006cb749"]
        },
        loop: true,                             # зацикленность
        status: "ready",                        # статус
        timestamp: 1589539452,                  # таймштамп начала медиаблока
        stop_ts: 1589539687                     # таймштамп окончания медиаблока
    }
]