在庫予測サービス

注:

在庫予測サービスは、Xandr Ad Server のお客様のみが利用できます。

パブリッシャーが広告主の予算に対して配信することを約束するためには、広告主が購入できる在庫の量を予測する方法が必要です。 さらに、パブリッシャーは 在庫競合 を検出する方法が必要です。在庫競合は、複数の保証された品目が同じ在庫をめぐって競合する場合に発生します。 競合が発生した場合にパブリッシャーが優先順位付けを決定できるように、競合について理解することが重要です。

このページで説明する API サービスは、在庫の可用性と競合に関する情報を理解できるように設計されています。 Forecast Inventory-Multi ServiceForecast Contention-Multi Service は、完全にサポートされているサービスです。

注:

在庫予測サービスは、従来の保証配送明細項目 (GDLI) と保証配送拡張品目 (GDALI) の両方をサポートしています。 これらの異なる広告申込情報タイプに対して適切な予測要求を行う際には、以下を参考にしてください。

  • 従来の GDLI
    • 従来の GDLI はキャンペーンをサポートしますが、分割はサポートしていません。
    • 子キャンペーンが複数ない場合は、空の配列 (campaigns: [ ]) を渡します。
    • 詳細については、「 Guaranteed Line Item で複数のキャンペーンを使用する」を参照してください。
  • GDALIs
    • GDALI は分割をサポートしますが、キャンペーンはサポートしません。
    • 要求に分割の詳細を含める場合、クエリ文字列パラメーター split_breakout=true を使用して、個々の分割で分割された予測と明細項目全体を返すことができます。
    • GDALI UI は、 予測フッターに在庫予測サービスを使用します。 詳細については、「 保証された配送増強品目の作成」の「予測」セクションを参照してください。

予測在庫 - マルチ サービス

REST API

HTTP メソッド エンドポイント 説明
POST https://api.appnexus.com/forecast-inventory-multi 仮説のプロファイルを使用して在庫予測を実行します。

メモ: Forecast Inventory-Multi Service は、 POST 呼び出しのみをサポートします。

クエリ文字列のパラメーター

出力の調整には、次の表にあるクエリ文字列パラメーターを使用します。 従来の GDLI と GDALI の使用方法については、以下の例を参照してください。

フィールド 説明
priority フォーム priority=x のクエリ文字列に渡されると、優先度の低い品目のインベントリが置き換えられ、使用可能と見なされます。
必須: いいえ
roadblocking_enabled このフィールドでは、複数の広告サイズを障害物にまとめるかどうかを指定します。 roadblocking_enabled=true として渡す場合は、プロファイルのsize_targets配列で 2 つ以上の広告サイズを渡す必要があります。 ページ レベルの障害物の場合は、line_itemの下の roadblock オブジェクトにマスター クリエイティブ サイズを含める必要があります。 障害物の詳細については、「 障害物でインベントリをターゲットにする」を参照してください。
必須: いいえ
competitive_exclusions_enabled このフィールドが渡される場合は、 advertiser_idcreative_id、またはその両方も渡す必要があります。 競合除外の詳細については、「 競合除外」を参照してください。
必須: いいえ
advertiser_id competitive_exclusions_enabled=trueが渡されたら、クリエイティブに競合するブランドまたはオファー カテゴリがあるため、結果の予測に含めないようにする広告主 ID を含むこのフィールドも渡す必要があります。 競合除外の詳細については、「 競合除外」を参照してください。
必須: いいえ。クエリ文字列で competitive_exclusions_enabled も渡されない限り。
creative_id competitive_exclusions_enabled=trueが渡された場合は、競合するブランドまたはオファーのカテゴリを持つクリエイティブ ID を持つこのフィールドも渡す必要があるため、結果の予測に含めないようにする必要があります。 競合除外の詳細については、「 競合除外」を参照してください。
必須: いいえ。クエリ文字列で competitive_exclusions_enabled も渡されない限り。
line_item_exclusions 予測から除外するライン アイテム ID のコンマ区切りのリスト。
必須: いいえ
viewability true に設定すると、予測には視認可能なインプレッションのみが含まれます。 視認可能なインプレッションは、過去のデータに基づいて計算されます。 vCPM 収益タイプの保証配信品目に適用されます。
必須: いいえ
dynamic_timeout 試行回数 (既定値は 1)。
必須: いいえ
dynamic_attempts 試用版ごとに待機する時間 (既定値は 2 分、運用環境では最小が 10 秒)。
必須: いいえ
split_breakout split_breakout=trueが渡されるときは、スプリット レベルの詳細も渡す必要があります。 これにより、個々の分割とライン アイテム全体によって分割された予測が返されます。

メモ: GDALI は分割をサポートします。従来の GDLI では分割はサポートされていません。

必須: いいえ

JSON フィールド

全般

フィールド 種類 説明
line_item object 予測する明細項目に関連付けられているフライト日とプロファイル情報。
必須: はい
campaigns オブジェクトの配列 品目のキャンペーン情報を含むオブジェクトの配列。

メモ: 従来の GDLI はキャンペーンをサポートします。GDALI はキャンペーンをサポートしていません。 従来の GDLI に複数の子キャンペーンがない場合は、空の配列 (campaigns: []) を渡します。

