Servicio GraphQL

Información general

GraphQL es un lenguaje de consulta para las API y un entorno de ejecución que le permite solicitar solo los datos que necesita. Proporciona una recuperación de datos precisa y eficaz y reduce la sobrecarga asociada a menudo con la API de transferencia de estado representacional (REST).

GraphQL también aborda varias limitaciones de las arquitecturas basadas en REST, entre las que se incluyen:

  • Permite obtener todos los datos necesarios en una sola consulta.
  • Impedir la captura excesiva devolviendo solo los campos que se solicitan.
  • Compatibilidad con solicitudes de varios recursos para mejorar el rendimiento.

GraphQL garantiza patrones de acceso más seguros, modernos y escalables, a la vez que conserva la flexibilidad que necesita.

Requisitos previos

Antes de iniciar esta configuración, revise los conceptos básicos descritos en las páginas a las que se hace referencia:

  • API Introducción: cubre los entornos de prueba, las restricciones de uso, la semántica de API, como la ejecución de comandos, el filtrado y la ordenación, así como los procedimientos recomendados.
  • Servicio de autenticación : complete siempre la autenticación primero al usar los servicios de API. Después de autenticarse, escriba el token en el archivo de cookies para futuras solicitudes.

Autenticación

Para obtener más información sobre la autenticación, consulte Yield Analytics API : Proceso de autenticación.

Tipos de contenido

La API REST del servicio está diseñada actualmente para admitir el siguiente tipo de contenido:

  • JSON: mediante Content-type: application/json

Seleccionar el tipo de contenido deseado es una opción que el desarrollador de la API debe tomar caso por caso. La funcionalidad de API es simétrica entre los tipos de contenido. Los desarrolladores de API pueden especificar el tipo de contenido deseado en los parámetros del método HTTP GET o POST o a través de su biblioteca cliente AJAX o HTTP.

Códigos de estado y comprobación de errores

Los desarrolladores de API deben comprobar los códigos de respuesta HTTP devueltos desde la API REST del servicio para detectar los errores propagados por las llamadas API. Las llamadas correctas al servicio generarán 200 códigos de respuesta de intervalo. Las respuestas HTTP de intervalo 400 y 500 denotan errores. Es probable que los códigos de respuesta y el texto específicos cambien durante el desarrollo beta de la API; sin embargo, los intervalos no.

Confidencialidad

La confidencialidad se mantiene mediante la comunicación basada en capa de socket seguro para interactuar con yield analytics API. Los desarrolladores de API deben preferir el uso de HTTPS en lugar de una comunicación HTTP insegura siempre que sea posible. Consulte la biblioteca cliente HTTP sobre cómo habilitar HTTP a través de SSL al desarrollar fuera de un contexto de explorador web.

API de REST

Método HTTP Endpoint Description
POST https://api.appnexus.com/imf/api/v1/rest/graphql Recupere los nombres de producto y las listas de identificadores según los criterios de filtro seleccionados.
POST https://api.appnexus.com/imf/api/v1/rest/graphql Cree, modifique o actualice varios productos mediante la carga de archivos.
POST https://api.appnexus.com/imf/api/v1/rest/graphql Analice las relaciones de superposición y capacidad del producto mediante consultas simples (identificadores de producto, nombres o grupos) o expresiones de destino dinámicas.
POST https://api.appnexus.com/imf/api/v1/rest/graphql Administrar ajustes de previsión manual (MFA): enumeración, adición, edición y eliminación de invalidaciones de previsión para la capacidad de inventario de anuncios.

Paths

Lista de productos

El servicio Lista de productos recupera los nombres de producto y los identificadores en función de los filtros que aplique. El sistema devuelve solo aquellos productos que cumplen los criterios seleccionados, lo que permite una navegación eficaz y el uso descendente de los metadatos del producto.

Campos JSON

