Skip to main content

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 で新規。
MCP のフラットオンザワイヤーシリアライゼーションの下では、両フィールドがレスポンスルートを共有します。3.0 では両方が status と名付けられ、ボディレベルの MediaBuyStatus は、エンベロープが同じパスに TaskStatus をスタンプすると黙って破壊されました。どの検証器もそれを捕まえませんでした。3.1 はそれらを分割します。

何が変わったか

Before(3.0)

status という名前の 2 つのキーが、MCP フラットシリアライゼーションの下で JSON ルートで衝突します — ボディレベルの MediaBuyStatus: 'active' 値がエンベロープの TaskStatus: 'completed' によって黙って破壊されます。どの検証器もそれを捕まえません。

After(3.1)

2 つの明確なフィールド。エンベロープ status はルートでタスクライフサイクル状態を運びます。ボディ media_buy_status はバイのライフサイクル状態を隣で運びます。

3.1 適合性

  • セラーcreate_media_buyupdate_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 チェックと並んで statusfield_value_or_absent アサーションを通じて等価を強制します。if/then JSON Schema 制約は評価され延期されました: 移行ウィンドウが短く、codegen ツールチェーンの互換性が不確実で、ストーリーボードゲートで十分だからです。#4908 を参照。

SDK の動作

レガシー status フィールドは deprecated: true(JSON Schema 2020-12)を運びます。codegen を通じた伝播は異なります: ツールチェーンが非推奨をサーフェスしない場合、ストーリーボードゲートが強制シグナルです。

レガシーフィールドが消えるとき

  • 3.2#4906): 非推奨のトップレベル status: MediaBuyStatusCreateMediaBuySuccessUpdateMediaBuySuccess から 削除 されます。3.2 の後、これらのレスポンスのトップレベル status は明確にエンベロープ TaskStatus のみを運びます。非推奨ウィンドウは意図的に短い — ストーリーボードゲートがすでに 3.1 準拠セラーをレガシーフィールドから追い出します。
  • 4.0#4905): ネストされた status カスケードが着地します — get-media-buys-responsemedia_buys[].statusget-media-buy-delivery-responsemedia_buy_deliveries[].statuscore/media-buy.jsonstatusmedia_buy_status にリネーム。真に破壊的(required[] スワップ)で、メジャーに保留。

前方互換のバイヤーコード

3.0、3.1、4.0 セラーにまたがる必要があるコード:

関連