Compartir a través de


Licitadores: carga de datos de segmentos mediante BSS

Como se describe en este documento, agregar el archivo de segmento al sistema es un proceso de varios pasos.

  1. Paso 1: Dar formato al archivo de datos para su carga.
  2. Paso 2: Solicitar una dirección URL de carga y un identificador de trabajo
  3. Paso 3: Publicar el archivo en la dirección URL de carga
  4. Paso 4: Comprobar el estado del trabajo

Nota:

Los archivos están limitados a 1800 segmentos en cualquier línea individual. Si tiene más de 1800 segmentos para un usuario, debe dividir esa línea en varias líneas.

Dar formato al archivo de datos para cargarlo

Tiene dos opciones al crear un archivo de datos para BSS: el formato de archivo BSS heredado y el formato de archivo BSS Avromás recientey preferido, que usa un esquema autodefinido y admite una gama más amplia de identificadores más allá de las cookies de terceros.

Tenga en cuenta que el archivo de datos debe cumplir los siguientes requisitos:

  • Usa el conjunto de caracteres Latin1.
  • Es un máximo de 0,5 GB.

Solicitud de una dirección URL de carga y un identificador de trabajo

Cada archivo de datos de segmento que se cargue debe estar asociado a un identificador de trabajo determinado. Este identificador se usa para crear la dirección URL de carga y realizar un seguimiento del estado de procesamiento del archivo. El primer paso es enviar una solicitud vacía POST al servicio.

Este servicio funciona para api.appnexus.com y para adnxs.com. Está disponible tanto para los inicios de sesión del pujador como de la interfaz de usuario.

$ curl -b cookies -X POST "https://api.appnexus.com/batch-segment?member_id=456"
 
{
  "response": {
    "id": 123,
    "status": "OK",
    "batch_segment_upload_job": {
      "job_id": "JFY8l6iMOFAFJIWCMPcy39MCt3Yleo1337618549",
      "id": 123,
      "member_id": 456,
      "last_modified": "2012-05-21 16:42:29",
      "upload_url": "https://data-api-gslb.adnxs.net/segment-upload/segment-upload/JFY8l6iMOFAFJIWCMPcy39MCt3Yleo1337618549"
    },
    "start_element": 0,
    "count": 1,
    "num_elements": 100,
    "dbg_info": {
      ...
    }
  }
}

Publicar el archivo en la dirección URL de carga

La dirección URL de carga de archivos se indica en la respuesta JSON del paso 1 mediante el campo upload_url: el archivo de segmento se va POST a procesar en esta dirección URL. Tenga en cuenta las siguientes directrices:

  • No codifique de forma rígida la dirección URL de carga en la aplicación. Asegúrese de tomarla dinámicamente del campo upload_url.
  • Debe comenzar la carga en la dirección URL de carga determinada en un plazo de cinco (5) minutos y solo una dirección URL es válida en un momento dado. Si espera más de 5 minutos para iniciar la carga, debe solicitar una nueva dirección URL.
  • Se recomienda no superar una carga por minuto. Si tiene más de 200 trabajos a la espera de procesarse en un momento dado, se le prohibirá cargar trabajos adicionales.

Advertencia

Para cargar el archivo correctamente, debe especificar el tipo MIME en el encabezado HTTP como "Content-Type: application octet-stream". No use "Content-Type: application x-www-form-urlencode" (-d or --data flags in curl). El uso de un tipo MIME incorrecto impedirá que se procese el archivo.

$ curl -v -H 'Content-Type:application/octet-stream' -b cookies -X POST --data-binary @segment_file "https://01.data-api.prod.adnxs.net/segment-upload/JFY8l6iMOFAFJIWCMPcy39MCt3Yleo1337618549"
 
