Compartir a través de


Servicios de previsión de inventario

Nota:

Inventory Forecasting Services solo está disponible para los clientes de Xandr Ad Server.

Para que un publicador se comprometa a entregar con respecto al presupuesto de un anunciante, ese anunciante necesita una manera de predecir cuánto inventario está disponible para que el anunciante compre. Además, el publicador necesita una manera de detectar la contención de inventario. La contención del inventario se produce cuando hay varios artículos de línea garantizados que compiten por el mismo inventario. Comprender la contención es importante para que el publicador pueda tomar decisiones de priorización cuando se produzcan conflictos.

Los servicios de API descritos en esta página están diseñados para ayudarle a obtener información sobre la disponibilidad y la contención del inventario. El servicio de previsión Inventory-Multi y el servicio de previsión Contention-Multi son servicios totalmente compatibles.

Nota:

Los servicios de previsión de inventario admiten tanto los elementos de línea de entrega garantizados (GDLI) heredados como los artículos de línea aumentadas de entrega garantizada (GDALI). Lo siguiente le ayudará a realizar solicitudes de previsión adecuadas para estos tipos de elementos de línea diferentes:

  • GDLIs heredados
  • GDALIs
    • Las GDALIs admiten divisiones, pero no admiten campañas.
    • Al incluir detalles de división en la solicitud, puede usar el parámetro split_breakout=true de cadena de consulta para devolver una previsión desglosada por divisiones individuales, así como el elemento de línea en su conjunto.
    • La interfaz de usuario de GDALI usa Inventory Forecasting Services para su pie de página de previsión. Para obtener más información, consulte la sección "Previsión" de Create un elemento de línea aumentada de entrega garantizada.

Previsión del servicio de inventario múltiple

API de REST

Http (método) Endpoint Description
POST https://api.appnexus.com/forecast-inventory-multi Ejecute una previsión de inventario mediante un perfil hipotético.

Nota: El servicio forecast Inventory-Multi solo admite POST llamadas.

Parámetros de la cadena de consulta

Use los parámetros de cadena de consulta que se muestran en la tabla siguiente para ajustar la salida. Para obtener información sobre el uso de GDLI y GDALI heredados, consulte los ejemplos siguientes.

Campo Description
priority Cuando se pasa a la cadena de consulta en el formulario priority=x, el inventario de elementos de línea de prioridad inferior se desplazará y se considerará disponible.
Obligatorio: No
roadblocking_enabled Este campo especifica si varios tamaños de anuncio se agrupan en un bloque de carreteras. Cuando se pasan como roadblocking_enabled=true, se necesitan dos o más tamaños de anuncio para pasarse en la size_targets matriz del perfil. Para el bloqueo de carreteras de nivel de página, debe incluir los tamaños creativos maestros en el roadblock objeto en line_item. Para obtener más información sobre el bloqueo de carreteras, consulte Target Your Inventory with Roadblocking (Dirigir su inventario con roadblocking).
Obligatorio: No
competitive_exclusions_enabled Si este campo se pasa en, también debe pasar advertiser_id, creative_ido ambos. Para obtener más información sobre las exclusiones competitivas, consulte Exclusiones competitivas.
Obligatorio: No
advertiser_id Cuando competitive_exclusions_enabled=true se pasa, también debe pasar en este campo con el id. de anunciante cuyas creatividades tienen marcas o categorías de ofertas competidoras y, por lo tanto, no deben incluirse en la previsión resultante. Para obtener más información sobre las exclusiones competitivas, consulte Exclusiones competitivas.
Obligatorio: No, a menos que competitive_exclusions_enabled también se pase en la cadena de consulta.
creative_id Cuando competitive_exclusions_enabled=true se pasa, también debe pasar en este campo con un identificador creativo que tenga marcas o categorías de ofertas competidoras y, por lo tanto, no debe incluirse en la previsión resultante. Para obtener más información sobre las exclusiones competitivas, consulte Exclusiones competitivas.
Obligatorio: No, a menos que competitive_exclusions_enabled también se pase en la cadena de consulta.
line_item_exclusions Lista separada por comas de identificadores de elemento de línea que se excluirán de la previsión.
Obligatorio: No
viewability Cuando se establece en true, la previsión incluirá solo impresiones visibles. Las impresiones visibles se calculan en función de los datos históricos. Se aplica a los artículos de línea de entrega garantizados con un tipo de ingresos vCPM.
Obligatorio: No
dynamic_timeout Número de intentos (el valor predeterminado es 1).
Obligatorio: No
dynamic_attempts Cantidad de tiempo que se debe esperar para cada prueba (el valor predeterminado es 2 minutos, el mínimo en producción es 10 segundos).
Obligatorio: No
split_breakout Cuando split_breakout=true se pasa, también debe pasar los detalles de nivel de división. Esto devolverá una previsión desglosada por divisiones individuales, así como el elemento de línea en su conjunto.

