Überblick: Social Syndication-API

Die Social Syndication API ist eine öffentlich zugängliche API, die es ermöglicht, Syndikationen zu erstellen, zu verwalten und zu verwenden, um dynamische Feeds (wie MRSS-Feeds) aus einem VideoCloud-Videokatalog zu generieren.

In diesem Dokument

Zugehörige Unterlagen

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:

Berechtigungen für Social Syndication
Berechtigungen für Social Syndication

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"
    }
Syndication-Ressource
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 include_filter Wert statt a ?query= Param.

Wenn Sie Tags als Parameter im include_filter Objekt verwenden und die Tags am Anfang Sonderzeichen haben, sollte die Syntax für diese Instanz wie folgt lauten:

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

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:

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