개요: 소셜 신디케이션 API

소셜 신디케이션 API는 VideoCloud 비디오 카탈로그에서 동적 피드 (예: MRSS 피드) 를 생성하는 데 신디케이션을 생성, 관리 및 사용할 수 있도록 공개적으로 액세스 가능한 API입니다.

이 문서에서

관련된 문서

서문

브라이트코브 신디케이션 구성 API는 공개적으로 액세스할 수 있는 API로, Video Cloud 계정의 비디오 카탈로그에서 신디케이션을 생성, 관리하고 동적 피드 (예: MRSS 피드) 를 생성하는 데 사용할 수 있습니다.

또한신디케이션과 관련된 피드를검색하는 데 사용할 수 있는 관련 신디케이션 피드 API도 있습니다.

가용성

신디케이션 API는 Platform API에 액세스 할 수있는 모든 Video Cloud 고객이 사용할 수 있습니다.

API 참조 / 기본 URL / 헤더

구성 API참조에는 사용 가능한 작업, 필드 및 파라미터에 대한 모든 세부 정보가 포함되어 있습니다.

기본 URL은 다음과 같습니다.

https://social.api.brightcove.com/v1

모든 요청은 Authorization 헤더를 통해 인증되어야합니다.

Authorization: Bearer {your_access_token}

액세스 토큰에 대한 정보는 인증에 대한 다음 섹션을 참조하십시오.

요청 본문을 보내는 모든 요청에는Content-Type: application/json헤더도 포함해야 합니다.

인증

구성 API에 액세스하려면bearer의 토큰브라이트코브 OAuth 서비스요청에서Authorization머리글. 또한 다양한 API 메서드를 사용하려면 해당 자격 증명에 대해 다음 작업 중 하나 (액세스 된 메서드에 따라 다름)를 지정해야합니다.

  • video-cloud/social/mrss/read
  • video-cloud/social/mrss/write

이러한 작업은 Studio 관리 모듈의 API 인증 섹션을 통해 구성할 수 있습니다 .

소셜 신디케이션 권한
소셜 신디케이션 권한

원하는 경우 OAuth API를 통해 자격 증명을 만들 수도 있습니다.

신디케이션 리소스

신디케이션 리소스는 신디케이션이 생성되는 방법을 정의하는 객체입니다. 다음은 신디케이션 리소스를 만들기위한 샘플 요청 본문입니다.

  {
    "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"
  }

응답은 일부 읽기 전용 필드를 추가합니다.

  {
    "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"
    }
신디케이션 리소스
필드 유형 읽기 전용 설명
id 문자열 신디케이션이 생성 될 때 생성됨
name 문자열 아니요 이 신디케이션의 내부 이름-POST 요청에 필요
content_type_header 문자열 아니요 설정된 경우이 신디케이션의 피드에 대해 피드 서버에서 반환 한 Content-Type 헤더를 재정의합니다. 그렇지 않으면 피드는 기본적으로 신디케이션 유형별 헤더 값으로 설정됩니다.
include_all_content 부울 아니요 참이면 모든 카탈로그 비디오가 이 신디케이션에 포함됩니다.
include_filter 문자열 아니요

포함_모두_콘텐츠가 거짓인 경우 반드시 지정해야 합니다. 값은CMS API를 사용하여 검색 문자열 CMS API 동영상 검색 구문 v2 . 모든 구문 규칙이 적용됩니다. 유일한 차이점은 검색 문자열이include_filter값보다는?query=매개변수

include_filter객체에서 태그를 매개 변수로 사용하는 경우 태그의 시작 부분에 특수 문자가 있는 경우 해당 인스턴스의 구문은 다음과 같아야 합니다.

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

