次の方法で共有


GraphQL サービス

概要

GraphQLは API のクエリ言語であり、必要なデータのみを要求できるランタイムです。 これにより、正確で効率的なデータ取得が提供され、多くの場合、Representational State Transfer API (REST) に関連するオーバーヘッドが軽減されます。

GraphQLでは、次のような REST ベースのアーキテクチャのいくつかの制限にも対処します。

  • 1 つのクエリで必要なすべてのデータを取得できるようにします。
  • 要求したフィールドのみを返すことで、過剰フェッチを防ぎます。
  • パフォーマンスを向上させるための複数リソース要求のサポート。

GraphQLは、必要な柔軟性を維持しながら、より安全でモダンでスケーラブルなアクセス パターンを確保します。

前提条件

このセットアップを開始する前に、参照先ページで説明されている基本的な概念を確認してください。

  • API はじめに - テスト環境、使用制約、実行コマンド、フィルター処理、並べ替えなどの API セマンティクス、推奨されるベスト プラクティスについて説明します。
  • 認証サービス - API サービスを使用する場合は、常に最初に認証を完了します。 認証が完了したら、今後の要求のためにトークンを Cookie ファイルに書き込みます。

認証

認証の詳細については、「 Yield Analytics API - 認証プロセス」を参照してください。

コンテンツ タイプ

Service REST API は現在、次のコンテンツ タイプをサポートするように設計されています。

  • JSON - using Content-type: application/json

目的のコンテンツ タイプを選択することは、API 開発者がケースバイケースで行う必要がある選択です。 API 機能は、コンテンツ タイプ間で対称的です。 API 開発者は、HTTP GET または POST メソッド パラメーターで、または AJAX または HTTP クライアント ライブラリを使用して、目的のコンテンツ タイプを指定できます。

エラー チェックと状態コード

API 開発者は、サービス REST API から返される HTTP 応答コードをチェックして、API 呼び出しから伝達されたエラーを検出する必要があります。 サービスの呼び出しが成功すると、200 個の範囲応答コードが生成されます。 400 および 500 の範囲の http 応答はエラーを示します。 特定の応答コードとテキストは、API の BETA 開発中に変更される可能性がありますが、範囲は変更されません。

機密性

機密性は、Secure Socket Layer ベースの通信を使用して Yield Analytics API と対話することで維持されます。 API 開発者は、可能な限り HTTP セキュリティで保護されていない通信よりも HTTPS の使用を好む必要があります。 Web ブラウザー コンテキストの外部で開発するときに、SSL 経由で HTTP を有効にする方法については、HTTP クライアント ライブラリを参照してください。

REST API

HTTP メソッド エンドポイント 説明
POST https://api.appnexus.com/imf/api/v1/rest/graphql 選択したフィルター条件に従って製品名と ID の一覧を取得します。
POST https://api.appnexus.com/imf/api/v1/rest/graphql ファイルのアップロードを使用して、複数の製品を作成、変更、または更新します。
POST https://api.appnexus.com/imf/api/v1/rest/graphql 単純なクエリ (製品 ID/名前/グループ) または動的ターゲット式を使用して、製品の重複と容量の関係を分析します。
POST https://api.appnexus.com/imf/api/v1/rest/graphql 手動予測調整 (MFA) の管理 - 広告在庫容量の予測の上書きを一覧表示、追加、編集、削除します。

Paths

製品一覧

Product Listing サービスは、適用したフィルターに基づいて製品名と ID を取得します。 選択した条件を満たす製品のみが返され、製品メタデータの効率的なナビゲーションとダウンストリームの使用が可能になります。

JSON フィールド

