基本事項
Brightcove Interactivity は、2 つの API エンドポイント セットを通じてレポートデータへのプログラムによるアクセスを提供します。
エンゲージメント レポートのベース URL
https://interactivity-reporting.api.brightcove.com/api/reports/v2/
アナリティクス レポートのベース URL
https://interactivity.api.brightcove.com
リクエストの認証
レポート API は、クライアント クレデンシャル フローを使用した Brightcove のOAuth システムによって認証されます。これは、クライアント クレデンシャル(client_id
と client_secret
)を取得し、それらを使用してアクセストークンを取得し、以下のように Authorization ヘッダーに含めて送信することを意味します:
Authorization: Bearer access_token_here
アクセストークンの生成方法については、アクセストークンの取得に関する情報を参照してください。
クライアント クレデンシャルを最も簡単に取得する方法は Studio を利用することです。詳細は API クレデンシャルの管理をご覧ください。Interactivity に必要な権限は以下の通りです:

自身のレポート API キーは、Brightcove Interactivity ポータルの管理者メニュー内の「統合」タブにあります。 レポート API キーはパスワードと同様に慎重に取り扱ってください。第三者がそのキーを持っていれば、あなたのアカウントのレポートデータを取得できてしまいます。
レポート リクエスト用のベース URL:
URL 構造の例
https://[base-url]/[report-name]?send_status=true&[parameters]
リクエストの例
interactivity-reporting.api.brightcove.com/api/reports/v2/project_engagement_summary_raw?send_status=true&account_id=6415650835001
APIリクエストの構築
API は、ベース API URL への GET 操作によって呼び出されます。リクエストには有効な Authorization
ヘッダーを含める必要があります。特定のレポートは、ベース API URL にレポート名と有効なパラメータを追加することでリクエストされます。
結果は同期的には返されません。 レポート API の操作は非同期であり、リクエストの返答時点で結果がまだ利用できない場合があります。その場合、リクエストはキューに追加され、結果を取得するにはポーリング(定期的な再リクエスト)を行うか、後で再度リクエストする必要があります。
リクエストには常に send_status=true
を含める必要があります。これにより、レポート処理中は API が HTTP 202 ステータスを返し、処理完了後に結果と共に HTTP 200 を返すようになります。
結果の取得にポーリングが必要かどうかを判断するには、API から返される HTTP ステータスコードを確認してください。「202 Accepted」の場合、レポートはまだ生成中であり、少し時間をおいて再度リクエストを行う必要があります。完了すると、HTTP 200 ステータスコードと共に結果が返されます。 レポート結果が一度生成されると、その結果は 1 日間キャッシュされ、以降のリクエストには即座に返されます。
エンゲージメント レポートのエンドポイント
以下のレポートは、次のベースURLを通じてAPI経由で取得することができます: https://interactivity-reporting.api.brightcove.com/api/reports/v2/
名前 | 説明 | エンドポイント |
---|---|---|
プロジェクト概要 | プロジェクトごとに1行 | project_engagement_summary_raw |
ユーザー概要 | ユーザーごとに1行 | user_engagement_summary_raw |
エクスペリエンス概要 | エクスペリエンスごとに1行 | experience_engagement_summary_raw |
投票ウィジェット概要 |
投票ウィジェットのインスタンスごとに1行。 プロジェクトIDには、該当の投票が表示および送信されたすべてのプロジェクトのリストが含まれます。同じ投票ウィジェットが複数のプロジェクトで使用されるテンプレートに対応しています。 注: プロジェクトIDのリストは重複排除されていません。 |
poll_widget_summary |
サインイン ウィジェット概要 |
サインイン ウィジェットのインスタンスごとに1行。各種サインイン統計の件数を含みます。プロジェクトIDには、該当のサインインが表示および送信されたすべてのプロジェクトのリストが含まれます。同じサインイン ウィジェットが複数のプロジェクトで使用されるテンプレートに対応しています。 注: プロジェクトIDのリストは重複排除されていません。 |
signin_widget_summary |
ユーザー アクティビティ ストリーム |
アクションごとに1行(ユーザーIDが判明している場合は含む) * ブックマークの表示、プレーヤーコントロール、アノテーション、ウィジェットに対するユーザーの操作を含みます。 **「Progress」イベントは含まれません。 |
user_stream_raw |
プロジェクト アクティビティ ストリーム |
アクションごとに1行 * ブックマークの表示、プレーヤーコントロール、アノテーション、ウィジェットに対するユーザーの操作を含みます。 **「Progress」イベントは含まれません。 |
project_stream_raw |
エクスペリエンスストリーム |
アクションごとに1行 * ブックマークの表示、プレーヤーコントロール、アノテーション、ウィジェットに対するユーザーの操作を含みます。 **「Progress」イベントは含まれません。 |
experience_stream_raw |
投票ウィジェット詳細 | 投票の送信イベントごとに1行 | poll_widget_detail |
サインイン ウィジェット詳細 | サインイン送信イベントごとに1行。以前の手動サインインにより自動でサインインされたイベントも含みます。 | signin_widget_detail |
チャプター概要レポート | チャプター アノテーションごとに1行 | chapter_summary |
ユーザー感情ウィジェット | プロジェクトごとに1行 | widget_user_sentiment_summary |
エンゲージメント レポートのパラメータ
すべてのエンゲージメント レポートエンドポイントは、以下のパラメータを受け取ります:
start
レポート結果の開始日。デフォルト値は「end」日から7日前。日付の形式は YYYY-MM-DD。すべての時間はUTCです。
end
レポート結果の終了日。デフォルト値は現在の日の終わり。例えば、今日が2021-09-23の場合、デフォルトの終了日は2021-09-23 23:59:59.999です。
format
レポート結果の出力形式。サポートされている値は: csv および json。
send_status
APIとのやり取りを簡単にするために、常に send_status=true
を含めることを推奨します。これにより、レポート処理中は HTTP 202ステータスが返され、完了後に結果とともに HTTP 200が返されます。
アナリティクス レポートのエンドポイント
以下のレポートは、次のベースURLを通じてAPI経由で取得できます: https://interactivity.api.brightcove.com
レポート名 | 説明 | エンドポイントパス |
---|---|---|
成績概要レポート(Gradebook Summary Report) | ユーザーIDごとに正解数を集計して取得します。 | /v1/accounts/{account_id}/reports/gradebook/summary |
ユーザー回答レポート(Gradebook User Answer Report) | ユーザーが送信した回答を取得します。 | /v1/accounts/{account_id}/reports/gradebook/users/answers |
クイズ アクションレポート(Quiz Actions Report) | プロジェクトごとに回答された質問の件数を取得します。 | /v1/accounts/{account_id}/reports/quiz/actions |
クイズ プロジェクト概要レポート(Quiz Project Summary Report) | 質問および回答ごとに集計されたユニーク回答件数を取得します。 | /v1/accounts/{account_id}/reports/quiz/project/summary |
アナリティクス レポートのパラメータ
各エンドポイントの全パラメータと詳細については、Interactivity API リファレンスを参照してください。
以下は一部のエンドポイントで共通して使用されるパラメータです:
account_id
レポートを要求するアカウントの一意の識別子。
project_id
プロジェクトIDで結果をフィルタリングします。
start_time
とend_time
レポートの時間範囲を定義します。
user_id
ユーザー別のクイズデータを取得するためのオプション フィールドです。
重要な詳細:制限事項
- 最大行数 - APIは出力結果を最大 500,000 行に制限しています。この制限を超えるデータは結果に含まれません。
- 最大期間 - APIは取得可能なデータの期間を最大6か月に制限しています。
- レート制限 - デフォルトでは、レポート API は1分あたり最大4件、1時間あたり20件、1日あたり100件のレポート実行に制限されています。この制限は、レポート結果の取得やステータスの確認のためにエンドポイントへアクセスする回数ではなく、「実行可能なユニークなレポート数」に適用されます。
Pythonコードの例
以下の例は、一般的な Requests ライブラリを使用して、Python からレポートを呼び出す方法を示しています。
import requests
import sys
import time
TIMEOUT = 120 # consider a report "timed out" if running > 2
minutes = True
processing = True
BASE_DOMAIN= "https://interactivity-reporting.api.brightcove.com/api/reports/v2/"
url = BASE_DOMAIN+"api/reports/v2/project_engagement_summary_raw"
print(url)
# Reporting endpoint url
querystring = {
"start": "2023-07-01",
"end": "2024-03-31",
"format": "csv", # csv or JSON
"send_status":"true"
}
headers = {
'Authorization': "Bearer {Brightove Access Token}",
'cache-control': "no-cache",
}
start_time = time.time()
while processing:
if time.time() - start_time > TIMEOUT:
print('Report timed-out')
sys.exit(-1)
response = requests.request("GET", url, headers=headers, params=querystring)
print('Result: {}'.format(response.status_code))
if response.status_code == 200:
processing = False
print(response.text)
elif response.status_code == 202:
print('sleep/recheck')
time.sleep (10)
else:
print('Something went wrong')
sys.exit(-2)