Filespot API v 1.0

API находится в состоянии разработки, все изменения будут описываться в данной документации. Все запросы осуществляются на URL

https://api.platformcraft.ru/1

Доступ

При каждом запросе необходимо передавать

  1. apiuserid - id выданный менеджером
  2. timestamp - текущее время в Unix формате
  3. hash - подпись текущего запроса (HMAC хеш-сумма в шестнадцатеричном виде с использованием SHA-256 и ключа пользователя)

Пример формирования HMAC хeш-суммы для авторизации

Ключ пользователя:

APIUserKey

Сообщение:

GET+api.platformcraft.ru/1/objects?apiuserid=test&timestamp=1450342665

Результат:

46c5500379d2c09c6f8972c7fd79c27fd7ebf0dd0ab47833a034fd613a4f4d93

Точки входа

/objects

Описание Метод для загрузки файлов в контейнер
Структура URL https://api.platformcraft.ru/1/objects
Метод POST
Возвращает Информацию о загруженном объекте
Параметры
file Загружаемый файл. Обязательный.
name Для задания имени загружаемому файлу и помещения в нужную директорию "/folder/folder2/filename.ext". Необязательный.
private Приватность файла (private=true соответствует приватному файлу). Необязательный.

Базовый пример файлового загрузчика с использованием этого метода.

    https://api.platformcraft.ru/1/objects?apiuserid=test&timestamp=1450342665&hash=217ea22038abe3a16a2b0284e7b3d9a4487013ed9e832418befc49886a27d571

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

{
    "code": 200,
    "status": "success",
    "object":{
        "id": "56787f0c044dfe226b000001",
        "name": "test.mp4",
        "path": "/test.mp4",
        "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",
        "video": "video.platformcraft.ru/56787f0c044dfe226b000001",
        "private": false,
        "status": "ok"
    }
}
Описание Метод для получения списка всех объектов
Структура URL https://api.platformcraft.ru/1/objects
Метод GET
Возвращает Список всех объектов в контейнере
Параметры
folder Директория, из которой нужно получить файлы. Пример: "/test". Если параметр не указан, сканирование файлов будет осуществляться по всем директориям аккаунта. Необязательный.
name Имя файла. Пример: "test.mp4". Необязательный.
ext Расширение имени файла. Пример: "mp4". Необязательный.
private Приватность файла (private=true - показать только приватные файлы, private=false - показать только публичные файлы). Необязательный.
    https://api.platformcraft.ru/1/objects?apiuserid=test&timestamp=1450342665&hash=217ea22038abe3a16a2b0284e7b3d9a4487013ed9e832418befc49886a27d571

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

{
    "code": 200,
    "status": "success",
    "count": 2,
    "objects": [
        {
            "id": "56787f0c044dfe226b000001",
            "name": "test.mp4",
            "path": "/test.mp4",
            "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",
            "video": "video.platformcraft.ru/56787f0c044dfe226b000001",
            "private": true,
            "status": "ok"
        },
        {
            "id": "56787f0c044dfe226b000002",
            "name": "test1.mp4",
            "path": "/test1.mp4",
            "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",
            "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&timestamp=1450342665&hash=217ea22038abe3a16a2b0284e7b3d9a4487013ed9e832418befc49886a27d571

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

{
    "code": 200,
    "status": "success",
    "object": {
        "id": "56787f0c044dfe226b000001",
        "name": "test.mp4",
        "path": "/test.mp4",
        "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",
        "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&timestamp=1450342665&hash=217ea22038abe3a16a2b0284e7b3d9a4487013ed9e832418befc49886a27d571

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

{
    "code": 200,
    "status": "success",
}
Описание Изменяет объект с заданным id
Структура URL https://api.platformcraft.ru/1/objects/:id
Метод PUT
Тип тела запроса JSON
Возвращает Статус операции изменения объекта
Примечание Новый метод. Ожидаются дополнения.

Формат тела запроса

{
    "name": "String",        #новое имя объекта
    "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)

}

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

https://api.platformcraft.ru/1/temp?apiuserid=test&timestamp=1450342665&hash=217ea22038abe3a16a2b0284e7b3d9a4487013ed9e832418befc49886a27d571

{
    "object_id": "56787f0c044dfe226b000001",
    "endless":   false,
    "exp":       1492008763,
    "secure":    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      #ссылка на продажу или нет
    }

}

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

{
    "code": 200,
    "status": "success",
    "link": {
        "id":"58ee48ca534b4409844c8f7a",
        "object_id":"56787f0c044dfe226b000001",
        "href":"cdn.platformcraft.ru/temp/58ee48ca534b4409844c8f7a",
        "secure":true,
        "exp":1492008763,
        "for_sale":false
    }
}
Описание Метод для получения списка временных ссылок
Структура 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&timestamp=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      #ссылка на продажу или нет
        }
    ]
}

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

{
    "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
        }
    ],
}
Описание Метод для получения информации о временной ссылке
Структура URL https://api.platformcraft.ru/1/temp/{:link_id}
Метод GET
Возвращает Информацию о временной ссылке

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

