Partager via


Service de modèle de demande personnalisée creative

Remarque

Ce service est actuellement disponible pour un ensemble limité de clients et d’employés Microsoft uniquement.

Pour prendre en charge la médiation des serveurs publicitaires mobiles, Xandr utilise un type de création à médiation. Contrairement aux créations standard, qui résident en tant que contenu statique sur un serveur, les créations médiatisées sont des conteneurs configurables qui récupèrent le contenu côté serveur. Le service de modèle de demande personnalisée créative est utilisé pour générer les requêtes qui remplissent ces créations médiatées. Pour ce faire, il gère un ensemble de modèles personnalisés, chacun correspondant à un serveur publicitaire différent et associé à un « type » de modèle défini par le service de type de modèle de demande personnalisée creative.

Ce document décrit les champs mis à disposition par ce service d’API, ainsi que des exemples d’utilisation. Consultez la section Exemples ci-dessous.

Remarque

API REST

Remarque

Ces informations sont destinées aux employés de Xandr. Si vous êtes un employé et un utilisateur administrateur, vos autorisations sont les suivantes :

  • Les modèles globaux s’affichent.
  • Vous pouvez afficher les modèles spécifiques aux membres en ajoutant a =member_id=field à la chaîne de requête de votre requête.

Autorisations d’affichage de modèle :

Si vous êtes membre, vous serez en mesure d’afficher les modèles suivants :

  • Modèles globaux (ceux qui appartiennent à member_id=0).
  • Vos propres modèles, c’est-à-dire ceux associés à votre member_id.
HTTP, méthode Endpoint Description
POST https://api.appnexus.com/creative-custom-request-template Create un modèle de requête personnalisé.
GET https://api.appnexus.com/creative-custom-request-template?id=123 Afficher un modèle de demande personnalisé spécifique.
GET - https://api.appnexus.com/creative-custom-request-template?member_id=0
- https://api.appnexus.com/creative-custom-request-template?member_id=YOUR_MEMBER_ID
Affichez tous les modèles de requête personnalisés que vous avez l’autorisation d’afficher.
PUT https://api.appnexus.com/creative-custom-request-template Mettre à jour un modèle de requête personnalisé.
DELETE https://api.appnexus.com/creative-custom-request-template?id=123 Supprimer un modèle de requête personnalisé.
GET https://api.appnexus.com/creative-custom-request-template/meta Découvrez les champs que vous pouvez filtrer et trier.

Champs JSON

