Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

API SKADE PARA ENVÍO DE DATOS



Descripción general


Los datos recibidos a través de la API se asocian a una estación o dispositivo. Dicho dispositivo viene identificado por un código único.
Para el envío de datos variable valor, se realizará una petición POST con un payload JSON como se especifica más adelante.
Todas las peticiones de envío de datos necesitarán proveer un API key en la cabecera HTTP "X-API-Key", que identifica quién realiza el envío de datos, y deberán estar firmadas mediante HMAC-SHA256 provisto en la cabecera HTTP "X-Signature" como se describe más adelante, utilizando un API secret.

Envío de datos variable-valor


Formato de trama:
{
"HIST": {
"DATA": {
"VAR_1": 0.34,
"VAR_2": "texto"
},
"VERSION": "10.0.0",
"UTC": 1518778157,
"IMEI": "IMEI_GPS"
}
}
Las tramas son objetos JSON que representan datos de una estación concreta en una fecha y hora concretas.

  • El campo VERSION se mantendrá por ahora siempre como en el ejemplo.
  • El campo UTC contendrá el timestamp UNIX asociado a los datos que se están enviando.
  • El campo IMEI contendrá el código único que identifica a la estación o dispositivo. Pueden utilizarse valores alfanuméricos y guiones. Todas las tramas que tengan el mismo valor en el campo IMEI se asociarán al mismo dispositivo. Es importante que el IMEI quede definido con la siguiente estructura: "NOMBRE-EMPRESA-INTEGRADORA_IMEI-GPS". No obstante se tendrá que solicitar previamente que se den de alta estos dispositivos en nuestra plataforma. De esta forma nosotros definiremos el IMEI de envío, el cual será entregado a la empresa integradora.
  • El campo DATA contendrá un objeto JSON con los códigos de las variables como claves, y sus valores, que podrán ser numéricos o cadenas de texto. Para simular valores booleanos puede enviarse como valor 1.0 para ON y 0.0 para OFF.


  • Los valores que se necesitan en concreto para este desarrollo serían los siguientes:


  • "DATA": {

"LAT": 41.908377586566,
"LONG": -7.443760429381,
"PK_ROAD": "A-1",
"PK_NUMBER": 2,
"SPEED": 32.4,
"VEHICLE_TREATMENT_ON": 0.0,
"SKADE_DOSIFICACION_ML": 3.2,
"SKADE_DOSIFICACION_G": 1.6,
"SKADE_CARRILES_M": 5
}

  • Donde:


    • LAT: Latitud del vehículo, formato float.


    • LONG: Longitud del vehículo, formato float.


    • PK_ROAD: Nombre de la carretera en la que se encuentra el vehículo, formato string.


    • PK_NUMBER: Punto kilométrico de la carretera indicada en el anterior data donde se encuentra el vehículo, formato float.


    • SPEED: Velocidad del vehículo, formato float.


    • VEHICLE_TREATMENT_ON: Estado en el que se encuentra el vehículo, formato float. El formato simulado como booleano será 0.0 para OFF y 1.0 para ON.


    • SKADE_DOSIFICACION_ML: Dosificación en mililitros/metros cuadrados para vehículos de tipo salmuero, formato float.


    • SKADE_DOSIFICACION_G: Dosificación gramos/metros cuadrados para vehículos de tipo salero, formato float.


    • SKADE_CARRILES_M: Tamaño de la vía por la que circula el vehículo en metros, formato float.



  • Con respecto al data VEHICLE_TREATMENT_ON:


    • Cuando el estado debe ser 1.0 (ON):


      • Vehículo con pala activa.
      • Vehículo con salero activo.
      • Vehículo con pala y salero activo.
      • Vehículo con salmuera activa.
      • Vehículo con vía húmeda y salero activas.


    • Cuando el estado debe ser 0.0 (OFF):


      • Todas las opciones no contempladas en el punto anterior.


  • Un ejemplo de trama valida completa sería la siguiente:


{
"HIST": {
"VERSION": "10.0.0",
"UTC": 1518778157,
"IMEI": "EMPRESA_12344556",
"DATA": {
"LAT": 41.908377586566,
"LONG": -7.443760429381,
"PK_ROAD": "A-1",
"PK_NUMBER": 2,
"SPEED": 32.4,
"VEHICLE_TREATMENT_ON": 0.0,
"SKADE_DOSIFICACION_ML": 3.2,
"SKADE_DOSIFICACION_G": 1.6,
"SKADE_CARRILES_M": 5
}
}
}

  • Si se necesitaran en un futuro recibir nuevos datos los códigos de variables deben ser consensuados con Nazaríes, ya que por defecto no se crean valores para variables que no hayan sido dadas de alta previamente. Actualmente ya existe una amplia lista de valores existentes, p.ej. latitud, longitud, pala, salero, estado del vehículo, etc., que pueden ser utilizados; en caso de necesitar variables no existentes Nazaríes deberá darlas de alta previamente.


Ejemplo de petición:
curl -i -XPOST -H "X-API-Key: api-key" -H "X-Signature: signature" -H "Content-Type: application/json" -H "Accept: application/json" -d '{"HIST":{"DATA":{"VAR_1":0.34,"VAR_2":"texto"},"VERSION":"10.0.0","UTC":1518778157,"IMEI":" IMEI_GPS"}}' URL
Cálculo de la firma:

  1. Componer la cadena de texto con la información a firmar:


"<<Método HTTP>><<URL de la petición>>?<<Trama JSON>>"
Ej. "POSTlocalhost:8080/submitData? {"HIST":{"DATA":{"VAR_1":0.34,"VAR_2":"texto"},"VERSION":"10.0.0","UTC":1518778157,"IMEI":" APP-FINCA1-CULTIVO1"}}

  1. Firmar la cadena de texto anterior mediante HMAC-SHA256, utilizando como secreto el API secret provisto por Nazaríes y codificar el resultado en base64




Url para el envío de datos


Actualmente contamos con dos entornos; pre-producción (staging) y producción (skade). Para validar que todo es correcto necesitaremos seguir la siguientes acciones previas para llegar al entorno de producción:

  1. Solicitar API KEY de empresa.


  1. Solicitar el número de dispositivos a integrar por empresa.


  1. Facilitar el IMEI de los GPS para poder generar los IMEIS por empresa.


  1. Una vez terminados los siguientes pasos, se le facilitará al cliente toda la información necesaria para que pueda realizar el envío de datos.


  1. Las primeras pruebas se harán en un entorno de pre producción hasta que que se valide que todo es correcto.


  1. Una vez que todo sea correcto se procederá a migrar toda la configuración anterior al entorno de producción.



Url de preproducción


{+}http://tp1.staging.nazaries.cloud/third_party_api/unsecured/v1/submit/data+

Url de Producción


{+}https://skade-api-tp1.nazaries.cloud/third_party_api/v1/submit/data+

En el caso de que Https no sea posible: {+}https://skade-api-tp1.nazaries.cloud/third_party_api/v1/submit/data+