https://api.platformcraft.ru/1/temp/58edef62534b4466a3ec333e?apiuserid=test&timestamp=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      #ссылка на продажу или нет
    }

}

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

{
    "code": 200,
    "status": "success",
    "link": {
        "id":"58edef62534b4466a3ec333e",
        "object_id":"56787f0c044dfe226b000001",
        "href":"cdn.platformcraft.ru/temp/58ee48ca534b4409844c8f7a",
        "secure":true,
        "exp":1492008763,
        "for_sale":false
    }
}
Описание Удаляет временную ссылку с заданным id
Структура URL https://api.platformcraft.ru/1/temp/{:link_id}
Метод DELETE
Возвращает Статус операции удаления временной ссылки

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

https://api.platformcraft.ru/1/temp/58edef62534b4466a3ec333e?apiuserid=test&timestamp=1450342665&hash=217ea22038abe3a16a2b0284e7b3d9a4487013ed9e832418befc49886a27d571

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

{
    "code": 200,
    "status": "success",
}

/streams

Описание Метод для добавления видеопотока
Структура URL https://api.platformcraft.ru/1/streams
Метод POST
Тип тела запроса JSON
Возвращает Информацию о созданном видеопотоке

Формат тела запроса

{
        "name": "String", #имя видеопотока (обязательный параметр)
        "url" : "String"  #rtmp или hls URL видеопотока (обязательный параметр)
}

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

https://api.platformcraft.ru/1/streams?apiuserid=test&timestamp=1450342665&hash=217ea22038abe3a16a2b0284e7b3d9a4487013ed9e832418befc49886a27d571

{
    "name": "example",
    "url" : "rtmp://example.ru/example/example.sdp" 
}

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

{
    "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": "rtmp://example.ru/example/example.sdp",
        "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": "rtmp://example.ru/example/example.sdp",
            "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": "rtmp://example.ru/example/example.sdp",
        "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
Возвращает Статус старта мгновенной записи видеопотока
https://api.platformcraft.ru/1/streams/rec/instant/start/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/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
}

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

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

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

{
    "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/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", #имя плеера (обязательный параметр)
        "videos": {                   #словарь объектов видео (обязательный параметр)
            "String": "String",       #название видео в плеере: id объекта видео (обязательно хотя бы одно поле)
            ...
        },
        "screen_shot_id":   "String", #id объекта скриншота (необязательный параметр)
        "vast_ad_tag_url" : "String", #VAST ad tag url (необязательный параметр)
        "description": "String",      #описание плеера (необязательный параметр, не более 1500 символов)
        "tags": ["String",...]        #список тегов (необязательный параметр)
}

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

https://api.platformcraft.ru/1/players?apiuserid=test&timestamp=1450342665&hash=217ea22038abe3a16a2b0284e7b3d9a4487013ed9e832418befc49886a27d571

{
    "name":"player_name",
    "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"]
}

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

