En este documento
- Introducción
- Especificación de OpenAPI
- Autenticación
- URL base
- Recurso de distribución
- Comportamiento
- Lenguaje de plantilla universal
Documentos relacionados
- Sintaxis de búsqueda para sindicación
- Plantillas de muestra para distribución universal
- Referencia de API de configuración de distribución
- Referencia de la API del feed de distribución
Introducción
La API de configuración de distribución de Brightcove es una API de acceso público que permite crear, gestionar y utilizar distribuciones para generar feeds dinámicos (como feeds MRSS) a partir del catálogo de vídeos de una cuenta de Video Cloud.
También hay un asociado API de feed de distribución que se puede utilizar para recuperar un feed asociado con una distribución.
Disponibilidad
Las API de sindicación están disponibles para todos los clientes de Video Cloud que tienen acceso a las API de la plataforma.
Referencia de API / URL base / encabezados
La Referencia de la API de configuración contiene todos los detalles sobre las operaciones, los campos y los parámetros disponibles.
La URL base es:
https://social.api.brightcove.com/v1
Todas las solicitudes deben autenticarse mediante un encabezado de autorización:
Authorization: Bearer {your_access_token}
Consulte la siguiente sección sobre autenticación para obtener información sobre los tokens de acceso.
Para cualquier solicitud que envíe un cuerpo de solicitud, también debe incluir un Content-Type: application/json
encabezamiento.
Autenticación
El acceso a la API de configuración requiere la especificación de un bearer
ficha de la Servicio Brightcove OAuth en la solicitud Authorization
encabezamiento. Los diversos métodos de API también requieren que se especifique una de las siguientes operaciones (según el método al que se acceda) para las credenciales en cuestión:
video-cloud/social/mrss/read
video-cloud/social/mrss/write
Estas operaciones se pueden configurar a través del Sección de autenticación de API del módulo de administración de Studio:
Si lo prefiere, también puede crear credenciales a través de la API de OAuth:
Recurso de distribución
El recurso de sindicación es un objeto que define cómo se creará la sindicación. A continuación, se muestra un cuerpo de solicitud de muestra para crear un recurso de distribución:
{
"name": "80s music videos syndication",
"type": "advanced",
"include_all_content": false,
"include_filter": "tags:mytag",
"title": "80s Music Videos",
"description": "Amateur Tokyo drift!",
"destination_url": "https://mywebsite.com",
"keywords": "80s, rock",
"author": "Rick Astley",
"category": "Music",
"album_art_url": "https://my_album_art.jpg",
"explicit": "no",
"owner_name": "https://my_album_art.jpg",
"owner_email": "rick@astley.com",
"language": "en-us",
"fetch_sources": true,
"fetch_digital_master": false,
"fetch_dynamic_renditions": true,
"sort": "-created_at",
"content_type_header": "application/xml"
}
La respuesta agregará algunos campos de solo lectura:
{
"id": "7f594cd3-4853-4174-aff3-203c3e99e9c2",
"name": "80s music videos syndication",
"type": "advanced",
"include_all_content": false,
"include_filter": "tags:mytag",
"title": "80s Music Videos",
"description": "Amateur Tokyo drift!",
"syndication_url": "https://social.feeds.brightcove.com/v1/accounts/9999999999999/mrss/accounts/{account_id}/mrss/syndications/7f594cd3-4853-4174-aff3-203c3e99e9c2/feed",
"destination_url": "https://mywebsite.com",
"keywords": "80s, rock",
"author": "Rick Astley",
"category": "Music",
"album_art_url": "https://my_album_art.jpg",
"explicit": "no",
"owner_name": "https://my_album_art.jpg",
"owner_email": "rick@astley.com",
"language": "en-us",
"fetch_sources": true,
"fetch_digital_master": false,
"fetch_dynamic_renditions": true,
"sort": "-created_at",
"content_type_header": "application/xml"
}
Campo | Tipo | Solo lectura | Descripción |
---|---|---|---|
id |
cuerda | Sí | generado cuando se crea la sindicación |
name |
cuerda | No | un nombre interno para esta distribución, obligatorio para las solicitudes POST |
content_type_header |
cuerda | No | Si se establece, anula el encabezado Content-Type devuelto por el servidor de feeds para el feed de esta distribución. De lo contrario, el feed adopta de forma predeterminada un valor de encabezado específico del tipo de distribución. |
include_all_content |
booleano | No | Si es verdadero, todos los videos del catálogo están incluidos en esta distribución. |
include_filter |
cuerda | No |
Debe especificarse si include_all_content es falso. El valor es un CMS API cadena de búsqueda usando el Sintaxis de búsqueda de video de la API de CMS v2. Se aplican todas las reglas de sintaxis; la única diferencia es que la cadena de búsqueda se ingresa como Al usar etiquetas como parámetro en el
|
type |
cuerda | No | El tipo de feed que se generará. El tipo universal permite que se generen feeds personalizados mediante una plantilla de feeds cargada. Valores válidos: advanced , google , iphone , ipad , mp4 , itunes , roku , source , universal . Requerido para solicitudes POST |
title |
cuerda | No | El título de este feed. Esto se incluye dentro de la etiqueta <channel> para los tipos de feeds aplicables. |
description |
cuerda | No | La descripción de este feed. Esto se incluye dentro de la etiqueta <channel> para los tipos de feeds aplicables. |
syndication_url |
cuerda | Sí | La URL del feed MRSS de esta distribución |
destination_url |
cuerda | No | La URL que se incluirá dentro de la etiqueta <canal> para los tipos de feeds aplicables. |
keywords |
cuerda | No | lista delimitada por comas, solo se usa para itunes y (potencialmente) feeds universales |
author |
cuerda | No | solo se usa para itunes y (potencialmente) feeds universales |
owner_name |
cuerda | No | solo se usa para itunes y (potencialmente) feeds universales |
language |
cuerda | No | solo se usa para itunes y (potencialmente) fuentes universales: código de idioma de dos letras en minúsculas, como "en" |
owner_email |
cuerda | No | solo se usa para itunes y (potencialmente) feeds universales |
category |
cuerda | No | solo se usa para itunes y (potencialmente) fuentes universales. Para especificar una categoría con una subcategoría, sepárelas con dos puntos (:), por ejemplo: "Business:Business News". "category": "Music" |
album_art_url |
cuerda | No | URL de la imagen, solo se usa para iTunes y (potencialmente) feeds universales |
fetch_sources |
booleano | No | Para las plantillas universales, si se deben recuperar los metadatos de la fuente de video; si la plantilla no necesita estos metadatos, el rendimiento se puede mejorar especificando false ; podría estar vacío si no existe una fuente utilizable |
fetch_digital_master |
booleano | No | Para las plantillas universales, si se deben recuperar los metadatos maestros digitales de video; si la plantilla no necesita estos metadatos, el rendimiento se puede mejorar especificando false ; podría estar vacío si no existe ningún maestro digital |
fetch_dynamic_renditions |
booleano | No | Para las plantillas universales, si se deben recuperar metadatos de reproducción dinámica de video; si la plantilla no necesita estos metadatos, el rendimiento se puede mejorar especificando false |
sort |
cuerda | No | Un especificador de clasificación de video CMS que indica el orden de devolución de los resultados de la fuente deseada. Valores compatibles con CMS como name , reference_id , created_at , published_at , updated_at , schedule.starts_at , schedule.ends_at , state , plays_total , y plays_trailing_week se puede especificar. Para ordenar en orden descendente, anteponga el valor con un signo menos (-), es decir -created_at , especificado, el feed se ordenará por el más reciente updated_at fecha por defecto. |
Ver Sintaxis de búsqueda de video de la API de CMS v2 para obtener detalles sobre el include_filter
propiedad.. Se aplican todas las reglas de sintaxis de búsqueda; la única diferencia es que la cadena de búsqueda se ingresa como include_filter
valor en lugar de un ?query=
param.
Operaciones
Consulte la Referencia de API para obtener detalles completos de las operaciones disponibles:
Se admiten las siguientes acciones:
- Crea una sindicación
- Actualizar una distribución
- Eliminar una distribución
- Obtenga todas las distribuciones para una cuenta
- Obtenga una sindicación específica
- Establecer la plantilla para una distribución universal
- Obtenga la plantilla para una distribución universal
- Obtener el feed asociado con una distribución
Error de mensajes
Si falla alguna solicitud de API, se devolverá un mensaje de error. Las respuestas de error tendrán el siguiente aspecto:
[
{
"error_code" : "Application error code 1",
"message" : "Application error message 1"
}, {
"error_code" : "Application error code 2",
"message" : "Application error message 2"
}
]
Crea una sindicación
Método: POST
Punto final: /accounts/{account_id}/mrss/syndications
Cuerpo de solicitud de muestra:
{
"name": "my mp4 feed",
"type": "mp4"
}
Tenga en cuenta que el name
y type
los campos son obligatorios. Otros son opcionales.
Actualizar una distribución
Método: PATCH
Punto final: /accounts/{account_id}/mrss/syndications/{syndication_id}
Cuerpo de solicitud de muestra:
{
"name": "my new name"
}
Tenga en cuenta que el cuerpo de la solicitud para las solicitudes de PATCH debe no incluir los campos (type
, id
y syndication_url
).
Eliminar una distribución
Método: DELETE
Punto final: /accounts/{account_id}/mrss/syndications/{syndication_id}
Obtenga todas las distribuciones para una cuenta
Método: GET
Punto final: /accounts/{account_id}/mrss/syndications
Obtenga una sindicación específica
Método: GET
Punto final: /accounts/{account_id}/mrss/syndications/{syndication_id}
Establecer la plantilla para una distribución universal
Método: PUT
Punto final: /accounts/{account_id}/mrss/syndications/{syndication_id}/template
Cuerpo de solicitud de muestra:
<feed header>My Feed Header</feed header>
La plantilla anterior generaría un feed similar a:
<feed header>My Feed Header</feed header>
<item>
<title>Title for Video 1</title>
<video_info>Description for Video 1</video_info>
</item>
<item>
<title>Title for Video 2</title>
<video_info>Description for Video 2</video_info>
</item>
Obtenga la plantilla para una distribución universal
Método: GET
Punto final: /accounts/{account_id}/mrss/syndications/{syndication_id}/template
Obtener el feed asociado con una distribución
La URL del feed se puede obtener de la distribución syndication_url
campo, o construido manualmente. Tenga en cuenta que el API de feed de distribución también se puede utilizar para recuperar un feed sin autenticación.
Método: GET
Punto final: /accounts/{account_id}/mrss/syndications/{syndication_id}/feed
Lenguaje de plantilla universal
Las distribuciones universales permiten fusionar los datos del catálogo con una plantilla personalizada para generar cualquier tipo de alimentación deseada. El idioma de la plantilla admitido es Líquido. Los feeds para los tipos de distribución predeterminados se generan utilizando los mismos tipos de plantillas. Puede ver el plantillas proporcionadas como muestras para ayudarlo a crear plantillas personalizadas si lo necesita.
Las secciones a continuación identifican las propiedades de sindicación, activos, fuentes y maestros digitales que puede usar, así como una extensión de Liquid agregada para su conveniencia.
Para ver todos los campos de metadatos de video de Video Cloud con descripciones, vaya al Referencia de campos de video de la API de CMS.
Propiedades de nivel superior
Derivado de los campos de distribución
album_art_url
author
category
description
destination_url
explicit
keywords
name
owner_name
owner_email
subtitle
syndication_id
syndication_url
title
ID de cuenta de Video Cloud
account_id
Prefijo de URL de la página del reproductor predeterminado de VideoCloud
Úselo así:
<media:player url="//default_default/index.html?videoId=">
player_url
URL de la página siguiente del feed
next_page
Colección de activos de video recuperados del catálogo (consulte los detalles a continuación)
assets
Propiedades del activo
Los recursos de la colección de activos se derivan de los recursos de video devueltos por el método de API Obtener videos de CMS, y se admiten todas las mismas propiedades, incluidas, entre otras, las siguientes:
created_at
description
duration
id
images
images.thumbnail
images.poster
long_description
name
original_filename
published_at
schedule
state
tags
text_tracks
updated_at
Los recursos de activos también admiten las siguientes propiedades:
sources
(colección de fuentes para el video; consulte la siguiente sección para conocer las propiedades de las fuentes)digital_master
(estará vacío si no existe ningún maestro digital; consulte a continuación las propiedades del maestro digital)best_mp4_source
(la fuente MP4 de mayor calidad: puede estar vacía si no hay fuentes MP4. Las propiedades serán las mismas que los elementos devueltos en elsources
)hls_source
(devuelve la fuente de HLS; estará vacía si no existe)best_dynamic_rendition_quality
(devuelve la calidad de video de la reproducción dinámica del video con el tamaño de fotograma más grande, si se han obtenido metadatos de reproducción dinámica para el video. Los valores permitidos son "SD", "HD", "FHD" y "UHD").
Propiedades de la fuente
Los recursos en la colección de fuentes para un activo se derivan de los recursos de fuente de video devueltos por el método de API Obtener fuentes de video de CMS. Se admiten las siguientes propiedades:
app_name
asset_id
codec
container
created_at
duration
encoding_rate
height
size
src
stream_name
type
uploaded_at
width
Propiedades maestras digitales
La digital_master
El recurso para un activo se deriva del recurso maestro digital devuelto por el método de API Obtener información maestra digital de CMS. Se admiten las siguientes propiedades:
duration
encoding_rate
height
size
url
width
Propiedades de reproducción dinámica
La dynamic_renditions
El recurso para un activo se deriva de las representaciones dinámicas devueltas por el método CMS Get Digital Master Info API. Se admiten las siguientes propiedades:
rendition_id
frame_height
frame_width
media_type
encoding_rate
created_at
updated_at
size
duration
audio_configuration
language
variant
Extensiones a Liquid
filtro TOUTC
Hemos ampliado nuestro analizador Liquid para admitir un filtro TOUTC que analizará la mayoría de los formatos de cadena de fecha y hora estándar ISO-8601 y los transformará en cadenas de fecha y hora UTC estándar. Este formato es aceptable para el filtro de fecha de Liquid, que luego se puede usar para reformatear las marcas de tiempo en cadenas de fecha y hora en cualquier formato deseado. Por ejemplo:
<pubDate>{{asset.published_at | toUTC | date: "%a, %d %b %Y %H:%M:%S %Z"}}</pubDate>
Esto produce una salida como la siguiente si asset.published_at tiene un valor de 2019-08-09T13: 32: 52.031Z ::
<pubDate>Fri, 09 Aug 2019 09:32:52 +0000</pubDate>
filtro toEpoch
El analizador Liquid que usamos no admite el token "% s" en los filtros de fecha para convertir fechas en marcas de tiempo de época de Unix. Para solucionar esto, se proporciona un filtro personalizado toEpoch que se puede utilizar para convertir especificaciones de fecha válidas al formato de época. El filtro devuelve un valor de datos numérico que representa milisegundos desde la época que es adecuado para ingresar a los filtros matemáticos. Por ejemplo:
<toEpochMillis>{{"now" | toEpoch }}</toEpochMillis>
<toEpochSeconds>{{"now" | toEpoch | divided_by : 1000 }}</toEpochSeconds>
<thirtyDaysAgo>{{'now' | toEpoch | minus:2592000000 | fromEpoch }}</thirtyDaysAgo>
produce una salida como la siguiente:
<toEpochMillis>1580917253024</toEpochMillis>
<toEpochSeconds>1580917253</toEpochSeconds>
<thirtyDaysAgo>2020-01-06T15:40:53.055Z</thirtyDaysAgo>
de filtro de época
El filtro fromEpoch convierte números que representan milisegundos desde la época en cadenas de fecha UTC. El filtro también aceptará una cadena que contenga los dígitos del valor de la época como entrada. La salida se puede pasar al filtro de fecha para reformatear si es necesario.
Por ejemplo:
<fromEpochMillis>{{"now" | toEpoch | fromEpoch }}</fromEpochMillis>
<thirtyDaysAgoAltFormat>{{1580917253024 | fromEpoch | date:"%Y-%m-%d" }}</thirtyDaysAgo>
produce una salida como la siguiente:
<fromEpochMillis>2020-02-05T16:09:37.809Z</fromEpochMillis>
<thirtyDaysAgoAltFormat>2020-02-05</thirtyDaysAgo>