Partager via


Services de prévision d’inventaire

Remarque

Les services de prévision d’inventaire sont disponibles uniquement pour les clients Xandr Ad Server.

Pour qu’un éditeur s’engage à livrer par rapport au budget d’un annonceur, cet éditeur a besoin d’un moyen de prévoir la quantité d’inventaire disponible pour l’annonceur à acheter. En outre, l’éditeur a besoin d’un moyen de détecter la contention d’inventaire. Une contention d’inventaire se produit lorsqu’il y a plusieurs articles de ligne garantis en concurrence pour le même inventaire. Il est important de comprendre les conflits afin que l’éditeur puisse prendre des décisions de hiérarchisation en cas de conflits.

Les services d’API décrits dans cette page sont conçus pour vous aider à en savoir plus sur la disponibilité et la contention des stocks. Forecast Inventory-Multi Service et Forecast Contention-Multi Service sont des services entièrement pris en charge.

Remarque

Les services de prévision d’inventaire prennent en charge les éléments de ligne de livraison garantis (GDLI) hérités et les éléments de ligne augmentées à livraison garantie (GDALI). Les éléments suivants vous aideront à effectuer des demandes de prévision appropriées pour ces différents types d’éléments de ligne :

  • GDLI hérités
  • GDALIs
    • Les GDALIs prennent en charge les fractionnements, mais ne prennent pas en charge les campagnes.
    • Lorsque vous incluez des détails de fractionnement dans votre demande, vous pouvez utiliser le paramètre split_breakout=true de chaîne de requête pour retourner une prévision répartie par fractionnements individuels, ainsi que par l’élément de ligne dans son ensemble.
    • L’interface utilisateur GDALI utilise les services de prévision d’inventaire pour son pied de page de prévision. Pour plus d’informations, consultez la section « Prévisions » dans Create un élément de ligne augmentée de livraison garantie.

Prévision de l’inventaire multiservices

API REST

HTTP, méthode Endpoint Description
POST https://api.appnexus.com/forecast-inventory-multi Exécutez une prévision d’inventaire à l’aide d’un profil hypothétique.

Note: Le service Forecast Inventory-Multi prend uniquement en charge les POST appels.

Paramètres de chaîne de requête

Utilisez les paramètres de chaîne de requête indiqués dans le tableau ci-dessous pour régler la sortie. Pour l’utilisation de GDLI et GDALI héritées, consultez les exemples ci-dessous.

Champ Description
priority Lorsqu’il est transmis sur la chaîne de requête au format priority=x, l’inventaire des éléments de ligne de priorité inférieure est déplacé et considéré comme disponible.
Obligatoire: Non
roadblocking_enabled Ce champ spécifie si plusieurs tailles d’annonces sont regroupées dans un obstacle. Lorsqu’elles sont passées en tant que roadblocking_enabled=true, au moins deux tailles d’annonce doivent être passées dans le size_targets tableau du profil. Pour le blocage au niveau de la page, vous devez inclure les tailles master créatives dans l’objet roadblock sous line_item. Pour plus d’informations sur les blocages de route, consultez Cibler votre inventaire avec roadblocking.
Obligatoire: Non
competitive_exclusions_enabled Si ce champ est passé, vous devez également transmettre advertiser_id, creative_idou les deux. Pour plus d’informations sur les exclusions concurrentielles, consultez Exclusions concurrentielles.
Obligatoire: Non
advertiser_id Lorsque competitive_exclusions_enabled=true est passé, vous devez également passer dans ce champ avec l’ID d’annonceur dont les créateurs ont des marques concurrentes ou des catégories d’offres, et par conséquent ne doivent pas être inclus dans les prévisions résultantes. Pour plus d’informations sur les exclusions concurrentielles, consultez Exclusions concurrentielles.
Obligatoire: Non, sauf si competitive_exclusions_enabled est également passé dans la chaîne de requête.
creative_id Quand competitive_exclusions_enabled=true est passé, vous devez également passer dans ce champ avec un ID créatif qui a des marques ou des catégories d’offres concurrentes, et par conséquent ne doit pas être inclus dans la prévision résultante. Pour plus d’informations sur les exclusions concurrentielles, consultez Exclusions concurrentielles.
Obligatoire: Non, sauf si competitive_exclusions_enabled est également passé dans la chaîne de requête.
line_item_exclusions Liste séparée par des virgules des ID d’élément de ligne à exclure de la prévision.
Obligatoire: Non
viewability Lorsque la valeur est true, la prévision inclut uniquement les impressions visibles. Les impressions visibles sont calculées en fonction des données historiques. S’applique aux éléments de ligne de livraison garantis avec un type de revenu vCPM.
Obligatoire: Non
dynamic_timeout Nombre de tentatives (la valeur par défaut est 1).
Obligatoire: Non
dynamic_attempts Délai d’attente pour chaque version d’évaluation (la valeur par défaut est 2 minutes, le minimum en prod est 10 en secondes).
Obligatoire: Non
split_breakout Quand split_breakout=true est passé, vous devez également passer les détails du niveau fractionné. Cette opération renvoie une prévision répartie par fractionnements individuels ainsi que par l’élément de ligne dans son ensemble.