必須: レガシ GDLI の場合ははいですが、空でもかまいません。 広告申込情報にキャンペーンと分割の両方を含めることはできません。
splits オブジェクトの配列 品目の分割情報を含むオブジェクトの配列。

メモ: GDALI は分割をサポートします。従来の GDLI では分割はサポートされていません。 GDALI に分割がない場合は、空の配列 (splits: []) を渡します。 詳細については、「 サービスの分割」を参照してください。

必須: GDALI の場合ははいですが、空でもかまいません。 広告申込情報にキャンペーンと分割の両方を含めることはできません。

ライン項目

フィールド 種類 説明
start_date string フライトの開始日。
必須: はい
end_date string フライトの終了日。
必須: はい
timezone 列挙 広告申込情報がアクティブなタイムゾーン。 詳細と使用できる値については、「 API タイムゾーン」を参照してください。
必須: いいえ。指定しない場合は、メンバーの既定のタイムゾーンが使用されます。
profile object プロファイル オブジェクトのインスタンス。 このオブジェクトを使用して、広告申込情報のターゲティングを定義します。 使用可能なフィールドの一覧については、 プロファイルサービスを参照してください。 Forecastingに固有のプロファイル設定については、以下の Forecastingプロファイル を参照してください。
このフィールドは必須ですが、空のオブジェクトを渡すことができます。 ただし、空のプロファイルを渡すということは、広告申込情報にターゲティングを適用せずに予測していることを意味します。
必須: はい
roadblock object 品目の障害設定。
必須: はい、 roadblocking_enabled = trueの場合のみです。
creatives オブジェクトの配列 キャンペーンに関連付けられているクリエイティブ。 クリエイティブを含める場合は、少なくともクリエイティブ ID を含める必要があります。 使用可能なフィールドの一覧と説明については、「 クリエイティブ サービス」を参照してください。
必須: いいえ

障害

障害は、広告申込情報レベルまたはキャンペーン レベルのどちらでも設定できますが、両方で設定することはできません。 キャンペーンに障害が設定されている場合、親品目には設定できません。 障害は、管理されたインベントリにのみ適用でき、サードパーティのインベントリを使用している場合は有効にすることはできません。

フィールド 種類 説明
type 列挙 障害の種類。 障害オブジェクトを含める場合、このフィールドは必須です。 次の値を指定できます。
- null: 品目レベルでの障害設定はありません。 (GDALI のみ)
- no_roadblock: 品目レベルでの障害設定はありません。 (レガシ GDLI のみ)
- normal_roadblock: クリエイティブの数が利用可能な広告スロットの数以上の場合、広告申込情報が機能します。 (レガシ GDLI のみ)
- partial_roadblock: 広告申込情報は、各サイズの少なくとも 1 つのクリエイティブが対象の広告スロットに適合する場合に機能します。 (GDALI & レガシ GDLI)
- exact_roadblock: 広告申込情報は、クリエイティブの数が利用可能な広告スロットの数と等しい場合に機能します。 (レガシ GDLI のみ)

メモ: GDALI の場合、この値は null または partial_roadblock である必要があります。
master_width int マスター クリエイティブの幅。 この値は、ページ レベルの障害を使用する場合にのみ設定します。 標準の障害物の場合は、このフィールドを省略するか、値を 0 に設定します。 (値を null に設定しないでください。)
master_height int マスター クリエイティブの高さ。 この値は、ページ レベルの障害を使用する場合にのみ設定します。 標準の障害物の場合は、このフィールドを省略するか、値を 0 に設定します。 (値を null に設定しないでください。)
マスター クリエイティブ

マスター クリエイティブとは、障害物オブジェクトで指定された master_heightmaster_width に一致するサイズを持つクリエイティブです。 そのサイズに一致するクリエイティブが複数ある場合、1 つがマスターとして選択されます。

マスター クリエイティブはページ レベルの障害物に使用され、障害物に対して配信されたクリエイティブの完全なセットに対して 1 つのインプレッションが記録されます。 その記録されたインプレッションは、マスター クリエイティブに基づいています。 つまり、マスター クリエイティブが配信されない場合、インプレッションは記録されません。 配信された各クリエイティブがインプレッションとしてカウントされる、クリエイティブ レベルの障害を使用する場合は、 master_widthmaster_height の値は空白のままにします。

障害物の詳細については、「 障害物でインベントリをターゲットにする」を参照してください。

キャンペーン

注:

従来の GDLI はキャンペーンをサポートします。GDALI はキャンペーンをサポートしていません。

フィールド 種類 説明
name string キャンペーンの名前。 1 つのライン アイテム内で複数のキャンペーンを予測できるため、名前は各ライン アイテム内で一意である必要があります。
必須: はい
profile object プロファイル オブジェクトのインスタンス。 このオブジェクトを使用して、キャンペーンのターゲティングを定義します。 使用可能なフィールドの一覧と説明については、「 プロファイル サービス」を参照してください。 Forecastingに固有のプロファイル設定については、以下の Forecastingプロファイル を参照してください。
必須: はい
start_date string キャンペーンの開始日。
必須: いいえ
end_date string キャンペーンの終了日。
必須: いいえ
timezone 列挙 広告申込情報がアクティブなタイムゾーン。 詳細と使用できる値については、「 API タイムゾーン」を参照してください。
必須: いいえ。指定しない場合は、メンバーの既定のタイムゾーンが使用されます。
creatives オブジェクトの配列 キャンペーンに関連付けられているクリエイティブ。 クリエイティブを含める場合は、少なくともクリエイティブ ID を含める必要があります。 使用可能なフィールドの一覧と説明については、「 クリエイティブ サービス」を参照してください。
必須: いいえ

