media_buy_status への移行(3.1)
AdCP 3.1 は、3.0 が同じレスポンスルートキーで衝突させていた 2 つの enum を分割します:
- エンベロープ
status— TaskStatus(submitted/working/input-required/completed/canceled/failed/rejected/auth-required/unknown)。beta.2 から必須(#4876)。 - ボディ
media_buy_status— MediaBuyStatus(pending_creatives/pending_start/active/paused/completed/rejected/canceled)。3.1 で新規。
status と名付けられ、ボディレベルの MediaBuyStatus は、エンベロープが同じパスに TaskStatus をスタンプすると黙って破壊されました。どの検証器もそれを捕まえませんでした。3.1 はそれらを分割します。
何が変わったか
Before(3.0)
status という名前の 2 つのキーが、MCP フラットシリアライゼーションの下で JSON ルートで衝突します — ボディレベルの MediaBuyStatus: 'active' 値がエンベロープの TaskStatus: 'completed' によって黙って破壊されます。どの検証器もそれを捕まえません。
After(3.1)
status はルートでタスクライフサイクル状態を運びます。ボディ media_buy_status はバイのライフサイクル状態を隣で運びます。
3.1 適合性
- セラー は
create_media_buyとupdate_media_buyの成功レスポンスにmedia_buy_statusを発すべき(SHOULD)。3.1 非推奨ウィンドウ中は非推奨のトップレベルstatus: MediaBuyStatusを発し続けてもよい(MAY)。 - バイヤー は存在するとき
media_buy_statusを優先しなければならない(MUST)。レガシー形式のままのセラーとの互換性のためにレガシーstatusにフォールバックしてもよい(MAY)。 - 3.0 セラーとバイヤー は変更なく動作し続けます。
required[]のスワップなし、リネームなし、破壊なし。 - コンプライアンスストーリーボード は
path: "media_buy_status"をアサートします。レガシーstatusのみを発する 3.1 セラーはスキーマ有効ですが、3.1 ストーリーボード認証に失敗します。ストーリーボードが拘束力のある適合性チェックです。スキーマのdeprecated: trueマーカーは助言的です。 - 両フィールドを発するセラー は、
media_buy_statusと非推奨のstatusに同一の値を発しなければなりません(MUST)。分岐した発行(例:status: "active", media_buy_status: "paused")は JSON Schema 検証を通過しますが適合性違反です — 3.1 ストーリーボードは、正準のmedia_buy_statusチェックと並んでstatusのfield_value_or_absentアサーションを通じて等価を強制します。if/thenJSON Schema 制約は評価され延期されました: 移行ウィンドウが短く、codegen ツールチェーンの互換性が不確実で、ストーリーボードゲートで十分だからです。#4908 を参照。
SDK の動作
レガシーstatus フィールドは deprecated: true(JSON Schema 2020-12)を運びます。codegen を通じた伝播は異なります:
ツールチェーンが非推奨をサーフェスしない場合、ストーリーボードゲートが強制シグナルです。
レガシーフィールドが消えるとき
- 3.2(#4906): 非推奨のトップレベル
status: MediaBuyStatusがCreateMediaBuySuccessとUpdateMediaBuySuccessから 削除 されます。3.2 の後、これらのレスポンスのトップレベルstatusは明確にエンベロープ TaskStatus のみを運びます。非推奨ウィンドウは意図的に短い — ストーリーボードゲートがすでに 3.1 準拠セラーをレガシーフィールドから追い出します。 - 4.0(#4905): ネストされた
statusカスケードが着地します —get-media-buys-responseのmedia_buys[].status、get-media-buy-delivery-responseのmedia_buy_deliveries[].status、core/media-buy.jsonのstatusがmedia_buy_statusにリネーム。真に破壊的(required[]スワップ)で、メジャーに保留。
前方互換のバイヤーコード
3.0、3.1、4.0 セラーにまたがる必要があるコード:関連
- create_media_buy リファレンス — 正準レスポンス例
- メディアバイライフサイクル — MediaBuyStatus ステートマシン
- エンベロープ task-status — TaskStatus セマンティクス