Note: Les GDALIs prennent en charge les fractionnements ; Les GDLI hérités ne prennent pas en charge les fractionnements.

Obligatoire: Non

Champs JSON

Généralités

Champ Type Description
line_item objet Les dates de vol et les informations de profil associées à l’élément de ligne par rapport à lequel vous souhaitez effectuer des prévisions.
Obligatoire: Oui
campaigns tableau d’objets Tableau d’objets contenant des informations de campagne pour l’élément de ligne.

Note: Les campagnes de prise en charge des GDLI héritées ; Les GDALIs ne prennent pas en charge les campagnes. Si votre GDLI hérité n’a pas plusieurs campagnes enfants, transmettez un tableau vide (campaigns: []).

Obligatoire: Oui pour les GDLI hérités, mais peut être vide. Les éléments de ligne ne peuvent pas avoir à la fois des campagnes et des fractionnements.
splits tableau d’objets Tableau d’objets contenant des informations de fractionnement pour l’élément de ligne.

Note: Les GDALIs prennent en charge les fractionnements ; Les GDLI hérités ne prennent pas en charge les fractionnements. Si votre GDALI n’a pas de fractionnements, passez un tableau vide (splits: []). Pour plus d’informations, consultez Splits Service.

Obligatoire: Oui pour les GDALIs, mais peut être vide. Les éléments de ligne ne peuvent pas avoir à la fois des campagnes et des fractionnements.

Élément de ligne

Champ Type Description
start_date string Date de début du vol.
Obligatoire: Oui
end_date chaîne Date de fin du vol.
Obligatoire: Oui
timezone enum Fuseau horaire pour lequel l’élément de ligne est actif. Pour plus d’informations et les valeurs acceptées, consultez Fuseaux horaires d’API.
Obligatoire: Non, s’il n’est pas spécifié, le fuseau horaire par défaut du membre sera utilisé.
profile objet Instance de l’objet de profil. Utilisez cet objet pour définir votre ciblage pour l’élément de ligne. Pour obtenir la liste des champs disponibles, consultez Service de profil. Pour les paramètres de profil spécifiques à la prévision, consultez Profils de prévision ci-dessous.
Ce champ est obligatoire, mais vous pouvez passer un objet vide. Toutefois, le fait de passer un profil vide signifie que vous faites des prévisions sans appliquer de ciblage à votre élément de ligne.
Obligatoire: Oui
roadblock objet Paramètres de blocage pour l’élément de ligne.
Obligatoire: Oui, uniquement si roadblocking_enabled = true.
creatives tableau d’objets Les créatifs associés à la campagne. Si vous incluez des éléments créatifs, vous devez inclure au moins l’ID créatif. Pour obtenir la liste et les descriptions des champs disponibles, consultez Creative Service.
Obligatoire: Non

