Servicios de Previsión de inventario

Nota:

Los servicios de previsión de inventario solo están disponibles para los clientes de Xandr Ad Server.

Para que un editor se comprometa a cumplir con el presupuesto de un anunciante, ese editor necesita una manera de prever cuánto inventario está disponible para que el anunciante lo compre. Además, el editor necesita una manera de detectar la contención del inventario. La contención de inventario se produce cuando hay varias líneas de pedido garantizadas que compiten por el mismo inventario. Comprender la contención es importante para que el editor pueda tomar decisiones de priorización cuando se producen 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 Forecast Inventory-Multi y el servicio Forecast Contention-Multi son servicios totalmente compatibles.

Nota:

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

  • GDLI heredados
  • GDALI
    • Los GDALI admiten divisiones, pero no apoyan campañas.
    • Al incluir detalles divididos 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 utiliza servicios de pronóstico de inventario para su pie de página de pronóstico. Para obtener más información, consulte la sección "Previsión" en Crear una línea de pedido aumentada de entrega garantizada.

Forecast inventory-multi service

API de REST

Método HTTP Endpoint Description
POST https://api.appnexus.com/forecast-inventory-multi Ejecutar una previsión de inventario utilizando 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 el uso de GDLI heredado y GDALI, consulte los ejemplos a continuación.

Campo Descripción
priority Cuando se pasa en la cadena de consulta en el formulario priority=x, el inventario de los elementos de línea de menor prioridad se desplazará y se considerará disponible.
Necesario: No
roadblocking_enabled Este campo especifica si hay varios tamaños de anuncios agrupados en un obstáculo. Cuando se pasa como roadblocking_enabled=true, se requieren dos o más tamaños de anuncio en la size_targets matriz del perfil. Para el roadblock a nivel de página, debe incluir los tamaños de las creatividades maestras en el objeto en line_item.roadblock Para obtener más información sobre el bloqueo de carreteras, consulte Segmentar su inventario con bloqueos de carreteras.
Necesario: No
competitive_exclusions_enabled Si se pasa este campo, también debe pasar advertiser_id, creative_id, o ambos. Para obtener más información sobre las exclusiones competitivas, consulte Exclusiones competitivas.
Necesario: No
advertiser_id Cuando competitive_exclusions_enabled=true se apruebe, también debe pasar en este campo el identificador del anunciante cuyos recursos creativos tengan marcas o categorías de oferta competidoras y, por tanto, no se deben incluir en la previsión resultante. Para obtener más información sobre las exclusiones competitivas, consulte Exclusiones competitivas.
Necesario: No, a menos que competitive_exclusions_enabled también se pase en la cadena de consulta.
creative_id Cuando competitive_exclusions_enabled=true se apruebe, también debe aprobar en este campo un identificador creativo que tenga marcas o categorías de oferta 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.
Necesario: No, a menos que competitive_exclusions_enabled también se pase en la cadena de consulta.
line_item_exclusions Una lista separada por comas de identificadores de elementos de línea de pedido que se excluirán de la previsión.
Necesario: No
viewability Cuando se establece en true, la previsión solo incluirá las 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 garantizada con un tipo de ingresos vCPM.
Necesario: No
dynamic_timeout El número de intentos (el valor predeterminado es 1).
Necesario: No
dynamic_attempts La cantidad de tiempo que se debe esperar para cada versión de prueba (el valor predeterminado es 2 minutos, el mínimo en producción es 10 segundos).
Necesario: No
split_breakout Cuando split_breakout=true se aprueba, también debe pasar los detalles de nivel dividido. Esto devolverá una previsión desglosada por divisiones individuales, así como la línea de pedido en su conjunto.

Nota: Los GDALI admiten divisiones; Los GDLI heredados no admiten divisiones.

Necesario: No

Campos JSON

General

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

Nota: Campañas de apoyo de GDLI heredados; Los GDALI no apoyan campañas. Si la GDLI heredada no tiene varias campañas secundarias, pase una matriz vacía (campaigns: []).

Necesario: Sí, para los GDLI heredados, pero puede estar vacío. Las líneas de pedido no pueden tener campañas y divisiones a la vez.
splits matriz de objetos Una matriz de objetos que contienen información dividida para el elemento de línea.

Nota: Los GDALI admiten divisiones; Los GDLI heredados no admiten divisiones. Si su GDALI no tiene divisiones, pase una matriz vacía (splits: []). Para obtener más información, consulte Servicio de divisiones.

