Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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
- Les GDLI hérités prennent en charge les campagnes, mais ne prennent pas en charge les fractionnements.
- Si vous n’avez pas plusieurs campagnes enfants, transmettez un tableau vide (
campaigns: [ ]). - Pour plus d’informations, consultez Utilisation de plusieurs campagnes avec un élément de ligne garanti.
-
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=truede 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_targetstableau. - Transmettez
roadblocking_enabled=truela 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_targetstableau. - Transmettez
roadblocking_enabled=truela 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
}
]
}
}