> For the complete documentation index, see [llms.txt](https://help.citrusad.com/retail-media-interface/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.citrusad.com/retail-media-interface/integration/ja/brand-pages/brand-page-retailer-integration-guide/brand-page-apis.md).

# ブランドページ API

## URL ルーティング

ユーザーがブランドページの URL に移動すると、アプリケーションはパスから `urlSlug` を抽出し、広告配信 API に送信します。

URL 構造: `<https://{your-domain}/{prefix}/{urlSlug}>`

| セグメント         | ソース                       | 例                  |
| ------------- | ------------------------- | ------------------ |
| `your-domain` | お客様のサイト                   | `www.retailer.com` |
| `prefix`      | オンボーディング時に設定（例: ブランド、ページ） | `brands`           |
| `urlSlug`     | 実行時に URL パスから抽出           | `adidas`           |

**例**

ユーザーが以下にアクセスした場合: `<https://www.retailer.com/brands/adidas:>`

1. アプリケーションは次のルートに一致します: `/brands/*` ルート。
2. 抽出: `adidas`（urlSlug として）。
3. 呼び出し: `POST /ads/v3/brand-pages` 割当済みの広告ホスト上（対象: `"urlSlug": "adidas"` およびお客様の `catalogId`.
4. 返されたコンテンツ モジュールをページ上にレンダリングします。

### スラッグの検証ルール

ブランドは以下の制約に従ってスラッグを作成します:

* **文字:** 小文字（a–z）、数字（0–9）、ハイフン（-）、アンダースコア（\_）。
* **文字数:** 最小 3 文字、最大 100 文字。
* **一意性:** リテール事業者のカタログ内で一意である必要があります（`catalogId`).

{% hint style="info" %}
現時点では、スラッグの一意性判定においてキャンペーンの期間は考慮されません。
{% endhint %}

* **不変性:** ブランド ページ キャンペーンが公開された後は変更できません。
* **形式:** 先頭または末尾にハイフンを使用することはできません（例: `-adidas`or `adidas-` は許可されません）。

## キャッシュ

* 広告配信 API からのレスポンスはキャッシュしないでください。以下を確実にするため、リクエストは常に直接 Epsilon API に送信してください:
  * 正しいブランド ページ キャンペーンが配信されること（キャンペーンは一時停止、更新、または差し替えられる場合があります）。
  * 正確なアトリビューションのために、トラッキング URL にリクエストごとの新しい識別子が含まれていること。
  * インプレッション数が正確に維持され、古いキャッシュ レスポンスの影響を受けないこと。

**SEO に関する考慮事項**: リテール事業者は、ブランド ページの検索エンジンによるインデックス登録を許可することを選択できます。ページ上のすべてのテキストが検索エンジンによって検出可能になるため、ブランド ページ コンテンツのインデックス登録によりオーガニック検索の視認性が向上する可能性があります。

## リバース プロキシの設定

### リバース プロキシが必要な理由

**問題点**: 広告ブロッカーやプライバシー ツールは、広告ドメインに直接送信されるトラッキング リクエストをブロックすることがよくあります。

**解決策**: すべてのトラッキング リクエストを自社ドメイン経由でルーティングし、ファーストパーティ トラフィックとして表示させます。

```apache
❌ Blocked: user-browser → [third-party-tracking-domain]
✅ Works:   user-browser → yoursite.com/[custom-path] → [third-party-tracking-domain]
```

* 置換対象: `[third-party-tracking-domain]` （オンボーディング時に提供された実際の Epsilon トラッキング エンドポイントを使用）。
* 置換対象: `[custom-path]` （ニュートラルで一意のパスを使用。例: `/media-proxy`, `/assets-endpoint`、または広告関連以外の用語）。