Forecasting プロファイル

ライン アイテムとキャンペーンの プロファイル サービス を使用して、予測のターゲティング要件を定義できます。 ただし、他のタイプのターゲティング仕様とは対照的に、予測の一部のフィールドを定義する必要がある方法にはいくつかの違いがあります。

postal_code_targets

profile サービスの postal_code_targets オブジェクトのフィールドは、郵便番号サービスで定義されています。 郵便番号に基づいて予測する場合は、次の情報を指定 する必要があります

フィールド 種類 説明
code string 郵便番号は、14 文字までの英数字文字列にすることができ、スペースまたはハイフンを含めることができます。
country_id string 都市が属する国/地域の ISO コード国別サービスを使用すると、国コードの完全な一覧を取得できます。
ソースを展開
"postal_code_targets":[  
        {
                "code": "02692",
                "country_id": "59"
        },
        {
                "code": "83712",
                "country_id": "233"
        }
]

レガシ GDLI の例 - 複数のキャンペーンを含むレガシ GDLI の在庫可用性を確認する

提案されたターゲティングに基づいて、複数の子キャンペーンの在庫在庫状況予測を確認するには、次に示す形式で JSON ファイルを作成します。

{
  "line_item": {
    "start_date": "2019-02-10",
    "end_date": "2019-03-01",
    "profile": {
      "country_targets": [
        {
          "id": 169
        }
      ],
      "country_action": "include"
    }
  },
  "campaigns": [
    {
      "name": "foo",
      "start_date": "2019-02-11",
      "end_date": "2019-02-15",
      "profile": {
        "daypart_targets": [
          {
            "day": "tuesday",
            "start_hour": 8,
            "end_hour": 20
          }
        ]
      }
    },
    {
      "name": "bar",
      "start_date": "2019-02-20",
      "end_date": "2019-02-28",
      "profile": {
        "browser_targets": [
          {
            "id": 11
          }
        ],
        "browser_action": "include"
      }
    }
  ]
}

複数のキャンペーンがない場合は、単にキャンペーンの空の配列を渡します。

{
  "line_item": {
    "start_date": "2019-02-10",
    "end_date": "2019-03-01",
    "profile": {
      "country_targets": [
        {
          "id": 169
        }
      ],
      "country_action": "include"
    }
  },
  "campaigns": [
  ]
}

次に、次のようにサービスに POST します。

curl --silent  -b cookies -X POST -d '@/tmp/forecast-inventory-multi.json' "https://api.appnexus.com/forecast-inventory-multi"

次の形式で JSON が返されます。

{
   "response" : {
      "start_element" : 0,
      "inventory" : [
         {
            "daily_detail" : [
               {
                  "end_date" : "2019-02-11",
                  "available" : 0,
                  "capacity" : 0,
                  "days_in_forecast" : 0,
                  "start_date" : "2019-02-11"
               },
               {
                  "available" : 0,
                  "capacity" : 0,
                  "end_date" : "2019-02-12",
                  "days_in_forecast" : 0,
                  "start_date" : "2019-02-12"
               },
               {
                  "end_date" : "2019-02-13",
                  "available" : 0,
                  "capacity" : 0,
                  "days_in_forecast" : 0,
                  "start_date" : "2019-02-13"
               },
               {
                  "end_date" : "2019-02-14",
                  "capacity" : 0,
                  "available" : 0,
                  "start_date" : "2019-02-14",
                  "days_in_forecast" : 0
               },
               {
                  "available" : 118759,
                  "capacity" : 126738,
                  "end_date" : "2019-02-15",
                  "days_in_forecast" : 0,
                  "start_date" : "2019-02-15"
               },
               {
                  "days_in_forecast" : 0,
                  "start_date" : "2019-02-20",
                  "end_date" : "2019-02-20",
                  "available" : 163474200,
                  "capacity" : 176586394
               },
               {
                  "days_in_forecast" : 0,
                  "start_date" : "2019-02-21",
                  "end_date" : "2019-02-21",
                  "available" : 256485594,
                  "capacity" : 274037191
               },
               {
                  "capacity" : 212467438,
                  "available" : 199091285,
                  "end_date" : "2019-02-22",
                  "start_date" : "2019-02-22",
                  "days_in_forecast" : 0
               },
               {
                  "capacity" : 189452983,
                  "available" : 177450785,
                  "end_date" : "2019-02-23",
                  "start_date" : "2019-02-23",
                  "days_in_forecast" : 0
               },
               {
                  "start_date" : "2019-02-24",
                  "days_in_forecast" : 0,
                  "capacity" : 180309046,
                  "available" : 168589468,
                  "end_date" : "2019-02-24"
               },
               {
                  "start_date" : "2019-02-25",
                  "days_in_forecast" : 0,
                  "capacity" : 182850122,
                  "available" : 171364216,
                  "end_date" : "2019-02-25"
               },
               {
                  "end_date" : "2019-02-26",
                  "available" : 129049282,
                  "capacity" : 139962276,
                  "days_in_forecast" : 0,
                  "start_date" : "2019-02-26"
               },
               {
                  "start_date" : "2019-02-27",
                  "days_in_forecast" : 0,
                  "capacity" : 171623425,
                  "available" : 158879752,
                  "end_date" : "2019-02-27"
               },
               {
                  "end_date" : "2019-02-28",
                  "capacity" : 268133170,
                  "available" : 250959715,
                  "start_date" : "2019-02-28",
                  "days_in_forecast" : 0
               }
            ],
            "summary" : {
               "days_in_forecast" : 14,
               "start_date" : "2019-02-10",
               "available" : 1675463056,
               "capacity" : 1795548783,
               "end_date" : "2019-03-01"
            }
         }
      ],
      "num_elements" : 1,
      "count" : 1,
      "status" : "OK"
   }
}

