
BoltzEngine HTTP API ゲートウェイ
BoltzEngine の RPC インターフェイスを HTTP からアクセスできるようにするゲートウェイサービスです。
これは BoltzEngine 本体とは別のサービスとなっており、HTTP と RPC インターフェイスとの仲立ちを行います。
概要
BoltzEngine HTTP API ゲートウェイは BoltzEngine v1.1 以降で boltz-http-proxy コマンドとして同梱されます。
リクエストとして JSON でリクエストオブジェクトで指定されている JSON を送信すると処理が行われ、以下の形式の JSON がレスポンスが戻ります。error 要素には BoltzEngine 上で言語レベル、TCP レベルでのエラーが発生した際にエラーメッセージ文字列がセットされます。
1{
2 "result": レスポンスオブジェクト,
3 "error": null
4}
また、APNS, FCM 共に認証情報については HTTP API ゲートウェイの起動パラメータとして渡されているため、渡す必要はありません。
特殊処理
JSON-RPC インターフェイスで BASE64 を渡すことになっているなっている以下のデータはエンコードが行われます。
- iOS のデバイストークン: 16進数表記の文字列と相互変換されます。
- iOS の通知ペイロード: 文字列と相互変換されます。(JSON を文字列で指定します)
メソッド一覧
POST /boltz/apns/request
APNs へメッセージを送信します。RPC の BoltzEngine.BroadcastMessagesToAPNs に対応します。
-
導入バージョン:BoltzEngine v1.1
-
リクエストオブジェクト:apns.Request (Addr, Credential は指定しません)
-
レスポンスオブジェクト:apns.Response
-
Request (application/json)
1{
2 "Messages": [
3 {
4 "ID": 0,
5 "Expir": 1432798652,
6 "Token": "960d1918d38f9bb8f5f676154ca23da366aed2d1",
7 "Payload": "{\"aps\":{\"alert\":\"hello\"}}",
8 "Priority": 10
9 },
10 {
11 "ID": 0,
12 "Expir": 1432798652,
13 "Token": "bb8f5f6960d1918d38f976154ca23da366aed2d1",
14 "Payload": "{\"aps\":{\"alert\":\"hello\"}}",
15 "Priority": 10
16 }
17 ]
18}
- Response (application/json)
1{
2 "result": {
3 "FailedMessages": null
4 },
5 "error": null
6}
GET /boltz/apns/feedback
APNs のフィードバックサービスへアクセスし、無効になったトークンの一覧を取得します。RPC の BoltzEngine.ReceiveFeedbackFromAPNs に対応します。
-
導入バージョン:BoltzEngine v1.1
-
レスポンスオブジェクト:apns.FBResponse
-
Response (application/json)
1{
2 "result": {
3 "Body": [
4 {
5 "Timestamp": 1432798652,
6 "Token": "bb8f5f6960d1918d38f976154ca23da366aed2d1"
7 },
8 {
9 "Timestamp": 1432798652,
10 "Token": "bb8f5f6960d1918d38f976154ca23da366aed2d1"
11 }
12 ]
13 },
14 "error": null
15}
POST /boltz/gcm/request
FCM へメッセージを送信します。RPC の BoltzEngine.BroadcastMessagesToGCM に対応します。
- 導入バージョン:BoltzEngine v1.1
- リクエストオブジェクト:gcm.Request (URL, Credential は指定しません)
- レスポンスオブジェクト:gcm.Response
boltz-http-proxy の設定で、FCM のリクエスト URL をどう指定したかによって、以下のメッセージ形式が変化します。
URL が http:// または https:// で開始する場合
- Request (application/json)
1{
2 "Messages": [
3 {
4 "registration_ids": [
5 "<<REGISTRATION_ID>>",
6 "<<REGISTRATION_ID>>"
7 ],
8 "data": {
9 "alert": "........................",
10 "mid": "55",
11 "sound": "default"
12 },
13 "collapse_key": "37",
14 "time_to_live": 300
15 }
16 ]
17}
URL が http:// または https:// 以外の場合
- Request (application/json)
1{
2 "Messages": [
3 {
4 "message_id": "<<MESSAGE ID>>",
5 "to": "<<REGISTRATION_ID>>",
6 "data": {
7 "alert": "........................",
8 "mid": "55",
9 "sound": "default"
10 },
11 "collapse_key": "37",
12 "time_to_live": 300
13 },
14 {
15 "message_id": "<<MESSAGE ID>>",
16 "to": "<<REGISTRATION_ID>>",
17 "data": {
18 "alert": "........................",
19 "mid": "55",
20 "sound": "default"
21 },
22 "collapse_key": "37",
23 "time_to_live": 300
24 }
25 ]
26}
- Response (application/json)
1{
2 "result": {
3 "FailedMessages": null
4 },
5 "error": null
6}
POST /boltz/adm/request
BoltzEngine HTTP API Gateway では、ADM への通知はサポートしていません。
POST /boltz/webpush/request
WebPush へメッセージを送信します。RPC の BoltzEngine.BroadcastMessagesToWebPush に対応します。
-
導入バージョン:BoltzEngine v2.2
-
リクエストオブジェクト:webpush.Request (Credential は指定しません)
-
レスポンスオブジェクト:webpush.Response
-
Request (application/json)
1{
2 "Messages": [
3 {
4 "Token": "{\"v\":1,\"endpoint\":\"https://example.com/token1\",\"p256dh\":\"xxxx\",\"auth\":\"xxxx\"}",
5 "Payload": "{\"alert\":\"hello\"}",
6 "TimeToLive": 60,
7 "Urgency": "high"
8 },
9 {
10 "Token": "{\"v\":1,\"endpoint\":\"https://example.com/token2\",\"p256dh\":\"xxxx\",\"auth\":\"xxxx\"}",
11 "Payload": "{\"alert\":\"hello\"}",
12 "TimeToLive": 60,
13 "Urgency": "high"
14 }
15 ]
16}
- Response (application/json)
1{
2 "result": {
3 "FailedMessages": null
4 },
5 "error": null
6}
GET /boltz/activities
BoltzEngine の性能情報を取得します。RPC の BoltzEngine.QueryActivities に対応します。
-
導入バージョン:BoltzEngine v1.1
-
レスポンスオブジェクト:boltz.MasterActivity
-
Response (application/json)
1{
2 "result": {
3 "PendingCount": 0,
4 "SlaveActivities": {
5 ":13007": {
6 "MaxAgents": 30,
7 "RequestCount": 0,
8 "DeliveringCount": 0,
9 "DeliveredCount": 0,
10 "TotalExecutionTime": 0,
11 "LatestExecutionTime": 0,
12 "LastUpdate": "2015-05-29T16:27:46.538940751+09:00"
13 }
14 }
15 },
16 "error": null
17}