In diesem Dokument
- Einführung
- OpenAPI-Spezifikation
- Authentifizierung
- Basis-URLs
- Syndication-Ressource
- Aktionen
- Universelle Vorlagensprache
Zugehörige Unterlagen
- Suchsyntax für Syndication
- Beispielvorlagen für Universal Syndication
- API-Referenz zur Syndication-Konfiguration
- API-Referenz für Syndication-Feeds
Einleitung
Die Brightcove Syndication Configuration API ist eine öffentlich zugängliche API, mit der Syndications erstellt, verwaltet und zum Generieren dynamischer Feeds (wie MRSS-Feeds) aus dem Videokatalog eines Video Cloud-Kontos verwendet werden können.
Es gibt auch ein zugehöriges Syndication-Feed-API die verwendet werden kann, um einen mit einer Syndication verknüpften Feed abzurufen.
Verfügbarkeit
Die Syndication-APIs stehen allen Video Cloud-Kunden zur Verfügung, die Zugriff auf die Plattform-APIs haben.
API-Referenz / Basis-URL / Header
Die Konfigurations-API-Referenz enthält alle Details zu den verfügbaren Operationen, Feldern und Parametern.
Die Basis-URL lautet:
https://social.api.brightcove.com/v1
Alle Anfragen müssen über einen Authorization-Header authentifiziert werden:
Authorization: Bearer {your_access_token}
Informationen zu Zugriffstoken finden Sie im nächsten Abschnitt zur Authentifizierung.
Für jede Anforderung, die einen Anforderungstext sendet, müssen Sie auch a Content-Type: application/json
Header.
Authentifizierung
Der Zugriff auf die Konfigurations-API erfordert die Angabe von a bearer
Zeichen von der Brightcove OAuth-Dienst in der Anfrage Authorization
Header. Die verschiedenen API-Methoden erfordern außerdem die Angabe einer der folgenden Operationen (abhängig von der Methode, auf die zugegriffen wird) für die betreffenden Credentials:
video-cloud/social/mrss/read
video-cloud/social/mrss/write
Diese Operationen können über die Abschnitt API-Authentifizierung des Studio Admin-Moduls:
Wenn Sie möchten, können Sie auch Anmeldeinformationen über die OAuth-API erstellen:
Syndication-Ressource
Die Syndication-Ressource ist ein Objekt, das definiert, wie die Syndication erstellt wird. Hier ist ein Beispiel für den Anforderungstext zum Erstellen einer Syndication-Ressource:
{
"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"
}
Die Antwort fügt einige schreibgeschützte Felder hinzu:
{
"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"
}
Feld | Typ | Schreibgeschützt | Beschreibung |
---|---|---|---|
id |
Zeichenfolge | Ja | generiert, wenn Syndikation erstellt wird |
name |
Zeichenfolge | Nein | ein interner Name für diese Syndication - erforderlich für POST-Anfragen |
content_type_header |
Zeichenfolge | Nein | Überschreibt, falls festgelegt, den Content-Type-Header, der vom Feed-Server für den Feed dieser Syndication zurückgegeben wird. Andernfalls verwendet der Feed standardmäßig einen syndikationstypspezifischen Headerwert |
include_all_content |
Boolescher Wert | Nein | Wenn wahr, sind alle Katalogvideos in dieser Syndication enthalten |
include_filter |
Zeichenfolge | Nein |
Muss angegeben werden, wenn include_all_content false ist. Wert ist a CMS API Suchzeichenfolge mit der CMS API-Videosuchsyntax v2. Es gelten alle Syntaxregeln - der einzige Unterschied besteht darin, dass der Suchstring als Wenn Sie Tags als Parameter im
|
type |
Zeichenfolge | Nein | Der Typ des Feeds, der generiert wird. Der universelle Typ ermöglicht die Generierung benutzerdefinierter Feeds durch eine hochgeladene Feedvorlage. Gültige Werte: advanced google , iphone , ipad , mp4 , itunes , roku source , universal . Erforderlich für POST-Anfragen |
title |
Zeichenfolge | Nein | Der Titel dieses Feeds. Dies ist im <channel>-Tag für anwendbare Feed-Typen enthalten |
description |
Zeichenfolge | Nein | Die Beschreibung dieses Feeds. Dies ist im <channel>-Tag für anwendbare Feed-Typen enthalten |
syndication_url |
Zeichenfolge | Ja | Die URL des MRSS-Feeds dieser Syndication |
destination_url |
Zeichenfolge | Nein | Die URL, die in das <channel>-Tag für anwendbare Feedtypen eingefügt werden soll |
keywords |
Zeichenfolge | Nein | durch Kommas getrennte Liste, die nur für iTunes und (potenziell) universelle Feeds verwendet wird |
author |
Zeichenfolge | Nein | nur für itunes und (potenziell) universelle Futtermittel verwendet |
owner_name |
Zeichenfolge | Nein | nur für itunes und (potenziell) universelle Futtermittel verwendet |
language |
Zeichenfolge | Nein | nur für itunes und (potenziell) universelle Feeds verwendet - zweibuchstabiger Sprachcode in Kleinbuchstaben, wie z "en" |
owner_email |
Zeichenfolge | Nein | nur für itunes und (potenziell) universelle Futtermittel verwendet |
category |
Zeichenfolge | Nein | nur für itunes und (potenziell) universelle Feeds verwendet. Um eine Kategorie mit einer Unterkategorie anzugeben, trennen Sie diese durch einen Doppelpunkt (:) - zum Beispiel: "Business:Business News". "category": "Music" |
album_art_url |
Zeichenfolge | Nein | URL für Bild, nur für iTunes und (möglicherweise) universelle Feeds verwendet |
fetch_sources |
Boolescher Wert | Nein | Für universelle Vorlagen, ob Metadaten der Videoquelle abgerufen werden sollen — wenn die Vorlage diese Metadaten nicht benötigt, kann die Leistung verbessert werden, indem angegeben wird false ; könnte leer sein, wenn keine verwendbare Quelle existiert |
fetch_digital_master |
Boolescher Wert | Nein | Für universelle Vorlagen, ob digitale Video-Master-Metadaten abgerufen werden sollen — wenn die Vorlage diese Metadaten nicht benötigt, kann die Leistung verbessert werden, indem angegeben wird false ; könnte leer sein, wenn kein digitaler Master vorhanden ist |
fetch_dynamic_renditions |
Boolescher Wert | Nein | Für universelle Vorlagen, ob Metadaten der dynamischen Videowiedergabe abgerufen werden sollen — wenn die Vorlage diese Metadaten nicht benötigt, kann die Leistung verbessert werden, indem Sie Folgendes angeben: false |
sort |
Zeichenfolge | Nein | Ein CMS-Videosortierbezeichner, der die gewünschte Rückgabereihenfolge der Feed-Ergebnisse angibt. CMS-unterstützte Werte wie name reference_id , created_at , published_at , updated_at , schedule.starts_at , schedule.ends_at , state plays_total , und plays_trailing_week können angegeben werden. Um in absteigender Reihenfolge zu sortieren, stellen Sie dem Wert ein Minuszeichen (-) vor -created_at , d. h., wenn angegeben, wird der Feed standardmäßig nach updated_at dem neuesten Datum sortiert. |
Sehen CMS API-Videosuchsyntax v2 für Details zum include_filter
Eigentum.. Es gelten alle Regeln der Suchsyntax - der einzige Unterschied besteht darin, dass die Suchzeichenfolge als eingegeben wird include_filter
Wert statt a ?query=
Param.
Betrieb
Ausführliche Informationen zu den verfügbaren Operationen finden Sie in der API-Referenz:
Folgende Aktionen werden unterstützt:
- Erstellen Sie eine Syndikation
- Aktualisieren Sie eine Syndikation
- Eine Syndikation löschen
- Erhalten Sie alle Syndications für ein Konto
- Erhalten Sie eine bestimmte Syndication
- Legen Sie die Vorlage für eine universelle Syndikation fest
- Holen Sie sich die Vorlage für eine universelle Syndication
- Holen Sie sich den Feed, der mit einer Syndication verknüpft ist
Fehlermeldungen
Wenn eine API-Anfrage fehlschlägt, wird eine Fehlermeldung zurückgegeben. Fehlerantworten sehen wie folgt aus:
[
{
"error_code" : "Application error code 1",
"message" : "Application error message 1"
}, {
"error_code" : "Application error code 2",
"message" : "Application error message 2"
}
]
Erstellen Sie eine Syndikation
Methode: POST
Endpunkt: /accounts/{account_id}/mrss/syndications
Beispiel-Anfragetext:
{
"name": "my mp4 feed",
"type": "mp4"
}
Notiere dass der name
und type
Felder sind notwendig. Andere sind optional.
Aktualisieren Sie eine Syndikation
Methode: PATCH
Endpunkt: /accounts/{account_id}/mrss/syndications/{syndication_id}
Beispiel-Anfragetext:
{
"name": "my new name"
}
Beachten Sie, dass der Anforderungstext für PATCH-Anforderungen muss nicht schließen Sie die Felder ein (type
, id
Und syndication_url
).
Eine Syndikation löschen
Methode: DELETE
Endpunkt: /accounts/{account_id}/mrss/syndications/{syndication_id}
Erhalten Sie alle Syndications für ein Konto
Methode: GET
Endpunkt: /accounts/{account_id}/mrss/syndications
Erhalten Sie eine bestimmte Syndication
Methode: GET
Endpunkt: /accounts/{account_id}/mrss/syndications/{syndication_id}
Legen Sie die Vorlage für eine universelle Syndikation fest
Methode: PUT
Endpunkt: /accounts/{account_id}/mrss/syndications/{syndication_id}/template
Beispiel-Anfragetext:
<feed header>My Feed Header</feed header>
Die obige Vorlage würde einen Feed ähnlich dem folgenden generieren:
<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>
Holen Sie sich die Vorlage für eine universelle Syndication
Methode: GET
Endpunkt: /accounts/{account_id}/mrss/syndications/{syndication_id}/template
Holen Sie sich den Feed, der mit einer Syndication verknüpft ist
Die Feed-URL kann von der Syndication abgerufen werden syndication_url
Feld, oder manuell konstruiert. Notiere dass der Syndication-Feed-API kann auch verwendet werden, um einen Feed ohne Authentifizierung abzurufen.
Methode: GET
Endpunkt: /accounts/{account_id}/mrss/syndications/{syndication_id}/feed
Universelle Vorlagensprache
Universelle Syndications ermöglichen die Zusammenführung von Katalogdaten mit einer benutzerdefinierten Vorlage, um jede gewünschte Art von Feed zu generieren. Die unterstützte Vorlagensprache ist Flüssig. Feeds für die Standard-Syndication-Typen werden mit den gleichen Vorlagentypen generiert Vorlagen als Muster zur Verfügung gestellt um Ihnen bei der Erstellung benutzerdefinierter Vorlagen bei Bedarf zu helfen.
In den folgenden Abschnitten werden die Syndizierungs-, Asset-, Quell- und digitalen Master-Eigenschaften aufgeführt, die Sie verwenden können, sowie eine Erweiterung zu Liquid, die der Einfachheit halber hinzugefügt wurde.
Um alle Video Cloud-Videometadatenfelder mit Beschreibungen anzuzeigen, gehen Sie zum CMS API-Videofelder-Referenz.
Top-Level-Eigenschaften
Abgeleitet von Syndication-Feldern
album_art_url
author
category
description
destination_url
explicit
keywords
name
owner_name
owner_email
subtitle
syndication_id
syndication_url
title
Video Cloud-Konto-ID
account_id
VideoCloud-Standard-Player-Seiten-URL-Präfix
Verwenden Sie wie folgt:
<media:player url="//default_default/index.html?videoId=">
player_url
URL der nächsten Seite des Feeds
next_page
Sammlung von Video-Assets, die aus dem Katalog abgerufen wurden (Details siehe unten)
assets
Asset-Eigenschaften
Die Ressourcen in der Asset-Sammlung werden von den Videoressourcen abgeleitet, die von der CMS Get Videos API-Methode zurückgegeben werden, und alle Eigenschaften werden unterstützt, einschließlich, aber nicht beschränkt auf die folgenden:
created_at
description
duration
id
images
images.thumbnail
images.poster
long_description
name
original_filename
published_at
schedule
state
tags
text_tracks
updated_at
Asset-Ressourcen unterstützen auch die folgenden Eigenschaften:
sources
(Sammlung von Quellen für das Video — Quelleneigenschaften finden Sie im nächsten Abschnitt)digital_master
(ist leer, wenn kein digitaler Master existiert - siehe unten für die Eigenschaften des digitalen Masters)best_mp4_source
(die MP4-Quelle mit der höchsten Qualität — kann leer sein, wenn keine MP4-Quellen vorhanden sind. Die Eigenschaften sind die gleichen wie die zurückgegebenen Artikel imsources
)hls_source
(gibt die HLS-Quelle zurück - ist leer, wenn keine existiert)best_dynamic_rendition_quality
(gibt die Videoqualität der dynamischen Wiedergabeversion des Videos mit der größten Bildgröße zurück, wenn Metadaten der dynamischen Wiedergabeversion für das Video abgerufen wurden. Zulässige Werte sind "SD", "HD", "FHD" und "UHD".)
Quelleigenschaften
Die Ressourcen in der Quellensammlung für ein Asset werden aus den Videoquellenressourcen abgeleitet, die von der CMS-API-Methode Get Video Sources zurückgegeben werden. Die folgenden Eigenschaften werden unterstützt:
app_name
asset_id
codec
container
created_at
duration
encoding_rate
height
size
src
stream_name
type
uploaded_at
width
Digitale Master-Eigenschaften
Die digital_master
Ressource für ein Asset wird von der digitalen Masterressource abgeleitet, die von der CMS Get Digital Master Info API-Methode zurückgegeben wird. Die folgenden Eigenschaften werden unterstützt:
duration
encoding_rate
height
size
url
width
Dynamische Wiedergabeeigenschaften
Die dynamic_renditions
Ressource für ein Asset wird von den dynamischen Darstellungen abgeleitet, die von der CMS Get Digital Master Info API-Methode zurückgegeben werden. Die folgenden Eigenschaften werden unterstützt:
rendition_id
frame_height
frame_width
media_type
encoding_rate
created_at
updated_at
size
duration
audio_configuration
language
variant
Erweiterungen zu Liquid
toUTC-Filter
Wir haben unseren Liquid-Parser erweitert, um einen toUTC-Filter zu unterstützen, der die meisten Standard-ISO-8601-Datumszeit-String-Formate parst und sie in Standard-UTC-Datumszeit-Strings umwandelt. Dieses Format ist für den Datumsfilter von Liquid akzeptabel, der dann verwendet werden kann, um die Zeitstempel in Datums-/Uhrzeit-Strings in jedem gewünschten Format umzuformatieren. Zum Beispiel:
<pubDate>{{asset.published_at | toUTC | date: "%a, %d %b %Y %H:%M:%S %Z"}}</pubDate>
Dies erzeugt eine Ausgabe wie die folgende, wenn asset.published_at den Wert 2019-08-09T 13:32:52 .031Z hat::
<pubDate>Fri, 09 Aug 2019 09:32:52 +0000</pubDate>
toEpoch-Filter
Der von uns verwendete Liquid-Parser unterstützt das Token "%s" in Datumsfiltern zum Konvertieren von Daten in Unix-Epochen-Zeitstempel nicht. Um dies zu beheben, wird ein benutzerdefinierter toEpoch-Filter bereitgestellt, mit dem gültige Datumsangaben in das Epochenformat konvertiert werden können. Der Filter gibt einen numerischen Datenwert zurück, der Millisekunden seit der Epoche darstellt, der für die Eingabe in mathematische Filter geeignet ist. Zum Beispiel:
<toEpochMillis>{{"now" | toEpoch }}</toEpochMillis>
<toEpochSeconds>{{"now" | toEpoch | divided_by : 1000 }}</toEpochSeconds>
<thirtyDaysAgo>{{'now' | toEpoch | minus:2592000000 | fromEpoch }}</thirtyDaysAgo>
erzeugt eine Ausgabe wie die folgende:
<toEpochMillis>1580917253024</toEpochMillis>
<toEpochSeconds>1580917253</toEpochSeconds>
<thirtyDaysAgo>2020-01-06T15:40:53.055Z</thirtyDaysAgo>
fromEpoch-Filter
Der fromEpoch-Filter konvertiert Zahlen, die Millisekunden seit der Epoche darstellen, in UTC-Datumszeichenfolgen. Der Filter akzeptiert auch eine Zeichenfolge, die die Ziffern des Epochenwerts enthält, als Eingabe. Die Ausgabe kann bei Bedarf zur Neuformatierung an den Datumsfilter übergeben werden.
Zum Beispiel:
<fromEpochMillis>{{"now" | toEpoch | fromEpoch }}</fromEpochMillis>
<thirtyDaysAgoAltFormat>{{1580917253024 | fromEpoch | date:"%Y-%m-%d" }}</thirtyDaysAgo>
erzeugt eine Ausgabe wie die folgende:
<fromEpochMillis>2020-02-05T16:09:37.809Z</fromEpochMillis>
<thirtyDaysAgoAltFormat>2020-02-05</thirtyDaysAgo>