Nota: Las GDALIs admiten divisiones; Los GDLI heredados no admiten divisiones.

Obligatorio: No

Campos JSON

General

Campo Tipo Descripción
line_item object Las fechas de vuelo y la información de perfil asociada al elemento de línea con el que desea realizar la previsión.
Obligatorio:
campaigns matriz de objetos Matriz de objetos que contienen información de campaña para el elemento de línea.

Nota: Las GDLI heredadas admiten campañas; Las GDALIs no admiten campañas. Si el GDLI heredado no tiene varias campañas secundarias, pase una matriz vacía (campaigns: []).

Obligatorio: Sí para los GDLI heredados, pero puede estar vacío. Los elementos de línea no pueden tener campañas ni divisiones.
splits matriz de objetos Matriz de objetos que contienen información dividida del elemento de línea.

Nota: Las GDALIs admiten divisiones; Los GDLI heredados no admiten divisiones. Si la GDALI no tiene divisiones, pase una matriz vacía (splits: []). Para obtener más información, vea Splits Service.

Obligatorio: Sí para los GDALIs, pero puede estar vacío. Los elementos de línea no pueden tener campañas ni divisiones.

Elemento de línea

Campo Tipo Descripción
start_date string Fecha de inicio del vuelo.
Obligatorio:
end_date string Fecha de finalización del vuelo.
Obligatorio:
timezone enumeración Zona horaria para la que está activo el elemento de línea. Para más información y valores aceptados, consulte Zonas horarias de API.
Obligatorio: No, si no se especifica, se usará la zona horaria predeterminada del miembro.
profile object Instancia del objeto de perfil. Use este objeto para definir el destino del elemento de línea. Para obtener una lista de los campos disponibles, consulte Servicio de perfiles. Para obtener una configuración de perfil específica de la previsión, consulte Perfiles de previsión a continuación.
Este campo es necesario, pero puede pasar un objeto vacío. Sin embargo, pasar un perfil vacío significa que está pronosticando sin aplicar ningún destino al elemento de línea.
Obligatorio:
roadblock object Configuración del bloqueo de carretera para el elemento de línea.
Obligatorio: Sí, solo si roadblocking_enabled = true.
creatives matriz de objetos Los creativos asociados a la campaña. Si incluye creatividades, debe incluir al menos el identificador creativo. Para obtener una lista y descripciones de los campos disponibles, consulte Creative Service.
Obligatorio: No

Barricada

Los obstáculos se pueden establecer en el nivel de elemento de línea o en el nivel de campaña, pero no en ambos. Si se ha establecido un obstáculo en una campaña, no se puede establecer en el elemento de línea principal. Los obstáculos solo se pueden aplicar para el inventario administrado y no se pueden habilitar cuando se trabaja con un inventario de terceros.

Campo Tipo Description
type enumeración Tipo de obstáculo. Si incluye el objeto roadblock, se requiere este campo. Los valores posibles son:
- null: no hay ningún conjunto de obstáculos en el nivel de elemento de línea. (solo GDALI)
- no_roadblock: no hay ningún conjunto de obstáculos en el nivel de elemento de línea. (Solo GDLI heredado)
- normal_roadblock: el elemento de línea sirve si el número de creatividades es mayor o igual que el número de espacios de anuncios disponibles. (Solo GDLI heredado)
- partial_roadblock: el elemento de línea sirve cuando al menos una creatividad de cada tamaño se ajusta a una ranura de anuncio apta. (GDALI & GDLI heredado)
- exact_roadblock: el elemento de línea sirve cuando el número de creatividades es igual al número de espacios de anuncios disponibles. (Solo GDLI heredado)

