Dans ce document
- introduction
- Spécification OpenAPI
- Authentification
- URL de base
- Ressource de syndication
- Actions
- Langage de modèle universel
Documents connexes
- Syntaxe de recherche pour la syndication
- Exemples de modèles pour la syndication universelle
- Référence de l'API de configuration de syndication
- Référence de l'API du flux de syndication
Introduction
L'API de configuration de syndication de Brightcove est une API accessible au public qui permet de créer, de gérer et d'utiliser des syndications pour générer des flux dynamiques (tels que des flux MRSS) à partir du catalogue vidéo d'un compte Video Cloud.
Il y a aussi un associé API de flux de syndication qui peut être utilisé pour récupérer un flux associé à une syndication.
Disponibilité
Les API de syndication sont disponibles pour tous les clients de Video Cloud qui ont accès aux API de la plate-forme.
Référence API / URL de base / en-têtes
Les Référence de l'API de configuration contient tous les détails sur les opérations, les champs et les paramètres disponibles.
L'URL de base est :
https://social.api.brightcove.com/v1
Toutes les demandes doivent être authentifiées via un en-tête d'autorisation :
Authorization: Bearer {your_access_token}
Voir la section suivante sur l'authentification pour plus d'informations sur les jetons d'accès.
Pour toute demande qui envoie un corps de demande, vous devez également inclure un Content-Type: application/json
entête.
Authentification
L'accès à l'API de configuration nécessite la spécification d'un bearer
jeton de la Service OAuth de Brightcove dans la demande Authorization
entête. Les différentes méthodes API nécessitent également que l'une des opérations suivantes (selon la méthode consultée) soit spécifiée pour les informations d'identification en question :
video-cloud/social/mrss/read
video-cloud/social/mrss/write
Ces opérations peuvent être configurées via le Section Authentification API du module d'administration de Studio:
Si vous préférez, vous pouvez également créer des identifiants via l'API OAuth :
Ressource de syndication
La ressource de syndication est un objet qui définit comment la syndication sera créée. Voici un exemple de corps de requête pour créer une ressource de syndication :
{
"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 réponse ajoutera des champs en lecture seule :
{
"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"
}
Champ | Type | Lecture seulement | Description |
---|---|---|---|
id |
Chaîne | Oui | généré lors de la création de la syndication |
name |
Chaîne | Non | un nom interne pour cette syndication - requis pour les requêtes POST |
content_type_header |
Chaîne | Non | Si défini, remplace l'en-tête Content-Type renvoyé par le serveur de flux pour le flux de cette syndication. Sinon, le flux utilise par défaut une valeur d'en-tête spécifique au type de syndication |
include_all_content |
Booléen | Non | Si vrai, toutes les vidéos du catalogue sont incluses dans cette syndication |
include_filter |
Chaîne | Non |
Doit être spécifié si include_all_content est false. Valeur est une chaîne CMS API de recherche utilisant la syntaxe de recherche vidéo de l'API CMS v2. Toutes les règles de syntaxe s'appliquent - la seule différence est que la chaîne de recherche est saisie comme Lorsque vous utilisez des balises en tant que paramètre dans l'
|
type |
Chaîne | Non | Le type de flux qui sera généré. Le type universel permet de générer des flux personnalisés par un modèle de flux téléchargé. Valeurs valides : advanced , google , iphone , ipad , mp4 , itunes , roku , source , universal . Obligatoire pour les requêtes POST |
title |
Chaîne | Non | Le titre de ce flux. Ceci est inclus à l'intérieur de la balise <channel> pour les types de flux applicables |
description |
Chaîne | Non | La description de ce flux. Ceci est inclus à l'intérieur de la balise <channel> pour les types de flux applicables |
syndication_url |
Chaîne | Oui | L'URL du flux MRSS de cette syndication |
destination_url |
Chaîne | Non | L'URL à inclure dans la balise <channel> pour les types de flux applicables |
keywords |
Chaîne | Non | liste délimitée par des virgules, utilisée uniquement pour iTunes et (potentiellement) les flux universels |
author |
Chaîne | Non | utilisé uniquement pour itunes et (potentiellement) les flux universels |
owner_name |
Chaîne | Non | utilisé uniquement pour itunes et (potentiellement) les flux universels |
language |
Chaîne | Non | utilisé uniquement pour itunes et (potentiellement) les flux universels - code de langue à deux lettres en minuscules, tel que "en" |
owner_email |
Chaîne | Non | utilisé uniquement pour itunes et (potentiellement) les flux universels |
category |
Chaîne | Non | uniquement utilisé pour itunes et (potentiellement) les flux universels. Pour spécifier une catégorie avec une sous-catégorie, séparez-les par deux points (:) - par exemple : "Business:Business News". "category": "Music" |
album_art_url |
Chaîne | Non | URL de l'image, utilisée uniquement pour iTunes et (potentiellement) les flux universels |
fetch_sources |
Booléen | Non | Pour les modèles universels, s'il faut récupérer les métadonnées de la source vidéo - si le modèle n'a pas besoin de ces métadonnées, les performances peuvent être améliorées en spécifiant false ; peut être vide si aucune source utilisable n'existe |
fetch_digital_master |
Booléen | Non | Pour les modèles universels, s'il faut récupérer les métadonnées du master numérique vidéo - si le modèle n'a pas besoin de ces métadonnées, les performances peuvent être améliorées en spécifiant false ; peut être vide s'il n'existe pas de master numérique |
fetch_dynamic_renditions |
Booléen | Non | Pour les modèles universels, s'il faut récupérer les métadonnées de rendu dynamique de la vidéo - si le modèle n'a pas besoin de ces métadonnées, les performances peuvent être améliorées en spécifiant false |
sort |
Chaîne | Non | Un spécificateur de tri vidéo CMS indiquant l'ordre de retour des résultats du flux souhaité. Valeurs prises en charge par CMS telles que name , reference_id , created_at , published_at , updated_at , schedule.starts_at , schedule.ends_at , state , plays_total , et plays_trailing_week peut être spécifié. Pour trier par ordre décroissant, faites précéder la valeur d'un signe moins (-), c'est-à-dire -created_at , spécifié, le flux sera trié par le plus récent updated_at date par défaut. |
Voir Syntaxe de recherche vidéo de l'API CMS v2 pour plus de détails sur le include_filter
biens.. Toutes les règles de syntaxe de recherche s'appliquent - la seule différence est que la chaîne de recherche est saisie comme include_filter
valeur plutôt qu'un ?query=
param.
Opérations
Consultez la référence API pour plus de détails sur les opérations disponibles :
Les actions suivantes sont prises en charge :
- Créer une syndication
- Mettre à jour une syndication
- Supprimer une syndication
- Obtenez toutes les syndications pour un compte
- Obtenez une syndication spécifique
- Définir le modèle pour une syndication universelle
- Obtenez le modèle pour une syndication universelle
- Obtenir le flux associé à une syndication
Messages d'erreur
Si une requête API échoue, un message d'erreur sera renvoyé. Les réponses d'erreur ressembleront à ce qui suit :
[
{
"error_code" : "Application error code 1",
"message" : "Application error message 1"
}, {
"error_code" : "Application error code 2",
"message" : "Application error message 2"
}
]
Créer une syndication
Méthode: POST
Point final : /accounts/{account_id}/mrss/syndications
Exemple de corps de requête :
{
"name": "my mp4 feed",
"type": "mp4"
}
Notez que le name
et type
les champs sont obligatoires. D'autres sont facultatifs.
Mettre à jour une syndication
Méthode: PATCH
Point final : /accounts/{account_id}/mrss/syndications/{syndication_id}
Exemple de corps de requête :
{
"name": "my new name"
}
Notez que le corps de la requête pour les requêtes PATCH doit ne pas inclure les champs (type
, id
et syndication_url
).
Supprimer une syndication
Méthode: DELETE
Point final : /accounts/{account_id}/mrss/syndications/{syndication_id}
Obtenez toutes les syndications pour un compte
Méthode: GET
Point final : /accounts/{account_id}/mrss/syndications
Obtenez une syndication spécifique
Méthode: GET
Point final : /accounts/{account_id}/mrss/syndications/{syndication_id}
Définir le modèle pour une syndication universelle
Méthode: PUT
Point final : /accounts/{account_id}/mrss/syndications/{syndication_id}/template
Exemple de corps de requête :
<feed header>My Feed Header</feed header>
Le modèle ci-dessus générerait un flux similaire à :
<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>
Obtenez le modèle pour une syndication universelle
Méthode: GET
Point final : /accounts/{account_id}/mrss/syndications/{syndication_id}/template
Obtenir le flux associé à une syndication
L'URL du flux peut être obtenue auprès de la syndication syndication_url
champ, ou construit manuellement. Notez que le API de flux de syndication peut également être utilisé pour récupérer un flux sans authentification.
Méthode: GET
Point final : /accounts/{account_id}/mrss/syndications/{syndication_id}/feed
Langage de modèle universel
Les syndications universelles permettent de fusionner les données du catalogue avec un modèle personnalisé pour générer tout type de flux souhaité. Le langage de modèle pris en charge est Liquide. Les flux pour les types de syndication par défaut sont générés à l'aide des mêmes types de modèles. Vous pouvez voir le modèles fournis à titre d'exemples pour vous aider à créer des modèles personnalisés si vous en avez besoin.
Les sections ci-dessous identifient les propriétés de syndication, d'actif, de source et de master numérique que vous pouvez utiliser, ainsi qu'une extension à Liquid ajoutée pour plus de commodité.
Pour voir tous les champs de métadonnées vidéo Video Cloud avec des descriptions, allez dans le Référence des champs vidéo de l'API CMS.
Propriétés de niveau supérieur
Dérivé des champs de syndication
album_art_url
author
category
description
destination_url
explicit
keywords
name
owner_name
owner_email
subtitle
syndication_id
syndication_url
title
Identifiant de compte Video Cloud
account_id
Préfixe de l'URL de la page du lecteur par défaut de VideoCloud
Utilisez comme ceci :
<media:player url="//default_default/index.html?videoId=">
player_url
URL de la page suivante du flux
next_page
Collection d'éléments vidéo extraits du catalogue (voir ci-dessous pour plus de détails)
assets
Propriétés de l'actif
Les ressources de la collection d'éléments sont dérivées des ressources vidéo renvoyées par la méthode d'API CMS Get Videos, et toutes les mêmes propriétés sont prises en charge, y compris, mais sans s'y limiter :
created_at
description
duration
id
images
images.thumbnail
images.poster
long_description
name
original_filename
published_at
schedule
state
tags
text_tracks
updated_at
Les ressources d'actif prennent également en charge les propriétés suivantes :
sources
(collection de sources pour la vidéo - voir la section suivante pour les propriétés des sources)digital_master
(sera vide si aucun master numérique n'existe - voir ci-dessous pour les propriétés du master numérique)best_mp4_source
(la source MP4 de la plus haute qualité - peut être vide s'il n'y a pas de sources MP4. Les propriétés seront les mêmes que les éléments retournés dans lesources
)hls_source
(renvoie la source HLS - sera vide s'il n'y en a pas)best_dynamic_rendition_quality
(renvoie la qualité vidéo du rendu dynamique de la vidéo avec la plus grande taille d'image, si des métadonnées de rendu dynamique ont été récupérées pour la vidéo. Les valeurs autorisées sont "SD", "HD", "FHD" et "UHD".)
Propriétés de la source
Les ressources de la collection de sources d'un élément sont dérivées des ressources de source vidéo renvoyées par la méthode d'API CMS Get Video Sources. Les propriétés suivantes sont prises en charge :
app_name
asset_id
codec
container
created_at
duration
encoding_rate
height
size
src
stream_name
type
uploaded_at
width
Propriétés du maître numérique
Les digital_master
La ressource d'un actif est dérivée de la ressource principale numérique renvoyée par la méthode d'API CMS Get Digital Master Info. Les propriétés suivantes sont prises en charge :
duration
encoding_rate
height
size
url
width
Propriétés de rendu dynamique
Les dynamic_renditions
La ressource d'un actif est dérivée des rendus dynamiques renvoyés par la méthode de l'API CMS Get Digital Master Info. Les propriétés suivantes sont prises en charge :
rendition_id
frame_height
frame_width
media_type
encoding_rate
created_at
updated_at
size
duration
audio_configuration
language
variant
Extensions au liquide
filtre toUTC
Nous avons étendu notre analyseur Liquid pour prendre en charge un filtre toUTC qui analysera la plupart des formats de chaîne datetime ISO-8601 standard et les transformera en chaînes datetime UTC standard. Ce format est acceptable pour le filtre de date de Liquid, qui peut ensuite être utilisé pour reformater les horodatages en chaînes datetime dans n'importe quel format souhaité. Par exemple :
<pubDate>{{asset.published_at | toUTC | date: "%a, %d %b %Y %H:%M:%S %Z"}}</pubDate>
Cela produit une sortie comme la suivante si asset.published_at a une valeur de 2019-08-09T13:32:52.031Z ::
<pubDate>Fri, 09 Aug 2019 09:32:52 +0000</pubDate>
toEpoch filtre
L'analyseur Liquid que nous utilisons ne prend pas en charge le jeton "%s" dans les filtres de date pour convertir les dates en horodatages d'époque Unix. Pour résoudre ce problème, un filtre personnalisé toEpoch est fourni qui peut être utilisé pour convertir les spécifications de date valides au format d'époque. Le filtre renvoie une valeur de données numérique représentant les millisecondes depuis l'époque qui convient à l'entrée dans les filtres mathématiques. Par exemple :
<toEpochMillis>{{"now" | toEpoch }}</toEpochMillis>
<toEpochSeconds>{{"now" | toEpoch | divided_by : 1000 }}</toEpochSeconds>
<thirtyDaysAgo>{{'now' | toEpoch | minus:2592000000 | fromEpoch }}</thirtyDaysAgo>
produit une sortie comme la suivante :
<toEpochMillis>1580917253024</toEpochMillis>
<toEpochSeconds>1580917253</toEpochSeconds>
<thirtyDaysAgo>2020-01-06T15:40:53.055Z</thirtyDaysAgo>
fromEpoch filter
Le filtre fromEpoch convertit les nombres représentant les millisecondes depuis l'époque en chaînes de date UTC. Le filtre acceptera également une chaîne contenant les chiffres de la valeur de l'époque comme entrée. La sortie peut être transmise au filtre de date pour reformatage si nécessaire.
Par exemple :
<fromEpochMillis>{{"now" | toEpoch | fromEpoch }}</fromEpochMillis>
<thirtyDaysAgoAltFormat>{{1580917253024 | fromEpoch | date:"%Y-%m-%d" }}</thirtyDaysAgo>
produit une sortie comme la suivante :
<fromEpochMillis>2020-02-05T16:09:37.809Z</fromEpochMillis>
<thirtyDaysAgoAltFormat>2020-02-05</thirtyDaysAgo>