GDALI の例 - 分割を使用して GDALI の在庫可用性を確認する

提案されたターゲット設定に基づいて分割全体の在庫可用性予測を表示するには、次に示す形式で JSON ファイルを作成します。

{
    "line_item": {
        "ad_types": [
            "banner"
        ],
        "start_date": "2022-04-28 00:00:00",
        "end_date": "2022-05-01 23:59:59",
        "profile": {
            "country_targets": [
                {
                    "id": 123,
                    "action": "include",
                }
            ],
            "size_targets": {
                "width": 190,
                "height": 213
            },
            {
                "width": 728,
                "height": 90
            },
            "id": null,
            "advertiser_id": 5878213,
            "graph_id": null
        },
        "creatives": [],
        "roadblock": null
    },
    "splits": [
        {
            "id": 111111111,
            "conditions": []
            "is_default": false,
            "active": true,
            "order": 1,
            "name": "Name1",
            "allocation_strategy": "unconstrained",
            "creatives": []
        },
        {
            "id": 222222222,
            "conditions": []
            "is_default": false,
            "active": true,
            "order": 2,
            "name": "Name2",
            "allocation_strategy": "unconstrained",
            "creatives": []
        },
        {
            "id": 333333333,
            "is_default": true,
            "active": false,
            "order": 5,
            "name": "Default",
            "allocation_strategy": "unconstrained",
            "creatives": []
        }
    ]
}

分割がない場合は、単純に分割用の空の配列を渡します。

{
    "line_item": {
        "ad_types": [
            "banner"
        ],
        "start_date": "2022-04-28 00:00:00",
        "end_date": "2022-05-01 23:59:59",
        "profile": {
            "country_targets": [
                {
                    "id": 123,
                    "action": "include",
                }
            ],
            "size_targets": {
                "width": 190,
                "height": 213
            },
            {
                "width": 728,
                "height": 90
            },
            "id": null,
            "advertiser_id": 5878213,
            "graph_id": null
        },
        "creatives": [],
        "roadblock": null
    },
    "splits": [        
    ]
}

次に、追加のクエリを使用せずに、またはsplit_breakoutクエリを使用して、サービスにPOSTします。

POST 追加のクエリなし
curl --silent  -b cookies -X POST -d '@/tmp/forecast-inventory-multi.json' "https://api.appnexus.com/forecast-inventory-multi"

次の形式で JSON が返されます。

{
    "line_item": {
        "ad_types": [
            "banner"
        ],
        "start_date": "2022-04-28 00:00:00",
        "end_date": "2022-05-01 23:59:59",
        "profile": {
            "country_targets": [
                {
                    "id": 123,
                    "action": "include",
                }
            ],
            "size_targets": {
                "width": 190,
                "height": 213
            },
            {
                "width": 728,
                "height": 90
            },
            "id": null,
            "advertiser_id": 5878213,
            "graph_id": null
        },
        "creatives": [],
        "roadblock": null
    },
    "splits": [
        {
            "id": 111111111,
            "conditions": []
            "is_default": false,
            "active": true,
            "order": 1,
            "name": "Name1",
            "allocation_strategy": "unconstrained",
            "creatives": []
        },
        {
            "id": 222222222,
            "conditions": []
            "is_default": false,
            "active": true,
            "order": 2,
            "name": "Name2",
            "allocation_strategy": "unconstrained",
            "creatives": []
        },
        {
            "id": 333333333,
            "is_default": true,
            "active": false,
            "order": 5,
            "name": "Default",
            "allocation_strategy": "unconstrained",
            "creatives": []
        }
    ]
}
POST split_breakoutクエリを使用
curl --silent  -b cookies -X POST -d '@/tmp/forecast-inventory-multi.json' "https://api.appnexus.com/forecast-inventory-multi?split_breakout=true"

次の形式で JSON が返されます。