パラメーター フィールド 説明
reportType string 必須
生成するレポートの種類を指定します。 このフィールドには、次の一覧の定数のいずれかが含まれている必要があります。
- ALL_CUSTOM_PRODUCTS
- ACTIVE_CUSTOM_PRODUCTS
- ALL_REPORTING_PRODUCTS
- ACTIVE_REPORTING_PRODUCTS
- ALL_SEASONAL_PRODUCTS
- ACTIVE_SEASONAL_PRODUCTS
- ALL_RATE_CARD_PRODUCTS
- ACTIVE_RATE_CARD_PRODUCTS
- PRODUCTS_BY_NAME
- ACTIVE_PRODUCTS_BY_NAME
- PRODUCTS_BY_CHARACTERISTICS
- PRODUCT_GROUP
- ACTIVE_PRODUCT_GROUP
- ACTIVE_PRODUCTS_BY_CHARACTERISTICS
startDate string 必須です。
レポート データの開始日。
endDate string レポート データの終了日。
メモ: 指定しない場合は、 startDateと同じ日付が選択されます。
周期 integer 結果の頻度または粒度を定義します。 次のいずれかの値を使用できます。
-毎日
-毎 週
-毎月
-四半期
-年次
-すべての
特性 string 製品の仕様またはプロパティを記述する主要な属性の一覧。
メモ: report_typeが ACTIVE_PRODUCTS_BY_CHARACTERISTICS または PRODUCTS_BY_CHARACTERISTICS
names string 個々の製品の人間が判読できる名前。
メモ: report_typeが ACTIVE_PRODUCTS_BY_NAME または PRODUCTS_BY_NAME
productGroupNames string 製品が属する論理グループまたはカテゴリ。
メモ: report_typeが ACTIVE_PRODUCT_GROUP または PRODUCT_GROUP
cURL要求の例

アクティブと非アクティブの両方のすべての製品で、製品の種類が [カスタム] に設定されている - ALL_CUSTOM_PRODUCTS

$ curl 'https://api.appnexus.com/imf/api/v1/rest/graphql'
{
  query {
    getProductListing(
      reportType: ALL_CUSTOM_PRODUCTS
      startDate: "2025-10-01"
      periodicity: DAILY
    ) {
      productId
      productName
    }
  }
}

製品の種類が [カスタム] に設定されているアクティブな製品 - ACTIVE_CUSTOM_PRODUCTS

注:

すべてのクエリ応答は、異なるバリエーションのサンプル回答を使用するのではなく、1 つの一貫性のある形式に従います。

$ curl 'https://api.appnexus.com/imf/api/v1/rest/graphql'
{
  query {
    getProductListing(
      reportType: ACTIVE_CUSTOM_PRODUCTS
      startDate: "2025-10-01"
      periodicity: DAILY
    ) {
      productId
      productName
    }
  }
}

製品の種類がレポート - ALL_REPORTING_PRODUCTSに設定されているすべての製品 (アクティブと非アクティブの両方)

$ curl 'https://api.appnexus.com/imf/api/v1/rest/graphql'
{
  query {
    getProductListing(
      reportType: ALL_REPORTING_PRODUCTS
      startDate: "2025-10-01"
      periodicity: DAILY
    ) {
      productId
      productName
    }
  }
}

製品の種類が [レポート] に設定されているすべてのアクティブな製品 - ACTIVE_REPORTING_PRODUCTS

$ curl 'https://api.appnexus.com/imf/api/v1/rest/graphql'
{
  query {
    getProductListing(
      reportType: ACTIVE_REPORTING_PRODUCTS
      startDate: "2025-10-01"
      periodicity: DAILY
    ) {
      productId
      productName
    }
  }
}

製品の種類が季節モデルに設定されているすべての製品 (アクティブと非アクティブの両方) - ALL_SEASONAL_PRODUCTS

$ curl 'https://api.appnexus.com/imf/api/v1/rest/graphql'
{
  query {
    getProductListing(
      reportType: ALL_SEASONAL_PRODUCTS
      startDate: "2025-10-01"
      periodicity: DAILY
    ) {
      productId
      productName
    }
  }
}

製品の種類が [季節モデル] に設定されているアクティブな製品 - ACTIVE_SEASONAL_PRODUCTS