{
    "code": Int,                     #код ответа (200)
    "status": "String",              #статус ответа (success)
    "player": {                      #информация о плеере
        "id": "String",              #id плеера
        "name": "String",            #имя плеера
        "videos": {                  #словарь ссылок на видео
            "String": "String",      #название видео в плеере: ссылка на видео
            ...
        },
        "screen_shot_url": "String", #ссылка на скриншот
        "vast_ad_tag_url": "String", #VAST ad tag url
        "create_date": "String",     #дата создания плеера
        "href": "String",            #ссылка на плеер
        "frame_tag": "String"        #код вставки плеера
    }
}

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

{
    "code": 200,
    "status": "success",
    "player": {
        "id": "567d3643534b4474087c221d",
        "name": "player_name",
        "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>"
    }
}
Описание Метод для получения списков всех плееров
Структура URL https://api.platformcraft.ru/1/players
Метод GET
Возвращает Список всех плееров
https://api.platformcraft.ru/1/players?apiuserid=test&timestamp=1450342665&hash=217ea22038abe3a16a2b0284e7b3d9a4487013ed9e832418befc49886a27d571

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

{
    "code": Int,                         #код ответа (200)
    "status": "String",                  #статус ответа (success)
    "count": "String",                   #количество плееров
    "players": [                         #список плееров
        {                                #информация о плеере
            "id": "String",              #id плеера
            "name": "String",            #имя плеера
            "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"      #описание плеера
        }
    ]
}

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

{
    "code": 200,
    "status": "success",
    "count": 2,
    "players": [
        {
            "id": "567d3643534b4474087c221d",
            "name": "player_name",
            "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"
        },
        {
            "id": "567d3643534b4474087c221e",
            "name": "player_name_1",
            "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"
        }
    ]
}
Описание Метод для получения информации о плеере
Структура 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",            #имя плеера
        "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"      #описание плеера
    }
}

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

{
    "code": 200,
    "status": "success",
    "player": {
        "id": "567d3643534b4474087c221d",
        "name": "player_name",
        "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" #описание плеера
    }
}
Описание Метод для удаления плеера
Структура 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", #новое имя плеера
    "screen_shot_id": "String", #id объекта скриншота
    "description": "String",    #описание плеера (не более 1500 символов)
    "tags": ["String",...]      #список тегов
}

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

{
    "code": 200,
    "status": "success",
}

/download

Описание Метод для создания задачи на загрузку файла по URL
Структура URL https://api.platformcraft.ru/1/download
Метод POST
Возвращает Статус постановки задачи
Параметры
url URL загружаемого файла. Пример: "http://test-domain.ru/test/test.mp4". Обязательный параметр.
path Директория загрузки файла. Пример: "/test". При отсутствии этого параметра загружаемые файлы размещаются в корневой директории.
name Имя файла. Пример: "test.mp4". При отсутствии этого параметра имя файла определяется автоматически.
    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
Возвращает Список задач

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

{
    "code": 200,
    "status": "success",
    "count": 2,
    "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"
            }
        },
        {
            "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"
            }
        },
        {
            "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"
            }
        }
    ]
}

/transcoder

Описание Метод для создания задачи на перекодирование
Структура URL https://api.platformcraft.ru/1/transcoder/{:object_id}
Метод POST
Тип тела запроса JSON
Возвращает Статус постановки задачи

Формат тела запроса

{
   "presets": ["presetID",...], #список id форматов для перекодирования
   "path": "String"             #Директория загрузки файла. Необязательный параметр. По умолчанию новые файлы размещаются в директории транскодируемого файла.
}

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

{
   "presets": ["5676a27cf9cb101634000002","5676a27cf9cb101634000003"],
   "path": "/test"
}

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

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

/transcoder_tasks

Описание Метод для получения списка задач на перекодирование
Структура URL https://api.platformcraft.ru/1/transcoder_tasks
Метод GET
Возвращает Список задач

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

{
    "code": 200,
    "status": "success",
    "count": 3,
    "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
        },
        {
            "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
        },
        {
            "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
        }
    ]
}
Описание Метод для получения информации с конкретным 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
    }
}
Описание Метод для получения информации о 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"
}

Ошибки

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

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