{
    "response": {
        "status": "OK",
        "count": 1,
        "start_element": 0,
        "num_elements": 100,
        "inventory": [
            {
                "split_breakout": [
                    {
                        "name": "split 1",
                        "id": 111111111,
                        "daily_detail": [
                            {
                                "available": 0,
                                "capacity": 0,
                                "days_in_forecast": 0,
                                "start_date": "2022-12-13",
                                "end_date": "2022-12-13"
                            },
                            {
                                "available": 0,
                                "capacity": 0,
                                "days_in_forecast": 0,
                                "start_date": "2022-12-14",
                                "end_date": "2022-12-14"
                            },
                            {
                                "available": 0,
                                "capacity": 0,
                                "days_in_forecast": 0,
                                "start_date": "2022-12-15",
                                "end_date": "2022-12-15"
                            },
                            {
                                "available": 0,
                                "capacity": 0,
                                "days_in_forecast": 0,
                                "start_date": "2022-12-16",
                                "end_date": "2022-12-16"
                            }
                        ],
                        "summary": {
                            "available": 0,
                            "capacity": 0,
                            "days_in_forecast": 4,
                            "start_date": "2022-12-13",
                            "end_date": "2022-12-16"
                        }
                    },
                    {
                        "name": "split 2",
                        "id": 222222222,
                        "daily_detail": [
                            {
                                "available": 0,
                                "capacity": 0,
                                "days_in_forecast": 0,
                                "start_date": "2022-12-13",
                                "end_date": "2022-12-13"
                            },
                            {
                                "available": 0,
                                "capacity": 0,
                                "days_in_forecast": 0,
                                "start_date": "2022-12-14",
                                "end_date": "2022-12-14"
                            },
                            {
                                "available": 0,
                                "capacity": 0,
                                "days_in_forecast": 0,
                                "start_date": "2022-12-15",
                                "end_date": "2022-12-15"
                            },
                            {
                                "available": 0,
                                "capacity": 0,
                                "days_in_forecast": 0,
                                "start_date": "2022-12-16",
                                "end_date": "2022-12-16"
                            }
                        ],
                        "summary": {
                            "available": 0,
                            "capacity": 0,
                            "days_in_forecast": 4,
                            "start_date": "2022-12-13",
                            "end_date": "2022-12-16"
                        }
                    },
                    {
                        "name": "Default",
                        "id": 000000000,
                        "daily_detail": [
                            {
                                "available": 14076857,
                                "capacity": 19714967,
                                "days_in_forecast": 0,
                                "start_date": "2022-12-13",
                                "end_date": "2022-12-13"
                            },
                            {
                                "available": 17695775,
                                "capacity": 18459811,
                                "days_in_forecast": 0,
                                "start_date": "2022-12-14",
                                "end_date": "2022-12-14"
                            },
                            {
                                "available": 18542490,
                                "capacity": 19292381,
                                "days_in_forecast": 0,
                                "start_date": "2022-12-15",
                                "end_date": "2022-12-15"
                            },
                            {
                                "available": 18106140,
                                "capacity": 18859887,
                                "days_in_forecast": 0,
                                "start_date": "2022-12-16",
                                "end_date": "2022-12-16"
                            }
                        ],
                        "summary": {
                            "available": 68421262,
                            "capacity": 76327046,
                            "days_in_forecast": 4,
                            "start_date": "2022-12-13",
                            "end_date": "2022-12-16"
                        }
                    }
                ],
                "daily_detail": [
                    {
                        "available": 14076857,
                        "capacity": 19714967,
                        "days_in_forecast": 0,
                        "start_date": "2022-12-13",
                        "end_date": "2022-12-13"
                    },
                    {
                        "available": 17695775,
                        "capacity": 18459811,
                        "days_in_forecast": 0,
                        "start_date": "2022-12-14",
                        "end_date": "2022-12-14"
                    },
                    {
                        "available": 18542490,
                        "capacity": 19292381,
                        "days_in_forecast": 0,
                        "start_date": "2022-12-15",
                        "end_date": "2022-12-15"
                    },
                    {
                        "available": 18106140,
                        "capacity": 18859887,
                        "days_in_forecast": 0,
                        "start_date": "2022-12-16",
                        "end_date": "2022-12-16"
                    }
                ],
                "summary": {
                    "available": 68421262,
                    "capacity": 76327046,
                    "days_in_forecast": 4,
                    "start_date": "2022-12-13",
                    "end_date": "2022-12-16"
                }
            }
        ]
    }
}

レガシ GDLI の例 - 障害のあるレガシ GDLI のインベントリ可用性を確認する

いくつかのクリエイティブ サイズに対する障害を想定して在庫在庫状況予測を実行するには、次のことを行う必要があります。

  • プロファイルを変更して、 size_targets 配列を含めます。
  • 要求のクエリ文字列に roadblocking_enabled=true を渡します。

サイズ目標を定義し、広告申込情報やキャンペーンにクリエイティブを追加することができます。 これを行うと、すべてのサイズが予測に使用されます。 ロードブロッキングを有効にすると、獲得可能なインプレッション数が最も少ないサイズが予測容量として使用されます。

注:

この例では、予測を決定するときに、 size_targets とクリエイティブ サイズがすべて考慮されます。

クエリで送信する JSON の例を次に示します。

{
    "line_item": {
        "ad_types": [
            "banner"
        ],
        "start_date": "2022-05-16 00:00:00",
        "end_date": "2022-06-12 23:59:59",
        "timezone": "Europe/Brussels",
        "profile": {},
        "creatives": [],
        "roadblock": {
            "type": "partial_roadblock",
            "master_width": 320,
            "master_height": 101
        }
    },
    "campaigns": [],
}       

GDALI の例 - 障害が発生して GDALI のインベントリの可用性を確認する