$ curl 'https://api.appnexus.com/imf/api/v1/rest/graphql'
{
  query {
    getProductListing(
      reportType: ACTIVE_SEASONAL_PRODUCTS
      startDate: "2025-10-01"
      periodicity: DAILY
    ) {
      productId
      productName
    }
  }
}

アクティブと非アクティブの両方のすべての製品で、製品の種類が [レートカード] に設定されている - ALL_RATE_CARD_PRODUCTS

$ curl 'https://api.appnexus.com/imf/api/v1/rest/graphql'
{
  query {
    getProductListing(
      reportType: ALL_RATE_CARD_PRODUCTS
      startDate: "2025-10-01"
      periodicity: DAILY
    ) {
      productId
      productName
    }
  }
}

製品の種類が [レートカード] に設定されているすべてのアクティブな製品 - ACTIVE_RATE_CARD_PRODUCTS

$ curl 'https://api.appnexus.com/imf/api/v1/rest/graphql'
{
  query {
    getProductListing(
      reportType: ACTIVE_RATE_CARD_PRODUCTS
      startDate: "2025-10-01"
      periodicity: DAILY
    ) {
      productId
      productName
    }
  }
}

すべての製品 (アクティブと非アクティブの両方) が名前で一覧表示されます – PRODUCTS_BY_NAME

注:

名前は、この要求の必須フィールドです。

$ curl 'https://api.appnexus.com/imf/api/v1/rest/graphql'
{
  query {
    getProductListing(
      reportType: PRODUCTS_BY_NAME
      names: ["Display Banner 728x90", "Video Pre-Roll 30s"]
      startDate: "2025-10-01"
      periodicity: DAILY
    ) {
      productId
      productName
    }
  }
}

名前で一覧表示されているすべてのアクティブな製品 - ACTIVE_PRODUCTS_BY_NAME

注:

名前は、この要求の必須フィールドです。

$ curl 'https://api.appnexus.com/imf/api/v1/rest/graphql'
{
  query {
    getProductListing(
      reportType: ACTIVE_PRODUCTS_BY_NAME
      names: ["Display Banner 728x90", "Video Pre-Roll 30s"]
      startDate: "2025-10-01"
      periodicity: DAILY
    ) {
      productId
      productName
    }
  }
}

指定した特性と一致するすべての製品 (アクティブと非アクティブの両方) - PRODUCTS_BY_CHARACTERISTICS

注:

characteristics フィールドは、この要求に必要です。 配列内の値は AND ロジックを使用して評価されます。 例: WHERE size="780x320" AND duration=30

$ curl 'https://api.appnexus.com/imf/api/v1/rest/graphql'
{
  query {
    getProductListing(
      reportType: PRODUCTS_BY_CHARACTERISTICS
      characteristics: ["size=780x320", "duration=30"]
      startDate: "2025-10-01"
      periodicity: DAILY
    ) {
      productId
      productName
    }
  }
}

指定した特性に一致するすべてのアクティブな製品 - ACTIVE_PRODUCTS_BY_CHARACTERISTICS

注:

characteristics フィールドは、この要求に必要です。 配列内の値は AND ロジックを使用して評価されます。 例: WHERE size="780x320" AND duration=30

$ curl 'https://api.appnexus.com/imf/api/v1/rest/graphql'
{
  query {
    getProductListing(
      reportType: ACTIVE_PRODUCTS_BY_CHARACTERISTICS
      characteristics: ["size=780x320", "duration=30"]
      startDate: "2025-10-01"
      periodicity: DAILY
    ) {
      productId
      productName
    }
  }
}

指定した製品グループを持つ、アクティブと非アクティブの両方のすべての製品 - PRODUCT_GROUP

注:

productGroupNames は、この要求に必須です。

$ curl 'https://api.appnexus.com/imf/api/v1/rest/graphql'
{
  query {
    getProductListing(
      reportType: PRODUCT_GROUP
      productGroupNames: ["Placement", "Video Inventory"]
      startDate: "2025-10-01"
      periodicity: DAILY
    ) {
      productId
      productName
    }
  }
}

指定した製品グループを持つすべてのアクティブな製品 - ACTIVE_PRODUCT_GROUP