Barrage

Les obstacles peuvent être définis au niveau de l’élément de ligne ou de la campagne, mais pas les deux. Si un obstacle a été défini sur une campagne, il ne peut pas être défini sur l’élément de ligne parent. Les obstacles peuvent être appliqués uniquement pour l’inventaire managé et ne peuvent pas être activés lorsque vous travaillez avec un inventaire tiers.

Champ Type Description
type enum Type de barrage. Si vous incluez l’objet roadblock, ce champ est obligatoire. Les valeurs admises sont les suivantes :
- null: aucun blocage n’est défini au niveau de l’élément de ligne. (GDALI uniquement)
- no_roadblock: aucun blocage n’est défini au niveau de l’élément de ligne. (GDLI hérité uniquement)
- normal_roadblock: l’élément de ligne sert si le nombre de créations est supérieur ou égal au nombre d’emplacements publicitaires disponibles. (GDLI hérité uniquement)
- partial_roadblock: l’élément de ligne sert quand au moins un créatif de chaque taille correspond à un emplacement publicitaire éligible. (GDALI & GDLI hérité)
- exact_roadblock: l’élément de ligne sert lorsque le nombre de créations est égal au nombre d’emplacements publicitaires disponibles. (GDLI hérité uniquement)

Note: Pour les GDALIs, cette valeur doit être null ou partial_roadblock.
master_width int Largeur du master créatif. Définissez cette valeur uniquement lors de l’utilisation d’un blocage au niveau de la page. Pour le blocage standard, omettez ce champ ou définissez la valeur sur 0. (Ne définissez pas la valeur sur null.)
master_height int La hauteur de la master créative. Définissez cette valeur uniquement lors de l’utilisation d’un blocage au niveau de la page. Pour le blocage standard, omettez ce champ ou définissez la valeur sur 0. (Ne définissez pas la valeur sur null.)
Master creative

Le master créatif est le créatif dont la taille correspond à master_height et master_width spécifiée dans l’objet roadblock. Si plusieurs créations correspondent à cette taille, le système en choisit une comme master.

Le master créatif est utilisé pour le blocage au niveau de la page, où une impression est enregistrée pour l’ensemble des créations livrées pour le barrage. Cette impression enregistrée est basée sur le master créatif. Cela signifie que si le master créatif ne sert pas, aucune impression n’est enregistrée. Si vous souhaitez utiliser un blocage de niveau créatif, où chaque création fournie est comptée comme une impression, laissez les master_width valeurs et master_height vides.

Pour plus d’informations sur les blocages routiers, consultez Cibler votre inventaire avec le blocage routier.

Campagnes

Remarque

Les campagnes de prise en charge des GDLI héritées ; Les GDALIs ne prennent pas en charge les campagnes.

Champ Type Description
name string Nom de la campagne. Vous pouvez prévoir plusieurs campagnes au sein d’un seul élément de ligne. Le nom doit donc être unique dans chaque élément de ligne.
Obligatoire: Oui
profile objet Instance de l’objet de profil. Utilisez cet objet pour définir votre ciblage pour la campagne. Pour obtenir la liste et les descriptions des champs disponibles, consultez Service de profil. Pour les paramètres de profil spécifiques à la prévision, consultez Profils de prévision ci-dessous.
Obligatoire: Oui
start_date chaîne Date de début de la campagne.
Obligatoire: Non
end_date string Date de fin de la campagne.
Obligatoire: Non
timezone enum Fuseau horaire pour lequel l’élément de ligne est actif. Pour plus d’informations et les valeurs acceptées, consultez Fuseaux horaires d’API.
Obligatoire: Non, s’il n’est pas spécifié, le fuseau horaire par défaut du membre sera utilisé.
creatives tableau d’objets Les créatifs associés à la campagne. Si vous incluez des éléments créatifs, vous devez inclure au moins l’ID créatif. Pour obtenir la liste et les descriptions des champs disponibles, consultez Creative Service.
Obligatoire: Non