いくつかのクリエイティブ サイズの障害があると仮定して、GDALI で在庫の可用性予測を実行するには、次のことを行う必要があります:

  • プロファイルを変更して、 size_targets 配列を含めます。
  • 要求のクエリ文字列に roadblocking_enabled=true を渡します。

サイズ目標を定義したり、広告申込情報にクリエイティブを追加したりすることができます。 これを行うと、すべてのサイズが予測に使用されます。 ロードブロッキングを有効にすると、獲得可能なインプレッション数が最も少ないサイズが予測容量として使用されます。

注:

この例では、予測を決定するときに、 size_targets とクリエイティブ サイズがすべて考慮されます。

クエリで送信する JSON の例を次に示します。

{
    "line_item": {
        "ad_types": [
            "banner"
        ],
        "start_date": "2022-05-16 00:00:00",
        "end_date": "2022-06-12 23:59:59",
        "timezone": "Europe/Brussels",
        "profile": {
            "country_targets": [
                {
                    "id": 123,
                    "action": "include",
                }
            ],
            size_targets": {
                "width": 320,
            "height": 101
        },
        {
            "width": 320,
            "height": 252
        },
        "id": null,
        "advertiser_id": 7777777,
        "graph_id": null
    },
    "creatives": [],
    "roadblock": {
        "type": "partial_roadblock",
        "master_width": 320,
        "master_height": 101
    },
    "splits": [
        {
            "id": 111111111
            "conditions": []
            "is_default": false,
            "active": true,
            "order": 1,
            "name": "Name1",
            "allocation_strategy": "unconstrained",
            "creatives": []
        },
        {
            "id": 222222222,
            "conditions": []
            "is_default": false,
            "active": true,
            "order": 2,
            "name": "Name2",
            "allocation_strategy": "unconstrained",
            "creatives": []
        },
        {
            "id": 333333333,
            "is_default": true,
            "active": false,
            "order": 7,
            "name": "Default",
            "allocation_strategy": "unconstrained",
            "creatives": []
        }
    ]
}

予測の競合 - マルチ サービス

予測の競合 - マルチ サービス: REST API

HTTP メソッド エンドポイント 説明
POST https://api.appnexus.com/forecast-contention-multi 仮定のターゲティング プロファイルを使用して、在庫競合予測を実行します。

ヒント: Forecast Contention-Multi Service は、 POST 呼び出しのみをサポートします。

予測の競合のクエリ文字列パラメーター - マルチ サービス

出力の調整には、次の表にあるクエリ文字列パラメーターを使用します。 従来の GDLI と GDALI の使用方法については、以下の例を参照してください。

フィールド 説明
priority フォーム priority=x のクエリ文字列に渡されると、優先度の低い品目のインベントリが置き換えられ、使用可能と見なされます。
必須: いいえ
competitive_exclusions_enabled このフィールドが渡される場合は、 advertiser_idcreative_id、またはその両方も渡す必要があります。 競合除外の詳細については、「 競合除外」を参照してください。
必須: いいえ
advertiser_id competitive_exclusions_enabled=trueが渡されたら、クリエイティブに競合するブランドまたはオファー カテゴリがあるため、結果の予測に含めないようにする広告主 ID を含むこのフィールドも渡す必要があります。 競合除外の詳細については、「 競合除外」を参照してください。
必須: いいえ。クエリ文字列で competitive_exclusions_enabled も渡されない限り。
creative_id competitive_exclusions_enabled=trueが渡された場合は、競合するブランドまたはオファーのカテゴリを持つクリエイティブ ID を持つこのフィールドも渡す必要があるため、結果の予測に含めないようにする必要があります。 競合除外の詳細については、「 競合除外」を参照してください。
必須: いいえ。クエリ文字列で competitive_exclusions_enabled も渡されない限り。
line_item_exclusions 予測から除外するライン アイテム ID のコンマ区切りのリスト。
必須: いいえ
dynamic_timeout 試行回数 (既定値は 1)
必須: いいえ
dynamic_attempts 試用版ごとに待機する時間 (既定値は 2 分、運用環境では最小 10 秒)
必須: いいえ
split_breakout split_breakout=trueが渡されるときは、スプリット レベルの詳細も渡す必要があります。 これにより、個々の分割とライン アイテム全体で分割された予測が返されます。

メモ: GDALI は分割をサポートします。従来の GDLI では分割はサポートされていません。

必須: いいえ

予測の競合 - マルチ サービス: JSON フィールド

予測の競合 - マルチ サービス: 全般

フィールド 種類 説明
line_item object 予測する明細項目に関連付けられているフライト日とプロファイル情報。
必須: はい
campaigns オブジェクトの配列 品目のキャンペーン情報を含むオブジェクトの配列。

メモ: 従来の GDLI はキャンペーンをサポートします。GDALI はキャンペーンをサポートしていません。 従来の GDLI に複数の子キャンペーンがない場合は、空の配列 (campaigns: []) を渡します。

必須: レガシ GDLI の場合ははいですが、空でもかまいません。 広告申込情報にキャンペーンと分割の両方を含めることはできません。
splits オブジェクトの配列 品目の分割情報を含むオブジェクトの配列。