* About to connect() to 01.data-api.prod.adnxs.net port 80
*   Trying 64.210.62.71... connected
* Connected to 01.data-api.prod.adnxs.net (64.210.62.71) port 80
> POST /segment-upload/FkmOY7oL2Qy2aCE7NrhE1BHVoJA0wi1337697712 HTTP/1.1
> User-Agent: curl/7.15.5 (x86_64-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5
> Host: 01.data-api.prod.adnxs.net
> Accept: */*
> Content-type:application/octet-stream
> Content-Length: 116
>
> 7652266028043224430;5848:0,5849:1440,5850:14404013681496264948522;5013:0,5014:15508802117132500293405;5851:0,5847:-1HTTP/1.1 200 OK
< Date: Tue, 22 May 2012 14:48:02 GMT
< Content-Type: application/json
< Transfer-Encoding: chunked
< Server: Jetty(7.6.2.v20120308)
* Connection #0 to host 01.data-api.prod.adnxs.net left intact
* Closing connection #0
{"response":{"segment_upload":{"job_id":"FkmOY7oL2Qy2aCE7NrhE1BHVoJA0wi1337697712"},"status":"OK"}}

Ejemplo de dirección URL de carga SSL

curl -b cookie -c cookie -X POST -s -d '' "https://api.appnexus.com/batch-segment?member_id=958"
 
"batch_segment_upload_job": {
      "id": 14841671,
      "job_id": "qGQhSZ1qvd2hSsJ9svTz32qgxq7z5b1439315424",
      "member_id": 958,
      "last_modified": "2015-08-11 17:50:24",
      "upload_url": "https://data-api-gslb.adnxs.net/segment-upload/qGQhSZ1qvd2hSsJ9svTz32qgxq7z5b1439315424"
        }

Comprobación del estado del trabajo

Por último, compruebe el estado de procesamiento mediante el envío de una solicitud GET con el job_id devuelto del paso 2 o 3. La respuesta JSON contiene información como cuánto tiempo tardó el archivo en procesarse y el número de errores, si los hubiera. Tenga en cuenta que debe esperar hasta que phase="completed" antes de examinar los campos de resultados, como num_valid. Para obtener información más detallada, consulte Solución de problemas de cargas de BSS.

Por acuerdo de nivel de servicio de Xandr, espere hasta 24 horas para que el archivo se procese.

Nota:

Si es un proveedor de datos que usa impbus API, tenga en cuenta que el batch_segment_upload_job campo será una matriz con un solo objeto dentro de ella. Por ejemplo,

{"batch_segment_upload_job":[{"phase":"completed"}]}

$ curl -b cookies "https://api.appnexus.com/batch-segment?member_id=456&job_id=JFY8l6iMOFAFJIWCMPcy39MCt3Yleo1337618549"
 
{
 "response": {
  "start_element": 0,
  "count": 1,
  "batch_segment_upload_job": {
   "phase": "completed",
   "start_time": "2012-05-21 20:04:35",
   "uploaded_time": "2012-05-21 20:04:41",
   "validated_time": "2012-05-21 20:07:24",
   "completed_time": "2012-05-21 20:08:24",
   "error_code": null,
   "time_to_process": "2.69",
   "percent_complete": 100,
   "num_valid": 200000,
   "num_valid_user":100000
   "num_invalid_format": 0,
   "num_invalid_user": 0,
   "num_invalid_segment": 0,
   "num_unauth_segment": 1,
   "num_past_expiration": 0,
   "num_inactive_segment": 0,
   "num_other_error": 0,
   "error_log_lines": " \n\nnum_unauth_segment-4013681496264948522;5013:0,5014:1550",
   "segment_log_lines": "\n5010:100000\n5011:50000\n5012:50000",
   "id": 88,
   "job_id": "4tGhzv2PojNGQpq0MYaoaOa70cuF061337630675",
   "member_id": 456,
   "created_on": "2012-05-21 20:04:35",
   "last_modified": "2012-05-21 20:08:24"
  },
  "dbg_info": {
  ...
  },
  "status": "OK",
  "num_elements": 100
 }
}