Descripción general: API de distribución social

La API de sindicación social es una API de acceso público que permite crear, administrar y utilizar sindicaciones para generar fuentes dinámicas (como las fuentes MRSS) a partir de un catálogo de videos de VideoCloud.

En este documento

Documentos relacionados

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:

Permisos de distribución social
Permisos de distribución social

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"
    }
Recurso de distribución
Campo Tipo Solo lectura Descripción
id cuerda 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 include_filter valor en lugar de un ?query= param.

Al usar etiquetas como parámetro en el include_filter objeto, si las etiquetas tienen caracteres especiales al principio, la sintaxis para esa instancia debe ser:

"include_filter": "tags:\"<special-character>tagName\""

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 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:

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 el sources)
  • 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>