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.
La configuration d’une implémentation d’API d’un élément de ligne de transaction organisé pour cibler une transaction nécessite la configuration d’un certain nombre de propriétés différentes sur différents objets d’API. Ce guide explique le processus de création et de configuration d’un élément de ligne de transaction organisé à l’aide de notre API.
Vue d’ensemble
Les transactions organisées représentent un accord négocié entre un acheteur et un curateur qui combine les actifs propriétaires d’un curateur avec l’offre de la Place de marché Xandr. Ces ressources propriétaires peuvent inclure des données d’audience, un accès privilégié aux stocks, des tarifs spécialement négociés, des talents d’optimisation, une stratégie d’investissement et d’autres fonctionnalités qui améliorent l’offre de transaction et créent une offre unique. Les curateurs de transactions ont leur propre siège de membre sur la plateforme Xandr, qu’ils utilisent pour empaqueter l’approvisionnement et leurs propres actifs dans des ID de transaction organisés pour les acheteurs. N’importe quel DSP intégré à l’échange Xandr peut acheter des offres organisées.
La configuration d’un élément de ligne de transaction organisé implique généralement d’effectuer des demandes aux points de terminaison de service d’API suivants pour accéder aux objets API correspondants ou en créer :
| Point de terminaison d’API | Objet API | Informations de référence détaillées |
|---|---|---|
https://api.appnexus.com/advertiser |
Annonceur | Service Annonceur |
https://api.appnexus.com/insertion-order |
insertion-order | Service d’ordre d’insertion |
https://api.appnexus.com/deal |
Affaire | Service de transaction |
https://api.appnexus.com/profile |
profil | Service de profil |
https://api.appnexus.com/line-item |
line-item (ALI) | Élément de ligne - Service ALI |
Ce guide utilise cURL exemples pour toutes les demandes. Vous pouvez utiliser d’autres outils de demande d’API (par exemple, Postman), mais vous devez ensuite ajuster les exemples en conséquence.
Configuration requise
Avant de commencer cette configuration, veillez à lire les Prise en main de l’API. Il fournit des informations sur les environnements de test, les contraintes d’utilisation, la sémantique d’API (exécution de commandes, filtrage, tri, etc.) et les bonnes pratiques.
Ordre des opérations
Les objets API ont souvent des dépendances sur d’autres objets API et il existe un ordre que vous devez suivre lors de la création ou de l’accès aux objets lorsque vous créez un élément de ligne de transaction organisé. Par exemple, vous devez fournir les ID des objets API suivants : advertiser, insertion-order, dealet profile. Pour obtenir les ID de ces objets, vous devez les créer ou y avoir déjà accès. Les étapes décrites dans ce guide suivent l’ordre classique des opérations requises pour créer un élément de ligne de transaction organisé.
Meilleures pratiques
Pour obtenir la liste générale des meilleures pratiques à suivre lors de l’utilisation de l’API, consultez Bonnes pratiques relatives à l’API. Voici quelques bonnes pratiques spécifiques à une configuration d’élément de ligne de transaction organisée :
- Définissez le
statechamp de l’élément de ligne de transaction organisé sur jusqu’à"inactive"ce que l’élément de ligne soit entièrement configuré et prêt pour le test. - Notez l’ID des objets que vous créez. Les ID des objets que vous créez sont retournés dans le corps de la réponse des requêtes. Vous aurez souvent besoin de ces ID ultérieurement afin de les copier quand ils sont retournés peut réduire le nombre de demandes supplémentaires
GETque vous devez effectuer pour les obtenir.
Procédure d’installation
Les étapes suivantes vous guident tout au long du processus de configuration d’un élément de ligne de transaction organisé avec des configurations classiques :
- Étape 1 : Obtenir un jeton d’autorisation
- Étape 2 : Create ou accéder à un annonceur
- Étape 3 : Create ou accéder à un ordre d’insertion
- Étape 4 : Create une transaction
- Étape 5 : Create un profil d’élément de ligne de transaction organisé
- Étape 6 : Create un élément de ligne de transaction organisé
Étape 1 : Obtenir un jeton d’autorisation
Tout d’abord, vous devez obtenir un jeton d’autorisation. Vous devez ensuite inclure ce jeton d’autorisation dans toutes les demandes suivantes (pour plus d’informations, consultez Service d’authentification ). Pour obtenir un jeton d’autorisation, procédez comme suit :
Create un fichier JSON contenant votre nom d’utilisateur et votre mot de passe.
{ "auth": { "username" : "USERNAME", "password" : "PASSWORD" } }Effectuez une
POSTdemande au point de/authterminaison avec ce fichier JSON dans le corps de la demande (pour plus d’informations, consultez Service d’authentification ). Dans la requête cURL ci-dessous, le jeton d’autorisation retourné est stocké dans le fichier «cookies».curl -c cookies -X POST -d @authentication.json 'https://api.appnexus.com/auth'Vérifiez le corps de la réponse de votre demande (voir Exemple de réponse ci-dessous). Si votre demande a réussi, vous obtenez un «
status» de «OK» et le champ «token» sera rempli avec la valeur du jeton d’authentification.
Exemple de réponse{ "response" : { "token" : "authn:225692:2d787d1838283:lax1", "status" : "OK" } }
Étape 2 : Create ou accéder à un annonceur
Vous devez créer ou accéder à un annonceur à partir duquel créer un élément de ligne de transaction organisé. Vous configurez des annonceurs pour les éléments de ligne de transaction organisés de la même façon que vous le feriez pour les éléments de ligne augmentée.
Si vous n’avez pas encore d’annonceur à utiliser, créez un annonceur en procédant comme suit (consultez Service annonceur pour plus d’informations) :
Create un json d’annonceur :
$ cat advertiser.json { "advertiser": { "name": "Curated Deal Line Item Example Advertiser", "timezone": "US/Pacific" } }Effectuez une
POSTdemande au point dehttps://api.appnexus.com/advertiserterminaison avec ce JSON de l’annonceur et un appropriémember_id.$ curl -b cookies -c cookies -X POST -d @advertiser.json 'https://api.appnexus.com/advertiser?member_id=2378'Vérifiez le corps de la réponse de votre demande. Si votre demande a réussi, vous obtenez un «
status» de «OK» et vous verrez les mises à jour que vous avez effectuées.Notez l’ID de l’annonceur dans le corps de la réponse afin de pouvoir l’utiliser lorsque vous créez l’élément de ligne de transaction organisé à l’étape 6 - Create un élément de ligne de transaction organisé.
Champs JSON pour l’annonceur (champs facultatifs obligatoires et utiles)
| Champ | Type | Obligatoire ou facultatif | Description |
|---|---|---|---|
name |
string | Obligatoire | Nom de l’annonceur |
timezone |
enum | Facultatif | Fuseau horaire de l’annonceur. Pour plus d’informations et les valeurs acceptées, consultez Fuseaux horaires d’API . |
use_insertion_orders |
valeur booléenne | Obligatoire | Ce champ doit être défini sur true pour créer des éléments de ligne de transaction organisés. |
Étape 3 : Create ou accéder à un ordre d’insertion
Vous devez créer un ordre d’insertion ou y accéder pour créer un élément de ligne de transaction organisé. Les éléments de ligne de transaction organisés nécessitent un ordre d’insertion transparent (voir les champs obligatoires ci-dessous).
Si vous n’avez pas encore d’ordre d’insertion à utiliser, créez un ordre d’insertion en procédant comme suit (consultez Service d’ordre d’insertion pour plus d’informations) :
Create un json d’ordre d’insertion :
Exemple JSON : aucune date de fin, aucun budget
$ cat insertion-order-noenddate.json { "insertion-order": { "name": "Curated Deal Line Item Example IO", "budget_intervals": [{ "start_date": "2019-10-10 00:00:00", "end_date": null, "daily_budget": null, "daily_budget_imps": null, "enable_pacing": true, "lifetime_budget": null, "lifetime_budget_imps": null, "lifetime_pacing": false }], "budget_type": "impression" } }Effectuez une
POSTrequête auprès du point dehttps://api.appnexus.com/insertion-orderterminaison avec ce json d’ordre d’insertion et un etmember_idappropriésadvertiser_id.Exemple de demande : aucune date de fin, aucun budget
$ curl -b cookies -c cookies -X POST -d @insertion-order-noenddate.json 'https://api..com/insertion-order?advertiser_id=2605036&member_id=2378'Vérifiez le corps de la réponse de votre demande. Si votre demande a réussi, vous obtenez un «
status» de «OK» et vous verrez les mises à jour que vous avez effectuées.Notez l’ID d’ordre d’insertion dans le corps de la réponse afin de pouvoir l’utiliser lorsque vous créez l’élément de ligne de transaction organisé à l’étape 6 - Create un élément de ligne de transaction organisé.
Champs JSON pour un ordre d’insertion transparent
| Champ | Type | Obligatoire ou facultatif | Description |
|---|---|---|---|
budget_intervals |
tableau d’objets | Obligatoire | Pour qu’un ordre d’insertion créé via l’API soit transparent, vous devez utiliser le budget_intervals champ . |
name |
string | Obligatoire | Nom de l’annonceur |
Étape 4 : Create une transaction
Vous devez créer la transaction que vous souhaitez associer à l’élément de ligne de transaction organisé.
Pour créer une transaction, procédez comme suit (consultez Deal Service pour plus d’informations) :
Create un json de transaction :
$ cat deal.json { "deal": { "name": "Curated Deal", "buyer": { "id": 2379 }, "type": { "id": 5, "name": "Curated" }, "version": 2 } }Effectuez une
POSTdemande au point dehttps://api.appnexus.com/dealterminaison avec ce json de transaction et un appropriémember_id.$ curl -b cookies -c cookies -X POST -d @deal.json 'https://api.appnexus.com/deal?member_id=2378'Vérifiez le corps de la réponse de votre demande. Si votre demande a réussi, vous obtenez un «
status» de «OK» et vous verrez les mises à jour que vous avez effectuées.Notez l’ID de transaction dans le corps de la réponse afin de pouvoir l’utiliser lorsque vous créez l’élément de ligne de transaction à l’étape 6 - Create un élément de ligne de transaction organisé.
Champs JSON pour la transaction
| Champ | Type | Obligatoire ou facultatif | Description |
|---|---|---|---|
auction_type |
objet | Facultatif | Type d’enchère de la transaction (Standard/Fixe/Marché). Cette valeur doit correspondre à ce qui est défini sur l’élément de ligne de transaction organisé (via revenue_typerevenue_value/min_revenue_value/). |
buyer |
string | Obligatoire | ID de membre acheteur de la transaction. Ce champ ne peut pas être modifié après sa création. |
name |
string | Obligatoire | Nom de la transaction. Remarque : l’acheteur verra ce nom. |
type |
objet | Obligatoire | Type de transaction. Ce champ doit être défini sur "5" pour les transactions organisées. |
version |
int | Obligatoire | Ce champ doit être défini sur "2" afin d’associer la transaction à un élément de ligne de transaction organisé. |
Champs JSON facultatifs utiles
Champs JSON pour les créations autorisées
Marque (voir Brand Service)
| Champ | Type | Description |
|---|---|---|
brand_restrict |
valeur booléenne |
-
True: l’offre est limitée uniquement aux marques répertoriées- False: d’autres marques sont autorisées à servir |
brands |
tableau d’objets | Tableau de marques éligibles |
id |
int | Champ dans brands: ID de la marque éligible à la transaction |
name |
string | Champ dans brands: Nom de la marque éligible à la transaction |
override |
valeur booléenne | Champ dans brands: définissez true sur pour permettre à une marque spécifique de servir pour une transaction, même si le profil de qualité de l’annonce l’aurait bloquée. |
Exemple de marque
"brand_restrict": true,
"brands": [
{
"id": 2,
"name": "1800Flowers",
"override": true
},
{
"id": 4,
"name": "Acura",
"override": false
}
]
Type de média (voir Media Subtype Service et Media Type Service)
| Champ | Type | Description |
|---|---|---|
allowed_media_subtypes |
tableau d’objets | Sous-types de média autorisés pour la transaction. |
id |
int | Champ dans allowed_media_subtypes: ID du sous-type de média autorisé pour la transaction |
allowed_media_types |
tableau d’objets | Types de médias autorisés pour la transaction |
id |
int | Champ dans allowed_media_types: ID du type de média autorisé pour la transaction |
Exemple de type de média
"allowed_media_subtypes": [
{
"id": 2,
"last_modified": "2015-09-17 19:19:21",
"media_type": {
"id": 2,
"media_type_group_id": 2,
"name": "Pop",
"uses_sizes": "sometimes"
},
"name": "Popup",
"native_assets": null,
"permitted_sizes": null
}
],
"allowed_media_types": [
{
"id": 1,
"last_modified": "2012-03-16 21:36:10",
"media_type_group_id": 1,
"name": "Banner",
"uses_sizes": "always"
},
{
"id": 4,
"last_modified": "2016-08-22 16:23:12",
"media_type_group_id": 1,
"name": "Video",
"uses_sizes": "never"
}
]
Étape 5 : Create un profil d’élément de ligne de transaction organisé
Ensuite, créez un profil d’élément de ligne de transaction organisé à utiliser dans le ciblage avec l’élément de ligne de transaction organisé. Veillez à noter l’ID de ce profil pour une utilisation ultérieure. Pour plus d’informations, consultez Service de profil.
Remarque
Vous pouvez cibler les éditeurs, les placements et les catégories des vendeurs avec un élément de ligne de transaction organisé à l’aide des tableaux suivants :
platform_publisher_targetsplatform_placement_targets-
platform_content_category_targets.
Vous ne pouvez pas utiliser placement_targets, publisher_targetsou content_category_targets avec un élément de ligne de transaction organisé. Pour plus d’informations, consultez Service de profil.
Pour créer un profil d’élément de ligne de transaction organisé, procédez comme suit (consultez Service de profil pour plus d’informations) :
Create un json de profil d’élément de ligne de transaction organisé :
Exemple : Création de profil avec les seuils de taux d’achèvement des pays et des vues
$ cat profile.json { "profile": { "country_action": "include", "country_targets": [{ "active": true, "code": "US", "id": 233, "name": "United States" }], "engagement_rate_targets": [{ "engagement_rate_pct": 25, "engagement_rate_type": "video_completion" }, { "engagement_rate_pct": 50, "engagement_rate_type": "predicted_iab_video_view_rate" } ], "platform_publisher_targets": [{ "action": "include", "deleted": false, "id": 1238721, "name": "test_publisher" }], "platform_placement_targets": [{ "action": "include", "deleted": false, "id": 5126395 }, { "action": "include", "deleted": false, "id": 5301719 } ], "platform_content_category_targets": [{ "action": "include", "deleted": false, "id": 19062, "is_system": false, "name": "1" }] } }Exemple : création de profil sans ciblage
> cat profile.json { "profile": { } }Effectuez une
POSTdemande au point dehttps://api.appnexus.com/profileterminaison avec ce json de profil de transaction organisé et un appropriéadvertiser_id.Exemple : Création de profil avec les seuils de taux d’achèvement des pays et des vues
> curl -b cookies -c cookies -X POST -d @profile.json 'https://api.appnexus.com/profile?advertiser_id=3410892&member_id=2378'Exemple : création de profil sans ciblage
> curl -b cookies -c cookies -X POST -d @profile.json 'https://api.appnexus.com/profile?advertiser_id=3410892&member_id=2378'Vérifiez le corps de la réponse de votre demande. Si votre demande a réussi, vous obtenez un «
status» de «OK» et vous verrez les mises à jour que vous avez effectuées.Notez l’ID de profil dans le corps de la réponse afin de pouvoir l’utiliser lorsque vous créez l’élément de ligne de transaction organisé à l’étape 6 - Create un élément de ligne de transaction organisé.
Champs JSON facultatifs pour le profil d’élément de ligne de transaction
De nombreux champs facultatifs sont disponibles dans le profil d’élément de ligne de transaction organisée pour le ciblage avec l’élément de ligne de transaction organisé. Par exemple, vous pouvez cibler les propriétés associées à l’inventaire, aux types d’inventaire, aux listes d’autorisation, aux listes de blocage, aux types d’appareils, etc. Pour plus d’informations sur les champs disponibles, consultez Service de profil.
Étape 6 : Create un élément de ligne de transaction organisé
Enfin, vous devez créer l’élément de ligne de transaction organisé pour associer l’ID de transaction et le profil d’élément de ligne de transaction organisé que vous avez créé à l’étape 5 - Create un profil d’élément de ligne de transaction organisé.
Pour créer un élément de ligne de transaction organisé, procédez comme suit (consultez Service d’élément de ligne pour plus d’informations) :
Create un élément de ligne de transaction organisé JSON (vous aurez besoin d’un ID d’annonceur, d’un ID de commande d’insertion, d’un ID de transaction et d’un ID de profil existants).
Exemple JSON : Article de ligne de transaction organisé sans budget
> cat curated_deal_line_item.json { "line-item": { "ad_types": ["video"], "auction_event": { "kpi_auction_type_id": 1, "payment_auction_type_id": 1, "revenue_auction_type_id": 1 }, "budget_intervals": [{ "start_date": "2019-10-11 12:00:00" }], "deals": [{ "id": 628539 }], "insertion_orders": [{ "id": 1363850 }], "line_item_subtype": "standard_curated", "name": "Curated Deal Line Item Example Line Item", "revenue_type": "vcpm", "revenue_value": null, "supply_strategies": { "managed": false, "deals": true, "rtb": false }, "profile_id": 113067333, "valuation": { "min_revenue_value": 10 } } }Exemple JSON : Budget de chiffre d’affaires quotidien de l’élément de ligne de transaction organisé
> cat curated_deal_line_item_daily.json { "line-item": { "ad_types": ["video"], "auction_event": { "kpi_auction_type_id": 1, "payment_auction_type_id": 1, "revenue_auction_type_id": 1 }, "budget_intervals": [{ "daily_budget_imps": 270, "end_date": "2019-10-18 23:59:59", "start_date": "2019-10-11 12:00:00", "timezone": "US/Pacific" }], "deals": [{ "id": 618159 }], "insertion_orders": [{ "id": 1363850 }], "line_item_subtype": "standard_curated", "name": "Curated Deal Line Item Example Line Item", "revenue_type": "vcpm", "revenue_value": null, "supply_strategies": { "managed": true, "deals": true, "rtb": false }, "profile_id": 113067333, "valuation": { "min_revenue_value": 10 } } }Effectuez une
POSTdemande au point de terminaison à l’aide dehttps://api.appnexus.com/line-itemcet élément de ligne de transaction JSON et d’un élément appropriéadvertiser_id.Exemple de demande : Article de ligne de transaction organisé sans budget
> curl -b cookies -c cookies -X POST -d @curated_deal_line_item.json 'https://api.appnexus.com/line-item?member_id=2378&advertiser_id=3410892'Exemple de demande : budget de chiffre d’affaires quotidien de l’élément de ligne de transaction organisé
> curl -b cookies -c cookies -X POST -d @curated_deal_line_item_daily.json 'https://api.appnexus.com/line-item?member_id=2378&advertiser_id=3410892'Vérifiez le corps de la réponse de votre demande. Si votre demande a réussi, vous obtenez un «
status» de «OK» et vous verrez les mises à jour que vous avez effectuées.Notez l’ID d’élément de ligne dans le corps de la réponse afin de pouvoir identifier cet élément de ligne de transaction organisé ultérieurement pour modifier son
state(activeouinactive).
Champs JSON pour l’élément de ligne de transaction organisé
| Champ | Type | Description |
|---|---|---|
insertion_orders |
tableau | Tableau contenant l’ID d’ordre d’insertion auquel vous souhaitez associer cet élément de ligne de transaction organisé |
name |
string | Nom de l’article de la ligne de transaction organisée (Remarque : l’acheteur ne verra pas cela) |
ad_types |
tableau | Type de création utilisé pour cet élément de ligne de transaction organisé. Valeurs possibles : - "banner"- "video" (inclut également les types audio)- "native" |
line_item_subtype |
enum | Sous-type d’élément de ligne. Pour les éléments de ligne de transaction organisés, la valeur de ce champ doit être "standard_curated". Consultez la remarque pour ce champ. |
profile_id |
entier | ID de profil associé à l’élément de ligne de transaction organisé (voir Étape 5 - Create un profil d’élément de ligne de transaction organisé) |
budget_intervals |
tableau d’objets | Incluez toujours un start_date. Laissez end_datenull pour un élément de ligne de transaction sans date de fin. |
deals |
tableau d’objets | Le id champ dans les transactions doit être l’ID de la transaction que vous avez créée à l’étape 4 - Create une transaction. |
supply_strategies |
objet | Objet contenant plusieurs champs booléens utilisés pour désigner les sources d’approvisionnement d’inventaire que vous souhaitez cibler. Pour un élément de ligne de transaction organisé, le managed champ doit être défini sur false (cette valeur est affectée lorsque a la "line_item_subtype" valeur "standard_curated")Remarque : les rtb champs et/ou deals doivent être définis sur true (ces champs ne sont pas affectés lorsque "line_item_subtype" a la "standard_curated"valeur ), vous devez donc affecter ces valeurs en conséquence.Note de terminologie : - rtb fait référence à Open Exchange Inventory Aggregation- deals fait référence aux offres de cumul |
revenue_type |
enum |
cpm pour l’offre vcpm à prix fixe (CPM), pour le prix standard (CPM dynamique). |
revenue_value |
double | Si vous définissez sur revenue_typecpm (Fixe), définissez le prix fixe à l’aide de revenue_value. Si vous utilisez Standard, définissez cette valeur sur null. |
valuation |
objet | Pour les transactions organisées, utilisez les champs d’objet d’évaluation suivants : - min_revenue_value - Si vous définissez sur revenue_typevcpm (Standard), définissez le prix plancher dans min_revenue_value.- Si vous définissez sur cpmrevenue_type (Fixe), définissez la valeur de min_revenue_value sur null. - min_margin_cpm - Définissez la valeur de marge dans min_margin_cpm lors de l’utilisation de CPM comme type de marge.- min_margin_pct - Définissez la valeur de la marge dans min_margin_pct lors de l’utilisation du pourcentage comme type de marge.Remarque : Les min_margin_cpm champs et min_margin_pct ne peuvent pas être définis en même temps. Si l’un est défini, l’autre doit être null. |
auction_event |
objet | Objet pour les propriétés de type d’événement d’enchère : les kpi_auction_type_idchamps , payment_auction_type_idet revenue_auction_type_id de l’objet auction_event doivent tous avoir la valeur 1. |
Remarque pour line_item_subtype le champ
La définition line_item_subtype du champ sur "standard_curated" affecte automatiquement les valeurs suivantes à ces champs associés.
"line_item_type": "standard_v2",
"bid_object_type": "deal",
"delivery_model_type": "standard",
"supply_strategies": {
"managed": false,
"programmatic_guaranteed": false
}
Impossible de modifier le line_item_subtype champ (et les champs/tableaux associés) après la création de l’élément de ligne.
Champs JSON facultatifs utiles pour l’élément de ligne de transaction organisé
| Champ | Type | Description |
|---|---|---|
budget_intervals |
tableau d’objets | Définissez un budget sur la transaction à l’aide de champs dans budget_intervals notamment : daily_budget, daily_budget_imps, lifetime_budgetou lifetime_budget_imps. Utilisez les champs sans imp si l’élément de ligne de transaction organisé a le type de budget de chiffre d’affaires ou les champs avec _imp à la fin si l’élément de ligne de transaction a une impression de type de chiffre d’affaires. Vous pouvez avoir un budget quotidien ou à vie, pas les deux. Un budget de durée de vie qui se trouve entre les vols finit par être réparti sur chaque vol via l’API. N’oubliez pas que si votre transaction n’a pas de date de fin, elle ne peut pas avoir de budget. |
state |
enum | État de l’élément de ligne de transaction organisé. La valeur par défaut est active, donc définie sur inactive si vous ne souhaitez pas que l’offre soit immédiatement mise en ligne. |