Nota: Para los GDALIs, este valor debe ser o nullpartial_roadblock.
master_width Entero Ancho de la creatividad maestra. Establezca este valor solo cuando use el bloqueo de carreteras de nivel de página. Para el bloqueo de carreteras estándar, omita este campo o establezca el valor 0en . (No establezca el valor en null.)
master_height Entero El alto del maestro creativo. Establezca este valor solo cuando use el bloqueo de carreteras de nivel de página. Para el bloqueo de carreteras estándar, omita este campo o establezca el valor 0en . (No establezca el valor en null.)
Maestro creativo

La creatividad maestra es la creatividad con un tamaño que coincide master_height con y master_width especificado en el objeto roadblock. Si más de una creatividad coincide con ese tamaño, el sistema elegirá una como maestra.

La creatividad maestra se usa para el bloqueo de carreteras de nivel de página, donde se registra una impresión para el conjunto completo de creativos entregados para el obstáculo. Esa impresión grabada se basa en la creatividad maestra. Esto significa que si el maestro creativo no sirve, no se registrará ninguna impresión. Si desea usar el obstáculo de nivel creativo, donde cada entrega creativa se cuenta como una impresión, deje los master_width valores y master_height en blanco.

Para obtener más información sobre el bloqueo de carreteras, consulta Target Your Inventory with Roadblocking (Dirigir tu inventario con bloqueo de carreteras).

Campañas

Nota:

Las GDLI heredadas admiten campañas; Las GDALIs no admiten campañas.

Campo Tipo Descripción
name string Nombre de la campaña. Puede predecir varias campañas dentro de un solo elemento de línea, por lo que el nombre debe ser único dentro de cada elemento de línea.
Obligatorio:
profile object Instancia del objeto de perfil. Use este objeto para definir el destino de la campaña. Para obtener una lista y descripciones de los campos disponibles, consulte Servicio de perfiles. Para obtener una configuración de perfil específica de la previsión, consulte Perfiles de previsión a continuación.
Obligatorio:
start_date string Fecha de inicio de la campaña.
Obligatorio: No
end_date string Fecha de finalización de la campaña.
Obligatorio: No
timezone enumeración Zona horaria para la que está activo el elemento de línea. Para más información y valores aceptados, consulte Zonas horarias de API.
Obligatorio: No, si no se especifica, se usará la zona horaria predeterminada del miembro.
creatives matriz de objetos Los creativos asociados a la campaña. Si incluye creatividades, debe incluir al menos el identificador creativo. Para obtener una lista y descripciones de los campos disponibles, consulte Creative Service.
Obligatorio: No

Perfiles de previsión

Puede definir los requisitos de destino de la previsión mediante el servicio de perfil en el elemento de línea y la campaña. Sin embargo, hay algunas diferencias en cómo debe definir algunos de los campos para la previsión en lugar de otros tipos de especificaciones de destino.

postal_code_targets

Los campos del postal_code_targets objeto del profile servicio se definen en el servicio de código postal. Si desea realizar una previsión basada en códigos postales, debe proporcionar la siguiente información:

Campo Tipo Descripción
code string El código postal puede ser una cadena alfanumérica de hasta 14 caracteres y puede contener un espacio o un guion.
country_id string El código ISO del país al que pertenece la ciudad. Puede usar country service para recuperar una lista completa de códigos de país.
Ejemplo
Expandir origen
"postal_code_targets":[  
        {
                "code": "02692",
                "country_id": "59"
        },
        {
                "code": "83712",
                "country_id": "233"
        }
]

Ejemplo de GDLI heredado: comprobación de la disponibilidad del inventario para los GDLI heredados con varias campañas

Para ver una previsión de disponibilidad de inventario en varias campañas secundarias basadas en la segmentación propuesta, cree un archivo JSON con el formato que se muestra aquí:

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

Si no tiene varias campañas, simplemente pase una matriz vacía para las campañas:

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

A continuación, POST se le mostrará al servicio de la siguiente manera:

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

Volverá a obtener JSON en el formato siguiente:

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

Ejemplo de GDALI: comprobación de la disponibilidad del inventario de GDALIs con divisiones

Para ver una previsión de disponibilidad de inventario entre divisiones basadas en la segmentación propuesta, cree un archivo JSON con el formato que se muestra aquí:

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

Si no tiene divisiones, simplemente pase una matriz vacía para las divisiones:

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