Necesario: Sí para GDALI, pero puede estar vacío. Las líneas de pedido no pueden tener campañas y divisiones a la vez.

Línea de pedido

Campo Tipo Descripción
start_date string La fecha de inicio del vuelo.
Necesario:
end_date string La fecha de finalización del vuelo.
Necesario:
timezone enumeración La zona horaria para la que está activa la línea de pedido. Para obtener detalles y valores aceptados, consulte Zonas horarias de API.
Necesario: No, si no se especifica, se usará la zona horaria predeterminada del miembro.
profile objeto Una instancia del objeto de perfil. Utilice este objeto para definir la segmentación por la línea de pedido. Para obtener una lista de los campos disponibles, consulte Servicio de perfiles. Para conocer la configuración de perfil específica de la previsión, consulte Perfiles de previsión a continuación.
Este campo es obligatorio, pero puede pasar un objeto vacío. Sin embargo, pasar un perfil vacío significa que está pronosticando sin aplicar ninguna segmentación a su línea de pedido.
Necesario:
roadblock objeto La configuración de obstáculos para la línea de pedido.
Necesario: Sí, solo si roadblocking_enabled = true.
creatives matriz de objetos Los recursos creativos asociados a la campaña. Si incluye creatividades, debe incluir al menos el identificador de creatividad. Para obtener una lista y descripciones de los campos disponibles, consulte Servicio creativo.
Necesario: No

Obstáculo

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

Campo Tipo Descripción
type enumeración El tipo de obstáculo. Si incluye el objeto de obstáculo, este campo es obligatorio. Los valores posibles son:
- null: no hay ningún roadblocking establecido a nivel de línea de pedido. (Solo GDALI)
- no_roadblock: no hay ningún roadblocking establecido a nivel de línea de pedido. (Solo GDLI heredada)
- normal_roadblock: La línea de pedido sirve si el número de creatividades es mayor o igual al número de espacios publicitarios disponibles. (Solo GDLI heredada)
- partial_roadblock: la línea de pedido se publica cuando al menos un creativo de cada tamaño se ajusta a un espacio publicitario apto. (GDALI & GDLI heredado)
- exact_roadblock: la línea de pedido se publica cuando el número de creatividades es igual al número de espacios publicitarios disponibles. (Solo GDLI heredada)

Nota: Para GDALI, este valor debe ser o null .partial_roadblock
master_width Entero La anchura del maestro creativo. Establezca este valor solo cuando utilice el roadblocking a nivel de página. Para el bloqueo de carreteras estándar, omita este campo o establezca el valor en 0. (No establezca el valor en null.)
master_height Entero El apogeo del maestro creativo. Establezca este valor solo cuando utilice el roadblocking a nivel de página. Para el bloqueo de carreteras estándar, omita este campo o establezca el valor en 0. (No establezca el valor en null.)
Dominar la creatividad

El creativo maestro es el creativo con un tamaño que coincida con el master_height y master_width especificado en el objeto de bloqueo. Si más de una creatividad coincide con ese tamaño, el sistema elegirá una como maestra.

La creatividad maestra se utiliza para el roadblock a nivel de página, donde se registra una impresión del conjunto completo de creativos entregados para el roadblock. Esa impresión grabada se basa en el maestro creativo. Esto significa que si el maestro creativo no sirve, no se registrará ninguna impresión. Si quieres usar el roadblocking a nivel creativo, donde cada creatividad entregada se cuenta como una impresión, deja los master_width valores and master_height en blanco.

Para obtener más información sobre el bloqueo de carreteras, consulte Segmentar su inventario con bloqueos de carreteras.

Campañas

Nota:

Campañas de apoyo de GDLI heredados; Los GDALI no apoyan campañas.

Campo Tipo Descripción
name string El nombre de la campaña. Puede realizar previsiones para varias campañas dentro de una sola línea de pedido, por lo que el nombre debe ser único dentro de cada línea de pedido.
Necesario:
profile objeto Una instancia del objeto de perfil. Usa este objeto para definir la segmentación de la campaña. Para obtener una lista y descripciones de los campos disponibles, consulte Servicio de perfiles. Para conocer la configuración de perfil específica de la previsión, consulte Perfiles de previsión a continuación.
Necesario:
start_date string Fecha de inicio de la campaña.
Necesario: No
end_date string Fecha de finalización de la campaña.
Necesario: No
timezone enumeración La zona horaria para la que está activa la línea de pedido. Para obtener detalles y valores aceptados, consulte Zonas horarias de API.
Necesario: No, si no se especifica, se usará la zona horaria predeterminada del miembro.
creatives matriz de objetos Los recursos creativos asociados a la campaña. Si incluye creatividades, debe incluir al menos el identificador de creatividad. Para obtener una lista y descripciones de los campos disponibles, consulte Servicio creativo.
Necesario: No