注:

productGroupNames は、この要求に必須です。

$ curl 'https://api.appnexus.com/imf/api/v1/rest/graphql'
{
  query {
    getProductListing(
      reportType: ACTIVE_PRODUCT_GROUP
      productGroupNames: ["Placement", "Video Inventory"]
      startDate: "2025-10-01"
      periodicity: DAILY
    ) {
      productId
      productName
    }
  }
}
応答cURL例
{
  "data": {
    "getProductListing": [
      {
        "productId": "11",
        "productName": "desktop native placement slot 1 - 11"
      },
      {
        "productId": "12",
        "productName": "native_featured_discount_details_page_tracker - 111"
      },
      {
        "productId": "-13",
        "productName": "Analyzed Network"
      },
      {
        "productId": "14",
        "productName": "hour_17"
      },
      {
        "productId": "15",
        "productName": "desktop native placement slot 2 - 1111"
      },
      {
        "productId": "-16",
        "productName": "Non-Analyzed Network"
      },
      {
        "productId": "17",
        "productName": "tracker - 112"
      }
    ]
  }
}

ファイル ベースの製品の作成

ファイル ベースの製品作成機能を使用すると、ファイル アップロード ワークフローを使用して製品を一括で作成または更新できます。

製品を作成または更新するには:

  • 必要な製品データを含む .txt ファイルを作成します。 サンプルの .txt ファイルについては、こちらをクリックしてください。
  • 指定されたエンドポイントを介してファイルをアップロードします。
  • アップロードされると、ファイルの内容が適切なデータベース テーブルに保存されます。
  • その後、データが処理され、次の夜間処理実行時に製品が即座に作成または更新されます。

JSON フィールド

パラメーター フィールド 説明
Productid string アプリケーションからの有効な製品 ID。
メモ: このフィールドは、既存の製品が更新されているファイル内でのみ必要です。
mutation UploadFile string サーバーまたは API エンドポイントにファイルをアップロードするために使用されるGraphQLの変更操作を参照します。
validateOnly ブール値 true に設定すると、GraphQLアプリはテキスト ファイルのみを検証します。 テキスト ファイルからテーブルにデータが挿入されないため、製品の作成は行われません。 このプロセスは、テキスト ファイル内のデータを検証するためだけに使用されます。 false に設定すると、製品は次の夜間処理実行時に作成されるキューに入れられます。 ミューテーションや UploadFile など、クエリ内の他のフィールドは変更されず、クエリでは常に同じになります。
メモ: 許可される入力は次のみです。
- validateOnly: true または false
- processNow: true または false
- 0: file
processNow ブール値 true に設定すると、製品作成ジョブによって、実際のテーブル内の製品の作成が直ちにトリガーされます。 これにより、次の処理実行を待機する代わりに、製品がすぐに作成されます。 false に設定すると、製品は次の夜間処理実行時に作成されるキューに入れられます。 ミューテーションや UploadFile など、クエリ内の他のフィールドは変更されません。
メモ: 許可される入力は次のみです。
- validateOnly: true または false
- processNow: true または false
- 0: file
マップ string アップロードされたファイルを受け取るGraphQL操作の変数を参照します。
メモ: ここでの値は常に { "0": ["variables.input.file"] }
cURL要求の例

validateOnly":true,"processNow":false

$ curl 'https://api.appnexus.com/imf/api/v1/rest/graphql' \
  -H 'Authorization: Bearer <token>' \
  -H 'Content-Type: multipart/form-data' \
  operations: {"query":"mutation UploadFile($input: CustomSeasonalModelInput!) { uploadCustomSeasonalModels(input: $input) { success messages { lineNumber message } } }","variables":{"input":{"file":null,"validateOnly":true,"processNow":false}}}
  map: { "0": ["variables.input.file"] }
  0: upload the file here

validateOnly":false,"processNow":true

