FORMAT: 1A HOST: https://openapi.freshlive.tv
OpenFRESHは生放送動画配信プラットフォーム FRESH! を便利に利用するための開発者向けプロジェクトです。
現在、OpenFRESH APIはβ公開中です。一部のAPIにはアクセストークンが必要ですが、FRESH!の配信用アカウントを保持しているユーザーであればアクセストークンを取得することができます。
エンドポイントは https://openapi.freshlive.tv
です。
- FRESH!のアップデートにより、ユーザー名を記名したコメントの投稿ができるようなります
GET /v1/comments
のレスポンスにusername(ユーザー名)
を追加POST /v1/comments
のリクエストパラメータにisSigned(記名投稿フラグ)
を追加
- OpenFRESH API 初稿公開
認証が必要なAPIを利用するにはアクセストークンが必要となる。アクセストークンの取得はFRESH!のアカウント(現在は配信主アカウントのみ)のログインアカウントを利用する必要がある。
OpenFRESH APIを利用するためのアクセストークンを取得する。JSONレスポンスに含まれるtoken
の内容がアクセストークンとなる。
-
Request (application/json)
-
Attributes
- username: your_account (required)
- password: your_password (required)
-
-
Response 200 (application/json)
- Attributes
- meta:
- data:
- token:
eyJhbGciOiJIUzI1NiJ9.eyJpZCI6IjE2IiwiZXhwx3oxNTE5OTc3Mjk1LCJzdGF0dXMiOiJicm9hZGNhc3QifQ.sTyTldvZ9H95ZsJfzMDUH2YgNGd3wYKV926tR90OjA2
(string, required) - アクセストークン - expiredAt:
2018-03-03T22:07:45.038+09:00
(string, required) - アクセストークンの有効期限
- token:
- Attributes
コメント投稿APIのような認証が必要なAPIには Authorization
リクエストヘッダを必ず付与するようにし、前述で取得したアクセストークンを以下のように設定する。
$ curl -X POST \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJpZCI6IjE2IiwiZXhwx3oxNTE5OTc3Mjk1LCJzdGF0dXMiOiJicm9hZGNhc3QifQ.sTyTldvZ9H95ZsJfzMDUH2YgNGd3wYKV926tR90OjA' \
-H 'Content-Type: application/json' \
-d '{
"programId": "70375",
"comment": "hello!"
}' \
'https://openapi.freshlive.tv/v1/comments'
番組のコメントを取得します。生放送中はレスポンスのmeta.nowMillisecond
に番組開始からの時間が含まれるので、これを次回のAPIリクエストのsinceMillisecond
に指定するような実装をすると継続的にコメントを取得することができます。
番組のprogramIdを指定する必要があり、programId
は番組URLの以下の部分を指しています。
-
Parameters
- programId: 11111 (number, required) - 番組ID
- limit: 50 (number) - 取得するコメントの件数
- Default: 20
- sinceMillisecond: 100000 (number) - コメントを取得する番組開始からの時間(ミリ秒)
- Default: 0
- order: asc (string) - ソート順
- Default: asc
- Members
- asc
- desc
-
Response 200 (application/json)
- Attributes
- meta:
- nowMillisecond: 36892765 (number, optional) - 番組開始からの経過時間(ミリ秒) アーカイブの場合はnull
- latestMillisecond: 29754707 (number, optional) - 取得したコメントデータのうち、最も最近なコメントのmillisecond
- data:
- id:
9eeff70f-6f0e-40b0-ae94-7ae34c38d2ae
(string, required) - コメントを識別する一意なID - type: user (string, required) - 投稿したユーザーの種別
- freshId: 9999999 (string, required) - FRESH ID(ユーザーを識別するID)
- username: FRESH!さん (string) - ユーザー名
- programId: 11111 (string, required) - 番組ID
- millisecond: 10000 (number, required) - 番組開始から対象のコメント時間までの時間(ミリ秒)
- raw: こんにちはこんにちは @フレッシュ (string, required) - コメント本文
- text: こんにちはこんにちは (string, required) - コメント本文から
@xxx
のようなメタトークンを取り除いたもの - atmark: (array, required) - コメントに
@xxx
のような文字列が含まれている場合、それを取り出した内容- フレッシュ
- createdAt:
2017-03-09T06:16:45+09:00
(string, required) - コメントの投稿時間
- id:
- meta:
- Attributes
-
Response 404 (application/json)
- Body
{ "error": { "status": 404, "message": "programId=100000 is not found.", "errorData": { } } }
配信中の番組にコメントを投稿します。アーカイブになってしまった番組にコメントを投稿することは出来ません。
-
Request (application/json)
-
Headers Authorization: Bearer 取得したアクセストークン
-
Attributes
- programId: 11111 (string,required) - コメントを投稿する番組ID
- comment: こんにちはこんにちは (required) - コメント内容
- isSigned: true (boolean) - コメントにユーザー名を記名するかどうか
- Default: false
-
-
Response 201 (application/json)
-
Body
{ "meta": {}, "data": {} }
-
-
Response 403 (application/json)
{ "error": { "status": 403, "message": "this program is not onair.", "errorData": { } } }
アクセストークンはJWT(Json Web Token)形式で発行され、一度発行されたアクセストークンは1年間有効です。JWTは改竄に強くセキュアですが、生成されたアクセストークンは第3者に不正利用されないように各々のユーザーで保管しておく必要があります。
OpenFRESH APIにRateLimit(時間単位でのAPIコール数制限)が設定されています。現在は1ホストまたは1ユーザーあたり60回/1分の制限を設けており、それを越えるAPIの利用をした場合はHTTP 429 Too Many Requests
を返します。
RateLimitに達した場合は少し待ってからAPIリクエストをし、直近1分間のリクエスト数が60回を超えないような制御をする必要があります。