バッチ単一プッシュ API
バッチ単一プッシュAPI
機能説明
バッチで単一のプッシュメッセージを送信するために使用され、1回の呼び出しで複数の対象ユーザーにプッシュを受け取らせることができます。registration_id
またはalias
を介したプッシュをサポートしています:
- registration_idを介したプッシュ:
POST /v4/batch/push/regid
- aliasを介したプッシュ:
POST /v4/batch/push/alias
- 機能制限:
- 1リクエストあたりの最大プッシュ対象数は500です
- 効率化のため並行処理をサポートしています
- レート制限中は部分的な成功結果を返します
- このAPIとプッシュAPIは同じQPSクォータを共有しています。バッチプッシュAPIを使用して1つのregidまたは1つのaliasをプッシュすると、プッシュAPIのQPSクォータを1消費します。
認証
HTTPヘッダーに認証フィールドを追加します:
Authorization: Basic ${base64_auth_string}
Authorization: Basic ${base64_auth_string}
このコードブロックはフローティングウィンドウ内に表示されます
- 生成方法:
base64(username:password)
username
= アプリケーションのAppKey
password
=Master Secret
- アクセスパス: コンソール → アプリケーション設定 → アプリケーション情報
エンドポイント
- registration_idを介したバッチプッシュ
POST /v4/batch/push/regid
POST /v4/batch/push/regid
このコードブロックはフローティングウィンドウ内に表示されます
- aliasを介したバッチプッシュ
POST /v4/batch/push/alias
POST /v4/batch/push/alias
このコードブロックはフローティングウィンドウ内に表示されます
リクエスト例
1. registration_idを介したバッチプッシュ
curl --insecure -X POST -v https://pushapi-sgp.engagelab.com/v4/batch/push/regid \
-H "Content-Type: application/json" \
-u "AppKey:MasterSecret" \
-d '{
"requests": [
{
"target": "registration_id_1",
"platform": "android",
"notification": {
"android": {
"alert": "Hi, Push!",
"title": "Send to Android",
"builder_id": 1,
"extras": { "newsid": 321
}
}
},
"options": {
"time_to_live": 60,
"apns_production": false
},
"custom_args": { "business": "info" }
},
{
"target": "registration_id_2",
"platform": "ios",
"notification": {
"ios": {
"alert": "Hi, MTPush!",
"sound": "default",
"badge": "+1",
"extras": { "newsid": 321
}
}
},
"options": {
"time_to_live": 60,
"apns_production": false
}
}
]
}'
curl --insecure -X POST -v https://pushapi-sgp.engagelab.com/v4/batch/push/regid \
-H "Content-Type: application/json" \
-u "AppKey:MasterSecret" \
-d '{
"requests": [
{
"target": "registration_id_1",
"platform": "android",
"notification": {
"android": {
"alert": "Hi, Push!",
"title": "Send to Android",
"builder_id": 1,
"extras": { "newsid": 321
}
}
},
"options": {
"time_to_live": 60,
"apns_production": false
},
"custom_args": { "business": "info" }
},
{
"target": "registration_id_2",
"platform": "ios",
"notification": {
"ios": {
"alert": "Hi, MTPush!",
"sound": "default",
"badge": "+1",
"extras": { "newsid": 321
}
}
},
"options": {
"time_to_live": 60,
"apns_production": false
}
}
]
}'
このコードブロックはフローティングウィンドウ内に表示されます
2. aliasを介したバッチプッシュ
curl --insecure -X POST -v https://pushapi-sgp.engagelab.com/v4/batch/push/alias \
-H "Content-Type: application/json" \
-u "AppKey:MasterSecret" \
-d '{
"requests": [
{
"target": "user_alias_1",
"platform": "all",
"notification": {
"android": { "alert": "Hi, Push!", "title": "Send to Android" },
"ios": { "alert": "Hi, MTPush!", "sound": "default" }
},
"options": {
"time_to_live": 60,
"apns_production": false
}
},
{
"target": "user_alias_2",
"platform": "ios",
"notification": {
"ios": {
"alert": "Hi, MTPush!",
"sound": "default",
"badge": "+1",
"extras": { "newsid": 321 }
}
},
"options": {
"time_to_live": 60,
"apns_production": false
}
}
]
}'
curl --insecure -X POST -v https://pushapi-sgp.engagelab.com/v4/batch/push/alias \
-H "Content-Type: application/json" \
-u "AppKey:MasterSecret" \
-d '{
"requests": [
{
"target": "user_alias_1",
"platform": "all",
"notification": {
"android": { "alert": "Hi, Push!", "title": "Send to Android" },
"ios": { "alert": "Hi, MTPush!", "sound": "default" }
},
"options": {
"time_to_live": 60,
"apns_production": false
}
},
{
"target": "user_alias_2",
"platform": "ios",
"notification": {
"ios": {
"alert": "Hi, MTPush!",
"sound": "default",
"badge": "+1",
"extras": { "newsid": 321 }
}
},
"options": {
"time_to_live": 60,
"apns_production": false
}
}
]
}'
このコードブロックはフローティングウィンドウ内に表示されます
リクエストパラメータ
リクエストボディ構造:
{
"requests": [
{
"target": "string", // 必須、プッシュ対象(registration_idまたはalias)
"platform": "string", // 必須、プッシュプラットフォーム(android/ios/all)
"notification": "object", // オプション、通知コンテンツ(プッシュAPIを参照)
"message": "object", // オプション、カスタムメッセージ(プッシュAPIを参照)、notificationと同時に使用不可
"options": "object", // オプション、プッシュオプション(プッシュAPIを参照)
"custom_args": "object" // オプション、クライアントに渡すパラメータ
}
]
}
{
"requests": [
{
"target": "string", // 必須、プッシュ対象(registration_idまたはalias)
"platform": "string", // 必須、プッシュプラットフォーム(android/ios/all)
"notification": "object", // オプション、通知コンテンツ(プッシュAPIを参照)
"message": "object", // オプション、カスタムメッセージ(プッシュAPIを参照)、notificationと同時に使用不可
"options": "object", // オプション、プッシュオプション(プッシュAPIを参照)
"custom_args": "object" // オプション、クライアントに渡すパラメータ
}
]
}
このコードブロックはフローティングウィンドウ内に表示されます
パラメータ説明:
フィールド | 必須 | タイプ | 説明 |
---|---|---|---|
requests |
はい | 配列 | バッチリクエスト配列(最大500項目、バッチ内のtarget は一意である必要があります) |
target |
はい | 文字列 | 対象値: - /regid エンドポイント:registration_id - /alias エンドポイント:alias |
platform |
はい | 文字列 | プッシュプラットフォーム:android 、ios 、またはall |
notification |
いいえ | オブジェクト | 通知コンテンツ(単一プッシュAPIと同じ構造) |
message |
いいえ | オブジェクト | カスタムメッセージ(単一プッシュAPIと同じ構造) |
options |
いいえ | オブジェクト | プッシュオプション(例:time_to_live 、apns_production ) |
custom_args |
いいえ | オブジェクト | カスタムパススルーパラメータ |
レスポンス例
成功レスポンス(すべて成功)
{
"results": {
"registration_id_1": {
"target": "registration_id_1",
"success": true,
"msg_id": 2460001
},
"registration_id_2": {
"target": "registration_id_2",
"success": true,
"msg_id": 2460002
}
}
}
{
"results": {
"registration_id_1": {
"target": "registration_id_1",
"success": true,
"msg_id": 2460001
},
"registration_id_2": {
"target": "registration_id_2",
"success": true,
"msg_id": 2460002
}
}
}
このコードブロックはフローティングウィンドウ内に表示されます
成功レスポンス(部分的なレート制限)
{
"rate_limit_info": {
"message": "Some requests were rate limited during batch processing",
"rate_limit_occurred": true
},
"results": {
"170976fa8a0771c2647": {
"target": "170976fa8a0771c2647",
"success": false,
"error": {
"code": 23008,
"message": "Rate limit exceeded for the API"
}
},
"170976fa8a9277c25d4": {
"target": "170976fa8a9277c25d4",
"success": false,
"error": {
"code": 23008,
"message": "Rate limit exceeded for the API"
}
}
}
}
{
"rate_limit_info": {
"message": "Some requests were rate limited during batch processing",
"rate_limit_occurred": true
},
"results": {
"170976fa8a0771c2647": {
"target": "170976fa8a0771c2647",
"success": false,
"error": {
"code": 23008,
"message": "Rate limit exceeded for the API"
}
},
"170976fa8a9277c25d4": {
"target": "170976fa8a9277c25d4",
"success": false,
"error": {
"code": 23008,
"message": "Rate limit exceeded for the API"
}
}
}
}
このコードブロックはフローティングウィンドウ内に表示されます
失敗レスポンス(グローバルエラー)
{
"error": {
"code": 21004,
"message": "basic auth failed"
}
}
{
"error": {
"code": 21004,
"message": "basic auth failed"
}
}
このコードブロックはフローティングウィンドウ内に表示されます
失敗レスポンス(パラメータエラー)
{
"error": {
"code": 21003,
"message": "Parameter value is invalid"
}
}
{
"error": {
"code": 21003,
"message": "Parameter value is invalid"
}
}
このコードブロックはフローティングウィンドウ内に表示されます
エラーコードリファレンス
エラーコード | 説明 | 解決策 | HTTPステータス |
---|---|---|---|
グローバルエラーコード | |||
21004 | 基本認証に失敗 | AppKey/MasterSecretを確認 | 401 |
21008 | AppKeyの長さが24文字ではない | AppKeyの形式を確認 | 400 |
21038 | アプリにプッシュ権限がない | アプリの設定を確認 | 400 |
21043 | プッシュ権限がない(支払い保留中) | 請求情項を解決 | 400 |
23009 | IPが許可リストにない | サーバーIPを許可リストに追加 | 400 |
21009 | 内部システムエラー(再試行しないでください) | テクニカルサポートに連絡 | 400 |
レート制限エラー | |||
23008 | APIレート制限に達した | 部分的な成功の場合、失敗した項目を再試行 | 400 |
パラメータエラー | |||
21003 | 無効なパラメータ値 | リクエストボディの形式を確認 | 400 |
21015 | 無効なリクエストパラメータ | 必須フィールドを検証 | 400 |
21016 | パラメータ検証に失敗 | フィールドタイプと値の範囲を確認 | 400 |
全エラーコード:Create Push API - Response
注意事項
- レート制限処理: レート制限中は部分的な成功結果を返します(成功したものは
msg_id
+ 失敗したものはerror
)。 - 重複チェック: すべての
target
またはcid
値はバッチ内で一意である必要があります。 - 数量制限: 1リクエストあたりの最大対象数は500です。
- エラー処理: グローバルエラー(認証失敗など)は部分的な結果なしで即座に終了します。