Ограничения

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

Filespot API v 1.0

API v1.0 является legacy нашего API. Хотя данная версия продолжает поддерживаться для совместимости с существующими интеграциями, новых методов и улучшений для нее не планируется.
Доступна версия API v2 с более широкими возможностями для загрузки файлов и записи потоков. Эта версия активно развивается и включает в себя все новейшие функции и улучшения.

Доступ

Авторизация (JWT)

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 токенов с использованием логина и пароля

Структура 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 токена

Структура 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"
}


Точки входа

/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

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

{
    "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&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

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

{
    "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

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

{
    "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

{
    "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

{
    "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
}


Метод для получения списка временных ссылок

Структура 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&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

Формат ответа

{
    "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

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

{
    "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

{
    "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&timestamp=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&timestamp=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&timestamp=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&timestamp=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&timestamp=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&timestamp=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&timestamp=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&timestamp=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&timestamp=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&timestamp=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&timestamp=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&timestamp=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&timestamp=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
}


Библиотеки

platformcraft-filespot для Ruby