Perfiles de pronóstico

Puede definir los requisitos de segmentación para la previsión mediante el servicio de perfiles en la línea de pedido y la campaña. Sin embargo, hay algunas diferencias en la forma en que debe definir algunos de los campos para la previsión en comparación con otros tipos de especificaciones de segmentación.

postal_code_targets

Los campos del postal_code_targets objeto en el profile servicio se definen en el servicio de código postal. Si quieres hacer previsiones en base a códigos postales, debes aportar 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 guión.
country_id string El código ISO del país o región al que pertenece la ciudad. Puede usar el Servicio de país para recuperar una lista completa de los 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: comprobar la disponibilidad del inventario de GDLI heredados con varias campañas

Para ver una previsión de disponibilidad de inventario en varias campañas secundarias en función de la segmentación propuesta, crea un archivo JSON en 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 pasará 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"

Recibirá JSON en el siguiente formato:

{
   "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: comprobar la disponibilidad del inventario de GDALI con divisiones

Para ver una previsión de disponibilidad de inventario en divisiones basada en la segmentación propuesta, crea un archivo JSON en 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 pasará al 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"

Recibirá JSON en el siguiente formato:

{
    "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 consulta
curl --silent  -b cookies -X POST -d '@/tmp/forecast-inventory-multi.json' "https://api.appnexus.com/forecast-inventory-multi?split_breakout=true"

Recibirá JSON en el siguiente formato:

{
    "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: comprobar la disponibilidad del inventario para GDLI heredados con un obstáculo

Para ejecutar una previsión de disponibilidad de inventario dado un obstáculo con varios tamaños de creatividades, 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 su línea de pedido o campañas. Al hacer esto, se utilizarán todos los tamaños en el pronóstico. Cuando habilites el bloqueo de carreteras, se utilizará la capacidad prevista del tamaño con el menor número de impresiones disponibles.

Nota:

En este ejemplo, los tamaños y creativos se considerarán al determinar la size_targets 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: comprobar la disponibilidad del inventario de GDALI con un obstáculo

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

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

Es posible definir segmentos de tamaño y también añadir creatividades a tu línea de pedido. Al hacer esto, se utilizarán todos los tamaños en el pronóstico. Cuando habilites el bloqueo de carreteras, se utilizará la capacidad prevista del tamaño con el menor número de impresiones disponibles.

Nota:

En este ejemplo, los tamaños y creativos se considerarán al determinar la size_targets 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": []
        }
    ]
}

Forecast containion-multi service

Forecast contention-multi service: REST API

Método HTTP Endpoint Description
POST https://api.appnexus.com/forecast-contention-multi Ejecutar una previsión de contención de inventario mediante un perfil de segmentación hipotético.

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

Parámetros de cadena de consulta para la contención de previsión-multiservicio

Use los parámetros de cadena de consulta que se muestran en la tabla siguiente para ajustar la salida. Para el uso de GDLI heredado y GDALI, consulte los ejemplos a continuación.

Campo Descripción
priority Cuando se pasa en la cadena de consulta en el formulario priority=x, el inventario de los elementos de línea de menor prioridad se desplazará y se considerará disponible.
Necesario: No
competitive_exclusions_enabled Si se pasa este campo, también debe pasar advertiser_id, creative_id, o ambos. Para obtener más información sobre las exclusiones competitivas, consulte Exclusiones competitivas.
Necesario: No
advertiser_id Cuando competitive_exclusions_enabled=true se apruebe, también debe pasar en este campo el identificador del anunciante cuyos recursos creativos tengan marcas o categorías de oferta competidoras y, por tanto, no se deben incluir en la previsión resultante. Para obtener más información sobre las exclusiones competitivas, consulte Exclusiones competitivas.
Necesario: No, a menos que competitive_exclusions_enabled también se pase en la cadena de consulta.
creative_id Cuando competitive_exclusions_enabled=true se apruebe, también debe aprobar en este campo un identificador creativo que tenga marcas o categorías de oferta 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.
Necesario: No, a menos que competitive_exclusions_enabled también se pase en la cadena de consulta.
line_item_exclusions Una lista separada por comas de identificadores de elementos de línea de pedido que se excluirán de la previsión.
Necesario: No
dynamic_timeout El número de intentos (el valor predeterminado es 1)
Necesario: No
dynamic_attempts La cantidad de tiempo que se debe esperar para cada versión de prueba (el valor predeterminado es 2 minutos, el mínimo en producción es de 10 segundos)
Necesario: No
split_breakout Cuando split_breakout=true se aprueba, también debe pasar los detalles de nivel dividido. Esto devolverá un pronóstico, desglosado por divisiones individuales, así como la línea de pedido en su conjunto.

