Oharra
Baimena behar duzu orria atzitzeko. Direktorioetan saioa has dezakezu edo haiek alda ditzakezu.
Baimena behar duzu orria atzitzeko. Direktorioak alda ditzakezu.
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
}
}