Ограничения
Обращаем ваше внимание, что для сервисов "auth", "filespot", "streamer" и "recorder" выставлен лимит: не более 10 запросов в секунду.
Filespot API v 1.0
Доступна версия API v2 с более широкими возможностями для загрузки файлов и записи потоков: Описание API v2
Доступ
На выбор предоставляется два способа авторизации. Выберите нужный для решения ваших задач.
Авторизация (JWT)
https://auth.platformcraft.ru
Для передачи данных авторизации используется стандарт JWT. Схема авторизации:
-
Клиент проходит авторизацию в приложении (с использованием логина и пароля, см. "Получение refresh и access токенов").
-
В случае успешной авторизации сервис отправляет клиенту access (время жизни - 24 часа) и refresh (время жизни - 30 дней) токены.
-
При дальнейшем обращении к сервису клиент использует access токен. Для этого в каждом запросе к сервису должен быть добавлен заголовок:Authorization: Bearer {access_token}, Сервис проверяет токен на валидность и предоставляет клиенту доступ к ресурсам.
-
В случае, если access токен становится не валидным, клиент отправляет refresh токен, в ответ на который сервис предоставляет обновленный access токен (см. "Обновление access токена").
-
В случае, если 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"
}
Авторизация (HMAC)
При каждом запросе необходимо передавать
- apiuserid - id выданный менеджером
- timestamp - текущее время в Unix формате
- hash - подпись текущего запроса (HMAC хеш-сумма в шестнадцатеричном виде с использованием SHA-256 и ключа пользователя)
Пример формирования HMAC хeш-суммы для авторизации
Ключ пользователя:
APIUserKey
Сообщение:
GET+api.platformcraft.ru/1/objects?apiuserid=test×tamp=1450342665
Результат:
46c5500379d2c09c6f8972c7fd79c27fd7ebf0dd0ab47833a034fd613a4f4d93
Точки входа
/objects
Описание | Метод для загрузки файлов в контейнер |
Структура URL | https://api.platformcraft.ru/1/objects |
Метод | POST |
Тип тела запроса | multipart/form-data |
Возвращает | Информацию о загруженном объекте |
Параметры | |
file | Загружаемый файл. Обязательный. |
name | Для задания имени загружаемому файлу и помещения в нужную директорию "/folder/folder2/filename.ext". Необязательный. |
private | Приватность файла (private=true соответствует приватному файлу). Необязательный. |
Параметры для автоперекодирования и автоплеера | |
autoencoding | Автоматическая конвертация видеофайла (возможные значения: true, false). Необязательный, учитывается только для видеофайлов. Параметр игнорируется для пользователей, не подписанных на услугу конвертации видеофайлов. Параметр игнорируется, если разрешение исходного видео меньше или равно разрешению получаемого видео. |
presets | Идентификаторы пресетов для автоперекодирования, разделенные ",". Необязательный, учитывается только при autoencoding=true. Пример: presets=566b0fbf044dfe64f2000002,566b0fbf044dfe64f2000003 |
del_original | Удалить оригинальный файл после автоперекодирования (возможные значения: true, false). Необязательный, учитывается только при autoencoding=true. |
autoplayer | Автоматическое создание плеера (возможные значения: true, false). Необязательный, учитывается только для видеофайлов. Если autoencoding=false, плеер будет создан из одного оригинального файла. Если autoencoding=true, то плеер будет создан из перекодированных видеофайлов. |
Базовый пример файлового загрузчика с использованием этого метода.
https://api.platformcraft.ru/1/objects?apiuserid=test×tamp=1450342665&hash=217ea22038abe3a16a2b0284e7b3d9a4487013ed9e832418befc49886a27d571
Пример ответа
{
"code": 200,
"status": "success",
"object":{
"id": "56787f0c044dfe226b000001",
"name": "test.mp4",
"path": "/test.mp4",
"is_dir": false,
"size": 985781,
"content_type": "video/mp4",
"create_date": "22.12.2015T01:37:00",
"latest_update": "",
"resource_url": "api.platformcraft.ru/objects/56787f0c044dfe226b000001",
"cdn_url": "cdn.platformcraft.ru/billy/test.mp4",
"vod_hls": "customer.cdn.ru/customer-vod/_definst_/mp4:billy/test.mp4/playlist.m3u8",
"video": "video.platformcraft.ru/56787f0c044dfe226b000001",
"private": false,
"status": "ok"
},
"storage": {
"used": 97537237,
"limit": 107374182
}
}
Описание | Метод для получения списка всех объектов |
Структура URL | https://api.platformcraft.ru/1/objects |
Метод | GET |
Возвращает | Список всех объектов в контейнере |
Параметры фильтрации | |
folder | Директория, из которой нужно получить файлы. Пример: "/test". Если параметр не указан, сканирование файлов будет осуществляться по всем директориям аккаунта. Необязательный. |
name | Имя файла. Пример: "test.mp4". Необязательный. |
ext | Расширение имени файла. Пример: "mp4". Необязательный. |
private | Приватность файла (private=true - показать только приватные файлы, private=false - показать только публичные файлы). Необязательный. |
show_folders | Показывать папки (show_folders=true - показывать папки наряду с файлами). Необязательный. |
Параметры сортировки | |
sort |
Параметр сортировки (необязательный). Возможные значения:
"time" - сортировка по времени (по возрастанию). "-time" - сортировка по времени (по убыванию). Значение по умолчанию. |
Параметры пагинации | |
limit | Количество объектов на одной странице. Необязательный, при отсутствии параметра в запросе возвращаются все объекты пользователя. |
start | Какое количество объектов в списке необходимо пропустить. Необязательный, учитывается только при положительном значении параметра limit. |
pagingts | Unix-время. Возвращаются только те объекты, время создания которых меньше или равно времени, соответствующему pagingts. Необязательный, учитывается только при положительном значении параметра limit. |
https://api.platformcraft.ru/1/objects?apiuserid=test×tamp=1450342665&hash=217ea22038abe3a16a2b0284e7b3d9a4487013ed9e832418befc49886a27d571&limit=2
Пример ответа
{
"code": 200,
"status": "success",
"count": 10,
"count_on_page": 2,
"paging": {
"next": "api.platformcraft.ru/1/objects?pagingts=1516189378&limit=2&start=2", # ссылка на следующую страницу. null, если текущая страница последняя. Важно: не забывайте подписывать запрос next при отправке на сервер (см. https://doc.platformcraft.ru/filespot/api/#_1)
"prev": null # ссылка на предыдущую страницу. null, если текущая страница первая. Важно: не забывайте подписывать запрос prev при отправке на сервер (см. https://doc.platformcraft.ru/filespot/api/#_1)
},
"objects": [
{
"id": "56787f0c044dfe226b000001",
"name": "test.mp4",
"path": "/test.mp4",
"is_dir": false,
"size": 985781,
"content_type": "video/mp4",
"create_date": "22.12.2015T01:37:00",
"latest_update": "",
"resource_url": "api.platformcraft.ru/objects/56787f0c044dfe226b000001",
"cdn_url": "cdn.platformcraft.ru/billy/test.mp4",
"vod_hls": "customer.cdn.ru/customer-vod/_definst_/mp4:billy/test.mp4/playlist.m3u8",
"video": "video.platformcraft.ru/56787f0c044dfe226b000001",
"private": true,
"status": "ok"
},
{
"id": "56787f0c044dfe226b000002",
"name": "test1.mp4",
"path": "/test1.mp4",
"is_dir": false,
"size": 985781,
"content_type": "video/mp4",
"create_date": "22.12.2015T01:37:00",
"latest_update": "",
"resource_url": "api.platformcraft.ru/objects/56787f0c044dfe226b000002",
"cdn_url": "cdn.platformcraft.ru/billy/test1.mp4",
"vod_hls": "customer.cdn.ru/customer-vod/_definst_/mp4:billy/test1.mp4/playlist.m3u8",
"video": "video.platformcraft.ru/56787f0c044dfe226b000001",
"private": false,
"status": "ok"
}
],
}
Описание | Метод для получения более детальной информации об объекте |
Структура URL | https://api.platformcraft.ru/1/objects/{:object_id} |
Метод | GET |
Возвращает | Подробную информацию об объекте с выбранным id |
https://api.platformcraft.ru/1/objects/56787f0c044dfe226b000001?apiuserid=test×tamp=1450342665&hash=217ea22038abe3a16a2b0284e7b3d9a4487013ed9e832418befc49886a27d571
Пример ответа
{
"code": 200,
"status": "success",
"object": {
"id": "56787f0c044dfe226b000001",
"name": "test.mp4",
"path": "/test.mp4",
"is_dir": false,
"size": 985781,
"content_type": "video/mp4",
"create_date": "22.12.2015T01:37:00",
"latest_update": "",
"resource_url": "api.platformcraft.ru/objects/56787f0c044dfe226b000001",
"cdn_url": "cdn.platformcraft.ru/billy/test.mp4",
"vod_hls": "customer.cdn.ru/customer-vod/_definst_/mp4:billy/test.mp4/playlist.m3u8",
"video": "video.platformcraft.ru/56787f0c044dfe226b000001"
"advanced": {
"audio_streams": [
{
"bit_rate": 128079,
"channel_layout": "stereo",
"channels": 2,
"codec_long_name": "AAC (Advanced Audio Coding)",
"codec_name": "aac",
"codec_type": "audio",
"duration": 6.61712,
"index": 0,
"sample_rate": 44100
}
],
"format": {
"bit_rate": 24756,
"duration": 6.618,
"format_long_name": "QuickTime / MOV",
"format_name": "mov,mp4,m4a,3gp,3g2,mj2",
"nb_streams": 2
},
"video_streams": [
{
"bit_rate": 1062457,
"codec_name": "h264",
"codec_type": "video",
"codeclongname": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",
"display_aspect_ratio": "16:9",
"duration": 6.573233,
"fps": 29.97002997002997,
"height": 360,
"index": 1,
"width": 640
}
]
},
"previews":[
"cdn.platformcraft.ru/billy/.previews/preview-569fa828534b446996058b6d",
"cdn.platformcraft.ru/billy/.previews/preview-569fa828534b446996058b70",
"cdn.platformcraft.ru/billy/.previews/preview-569fa828534b446996058b73"
],
"description": "test file description",
"private": false,
"status":"ok"
},
}
Описание | Удаляет объект с заданным id |
Структура URL | https://api.platformcraft.ru/1/objects/:id |
Метод | DELETE |
Возвращает | Статус операции удаления объекта |
https://api.platformcraft.ru/1/objects/56787f0c044dfe226b000001?apiuserid=test×tamp=1450342665&hash=217ea22038abe3a16a2b0284e7b3d9a4487013ed9e832418befc49886a27d571
Пример ответа
{
"code": 200,
"status": "success",
}
Описание | Изменяет объект с заданным id |
Структура URL | https://api.platformcraft.ru/1/objects/:id |
Метод | PUT |
Тип тела запроса | JSON |
Возвращает | Статус операции изменения объекта |
Формат тела запроса
{
"name": "String", #новое имя объекта
"folder": "String", #новая директория файла, пример: "/test". Параметр игнорируется при пустом значении
"description": "String", #описание объекта (макс. количество символов: 1500)
"max_height": Int, #максимальная высота (используется только для генерации изображений на лету, допустимы значения не более 2160)
"max_width": Int, #максимальная ширина (используется только для генерации изображений на лету, допустимы значения не более 3840)
"private": Bool #приватность файла
}
Пример ответа
{
"code": 200,
"status": "success",
}
/temp
Описание | Метод для добавления временной ссылки |
Структура URL | https://api.platformcraft.ru/1/temp |
Метод | POST |
Тип тела запроса | JSON |
Возвращает | Информацию о созданной временной ссылке |
Формат тела запроса
{
"object_id": "String", #id объекта
"endless": Bool, #true - бесконечная ссылка, false - срок действия ссылки ограничен параметром exp
"exp": Int, #timestamp окончания срока действия (учитывается, если endless = false)
"secure": Bool #включить защиту для временной ссылки (hmac-sha256)
"geo": map["String"]map["String"]Bool #геоограничения
}
Формат поля geo
geo - словарь вида map[continent]map[country]true, где continent, country - ISO коды континентов и стран соответственно (например, EU и RU). Если country == "ALL", то разрешен доступ ко всем странам внутри континента.
Примеры:
geo = null { без ограничений }
geo = {"EU":{"ALL": true}, "NA":{"ALL": true}} { разрешить доступ в Европе и Северной Америке }
geo = {"EU": {"RU": true}} { разрешить только в России }
Примечание: все коды континентов и стран должны быть указаны с большой буквы.
Пример запроса
https://api.platformcraft.ru/1/temp?apiuserid=test×tamp=1450342665&hash=217ea22038abe3a16a2b0284e7b3d9a4487013ed9e832418befc49886a27d571
{
"object_id": "56787f0c044dfe226b000001",
"endless": false,
"exp": 1492008763,
"secure": true
"geo": {"EU": {"RU": true}}
}
Формат ответа
{
"code": Int, #Код ответа (200)
"status": "String", #Статус ответа (success)
"link": {
"id": "String", #id ссылки
"object_id": "String", #id объекта
"href": "String", #cdn ссылка на объект
"secure": Bool, #защищенная ссылка или нет
"exp": Int, #timestamp окончания срока действия (0 соответствует бесконечной сссылке)
"for_sale": Bool, #ссылка на продажу или нет
"geo": map["String"]map["String"]Bool #геоограничения
}
}
Пример ответа
{
"code": 200,
"status": "success",
"link": {
"id":"58ee48ca534b4409844c8f7a",
"object_id":"56787f0c044dfe226b000001",
"href":"cdn.platformcraft.ru/temp/58ee48ca534b4409844c8f7a",
"secure":true,
"exp":1492008763,
"for_sale":false,
"geo": {"EU": {"RU": true}}
}
}
Описание | Метод для получения подписи для защищенной ссылки |
Структура URL | https://api.platformcraft.ru/1/temp/{:link_id}/secure |
Метод | POST |
Тип тела запроса | JSON |
Возвращает | Подпись для защищенной ссылки |
Формат тела запроса
{
"ip": "String", #ip конечно устройства
"ts": Int #таймштамп окончания действия подписи
}
Пример запроса
https://api.platformcraft.ru/1/temp/58ee48ca534b4409844c8f7a/secure?apiuserid=test×tamp=1450342665&hash=217ea22038abe3a16a2b0284e7b3d9a4487013ed9e832418befc49886a27d571
{
"ip": "188.111.110.11",
"ts": 1558030392
}
Формат ответа
{
"code": Int, #Код ответа (200)
"status": "String", #Статус ответа (success)
"hash": "String", #подпись для защищенной ссылки
"url": "String" #защищенный url
}
Пример ответа
{
"code": 200,
"status": "success",
"hash": "79cc441e5f602b37a1294a59ea8ae3deddeed63c1de8580f66c1323f91487aa9",
"url": "https://example.com/temp/5cdd8082ef3db56742cd704a?hash=79cc441e5f602b37a1294a59ea8ae3deddeed63c1de8580f66c1323f91487aa9×tamp=1558030392"
}
Описание | Метод для получения списка временных ссылок |
Структура URL | https://api.platformcraft.ru/1/temp |
Метод | GET |
Возвращает | Список всех временных ссылок |
Параметры | |
object_id | Фильтровать ссылки по id объекта. Необязательный. |
for_sale | Фильтровать ссылки для продажи (for_sale = true - показывать только ссылки для продажи, for_sale = false - не показывать ссылки для продажи). Необязательный. |
secure | Фильтровать защищенные ссылки (secure = true - показывать только защищенные ссылки, secure = false - не показывать защищенные ссылки). Необязательный. |
Пример запроса
https://api.platformcraft.ru/1/temp?apiuserid=test×tamp=1450342665&hash=217ea22038abe3a16a2b0284e7b3d9a4487013ed9e832418befc49886a27d571&secure=true
Формат ответа
{
"code": Int, #Код ответа (200)
"status": "String", #Статус ответа (success)
"count": Int, #количество сылок
"links":[
{
"id": "String", #id ссылки
"object_id": "String", #id объекта
"href": "String", #cdn ссылка на объект
"secure": Bool, #защищенная ссылка или нет
"exp": Int, #timestamp окончания срока действия (0 соответствует бесконечной сссылке)
"for_sale": Bool, #ссылка на продажу или нет
"geo": map["String"]map["String"]Bool #геоограничения
}
]
}
Пример ответа
{
"code": 200,
"status": "success",
"count": 1,
"links": [
{
"id": "58edef62534b4466a3ec333e",
"object_id": "58d51270534b440de6b0d075",
"href": "cdn.platformcraft.ru/temp/58edef62534b4466a3ec333e",
"secure": true,
"exp": 0,
"for_sale": false,
"geo": {"EU": {"RU": true}}
}
],
}
Описание | Метод для получения информации о временной ссылке |
Структура URL | https://api.platformcraft.ru/1/temp/{:link_id} |
Метод | GET |
Возвращает | Информацию о временной ссылке |
Пример запроса
https://api.platformcraft.ru/1/temp/58edef62534b4466a3ec333e?apiuserid=test×tamp=1450342665&hash=217ea22038abe3a16a2b0284e7b3d9a4487013ed9e832418befc49886a27d571
Формат ответа
{
"code": Int, #Код ответа (200)
"status": "String", #Статус ответа (success)
"link": {
"id": "String", #id ссылки
"object_id": "String", #id объекта
"href": "String", #cdn ссылка на объект
"secure": Bool, #защищенная ссылка или нет
"exp": Int, #timestamp окончания срока действия (0 соответствует бесконечной сссылке)
"for_sale": Bool, #ссылка на продажу или нет
"geo": map["String"]map["String"]Bool #геоограничения
}
}
Пример ответа
{
"code": 200,
"status": "success",
"link": {
"id":"58edef62534b4466a3ec333e",
"object_id":"56787f0c044dfe226b000001",
"href":"cdn.platformcraft.ru/temp/58ee48ca534b4409844c8f7a",
"secure":true,
"exp":1492008763,
"for_sale":false,
"geo": {"EU": {"RU": true}}
}
}
Описание | Удаляет временную ссылку с заданным id |
Структура URL | https://api.platformcraft.ru/1/temp/{:link_id} |
Метод | DELETE |
Возвращает | Статус операции удаления временной ссылки |
Пример запроса
https://api.platformcraft.ru/1/temp/58edef62534b4466a3ec333e?apiuserid=test×tamp=1450342665&hash=217ea22038abe3a16a2b0284e7b3d9a4487013ed9e832418befc49886a27d571
Пример ответа
{
"code": 200,
"status": "success",
}
/streams
Описание | Метод для добавления видеопотока |
Структура URL | https://api.platformcraft.ru/1/streams |
Метод | POST |
Тип тела запроса | JSON |
Возвращает | Информацию о созданном видеопотоке |
Формат тела запроса
{
"name": "String", #имя видеопотока (обязательный параметр)
"url" : "String" #hls URL видеопотока (обязательный параметр)
}
Пример запроса
https://api.platformcraft.ru/1/streams?apiuserid=test×tamp=1450342665&hash=217ea22038abe3a16a2b0284e7b3d9a4487013ed9e832418befc49886a27d571
{
"name": "example",
"url" : "https://example.ru/example/example.m3u8"
}
Формат ответа
{
"code": Int, #Код ответа (200)
"status": "String", #Статус ответа (success)
"stream": { #Информация о видепотоке
"id": "String", #ID видеопотока
"user": "String", #ID пользователя
"name": "String", #Название видепотока
"url": "String", #URL видепотока
"is_instant_recording": Bool #Параметр, показывающий, осуществляется или нет в данный момент мгновенная запись видеопотока
}
}
Пример ответа
{
"code": 200,
"status": "success",
"stream": {
"id": "56edc536534b4478d3a83b7f",
"user": "56bdf4a53f4f716301b09ba3",
"name": "example",
"url": "https://example.ru/example/example.m3u8",
"is_instant_recording": false
}
}
Описание | Метод для получения информации о всех видеопотоках |
Структура URL | https://api.platformcraft.ru/1/streams |
Метод | GET |
Возвращает | Информацию о всех видеопотоках |
https://api.platformcraft.ru/1/streams?apiuserid=test×tamp=1450342665&hash=217ea22038abe3a16a2b0284e7b3d9a4487013ed9e832418befc49886a27d571
Формат ответа
{
"code": Int, #Код ответа (200)
"status": "String", #Статус ответа (success)
"streams": [ #Массив с информацией о видеопотоках
{
"id": "String", #ID видеопотока
"user": "String", #ID пользователя
"name": "String", #Название видепотока
"url": "String", #URL видепотока
"is_instant_recording": Bool #Параметр, показывающий, осуществляется или нет в данный момент мгновенная запись видеопотока
},
...
]
}
Пример ответа
{
"code": 200,
"status": "success",
"streams": [
{
"id": "56edc536534b4478d3a83b7f",
"user": "56bdf4a53f4f716301b09ba3",
"name": "example",
"url": "https://example.ru/example/example.m3u8",
"is_instant_recording": false
}
]
}
Описание | Метод для получения информации о видеопотоке |
Структура URL | https://api.platformcraft.ru/1/streams/{:stream_id} |
Метод | GET |
Возвращает | Информацию о видеопотоке |
https://api.platformcraft.ru/1/streams/56cec7e2fa63afd0f843567d?apiuserid=test×tamp=1450342665&hash=217ea22038abe3a16a2b0284e7b3d9a4487013ed9e832418befc49886a27d571
Формат ответа
{
"code": Int, #Код ответа (200)
"status": "String", #Статус ответа (success)
"stream": { #Информация о видепотоке
"id": "String", #ID видеопотока
"user": "String", #ID пользователя
"name": "String", #Название видепотока
"url": "String", #URL видепотока
"is_instant_recording": Bool #Параметр, показывающий, осуществляется или нет в данный момент мгновенная запись видеопотока
}
}
Пример ответа
{
"code": 200,
"status": "success",
"stream": {
"id": "56edc536534b4478d3a83b7f",
"user": "56bdf4a53f4f716301b09ba3",
"name": "example",
"url": "https://example.ru/example/example.m3u8",
"is_instant_recording": false
}
}
Описание | Метод для удаления видеопотока |
Структура URL | https://api.platformcraft.ru/1/streams/{:stream_id} |
Метод | DELETE |
Возвращает | Статус удаления видеопотока |
https://api.platformcraft.ru/1/streams/56cec7e2fa63afd0f843567d?apiuserid=test×tamp=1450342665&hash=217ea22038abe3a16a2b0284e7b3d9a4487013ed9e832418befc49886a27d571
Формат ответа
{
"code": Int, #Код ответа (200)
"status": "String" #Статус ответа (success)
}
Пример ответа
{
"code": 200,
"status": "success"
}
Описание | Метод для старта мгновенной записи видеопотока |
Структура URL | https://api.platformcraft.ru/1/streams/rec/instant/start/{:stream_id} |
Метод | POST |
Тип тела запроса | JSON |
Возвращает | Статус старта мгновенной записи видеопотока |
https://api.platformcraft.ru/1/streams/rec/instant/start/56cec7e2fa63afd0f843567d?apiuserid=test×tamp=1450342665&hash=217ea22038abe3a16a2b0284e7b3d9a4487013ed9e832418befc49886a27d571
Формат тела запроса
{
"name": "String", # Название записи
"stop_timeout": Int # таймаут остановки записи в секундах (по умолчанию 1800, т.е. 30 минут).
}
Пример запроса
{
"name": "example.m3u8",
"stop_timeout": 3600
}
Формат ответа
{
"code": Int, #Код ответа (200)
"status": "String" #Статус ответа (success)
}
Пример ответа
{
"code": 200,
"status": "success"
}
Описание | Метод для остановки мгновенной записи видеопотока |
Структура URL | https://api.platformcraft.ru/1/streams/rec/instant/stop/{:stream_id} |
Метод | POST |
Возвращает | Статус остановки мгновенной записи видеопотока |
https://api.platformcraft.ru/1/streams/rec/instant/stop/56cec7e2fa63afd0f843567d?apiuserid=test×tamp=1450342665&hash=217ea22038abe3a16a2b0284e7b3d9a4487013ed9e832418befc49886a27d571
Формат ответа
{
"code": Int, #Код ответа (200)
"status": "String", #Статус ответа (success)
"files":[ #Массив с информацией о записанных файлах
{
"id": "String", #ID объекта
"name": "String", #Название файла
"path": "String", #Путь к файлу
"size": Int, #Размер файла (в байтах)
"content_type": "String", #Тип контента файла
"create_date": "String", #Дата создания файла
"latest_update":"String", #Дата последнего изменения файла
"resource_url": "String", #URL для получения детальной информации о файле
"video": "String", #Ссылка на плеер
"cdn_url": "String", #Прямая ссылка на файл
"status": "String" #Статус объекта
},
...
]
}
Пример ответа
{
"code": 200,
"status": "success",
"files":[
{
"id":"56f19106534b44355afd96e1",
"name":"test 20160322.mp4",
"path":"/records/test 20160322.mp4",
"size":610768,
"content_type":"video/mp4",
"create_date":"22.03.2016T21:37:58",
"latest_update":"",
"resource_url":"api.platformcraft.ru/objects/56f19106534b44355afd96e1",
"video":"video.platformcraft.ru/56f19106534b44355afd96e1",
"cdn_url":"cdn.platformcraft.ru/test/records/test%2020160322.mp4",
"status":"ok"
}
]
}
Описание | Метод для создания записи видеопотока по расписанию |
Структура URL | https://api.platformcraft.ru/1/streams/rec/schedule/new/{:stream_id} |
Метод | POST |
Тип тела запроса | JSON |
Возвращает | Статус создания записи видеопотока по расписанию |
Формат тела запроса
{
"name": "String", #Название записи
"start_time": "String", #Время начала записи в формате DD.MM.YYYYTHH:mm:ss
"stop_time": "String", #Время окончания записи в формате DD.MM.YYYYTHH:mm:ss
"stop_timeout": Int # таймаут остановки записи в секундах (по умолчанию 1800, т.е. 30 минут).
}
Пример запроса
https://api.platformcraft.ru/1/streams/rec/schedule/new/56cec7e2fa63afd0f843567d?apiuserid=test×tamp=1450342665&hash=217ea22038abe3a16a2b0284e7b3d9a4487013ed9e832418befc49886a27d571
{
"name": "example",
"start_time": "19.03.2016T23:43:55",
"stop_time": "19.03.2016T23:44:55",
"stop_timeout": 3600
}
Формат ответа
{
"code": Int, #Код ответа (200)
"status": "String", #Статус ответа (success)
"record_id": "String" #ID записи
}
Пример ответа
{
"code": 200,
"status": "success",
"record_id": "5624cd5ac9a492f8b979b63f"
}
Описание | Метод для получения информации о записи |
Структура URL | https://api.platformcraft.ru/1/streams/rec/{:record_id} |
Метод | GET |
Возвращает | Информацию о записи |
https://api.platformcraft.ru/1/streams/rec/5624cd5ac9a492f8b979b63f?apiuserid=test×tamp=1450342665&hash=217ea22038abe3a16a2b0284e7b3d9a4487013ed9e832418befc49886a27d571
Формат ответа
{
"code": Int, # Код ответа (200)
"status": "String", # Статус ответа (success)
"record": { # Запись
"status": "String", # Статус записи ("Wait", "Progress", "Finish")
"files": ["String"] # Массив id записанных видеофайлов
}
}
Пример ответа
{
"code": 200,
"status": "success",
"record": {
"status": "Finish",
"files": ["5bd37808534b441c4acf7415"]
}
}
Описание | Метод для удаления записи видеопотока по расписанию |
Структура URL | https://api.platformcraft.ru/1/streams/rec/schedule/del/{:stream_id}/{:record_id} |
Метод | DELETE |
Возвращает | Статус удаления записи видеопотока по расписанию |
https://api.platformcraft.ru/1/streams/rec/schedule/del/56cec7e2fa63afd0f843567d/5624cd5ac9a492f8b979b63f?apiuserid=test×tamp=1450342665&hash=217ea22038abe3a16a2b0284e7b3d9a4487013ed9e832418befc49886a27d571
Формат ответа
{
"code": Int, #Код ответа (200)
"status": "String" #Статус ответа (success)
}
Пример ответа
{
"code": 200,
"status": "success"
}
/players
Описание | Метод для создания плеера |
Структура URL | https://api.platformcraft.ru/1/players |
Метод | POST |
Тип тела запроса | JSON |
Возвращает | Информацию о созданном плеере |
Формат тела запроса
{
"name": "String", #имя плеера (обязательный параметр)
"folder": "String", #директория плеера (необязательный параметр)
"videos": { #словарь объектов видео (обязательный параметр)
"String": "String", #название видео в плеере: id объекта видео (обязательно хотя бы одно поле)
...
},
"screen_shot_id": "String", #id объекта скриншота (необязательный параметр)
"vast_ad_tag_url" : "String", #VAST ad tag url (необязательный параметр)
"description": "String", #описание плеера (необязательный параметр, не более 1500 символов)
"tags": ["String",...], #список тегов (необязательный параметр)
"geo": map["String"]map["String"]Bool #геоограничения
}
Формат поля geo
geo - словарь вида map[continent]map[country]true, где continent, country - ISO коды континентов и стран соответственно (например, EU и RU). Если country == "ALL", то разрешен доступ ко всем странам внутри континента.
Примеры:
geo = null { без ограничений }
geo = {"EU":{"ALL": true}, "NA":{"ALL": true}} { разрешить доступ в Европе и Северной Америке }
geo = {"EU": {"RU": true}} { разрешить только в России }
Примечание: все коды континентов и стран должны быть указаны с большой буквы.
Пример запроса
https://api.platformcraft.ru/1/players?apiuserid=test×tamp=1450342665&hash=217ea22038abe3a16a2b0284e7b3d9a4487013ed9e832418befc49886a27d571
{
"name":"player_name",
"folder": "/test",
"videos":{
"360":"566bf3e9534b447f07e2baef",
"480":"5624cd5ac9a492f8b979b63f"
},
"screen_shot_id":"56238961c9a492f8b979b633",
"vast_ad_tag_url":"http://example.com/example-vast.xml",
"description": "test description",
"tags": ["tag1","tag2"],
"geo": {"EU": {"RU": true}}
}
Формат ответа
{
"code": Int, #код ответа (200)
"status": "String", #статус ответа (success)
"player": { #информация о плеере
"id": "String", #id плеера
"name": "String", #имя плеера
"path": "String", #путь к плееру
"is_dir": Bool, #папка (true) или плеер (false)
"videos": { #словарь ссылок на видео
"String": "String", #название видео в плеере: ссылка на видео
...
},
"screen_shot_url": "String", #ссылка на скриншот
"vast_ad_tag_url": "String", #VAST ad tag url
"create_date": "String", #дата создания плеера
"href": "String", #ссылка на плеер
"frame_tag": "String", #код вставки плеера
"description": "String", #описание плеера
"tags": ["String",...], #список тегов
"geo": map["String"]map["String"]Bool #геоограничения
}
}
Пример ответа
{
"code": 200,
"status": "success",
"player": {
"id": "567d3643534b4474087c221d",
"name": "player_name",
"path": "/test/player_name",
"is_dir": false,
"videos": {
360: "cdn.platformcraft.ru/alex/example_360.mp4"
480: "cdn.platformcraft.ru/alex/example_480.mp4"
},
"screen_shot_url": "cdn.platformcraft.ru/alex/example.jpg",
"vast_ad_tag_url": "http://example.com/example-vast.xml",
"create_date": "25.12.2015T15:27:47"
"href": "video.platformcraft.ru/embed/567d3643534b4474087c221d",
"frame_tag": "<iframe width="558" height="264" src="video.platformcraft.ru/embed/567d3643534b4474087c221d" frameBorder="0" scrolling="no" allowFullScreen></iframe>",
"description": "test description",
"tags": ["tag1","tag2"],
"geo": {"EU": {"RU": true}}
}
}
Описание | Метод для получения списков всех плееров |
Структура URL | https://api.platformcraft.ru/1/players |
Метод | GET |
Возвращает | Список всех плееров |
Параметры фильтрации | |
folder | Директория, из которой нужно получить плееры. Пример: "/test". Если параметр не указан, сканирование файлов будет осуществляться по всем директориям аккаунта. Необязательный. |
name | Имя плеера. Пример: "test". Необязательный. |
show_folders | Показывать папки (show_folders=true - показывать папки наряду с плеерами). Необязательный. |
Параметры пагинации | |
limit | Количество плееров на одной странице. Необязательный, при отсутствии параметра в запросе возвращаются все плееры пользователя. |
start | Какое количество плееров в списке необходимо пропустить. Необязательный, учитывается только при положительном значении параметра limit. |
pagingts | Unix-время. Возвращаются только те плееры, время создания которых меньше или равно времени, соответствующему pagingts. Необязательный, учитывается только при положительном значении параметра limit. |
https://api.platformcraft.ru/1/players?apiuserid=test×tamp=1450342665&hash=217ea22038abe3a16a2b0284e7b3d9a4487013ed9e832418befc49886a27d571&limit=2
Формат ответа
{
"code": Int, #код ответа (200)
"status": "String", #статус ответа (success)
"count": "String", #количество плееров
"count_on_page": "String", #количество плееров на странице
"players": [ #список плееров
{ #информация о плеере
"id": "String", #id плеера
"name": "String", #имя плеера
"path": "String", #путь к плееру
"is_dir": Bool, #папка (true) или плеер (false)
"videos": { #словарь ссылок на видео
"String": "String", #название видео в плеере: ссылка на видео
...
},
"screen_shot_url": "String", #ссылка на скриншот
"vast_ad_tag_url": "String", #VAST ad tag url
"create_date": "String", #дата создания плеера
"href": "String", #ссылка на плеер
"frame_tag": "String", #код вставки плеера
"description": "String", #описание плеера
"tags": ["String",...], #список тегов
"geo": map["String"]map["String"]Bool #геоограничения
}
],
"paging": {
"next": "String", #ссылка на след. страницу. null, если текущая страница последняя. Важно: не забывайте подписывать запрос next при отправке на сервер (см. https://doc.platformcraft.ru/filespot/api/#_1)
"prev": "String" #ссылка на пред. страницу. null, если текущая страница первая. Важно: не забывайте подписывать запрос prev при отправке на сервер (см. https://doc.platformcraft.ru/filespot/api/#_1)
}
}
Пример ответа
{
"code": 200,
"status": "success",
"count": 4,
"count_on_page": 2,
"players": [
{
"id": "567d3643534b4474087c221d",
"name": "player_name",
"path": "/test/player_name"
"is_dir": false,
"videos": {
360: "cdn.platformcraft.ru/alex/example_360.mp4"
480: "cdn.platformcraft.ru/alex/example_480.mp4"
},
"screen_shot_url": "cdn.platformcraft.ru/alex/example.jpg",
"vast_ad_tag_url": "http://example.com/example-vast.xml",
"create_date": "25.12.2015T15:27:47"
"href": "video.platformcraft.ru/embed/567d3643534b4474087c221d",
"frame_tag": "<iframe width="558" height="264" src="video.platformcraft.ru/embed/567d3643534b4474087c221d" frameBorder="0" scrolling="no" allowFullScreen></iframe>",
"description": "test player",
"tags": ["test"],
"geo": {"EU": {"RU": true}}
},
{
"id": "567d3643534b4474087c221e",
"name": "player_name_1",
"path": "/player_name_1",
"is_dir": false,
"videos": {
360: "cdn.platformcraft.ru/alex/example_360.mp4"
480: "cdn.platformcraft.ru/alex/example_480.mp4"
},
"screen_shot_url": "cdn.platformcraft.ru/alex/example.jpg",
"vast_ad_tag_url": "http://example.com/example-vast.xml",
"create_date": "25.12.2015T15:27:48"
"href": "video.platformcraft.ru/embed/567d3643534b4474087c221e",
"frame_tag": "<iframe width="558" height="264" src="video.platformcraft.ru/embed/567d3643534b4474087c221e" frameBorder="0" scrolling="no" allowFullScreen></iframe>",
"description": "test player",
"tags": [],
"geo": null
}
],
"paging": {
"next": "api.platformcraft.ru/1/players?pagingts=1525858519&limit=2&start=2",
"prev": null
}
}
Описание | Метод для получения информации о плеере |
Структура URL | https://api.platformcraft.ru/1/players/{:player_id} |
Метод | GET |
Возвращает | Информацию о плеере |
https://api.platformcraft.ru/1/players/567d3643534b4474087c221d?apiuserid=test×tamp=1450342665&hash=217ea22038abe3a16a2b0284e7b3d9a4487013ed9e832418befc49886a27d571
Формат ответа
{
"code": Int, #код ответа (200)
"status": "String", #статус ответа (success)
"player": { #информация о плеере
"id": "String", #id плеера
"name": "String", #имя плеера
"path": "String", #путь к плееру
"is_dir": Bool, #папка (true) или плеер (false)
"videos": { #словарь ссылок на видео
"String": "String", #название видео в плеере: ссылка на видео
...
},
"screen_shot_url": "String", #ссылка на скриншот
"vast_ad_tag_url": "String", #VAST ad tag url
"create_date": "String", #дата создания плеера
"href": "String", #ссылка на плеер
"frame_tag": "String", #код вставки плеера
"description": "String", #описание плеера
"tags": ["String",...], #теги
"geo": map["String"]map["String"]Bool #геоограничения
}
}
Пример ответа
{
"code": 200,
"status": "success",
"player": {
"id": "567d3643534b4474087c221d",
"name": "player_name",
"path": "/test/player_name",
"is_dir": false,
"videos": {
360: "cdn.platformcraft.ru/alex/example_360.mp4"
480: "cdn.platformcraft.ru/alex/example_480.mp4"
},
"screen_shot_url": "cdn.platformcraft.ru/alex/example.jpg",
"vast_ad_tag_url": "http://example.com/example-vast.xml",
"create_date": "25.12.2015T15:27:47"
"href": "video.platformcraft.ru/embed/567d3643534b4474087c221d",
"frame_tag": "<iframe width="558" height="264" src="video.platformcraft.ru/embed/567d3643534b4474087c221d" frameBorder="0" scrolling="no" allowFullScreen></iframe>",
"description": "test player",
"tags":["tag1","tag2"],
"geo": {"EU": {"RU": true}}
}
}
Описание | Метод для удаления плеера |
Структура URL | https://api.platformcraft.ru/1/players/{:player_id} |
Метод | DELETE |
Возвращает | Статус удаления плеера |
Дополнительные параметры
delete_related - удалять или не удалять файлы, связанные с плеером (true/false)
https://api.platformcraft.ru/1/players/567d3643534b4474087c221d?apiuserid=test×tamp=1450342665&hash=217ea22038abe3a16a2b0284e7b3d9a4487013ed9e832418befc49886a27d571&delete_related=true
Формат ответа
{
"code": Int, #код ответа (200)
"status": "String" #статус ответа (success)
}
Пример ответа
{
"code": 200,
"status": "success"
}
Описание | Изменяет плеер с заданным id |
Структура URL | https://api.platformcraft.ru/1/players/:id |
Метод | PUT |
Тип тела запроса | JSON |
Возвращает | Статус операции изменения плеера |
Формат тела запроса
{
"name": "String", #новое имя плеера
"folder": "String", #новая директория плеера, пример: "/test". Параметр игнорируется при пустом значении
"videos": { #словарь объектов видео
"String": "String", #название видео в плеере: id объекта видео
...
},
"screen_shot_id": "String", #id объекта скриншота
"description": "String", #описание плеера (не более 1500 символов)
"tags": ["String",...], #список тегов
"geo": map["String"]map["String"]Bool #геоограничения
}
Пример ответа
{
"code": 200,
"status": "success",
}
/download
Описание | Метод для создания задачи на загрузку файла по URL | |
Структура URL | https://api.platformcraft.ru/1/download | |
Метод | POST | |
Возвращает | Статус постановки задачи | |
Примечание | Максимальное число одновременно активных задач: 200 | |
Параметры | ||
url | URL загружаемого файла. Пример: "http://test-domain.ru/test/test.mp4". Обязательный параметр. | |
path | Директория загрузки файла. Пример: "/test". При отсутствии этого параметра загружаемые файлы размещаются в корневой директории. | |
name | Имя файла. Пример: "test.mp4". При отсутствии этого параметра имя файла определяется автоматически. | |
Параметры для автоперекодирования и автоплеера | ||
autoencoding | Автоматическая конвертация видеофайла (возможные значения: true, false). Необязательный, учитывается только для видеофайлов. Параметр игнорируется для пользователей, не подписанных на услугу конвертации видеофайлов. Параметр игнорируется, если разрешение исходного видео меньше или равно разрешению получаемого видео. | |
presets | Идентификаторы пресетов для автоперекодирования, разделенные ",". Необязательный, учитывается только при autoencoding=true. Пример: presets=566b0fbf044dfe64f2000002,566b0fbf044dfe64f2000003 | |
del_original | Удалить оригинальный файл после автоперекодирования (возможные значения: true, false). Необязательный, учитывается только при autoencoding=true. | |
autoplayer | Автоматическое создание плеера (возможные значения: true, false). Необязательный, учитывается только для видеофайлов. Если autoencoding=false, плеер будет создан из одного оригинального файла. Если autoencoding=true, то плеер будет создан из перекодированных видеофайлов. |
https://api.platformcraft.ru/1/download?apiuserid=test×tamp=1450342665&hash=217ea22038abe3a16a2b0284e7b3d9a4487013ed9e832418befc49886a27d571&url=http://test-domain.ru/test/test.mp4&path=/test
Пример ответа
{
"code": 200,
"status": "success",
"message": "Task create success.",
"active_tasks": 1,
"task_id": "56ea79e2534b4423135ebfaa"
}
/download_tasks
Описание | Метод для получения списка задач на загрузку файлов |
Структура URL | https://api.platformcraft.ru/1/download_tasks |
Метод | GET |
Возвращает | Список задач |
Параметры фильтрации | |
status | Статус задачи (Возможные значения: Progress, Completed, Error). Необязательный. |
start | Временная метка (timestamp) нижней границы начала выполнения задачи. Необязательный. |
end | Временная метка (timestamp) верхнеий границы начала выполнения задачи. Необязательный. |
Параметры сортировки | |
sort |
Параметр сортировки (необязательный). Возможные значения:
"time" - сортировка по времени (по возрастанию). "-time" - сортировка по времени (по убыванию). "status" - сортировка по статусу (по возрастанию). "-status" - сортировка по статусу (по убыванию). "lock" - сортировка по полю `lock` (по возрастанию). "-lock" - сортировка по полю `lock` (по убыванию). |
Параметры пагинации | |
limit | Количество задач на одной странице. Необязательный. Для запроса следующей страницы нужно использовать url, заключенный в поле "next" ответа сервера |
from | Маркер начала следующей страницы (необязательный). Параметр "from" генерируется сервером автоматически в поле ответа "next". |
Пример ответа
{
"code": 200,
"status": "success",
"count": 5, # общее количество задач, удовлетворяющих параметрам запроса
"count_on_page": 2, # количество задач на странице
"next": "api.platformcraft.ru/1/download_tasks?limit=2&from=57011e2a534b44741fc67880", # запрос следующей страницы (поле отсутствует, если следующей страницы нет)
"tasks": [
{
"id": "56365b04044dfe6917000002",
"category": "download",
"title": "Download test1.mp4",
"body": "Please wait.",
"status": "Progress",
"time_start": "01.11.2015T21:33:40",
"time_finish": "",
"lock": true
},
{
"id": "57011e2a534b44741fc67880"
"category": "download"
"title": "Download abc.mp4"
"body": "Download success."
"status": "Completed"
"time_start": "03.04.2016T16:44:10"
"time_finish": "03.04.2016T16:44:11"
"lock": false
}
]
}
Описание | Метод для получения информации о задаче на загрузку файла |
Структура URL | https://api.platformcraft.ru/1/download_tasks/{:task_id} |
Метод | GET |
Возвращает | Информацию о задаче |
Формат ответа
{
"code": Int, #код ответа
"files": ["String"], #массив ID загруженных файлов
"status": "String", #статус ответа
"task": {
"id": "String" #ID задачи
"category": "String" #тип задачи
"title": "String" #название задачи
"body": "String" #информация о задаче
"status": "String" #статус задачи
"time_start": "String" #время начала
"time_finish": "String" #время окончания
"lock": Bool #блокировка
}
}
Пример ответа
{
"code": 200,
"files":["56ea7c4e534b44353536586c"],
"status": "success",
"task": {
"id": "57011e2a534b44741fc67880"
"category": "download"
"title": "Download abc.mp4"
"body": "Download success."
"status": "Completed"
"time_start": "03.04.2016T16:44:10"
"time_finish": "03.04.2016T16:44:11"
"lock": false
}
}
Описание | Метод для удаления задачи из очереди (удалить можно только незаблокированную задачу) |
Структура URL | https://api.platformcraft.ru/1/download_tasks/{:task_id} |
Метод | DELETE |
Возвращает | Статус удаления задачи |
Пример ответа
{
"code": 200,
"message": "Task delete success.",
"status": "success"
}
/transcoder/presets
Описание | Метод для получения списка доступных форматов для перекодирования |
Структура URL | https://api.platformcraft.ru/1/transcoder/presets |
Метод | GET |
Возвращает | Список форматов для перекодирования |
Пример ответа
{
"code": 200,
"count": 3,
"presets": [
{
"id": "566b0fbf044dfe64f2000002",
"name": "System preset: Generic 1080p",
"container": "mp4",
"video": {
"codec": "H.264",
"bit_rate": "5400",
"fps": "29.97",
"max_width": "1920",
"max_height": "1080"
},
"audio": {
"codec": "AAC",
"bit_rate": "160",
"sample_rate": "44100",
"channels": "2"
},
watermarks: {
BottomLeft: {
horizontal_align: "Left",
horizontal_offset: "10%",
vertical_align: "Bottom",
vertical_offset: "10%",
max_height: "10%",
max_width: "10%",
opacity: "100",
sizing_policy: "ShrinkToFit"
},
BottomRight: {
horizontal_align: "Right",
horizontal_offset: "10%",
vertical_align: "Bottom",
vertical_offset: "10%",
max_height: "10%",
max_width: "10%",
opacity: "100",
sizing_policy: "ShrinkToFit"
},
Full: {
horizontal_align: "Left",
horizontal_offset: "0%",
vertical_align: "Top",
vertical_offset: "0%",
max_height: "100%",
max_width: "100%",
opacity: "100",
sizing_policy: "Fit"
},
TopRight: {
horizontal_align: "Right",
horizontal_offset: "10%",
vertical_align: "Top",
vertical_offset: "10%",
max_height: "10%",
max_width: "10%",
opacity: "100",
sizing_policy: "ShrinkToFit"
}
}
},
{
"id": "566b0fbf044dfe64f2000003",
"name": "System preset: Generic 720p",
"container": "mp4",
"video": {
"codec": "H.264",
"bit_rate": "2400",
"fps": "29.97",
"max_width": "1280",
"max_height": "720"
},
"audio": {
"codec": "AAC",
"bit_rate": "160",
"sample_rate": "44100",
"channels": "2"
},
watermarks: {...}
},
{
"id": "566b0fbf044dfe64f2000004",
"name": "System preset: Generic 480p 16:9",
"container": "mp4",
"video": {
"codec": "H.264",
"bit_rate": "1200",
"fps": "29.97",
"max_width": "854",
"max_height": "480"
},
"audio": {
"codec": "AAC",
"bit_rate": "128",
"sample_rate": "44100",
"channels": "2"
},
watermarks: {...}
}
]
}
/transcoder
Описание | Метод для создания задачи на перекодирование |
Структура URL | https://api.platformcraft.ru/1/transcoder/{:object_id} |
Метод | POST |
Тип тела запроса | JSON |
Возвращает | Статус постановки задачи |
Примечание | Максимальное число задач в очереди: 200. Максимальное количество одновременно выполняемых задач: 2 |
Формат тела запроса
{
"presets": ["presetID",...], # список id форматов для перекодирования. Допустимо пустое поле, если start>0 или duration>0
"names": {"presetID": "String"}, # словарь вида {"preset_id": "file_name"}, где preset_id - нужный пресет, file_name - требуемое название выходного файла. Параметр позволяет задавать кастомные названия транскодируемым копиям видео
"path": "String", # директория загрузки файла. Необязательный параметр. По умолчанию новые файлы размещаются в директории транскодируемого файла.
"watermarks": {"String": "String"}, # словарь вида {watermark_id: object_id}, где watermark_id - watermark id, object_id - id картинки (поддерживаемые расширения - .png и .jpg). Необязательный параметр. Добавляет водяной знак на видеофайл. См. метод GET /transcoder/presets для получения информации о watermark_id.
"del_original": Bool, # удалять/не удалять оригинальный файл после транскодирования (по умолчанию: false)
"start": Int, # позиция начала транскодирования (количество секунд от начала файла, по умолчанию: 0)
"duration": Int, # длительность транскодирования (в секундах, по умолчанию: 0). Если duration==0, то транскодируется весь файл, начиная с позиции start.
"show_progress": Bool # показывать прогрессы выполнения задачи
}
Примечание: Если поле presets пустое и start>0 или duration>0, то метод выполнит обрезку медиафайла без выполнения транскодирования.
Пример тела запроса
{
"presets": ["5676a27cf9cb101634000002","5676a27cf9cb101634000003"],
"names": {"5676a27cf9cb101634000002": "test720p.mp4", "5676a27cf9cb101634000003": "test480p.mp4"},
"path": "/test",
"watermarks": {"Full": "5adfa939534b446a607d9937"},
"del_original": false,
"show_progress": true
}
Пример ответа
{
"code": 200,
"status": "success",
"message": "Task create success.",
"active_tasks": 2,
"task_id": "56ea79e2534b4423135ebfd3"
}
Описание | Метод для создания задачи на конкатенацию файлов |
Структура URL | https://api.platformcraft.ru/1/transcoder?concat |
Метод | POST |
Тип тела запроса | JSON |
Возвращает | Статус постановки задачи |
Формат тела запроса
{
"files": ["String",...], # упорядоченный список id файлов для конкатенации (от 2-х до 20 файлов)
"path": "String" # директория загрузки файла. Необязательный параметр. По умолчанию новые файлы размещаются в корневой директории.
"name": "String" # имя файла
}
Пример тела запроса
{
"files": ["5adfa9bc534b446a7f5d3c0c","5ade3ad1534b445140d49539"],
"path": "/dir",
"name": "concat.mp4"
}
Пример ответа
{
"code": 200,
"status": "success",
"message": "Task create success.",
"active_tasks": 2,
"task_id": "56ea79e2534b4423135ebfd3"
}
Описание | Метод для создания задачи на перекодирование HLS |
Структура URL | https://api.platformcraft.ru/1/transcoder/hls/{:object_id} |
Метод | POST |
Тип тела запроса | JSON |
Возвращает | Статус постановки задачи |
Формат тела запроса
{
"presets": ["presetID",...], #список id форматов для перекодирования
"segment_duration": Int #Длительность сегмента видео в сек. от 1 до 60
}
Пример тела запроса
{
"presets": ["5693b900534b440cd053f5a5","5693b900534b440cd053f5a3"],
"segment_duration": 20
}
Пример ответа
{
"code": 200,
"status": "success",
"message": "Task create success.",
"active_tasks": 2,
"task_id": "56ea79e2534b4423135ebfd3"
}
Описание | Метод для получения вырезки скриншота в указанный момент времени |
Структура URL | https://api.platformcraft.ru/1/transcoder/screenshot/{:object_id} |
Метод | POST |
Тип тела запроса | application/json |
Возвращает | Информацию о созданном скриншоте |
Формат тела запроса
{
"position": Float, # позиция скриншота от начала файла (секунды)
"name": "String", # имя скриншота
"path": "String" # директория загрузки
}
Пример тела запроса
{
"position": 10.5,
"name": "screen.jpg",
"path": "/black/screens"
}
Пример ответа
{
"code": 200,
"status": "success",
"object": {
"id": "6087cdb60e47cf6292960fef",
"name": "screen.jpg",
"path": "/black/screens/screen.jpg",
"is_dir": false,
"size": 47642,
"content_type": "image/jpeg",
"create_date": "27.04.2021T11:39:19",
"resource_url": "api.platformcraft.ru/1/objects/6087cdb60e47cf6292960fef",
"cdn_url": "cdn.platformcraft.ru/example/black/screens/screen.jpg",
"private": false,
"status": "ok",
},
"storage": {
"used": 400587972741,
"limit": 536870912000
}
}
Описание | Метод для создания задачи на изменение размеров изображения |
Структура URL | https://api.platformcraft.ru/1/transcoder/image/{:object_id} |
Метод | POST |
Тип тела запроса | application/json |
Возвращает | Статус постановки задачи |
Формат тела запроса
{
"path": "String" # директория загрузки
"name": "String", # имя конечного изображения
"width": Int, # ширина конечного изображения (нужно указать хотя бы одно значение `width` или `height`)
"height": Int # высота конечного изображения (нужно указать хотя бы одно значение `width` или `height`)
}
Пример тела запроса
{
"path": "/black/images"
"name": "test.jpg",
"width": 200
}
Пример ответа
{
"active_tasks": 1,
"code": 200,
"message": "Task create success.",
"status": "success",
"task_id": "63ca4654534b44c667c9a4c5"
}
Описание | Метод для создания задачи на разделение видеофайла на составляющие |
Структура URL | https://api.platformcraft.ru/1/transcoder?decompose |
Метод | POST |
Тип тела запроса | JSON |
Возвращает | Статус постановки задачи |
Формат тела запроса
{
"file": "String", # id входного видеофайла
"path": "String", # папка, в которой будут размещены сгенерированные файлы (если указанная папка не существует, она будет создана автоматически)
"subtitle_type": "String", # Тип субтитров (возможные значения: ttml, vtt)
"subtitle_langs": ["String",...] # Языки субтитров
}
Пример тела запроса
{
"file": "5e1bb131ef3db56034d1bfcc",
"path": "/test",
"subtitle_type": "ttml",
"subtitle_langs": ["rus", "eng"]
}
Пример ответа
{
"code": 200,
"status": "success",
"message": "Task create success.",
"active_tasks": 2,
"task_id": "56ea79e2534b4423135ebfd3"
}
/transcoder_tasks
Описание | Метод для получения списка задач на перекодирование |
Структура URL | https://api.platformcraft.ru/1/transcoder_tasks |
Метод | GET |
Возвращает | Список задач |
Параметры фильтрации | |
status | Статус задачи (Возможные значения: Progress, Completed, Error). Необязательный. |
start | Временная метка (timestamp) нижней границы начала выполнения задачи. Необязательный. |
end | Временная метка (timestamp) верхнеий границы начала выполнения задачи. Необязательный. |
Параметры сортировки | |
sort |
Параметр сортировки (необязательный). Возможные значения:
"time" - сортировка по времени (по возрастанию). "-time" - сортировка по времени (по убыванию). "status" - сортировка по статусу (по возрастанию). "-status" - сортировка по статусу (по убыванию). "lock" - сортировка по полю `lock` (по возрастанию). "-lock" - сортировка по полю `lock` (по убыванию). |
Параметры пагинации | |
limit | Количество задач на одной странице. Необязательный. Для запроса следующей страницы нужно использовать url, заключенный в поле "next" ответа сервера |
from | Маркер начала следующей страницы (необязательный). Параметр "from" генерируется сервером автоматически в поле ответа "next". |
Пример ответа
{
"code": 200,
"status": "success",
"count": 5, # общее количество задач, удовлетворяющих параметрам запроса
"count_on_page": 3, # количество задач на странице
"next": "api.platformcraft.ru/1/transcoder_tasks?limit=3&from=60d1ea97534b4473a74028c2&start=1623834785&end=1636449185", # запрос следующей страницы (поле отсутствует, если следующей страницы нет)
"tasks": [
{
"id": "56365b04044dfe6917000002",
"category": "encoding",
"title": "Encoding Копия test.360p.mp4",
"body": "Please wait.",
"status": "Progress",
"time_start": "01.11.2015T21:33:40",
"time_finish": "",
"lock": true,
"object_id": "5f686d6f534b4443dc236f78", # id файла-источника
"out": [
{
"name": "",
"duration": 9.288, # длительность транскодированного файла
"preset": "5825d926702b9371dd9bca44" # пресет, используемый для транскодирования файла. Подробная информация о пресете может быть получена с помощью метода `GET https://api.platformcraft.ru/1/transcoder/presets/{:preset_id}`
}
},
{
"id": "566b3a9d044dfe7381000002",
"category": "encoding",
"title": "Encoding test (480p).mp4",
"body": "Internal server error. Please try again later.",
"status": "Error",
"time_start": "12.12.2015T00:05:33",
"time_finish": "12.12.2015T00:05:47",
"lock": false,
"object_id": "5f686d6f534b4443dc236f78",
"out": [
{
"name": "",
"duration": 9.288,
"preset": "5825d926702b9371dd9bca44"
}
},
{
"id": "566b4173044dfe771c000001",
"category": "encoding",
"title": "Encoding test (480p).mp4",
"body": "Encoding video success.",
"status": "Completed",
"time_start": "12.12.2015T00:34:43",
"time_finish": "12.12.2015T00:35:56",
"lock": false,
"object_id": "5f686d6f534b4443dc236f78",
"out": [
{
"name": "",
"duration": 9.288,
"preset": "5825d926702b9371dd9bca44"
}
}
]
}
Описание | Метод для получения информации с конкретным ID |
Структура URL | https://api.platformcraft.ru/1/transcoder_tasks/{:task_id} |
Метод | GET |
Возвращает | Информацию о задаче |
Пример ответа
{
"code": 200,
"files":["56ea7c4e534b44353536586c"],
"status": "success",
"task": {
"id": "56365b04044dfe6917000002",
"category": "encoding",
"title": "Encoding Копия test.360p.mp4",
"body": "Please wait.",
"status": "Progress",
"time_start": "01.11.2015T21:33:40",
"time_finish": "",
"lock": true,
}
"progress": 50, # прогресс транскодирования (%)
"progress_detailed": {
"5676a27cf9cb101634000002": 50, # прогресс транскодирования (%) для пресета
"5676a27cf9cb101634000003": 60
}
"object_id": "5f686d6f534b4443dc236f78", # id файла-источника
"out": [
{
"name": "",
"duration": 9.288, # длительность транскодированного файла
"preset": "5825d926702b9371dd9bca44" # пресет, используемый для транскодирования файла. Подробная информация о пресете может быть получена с помощью метода `GET https://api.platformcraft.ru/1/transcoder/presets/{:preset_id}`
}
}
Описание | Метод для получения информации о HLS задаче с конкретным ID |
Структура URL | https://api.platformcraft.ru/1/transcoder_tasks/hls/{:task_id} |
Метод | GET |
Возвращает | Информацию о HLS задаче |
Пример ответа
{
"code":200,
"files":{
"master_playlist":"56ea7c4e534b44353536586c",
"media":[
{
"playlist":"56ea7c4e534b44353536586d",
"files":[
"56ea7c4f534b44353536586e",
"56ea7c50534b44353536586f",
"56ea7c50534b443535365870"
]
},
{
"playlist":"56ea7c55534b443535365878",
"files":[
"56ea7c55534b443535365879",
"56ea7c55534b44353536587a",
"56ea7c56534b44353536587b"
]
}
]
},
"status":"success",
"task":{
"id":"56ea7c2f534b440c83fe85bc",
"category":"encoding",
"title":"Encoding abc.mp4",
"body":"Encoding video success.",
"status":"Completed",
"time_start":"17.03.2016T12:43:11",
"time_finish":"17.03.2016T12:43:53",
"lock":false
}
}
Описание | Метод для удаления задачи из очереди (удалить можно только незаблокированную задачу) |
Структура URL | https://api.platformcraft.ru/1/transcoder_tasks/{:task_id} |
Метод | DELETE |
Возвращает | Статус удаления задачи |
Пример ответа
{
"code": 200,
"message": "Task delete success.",
"status": "success"
}
/storage
Описание | Метод для получения информации о хранилище |
Структура URL | https://api.platformcraft.ru/1/storage |
Метод | GET |
Возвращает | Информацию об объеме хранения |
Формат ответа
{
"code": Int, #код ответа
"status": "String", #статус ответа
"storage": {
"used": Int, #используемый объем хранения (байты)
"limit": Int #максимальный объем хранения (байты)
}
}
Пример ответа
{
"code": 200,
"status": "success",
"storage": {
"used": 97537237,
"limit": 107374182
}
}
Ошибки
Формат ответа
{
"code": Int, #код ответа
"status": "String", #статус ответа (fail)
"msg_user": "String", #описание ошибки
"msg_dev": "String", #детальное описание ошибки
"doc": "String", #ссылка на документацию
"advanced": "String" #дополнительная информация
}
Коды ошибок
400 - некорректный запрос,
403 - доступ запрещен,
404 - запрашиваемый ресурс не найден.
Пример ответа
{
"code": 400
"status": "fail"
"msg_user": "Api ID, timestamp and hash are required."
"msg_dev": "Check Api id, timestamp and hash."
"doc": "http://doc.platformcraft.ru/filespot/api/#access"
"advanced": null
}