curl `https://api.appnexus.com/imf/api/v1/rest/graphql`
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: multipart/form-data' \
operations: {"query":"mutation UploadFile($input: CustomSeasonalModelInput!) { uploadCustomSeasonalModels(input: $input) { success messages { lineNumber message } } }","variables":{"input":{"file":null,"validateOnly":false,"processNow":true}}}
map: { "0": ["variables.input.file"] }
0: upload the file here

validateOnly":false,"processNow":false

curl `https://api.appnexus.com/imf/api/v1/rest/graphql`
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: multipart/form-data' \
operations: {"query":"mutation UploadFile($input: CustomSeasonalModelInput!) { uploadCustomSeasonalModels(input: $input) { success messages { lineNumber message } } }","variables":{"input":{"file":null,"validateOnly":false,"processNow":false}}}
map: { "0": ["variables.input.file"] }
0: upload the file here

応答cURL例

validateOnly":false,"processNow":true

{ 
  "data": { 
    "uploadCustomSeasonalModels": { 
      "success": true, 
      "messages": [ 
      { 
        "lineNumber": null, 
            "message": "[INFO] Loaded 1 lines. Checking Line Operations...”        
                           }, 
      { 
        "lineNumber": 1, 
        "message": "[INFO] Line parsed successfully" 
      }, 
      { 
        "lineNumber": null, 
        "message": "[INFO] Line parsed successfully" 
      }, 
      { 
        "lineNumber": null, 
        "message": "[INFO] *** 1 products to process ***" 
      }, 
      { 
        "lineNumber": null, 
        "message": "[INFO] Validation completed successfully. 1 line processed." 
      }, 
      { 
        "lineNumber": null, 
        "message": "[INFO] Products have been successfully created" 
      }, 
      { 
        "lineNumber": null, 
        "message": "[INFO] PDI job triggered successfully " 
      } 
     ] 
    } 
  } 
}

validateOnly":false,"processNow":false

{
  "data": {
    "uploadCustomSeasonalModels": {
      "success": true,
      "messages": [
        {
          "lineNumber": null,
          "message": "[INFO] Loaded 1 lines. Checking Line Operations..."
        },
        {
          "lineNumber": 1,
          "message": "[INFO] Line parsed successfully"
        },
        {
          "lineNumber": null,
          "message": "[INFO] *** 1 products to process ***"
        },
        {
          "lineNumber": null,
          "message": "[INFO] Validation completed successfully. 1 lines processed."
        },
        {
          "lineNumber": null,
          "message": "[INFO] Products have been successfully queued for creation"
        }
      ]
    }
  }
}

製品または重複の分析クエリ

Yield Analytics の製品または重複分析クエリでは、製品間でインプレッションがどのように重なるかを調べます。 これらの重複するインプレッションを分析することで、選択したフォーカス製品、または一連のターゲット属性と、それに重複する製品との間でインプレッションがどのように共有されるかを比較できます。

このサービスでは、次の 2 つのクエリ メソッドがサポートされています。

  • 単純なクエリ: 製品名または ID を他の製品名または ID と比較します。
  • 動的クエリ: ターゲット式を製品 ID と比較します。

Json フィールド

