ニュースフィードAPI¶
ニュースフィードAPIを使うと、ニュースフィード をAPI経由で取得出来ます。
例えば、お知らせ画面を実装するためにニュースフィードの機能を利用することを例に取ります。 この場合、Repro SDK経由してニュースフィードを取得する方法では、アプリ側でお知らせ画面を全て実装して頂く必要がございますが、APIを利用する方法では例えば HTMLアプリ内メッセージ の機能と組み合わせることで、お知らせ画面のUI及びニュースフィードの取得処理をRepro上で実装し、ニュースフィード機能の導入を楽にするといったことが可能になります。
注釈
ニュースフィードAPIと HTMLアプリ内メッセージ を組み合わせて用いた場合でも、ニュースフィード機能を導入する上で必要な実装が完全になくなるわけではございませんので、ご注意ください。
警告
アプリ内メッセージおよびWebメッセージをニュースフィードとして利用する際には、仕様上下記のようなユースケースでは意図した挙動とならないことがございますのでご注意ください。
例) 購入イベントをトリガーにして、作成されたキャンペーンをニュースフィードとして利用する場合
ニュースフィードはキャンペーンとは別に独立して作成されるため、キャンペーンが表示されていなくてもニュースフィードとしては取得が可能になります。
はじめに¶
ニュースフィードAPIを使うには、Repro Client トークンを利用する必要があります。
単位時間あたりのアクセス上限¶
ニュースフィードAPIには単位時間当たりのアクセス上限があります。
アクセス上限設定値は、1プロジェクトごとに1分あたり3000件です。
リクエストが正常に完了すると、レスポンスの X-RateLimit-Limit ヘッダーに単位時間あたりのリクエスト上限回数が記載されます。
リクエスト数がアクセス上限数を超えると、 HTTP Status 429 (Too Many Requests) が返ります。
レスポンスヘッダーの詳細 レスポンスヘッダー をご覧ください。
警告
アクセス上限設定値は予告なく変動する場合があります。
- アクセス上限設定値は、機能単位でのAPIトークンごととなります。例えば、プッシュAPIとユーザープロフィールAPIは同じAPIトークンを利用していますが、別機能のため同時にリクエストしたとしても、それぞれ1件づつのカウントとなります。
ニュースフィードAPI¶
現在、ニュースフィードAPIでは下記の機能を提供しています。
機能 |
HTTPメソッド |
エンドポイント |
|---|---|---|
取得 |
|
|
更新 |
|
|
以降では、リクエスト方法の詳細を記載していきます。
ニュースフィードの取得¶
GETリクエスト を実行することで、最新のニュースフィードの取得が可能です。
エンドポイント¶
機能 |
HTTPメソッド |
エンドポイント |
|---|---|---|
取得 |
|
|
リクエストヘッダー¶
ヘッダー |
説明 |
任意 / 必須 |
|---|---|---|
Content-Type |
application/jsonを指定します。 |
必須 |
X-Repro-Token |
Repro Client トークンの取得 で取得したトークンを指定します。 |
必須 |
クエリパラメーター¶
フィールド |
説明 |
任意 / 必須 |
|---|---|---|
device_id |
取得処理を実行する端末のデバイスID。デバイスIDの取得方法に関しては、デバイスID をご参照ください。 |
必須 |
campaign_type |
|
任意 |
limit |
|
任意 |
offset_newsfeed_id |
オフセットID。詳細は ニュースフィード をご参照ください。 |
任意 |
注釈
ニュースフィードとして取得可能な期間はAPIのリクエスト日を起点にして、30日以内に実行されたキャンペーンです。ご注意ください。
レスポンスヘッダー¶
レスポンスのヘッダーには、以下の値が含まれます。
ステータス |
ヘッダー |
説明 |
|---|---|---|
正常 |
|
単位時間あたりのアクセス上限 |
正常 |
|
アクセスできる残り回数 |
正常 |
|
アクセス数がリセットされる時刻(unixtime) |
正常 |
|
後続のニュースフィードを取得するためのパラメータ |
リクエスト制限 |
|
再実行可能になるまでの秒数 |
正常系レスポンス¶
リクエスト成功時、レスポンスボディはJSON形式で以下の内容が返ってきます。
フィールド |
説明 |
|---|---|
newsfeed_id(string) |
ニュースフィードのID |
campaign_type(string) |
キャンペーン種別。push_notification, web_message , in_app_message のいずれかの値を取る。 |
device_id(string) |
端末にひもづくデバイスID。詳細は、デバイスID をご参照ください。 |
title(string) |
ニュースフィードのタイトル |
summary(stinrg) |
キャンペーン作成時にニュースフィードの概要で指定された値 |
body(string) |
ニュースフィードの本文 |
shown(boolean) |
表示されたかどうかの管理に利用する値 |
read(boolean) |
既読かどうかの管理に利用する値 |
link_url(string) |
リンクのURL |
image_url(string) |
画像のURL |
extras(object) |
カスタムペイロード |
delivered_at(string) |
送信日時 |
正常系レスポンスボディ例¶
[
{
"newsfeed_id": 1,
"campaign_type": "push_notification",
"device_id": "12e4dd50-810a-410a-b046-8ce88729f1a1",
"title": "quae",
"summary": "Quam rerum aut incidunt.",
"body": "Quam rerum aut incidunt.",
"shown": true,
"read": true,
"link_url": null,
"image_url": null,
"extras": null,
"delivered_at": "2021-06-07T09:27:53Z"
}
]
警告
値の存在しないレスポンスの値は null もしくは "" の両方があり得ます。ご注意ください。
エラーレスポンス¶
レスポンスに含まれるステータスコードとエラーメッセージの一覧は下記になります。
400 Bad Request¶
リクエストにエラーがあります。エラーメッセージを確認の上、対応してください。
device_id が指定されていません。
レスポンスボディ:
{
"error": {
"messages": [
"device_id is missing"
]
}
}
limit に不正な値が指定されています。
レスポンスボディ:
{
"error": {
"messages": [
"limit must be less than or equal 200"
]
}
}
campaign_type に不正な値が指定されています。
レスポンスボディ:
{
"error": {
"messages": [
"unknown campaign_type. valid campaign_type:all,push_notification,in_app_message,web_message"
]
}
}
401 Unauthorized¶
Repro Client トークンが指定されていません。
レスポンスボディ:
{
"status": "unauthorized",
"error": {
"messages": [
"Please include your Repro Client Token as \"X-Repro-Token\" HTTP header."
]
}
}
403 Forbidden¶
指定した Repro Client トークンが間違っています。
レスポンスボディ:
{
"status": "forbidden",
"error": {
"messages": [
"Please check your Repro Client Token as \"X-Repro-Token\" HTTP header."
]
}
}
404 Not Found¶
取得項目が存在しません。
レスポンスボディ:
{
"status": "not_found",
"error": {
"messages": [
"Entity was not found."
]
}
}
429 Too Many Requests¶
リクエスト数が多すぎます。 Retry-After ヘッダーに記載された秒数待った後、リクエストを再開してください。
レスポンスボディ:
{
"status": "too_many_requests",
"error": {
"messages": [
"Too many requests hit the API too quickly."
]
}
}
ニュースフィードの更新¶
PATCHリクエスト を実行することで、ニュースフィードの既読や表示等の状態の更新が可能です。
エンドポイント¶
機能 |
HTTPメソッド |
エンドポイント |
|---|---|---|
更新 |
|
|
リクエストヘッダー¶
ヘッダー |
説明 |
任意 / 必須 |
|---|---|---|
Content-Type |
application/jsonを指定します。 |
必須 |
X-Repro-Token |
Repro Client トークンの取得 で取得したトークンを指定します。 |
必須 |
クエリパラメータ¶
フィールド |
説明 |
任意 / 必須 |
|---|---|---|
newsfeed_id(string) |
更新処理を行う対象のニュースフィードのid。 |
必須 |
device_id(string) |
更新処理を実行する端末のデバイスID。デバイスIDの取得方法に関しては、デバイスID をご参照ください。 |
必須 |
shown(boolean) |
表示管理を行う値 |
任意( readを指定しない場合は必須 ) |
read (boolean) |
既読管理を行う値 |
任意( shownを指定しない場合は必須 ) |
レスポンスヘッダー¶
レスポンスのヘッダーには、以下の値が含まれます。
ステータス |
ヘッダー |
説明 |
|---|---|---|
正常 |
|
単位時間あたりのアクセス上限 |
正常 |
|
アクセスできる残り回数 |
正常 |
|
アクセス数がリセットされる時刻(unixtime) |
リクエスト制限 |
|
再実行可能になるまでの秒数 |
正常系レスポンスボディ例¶
{
"updated": true
}
エラーレスポンス¶
400 Bad Request¶
リクエストにエラーがあります。エラーメッセージを確認の上、対応してください。
device_id が指定されていません。
レスポンスボディ:
{
"error": {
"messages": [
"device_id is missing"
]
}
}
shownとread のいずれも指定されていません。
レスポンスボディ:
{
"error": {
"message": [
"Either shown or read must be present"
]
}
}
401 Unauthorized¶
Repro Client トークンが指定されていません。
レスポンスボディ:
{
"status": "unauthorized",
"error": {
"messages": [
"Please include your Repro Client Token as \"X-Repro-Token\" HTTP header."
]
}
}
403 Forbidden¶
指定した Repro Client トークンが間違っています。
レスポンスボディ:
{
"status": "forbidden",
"error": {
"messages": [
"Please check your Repro Client Token as \"X-Repro-Token\" HTTP header."
]
}
}
404 Not Found¶
更新対象項目が存在しません。
レスポンスボディ:
{
"status": "not_found",
"error": {
"messages": [
"Target newsfeed is not found"
]
}
}
429 Too Many Requests¶
リクエスト数が多すぎます。 Retry-After ヘッダーに記載された秒数待った後、リクエストを再開してください。
レスポンスボディ:
{
"status": "too_many_requests",
"error": {
"messages": [
"Too many requests hit the API too quickly."
]
}
}