Reporte JSON

Article author
Bunker DB Support
  • Actualización

Cómo generar un reporte en formato JSON

Introducción

Bunker DB analytics dispone de una funcionalidad para descargar la información de reportes en formato JSON.

Esta funcionalidad contempla tanto reportes de marca como de campañas.

Para poder descargar esta información será necesario contar con:

  • Credenciales de acceso de usuario Bunker DB analytics (usuario y contraseña) con permisos para ver el reporte.
  • El ID de la marca o campaña que se desea descargar.
  • Un cliente para realizar llamados a una API RESTful (Postman, Insomnia, etc).

 

Paso a paso — cómo obtener el ID de una marca

  1. Selecciona la marca.



  2. Pasa el cursor sobre el botón «Editar marca».

Se verá una URL en la parte inferior del navegador.



El ID de la marca será el número que figure al final de la URL.

 

Paso a paso — cómo obtener el ID de una campaña

  1. Selecciona la campaña.
  2. Pasa el cursor sobre el botón «Editar campaña».



Se verá una URL en la parte inferior del navegador.

El ID de la campaña será el número que figure al final de la URL.

  • También puedes ver el ID de la campaña al ingresar al listado de campañas y pasar el cursor sobre el ícono de edición de cualquier campaña.



Endpoint y parámetros

Endpoint de la API

Siendo {instancia} el subdominio proporcionado por Bunker DB al momento de dar de alta el servicio:

https://{instancia}.bunkerdb.com/report/json

 

Método de envío

POST

 

Parámetros

  • email: dirección de correo electrónico del usuario de Bunker DB analytics con permisos suficientes para visualizar el reporte.
  • password: contraseña de acceso vinculado al email del usuario.
  • type: tipo de reporte pedido, “brand” o “campaign”.
  • object_id: ID de marca o campaña.
  • period_id: ID del período, posibles valores:
    • "cmp” (campaña)
    • “wkl” (semanal)
    • “mnt” (mensual)
    • “qrt” (trimestre)
    • “bia” (semestral)
    • “ann” (anual)
    • “l15d” (últimos 15 días)
    • “l3d” (últimos 3 días)
    • “l7d” (últimos 7 días)
  • selected_date: fecha, en formato YYYY-MM-DD, de inicio del período.
  • selected_end_date: fecha, en formato YYYY-MM-DD, de final del período (solo campaña).
  • email_report: email donde se desee que llegue el reporte como un zip adjunto.
  • zip: si se desea obtener el reporte en texto plano o comprimido en un zip (si se seleccionó un email en “email_report” el reporte llegará siempre en un archivo zip.
    Posibles valores:
    • 1 (sí)
    • 2 (no)

Flujo de respuesta

 

La respuesta del JSON podrá ser síncrona o asíncrona.

  • Síncrona: si no se especifica un email_report, entonces el reporte será devuelto en la misma llamada a la API, ya sea en formato plano (json) o comprimido (mediante zip).
    Se aconseja configurar un tiempo alto de “time out” para no finalizar la conexión antes de que el reporte sea devuelto.
  • Asíncrona: si se especifica un email en email_report, entonces el reporte será procesado en background y se imprimirá un estado de resultado.
    El producto del reporte será enviado a la casilla especificada en email_report una vez que se haya finalizado de procesar los datos.

 

Formato de respuesta (asíncrono):

{

    "id": “Identificador del reporte (hash)”

    "timestamp": "Fecha de creación del reporte (YYYY-MM-DD H:m:s)",

    "email_report": "Email destinatario del reporte",

    "status": "estado (processing, failed)"

}

 

Ejemplo:

{

    "id": "c027d8b0bb4726611546f42c04f6b005",

    "timestamp": "2020-08-24 15:16:24",

    "email_report": "support@bunkerdb.com",

    "status": "processing"

}


 

Códigos de respuesta (http status)

 

200 — OK

El llamado ha sido exitoso y el resultado del reporte se encuentra en el body de la respuesta (llamado sincronico).

 

202 — Accepted

Se ha recibido el pedido de generación del reporte (con envío por mail) y se está procesando (llamado asincrónico).

401 — Unauthorized

Las credenciales provistas por email y password no son válidas. Se realizará un control de intentos, y pasado el máximo de cinco la IP desde donde se producen los llamados será bloqueada por un período de 60 minutos.

403 — Forbidden

Se ha alcanzado el máximo de intentos fallidos desde la IP de llamado, deberá intentar nuevamente más tarde.

429 — Too many requests

Se ha alcanzado el máximo número de generación de reportes en simultáneo permitido. La respuesta de este error contendrá un listado de los identificadores de reportes (hash) y las fechas de creación para posible control por parte del cliente.

 

500 — Internal server error

Ha ocurrido un error del lado del servidor, el equipo de support se encargará de revisar el problema.


 

 

Estructura base de respuesta

A continuación se puede ver la estructura base del json:



Los contenidos de las redes se encontrarán dentro del árbol “available_media”:


Ejemplos de llamado:

 

cURL

curl -X POST \
   https://{instancia}.bunkerdb.com/report/json \
   -H 'cache-control: no-cache' \
   -H 'content-type: application/x-www-form-urlencoded' \
   -d 'email=it%40bunkerdb.com&password=XXX&type=brand&object_id=1&period_id=mnt&selected_date=2019-06-01&selected_end_date=2019-06-30&email_report=it%40bunkerdb.com'

 

 

Python 3

import http.client
conn = http.client.HTTPSConnection("")

payload = "email=it%40bunkerdb.com&password=XXX&type=brand&object_id=1&period_id=mnt&selected_date=2019-06-01&selected_end_date=2019-06-30&email_report=it%40bunkerdb.com"

headers = {
   'content-type': "application/x-www-form-urlencoded",
   'cache-control': "no-cache"
}

conn.request("POST", "{instancia}.bunkerdb.com/report/json", payload, headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))

 

PHP

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
   CURLOPT_URL =>
"https://{instancia}.bunkerdb.com/report/json",
   CURLOPT_RETURNTRANSFER => true,
   CURLOPT_ENCODING => "",
   CURLOPT_MAXREDIRS => 10,
   CURLOPT_TIMEOUT => 30,
   CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
   CURLOPT_CUSTOMREQUEST => "POST",
   CURLOPT_POSTFIELDS => "email=it%40bunkerdb.com&password=XXX&type=brand&object_id=1&period_id=mnt&selected_date=2019-06-01&email_report=it%40bunkerdb.com",
   CURLOPT_HTTPHEADER => array(
       "cache-control: no-cache",
       "content-type: application/x-www-form-urlencoded"
       ),

));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
   echo "cURL Error #:" . $err;
} else {
   echo $response;

}

 

Ejemplo de llamado con cliente de API RESTful

Para solicitar el reporte puedes utilizar un cliente para API RESTful. A continuación te mostramos los pasos para solicitar el reporte en formato JSON.

La interacción con la API se realiza en formato “x-www-form-urlencoded”, por lo que el header ContentType: Application/x-www-form-urlencoded debe estar siempre presente.



Al utilizar el tipo de método POST, debes ingresar los parámetros dentro del body de la siguiente manera:



Luego de generar el llamado a la API, la respuesta se mostrará debajo de los parámetros ingresados:




¿Fue útil este artículo?

¿Tiene más preguntas? Enviar una solicitud