Profils de prévision

Vous pouvez définir les exigences de ciblage pour votre prévision à l’aide du service de profil sur l’élément de ligne et la campagne. Toutefois, il existe des différences dans la façon dont vous devez définir certains champs pour la prévision par rapport à d’autres types de spécifications de ciblage.

postal_code_targets

Les champs de l’objet postal_code_targets dans le profile service sont définis dans le service de code postal. Si vous souhaitez effectuer des prévisions basées sur des codes postaux, vous devez fournir les informations suivantes :

Champ Type Description
code string Le code postal peut être une chaîne alphanumérique de 14 caractères maximum et peut contenir un espace ou un trait d’union.
country_id chaîne Code ISO du pays auquel appartient la ville. Vous pouvez utiliser le service pays pour récupérer la liste complète des codes pays.
Exemple
Développer la source
"postal_code_targets":[  
        {
                "code": "02692",
                "country_id": "59"
        },
        {
                "code": "83712",
                "country_id": "233"
        }
]

Exemple GDLI hérité - Vérifier la disponibilité de l’inventaire pour les GDLI hérités avec plusieurs campagnes

Pour afficher une prévision de disponibilité d’inventaire sur plusieurs campagnes enfants en fonction du ciblage proposé, créez un fichier JSON au format indiqué ici :

