Cómo importar datos de conteo de forma automatizada
Aprenda a autenticarse en la API de importación y luego aprenda a enviar los datos de conteo.
El end point de Importación
El API Importación de tbRetail tiene 2 end points, uno para realizar las llamadas de test y otro para realizar las llamadas de producción:
End Point de test: https://pipelinetest.tbretail.com/data/import/count
End Point de producción: https://pipeline.tbretail.com/data/import/count
Autenticarse
Para comunicarse con el servidor, necesitará un token OAuth con los alcances (scopes) correctos.
Obtener un token de usuario: Este token de acceso estará asociado al usuario y permitirá obtener los datos que el usuario tiene acceso en la aplicación.
Obtención del token de acceso temporal: Una vez obtenido en el paso 1 un token de usuario, se podrá realizar una petición al servidor para obtener un token temporal de acceso. Este token temporal tiene una validez de 24 horas. Transcurrido dicho periodo deberá solicitarse un nuevo token temporal para poder solicitar los datos. La url de autentificación en la fase de pruebas:
Acceso TEST:: Haga clic aquí para obtener token
Los valores de las variables para realizar la petición de datos son las siguientes:
Variables | Valor |
---|---|
client_id para test | 14fuos4vd8u14utepgl46fhjob |
client_id para producción | 63h4jubc7qvrg9f65c36vjp3bq |
redirect_uri en test | |
redirect_uri en producción | |
refresh_token | Token obtenido en el paso 1 |
Código de ejemplo en python
import requests
import json
import datetime
refresh_token = "<inserte token obtenido en paso 1>"
client_id = '<inserte client id>'
redirect_uri = '<inserte redirect uri'
# realizar la peticion de autenticacion para obtener el token temporal de acceso
token_url = 'https://auth.tbretail.com/oauth2/token'
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
data = {'grant_type': 'refresh_token', 'client_id': client_id, 'redirect_uri': redirect_uri, 'refresh_token': refresh_token}
token_response = requests.post(token_url, data=data, verify=False, allow_redirects=False, headers=headers)
access_token = token_response.json()['access_token']
Esta petición devolverá el access_token que podrá ser usado para realizar las peticiones al servidor.
Petición para enviar el fichero csv al servidor
La petición se debe realizar haciendo un POST al end point de pruebas o de producción.
Los campos que debe contener el fichero separados por coma “,” son los siguientes:
Campo | Descripción |
---|---|
Sensor | Deberá contener la MacAdress del sensor al que se le quieren asignar los datos. No es Case Sensitive. |
Zona | Zona del sensor al que se le quieren asignar los datos. Debe coincidir con una de las zonas contenidas en el sensor al que se hace referencia. |
Metric | Nombre de la métrica que contienen los datos. Los nombres válidos son: |
Count | Número entero con el conteo. |
Date | Fecha a la que hace referencia el conteo en formato AAA-MM-DD HH:MM:SS |
El fichero con la información anterior debe contener el siguiente formato:
sensor,zone,metric,count,date
AA:BB:CC:DD:EE:FF,ZONA A,enters,2,2021-01-01 10:00:00
AA:BB:CC:DD:EE:FF,ZONA A,exits,5,2021-01-01 10:15:00
Seguidamente les presentamos un código de Ejemplo Python para realizar la importación:
# obtenido el token temporal (access_token) podremos realizar llamadas al api
api_url = 'https://pipeline.tbretail.com/data/import/count'
headers = {
'Authorization': access_token
}
# abrir el fichero datos y leerlo
data = open('datos.csv','rb').read().decode('utf-8')
response = requests.post(api_url, data=data.encode('utf-8'), headers=headers)
print (response)