パラメーター フィールド 説明
focusProductIds 配列 重複分析が要求される主な製品を表す製品 ID の配列。
focusProductNames 配列 フォーカス製品 ID に対応する名前の配列。 .
focusProductGroupNames string フォーカス製品が属する製品グループ (バンドルやカテゴリなど) の名前。
focusProductIdsOrTargetExpressions string これにより、製品 ID を一覧表示するか、ターゲット設定式を指定することによって、重複分析の焦点を定義できます。
overlapsToAnalyzeProductIds 配列 重複するフォーカス製品と比較する必要がある製品 ID の配列。
overlapsToAnalyzeProductNames string 関連する製品 ID に対応する名前。
overlapsToAnalyzeProductGroupNames string 関連製品の製品グループの名前。
startDate string 重複分析の開始日 (形式: YYYY-MM-DD)。
endDate string 重複分析の終了日 (形式: YYYY-MM-DD)。
RELATED_PRODUCT_ID string 重複分析のためにフォーカス製品と比較されている別の製品の一意識別子。
RELATED_PRODUCT_NAME string 重複比較の関連製品の名前。
FOCUS_PRODUCT_CAPACITY integer 同じ日付範囲内の関連製品の使用可能なインプレッション容量の合計。
RELATED_PRODUCT_CAPACITY integer 同じ日付範囲内の関連製品の使用可能なインプレッション容量の合計。
OVERLAPPING_CAPACITY integer 両方の製品が共有するインプレッションの数 (つまり、両方のターゲット セットに適格なインベントリ)。
PERCENT_OVERLAP 浮動小数点数 フォーカス製品と重複する関連製品の容量の割合。
TargetExpressions string IMF/Yield Analytics と広告予測のコンテキストで製品またはターゲットに適格な在庫を定義する一連のターゲット設定基準または条件。
PERCENT_OVERLAP_FOCUS 浮動小数点数 関連する製品と重複するフォーカス製品の容量の割合。
単純なクエリ

cURL要求の例

$ curl 'https://api.appnexus.com/imf/api/v1/rest/graphql'
{
  query {
    getOverlapAnalysis(
      focusProductIds: ["focusproduct ID"]
      overlapsToAnalyzeProductIds: ["product ID1", "productID2", "productID3"]
      startDate: "2025-12-15"
      endDate: "2025-12-18"
    ) {
      data {
        FOCUS_PRODUCT_ID
        FOCUS_PRODUCT_NAME
        RELATED_PRODUCT_ID
        RELATED_PRODUCT_NAME
        FOCUS_PRODUCT_CAPACITY
        RELATED_PRODUCT_CAPACITY
        OVERLAPPING_CAPACITY
        PERCENT_OVERLAP
        PERCENT_OVERLAP_FOCUS
      }
    }
  }
}

応答cURL例

{
  "data": {
    "getOverlapAnalysis": {
      "data": [
        {
          "FOCUS_PRODUCT_ID": "focus_product_id",
          "FOCUS_PRODUCT_NAME": "focus_product_name",
          "RELATED_PRODUCT_ID": "related_product_id1",
          "RELATED_PRODUCT_NAME": "related_product_name",
          "FOCUS_PRODUCT_CAPACITY": "focus_product_capacity",
          "RELATED_PRODUCT_CAPACITY": "related_product_capacity1",
          "OVERLAPPING_CAPACITY": "overlapping_capacity1",
          "PERCENT_OVERLAP": "percent_overlap",
          "PERCENT_OVERLAP_FOCUS": "percent_overlap_focus"
        },
        {
          "FOCUS_PRODUCT_ID": "focus_product_id",
          "FOCUS_PRODUCT_NAME": "focus_product_name",
          "RELATED_PRODUCT_ID": "related_product_id2",
          "RELATED_PRODUCT_NAME": "related_product_name",
          "FOCUS_PRODUCT_CAPACITY": "focus_product_capacity",
          "RELATED_PRODUCT_CAPACITY": "related_product_capacity2",
          "OVERLAPPING_CAPACITY": "overlapping_capacity2",
          "PERCENT_OVERLAP": "percent_overlap",
          "PERCENT_OVERLAP_FOCUS": "percent_overlap_focus"
        },
        {
          "FOCUS_PRODUCT_ID": "focus_product_id",
          "FOCUS_PRODUCT_NAME": "focus_product_name",
          "RELATED_PRODUCT_ID": "related_product_id3",
          "RELATED_PRODUCT_NAME": "related_product_name",
          "FOCUS_PRODUCT_CAPACITY": "focus_product_capacity",
          "RELATED_PRODUCT_CAPACITY": "related_product_capacity3",
          "OVERLAPPING_CAPACITY": "overlapping_capacity3",
          "PERCENT_OVERLAP": "percent_overlap",
          "PERCENT_OVERLAP_FOCUS": "percent_overlap_focus"
        }
      ]
    }
  }
}
動的クエリ

cURL要求の例