type 문자열 아니요 생성 될 피드 유형입니다. 범용 유형을 사용하면 업로드 된 피드 템플릿에서 맞춤 피드를 생성 할 수 있습니다. 유효한 값: advancedgoogle , iphone , ipad , mp4 , itunes , roku , source , universal . POST 요청에 필요
title 문자열 아니요 이 피드의 제목입니다. 이는 해당하는 피드 유형에 대한 < channel> 태그 안에 포함되어 있습니다.
description 문자열 아니요 이 피드에 대한 설명입니다. 이는 해당하는 피드 유형에 대한 < channel> 태그 안에 포함되어 있습니다.
syndication_url 문자열 이 신디케이션의 MRSS 피드 URL
destination_url 문자열 아니요 적용 가능한 피드 유형의 <channel> 태그 내에 포함될 URL
keywords 문자열 아니요 쉼표로 구분 된 목록, iTunes 및 (잠재적으로) 범용 피드에만 사용됨
author 문자열 아니요 단지 아이튠즈 및 (잠재적으로) 범용 피드에 사용
owner_name 문자열 아니요 단지 아이튠즈 및 (잠재적으로) 범용 피드에 사용
language 문자열 아니요 iTunes 및 (잠재적으로) 유니버설 피드에만 사용됩니다. 다음과 같이 소문자로 된 두 글자 언어 코드입니다. "en"
owner_email 문자열 아니요 단지 아이튠즈 및 (잠재적으로) 범용 피드에 사용
category 문자열 아니요 iTunes 및 (잠재적으로) 유니버설 피드에만 사용됩니다. 하위 범주가있는 범주를 지정하려면 콜론 (:)으로 구분합니다. 예를 들면 다음과 같습니다. "Business:Business News". "category": "Music"
album_art_url 문자열 아니요 이미지의 URL, iTunes 및 (잠재적으로) 범용 피드에만 사용됨
fetch_sources 부울 아니요 유니버설 템플릿의 경우 비디오 소스 메타데이터를 가져올지 여부 - 템플릿에 이 메타데이터가 필요하지 않은 경우 다음을 지정하여 성능을 개선할 수 있습니다false . 사용 가능한 소스가 없으면 비어 있을 수 있습니다.
fetch_digital_master 부울 아니요 범용 템플릿의 경우 비디오 디지털 마스터 메타데이터를 가져올지 여부 - 템플릿에 이 메타데이터가 필요하지 않은 경우 다음을 지정하여 성능을 개선할 수 있습니다false . 디지털 마스터가 없으면 비어 있을 수 있습니다.
fetch_dynamic_renditions 부울 아니요 범용 템플릿의 경우 비디오 동적 변환 메타 데이터를 가져올 지 여부-템플릿에이 메타 데이터가 필요하지 않은 경우 다음을 지정하여 성능을 향상시킬 수 있습니다. false
sort 문자열 아니요 원하는 피드 결과 반환 순서를 나타내는 CMS 비디오 정렬 지정자입니다. CMS에서 지원하는 값 (예: namereference_idcreated_at , published_at , updated_at , schedule.starts_at , schedule.ends_at , stateplays_total , 및 을 지정할plays_trailing_week수 있습니다. 내림차순으로 정렬하려면 값 앞에 빼기 (-) 기호를 붙입니다. 즉-created_at , 지정하면 기본적으로 피드가 가장 최근updated_at날짜를 기준으로 정렬됩니다.

보다 CMS API 동영상 검색 구문 v2자세한 내용은include_filter재산.. 모든 검색 구문 규칙이 적용됩니다. 유일한 차이점은 검색 문자열이include_filter값보다는?query=매개변수

운영

사용 가능한 작업에 대한 자세한 내용은 API 참조를 참조하세요.

다음 작업이 지원됩니다.

오류 메시지

API 요청이 실패하면 오류 메시지가 반환됩니다. 오류 응답은 다음과 같습니다.

  [
    {
      "error_code" : "Application error code 1",
      "message" : "Application error message 1"
    }, {
      "error_code" : "Application error code 2",
      "message" : "Application error message 2"
    }
  ]

신디케이션 만들기

방법: POST

엔드포인트: /accounts/{account_id}/mrss/syndications

샘플 요청 본문:

  {
    "name": "my mp4 feed",
    "type": "mp4"
  }

nametype필드는 필수라는 점에 유의하십시오. 기타는 선택 사항입니다.

신디케이션 업데이트

방법: PATCH

엔드포인트: /accounts/{account_id}/mrss/syndications/{syndication_id}

샘플 요청 본문:

  {
    "name": "my new name"
  }

PATCH 요청에 대한 요청 본문은 ~ 아니다필드( type , id그리고syndication_url ).

신디케이션 삭제

방법: DELETE

엔드포인트: /accounts/{account_id}/mrss/syndications/{syndication_id}

계정에 대한 모든 신디케이션 가져 오기

방법: GET

엔드포인트: /accounts/{account_id}/mrss/syndications

특정 신디케이션 받기

방법: GET

엔드포인트: /accounts/{account_id}/mrss/syndications/{syndication_id}

범용 신디케이션을위한 템플릿 설정

방법: PUT

엔드포인트: /accounts/{account_id}/mrss/syndications/{syndication_id}/template

샘플 요청 본문:

  <feed header>My Feed Header</feed header>
  

위 템플릿은 다음과 유사한 피드를 생성합니다.

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

범용 신디케이션을위한 템플릿 가져 오기

방법: GET

엔드포인트: /accounts/{account_id}/mrss/syndications/{syndication_id}/template

신디케이션과 관련된 피드 가져 오기

피드 URL은 신디케이션syndication_url필드에서 가져오거나 수동으로 생성할 수 있습니다. 신디케이션 피드 API를 사용하여 인증 없이 피드를 검색할수도 있습니다.

방법: GET

엔드포인트: /accounts/{account_id}/mrss/syndications/{syndication_id}/feed

범용 템플릿 언어

범용 신디케이션을 사용하면 카탈로그 데이터를 사용자 정의 템플릿과 병합하여 원하는 모든 종류의 피드를 생성 할 수 있습니다. 지원되는 템플릿 언어는 Liquid입니다 . 기본 신디케이션 유형에 대한 피드는 동일한 유형의 템플릿을 사용하여 생성됩니다. 필요한 경우 사용자 지정템플릿을 만드는데 도움이 되는 샘플로 제공된 템플릿을 볼 수 있습니다.

아래 섹션에서는 사용할 수있는 신디케이션, 자산, 소스 및 디지털 마스터 속성과 편의를 위해 추가 된 Liquid의 확장을 식별합니다.

설명과 함께 모든 Video Cloud 비디오 메타데이터 필드를 보려면 CMS API 비디오 필드 참조를 참조하십시오 .

최상위 속성

신디케이션 필드에서 파생 됨

  • album_art_url
  • author
  • category
  • description
  • destination_url
  • explicit
  • keywords
  • name
  • owner_name
  • owner_email
  • subtitle
  • syndication_id
  • syndication_url
  • title

Video Cloud 계정 ID

  • account_id

VideoCloud 기본 플레이어 페이지 URL 접두사

다음과 같이 사용하십시오.

  <media:player url="//default_default/index.html?videoId=">
  • player_url

피드의 다음 페이지 URL

  • next_page

카탈로그에서 검색된 비디오 자산 모음 (자세한 내용은 아래 참조)

  • assets

자산 속성

자산 컬렉션의 리소스는 CMS Get Videos API 메서드에서 반환 된 비디오 리소스에서 파생되며 다음을 포함하되 이에 국한되지 않는 모든 동일한 속성이 지원됩니다.

  • created_at
  • description
  • duration
  • id
  • images
  • images.thumbnail
  • images.poster
  • long_description
  • name
  • original_filename
  • published_at
  • schedule
  • state
  • tags
  • text_tracks
  • updated_at

자산 리소스는 다음 속성도 지원합니다.

  • sources (비디오 소스 모음-소스 속성은 다음 섹션 참조)
  • digital_master (디지털 마스터가 없으면 비어 있음-디지털 마스터 속성은 아래 참조)
  • best_mp4_source (최고 품질의 MP4 소스-MP4 소스가없는 경우 비어있을 수 있습니다. 속성은sources ) 에서 반환된 항목과 동일합니다.
  • hls_source (HLS 소스를 반환-존재하지 않으면 비어 있음)
  • best_dynamic_rendition_quality (동영상에 대해 동적 변환 메타 데이터를 가져온 경우 프레임 크기가 가장 큰 동영상의 동적 변환의 비디오 품질을 반환합니다. 허용되는 값은 "SD", "HD", "FHD"및 "UHD"입니다.)

소스 속성

자산에 대한 소스 컬렉션의 리소스는 CMS Get Video Sources API 메서드에서 반환 된 비디오 소스 리소스에서 파생됩니다. 다음 속성이 지원됩니다.

  • app_name
  • asset_id
  • codec
  • container
  • created_at
  • duration
  • encoding_rate
  • height
  • size
  • src
  • stream_name
  • type
  • uploaded_at
  • width

디지털 마스터 속성

자산의digital_master리소스는 CMS Get Digital Master Info API 메서드에서 반환된 디지털 마스터 리소스에서 파생됩니다. 다음 속성이 지원됩니다.

  • duration
  • encoding_rate
  • height
  • size
  • url
  • width

동적 변환 속성

자산의dynamic_renditions리소스는 CMS Get Digital Master Info API 메서드에서 반환된 동적 변환에서 파생됩니다. 다음 속성이 지원됩니다.

  • rendition_id
  • frame_height
  • frame_width
  • media_type
  • encoding_rate
  • created_at
  • updated_at
  • size
  • duration
  • audio_configuration
  • language
  • variant

Liquid 확장

toUTC 필터

대부분의 표준 ISO-8601 날짜 / 시간 문자열 형식을 구문 분석하고 표준 UTC 날짜 / 시간 문자열로 변환하는 toUTC 필터를 지원하도록 Liquid 파서를 확장했습니다. 이 형식은 Liquid의 날짜 필터에 적합하며, 이 필터는 타임스탬프를 원하는 형식의 날짜/시간 문자열로 다시 포맷하는 데 사용할 수 있습니다. 예:

  <pubDate>{{asset.published_at | toUTC | date: "%a, %d %b %Y %H:%M:%S %Z"}}</pubDate>

그러면 asset.published_at의 값이 2019-08-09T 13:32:52 .031Z인 경우 다음과 같은 출력이 생성됩니다.

  <pubDate>Fri, 09 Aug 2019 09:32:52 +0000</pubDate>

toEpoch 필터

우리가 사용하는 Liquid 파서는 날짜를 Unix epoch 타임 스탬프로 변환하기위한 날짜 필터에서 "% s"토큰을 지원하지 않습니다. 이를 해결하기 위해 유효한 날짜 사양을 epoch 형식으로 변환하는 데 사용할 수있는 toEpoch 사용자 지정 필터가 제공됩니다. 필터는 수학적 필터에 대한 입력에 적합한 에포크 이후 밀리 초를 나타내는 숫자 데이터 값을 반환합니다. 예:

  <toEpochMillis>{{"now" | toEpoch }}</toEpochMillis>
  <toEpochSeconds>{{"now" | toEpoch | divided_by : 1000 }}</toEpochSeconds>
  <thirtyDaysAgo>{{'now' | toEpoch | minus:2592000000 | fromEpoch }}</thirtyDaysAgo>

다음과 같은 출력을 생성합니다.

  <toEpochMillis>1580917253024</toEpochMillis>
  <toEpochSeconds>1580917253</toEpochSeconds>
  <thirtyDaysAgo>2020-01-06T15:40:53.055Z</thirtyDaysAgo>

fromEpoch 필터

FromEpoch 필터는 에포크 이후 밀리초를 나타내는 숫자를 UTC 날짜 문자열로 변환합니다. 필터는 또한 epoch 값 자릿수를 포함하는 문자열을 입력으로 받아들입니다. 필요한 경우 다시 형식화하기 위해 출력을 날짜 필터로 전달할 수 있습니다.

예:

  
  <fromEpochMillis>{{"now" | toEpoch | fromEpoch }}</fromEpochMillis>
  <thirtyDaysAgoAltFormat>{{1580917253024 | fromEpoch | date:"%Y-%m-%d" }}</thirtyDaysAgo>
  

다음과 같은 출력을 생성합니다.

  
  <fromEpochMillis>2020-02-05T16:09:37.809Z</fromEpochMillis>
  <thirtyDaysAgoAltFormat>2020-02-05</thirtyDaysAgo>