Reporte JSON

Accede a la información de tu marca o campañas en formato JSON y reporta grandes cantidades de data mucho más rápidamente.

Lucía Achigar avatar
Escrito por Lucía Achigar
Actualizado esta semana

JSON (JavaScript Object Notation) es un formato de texto sencillo para el intercambio de datos. A través del reporte JSON de Bunker DB Analytics, puedes extraer cantidades más grandes de información mucho más rápidamente.

Este formato te ofrece la flexibilidad y versatilidad de integrar fácilmente con otras plataformas y herramientas de análisis de datos. Facilita el acceso a grandes cantidades de información para tomar tus decisiones estratégicas basadas en datos precisos y actualizados. Con Bunker DB Analytics, tendrás el control total de tus datos para impulsar el éxito de tu negocio.

Cómo generar un reporte en formato JSON

Puedes acceder a toda la información tanto de tu marca como de tus campañas en formato JSON. Para descargar un reporte JSON necesitas 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).

Obtén el ID de tu marca

  1. Selecciona la marca.


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

Se verá una URL en la parte inferior izquierda del navegador en la que el ID de la marca es el número que figura al final.

Para obtener el id de una campaña, sigue los mismos pasos en la sección «Campañas».

Endpoints y parámetros

Endpoint de la API

Si habitualmente accedes a tu cuenta de Bunker DB en el link example.bunkerdb.com, entonces el endpoint de la API al que debes hacer las llamadas es:

Métodos 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 que necesitas, “brand” para marca o “campaign” para campaña.

  • 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.

  • 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. Los valores posibles son 1 (sí) o 2 (no).

Flujo de respuesta

La respuesta del JSON puede 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": "[email protected]",

"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:

¿Ha quedado contestada tu pregunta?