> ## 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.

# シグナルの移行

> AdCP シグナルを beta.3 から rc.1 に移行します。deliver_to のフラット化、構造化された価格オプション、簡素化された使用状況レポートフィールドをカバーします。

# シグナルの移行

AdCP 3.0 rc.1 はシグナルプロトコルに3つの変更を加える: デリバリーターゲットのフラット化、構造化された価格オプション、使用状況レポートの簡素化。

## deliver-to のフラット化

`get_signals` リクエストのネストされた `deliver_to` オブジェクトが2つのトップレベルフィールドに置き換えられます。

| beta.3                    | rc.1           | 注記        |
| ------------------------- | -------------- | --------- |
| `deliver_to.destinations` | `destinations` | トップレベルに移動 |
| `deliver_to.countries`    | `countries`    | トップレベルに移動 |

**beta.3:**

```json test=false theme={null}
{
  "signal_spec": "in-market auto intenders",
  "deliver_to": {
    "destinations": [
      { "agent_url": "https://dsp.example.com", "seat_id": "seat_123" }
    ],
    "countries": ["US", "CA"]
  }
}
```

**rc.1:**

```json test=false theme={null}
{
  "signal_spec": "in-market auto intenders",
  "destinations": [
    { "agent_url": "https://dsp.example.com", "seat_id": "seat_123" }
  ],
  "countries": ["US", "CA"]
}
```

***

## 価格オプション

レガシーの `pricing` オブジェクト（単一の `cpm` フィールドを持つ）が `pricing_options` 配列に置き換えられます。各オプションは `model` による識別子付きユニオンです。

| beta.3                   | rc.1                                     | 注記               |
| ------------------------ | ---------------------------------------- | ---------------- |
| `pricing: { cpm: 2.50 }` | `pricing_options[]`                      | 価格モデルオブジェクトの配列   |
| 暗黙的な価格選択                 | `activate_signal` での `pricing_option_id` | バイヤーの明示的なコミットメント |
| 冪等性なし                    | `report_usage` での `idempotency_key`      | 重複請求を防ぐ          |

### 3つの価格モデル

**CPM** — 1000インプレッションあたりの固定コスト:

```json theme={null}
{
  "$schema": "https://adcontextprotocol.org/schemas/latest/core/signal-pricing-option.json",
  "pricing_option_id": "po_auto_cpm",
  "model": "cpm",
  "cpm": 2.50,
  "currency": "USD"
}
```

**メディア費用の割合** — メディア支出のパーセンテージ、オプションの CPM 上限付き:

```json theme={null}
{
  "$schema": "https://adcontextprotocol.org/schemas/latest/core/signal-pricing-option.json",
  "pricing_option_id": "po_auto_pom",
  "model": "percent_of_media",
  "percent": 15,
  "max_cpm": 5.00,
  "currency": "USD"
}
```

**固定料金** — レポート期間ごとの固定料金（月次ライセンスセグメント）:

```json theme={null}
{
  "$schema": "https://adcontextprotocol.org/schemas/latest/core/signal-pricing-option.json",
  "pricing_option_id": "po_auto_flat",
  "model": "flat_fee",
  "amount": 10000.00,
  "period": "monthly",
  "currency": "USD"
}
```

### 価格を伴うアクティベーション

シグナルをアクティベートするとき、選択した `pricing_option_id` を渡す:

```json test=false theme={null}
{
  "signal_agent_segment_id": "luxury_auto_intenders",
  "destinations": [
    { "type": "agent", "agent_url": "https://dsp.example.com", "account": { "account_id": "acct_pinnacle" } }
  ],
  "pricing_option_id": "po_auto_cpm"
}
```

***

## 使用状況レポート

`report_usage` は `idempotency_key` を追加し、`kind` と `operator_id` フィールドを削除します。

| beta.3              | rc.1              | 注記                                                           |
| ------------------- | ----------------- | ------------------------------------------------------------ |
| `kind` フィールド        | 削除                | 使用状況レコードは `signal_agent_segment_id` または `standards_id` で自己記述 |
| `operator_id` フィールド | 削除                | アカウント参照がオペレーターアイデンティティを提供                                    |
| 冪等性なし               | `idempotency_key` | クライアント生成の UUID がリトライ時の重複請求を防ぐ                                |

**rc.1 使用状況レポート:**

```json theme={null}
{
  "$schema": "https://adcontextprotocol.org/schemas/latest/account/report-usage-request.json",
  "idempotency_key": "550e8400-e29b-41d4-a716-446655440000",
  "reporting_period": {
    "start": "2025-03-01T00:00:00Z",
    "end": "2025-03-31T23:59:59Z"
  },
  "usage": [
    {
      "account": { "account_id": "acct_pinnacle_signals" },
      "signal_agent_segment_id": "luxury_auto_intenders",
      "pricing_option_id": "po_auto_cpm",
      "impressions": 4200000,
      "media_spend": 21000.00,
      "vendor_cost": 2100.00,
      "currency": "USD"
    }
  ]
}
```

使用状況レコードの `pricing_option_id` はアクティベーション時に渡したものと一致する必要があり、ベンダーが正しいレートが適用されたことを確認できます。

## 移行ステップ

<Steps>
  <Step title="deliver_to をフラット化する">
    `get_signals` リクエストで `deliver_to.destinations` と `deliver_to.countries` をトップレベルフィールドに移動します。
  </Step>

  <Step title="pricing_options 配列を解析する">
    `pricing`（オブジェクト）の代わりに `pricing_options`（配列）を読み取るようにシグナルレスポンスの解析を更新します。`model` フィールドで価格タイプを判別します。
  </Step>

  <Step title="アクティベーション時に価格を選択する">
    `activate_signal` を呼び出すとき、シグナルの `pricing_options` 配列から選択した `pricing_option_id` を渡します。
  </Step>

  <Step title="report_usage に idempotency_key を追加する">
    各 `report_usage` 呼び出しに一意のキー（UUID）を生成します。同じキーを使ったリトライは冪等です。
  </Step>

  <Step title="kind と operator_id を削除する">
    使用状況レコードから `kind` と `operator_id` を削除します。使用状況タイプは `signal_agent_segment_id`（シグナル）または `standards_id`（ガバナンス）の存在で判別されます。
  </Step>

  <Step title="ライフサイクルを通じて pricing_option_id を追跡する">
    アクティベーション時に `pricing_option_id` を保存し、ベンダーが請求を確認できるように `report_usage` レコードで渡します。
  </Step>

  <Step title="スキーマに対して検証する">
    `get-signals-request.json`、`activate-signal-request.json`、`report-usage-request.json` スキーマに対してリクエストを実行します。
  </Step>
</Steps>

<Card title="シグナルプロトコル" icon="arrow-right" href="/docs/signals/overview">
  シグナル探索、アクティベーション、使用状況レポート、価格モデルの完全リファレンス。
</Card>

***

**関連:** [価格](/docs/reference/migration/pricing) | [最適化目標](/docs/reference/migration/optimization-goals) | [AdCP 3.0 概要](/docs/reference/whats-new-in-v3)