C2S（ブラウザ）トラッキングにはリバース プロキシが必要です。直接送信する必要がある S2S 呼び出しには適用されません（送信先: Epsilon トラッキング ホスト [(トラッキング – サーバー間 (S2S) を参照](/retail-media-interface/integration/ja/brand-pages/brand-page-retailer-integration-guide/tracking-attribution.md#tracking--servertoserver-s2s))).

### 設定

お客様のサイトでは、次のようなパスの下でリバース プロキシをホストする必要があります: `https://www.retailer.com/{proxyPath}/`。そのパス上のお客様のドメインへのブラウザ（C2S）トラッキング リクエストは、地域のトラッキング ホストに転送されます（[Ad Serving APIを参照](#ad-serving-api)）。サーバー間（S2S）トラッキングでこのプロキシを使用することはできません。

**動作:**

* 以下の配下でリクエストを受信: `/epsilon/`
* 以下へ転送: `https://[region]-tracking.rmn.dotomi.com/` （参照: [広告配信 API](#ad-serving-api) 対象: `[region]`)
* ファイルパスの接尾辞を保持
* 必須の HTTP ヘッダーを転送
* HTTPS を強制（TLS 1.2+）

### 必須ヘッダー

| ヘッダー                       | 説明                            |
| -------------------------- | ----------------------------- |
| `RP-Host`                  | トラッキング リクエストを受信するホスト名。        |
| `X-Forwarded-For`          | 実際のクライアント IP アドレス。            |
| `X-Forwarded-Request-Path` | プロキシ プレフィックス パス（例: /epsilon）。 |
| `Referer`                  | ピクセルが発火したページ。                 |

### Apache の例

```apache
LoadModule ssl_module modules/mod_ssl.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
SSLProxyEngine on
RequestHeader add "X-Forwarded-Request-Path" "/epsilon"
RequestHeader add "RP-Host" "%{HTTP_HOST}s"
RequestHeader add "Referer" "%{HTTP_REFERER}s"
ProxyPass "/epsilon" "https://[region]-tracking.rmn.dotomi.com"
ProxyPassReverse "/epsilon" "https://[region]-tracking.rmn.dotomi.com/"
```

### NGINX の例

```apache
server {
    server_name www.retailer.com;
    location /epsilon/ {
        proxy_ssl_server_name on;
        rewrite ^/epsilon/(.*) /$1 break;
        proxy_pass https://[region]-tracking.rmn.dotomi.com;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $server_name;
        proxy_set_header RP-Host $host;
        proxy_set_header X-Forwarded-Request-Path "/epsilon";
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Referer $http_referer;
    }
}
```

## 広告配信 API

Epsilon は、RMNホストからブランドページを配信します： `*.rmn.dotomi.com`。ホスト内の `[region]` は、自社のデプロイメント用に Epsilon が割り当てるセグメントに置き換えてください。

広告APIでは `https://[region]-ads.rmn.dotomi.com`を使用し、トラッキングエンドポイント（インプレッションピクセル、クリックリダイレクト、S2S通知URL）では同じ `https://[region]-tracking.rmn.dotomi.com` 値の `[region]` を使用します。

一部のセットアップでは、ベースホスト名である `ads.rmn.dotomi.com` および `tracking.rmn.dotomi.com` が使用される場合があります。 Epsilon が、お客様の環境に適したホスト名を確認します。

### エンドポイント

```
POST https://[region]-ads.rmn.dotomi.com/ads/v3/brand-pages
Content-Type: application/json
Authorization: Basic <existing_api_key>
```

### リクエストペイロード

```
{
  "id": "req-adidas-12345",
  "catalogId": "test-catalog-adidas",
  "urlSlug": "adidas",
  "site": {
    "domain": "www.retailer.com",
    "page": "https://www.retailer.com/brand/adidas",
    "ref": "https://www.retailer.com/search?q=shoes"
  },
  "device": {
    "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 ...",
    "ip": "192.168.1.100",
    "language": "en-US",
    "devicetype": 2,
    "os": "macOS",
    "geo": {
      "country": "USA",
      "region": "CA",
      "city": "San Francisco",
      "zip": "94105"
    }
  },
  "user": {
    "sessionId": "sess-abc123xyz",
    "customerId": "cust-789012",
    "dtmId": "dtm-456def"
  },
  "regs": {
    "gdpr": 1,
    "consent": "COwJqZAOwJqZAOAAAAENAXCAAAAAAAAAAAAAABpoAIAAAEpgAIAAAg1AAAICAIAAAEA"
  }
}
```

上記の `regs` 値は、GDPRが適用されるトラフィックの例を示しています：\
`gdpr` is `1`、および `consent`は**合成IAB TCF v2同意文字列**です（正しい形状と文字セットのみ）。

本番環境の場合：

* には、地理的条件および法的ルールに基づいて `gdpr`を設定します。
* CMPからの**ライブTC文字列**を渡します（例： `_ _tcfapi` `getTCData`→ `tcString`経由など）。

GDPR対象外のリクエストの場合は、 `"gdpr": 0` を使用し、 `consent`を省略するか、または `""`

`iabConsentString` トラッキングイベントでの利用：入力されたすべてのトラッカースロット（`trackers.impression`, `trackers.click`, `trackers.addToCart`）には `params.iabConsentString`が含まれます。リクエスト時に `regs.consent` リクエスト内において、この値は文字通りのTC文字列です。

省略した場合 `regs.consent`を省略した場合、この値は{TCF}マクロプレースホルダーになります。トラッキングリクエストを送信する前の発生時に、CMPからの現在のTCF v2文字列（例： `__tcfapi getTCData` → `tcString`経由など）に置き換えてください。

### リクエストフィールド定義

| フィールド                | タイプ | 必須 | 説明                                                                                                    |
| -------------------- | --- | -- | ----------------------------------------------------------------------------------------------------- |
| `id`                 | 文字列 | はい | 一意のリクエスト識別子（リテールメディア側で生成）                                                                             |
| `catalogId`          | 文字列 | はい | リテールメディアのプロダクトカタログID（以下により提供： Epsilon)                                                                |
| `urlSlug`            | 文字列 | はい | ブランドページのURLスラッグ（例：adidas）                                                                             |
| site                 |     |    |                                                                                                       |
| `site.domain`        | 文字列 | はい | リテールメディアのウェブサイトドメイン                                                                                   |
| `site.page`          | 文字列 | No | ブランドページがレンダリングされる完全なURL                                                                               |
| `site.ref`           | 文字列 | No | リファラーURL（ユーザーの遷移元）                                                                                    |
| device               |     |    |                                                                                                       |
| `device.ua`          | 文字列 | はい | ユーザーエージェント文字列                                                                                         |
| `device.ip`          | 文字列 | No | クライアントIPアドレス                                                                                          |
| `device.language`    | 文字列 | No | ブラウザ言語（例：en-US）                                                                                       |
| `device.devicetype`  | 整数  | No | 1=モバイル、2=PC、4=電話、5=タブレット                                                                              |
| `device.os`          | 文字列 | No | オペレーティングシステム                                                                                          |
| `device.geo.country` | 文字列 | No | ISO 3166-1 alpha-3国コード（例：USA、GBR）                                                                     |
| `device.geo.region`  | 文字列 | No | 州または地域                                                                                                |
| `device.geo.city`    | 文字列 | No | 市区町村                                                                                                  |
| `device.geo.zip`     | 文字列 | No | 郵便番号                                                                                                  |
| user                 |     |    |                                                                                                       |
| `user.sessionId`     | 文字列 | No | リテールメディアのセッション識別子（非PII）                                                                               |
| `user.customerId`    | 文字列 | No | リテールメディアの顧客識別子（非PII）                                                                                  |
| `user.dtmId`         | 文字列 | No | トラッキング識別子                                                                                             |
| regs                 |     |    |                                                                                                       |
| `regs.gdpr`          | 整数  | No | `0` = GDPR適用外、 `1` = GDPR適用（OpenRTB形式のシグナリングに準拠）                                                      |
| `regs.consent`       | 文字列 | No | IAB TCF **v2** 同意文字列（`tcString` CMPから）。以下の場合にのみ使用します： `gdpr` is `1` 有効な文字列がある場合。そうでない場合は省略するか、または`""` |

{% hint style="danger" %}
**重要** 以下のJSONは代表的でほぼ完全な例です。実際のレスポンスは、多くの場合、これよりもシンプルです。 `contentData` モジュール。ここに示されているすべてのキーが常に存在するとは仮定せず、固定構造を生成しないでください。 `contentType` またはブランドページ。\
上記の `theme` は異なります：成功したレスポンスでは常に存在し、Theme Objectセクション（`colors`および `buttons` 完全に入力されています - すべてのパスに必要なhex6文字列、なし `nulls` 内部 `theme`).
{% endhint %}

### レスポンスペイロード

```
{
  "realizedAdId": "brandpage_djogXfHSYGZOZnnkzEKunWvdNYEKABIAGgwIwIPjzAYQ3byasAE=",
  "brandPageTemplateId": "6e9690ef-81d1-4fad-b2ce-749e22cceb10",
  "catalogId": "test-catalog-adidas",
  "urlSlug": "adidas",
  "theme": {
    "colors": {
      "background": "#F5F5F5",
      "text": {
        "heading": "#1a1a1a",
        "subheading": "#333333",
        "body": "#5f6368",
        "caption": "#9aa0a6",
        "link": "#1a73e8",
        "tagline": "#5f6368",
        "lines": "#e0e0e0"
      }
    },
    "buttons": {
      "primary": {
        "background": "#ff6600",
        "text": "#FFFFFF"
      },
      "secondary": {
        "background": "#FFFFFF",
        "text": "#ff6600"
      }
    }
  },
  "trackers": {
    "impression": {
      "type": "impression",
      "params": { "ts": "{TS}", "iabConsentString": "{TCF}" }
    }
  },
  "trackingTypes": {
    "impression":      ["client.impressionPixelUrls", "server.impressionEvent"],
    "productClick":    ["client.clickRedirect", "client.clickEvent", "server.clickEvent"],
    "productAddToCart": ["client.addToCartEvent", "server.addToCartEvent"],
    "link":            ["client.clickRedirect", "client.clickEvent", "server.clickEvent"],
    "interaction":     ["client.clickEvent", "server.clickEvent"]
  },
  "trackingTemplates": {
    "client": {
      "clickRedirect":       "/tracking/v3/click/redirect/brandpage_djog...?catalogId=test-catalog-adidas&...",
      "clickEvent":          "/tracking/v3/event/click/brandpage_djog...?catalogId=test-catalog-adidas&...",
      "addToCartEvent":      "/tracking/v3/event/add-to-cart/brandpage_djog...?catalogId=test-catalog-adidas&...",
      "impressionPixelUrls": [
        "/tracking/v3/impression/pixel/brandpage_djog...?catalogId=test-catalog-adidas&..."
      ]
    },
    "server": {
      "clickEvent":          "https://[region]-tracking.rmn.dotomi.com/tracking/v3/event/click/brandpage_djog...?...",
      "addToCartEvent":      "https://[region]-tracking.rmn.dotomi.com/tracking/v3/event/add-to-cart/brandpage_djog...?...",
      "impressionEvent":     "https://[region]-tracking.rmn.dotomi.com/tracking/v3/event/impression/brandpage_djog...?..."
    }
  },
  "contentData": [
    {
      "id": "hero-1",
      "brandPageModuleTemplateId": "hero-template-1",
      "contentType": "HERO",
      "order": 1,
      "tags": ["header"],
      "mediaUrl": "https://example.com/images/adidas-hero.jpg",
      "headline": "Impossible Is Nothing",
      "subheadline": "Spring Collection",
      "ctaText": "Explore",
      "ctaLink": "https://example.com/adidas/explore",
      "trackers": {
        "click": {
          "type": "link",
          "params": {
            "modId": "hero-1",
            "rurl": "https%3A%2F%2Fexample.com%2Fadidas%2Fexplore",
            "ts": "{TS}",
            "iabConsentString": "{TCF}"
          }
        }
      }
    },
    {
      "id": "text-1",
      "brandPageModuleTemplateId": "text-template-1",
      "contentType": "TEXT",
      "order": 2,
      "text": "Discover the latest Adidas collection featuring innovative designs and sustainable materials."
      // (No trackers for TEXT module, as it has no interactive elements)
    }
  ]
}
```

#### レスポンスフィールドの定義

| フィールド                                     | タイプ    | 説明                                                                                                                                                                                                                                                                                                                                              |
| ----------------------------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `realizedAdId`                            | 文字列    | このブランドページ配信に対する一意の広告識別子。すべてのトラッキングテンプレートパスで使用されます。                                                                                                                                                                                                                                                                                              |
| `brandPageTemplateId`                     | 文字列    | このブランドページに使用されるテンプレートID                                                                                                                                                                                                                                                                                                                         |
| `catalogId`                               | 文字列    | リテールカタログID（リクエストから返答）                                                                                                                                                                                                                                                                                                                           |
| `urlSlug`                                 | 文字列    | ブランドページのURLスラグ（リクエストから返答）                                                                                                                                                                                                                                                                                                                       |
| `theme`                                   | オブジェクト | <p>成功時には常に存在します。ブランドからのページレベルのスタイリング：ネストされた <code>colors</code> （背景 + <code>text</code> 役割）および <code>buttons</code>(<code>primary</code>/ <code>secondary</code>、それぞれに <code>background</code>および <code>text</code>）。を参照 <a href="#theme-object">テーマオブジェクト</a> セクション。<br>レスポンスボディはアドサーバーによってシリアル化されたまま返されます（中間の再形成なし： <code>theme</code>)</p>   |
| `trackers`                                | オブジェクト | ページレベルのトラッキングコンテナ。 `trackers.impression` ページインプレッションスロットを保持します： `type: "impression"` および `params` 以下を少なくとも含みます： `ts: "`{TS}`"` および `iabConsentString`.                                                                                                                                                                                          |
| `trackingTypes`                           | オブジェクト | トラッキングタイプから適用可能なテンプレートキーへのマップ。タイプ： `impression`, `productClick`, `productAddToCart`, `link`, `interaction`。各値は以下の配列です： `client.*/` `server.*` からのキー `trackingTemplates`。（を参照 [トラッキングURLの構成方法](/retail-media-interface/integration/ja/brand-pages/brand-page-retailer-integration-guide/tracking-attribution.md#how-to-compose-a-tracking-url)). |
| `trackingTemplates.client`                | オブジェクト | ブラウザ（C2S）トラッキング用の**相対** URL パスとクエリ文字列 - リバースプロキシのベース URL を先頭に追加します (`BASEURL`).                                                                                                                                                                                                                                                                 |
| `trackingTemplates.server`                | オブジェクト | 絶対\*\* URL テンプレート（ Epsilon S2Sのトラッキングホスト。                                                                                                                                                                                                                                                                                                       |
| `contentData[]`                           | 配列     | 描画するコンテンツモジュールの順序付き配列                                                                                                                                                                                                                                                                                                                           |
| `contentData[].id`                        | 文字列    | モジュールインスタンスID                                                                                                                                                                                                                                                                                                                                   |
| `contentData[].brandPageModuleTemplateId` | 文字列    | モジュールテンプレートID                                                                                                                                                                                                                                                                                                                                   |
| `contentData[].contentType`               | 文字列    | モジュールタイプ: HERO、TEXT、FILTER\_MENU、PRODUCT\_GRID、IMAGE、IMAGE\_GALLERY、SPLIT\_LAYOUT                                                                                                                                                                                                                                                               |
| `contentData[].order`                     | 整数     | レンダリング順序（昇順）                                                                                                                                                                                                                                                                                                                                    |
| `contentData[].tags`                      | 文字列の配列 | 任意。テンプレート内でリテールメディア事業者によって設定されたモジュールタグ。タグが設定されていない場合は完全に省略されます。欠落している場合は「タグなし」として扱ってください。SPLIT\_LAYOUT内のネストされたモジュールにも存在します。                                                                                                                                                                                                                     |
| `contentData[].trackers`                  | オブジェクト | 存在する場合のノードごとのトラッキングコンテナ。 `trackers.click` リンク/インタラクション/商品クリックイベント用。 `trackers.addToCart` 商品のカート追加用（{QTY}および{CONVERSION\_VALUE}マクロを含む）。トラッキング対象がない場合は省略される場合があります。                                                                                                                                                                               |

### テーマオブジェクト

成功したBrand Page APIレスポンスにはすべて以下が含まれます: `theme` オブジェクト: ブランド用に構成されたページレベルの色とボタンのスタイル。レンダリング時にこれらの値を適用します (例: CSS カスタムプロパティまたはデザイン トークンにマッピングします)。JSON は広告サーバーによって生成され、返された状態で配信されます - 次を書き換える個別のステップはありません `theme`。

**カラーフォーマット:** テーマの色の値は、上流 (キャンペーン/構成) からのプラットフォーム契約に従います: 各値は `#` の後に 6 桁の 16 進数 (hex6) が続きます。例: `#ff6600`。他のフォーマット (短い hex3、8 桁の 16 進数、 `rgb()`, `hsl()`、または名前付きカラー) を期待しないでください。広告サーバーは配信時にカラーフォーマットを再検証しません。上流はすべてのテーマフィールドに対して hex6 を提供します。

#### 構造とセマンティクス

* `theme` 含まれるもの `colors` および `buttons` - の両方が必要となります（ `theme` が存在する場合は常に）。
* `colors.background` - ページまたはキャンバスの背景（hex6が必須）。
* `colors.text` - 7つの必須ロール： `heading`, `subheading`, `body`, `caption`, `link`, `tagline`, `lines` （ライン/ディバイダー）。各値はhex6文字列です。
* `buttons.primary` および `buttons.secondary` - それぞれに以下が必要です： `background` および `text` （ボタンの塗りつぶし色およびラベル色）。それぞれhex6文字列です。
* 以下のフィールド参照テーブル内のすべてのパスが必須です。オプションのカラースロットは存在せず、以下もありません： `null` 内部の値 `theme`。（疎なフィールドや省略されたフィールドは、他の場所、例えば `contentData` モジュールなどに適用されます。）
* 上記の `theme` はページレベルです - ブランドページ上のすべてのモジュールが同じテーマを共有します。

#### フィールドリファレンス

この表のすべてのパスは必須です（null以外のhex6文字列）。

| パス                                   | 説明                |
| ------------------------------------ | ----------------- |
| `theme.colors.background`            | ページ/キャンバス背景       |
| `theme.colors.text.heading`          | 見出しテキスト           |
| `theme.colors.text.subheading`       | 副見出しテキスト          |
| `theme.colors.text.body`             | 本文/段落テキスト         |
| `theme.colors.text.caption`          | キャプション/セカンダリテキスト  |
| `theme.colors.text.link`             | リンクテキスト           |
| `theme.colors.text.tagline`          | キャッチプレーズテキスト      |
| `theme.colors.text.lines`            | 線と仕切り             |
| `theme.buttons.primary.background`   | プライマリCTAボタンの塗りつぶし |
| `theme.buttons.primary.text`         | プライマリCTAボタンのラベル   |
| `theme.buttons.secondary.background` | セカンダリボタンの塗りつぶし    |
| `theme.buttons.secondary.text`       | セカンダリボタンのラベル      |

例 - (`theme`オブジェクトのみ):

```json
"theme": {
  "colors": {
    "background": "#F5F5F5",
    "text": {
      "heading": "#1a1a1a",
      "subheading": "#333333",
      "body": "#5f6368",
      "caption": "#9aa0a6",
      "link": "#1a73e8",
      "tagline": "#5f6368",
      "lines": "#e0e0e0"
    }
  },
  "buttons": {
    "primary": {
      "background": "#ff6600",
      "text": "#FFFFFF"
    },
    "secondary": {
      "background": "#FFFFFF",
      "text": "#ff6600"
    }
  }
}
```

#### ノードごと `params`（一般的なキー）

| パラメータ              | 使用時                                             | 説明                                                                             |
| ------------------ | ----------------------------------------------- | ------------------------------------------------------------------------------ |
| `modId`            | ほとんどのインタラクティブノード                                | コンテンツモジュールまたは行の識別子。                                                            |
| `rurl`             | `link` / `productClick`リダイレクトが必要な場合             | URLエンコードされた送信先                                                                 |
| `ts`               | ほとんどのイベント                                       | キャッシュバスティング用のタイムスタンプ。実行時に代入してください。 `"{TS}"`実行時。                                |
| `iabConsentString` | すべてのトラッカースロット                                   | リテラルTC文字列、または実行時に代入する {TCF} マクロ                                                |
| `productCode`      | `productClick` / `productAddToCart`             | 商品識別子。                                                                         |
| `sellerId`         | `productClick` / `productAddToCart` （マーケットプレイス） | 出品者識別子。                                                                        |
| `qty`              | `productAddToCart`                              | イベント発生時のカート内のこのSKUの絶対数量（差分ではありません）。実行時に {QTY} マクロを代入してください                     |
| `conVal`           | `productAddToCart`                              | それらの商品の絶対金銭的価値：数量 × 単価から、適用された割引を差し引いたもの。代入してください `{CONVERSION_VALUE}` 実行時にマクロ |

#### テンプレートに依存するフィールド（ `contentData`

各モジュールのコア識別子（`id`, `brandPageModuleTemplateId`, `contentType`, `order`）を除き、プロパティの有無はブランドページ全体で一律ではありません。サンプル内のすべてのフィールドを必須として扱うのではなく、使用前に各プロパティを確認する機能検知を推奨します。

APIは「値なし」をいくつかの方法で表現する場合があります：

| パターン       | 意味                       | 推奨される処理                         |
| ---------- | ------------------------ | ------------------------------- |
| キーの省略      | JSONオブジェクトからプロパティが存在しない  | 非表示として処理。オプショナルチェイニング/デフォルト値を使用 |
| 明示的 `null` | プロパティが存在し値が `null` 値     | シリアライザがそれらを区別しない限り、省略された場合と同じ   |
| 空文字列       | `""` テキストまたはURL形式のフィールド用 | 通常はUIの該当部分の描画を非表示またはスキップ        |

#### 一般的なモジュールタイプの例

**商品グリッド:**

各商品行には以下が含まれます `product` オブジェクト（`catalogId`, `productCode`, `sellerId`), an `order` 値、および `trackers` 行が追跡可能な場合。商品行は以下を提供します： `click` スロット（`type: "productClick"`) および `addToCart`スロット（`type: "productAddToCart"`) (SKU がアトリビューション可能な場合)。