Nota: Los GDALI admiten divisiones; Los GDLI heredados no admiten divisiones.

Necesario: No

Forecast Containion-multi service: campos JSON

Forecast Containion-multi service: General

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

Nota: Campañas de apoyo de GDLI heredados; Los GDALI no apoyan campañas. Si la GDLI heredada no tiene varias campañas secundarias, pase una matriz vacía (campaigns: []).

Necesario: Sí, para los GDLI heredados, pero puede estar vacío. Las líneas de pedido no pueden tener campañas y divisiones a la vez.
splits matriz de objetos Una matriz de objetos que contienen información dividida para el elemento de línea.

Nota: Los GDALI admiten divisiones; Los GDLI heredados no admiten divisiones. Si su GDALI no tiene divisiones, pase una matriz vacía (splits: []). Para obtener más información, consulte Servicio de divisiones.

Necesario: Sí para GDALI, pero puede estar vacío. Las líneas de pedido no pueden tener campañas y divisiones a la vez.

Forecast Containion-multi service: Línea de pedido

Campo Tipo Descripción
start_date string La fecha de inicio del vuelo.
Necesario:
end_date string La fecha de finalización del vuelo.
Necesario:
timezone enumeración La zona horaria para la que está activa la línea de pedido. Para obtener detalles y valores aceptados, consulte Zonas horarias de API.
Necesario: No. Si no se especifica, se usará la zona horaria predeterminada del miembro.
profile objeto Una instancia del objeto de perfil. Utilice este objeto para definir la segmentación por la línea de pedido. Para obtener una lista y descripciones de los campos disponibles, consulte Servicio de perfiles. Para conocer la configuración de perfil específica de la previsión, consulte Perfiles de pronóstico más arriba.
Este campo es obligatorio, pero puede pasar un objeto vacío. Sin embargo, pasar un perfil vacío significa que está pronosticando sin aplicar ninguna segmentación a su línea de pedido.
Necesario:

Forecast contention-multi service: Campañas

Nota:

Campañas de apoyo de GDLI heredados; Los GDALI no apoyan campañas.

Campo Tipo Descripción
name string El nombre de la campaña. Puede realizar previsiones para varias campañas dentro de una sola línea de pedido, por lo que el nombre debe ser único dentro de cada línea de pedido.
Necesario:
profile objeto Una instancia del objeto de perfil. Utilice este objeto para definir la segmentación por la línea de pedido. Para obtener una lista y descripciones de los campos disponibles, consulte Servicio de perfiles. Para conocer la configuración de perfil específica de la previsión, consulte Perfiles de pronóstico más arriba.
Necesario:
start_date string Fecha de inicio de la campaña.
Necesario: No
end_date string Fecha de finalización de la campaña.
Necesario: No
timezone enumeración La zona horaria para la que está activa la línea de pedido. Para obtener detalles y valores aceptados, consulte Zonas horarias de API.
Necesario: No. Si no se especifica, se usará la zona horaria predeterminada del miembro.
creatives matriz de objetos Los recursos creativos asociados a la campaña. Si incluye creatividades, debe incluir al menos el identificador de creatividad. Para obtener una lista y descripciones de los campos disponibles, consulte Servicio creativo.
Necesario: No

Ejemplo de GDLI heredado: comprobar la contención del inventario de los GDLI heredados con varias campañas

Para ver una previsión de contención de inventario en varias campañas secundarias en función de la configuración de segmentación propuesta, cree un archivo JSON en 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 pasará 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"
      

Recibirá JSON en el siguiente formato:

{
   "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: comprobar la contención de inventario de GDALI con divisiones

Para ver una previsión de contención de inventario en divisiones en función de la configuración de segmentación propuesta, crea un archivo JSON en 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 pasará 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"
      

Recibirá JSON en el siguiente formato:

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