Integración de los KPI

Este artículo está dirigido al responsable técnico que gestiona la integración entre el sistema de la organización y Atobi.

Configuración de una conexión

Autenticación

Nuestra capa API utiliza estándares OAuth 2.0. Para los proveedores externos, generamos un token "secreto de cliente", que luego se utiliza para autorizar y aprobar las solicitudes de la plataforma del proveedor.

Este secreto de cliente se genera por separado para el entorno de pruebas y el entorno de producción (proporcionamos este secreto de cliente en el acuerdo de integración).

El secreto del cliente se utiliza para obtener el token de acceso, que se utiliza en cada solicitud para esa sesión.

Obtener el token de acceso

To get the access token, you must send a POST request to https://{{client_name}}.erapp.dk/oauth/token with this request body:

Encabezados
Clave Valor
Content-Type application/x-www-urlencodedBody
Encabezados
Clave Valor Descripción
grant-type client_credentials Campo obligatorio
client_id {{client_id}} Proporcionado por Atobi, único
client_secret {{client_secret}} Proporcionado por Atobi, único
por entorno.
scope {{scope} Campo opcional.
IMPORTANTE: La respuesta del servidor devolverá el token de acceso.

Envío de datos KPI (ejemplo de datos de tipo numérico)

Now when we have the access token, we are ready to send KPI data to the platform. To do so, we have to create a POST request in JSON format to https://{{client_name}}.erapp.dk/api/external/{{api_version}}/kpi:

Encabezados
Clave Valor
Authorization Bearer {{access_token}}
Accept application/json
Content-Type application/json
IMPORTANTE: todas las fechas y marcas de tiempo de sus datos deben proporcionarse en formato DATETIME y deben proporcionarse en Unix Epoch time. El filtrado de KPI en la aplicación depende en gran medida del Unix Epoch time.
Cuerpo

{
  "type": "{{unique_integration_identifier}}",
  "version": "1.0.0",
  "context": "sales",
  "data": [
    {
      "user_id": "123",
      "location_id": "321",
      "elements": [
        {
          "id": 1,
          "kpi": "device_sales",
          "object_type": "number",
          "value": "100",
          "units": "Devices sold",
          "timestamp": "2019-09-10 13:09:23", 
          "date_from": "2019-09-10 13:09:23", 
          "date_to": "2019-09-10 13:09:23"
        },
        {
          "id": 2,
          "kpi": "bonuses",
          "object_type": "number",
          "value": "150.00",
          "units": "Bonus earned",
          "timestamp": "2019-09-10 13:09:23", 
          "date_from": "2019-09-10 13:09:23", 
          "date_to": "2019-09-10 13:09:23"
        }
      ]
    },
    {
      "user_id": "89",
      "elements": [
        {
          "id": 3,
          "kpi": "points",
          "object_type": "number",
          "value": "100",
          "units": "Points",
          "timestamp": "2019-09-10 13:09:23", 
          "date_from": "2019-09-10 13:09:23", 
          "date_to": "2019-09-10 13:09:23"
        },
        {
          "id": 4,
          "kpi": "profit",
          "object_type": "number",
          "value": "250.00",
          "units": "Eur",
          "timestamp": "2019-09-10 13:09:23", 
          "date_from": "2019-09-10 13:09:23", 
          "date_to": "2019-09-10 13:09:23"
        }
      ]
    },
    {
      "location_id": "3",
      "elements": [
        {
          "id": 5,
          "kpi": "points",
          "object_type": "number",
          "value": "100",
          "units": "Points",
          "timestamp": "2019-09-10 13:09:23", 
          "date_from": "2019-09-10 13:09:23", 
          "date_to": "2019-09-10 13:09:23"
        },
        {
          "id": 6,
          "kpi": "experience",
          "object_type": "number",
          "value": "150.00",
          "units": "Experience",
          "timestamp": "2019-09-10 13:09:23", 
          "date_from": "2019-09-10 13:09:23", 
          "date_to": "2019-09-10 13:09:23"
        }
      ]
    }
  ]
}

IMPORTANTE: El cuerpo de la solicitud debe estar en JSON válido.
IMPORTANTE: Consulte la Sección tipo de número para el desglose de las columnas.
Campo "Tipo" (obligatorio)

Este campo se utiliza para distinciones específicas de integración de plataformas.

Campo "Versión" (obligatorio)

Este campo se utiliza para la versión de la integración para la compatibilidad con versiones anteriores.

Campo "Contexto" (obligatorio)

Este campo se utiliza para definir el contexto, que ayuda a agrupar los datos de los KPI relacionados. Cada KPI único debe tener un nombre de contexto único.

Campos "User_id" y "Location_id"

Conectamos los datos de ventas a través de usuarios o ubicaciones (departamentos/tiendas/países/etc.).). Al enviar los datos de KPI, es obligatorio proporcionar user_id o location_id (puede proporcionar ambos si corresponde).

Campo "Datos" (obligatorio)

Este campo es obligatorio, pero el contenido depende de la plataforma y del contexto. El formato del objeto dentro de los datos se describe cuando se utiliza un "object_type" específico. Consulte la sección "Tipos compatibles" para obtener más información.

Datos recibidos ("ACK")

Si la transferencia de datos se realizó correctamente, el código de respuesta del servidor debe ser 2XX con estado en el cuerpo de JSON.

Datos no recibidos

Si el código de respuesta del servidor no está en la categoría 2XX - debe marcar la transferencia como fallida.

Estrangulamiento de la API

Por defecto, tenemos un límite de 180 solicitudes/1 minuto. Esto se puede ajustar.

Variables del documento

Variable Tipo Descripción
{{client_id}} cadena ID único proporcionado por Atobi.
{{client_secret}} cadena Token secreto único proporcionado por Atobi.
{{scope} cadena Descriptor de alcance (opcional).
{{client_name}} cadena Nombre de cliente único.
{{access_token}} cadena Token de acceso, que se genera con el secreto del cliente.
{{api_version}} cadena Versión de la API (para la compatibilidad con versiones anteriores).
{{unique_integration_identifier}} cadena Identificador específico de integración. Esto lo proporciona Atobi.

Tipos compatibles

Tipo de número

Define que el valor proporcionado es un número.

Formatos numéricos admitidos
  • enteros
  • float
  • real
  • doble
{	"id": 1,
	"kpi": "points",
	"object_type": "number",
	"value": "100",
	"units": "Points",
	"timestamp": "2019-09-10 13:09:23",
	"date_from": "2019-09-10 13:09:23",
	"date_to": "2019-09-10 13:09:23",
},
Desglose de objetos
Clave Requerido Descripción
id true ID de objeto interno proporcionado desde la plataforma.
kpi true Identificador KPI usado para agrupar.
tipo_de_objeto true Especifica el tipo de información.
value true El valor real para el KPI, tipo de objeto, arrojará el valor en un formato específico.
units optional Campo personalizado para las unidades utilizadas junto con el valor, por ejemplo: %, Eur, Points, etc.
timestamp true Formato de fecha: "Y-m-d H:i:s" (debe ser UNIX)
data_from optional Formato de fecha: "Y-m-d H:i:s" (debe ser UNIX)
data_to optional Formato de fecha: "Y-m-d H:i:s" (debe ser UNIX)
¿Responde esto a su pregunta? Gracias por los comentarios Hubo un problema al enviar su comentario. Por favor, inténtelo más tarde.