```

{
  "product": {
    "catalogId": "550e8400-e29b-41d4-a716-446655440001",
    "productCode": "9221200653341",
    "sellerId": "2ae0aab9-44ce-40a0-b2b9-ae61681ad224"
  },
  "order": 1,
  "trackers": {
    "click": {
      "type": "productClick",
      "params": {
        "modId": "grid-1",
        "productCode": "9221200653341",
        "sellerId": "2ae0aab9-44ce-40a0-b2b9-ae61681ad224",
        "rurl": "{RURL}",
        "ts": "{TS}",
        "iabConsentString": "{TCF}"
      }
    },
    "addToCart": {
      "type": "productAddToCart",
      "params": {
        "modId": "grid-1",
        "productCode": "9221200653341",
        "sellerId": "2ae0aab9-44ce-40a0-b2b9-ae61681ad224",
        "rurl": "{RURL}",
        "ts": "{TS}",
        "qty": "{QTY}",
        "conVal": "{CONVERSION_VALUE}",
        "iabConsentString": "{TCF}"
      }
    }
  }
}

```

**ヒーロー:**

見出し、副見出し、CTA テキストとリンク、画像、オーバーレイ、および `trackers.click` が存在する場合の CTA 用。

```

{
  "contentType": "HERO",
  "tags": [
    "header"
  ],
  "mediaUrl": "https://example.com/images/adidas-hero.jpg",
  "headline": "Impossible Is Nothing",
  "subheadline": "Spring Collection",
  "ctaText": "Explore",
  "ctaLink": "https://example.com/adidas/explore",
  "trackers": {
    "click": {
      "type": "link",
      "params": {
        "modId": "hero-1",
        "rurl": "https%3A%2F%2Fexample.com%2Fadidas%2Fexplore",
        "ts": "{TS}",
        "iabConsentString": "{TCF}"
      }
    }
  }
}

```

