Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En esta página se describe cómo integrar un ofertante con Xandr. Comienza con una descripción general de las diferentes "capas" de la integración y termina con un ejemplo trabajado (utilizando llamadas API reales) de una integración simple que lo pondrá en marcha rápidamente en nuestro entorno de prueba. También proporciona enlaces a información más detallada en otras partes de nuestra Wiki.
Información general del sistema
Nota:
Protocolo de licitación
Xandr admite actualmente el protocolo de licitación OpenRTB 2.4. Para obtener más información, consulte nuestra página Protocolo de licitación .
En un nivel superior, hay dos "capas" del sistema de las que debemos preocuparnos durante la configuración del licitador:
Capa Real-Time (RTB): Este es el corazón de la acción, donde su postor participará en la subasta en tiempo real.
Nuestro servidor recibe una solicitud de oferta de una página web (o socio de SSP) y la formatea para prepararse para enviarla a nuestros postores.
Usando la configuración en la instancia del ofertante (y su objeto de ofertante), enviamos la solicitud a sus servidores.
- El punto de conexión al que llega la solicitud depende del tipo de solicitud.
Capa de configuración (API): Aquí es donde configurará la "lógica comercial" de su ofertante para que pueda ofertar por impresiones; En otras palabras, filtrar impresiones no deseadas y configurar usuarios, agregar las creatividades que sus miembros desean servir, etc.
Nota sobre la jerarquía de objetos
Es importante comprender cómo se relacionan entre sí nuestros objetos de plataforma. A continuación se muestra un esquema de nuestra jerarquía de objetos.
Licitadores, miembros, escaños
- Los postores son el objeto más alto en nuestra jerarquía del lado de la compra. Representa la presencia de su entidad en nuestra plataforma.
- Debajo de ellos están los miembros. La relación solía ser de uno a muchos, con un postor que posiblemente tuviera varias rupturas de miembros.
- Ya no es así. Ahora es uno a uno, ya que ya no se admiten desgloses de miembros adicionales.
- Se integrará con un solo miembro, al que nos referimos como su 'Miembro predeterminado'.
- Los miembros se consideran entidades que tienen acuerdos contractuales para comprar (o vender) a través del bus de impresión (para obtener más detalles, consulte el Servicio para miembros).
- Los recursos creativos se asocian con su miembro predeterminado, no con su ofertante.
- Los propios licitadores no son miembros, sino que son los proveedores de tecnología para los miembros.
- El ofertante es donde configura una conexión con Xandr (por ejemplo, qué tipo de solicitudes recibir, a qué punto final, etc.).
- El miembro es donde se configuran los objetos relacionados con la campaña, como las creatividades.
- El postor está integrado en nuestra interfaz de usuario. El bus de impresiones conecta a los ofertantes con varias fuentes de inventario, incluidos agregadores, intercambios de anuncios e inventario de reventa en red.
- Los asientos son entidades internas que puedes usar para pujar en nuestras subastas y comprar impresiones con su correspondiente identificador interno.
- El diagrama siguiente ilustra esta jerarquía
- Con los desgloses de miembros anteriores, realizamos un mapeo de cuál de los asientos de un postor correspondía a qué miembro destacado. Esto permitió a los licitadores ofertar con sus identificaciones internas el 100% del tiempo.
- Dado que se integrará con un solo miembro, y con la oferta de asientos del comprador, solo tendrá un miembro predeterminado y no tendrá que preocuparse por la asignación asiento-miembro.
Usuarios
Tradicionalmente, los postores pueden actuar en su nombre o pueden tener varios miembros de terceros.
Los miembros deben tener al menos un usuario, independientemente de si el miembro actúa en nombre de un tercero (para obtener más detalles, consulte el Servicio de usuario).
- Los miembros pueden tener muchos usuarios.
El licitador, como proveedor de tecnología, también tiene al menos un usuario.
Los usuarios de los licitadores ajustan el perfil del licitador, agregan instancias de licitadores, etc.
Los usuarios miembros cargan creatividades para ese miembro, etc.
Incluso si el postor es la misma corporación que un miembro, y el postor solo actúa en su nombre, el postor es lógicamente distinto del miembro de la misma manera.
Cómo configurar el pujador
En esta sección, recorreremos todo el proceso de configuración de un postor en la plataforma. Comenzaremos realizando las llamadas API necesarias para conectar las canalizaciones.
Sugerencia
API
La mayoría de las pruebas de cliente se realizan en nuestras API de producción. También tenemos una API de entorno de prueba que permite probar los flujos de trabajo de creación y actualización de objetos.
La mayoría de las llamadas de ejemplo siguientes se realizan en el entorno de API de producción.
Autenticarse con la API
Antes de que podamos hacer cualquier otra cosa, tenemos que iniciar sesión. A continuación se muestra un ejemplo del JSON de autenticación que puede usar. El proceso de autenticación para nuestro entorno de producción y pruebas es el mismo. La única diferencia es el punto de conexión.
Sugerencia
Para obtener información más detallada sobre la autenticación a través de nuestra API, consulte el Servicio de autenticación.
JSON de autenticación de ejemplo
$ cat auth.json
{
"auth":
{
"username" : "rloveland",
"password" : "AppNexus1!"
}
}
Publique en la API de producción para autenticar:
Ejemplo de llamada de autenticación en la API de producción
$ export IB="https://api.adnxs.com";
$ curl -b cookies -c cookies -X POST -d @auth.json $IB/auth
{ response": { "status": "OK", ... } }
Del mismo modo, publique en el entorno de prueba para autenticar:
Ejemplo de llamada de autenticación en la API de pruebas
$ export IB_TESTING="https://api-test.adnxs.com";
$ curl -b cookies -c cookies -X POST -d @auth.json $IB_TESTING/auth
{ response": { "status": "OK", ... } }
Ver el objeto de licitación
El objeto ofertante representa a su ofertante en nuestro sistema. Como tal, tiene muchos campos que puede usar para configurar cómo interactúa su ofertante con nuestra plataforma. Piense en ello como el "gancho" central en el que colgará gran parte del resto de su configuración. Tu representante de Xandr ya debería haber creado un objeto de licitador para ti.
En el siguiente ejemplo, hacemos una GET llamada para ver el objeto licitador, pero no explicamos ninguno de sus detalles. Para obtener información más detallada sobre el objeto licitador, consulte el Servicio de licitador.
Expandir para ver un ejemplo de llamada
$ export IB="https://api.adnxs.com";
$ curl -b cookies $IB/bidder/123
{
"response": {
"bidder": {
"active": true,
"always_send_owned_segments": true,
"audit_notify_uri": null,
"bid_percent": 100,
"bid_uri": "/xandr/bid",
"child_profiles": null,
"click_uri": null,
"daily_budget": null,
"daily_budget_imps": null,
"default_currency": "USD",
"default_member": {
"id": 9876,
"name": "Example Bidder's Default Member Name"
},
"dongle": null,
"exclude_unowned": false,
"id": 123,
"last_activity": "2021-02-03 19:47:25",
"lifetime_budget": null,
"lifetime_budget_imps": null,
"max_allowed_profiles": 5,
"max_seats": 10000,
"name": "ExampleBidder",
"notify_full_auction": false,
"notify_uri": null,
"num_conns": 3,
"object_limit_notify_email": null,
"parent_profile_id": null,
"pixel_uri": null,
"protocol_id": 10,
"protocol_name": "openrtb2",
"ready_uri": "/status/ready",
"send_class_2": true,
"send_class_3": true,
"send_owned_blocklist": false,
"send_public_deals": false,
"send_unaudited": true,
"setuid_function": null,
"short_name": "examplebidder",
"supports_deal_buyers": "seats",
"userdata_entity_id": null,
"userdata_javascript": null,
"vendor_id": null
},
"count": 1,
"dbg": {
"output_term": "bidder",
"version": "1.0.5",
"warnings": [
]
},
"num_elements": 100,
"start_element": 0,
"status": "OK"
}
}
Configuraciones de objetos licitadores
Para los siguientes campos del objeto "Ofertante", no se debe incluir la dirección IP o el nombre de host antes de la ruta de acceso.
La dirección IP se configurará por separado en los objetos "Instancia del licitador" en el siguiente paso del proceso de integración.
| Campo | Obligatorio | Descripción |
|---|---|---|
| bid_uri | la ruta / nombre de archivo que especifica el destino de las Licitaciones (por ejemplo, "/bidder") | |
| ready_uri | la ruta de acceso o el nombre de archivo que especifica el destino de las solicitudes Ready (por ejemplo, "/ready") | |
| notify_uri | la ruta de acceso/nombre de archivo que especifica el destino de las solicitudes de notificación (por ejemplo, "/notify") | |
| pixel_uri | opcional | La ruta de acceso o nombre de archivo que especifica el destino |
| click_uri | opcional | la ruta o el nombre de archivo que especifica el destino de las solicitudes de clic. |
| audit_notify_uri | opcional | la ruta de acceso o nombre de archivo que especifica el destino de las solicitudes de notificación de auditoría (por ejemplo, "https://examplebidder.com/audit_notify_endpoint") |
Ver el objeto miembro
Debe tener al menos un miembro que compre a través de su postor. Tu representante de Xandr debería haber creado un miembro como parte del proceso de incorporación. El miembro es donde configurará gran parte de la "lógica de negocios", como segmentos de usuarios, creatividades, etc.
Sugerencia
En el ejemplo siguiente, hacemos una GET llamada para ver el objeto miembro, pero no explicamos ninguno de sus detalles. Algunos de los campos que se muestran pueden estar en desuso. Para obtener información más detallada sobre el objeto miembro, incluidos los campos que se admiten actualmente, consulte Servicio para miembros.
Expandir para ver un ejemplo de llamada
$ export IB="https://api.adnxs.com";
$ curl -b $IB/member/1234
{
"response": {
"count": 1,
"dbg": {
"output_term": "member",
"version": "1.18.1651",
"warnings": [
]
},
"member": {
"account_owner_user": {
"first_name": "Peter",
"id": 123456,
"last_name": "Driver"
},
"active": true,
"active_contract": null,
"age_segment_id": null,
"agent_id": null,
"allow_ad_profile_override": true,
"allow_priority_audit": false,
"audit_notify_email": null,
"bidder_id": 1234,
"billing_address_1": null,
"billing_address_2": null,
"billing_city": null,
"billing_country": null,
"billing_name": "ExampleMemberName",
"billing_postal_code": null,
"billing_region": null,
"buyer_clearing_fee_pct": null,
"buyer_credit_limit": 2500,
"code": null,
"contact_email": null,
"contact_info": null,
"contracts": null,
"curation_deductions_allowed": false,
"daily_imps_self_audited": null,
"daily_imps_unaudited": null,
"daily_imps_verified": null,
"deal_visibility_profile_id": null,
"default_accept_data_provider_usersync": true,
"default_accept_demand_partner_usersync": true,
"default_accept_supply_partner_usersync": true,
"default_ad_profile_id": null,
"default_buyer_group_id": null,
"default_content_retrieval_timeout_ms": 0,
"default_creatives": null,
"default_enable_for_mediation": false,
"default_external_audit": false,
"default_tag_id": null,
"description": null,
"developer_id": null,
"domain_blocklist_email": null,
"dongle": null,
"email_code": null,
"enable_click_and_imp_trackers": false,
"enable_facebook": false,
"expose_eap_ecp_placement_settings": false,
"gender_segment_id": null,
"id": 1234,
"is_iash_compliant": false,
"last_activity": "2020-03-19 06:00:39",
"max_hosted_video_size": null,
"native_custom_keys": null,
"platform_exposure": "public",
"plugins_enabled": false,
"pops_enabled_UI": false,
"price_buckets": null,
"prioritize_margin": false,
"reporting_decimal_type": "decimal",
"seller_member_groups": null,
"seller_revshare_pct": null,
"serving_domain": null,
"sherlock_notify_email": null,
"short_name": null,
"tax_region_id": null,
"thirdparty_pixels": null,
"timezone": "EST5EDT",
"vendor_id": null,
"visibility_profile_id": null,
"xd_coop": false
},
"num_elements": 100,
"start_element": 0,
"status": "OK"
}
}
Crear un perfil de licitador
En este paso, repasaremos las opciones del perfil del ofertante que ayudan a dar forma al tráfico que recibes. El perfil del ofertante se puede actualizar utilizando tanto la API como nuestra interfaz de usuario del ofertante. La documentación principal se encuentra aquí:
- API: Perfiles de licitador mejorados
- Interfaz de usuario del licitador: Creación de un nuevo perfil de licitador
- Nuestra interfaz de usuario del ofertante proporciona muchos otros servicios, como métricas e informes. Se pueden encontrar aquí:
- Métricas: pantalla de métricas
- Creatividades: pantalla de creatividades
- Informes: Pantalla de informes
En el ejemplo siguiente, la segmentación se desglosa de la siguiente manera:
- Incluye solo a nuestros miembros de Direct Exchange
- Solo acepta tráfico de EE. UU.
- Tráfico de banners, de todos los tamaños
- Tráfico web
- Permitir usuarios desconocidos
Ejemplo de perfil de licitador JSON
$ cat create-bidder-profile-json
{
"bidder_profile": {
"active": true,
"bidder_id": 1234,
"description": "Example Bidder Profile",
"targeting": {
"ad_types": {
"audio": {
"action": "exclude"
},
"banner": {
"action": "include",
"sizes": [
]
},
"native": {
"action": "exclude"
},
"video": {
"action": "exclude"
}
},
"countries": {
"action": "include",
"targets": [
{
"active": true,
"code": "US",
"id": 233,
"name": "United States"
}
]
},
"exchanges": {
"action": "exclude",
"targets": [
{
"id": 2,
"name": "Connect"
},
{
"id": 3,
"name": "Network"
}
]
},
"supply_types": {
"action": "include",
"targets": [
"web"
]
}
},
"unknown_users_action": "include"
}
}
Perfil de prueba
- Su ingeniero de integración de Xandr lo ayudará a configurar un perfil de licitador para las pruebas.
- Este perfil bloqueará todo el tráfico de la plataforma excepto el que envía nuestro editor de pruebas
- El tráfico de nuestro miembro de prueba le permitirá simular el flujo de ofertas, sin tener que preocuparse por el gasto.
Agregar una creatividad de prueba
En este paso, agregaremos un recurso creativo. Después de cargar esta creatividad, deberá configurar su ofertante para que responda a una solicitud de oferta con una respuesta de oferta con el formato adecuado. La respuesta de puja debe incluir esta creatividad, ya sea en el "crid" campo, correspondiente a su ID interno de la creatividad, o bien "adid"el , que es el ID de Xandr para la creatividad. Esto probará que la integración funciona según lo esperado.
Sugerencia
Para obtener información más detallada sobre los muchos tipos de configuraciones creativas, consulte el Servicio creativo.
Para obtener algunos consejos sobre cómo configurar su creatividad, consulte nuestra Guía de compra de creatividades de inicio rápido.
- Este ejemplo muestra un diseño de automóvil (muy) anticuado utilizando el campo de contenido del objeto creativo. Utiliza nuestra plantilla estándar de banner raw-html.
- Para obtener más información sobre el uso del entorno de pruebas de clientes para probar la carga de creatividades, consulte Uso del entorno de pruebas de clientes a continuación.
Nota:
Estados
- Los
"allow_audit"campos y"allow_ssl_audit"se han establecido entrue. - El
"allow_audit"campo envía la creatividad para nuestra plataforma de auditoría humana. - Luego
"allow_ssl_audit"envía el creativo para nuestro análisis automatizado con el fin de determinar si puede publicarse en un inventario seguro.
Ejemplo de JSON creativo
$ cat add-creative.json
{
"creative": {
"width": 682,
"height": 488,
"landing_page_url": "https://en.wikipedia.org/wiki/Car",
"content": "document.write('<a href=\\\"https://en.wikipedia.org/wiki/Car\\\" target=\\\"_blank\\\">\\r\\n <img src=\\\"https://upload.wikimedia.org/wikipedia/commons/3/3e/SteamMachineOfVerbiestIn1678.jpg\\\" />\\r\\n</a>')",
"content_secure": "document.write('<a href=\\\"https://en.wikipedia.org/wiki/Car\\\" target=\\\"_blank\\\">\\r\\n <img src=\\\"https://upload.wikimedia.org/wikipedia/commons/3/3e/SteamMachineOfVerbiestIn1678.jpg\\\" />\\r\\n</a>')",
"template": {
"id": 6
},
"original_content": "<a href=\"https://en.wikipedia.org/wiki/Car\" target=\"_blank\">\r\n <img src=\"https://upload.wikimedia.org/wikipedia/commons/3/3e/SteamMachineOfVerbiestIn1678.jpg\" />\r\n</a>",
"original_content_secure": "<a href=\"https://en.wikipedia.org/wiki/Car\" target=\"_blank\">\r\n <img src=\"https://upload.wikimedia.org/wikipedia/commons/3/3e/SteamMachineOfVerbiestIn1678.jpg\" />\r\n</a>",
"click_action": "click-to-web",
"click_target": "https://en.wikipedia.org/wiki/Car",
"click_url": "https://en.wikipedia.org/wiki/Car",
"allow_ssl_audit": true,
"allow_audit": true
}
}
Ejemplo de carga de creatividad
$ export IB="https://api.adnxs.com";
$ curl -b cookies -X POST -d @add-creative.json $IB/creative/1234
{
"response": {
"count": 1,
"creative": {
"active": true,
"added_by_bidder": null,
"adservers": null,
"adx_audit": null,
"allow_audit": true,
"allow_ssl_audit": true,
"audit_feedback": null,
"audit_status": "pending",
"backup_upload_status": nul
"brand": {
"category_id": 0,
"id": 1,
"name": "Unknown"
},
"brand_id": 1,
"campaign": null,
"categories": null,
"click_action": "click-to-web",
"click_target": "https://en.wikipedia.org/wiki/Car",
"click_url": "https://en.wikipedia.org/wiki/Car",
"code": null,
"code2": null,
"content": "document.write('<a href=\\\"https://en.wikipedia.org/wiki/Car\\\" target=\\\"_blank\\\">\\r\\n <img src=\\\"https://upload.wikimedia.org/wikipedia/commons/3/3e/SteamMachineOfVerbiestIn1678.jpg\\\" />\\r\\n</a>')",
"content_secure": "document.write('<a href=\\\"https://en.wikipedia.org/wiki/Car\\\" target=\\\"_blank\\\">\\r\\n <img src=\\\"https://upload.wikimedia.org/wikipedia/commons/3/3e/SteamMachineOfVerbiestIn1678.jpg\\\" />\\r\\n</a>')",
"content_source": "standard",
"created_on": "2021-02-05 21:56:47",
"custom_request_template": null,
"description": null,
"facebook_audit_feedback": null,
"facebook_audit_status": null,
"file_name": null,
"flash_backup_url": null,
"flash_backup_url_secure": null,
"flash_click_variable": null,
"height": 488,
"id": 271833576,
"ios_ssl_audit": null,
"is_blanking": null,
"is_expired": false,
"is_hosted": false,
"is_prohibited": false,
"is_rotating": null,
"is_self_audited": false,
"is_suspicious": false,
"landing_page_url": "https://en.wikipedia.org/wiki/Car",
"language": {
"id": 1,
"name": "English"
},
"last_activity": "2021-02-05 21:56:47",
"last_checked": null,
"media_assets": null,
"media_url": null,
"media_url_secure": null,
"member_id": 1234,
"mobile": null,
"native_attribute": null,
"no_adservers": false,
"not_found": 0,
"original_content": "<a href=\"https://en.wikipedia.org/wiki/Car\" target=\"_blank\">\r\n <img src=\"https://upload.wikimedia.org/wikipedia/commons/3/3e/SteamMachineOfVerbiestIn1678.jpg\" />\r\n</a>",
"original_content_secure": "<a href=\"https://en.wikipedia.org/wiki/Car\" target=\"_blank\">\r\n <img src=\"https://upload.wikimedia.org/wikipedia/commons/3/3e/SteamMachineOfVerbiestIn1678.jpg\" />\r\n</a>",
"passed_sherlock_audit": true,
"pixels": null,
"placement": null,
"political": null,
"segments": null,
"size_in_bytes": 0,
"sla": "0",
"sla_eta": "2021-02-08 15:58:47",
"ssl_status": "pending",
"status": {
"hosted_assets_association_complete": null,
"user_ready": true
},
"suspicious_activity_timestamp": null,
"technical_attributes": [
{
"id": 1,
"name": "Image"
}
],
"template": {
"id": 6
},
"text_description": null,
"text_display_url": null,
"text_title": null,
"thirdparty_campaign_id": null,
"thirdparty_creative_id": null,
"thirdparty_page": null,
"thirdparty_pixels": null,
"thirdparty_viewability_providers": null,
"vendors": null,
"video_attribute": null,
"width": 682
},
"dbg": {
"output_term": "creative",
"version": "1.18",
"warnings": []
},
"id": "271833576",
"num_elements": 100,
"start_element": 0,
"status": "OK"
}
}
Agregar una instancia de licitador
El objeto de instancia del ofertante representa un servidor de licitación particular que se ejecuta en el centro de datos. Esta información almacenada en este objeto determina dónde enviamos el tráfico. En este ejemplo, establecemos el ID del centro de datos en (NYM).
Advertencia
En este paso se supone que ya tiene un licitador en funcionamiento que puede responder a las solicitudes de licitación, solicitudes preparadas, etc., como se detalla en la Información general del sistema.
Sugerencia
Para obtener más información acerca de cómo configurar una instancia de licitador, consulte el Servicio de instancia de licitador
En este ejemplo, establecemos una dirección IP y un puerto al que se debe enviar el tráfico.
- También se admite el uso de nombres de host.
- Cuando están presentes, los nombres de host tienen prioridad.
- Nuestro servicio de instancia de ofertante requiere que una dirección IP esté presente en la carga. Si desea utilizar un nombre de host, se puede colocar una IP ficticia en la carga de objetos.
- La ruta completa a la que enviaremos el tráfico es
https://[nombre de host o IP]:[puerto][bidder.bid_uri]
- Se
bidder.bid_uriestablece en su objeto de ofertante. - Esta ruta debe ser única para cada postor
- Se
- También se recomienda encarecidamente que establezca un límite de consultas por segundo (QPS) en la instancia del ofertante para asegurarse de que sus servidores no se vean inundados de tráfico.
- Recomendamos encarecidamente mantener la instancia del ofertante inactiva hasta que esté listo para recibir tráfico para evitar gastos accidentales.
Ejemplo de objeto de instancia de ofertante
$ cat create-bidder-instance.json
{
"instance": {
"bidder_id": 123,
"active": true,
"datacenter_id": 6,
"ip_address": "10.3.64.215",
"port": 80
"qps_limit": 10000,
}
}
Salida
$ export IB="https://api.adnxs.com";
$ curl -b cookies -X POST -d @create-bidder-instance.json $IB/bidder-instance/123
{
"response": {
"status": "OK",
"count": 1,
"start_element": null,
"num_elements": null,
"id": 1543,
"instance": {
"id": 1543,
"bidder_id": 123,
"active": true,
"datacenter_id": 6,
"ip_address": "10.3.64.215",
"port": 80,
"hostname": null,
"qps_limit": 10000,
"dns_interval": null,
"min_conns": 1,
"max_conns": null,
"receive_type_id": 0
},
"count": 1,
"dbg": {
"output_term": "bidder",
"version": "1.0.5",
"warnings": [
]
},
"num_elements": 100,
"start_element": 0,
"status": "OK"
}
}
Respuesta a pujas
La respuesta a la oferta debe tener el formato correcto para que el licitador pueda presentar las ofertas correctamente. Los campos obligatorios se pueden encontrar aquí.
Nota:
Dado que se está integrando con el ID de asiento del comprador, el campo seatbid.seat debe ser su propio ID interno.
Si necesitas un ejemplo de solicitud de puja para utilizar, tu representante de Xandr debería poder proporcionarte uno. Los campos de solicitud de oferta admitidos con ejemplos se pueden encontrar aquí.
Sincronización de usuarios
- Para informar de tu actividad de pujas, tenemos métodos para sincronizar tus ID de usuario internos con los de Xandr.
- Para nuestros socios postores, la norma es usar
/getuid. Puede encontrar más información sobre este servicio aquí: Sincronizar sus ID de usuario.
Probar la integración
Solicitudes listas
- Para recibir solicitudes de licitación de nuestros servidores, su licitador primero debe responder correctamente a nuestras solicitudes listas.
- Las solicitudes Ready se envían a https://[hostname or IP]:[port][bidder.ready_uri]
- Se
bidder.ready_uriestablece en su objeto de ofertante.
- Se
- Su respuesta debe contener
"1"alguna parte del cuerpo. - Se pueden encontrar más detalles aquí.
Prueba de flujo de pujas
- Tu ingeniero de integración de Xandr te ayudará a probar el flujo de ofertas.
- Es probable que esto implique el envío de solicitudes de oferta desde una página del editor de pruebas.
- Idealmente, responderá a estas solicitudes, ganará nuestra subasta y hará que su creatividad se envíe a la página de prueba
- Desde allí, puede proceder a
- Pruebe las macros o rastreadores para asegurarse de que funcionan según lo esperado.
- Compruebe que las discrepancias están dentro de los intervalos aceptables.
Proceso de registro creativo
Nota:
Te recomendamos que registres los id. de creatividad de Xandr en el sistema.
- El prerregistro creativo es un requisito para los creativos nativos, de vídeo y de display
- Debe poder cargar fácilmente creatividades en nuestros sistemas y enviarlas a nuestro proceso de auditoría
- Revise nuestros estándares creativos y auditorías. Los vendedores requieren que los creativos aprueben nuestras políticas de auditoría para poder formar parte de su inventario.
- El proceso de registro implica la creación de servicios API para
- Agregue los objetos creativos
- Compruebe si hay actualizaciones de estado:
-
audit_status: este campo indica si la creatividad ha superado la auditoría humana que confirma que la creatividad se procesa y hace clic correctamente. -
ssl_status: este campo indica si la creatividad ha pasado nuestro escáner SSL automatizado. -
is_prohibited: este campo indica si el creativo ha infringido una de nuestras directivas.
-
- Ajusta las creatividades para corregir cualquier problema, según sea necesario, en función de los campos de estado.
- Puedes usar nuestro entorno de pruebas de cliente para probar tus flujos de trabajo de carga.
- Las creatividades enviadas a nuestro entorno de pruebas de clientes no son auditadas. Coordine con su ingeniero de integraciones de Xandr para probar sus creatividades.
- Se puede trabajar en los flujos de trabajo de envío creativos en paralelo con las pruebas de flujo de ofertas.
Si sigues sin ver las solicitudes de puja que esperas, comprueba la configuración con las instrucciones de esta página. Ponte en contacto con tu representante de Xandr si el problema persiste.
Uso del entorno de pruebas de cliente
El entorno de prueba de cliente proporciona una versión de la API de Impbus e Impbus que puede usar para probar sus flujos de trabajo e implementaciones de API. La base de código y los datos del entorno de pruebas de cliente ahora se actualizan cada mes. Esto significa que su entorno de prueba nunca estará más de 30 días (y a menudo menos) por detrás de la versión del código Xandr que se ejecuta en producción. Además, todos los datos de producción también se copiarán automáticamente en el entorno de pruebas del cliente (incluidas sus cuentas y credenciales de miembro) cada mes. Esto permitirá realizar pruebas mucho más sólidas con las características más recientes.
Como referencia, estos son los puntos de conexión para los entornos de producción y pruebas de cliente.
Actualizaciones de ejemplo
objeto de ready_uri licitación y bid_uri
Actualice estos campos para asegurarse de que nuestras solicitudes listas y solicitudes de oferta, respectivamente, se envíen a los puntos finales correctos.
Ejemplo de actualización de licitador
$ cat update-uris.json
{
"bidder": {
"ready_uri": "/example_ready_endpoint",
"bid_uri": "/example_bid_endpoint"
}
}
Ejemplo de salida de actualización de licitador
$ export IB="https://api.adnxs.com";
$ curl -b cookies -X PUT -d @update-uris.json $IB/bidder/1234?fields=active,bid_uri,id,ready_uri
{
"response": {
"bidder": {
"active": true,
"bid_uri": "/example_bid_endpoint",
"id": 1234,
"ready_uri": "/ready/",
},
"count": 1,
"dbg": {
"output_term": "bidder",
"version": "1.0.5",
"warnings": []
},
"id": "1234",
"num_elements": 100,
"start_element": 0,
"status": "OK"
}
}
Actualizar objeto miembro auditar notificar correo electrónico
Actualiza estos campos para asegurarte de recibir notificaciones de los recursos creativos que cargues en nuestro sistema.
Ejemplo de actualización de miembros
$ cat update-email.json
{
"member": {
"audit_notify_email": "your_email@email.com"
}
}
Ejemplo de salida de actualización de miembro
$ export IB="https://api.adnxs.com";
$ curl -b cookies -X PUT -d @update-email.json $IB/member/5678?fields=active,audit_notify_email,id
{
"response": {
"member": {
"active": true,
"audit_notify_email": "your_email@email.com",
"id": 5678,
},
"count": 1,
"dbg": {
"output_term": "member",
"version": "1.0.5",
"warnings": []
},
"id": "5678",
"num_elements": 100,
"start_element": 0,
"status": "OK"
}
}