> ## Documentation Index
> Fetch the complete documentation index at: https://adcp-docs-ja.pier1.co.jp/llms.txt
> Use this file to discover all available pages before exploring further.

# リテールメディア向け TMP

> TMP が GTIN レベルのカタログ絞り込みでスポンサープロダクトパッケージをどうアクティベートするか。

# リテールメディア向け TMP

リテーラーは、検索結果、カテゴリーページ、カルーセルにわたってスポンサープロダクトプレースメントを管理します。TMP のカタログ絞り込みケイパビリティはこれを自然な適合にします — バイヤーは、どのプロダクトを特集するか、どのプロモーションを強調するか、どのアイテムを抑制するかを、すべて事前交渉されたパッケージの範囲内で指定できます。

## 今日どう機能するか

リテールメディアネットワークは、どのスポンサープロダクトが現れるかを決めるために内部のレコメンデーションエンジンを使います。バイヤーはキャンペーンレベルのターゲティング（キーワード、カテゴリー、予算）を設定しますが、どの特定のプロダクトがどのコンテキストに現れるかについてのリアルタイム制御は限定的です。各リテーラーは独自の API と最適化ロジックを持ちます。

## Context Match

買い物客が検索結果ページやカテゴリーページを見るとき、リテーラーは Context Match リクエストを送ります:

```json theme={null}
{
  "type": "context_match_request",
  "request_id": "ctx-retail-8f3a",
  "property_rid": "01916f3a-e7ba-7000-8000-000000000040",
  "property_id": "grocery-retailer-web",
  "property_type": "website",
  "placement_id": "search-results-sponsored",
  "seller_agent_url": "https://grocery-retailer.example",
  "artifact_refs": [
    { "type": "custom", "value": "search:beverages-coffee" }
  ]
}
```

バイヤーはオファーで応答します:

```json theme={null}
{
  "type": "context_match_response",
  "request_id": "ctx-retail-8f3a",
  "offers": [
    {
      "package_id": "pkg-coffee-sponsored",
      "brand": { "domain": "coldbrew.example.com", "brand_id": "coldbrew" },
      "price": { "amount": 2.50, "currency": "USD", "model": "cpc" },
      "summary": "Cold brew and iced latte — buy 2 get 1 free promotion",
      "creative_manifest": {
        "format_id": { "agent_url": "https://grocery-retailer.example.com", "id": "sponsored_product_listing" },
        "assets": {
          "items": {
            "type": "product",
            "items": [
              { "gtin": "gtin-cold-brew-12oz", "badge": "BOGO", "image_url": "https://cdn.example.com/cold-brew-12oz.jpg" },
              { "gtin": "gtin-iced-latte-4pk", "badge": "PROMO", "image_url": "https://cdn.example.com/iced-latte-4pk.jpg" }
            ]
          },
          "promo_banner": {
            "url": "https://cdn.example.com/banners/b2g1.png",
            "width": 728,
            "height": 90
          }
        }
      },
      "macros": {
        "click_tracker": "https://track.example.com/click?pkg=coffee-sponsored",
        "impression_tracker": "https://track.example.com/imp?pkg=coffee-sponsored"
      }
    }
  ]
}
```

バイヤーのオファー summary はリテーラーが関連性を判断するのを助けます。クリエイティブマニフェストはオファーにインラインで含まれ、どのカタログアイテムを特集するか、プロモーションバッジ、レンダリングアセットを指定します。大きなクリエイティブについては、マニフェストは直接埋め込む代わりに URL 経由で外部アセットを参照します。

## Identity Match

リテーラーは買い物客のロイヤルティトークンとリテーラーの `seller_agent_url` を伴う Identity Match リクエストを送ります。バイヤーは `seller_agent_url` からアクティブなパッケージセットを解決します。リテーラーが（下記のように）`package_ids` を明示的に送るとき、構成は現在のページと独立でなければなりません（MUST） — all-active（リテーラーでのこのバイヤーのすべてのアクティブパッケージ）または fuzzed（バイヤーが黙って落とす合成の存在しない ID でパディングされたランダムサンプル）のいずれか。ページ固有のサブセットは禁止されています — それはバイヤーがパッケージセットを比較してこのリクエストを context match と相関させることを許します:

```json theme={null}
{
  "type": "identity_match_request",
  "request_id": "id-retail-c7b2",
  "seller_agent_url": "https://retailer.example",
  "identities": [
    { "user_token": "tok_loyalty_m3p7", "uid_type": "publisher_first_party" },
    { "user_token": "a1b2c3d4e5f67890abcdef...", "uid_type": "hashed_email" }
  ],
  "package_ids": ["pkg-coffee-sponsored", "pkg-snacks-display", "pkg-dairy-promo", "pkg-bakery-seasonal", "pkg-frozen-meals", "pkg-household-q1"]
}
```

バイヤーは適格なパッケージの ID と TTL で応答します:

```json theme={null}
{
  "type": "identity_match_response",
  "request_id": "id-retail-c7b2",
  "eligible_package_ids": [
    "pkg-coffee-sponsored",
    "pkg-snacks-display",
    "pkg-bakery-seasonal",
    "pkg-frozen-meals"
  ],
  "serve_window_sec": 60
}
```

パブリッシャーはユーザーが適格かどうかの理由を知る必要はありません — 適格かどうかだけです。表示するカタログアイテムは、Identity Match レスポンスではなく Context Match オファーのクリエイティブマニフェストから来ます。

## アクティベーション

リテーラーは両方のレスポンスを結合します:

* コーヒースポンサーオファーを受け入れる
* カタログアイテム、プロモーションバッジ、レンダリングアセットにオファーのインラインクリエイティブマニフェストを使う
* Identity Match を確認: パッケージは `eligible_package_ids` にあるか？
* リテーラー自身のレコメンデーションエンジンが、スポンサー結果をオーガニック結果と並べて統合する

## フロー例

```
Shopper searches "cold brew"
  → Retailer sends Context Match: coffee sponsored package available
  → Buyer: offer with creative manifest (cold brew + iced latte items, promo banner, badges)

  → (fuzzed) Retailer sends Identity Match: loyalty token + all active package IDs
  → Buyer: eligible_package_ids includes pkg-coffee-sponsored, serve_window_sec: 60

  → Retailer joins: accept offer, render items from creative manifest
  → Render sponsored carousel in search results
```