Parámetro Campo Description
reportType string Required
Especifica el tipo de informe que se va a generar. Este campo debe tener una de las constantes de la lista siguiente:
- 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 Necesario.
Fecha de inicio de los datos del informe.
endDate string Fecha de finalización de los datos del informe.
NOTA: Si no se proporciona, elegirá la misma fecha startDateque .
periodicidad integer Define la frecuencia o granularidad de los resultados. Se puede usar cualquiera de los siguientes valores:
- DIARIO
- SEMANALMENTE
- MENSUAL
- TRIMESTRALMENTE
- ANUAL
-TODO
características string Lista de atributos clave que describen las especificaciones o propiedades del producto.
NOTA: Solo se requiere cuando report_type es ACTIVE_PRODUCTS_BY_CHARACTERISTICS o PRODUCTS_BY_CHARACTERISTICS
names string Nombres legibles para productos individuales.
NOTA: Solo se requiere cuando report_type es ACTIVE_PRODUCTS_BY_NAME o PRODUCTS_BY_NAME
productGroupNames string Agrupación lógica o categoría a la que pertenece el producto.
NOTA: Solo se requiere cuando report_type es ACTIVE_PRODUCT_GROUP o PRODUCT_GROUP
Solicitud cURL de ejemplo

Todos los productos, activos e inactivos, con el tipo de producto establecido en Personalizado: 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
    }
  }
}

Productos activos con el tipo de producto establecido en Personalizado: ACTIVE_CUSTOM_PRODUCTS

Nota:

Todas las respuestas de consulta siguen un formato único y coherente en lugar de usar diferentes variaciones de respuestas de ejemplo.

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

Todos los productos, activos e inactivos, con el tipo de producto establecido en Informes: 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
    }
  }
}

Todos los productos activos con el tipo de producto establecido en Informes: 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
    }
  }
}

Todos los productos, activos e inactivos, con el tipo de producto establecido en Modelo estacional: 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
    }
  }
}

Productos activos con el tipo de producto establecido en Modelo estacional: 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
    }
  }
}

Todos los productos, tanto activos como inactivos, con el tipo de producto establecido en Tarjeta de tasa: 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
    }
  }
}

Todos los productos activos con el tipo de producto establecido en Tarjeta de tarifa: 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
    }
  }
}

Todos los productos, tanto activos como inactivos, aparecen por nombre: PRODUCTS_BY_NAME

Nota:

Los nombres son un campo obligatorio para esta solicitud.

$ 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
    }
  }
}

Todos los productos activos enumerados por nombre: ACTIVE_PRODUCTS_BY_NAME

Nota:

Los nombres son un campo obligatorio para esta solicitud.

$ 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
    }
  }
}

Todos los productos, activos e inactivos, que coinciden con las características especificadas: PRODUCTS_BY_CHARACTERISTICS

Nota:

characteristics es necesario para esta solicitud. Los valores de la matriz se evalúan mediante la lógica AND. Por ejemplo: 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
    }
  }
}

Todos los productos activos que coinciden con las características especificadas: ACTIVE_PRODUCTS_BY_CHARACTERISTICS

Nota:

characteristics es necesario para esta solicitud. Los valores de la matriz se evalúan mediante la lógica AND. Por ejemplo: 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
    }
  }
}

Todos los productos, activos e inactivos, con el grupo de productos especificado: PRODUCT_GROUP

Nota:

productGroupNames es obligatorio para esta solicitud.

$ 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
    }
  }
}

Todos los productos activos con el grupo de productos especificado: ACTIVE_PRODUCT_GROUP

Nota:

productGroupNames es obligatorio para esta solicitud.

$ 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
    }
  }
}
Respuesta cURL de ejemplo
{
  "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"
      }
    ]
  }
}

Creación de productos basada en archivos

La característica Creación de productos basada en archivos le permite crear o actualizar productos de forma masiva mediante un flujo de trabajo de carga de archivos.

Para crear o actualizar productos:

  • Cree un archivo .txt que contenga los datos de producto necesarios. Haga clic aquí para obtener el archivo de .txt de ejemplo.
  • Cargue el archivo a través del punto de conexión designado.
  • Una vez cargado, el sistema guarda el contenido del archivo en la tabla de base de datos adecuada.
  • A continuación, se procesan los datos y los productos se crean al instante o se actualizan durante la siguiente ejecución de procesamiento nocturno.