Nom Type Description
macros tableau d’objets Il s’agit des macros (ou paramètres de chaîne de requête) qui seront envoyées sur la requête. Consultez Macros.
Trier par : Non
Filtrer par : Non
id int ID de ce modèle.
Obligatoire sur :PUT
Trier par : Oui
Filtrer par : Oui
type_id int ID du type de modèle de demande personnalisée creative associé à ce modèle.
Par défaut:null
Obligatoire sur :POST
Trier par : Oui
Filtrer par : Oui
member_id int ID de membre dont les créations de médiation seront associées à ce modèle. Pour plus d’informations, consultez Le service créatif et le service membre.
Par défaut:0
Trier par : Oui
Filtrer par : Oui
media_subtype_id int ID de sous-type de média pour ce modèle. Dérivé de l’objet Media Subtype ci-dessous.
Par défaut:null
Trier par : Oui
Filtrer par : Oui
hostname string Nom d’hôte du serveur publicitaire pour lequel nous créons une demande de médiation.
Par défaut:null
Obligatoire sur :POST
Trier par : Oui
Filtrer par : Oui
uri string URI complet du serveur publicitaire externe auquel nous allons envoyer notre demande.
Par défaut:null
Obligatoire Sur :POST, PUT si is_client a la valeur false.
Trier par : Oui
Filtrer par : Oui
port int Port sur le serveur publicitaire externe auquel nous allons envoyer notre demande.
Par défaut:80
Trier par : Oui
Filtrer par : Oui
is_post Valeur booléenne Indique si la requête HTTP que nous effectuons est un POST.
Par défaut:false
Trier par : Oui
Filtrer par : Oui
content string Charge utile de contenu que nous envoyons avec la requête. Par exemple, il peut s’agir d’une chaîne JSON ou XML.
Par défaut:null
Trier par : Oui
Filtrer par : Oui
timeout_ms int Délai d’expiration pris en charge par ce serveur publicitaire (ou le délai d’expiration que nous allons imposer en attendant ce serveur publicitaire).
Par défaut:0
Trier par : Oui
Filtrer par : Oui
is_client Valeur booléenne Indique si la requête provient d’un client HTTP (par exemple, un Kit de développement logiciel (SDK).
Par défaut:false
Trier par : Oui
Filtrer par : Oui
media_subtype tableau Style d’affichage des créatifs qui peuvent utiliser ce modèle. Chaque sous-type de média appartient à un type de média surordinate. Par exemple, le sous-type de média « Bannière standard » appartient au type de média « Bannière ». Pour plus d’informations, consultez Sous-type de média ci-dessous.
Trier par : Non
Filtrer par : Non
last_modified date Date et heure de la dernière mise à jour de cet objet.
Trier par : Oui
Filtrer par : Oui

Macros

Nom Type Description
id int ID de cette macro.
Par défaut:null
Trier par : Oui
Filtrer par : Oui
template_id int Modèle de demande personnalisée créative à laquelle cette macro est associée.
Par défaut:null
Trier par : Oui
Filtrer par : Oui
code string Paramètre de chaîne de requête qui sera intégré à l’URL, par exemple. send_referer
Trier par : Oui
Filtrer par : Oui
name string Description de ce que fait la macro, par exemple, « Basculez si le referer doit être envoyé ».
Trier par : Oui
Filtrer par : Oui
type chaîne Type de valeur accepté par le paramètre.

Note: La valeur par défaut de "string" est également la plus courante. Les valeurs autorisées sont notamment les suivantes :
- true_false
- string
- url
- integer
- decimal
- string_list
- select_from_list
Par défaut:string
Trier par : Oui
Filtrer par : Oui
is_required Valeur booléenne Indique si cette macro est requise dans un appel au serveur publicitaire externe.
Par défaut:true
Trier par : Oui
Filtrer par : Oui
last_modified date Date et heure de la dernière mise à jour de cet objet de macro.
Trier par : Oui
Filtrer par : Oui

Sous-type de média

Vous pouvez utiliser le service de sous-type multimédia et le service de type de média pour afficher tous les sous-types de médias pris en charge et les types de médias auxquels ils appartiennent. Pour obtenir une définition générale de chaque type de média pris en charge, consultez Types de médias pris en charge.

Champ Type Description
id int ID du sous-type de média.
name chaîne En lecture seule. Nom du sous-type de média.
media_type_name chaîne En lecture seule. Nom du type de média auquel appartient le sous-type.
mediatype_id int En lecture seule. ID du type de média auquel appartient le sous-type.

Exemples

Afficher tous les modèles de demande de création (que vous avez les autorisations nécessaires pour afficher)

Dans l’exemple ci-dessous, notez la différence entre la façon dont les macros Xandr standard sont affichées dans le uri champ, par exemple, * $\{USER_IP\} et la façon dont les macros personnalisées définies par serveur ad-server par ce service sont affichées : * \#\{MK_SITEID\}. Vous pouvez voir les définitions de chaque macro dans le macros tableau d’objets ci-dessous. Vous pouvez uniquement afficher les modèles de demande appartenant à votre propre ID de membre ou les modèles publics appartenant à l’ID de 0membre .


{code}
$ curl -b cookies https://api.appnexus.com/creative-custom-request-template?member_id=0
{
    "response": {
        "status": "OK",
        "count": 4,
        "start_element": 0,
        "num_elements": 100,
        "creative-custom-request-templates": [
            {
                "id": 1,
                "type_id": 2,
                "member_id": 0,
                "media_subtype_id": 1,
                "hostname": "w.inmobi.com",
                "uri": "/showad.asm?mk-siteid=#{MK_SITEID}&mk-carrier=${USER_IP}&h-user-agent=${USER_AGENT_ENC}&h-referer=${REFERER_URL_ENC}&u-id-map=${INMOBI_UID_MAP}&u-latlong-accu=${INMOBI_LAT_LONG_ACCU}&u-age=${AGE}&u-gender=${GENDER}&d-localization=${USER_LOCALE}&d-nettype=${INMOBI_NETTYPE}&d-orientation=${INMOBI_ORIENTATION}",
                "port": 80,
                "is_post": false,
                "content": "",
                "timeout_ms": 200,
                "is_client": false,
                "last_modified": "2013-07-10 19:27:41",
                "media_subtype": {
                    "id": 1,
                    "name": "Standard Banner",
                    "media_type_name": "Banner",
                    "mediatype_id": 1
                },
                "macros": [
                    {
                        "id": 1,
                        "template_id": 1,
                        "code": "MK_SITEID",
                        "name": "MK_SITEID",
                        "type": "string",
                        "is_required": true,
                        "last_modified": "2013-07-10 19:27:41"
                    }
                ]
            },
            {
                "id": 2,
                "type_id": 3,
                "member_id": 0,
                "media_subtype_id": 1,
                "hostname": "ads.mydas.mobi",
                "uri": "/getAd?apid=#{APID}&auid=${DEVICE_MD5}&ua=${USER_AGENT_ENC}&uip=${USER_IP}&age=${AGE}&gender=${GENDER}&zip=${POSTAL_CODE}&lat=${GEO_LAT}&long=${GEO_LON}",
                "port": 80,
                "is_post": false,
                "content": "",
                "timeout_ms": 200,
                "is_client": false,
                "last_modified": "2013-07-10 19:27:50",
                "macros": [
                    {
                        "id": 2,
                        "template_id": 2,
                        "code": "APID",
                        "name": "APID",
                        "type": "string",
                        "is_required": true,
                        "last_modified": "2013-07-10 19:27:50"
                    }
                ]
            },
            {
                "id": 3,
                "type_id": 4,
                "member_id": 0,
                "media_subtype_id": 5,
                "hostname": "ads.mojiva.com",
                "uri": "/ad?zone=#{ZONE}&ip=${USER_IP}&ua=${USER_AGENT_ENC}&url=${REFERER_URL_ENC}&udid=${DEVICE_MD5}&lat=${GEO_LAT}&long=${GEO_LON}&country=${USER_COUNTRY}&region=${USER_STATE}&city=${USER_CITY}&dma=${USER_DMA}&zip=${POSTAL_CODE}",
                "port": 80,
                "is_post": false,
                "content": "",
                "timeout_ms": 200,
                "is_client": false,
                "media_subtype": {
                    "id": 1,
                    "name": "Standard Banner",
                    "media_type_name": "Banner",
                    "media_type_id": 1
                },
                "last_modified": "2013-07-10 19:28:00",
                "macros": [
                    {
                        "id": 3,
                        "template_id": 3,
                        "code": "ZONE",
                        "name": "ZONE",
                        "type": "string",
                        "is_required": true,
                        "last_modified": "2013-07-10 19:28:00"
                    }
                ]
            },
            {
                "id": 4,
                "type_id": 5,
                "member_id": 0,
                "media_subtype_id": 5,
                "hostname": "a.jumptap.com",
                "uri": "/a/ads?hid_sha1=${DEVICE_SHA1}&idfa=${DEVICE_APPLE_IDA}&pub=#{PUB}&site=#{SITE}&spot=#{SPOT}&url=${REFERER_URL_ENC}&ua=${USER_AGENT_ENC}&client-ip=${USER_IP}&country=${USER_COUNTRY}&ll=${JUMPTAP_LAT_LONG_ENC}&mt-age=${AGE}&mt-gender=${GENDER}",
                "port": 80,
                "is_post": false,
                "content": "",
                "timeout_ms": 200,
                "is_client": false,
                "media_subtype": {
                    "id": 5,
                    "name": "Interstitial",
                    "media_type_name": "Interstitial",
                    "media_type_id": 3
                },
                "last_modified": "2013-07-10 19:28:10",
                "macros": [
                    {
                        "id": 4,
                        "template_id": 4,
                        "code": "PUB",
                        "name": "PUB",
                        "type": "string",
                        "is_required": true,
                        "last_modified": "2013-07-10 19:28:10"
                    },
                    {
                        "id": 5,
                        "template_id": 4,
                        "code": "SITE",
                        "name": "SITE",
                        "type": "string",
                        "is_required": true,
                        "last_modified": "2013-07-10 19:28:10"
                    },
                    {
                        "id": 6,
                        "template_id": 4,
                        "code": "SPOT",
                        "name": "SPOT",
                        "type": "string",
                        "is_required": true,
                        "last_modified": "2013-07-10 19:28:10"
                    }
                ]
            }
        ],
        "dbg_info": {
            "instance": "28.bm-hbapi.prod.nym1",
            "s1ave_hit": true,
            "db": "141.bm-mysql.prod.nym1",
            "reads": 1,
            "read_limit": 100,
            "read_limit_seconds": 60,
            "writes": 0,
            "write_limit": 60,
            "write_limit_seconds": 60,
            "awesomesauce_cache_used": false,
            "count_cache_used": false,
            "warnings": [],
            "time": 66.461801528931,
            "start_microtime": 1373651335.4519,
            "version": "1.13.52",
            "s1ave_lag": 1,
            "member_last_modified_age": 68896
        }
    }
}
{code}

Afficher un seul modèle de demande personnalisée créative

{code}
$ curl -b cookies https://api.appnexus.com/creative-custom-request-template?id=2
{
    "response": {
        "status": "OK",
        "count": 1,
        "start_element": 0,
        "num_elements": 100,
        "creative-custom-request-template": {
            "id": 2,
            "type_id": 3,
            "member_id": 0,
            "media_subtype_id": 1,
            "hostname": "ads.mydas.mobi",
            "uri": "/getAd?apid=#{APID}&auid=${DEVICE_MD5}&ua=${USER_AGENT_ENC}&uip=${USER_IP}&age=${AGE}&gender=${GENDER}&zip=${POSTAL_CODE}&lat=${GEO_LAT}&long=${GEO_LON}",
            "port": 80,
            "is_post": false,
            "content": "",
            "timeout_ms": 200,
            "is_client": false,
            "media_subtype": {
                "id": 1,
                "name": "Standard Banner",
                "media_type_name": "Banner",
                "media_type_id": 1
            },
            "last_modified": "2013-07-10 18:57:43",
            "macros": [
                {
                    "id": 2,
                    "template_id": 2,
                    "code": "APID",
                    "name": "APID",
                    "type": "string",
                    "is_required": true,
                    "last_modified": "2013-07-02 00:50:53"
                }
            ]
        },
        "dbg_info": {
            "instance": "05.hbapi.sand-08.lax1",
            "s1ave_hit": false,
            "db": "master",
            "awesomesauce_cache_used": false,
            "count_cache_used": false,
            "warnings": [],
            "time": 68.688154220581,
            "start_microtime": 1373910064.7161,
            "version": "1.13.53.1",
            "s1ave_miss": "no_service_index",
            "s1ave_lag": 0,
            "member_last_modified_age": 1373910064
        }
    }
}
{code}

Create un modèle de requête

Create un fichier JSON spécifiant les champs de votre modèle de requête.

Remarque

Le type_id champ est obligatoire sur POST.

Pour plus d’informations sur les types de modèles de requête, consultez le service De type de modèle de demande personnalisée creative. Pour obtenir de la documentation sur les macros et paramètres de demande d’annonces que nous prenons en charge pour l’intégration avec des serveurs ad mobiles externes, consultez Paramètres du modèle de demande personnalisée creative.

{code}
$ cat create.json
{
    "creative-custom-request-template": {
        "hostname": "ads.light-vs-wily.com",
        "uri": "/a/ads?hid_sha1=${DEVICE_SHA1}&idfa=${DEVICE_APPLE_IDA}&enemy=#{ENEMY}&light_or_wily=#{LIGHT_OR_WILY}&megaman_version=#{MEGAMAN_VERSION}&url=${REFERER_URL_ENC}&ua=${USER_AGENT_ENC}&client-ip=${USER_IP}&country=${USER_COUNTRY}&ll=${JUMPTAP_LAT_LONG_ENC}&mt-age=${AGE}&mt-gender=${GENDER}",
        "port": 49995,
        "is_post": false,
        "content": "",
        "timeout_ms": 2,
        "is_client": false,
        "type_id": 1
    }
}
{code}

Effectuez un POST appel à l’API avec la charge utile JSON incluse.

{code}
$ curl -b cookies -X POST -d @create.json https://api.appnexus.com/creative-custom-request-template
{
    "response": {
        "status": "OK",
        "count": 1,
        "start_element": 0,
        "num_elements": 100,
        "creative-custom-request-template": {
            "id": 13,
            "type_id": 1,
            "member_id": 0,
            "media_subtype_id": 1,
            "hostname": "ads.light-vs-wily.com",
            "uri": "/a/ads?hid_sha1=${DEVICE_SHA1}&idfa=${DEVICE_APPLE_IDA}&enemy=#{ENEMY}&light_or_wily=#{LIGHT_OR_WILY}&megaman_version=#{MEGAMAN_VERSION}&url=${REFERER_URL_ENC}&ua=${USER_AGENT_ENC}&client-ip=${USER_IP}&country=${USER_COUNTRY}&ll=${JUMPTAP_LAT_LONG_ENC}&mt-age=${AGE}&mt-gender=${GENDER}",
            "port": 49995,
            "is_post": false,
            "content": "",
            "timeout_ms": 2,
            "is_client": false,
            "media_subtype": {
                "id": 1,
                "name": "Standard Banner",
                "media_type_name": "Banner",
                "media_type_id": 1
            },
            "last_modified": "2013-07-15 19:02:02",
            "macros": ""
        },
        "dbg_info": {
            "instance": "07.hbapi.sand-08.lax1",
            "s1ave_hit": false,
            "db": "master",
            "awesomesauce_cache_used": false,
            "count_cache_used": false,
            "warnings": [],
            "time": 67.02995300293,
            "start_microtime": 1373914957.1776,
            "version": "1.13.53.1",
            "s1ave_miss": "no_service_index",
            "s1ave_lag": 0,
            "member_last_modified_age": 1373914957
        }
    }
}
{code}

Mettre à jour un modèle de requête

Tout d’abord, créez un fichier JSON avec uniquement les paramètres que vous souhaitez mettre à jour.

Remarque

Vous devez inclure le id du modèle de requête en cours de mise à jour.

{code}
$ cat update.json
{"creative-custom-request-template":{"id":13, "type_id":2, "timeout_ms":250}}
{code}

Effectuez l’appel PUT , y compris la mise à jour JSON.

Remarque

Pour réussir un PUT appel, vous devez effectuer les opérations suivantes :

  • Spécifier l’ID du modèle de requête dans le fichier JSON
  • N’ajoutez aucun paramètre de chaîne de requête (comme ?id=123) à votre requête (voir l’exemple ci-dessous).
{code}
$ curl -b cookies -X PUT -d @update.json https://api.appnexus.com/creative-custom-request-template
{code}

Remarque

Un appel réussi PUT ne retourne aucune réponse JSON.

Supprimer un modèle de demande

La suppression d’un modèle de demande est simple, contrairement à l’appel PUT ci-dessus, vous devez spécifier l’ID du modèle que vous souhaitez supprimer.

{code}
$ curl -b cookies -X DELETE https://api.appnexus.com/creative-custom-request-template?id=123
{code}