制限とエラー
このページには、API 全体で共有されるルールがまとめられています。必須フィールド、ライフサイクル動作、およびモデル固有のセマンティクスは、引き続き各 API ページに属します。
| アイテム | 制限 |
|---|---|
| リクエストボディサイズ | 最大32KB。 |
| ゲートウェイで生成された ID | 32 個の小文字の 16 進文字。 |
| Channel パスワード | 通常は 8 ~ 128 文字です。 |
op_id | 1 ~ 128 文字。文字、数字、_、:、-。 |
images | 最大 32 の URL、それぞれ最大 2048 文字。 |
tags | 最大 32 個のタグ、それぞれ最大 64 文字、トリミングおよび重複排除。 |
metadata | スカラー値のみ。キーは最大 64、値は最大 512。 |
attrs | オブジェクトパッチ; null はキーを削除します。複雑な入れ子は避けてください。 |
ttl | Unix ミリ秒のタイムスタンプ。プロバイダーの配信 TTL は約 28 日に制限されています。 |
| 不明なフィールド | ネイティブ Message、Event、Thing、および MCP ツールの引数は厳密です。不明なフィールドは 400 を返します。 |
応答エンベロープ
Section titled “応答エンベロープ”成功:
{ "success": true, "data": { "accepted": true }, "error": null, "error_code": null}失敗:
{ "success": false, "data": null, "error": "human readable message", "error_code": "machine_readable_code"}オートメーションでは、自然言語の error テキストよりも success および error_code を優先する必要があります。
acceptedの意味
Section titled “acceptedの意味”success=true は、Gateway がリクエストを処理したことを意味します。 accepted=true はディスパッチに入ったことを意味します。
以下のことを保証するものではありません。
- すべてのデバイスがオンラインになっています。
- APNs または FCM に通知が表示されました。
- リアルタイムで配信される Android プライベート トランスポート。
- ユーザーは、通知権限、フォーカス モード、バッテリー ポリシーの影響を受けません。
accepted を、エンドデバイスの表示受信としてではなく、Gateway の受け入れおよび発送ステータスとして扱います。
一般的な HTTP ステータス コード
Section titled “一般的な HTTP ステータス コード”| ステータス | 意味 | 典型的な理由 | 何をすべきか |
|---|---|---|---|
200 | Gateway がリクエストを処理しました | success=true ですが、それでも accepted を確認してください | 返された ID と op_id を保存します。 |
400 | 検証に失敗しました | 必須フィールドが欠落している、不明なフィールド、不正な形式 | JSON を API フィールド テーブルと比較します。 |
401 | Gateway 認証に失敗しました | プライベート Gateway は PUSHGO_TOKEN を使用します。 Bearer トークンが見つからないか間違っています | Authorization: Bearer <token>を確認してください。 |
404 | ターゲットが見つかりません | Channel、Event、または Thing が存在しません | channel_id、event_id、thing_idを確認してください。 |
413 | リクエスト本文が大きすぎます | JSON が 32KB を超えています | 画像 URL を使用します。メタデータまたは属性を削減します。 |
503 | 派遣は完全には受け付けられていません | プロバイダー、プライベート トランスポート、キュー、またはダウンストリームが利用不可 | Gateway のログ、統計、キュー容量を検査します。 |
シナリオ別のトラブルシューティング
Section titled “シナリオ別のトラブルシューティング”リクエストは 400 を返します
Section titled “リクエストは 400 を返します”- JSON が有効である必要があります。
event_idを/event/createに、またはthing_idを/thing/createに送信しないでください。- 不明なフィールドを削除します。
severityは、critical、high、normal、またはlowである必要があります。attrsは、配列や深く入れ子になった構造ではなく、オブジェクト パッチである必要があります。
リクエストは 401 を返します
Section titled “リクエストは 401 を返します”- プライベート Gateway に
PUSHGO_TOKENがあるかどうかを確認します。 - ヘッダーは
Authorization: Bearer <token>である必要があります。 - チャネルパスワードとGatewayトークンを混同しないでください。
- リバース プロキシが Authorization ヘッダーを削除しないようにします。
リクエストは成功しましたが、デバイスは通知しません
Section titled “リクエストは成功しましたが、デバイスは通知しません”- クライアントはチャンネルに登録する必要があります。
- デバイスの通知許可が有効になっている必要があります。
- Apple の配信は、APNs、フォーカス モード、システム設定の影響を受ける可能性があります。
- Android クライアントは正しい
/gateway/profileをフェッチできる必要があります。 - プライベート トランスポート ポート、証明書、および外部アドレスに到達可能である必要があります。
- Gateway ログにプロバイダーまたはプライベート ディスパッチ エラーが表示される場合があります。
専用送迎サービスは利用できません
Section titled “専用送迎サービスは利用できません”PUSHGO_PRIVATE_TRANSPORTSを有効にする必要があります。- WSS は、HTTPS ドメイン経由で到達可能である必要があります。
- QUIC UDP ポートがファイアウォールまたはプロキシによってブロックされている可能性があります。
- Raw TCP は TLS または TLS オフロードを正しく処理する必要があります。
- アドバタイズされたポートと実際のバインド ポートは、NAT またはポート マッピングの背後で異なる場合があります。
MCP バインドが失敗する
Section titled “MCP バインドが失敗する”PUSHGO_MCP_ENABLEDを有効にする必要があります。PUSHGO_PUBLIC_BASE_URLは外部 HTTPS URL である必要があります。- リバース プロキシは、
/.well-known/*、/oauth/*、および/mcpを転送する必要があります。 - DCR はクライアントの機能と一致する必要があります。
- バインド ページ セッションは期限切れになる可能性があります。