Campos JSON

Parámetro Campo Description
productId string Identificador de producto válido de la aplicación.
NOTA: Este campo solo es necesario dentro del archivo, cuando se actualiza un producto existente.
mutación UploadFile string Hace referencia a una operación de mutación de GraphQL que se usa para cargar un archivo en un servidor o punto de conexión de API.
validateOnly booleano Si se establece en true, la aplicación GraphQL solo validará el archivo de texto. No insertará los datos del archivo de texto en la tabla, por lo que no se producirá la creación del producto. Este proceso es únicamente para validar los datos del archivo de texto. Si se establece en false, los productos se pondrán en cola para crearse durante la siguiente ejecución de procesamiento nocturno. Otros campos de la consulta, como mutación o UploadFile, no cambian y siempre serán los mismos en la consulta.
NOTA: Las únicas entradas permitidas son:
- validateOnly: true o false
- processNow: true o false
- 0: archivo
processNow booleano Si se establece en true, el trabajo de creación de productos desencadenará inmediatamente la creación de productos en la tabla real. En lugar de esperar a la siguiente ejecución de procesamiento, esto crea el producto inmediatamente. Si se establece en false, los productos se pondrán en cola para crearse durante la siguiente ejecución de procesamiento nocturno. Otros campos de la consulta, como mutación o UploadFile, no cambian.
NOTA: Las únicas entradas permitidas son:
- validateOnly: true o false
- processNow: true o false
- 0: archivo
mapa string Hace referencia a la variable de la operación GraphQL que debe recibir los archivos cargados.
NOTA: El valor aquí siempre será { "0": ["variables.input.file"] }
Solicitud cURL de ejemplo

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

Respuesta cURL de ejemplo

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"
        }
      ]
    }
  }
}

Consulta de análisis de producto o superposición

La consulta de análisis de producto o superposición de Yield Analytics examina cómo se superponen las impresiones entre los productos. Mediante el análisis de estas impresiones superpuestas, puede comparar cómo se comparten las impresiones entre un producto de enfoque seleccionado, o un conjunto de atributos de destino, y los productos que se superponen con él.

El servicio admite dos métodos de consulta:

  • Consultas simples: Compare los nombres de producto o los identificadores con otros nombres de producto o identificadores.
  • Consultas dinámicas: Compare una expresión de destino con un identificador de producto.

Campos json

Parámetro Campo Description
focusProductIds matriz Matriz de identificadores de producto que representan los productos principales para los que se solicita el análisis de superposición.
focusProductNames matriz Matriz de nombres correspondientes a los identificadores de producto de foco. .
focusProductGroupNames string Nombres de grupos de productos (por ejemplo, agrupaciones o categorías) a los que pertenecen los productos de foco.
focusProductIdsOrTargetExpressions string Le permite definir el foco de un análisis superpuesto mediante la enumeración de identificadores de producto o proporcionando una expresión de destino.
overlapsToAnalyzeProductIds matriz Matriz de identificadores de producto que se deben comparar con los productos de foco para superponerlos.
overlapsToAnalyzeProductNames string Nombres correspondientes a los identificadores de producto relacionados.
overlapsToAnalyzeProductGroupNames string Nombres de grupos de productos para los productos relacionados.
startDate string Fecha inicial del análisis de superposición (formato: AAAA-MM-DD).
endDate string Fecha final del análisis de superposición (formato: AAAA-MM-DD).
RELATED_PRODUCT_ID string Identificador único de otro producto que se está comparando con el producto de foco para el análisis de superposición.
RELATED_PRODUCT_NAME string Nombre del producto relacionado en la comparación de superposición.
FOCUS_PRODUCT_CAPACITY integer Capacidad total de impresión disponible para el producto relacionado dentro del mismo intervalo de fechas.
RELATED_PRODUCT_CAPACITY integer Capacidad total de impresión disponible para el producto relacionado dentro del mismo intervalo de fechas.
OVERLAPPING_CAPACITY integer El número de impresiones que comparten ambos productos (es decir, el inventario que califica para ambos conjuntos de destino).
PERCENT_OVERLAP float Porcentaje de la capacidad del producto relacionado que se superpone con el producto de foco.
TargetExpressions string Conjunto de criterios o condiciones de selección de destino que definen qué inventario califica para un producto o objetivo en el contexto de IMF/Yield Analytics y la previsión de anuncios.
PERCENT_OVERLAP_FOCUS float Porcentaje de la capacidad del producto de foco que se superpone con el producto relacionado.
Consulta simple