$ curl 'https://api.appnexus.com/imf/api/v1/rest/graphql'
{
  query {
    getOverlapAnalysis(
      focusProductIdsOrTargetExpressions: ["publisher in ('ABC')"]
      overlapsToAnalyzeProductNames: ["ProductName1", "ProductName2"]
      startDate: "2025-12-15"
      endDate: "2025-12-31"
    ) {
      data {
        FOCUS_PRODUCT_ID
        FOCUS_PRODUCT_NAME
        RELATED_PRODUCT_ID
        RELATED_PRODUCT_NAME
        FOCUS_PRODUCT_CAPACITY
        RELATED_PRODUCT_CAPACITY
        OVERLAPPING_CAPACITY
        PERCENT_OVERLAP
        PERCENT_OVERLAP_FOCUS
      }
    }
  }
}

応答cURL例

{
  "data": {
    "getOverlapAnalysis": {
      "data": [
        {
          "FOCUS_PRODUCT_ID": "focus_product_id1",
          "FOCUS_PRODUCT_NAME": "focus_product_name1",
          "RELATED_PRODUCT_ID": "related_product_id1",
          "RELATED_PRODUCT_NAME": "related_product_name1",
          "FOCUS_PRODUCT_CAPACITY": "focus_product_capacity1",
          "RELATED_PRODUCT_CAPACITY": "related_product_capacity1",
          "OVERLAPPING_CAPACITY": "overlapping_capacity1",
          "PERCENT_OVERLAP": "percent_overlap1",
          "PERCENT_OVERLAP_FOCUS": "percent_overlap_focus1"
        },
        {
          "FOCUS_PRODUCT_ID": "focus_product_id2",
          "FOCUS_PRODUCT_NAME": "focus_product_name2",
          "RELATED_PRODUCT_ID": "related_product_id2",
          "RELATED_PRODUCT_NAME": "related_product_name2",
          "FOCUS_PRODUCT_CAPACITY": "focus_product_capacity2",
          "RELATED_PRODUCT_CAPACITY": "related_product_capacity2",
          "OVERLAPPING_CAPACITY": "overlapping_capacity2",
          "PERCENT_OVERLAP": "percent_overlap2",
          "PERCENT_OVERLAP_FOCUS": "percent_overlap_focus2"
        }
      ]
    }
  }
}

手動予測調整 (MFA)

手動予測調整 (MFA) を使用すると、特定の製品のトラフィックに影響を与える特定のイベントの予測を 1 回限り変更できます。 GraphQL API では、次の MFA 操作がサポートされています。

  • MFA の一覧表示
  • MFA を追加する
  • 既存の MFA を編集する
  • MFA を削除する

JSON フィールド

パラメーター フィールド 説明
manualForecastAdjustmentId integer 手動予測調整エントリの一意の識別子。
name string 調整のわかりやすい名前 ("Holiday Boost Q4" など)。
Productid integer 調整が適用される製品の ID。
adjustmentStatus 文字列 現在の調整状態。 
含まれる値は次のとおりです。
- ACTIVE: 変更は、選択した日付に反映されます。
- INACTIVE: 調整状態を編集して "アクティブ" に設定するまで、変更は有効になりません。
adjustmentType string 適用される調整の種類を示します。使用可能な値は次のとおりです。
- 絶対: Yield Analytics で生成された予測に特定の数のインプレッションを加算または減算します。 入力した値を加算または減算することで、予測が変更されます。
- 相対: Yield Analytics で生成された予測に対するインプレッションの割合を加算または減算します。 入力した割合に基づいて予測が変更されます。
- 置換: Yield Analytics 予測を手動で指定された予測値に置き換えます。 入力した値を使用して、実際の予測値 (インプレッション数) が変更されます。
- 上限: 指定された予測値で Yield Analytics 予測を上限とします。 スパイク検出と軽減策を超えて、一定期間にわたってインプレッション 上限が作成されます。
adjustmentValue integer 調整の数値 (例: +10% または 500000 インプレッション)。
Creationdate string 調整が作成されたときのタイムスタンプ。
lastModifiedDate string 調整に対する最新の更新のタイムスタンプ。
fromDate string 調整の有効期間の開始日。
toDate string 調整の有効期間の終了日。
productName string 製品の人間が判読できる名前 (例: "ホームページ バナー")。
外部ID integer 他のシステム (OMS や広告サーバーなど) と統合するための外部参照 ID。
priority string 予測または配信における製品の優先順位を示します (高、中、低など)
cURL要求の例

