Управление стеками версий
Управление стеками версий
Обзор
Стеки версий — это принцип систематизации в Frame.io, который позволяет размещать ресурсы вертикально в «стеки», не помещая их в папки. Стеки версий упрощают навигацию от актива к активу в пользовательском интерфейсе Frame.io и поддерживают параллельный просмотр.
В настоящее время мы не поддерживаем прямое добавление в стек, поэтому последовательность API-интерфейса для управления базовым рабочим процессом стека версий будет следовать той же последовательности, что и в пользовательском интерфейсе Frame.io:
- Добавление ресурса (по желанию: пометьте как частный).
- Назначение ресурса в стек.
Существующие стеки версий можно переупорядочить, а отдельные версии можно исключить из стека. Наконец, стеки версий можно удалить, не удаляя ни один из составляющих их ресурсов.
Все стеки версий имеют cover_asset
Стеки версий всегда имеют атрибут cover_asset_id на верхнем уровне. Это ИД ресурса, миниатюра которого отображается в веб-интерфейсе Frame.io и является версией с наибольшим номером в стеке.
Основные концепции
Стеки версий, как и папки, — это специальные типы ресурсов. Вы можете получить их с помощью тех же конечных точек, и на основе значения ключа тип в ответе API-интерфейса выполнять анализ и маршрутизацию соответствующим образом. Как правило, на практике это просто, но может представлять некоторые сложности при масштабном управлении стеками. Ключ к работе со стеками версий заключается в разделении четырех наиболее распространенных сценариев:
- Ресурс можно добавить к ресурсу, что создаст стек с новым
ИД. - Ресурс можно добавить к существующему стеку.
- Стек можно переупорядочить.
- Отдельные версии можно удалить.
Первые два сценария используют один и тот же вызов конечной точки, поэтому единственный реальный нюанс заключается в том, чтобы знать, создаете ли вы новый стек (из двух ресурсов) или добавляете свой ресурс к существующему стеку. Кроме того, ограничения предсказуемы:
- Стеки должны совпадать по
asset_type(например, нельзя разместить image в стеке со stream). - Действующий пользователь должен иметь разрешения как для исходного ресурса, так и для целевого ресурса или стека.
- Последовательное размещение ресурсов в стеке.
- Нельзя наложить стек на стек.
- Папки исключены.
Последние два сценария также довольно просты, но требуют более глубокого понимания самого стека. Например, чтобы изменить положение ресурса в стеке, вам нужно знать ИД ресурсов по обеим сторонам от места, куда вы хотите поместить целевой ресурс; это обычно означает, что вы уже получили весь стек.
Необходимые области доступа
Перед началом работы с этим руководством убедитесь, что у вас есть токен, который включает следующие области доступа:
Добавление ресурсов в стеки версий
Шаг 1. Поиск места назначения
Для начала определите, в каком из двух ключевых сценариев вы находитесь: добавляете ресурс к другому ресурсу для создания стека или добавляете ресурс к стеку для его расширения.
Если вы знаете, что работаете с неверсированным ресурсом, или у вас уже есть ИД стека версий, можете переходить к шагу 2.
Если нет, далее представлен самый простой способ определить, является ли целевой ресурс уже частью стека:
-
Выполнить запрос
GETк вашему целевому ресурсу по адресу/v2/assets/:id -
Проверьте возвращаемый
тип.
- Если это version_stack, uuid, который вы только что проверили, — это ваш целевой uuid. Переходите к шагу 2.
- Если
тип— это файл, возьмитеparent_id. - Выполните запрос GET к родительскому элементу через ту же конечную точку и проверьте его
тип.
Если тип родительского элемента — version_stack, используйте его ИД как место назначения. Если тип — это что-то другое, это обычный ресурс и можно использовать исходный ИД как место назначения.
Шаг 2. Подготовка полезной нагрузки
Теперь, когда у вас есть целевой uuid, вам нужно знать uuid ресурса, который вы добавляете в стек.
- Если вы добавляете новый ресурс, просто используйте идентификатор, полученный в ответе о выполнении, когда вы создаете ресурс.
- Если вы добавляете существующий ресурс в стек, у вас должен быть
идентификатор, полученный в результате процесса, описанного выше.
Единственный параметр тела, необходимый для добавления в стек версий, — это next_asset_id:
Шаг 3. Добавление исходного ресурса к целевому
Теперь, когда у вас есть оба параметра идентификатора ресурса, вы готовы выполнить запрос POST по адресу /assets/:id/version, где :id — это ваш целевой ресурс или стек версий, а исходный (новый) ресурс находится в теле запроса.
Переупорядочение стеками версий
Стеки версий основаны на простой порядковой концепции, где у каждого ресурса есть соседи next_asset_id и prev_asset_id, при этом порядок относится не к нумерации версий, а к атрибуту index каждого ресурса. index идет в противоположном направлении от номеров версий, соответственно:
- Первая (с наименьшим номером) версия в стеке имеет
предыдущийресурс, но не имеетследующегоресурса. - Более новая (с наибольшим номером) версия в стеке имеет
следующийресурс, но не имеетпредыдущегоресурса. - Все «внутренние» версии имеют как
предыдущий, так иследующийресурс, которые являются ресурсами с более высокими и более низкими идентификаторами версий соответственно.
Это дает нам три различных сценария, все из которых используют один и тот же вызов конечной точки:
Вызов:
Тело:
Во всех случаях ИД в пути URL-адреса будет ресурсом, который вы перемещаете.
Удаление ресурсов и удаление стеков версий
Удаление ресурсов
Когда ресурс перемещается в стек версий, он становится дочерним элементом самого стека. Чтобы переместить ресурс из стека версий, нужно эффективно вернуть его обратно в папку, содержащую стек.
- Выполните запрос
GETк стеку версий с помощью вызова/v2/assets/:id - Возьмите
parent_idстека (который станет вашим новымИДцелевой папки) - Переместите целевой ресурс в папку следующим образом:
Вызов:
Тело:
Удаление стеков версий
Удаление стека версий выполняется очень просто:
Вот и все. При удалении стека все составляющие его ресурсы возвращаются в папку, где располагался стек.
Стеки размером в 1 элемент следует удалять
Если вы удалите все элементы из стека версий, в итоге вы получите стек, состоящий из одного элемента. Это легко заметить — если вы выполните запрос GET к стеку версий по его ИД, вы увидите атрибут "version": 1.
Все это технически допустимо — одиночная версия будет загружаться и воспроизводиться, в нее можно будет добавлять новые версии, и все будет работать как обычно. Однако, чтобы не создавать путаницы для пользователей в веб-приложении Frame.io и других приложениях, мы рекомендуем удалять одиночные стеки.
Для получения дополнительной информации о конечной точке стекирования версий см. документацию по ресурс ам.