メモ: GDALI は分割をサポートします。従来の GDLI では分割はサポートされていません。 GDALI に分割がない場合は、空の配列 (splits: []) を渡します。 詳細については、「 サービスの分割」を参照してください。

必須: GDALI の場合ははいですが、空でもかまいません。 広告申込情報にキャンペーンと分割の両方を含めることはできません。

予測の競合 - マルチ サービス: 明細項目

フィールド 種類 説明
start_date string フライトの開始日。
必須: はい
end_date string フライトの終了日。
必須: はい
timezone 列挙 広告申込情報がアクティブなタイムゾーン。 詳細と使用できる値については、「 API タイムゾーン」を参照してください。
必須: いいえ。 指定しない場合は、メンバーの既定のタイムゾーンが使用されます。
profile object プロファイル オブジェクトのインスタンス。 このオブジェクトを使用して、広告申込情報のターゲティングを定義します。 使用可能なフィールドの一覧と説明については、「 プロファイル サービス」を参照してください。 Forecasting に固有のプロファイル設定については、上記の Forecasting Profiles を参照してください。
このフィールドは必須ですが、空のオブジェクトを渡すことができます。 ただし、空のプロファイルを渡すということは、広告申込情報にターゲティングを適用せずに予測していることを意味します。
必須: はい

予測の競合 - マルチ サービス: キャンペーン

注:

従来の GDLI はキャンペーンをサポートします。GDALI はキャンペーンをサポートしていません。

フィールド 種類 説明
name string キャンペーンの名前。 1 つのライン アイテム内で複数のキャンペーンを予測できるため、名前は各ライン アイテム内で一意である必要があります。
必須: はい
profile object プロファイル オブジェクトのインスタンス。 このオブジェクトを使用して、広告申込情報のターゲティングを定義します。 使用可能なフィールドの一覧と説明については、「 プロファイル サービス」を参照してください。 Forecasting に固有のプロファイル設定については、上記の Forecasting Profiles を参照してください。
必須: はい
start_date string キャンペーンの開始日。
必須: いいえ
end_date string キャンペーンの終了日。
必須: いいえ
timezone 列挙 広告申込情報がアクティブなタイムゾーン。 詳細と使用できる値については、「 API タイムゾーン」を参照してください。
必須: いいえ。 指定しない場合は、メンバーの既定のタイムゾーンが使用されます。
creatives オブジェクトの配列 キャンペーンに関連付けられているクリエイティブ。 クリエイティブを含める場合は、少なくともクリエイティブ ID を含める必要があります。 使用可能なフィールドの一覧と説明については、「 クリエイティブ サービス」を参照してください。
必須: いいえ

従来の GDLI の例 - 複数のキャンペーンを含む従来の GDLI の在庫競合を確認する

提案されたターゲティング設定に基づいて、複数の子キャンペーンの在庫競合予測を確認するには、次に示す形式で JSON ファイルを作成します。

{
  "line_item": {
    "start_date": "2019-02-10",
    "end_date": "2019-03-01",
    "profile": {
      "country_targets": [
        {
          "id": 169
        }
      ],
      "country_action": "include"
    }
  },
  "campaigns": [
    {
      "name": "foo",
      "start_date": "2019-02-11",
      "end_date": "2019-02-15",
      "profile": {
        "daypart_targets": [
          {
            "day": "tuesday",
            "start_hour": 8,
            "end_hour": 20
          }
        ]
      }
    },
    {
      "name": "bar",
      "start_date": "2019-02-20",
      "end_date": "2019-02-28",
      "profile": {
        "browser_targets": [
          {
            "id": 11
          }
        ],
        "browser_action": "include"
      }
    }
  ]
}      

複数のキャンペーンがない場合は、単にキャンペーンの空の配列を渡します。

{
  "line_item": {
    "start_date": "2019-02-10",
    "end_date": "2019-03-01",
    "profile": {
      "country_targets": [
        {
          "id": 169
        }
      ],
      "country_action": "include"
    }
  },
  "campaigns": [
  ]
}

次に、次のようにサービスに POST します。

curl --silent  -b cookies -X POST -d '/tmp/forecast-contention-multi.json' "https://api.appnexus.com/forecast-contention-multi"
      

次の形式で JSON が返されます。