すべての MFA の製品 ID フィルターなしを一覧表示する

$ curl 'https://api.appnexus.com/imf/api/v1/rest/graphql'
{
  "query": "query {
    "getManualForecastAdjustments": [
      {
        manualForecastAdjustmentId
        name
        productId
        adjustmentStatus
        adjustmentType
        adjustmentValue
        creationDate
        lastModifiedDate
        fromDate
        toDatex
        product: {
          productId
          productName
          externalId
          priority
        }
      },
      {
        manualForecastAdjustmentId
        name
        productId
        adjustmentStatus
        adjustmentType
        adjustmentValue
        creationDate
        lastModifiedDate
        fromDate
        toDate
        product: {
          productId
          productName
          externalId
          priority
        }
      }
    ]
  }"
}

製品 ID フィルターを使用してすべての MFA を一覧表示する

$ curl 'https://api.appnexus.com/imf/api/v1/rest/graphql'
{
  "query": "query {
    getManualForecastAdjustments(productId: \"538\") [
      {
        manualForecastAdjustmentId
        name
        productId
        adjustmentStatus
        adjustmentType
        adjustmentValue
        creationDate
        lastModifiedDate
        fromDate
        toDate
        product: {
          productId
          productName
          externalId
          priority
        }
      }
    ]
  }"
}

製品に新しい MFA を追加する

注:

productId は、新しい行を追加するために必要なフィールドです。

$ curl 'https://api.appnexus.com/imf/api/v1/rest/graphql'
{
  "query": "mutation {
    addManualForecastAdjustment (
      productId: 538,
      name: \"Test\",
      adjustmentStatus: \"Active\",
      adjustmentType: \"Absolute\",
      adjustmentValue: 1.0,
      fromDate: \"2025-12-21\",
      toDate: \"2025-12-25\"
    ) {
    manualForecastAdjustmentId
      productId
      adjustmentStatus
      adjustmentType
      adjustmentValue
      fromDate
      toDate
    }
  }"
}

MFA を編集する

注:

MFA を編集するときに、要求ペイロードにすべてのフィールドを含める必要はありません。 更新するフィールド (たとえば、adjustmentStatus) のみを指定し、他のすべてのフィールドを省略できます。 lastUpdatedDate フィールドを除き、既存のデータベース値は変更されません。 MFA を編集する場合は、次のフィールドが必要です。

  • manualForecastAdjustmentId
  • Productid
$ curl 'https://api.appnexus.com/imf/api/v1/rest/graphql'
{
  "query": "mutation {
    updateManualForecastAdjustment(
      manualForecastAdjustmentId: \"6c45e5e3-3759-463a-815f-0a2ad900f362\"
      productId: 538,
      name: \"Test MFA Edited\",
      adjustmentStatus: \"Active\",
      adjustmentType: \"Relative\",
      adjustmentValue: 100.0,
      fromDate: \"2025-10-25\",
      toDate: \"2025-10-26\"
    ) {
      manualForecastAdjustmentId
      productId
      adjustmentStatus
      adjustmentType
      adjustmentValue
      fromDate
      toDate
    }
  }"
}

MFA を削除する

注:

manualForecastAdjustmentId は、MFA を削除するために必要です。

$ curl 'https://api.appnexus.com/imf/api/v1/rest/graphql'
{
  mutation {
    deleteManualForecastAdjustment(manualForecastAdjustmentId: "111")
  }
} 
応答cURL例
{ 
  "data": { 
    "deleteManualForecastAdjustment": true 
  } 
}