**画像ギャラリー:**

画像の配列。それぞれに URL、代替テキスト、キャプションが含まれます。 `trackers.click` 画像が外部リンクになっている場合にのみ、その画像用。

```
{
  "contentType": "IMAGE_GALLERY",
  "galleryImages": [
    {
      "url": "https://example.com/images/recipe-spaghetti-bolognese.jpg",
      "alt": "Spaghetti Bolognese",
      "caption": "Spaghetti Bolognese",
      "trackers": {
        "click": {
          "type": "link",
          "params": {
            "modId": "gallery-1",
            "rurl": "https%3A%2F%2Fexample.com%2Frecipes%2Fspaghetti",
            "ts": "{TS}",
            "iabConsentString": "{TCF}"
          }
        }
      }
    }
  ]
}
```

**テキスト:**

見出しと本文テキスト。次はありません `trackers`行にリンクが存在しない限り。

```
{
  "contentType": "TEXT",
  "text": "Explore our newest arrivals designed for comfort, style, and performance."
}
```

**画像:**

画像 URL、キャプション、代替テキスト、オプションのリンク、およびが含まれます `trackers.click` 画像がクリック可能な場合の詳細

```
{
  "contentType": "IMAGE",
  "imageUrl": "https://example.com/images/model.jpg",
  "caption": "New arrivals now available",
  "alt": "Model wearing summer collection",
  "trackers": { "click": { "type": "link", "params": { "modId": "image-1", "rurl": "https%3A%2F%2Fexample.com%2Fnew-arrivals", "ts": "{TS}", "iabConsentString": "{TCF}"
  }
}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://help.citrusad.com/retail-media-interface/integration/ja/brand-pages/brand-page-retailer-integration-guide/brand-page-apis.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