{
   "response" : {
      "num_elements" : 100,
      "count" : 2,
      "start_element" : 0,
      "status" : "OK",
      "contention" : [
         {
            "competing_impressions" : 25083480,
            "line_item" : {
               "status" : "live",
               "advertiser_id" : 123456,
               "start_date" : "2019-01-19 00:00:00",
               "revenue_type" : "cpm",
               "profile_id" : 50058150,
               "member_id" : 1234,
               "name" : "carrot juice airplane",
               "delivery_goal" : {
                  "reserved" : true,
                  "type" : "percentage",
                  "disallow_non_guaranteed" : true,
                  "percentage" : 100
               },
               "id" : 123457,
               "revenue_value" : 0,
               "currency" : "EUR",
               "priority" : 19,
               "state" : "active",
               "end_date" : "2019-12-31 23:59:59"
            }
         },
         {
            "line_item" : {
               "start_date" : "2019-01-19 00:00:00",
               "revenue_type" : "cpm",
               "status" : "live",
               "advertiser_id" : 123456,
               "delivery_goal" : {
                  "reserved" : true,
                  "percentage" : 100,
                  "type" : "percentage",
                  "disallow_non_guaranteed" : true
               },
               "currency" : "EUR",
               "revenue_value" : 0,
               "id" : 123456,
               "state" : "active",
               "priority" : 19,
               "end_date" : "2019-12-31 23:59:59",
               "profile_id" : 6,
               "name" : "lightning battery horse staple",
               "member_id" : 1234
            },
            "competing_impressions" : 88514063
         }
      ]
   }
}
{
   "response" : {
      "num_elements" : 100,
      "count" : 2,
      "start_element" : 0,
      "status" : "OK",
      "contention" : [
         {
            "competing_impressions" : 25083480,
            "line_item" : {
               "status" : "live",
               "advertiser_id" : 123456,
               "start_date" : "2019-01-19 00:00:00",
               "revenue_type" : "cpm",
               "profile_id" : 50058150,
               "member_id" : 1234,
               "name" : "carrot juice airplane",
               "delivery_goal" : {
                  "reserved" : true,
                  "type" : "percentage",
                  "disallow_non_guaranteed" : true,
                  "percentage" : 100
               },
               "id" : 123457,
               "revenue_value" : 0,
               "currency" : "EUR",
               "priority" : 19,
               "state" : "active",
               "end_date" : "2019-12-31 23:59:59"
            }
         },
         {
            "line_item" : {
               "start_date" : "2019-01-19 00:00:00",
               "revenue_type" : "cpm",
               "status" : "live",
               "advertiser_id" : 123456,
               "delivery_goal" : {
                  "reserved" : true,
                  "percentage" : 100,
                  "type" : "percentage",
                  "disallow_non_guaranteed" : true
               },
               "currency" : "EUR",
               "revenue_value" : 0,
               "id" : 123456,
               "state" : "active",
               "priority" : 19,
               "end_date" : "2019-12-31 23:59:59",
               "profile_id" : 6,
               "name" : "lightning battery horse staple",
               "member_id" : 1234
            },
            "competing_impressions" : 88514063
         }
      ]
   }
}

GDALI の例 - 分割のある GDALI のインベントリ競合を確認する

提案されたターゲティング設定に基づいて分割全体の在庫競合予測を確認するには、次に示す形式で JSON ファイルを作成します:

{
    "line_item": {
        "ad_types": [
            "banner"
        ],
        "start_date": "2022-04-28 00:00:00",
        "end_date": "2022-05-01 23:59:59",
        "profile": {
            "country_targets": [
                {
                    "id": 123,
                    "action": "include",
                }
            ],
            "size_targets": {
                "width": 190,
                "height": 213
            },
            {
                "width": 728,
                "height": 90
            },
            "id": null,
            "advertiser_id": 5878213,
            "graph_id": null
        },
        "creatives": [],
        "roadblock": null
    },
    "splits": [
        {
            "id": 111111111,
            "conditions": []
            "is_default": false,
            "active": true,
            "order": 1,
            "name": "Name1",
            "allocation_strategy": "unconstrained",
            "creatives": []
        },
        {
            "id": 222222222,
            "conditions": []
            "is_default": false,
            "active": true,
            "order": 2,
            "name": "Name2",
            "allocation_strategy": "unconstrained",
            "creatives": []
        },
        {
            "id": 333333333,
            "is_default": true,
            "active": false,
            "order": 5,
            "name": "Default",
            "allocation_strategy": "unconstrained",
            "creatives": []
        }
    ]
}

次に、次のようにサービスに POST します。

curl --silent  -b cookies -X POST -d '/tmp/forecast-contention-multi.json' "https://api.appnexus.com/forecast-contention-multi"
      

次の形式で JSON が返されます。

{
   "response" : {
      "num_elements" : 100,
      "count" : 2,
      "start_element" : 0,
      "status" : "OK",
      "contention" : [
         {
            "competing_impressions" : 25083480,
            "line_item" : {
               "status" : "live",
               "advertiser_id" : 123456,
               "start_date" : "2019-01-19 00:00:00",
               "revenue_type" : "cpm",
               "profile_id" : 50058150,
               "member_id" : 1234,
               "name" : "carrot juice airplane",
               "delivery_goal" : {
                  "reserved" : true,
                  "type" : "percentage",
                  "disallow_non_guaranteed" : true,
                  "percentage" : 100
               },
               "id" : 123457,
               "revenue_value" : 0,
               "currency" : "EUR",
               "priority" : 19,
               "state" : "active",
               "end_date" : "2019-12-31 23:59:59"
            }
         },
         {
            "line_item" : {
               "start_date" : "2019-01-19 00:00:00",
               "revenue_type" : "cpm",
               "status" : "live",
               "advertiser_id" : 123456,
               "delivery_goal" : {
                  "reserved" : true,
                  "percentage" : 100,
                  "type" : "percentage",
                  "disallow_non_guaranteed" : true
               },
               "currency" : "EUR",
               "revenue_value" : 0,
               "id" : 123456,
               "state" : "active",
               "priority" : 19,
               "end_date" : "2019-12-31 23:59:59",
               "profile_id" : 6,
               "name" : "lightning battery horse staple",
               "member_id" : 1234
            },
            "competing_impressions" : 88514063
         }
      ]
   }
}