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 をご覧ください。