Partager via


Guide de configuration de l’API d’élément de ligne de transaction organisée

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 state champ 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 GET que 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

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 :

  1. Create un fichier JSON contenant votre nom d’utilisateur et votre mot de passe.

    {
        "auth": {
            "username" : "USERNAME",
            "password" : "PASSWORD"
        }
    }
    
  2. Effectuez une POST demande au point de /auth terminaison 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'
    
  3. 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) :

  1. Create un json d’annonceur :

    $ cat advertiser.json
    {
        "advertiser": {
            "name": "Curated Deal Line Item Example Advertiser",
            "timezone": "US/Pacific"
        }
    }
    
  2. Effectuez une POST demande au point de https://api.appnexus.com/advertiser terminaison 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'
    
  3. 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.

  4. 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) :

  1. 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"
        }
    }
    
  2. Effectuez une POST requête auprès du point de https://api.appnexus.com/insertion-order terminaison avec ce json d’ordre d’insertion et un et member_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'
    
  3. 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.

  4. 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) :

  1. Create un json de transaction :

    $ cat deal.json
    {
        "deal": {
            "name": "Curated Deal",
            "buyer": {
                "id": 2379
            },
            "type": {
                "id": 5,
                "name": "Curated"
            },
            "version": 2
        }
    }
    
  2. Effectuez une POST demande au point de https://api.appnexus.com/deal terminaison 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'
    
  3. 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.

  4. 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_targets
  • platform_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) :

  1. 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": {
        }
    }
    
  2. Effectuez une POST demande au point de https://api.appnexus.com/profile terminaison 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'
    
  3. 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.

  4. 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) :

  1. 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
                    }
            }
    }
    
  2. Effectuez une POST demande au point de terminaison à l’aide de https://api.appnexus.com/line-item cet é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'
    
  3. 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.

  4. 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 (active ou inactive).

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.