A continuación, POST se realiza en el servicio sin consultas adicionales o con la split_breakout consulta:

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

Volverá a obtener JSON en el formato siguiente:

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

Volverá a obtener JSON en el formato siguiente:

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

Ejemplo de GDLI heredado: comprobación de la disponibilidad del inventario para los GDLI heredados con un obstáculo

Para ejecutar una previsión de disponibilidad de inventario dada una barrera con varios tamaños creativos, deberá:

  • Modifique el perfil para incluir la size_targets matriz.
  • Pase roadblocking_enabled=true la cadena de consulta de la solicitud.

Es posible definir objetivos de tamaño y también agregar creatividades a tu línea de artículo o campañas. Al hacerlo, se usarán todos los tamaños en la previsión. Al habilitar el bloqueo de carreteras, se usará el tamaño con el menor número de impresiones disponibles como capacidad prevista.

Nota:

En este ejemplo, se tendrán en cuenta los size_targets tamaños creativos y al determinar la previsión.

Este es un ejemplo del JSON que enviaría en la consulta:

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

Ejemplo de GDALI: comprobación de la disponibilidad del inventario de GDALIs con un obstáculo

Para ejecutar una previsión de disponibilidad de inventario en GDALIs dado un obstáculo con varios tamaños creativos, deberá:

  • Modifique el perfil para incluir la size_targets matriz.
  • Pase roadblocking_enabled=true la cadena de consulta de la solicitud.

Es posible definir objetivos de tamaño y también agregar creatividades al elemento de línea. Al hacerlo, se usarán todos los tamaños en la previsión. Al habilitar el bloqueo de carreteras, se usará el tamaño con el menor número de impresiones disponibles como capacidad prevista.

Nota:

En este ejemplo, se tendrán en cuenta los size_targets tamaños creativos y al determinar la previsión.

Este es un ejemplo del JSON que enviaría en la consulta:

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

Previsión de contención multiservitivo

Contención de previsión de varios servicios: API REST

Http (método) Endpoint Description
POST https://api.appnexus.com/forecast-contention-multi Ejecute una previsión de contención de inventario mediante un perfil de destino hipotético.

Propina: El servicio forecast Contention-Multi solo admite POST llamadas.

Consulta de parámetros de cadena para la contención de previsión de varios servicios

Use los parámetros de cadena de consulta que se muestran en la tabla siguiente para ajustar la salida. Para obtener información sobre el uso de GDLI y GDALI heredados, consulte los ejemplos siguientes.

Campo Description
priority Cuando se pasa a la cadena de consulta en el formulario priority=x, el inventario de elementos de línea de prioridad inferior se desplazará y se considerará disponible.
Obligatorio: No
competitive_exclusions_enabled Si este campo se pasa en, también debe pasar advertiser_id, creative_ido ambos. Para obtener más información sobre las exclusiones competitivas, consulte Exclusiones competitivas.
Obligatorio: No
advertiser_id Cuando competitive_exclusions_enabled=true se pasa, también debe pasar en este campo con el id. de anunciante cuyas creatividades tienen marcas o categorías de ofertas competidoras y, por lo tanto, no deben incluirse en la previsión resultante. Para obtener más información sobre las exclusiones competitivas, consulte Exclusiones competitivas.
Obligatorio: No, a menos que competitive_exclusions_enabled también se pase en la cadena de consulta.
creative_id Cuando competitive_exclusions_enabled=true se pasa, también debe pasar en este campo con un identificador creativo que tenga marcas o categorías de ofertas competidoras y, por lo tanto, no debe incluirse en la previsión resultante. Para obtener más información sobre las exclusiones competitivas, consulte Exclusiones competitivas.
Obligatorio: No, a menos que competitive_exclusions_enabled también se pase en la cadena de consulta.
line_item_exclusions Lista separada por comas de identificadores de elemento de línea que se excluirán de la previsión.
Obligatorio: No
dynamic_timeout Número de intentos (el valor predeterminado es 1)
Obligatorio: No
dynamic_attempts Cantidad de tiempo de espera para cada prueba (el valor predeterminado es 2 minutos, el mínimo en producción es de 10 segundos)
Obligatorio: No
split_breakout Cuando split_breakout=true se pasa, también debe pasar los detalles de nivel de división. Esto devolverá una previsión, desglosada por divisiones individuales, así como el elemento de línea en su conjunto.