Solicitud cURL de ejemplo

$ 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
      }
    }
  }
}

Respuesta cURL de ejemplo

{
  "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"
        }
      ]
    }
  }
}
Consulta dinámica

Solicitud cURL de ejemplo

$ 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
      }
    }
  }
}

Respuesta cURL de ejemplo

{
  "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"
        }
      ]
    }
  }
}

Ajuste de previsión manual (MFA)

El ajuste de previsión manual (MFA) permite realizar cambios puntuales en la previsión de eventos específicos que afectarán al tráfico de un producto determinado. GraphQL API admite las siguientes operaciones de MFA:

  • Enumerar las MPA
  • Adición de una MFA
  • Edición de una MFA existente
  • Eliminación de una MFA

Campos JSON

Parámetro Campo Description
manualForecastAdjustmentId integer Identificador único de la entrada de ajuste de previsión manual.
name string Nombre descriptivo del ajuste (por ejemplo, "Holiday Boost Q4").
productId integer Id. del producto al que se aplica el ajuste.
adjustmentStatus string Estado de ajuste actual. 
Los valores incluidos son:
- ACTIVE: el cambio surte efecto en las fechas que seleccione.
- INACTIVO: El cambio no surte efecto hasta que edite y establezca el estado de ajuste en "activo".
adjustmentType string Indica el tipo de ajuste que se aplica, Los valores posibles son:
- Absoluto: agrega o resta un número específico de impresiones a la previsión generada por Yield Analytics. Cambia la previsión agregando o restando el valor especificado.
- Relativo: agrega o resta un porcentaje de impresiones a la previsión generada por Yield Analytics. Cambia la previsión en función del porcentaje especificado.
- Reemplazar: reemplaza la previsión de Yield Analytics por un valor de previsión proporcionado manualmente. Cambia el valor de previsión real (número de impresiones) con el valor especificado.
- Techo: limita la previsión de Yield Analytics a un valor de previsión proporcionado. Crea un límite de impresiones durante un período de tiempo, más allá de la detección y mitigación de picos.
adjustmentValue integer Valor numérico del ajuste (por ejemplo, +10 % o 500000 impresiones).
creationDate string Marca de tiempo cuando se creó el ajuste.
lastModifiedDate string Marca de tiempo de la actualización más reciente del ajuste.
fromDate string Fecha de inicio del período efectivo del ajuste.
toDate string Fecha de finalización del período efectivo del ajuste.
productName string Nombre legible del producto (por ejemplo, "Banner de página principal").
externalId integer Identificador de referencia externo para la integración con otros sistemas (por ejemplo, OMS o servidor de anuncios).
priority string Indica el nivel de prioridad del producto en previsión o entrega (por ejemplo, Alto, Medio, Bajo)
Solicitud cURL de ejemplo

Enumeración de todos los mfa sin filtro de id. de producto

$ 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
        }
      }
    ]
  }"
}

Enumeración de todos los MFA con filtro de id. de producto

$ 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
        }
      }
    ]
  }"
}

Adición de una nueva MFA en un producto

Nota:

productId es el campo necesario para agregar una nueva fila.

$ 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
    }
  }"
}

Edición de una MFA

Nota:

Al editar una MFA, no es necesario incluir todos los campos en la carga de la solicitud. Puede proporcionar solo los campos que desea actualizar(por ejemplo, adjustmentStatus) y omitir todos los demás. Los valores de base de datos existentes permanecen sin cambios, excepto para el campo lastUpdatedDate. Los campos siguientes son necesarios al editar una 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
    }
  }"
}

Eliminación de una MFA

Nota:

manualForecastAdjustmentId es necesario para eliminar una MFA.

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