概要
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
}
}