Nota: Las GDALIs admiten divisiones; Los GDLI heredados no admiten divisiones.

Obligatorio: No

Previsión de contención multiservidor: campos JSON

Contención de previsión de varios servicios: General

Campo Tipo Descripción
line_item object Las fechas de vuelo y la información de perfil asociada al elemento de línea con el que desea realizar la previsión.
Obligatorio:
campaigns matriz de objetos Matriz de objetos que contienen información de campaña para el elemento de línea.

Nota: Las GDLI heredadas admiten campañas; Las GDALIs no admiten campañas. Si el GDLI heredado no tiene varias campañas secundarias, pase una matriz vacía (campaigns: []).

Obligatorio: Sí para los GDLI heredados, pero puede estar vacío. Los elementos de línea no pueden tener campañas ni divisiones.
splits matriz de objetos Matriz de objetos que contienen información dividida del elemento de línea.

Nota: Las GDALIs admiten divisiones; Los GDLI heredados no admiten divisiones. Si la GDALI no tiene divisiones, pase una matriz vacía (splits: []). Para obtener más información, vea Splits Service.

Obligatorio: Sí para los GDALIs, pero puede estar vacío. Los elementos de línea no pueden tener campañas ni divisiones.

Contención de previsión-servicio múltiple: elemento de línea

Campo Tipo Descripción
start_date string Fecha de inicio del vuelo.
Obligatorio:
end_date string Fecha de finalización del vuelo.
Obligatorio:
timezone enumeración Zona horaria para la que está activo el elemento de línea. Para más información y valores aceptados, consulte Zonas horarias de API.
Obligatorio: No. Si no se especifica, se usará la zona horaria predeterminada del miembro.
profile object Instancia del objeto de perfil. Use este objeto para definir el destino del elemento de línea. Para obtener una lista y descripciones de los campos disponibles, consulte Servicio de perfiles. Para obtener una configuración de perfil específica de la previsión, consulte Perfiles de previsión anteriores.
Este campo es necesario, pero puede pasar un objeto vacío. Sin embargo, pasar un perfil vacío significa que está pronosticando sin aplicar ningún destino al elemento de línea.
Obligatorio:

Previsión de contención multiservidores: campañas

Nota:

Las GDLI heredadas admiten campañas; Las GDALIs no admiten campañas.

Campo Tipo Descripción
name string Nombre de la campaña. Puede predecir varias campañas dentro de un solo elemento de línea, por lo que el nombre debe ser único dentro de cada elemento de línea.
Obligatorio:
profile object Instancia del objeto de perfil. Use este objeto para definir el destino del elemento de línea. Para obtener una lista y descripciones de los campos disponibles, consulte Servicio de perfiles. Para obtener una configuración de perfil específica de la previsión, consulte Perfiles de previsión anteriores.
Obligatorio:
start_date string Fecha de inicio de la campaña.
Obligatorio: No
end_date string Fecha de finalización de la campaña.
Obligatorio: No
timezone enumeración Zona horaria para la que está activo el elemento de línea. Para más información y valores aceptados, consulte Zonas horarias de API.
Obligatorio: No. Si no se especifica, se usará la zona horaria predeterminada del miembro.
creatives matriz de objetos Los creativos asociados a la campaña. Si incluye creatividades, debe incluir al menos el identificador creativo. Para obtener una lista y descripciones de los campos disponibles, consulte Creative Service.
Obligatorio: No

Ejemplo de GDLI heredado: comprobación de la contención de inventario para GDLI heredados con varias campañas

Para ver una previsión de contención de inventario en varias campañas secundarias basadas en la configuración de destino propuesta, cree un archivo JSON con el formato que se muestra a continuación:

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

Si no tiene varias campañas, simplemente pase una matriz vacía para las campañas:

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

A continuación, POST se le mostrará al servicio de la siguiente manera:

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

Volverá a obtener JSON en el formato siguiente:

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

Ejemplo de GDALI: comprobación de la contención del inventario de GDALI con divisiones

Para ver una previsión de contención de inventario entre divisiones en función de la configuración de destino propuesta, cree un archivo JSON con el formato que se muestra a continuación:

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

A continuación, POST se le mostrará al servicio de la siguiente manera:

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

Volverá a obtener JSON en el formato siguiente:

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