{
  "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 vous n’avez pas plusieurs campagnes, transmettez simplement un tableau vide pour les campagnes :

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

Ensuite, POST il est au service comme suit :

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

Vous récupérerez JSON au format suivant :

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

Exemple GDALI - Vérifier la disponibilité de l’inventaire pour les GDALIs avec des fractionnements

Pour afficher une prévision de disponibilité d’inventaire entre les fractionnements en fonction du ciblage proposé, créez un fichier JSON au format indiqué ici :

{
    "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 vous n’avez pas de fractionnements, transmettez simplement un tableau vide pour les fractionnements :

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

Ensuite, POST il est au service sans aucune requête supplémentaire ou avec la split_breakout requête :

POST sans requêtes supplémentaires
curl --silent  -b cookies -X POST -d '@/tmp/forecast-inventory-multi.json' "https://api.appnexus.com/forecast-inventory-multi"

Vous récupérerez JSON au format suivant :

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

Vous récupérerez JSON au format suivant :

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

Exemple GDLI hérité - Vérifier la disponibilité de l’inventaire pour les GDLI hérités avec un obstacle

Pour exécuter une prévision de disponibilité d’inventaire en fonction d’un obstacle avec plusieurs tailles créatives, vous devez :

  • Modifiez votre profil pour inclure le size_targets tableau.
  • Transmettez roadblocking_enabled=true la chaîne de requête de la requête.

Il est possible de définir des cibles de taille et également d’ajouter des éléments créatifs à votre élément de ligne ou à vos campagnes. Dans ce cas, toutes les tailles sont utilisées dans la prévision. Lorsque vous activez le blocage routier, la taille avec le plus petit nombre d’impressions disponibles est utilisée comme capacité prévue.

Remarque

Dans cet exemple, les size_targets tailles créatives et sont toutes prises en compte lors de la détermination des prévisions.

Voici un exemple du json que vous envoyez dans votre requête :

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

Exemple GDALI - Vérifier la disponibilité de l’inventaire pour les GDALIs avec un obstacle

Pour exécuter une prévision de disponibilité d’inventaire sur les GDALIs en fonction d’un obstacle avec plusieurs tailles créatives, vous devez :

  • Modifiez votre profil pour inclure le size_targets tableau.
  • Transmettez roadblocking_enabled=true la chaîne de requête de la requête.

Il est possible de définir des cibles de taille et d’ajouter des éléments créatifs à votre élément de ligne. Dans ce cas, toutes les tailles sont utilisées dans la prévision. Lorsque vous activez le blocage routier, la taille avec le plus petit nombre d’impressions disponibles est utilisée comme capacité prévue.

Remarque

Dans cet exemple, les size_targets tailles créatives et sont toutes prises en compte lors de la détermination des prévisions.

Voici un exemple du json que vous envoyez dans votre requête :

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

Prévision de contention multiservices

Multiservices de contention de prévision : API REST

HTTP, méthode Endpoint Description
POST https://api.appnexus.com/forecast-contention-multi Exécutez une prévision de contention d’inventaire à l’aide d’un profil de ciblage hypothétique.

Pointe: Le service Forecast Contention-Multi prend uniquement en charge les POST appels.

Paramètres de chaîne de requête pour le multiservices de contention de prévision

Utilisez les paramètres de chaîne de requête indiqués dans le tableau ci-dessous pour régler la sortie. Pour l’utilisation de GDLI et GDALI héritées, consultez les exemples ci-dessous.

Champ Description
priority Lorsqu’il est transmis sur la chaîne de requête au format priority=x, l’inventaire des éléments de ligne de priorité inférieure est déplacé et considéré comme disponible.
Obligatoire: Non
competitive_exclusions_enabled Si ce champ est passé, vous devez également transmettre advertiser_id, creative_idou les deux. Pour plus d’informations sur les exclusions concurrentielles, consultez Exclusions concurrentielles.
Obligatoire: Non
advertiser_id Lorsque competitive_exclusions_enabled=true est passé, vous devez également passer dans ce champ avec l’ID d’annonceur dont les créateurs ont des marques concurrentes ou des catégories d’offres, et par conséquent ne doivent pas être inclus dans les prévisions résultantes. Pour plus d’informations sur les exclusions concurrentielles, consultez Exclusions concurrentielles.
Obligatoire: Non, sauf si competitive_exclusions_enabled est également passé dans la chaîne de requête.
creative_id Quand competitive_exclusions_enabled=true est passé, vous devez également passer dans ce champ avec un ID créatif qui a des marques ou des catégories d’offres concurrentes, et par conséquent ne doit pas être inclus dans la prévision résultante. Pour plus d’informations sur les exclusions concurrentielles, consultez Exclusions concurrentielles.
Obligatoire: Non, sauf si competitive_exclusions_enabled est également passé dans la chaîne de requête.
line_item_exclusions Liste séparée par des virgules des ID d’élément de ligne à exclure de la prévision.
Obligatoire: Non
dynamic_timeout Nombre de tentatives (la valeur par défaut est 1)
Obligatoire: Non
dynamic_attempts Délai d’attente de chaque version d’évaluation (la valeur par défaut est de 2 minutes, le minimum en prod est de 10 secondes)
Obligatoire: Non
split_breakout Quand split_breakout=true est passé, vous devez également passer les détails du niveau fractionné. Cette opération renvoie une prévision, répartie par fractionnements individuels ainsi que par élément de ligne dans son ensemble.

Note: Les GDALIs prennent en charge les fractionnements ; Les GDLI hérités ne prennent pas en charge les fractionnements.

Obligatoire: Non

Prévision contention-multi-service : champs JSON

Multiservices de contention de prévision : Général

Champ Type Description
line_item objet Les dates de vol et les informations de profil associées à l’élément de ligne par rapport à lequel vous souhaitez effectuer des prévisions.
Obligatoire: Oui
campaigns tableau d’objets Tableau d’objets contenant des informations de campagne pour l’élément de ligne.

Note: Les campagnes de prise en charge des GDLI héritées ; Les GDALIs ne prennent pas en charge les campagnes. Si votre GDLI hérité n’a pas plusieurs campagnes enfants, transmettez un tableau vide (campaigns: []).

Obligatoire: Oui pour les GDLI hérités, mais peut être vide. Les éléments de ligne ne peuvent pas avoir à la fois des campagnes et des fractionnements.
splits tableau d’objets Tableau d’objets contenant des informations de fractionnement pour l’élément de ligne.

Note: Les GDALIs prennent en charge les fractionnements ; Les GDLI hérités ne prennent pas en charge les fractionnements. Si votre GDALI n’a pas de fractionnements, passez un tableau vide (splits: []). Pour plus d’informations, consultez Splits Service.

Obligatoire: Oui pour les GDALIs, mais peut être vide. Les éléments de ligne ne peuvent pas avoir à la fois des campagnes et des fractionnements.

Prévision contention-multi-service : élément de ligne

Champ Type Description
start_date string Date de début du vol.
Obligatoire: Oui
end_date string Date de fin du vol.
Obligatoire: Oui
timezone enum Fuseau horaire pour lequel l’élément de ligne est actif. Pour plus d’informations et les valeurs acceptées, consultez Fuseaux horaires d’API.
Obligatoire: Non. S’il n’est pas spécifié, le fuseau horaire par défaut du membre est utilisé.
profile objet Instance de l’objet de profil. Utilisez cet objet pour définir votre ciblage pour l’élément de ligne. Pour obtenir la liste et les descriptions des champs disponibles, consultez Service de profil. Pour les paramètres de profil spécifiques à la prévision, consultez Profils de prévision ci-dessus.
Ce champ est obligatoire, mais vous pouvez passer un objet vide. Toutefois, le fait de passer un profil vide signifie que vous faites des prévisions sans appliquer de ciblage à votre élément de ligne.
Obligatoire: Oui

Multiservices de contention de prévision : campagnes

Remarque

Les campagnes de prise en charge des GDLI héritées ; Les GDALIs ne prennent pas en charge les campagnes.

Champ Type Description
name string Nom de la campagne. Vous pouvez prévoir plusieurs campagnes au sein d’un seul élément de ligne. Le nom doit donc être unique dans chaque élément de ligne.
Obligatoire: Oui
profile objet Instance de l’objet de profil. Utilisez cet objet pour définir votre ciblage pour l’élément de ligne. Pour obtenir la liste et les descriptions des champs disponibles, consultez Service de profil. Pour les paramètres de profil spécifiques à la prévision, consultez Profils de prévision ci-dessus.
Obligatoire: Oui
start_date string Date de début de la campagne.
Obligatoire: Non
end_date string Date de fin de la campagne.
Obligatoire: Non
timezone enum Fuseau horaire pour lequel l’élément de ligne est actif. Pour plus d’informations et les valeurs acceptées, consultez Fuseaux horaires d’API.
Obligatoire: Non. S’il n’est pas spécifié, le fuseau horaire par défaut du membre est utilisé.
creatives tableau d’objets Les créatifs associés à la campagne. Si vous incluez des éléments créatifs, vous devez inclure au moins l’ID créatif. Pour obtenir la liste et les descriptions des champs disponibles, consultez Creative Service.
Obligatoire: Non

Exemple GDLI hérité - Vérifier la contention d’inventaire pour les GDLI hérités avec plusieurs campagnes

Pour afficher une prévision de contention d’inventaire sur plusieurs campagnes enfants en fonction des paramètres de ciblage proposés, créez un fichier JSON au format ci-dessous :

{
  "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 vous n’avez pas plusieurs campagnes, transmettez simplement un tableau vide pour les campagnes :

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

Ensuite, POST il est au service comme suit :

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

Vous récupérerez JSON au format suivant :

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

Exemple GDALI - Vérifier la contention d’inventaire pour les GDALIs avec des fractionnements

Pour afficher une prévision de contention d’inventaire entre les fractionnements en fonction des paramètres de ciblage proposés, créez un fichier JSON au format ci-dessous :

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

Ensuite, POST il est au service comme suit :

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

Vous récupérerez JSON au format suivant :

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