バッチ単一プッシュ 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 はい 文字列 プッシュプラットフォーム:androidios、またはall
notification いいえ オブジェクト 通知コンテンツ(単一プッシュAPIと同じ構造)
message いいえ オブジェクト カスタムメッセージ(単一プッシュAPIと同じ構造)
options いいえ オブジェクト プッシュオプション(例:time_to_liveapns_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

注意事項

  1. レート制限処理: レート制限中は部分的な成功結果を返します(成功したものはmsg_id + 失敗したものはerror)。
  2. 重複チェック: すべてのtargetまたはcid値はバッチ内で一意である必要があります。
  3. 数量制限: 1リクエストあたりの最大対象数は500です。
  4. エラー処理: グローバルエラー(認証失敗など)は部分的な結果なしで即座に終了します。
icon
お問い合わせ