メインコンテンツまでスキップ

POST /v1/events の metadata / session_id バリデーション強化

POST /v1/events で、保存できない値を含むイベントを受理せず 400 Validation で返すようにしました。これまでは 202 Accepted を返したうえで保存時に失敗していたため、同じバッチに含まれる他のイベントの反映まで遅れる可能性がありました。

破壊的変更​

  • metadata の null 文字 — metadata の JSON に null 文字のエスケープ(\u0000)が現れる場合は 400 Validation(metadata: must not contain null bytes)を返します。user_attributes の内外を問わず、キー名・入れ子の値も対象です。
  • metadata の不正なサロゲートエスケープ — 対になっていない UTF-16 サロゲートエスケープ(\ud800 単独など)が現れる場合は 400 Validation(metadata: must not contain unpaired UTF-16 surrogate escapes)を返します。正しいサロゲートペア(絵文字など)はこれまでどおり受理されます。
  • session_id の null 文字 — null 文字を含む session_id は 400 Validation(session_id: must not contain null bytes)を返します。
  • metadata.user_attributes の well-known フィールド検証 — gender / birth_year / area_names / area_level / timezone / registered_at などの well-known フィールドは、イベント種別を問わず ユーザー管理 API の properties と同一の制約で検証されます。違反時は 400 Validation を返します。

影響​

  • 通常の JSON ペイロードは影響を受けません。対象となるのはいずれも、これまでも保存できず失われていた値です。
  • 上記のエスケープは、バイナリデータや不正な UTF-16 を含む文字列をそのまま JSON 化した場合に混入することがあります。送信前にアプリケーション側で除去するか、Base64 等でエンコードしてください。

詳細は 行動イベント と API リファレンス の POST /events をご覧ください。