Saltar al contenido principal

wiki-Reference

Ver en Git


Reference

Backend Metos

Este microservicio sincroniza las estaciones de fieldClimate con las variables del microservicio de sensores de Auravant.

Por un lado hostea la API para dar de alta y baja las estaciones a sincronizar y por otro lado contiene los workers para la ingesta.

APIs

todos las URIs son relativas a BASE_URL

Producción: BASE_URL = https://metos.aurapps.com

Testing: BASE_URL = http://metos.testing.aurapps.com

Errores generales

En caso de fallar algúna consulta, la respuesta tendrá un código http > 400 y un cuerpo en formato json con un código que indicará lo sucedido.

Ejemplo:

{
"res": "error",
"code": <CODE>,
"info": <INFO>
}

Según el código, se le debe informar al usuario lo que sucedió. Existen códigos de error generales que pueden ocurrir en todos los endpoints. A su vez, cada endpoint tiene códigos especificos detallados en la especificación de cada uno.

codigos generales:

CODEINFOdescripcion
GENERAL_ERRORThe requested action failed to executeerror general, es generalmente un error no atajado
EXPIRED_AUTHENTICATIONExpired Authentication tokentoken vencido, no deberia ocurrir desde la extensión
INVALID_AUTHInvalid Authentication tokentoken inválido, no debería ocurrir desde la extensión
PARAMETER_ERRORParameters errorlos parámetros enviados al backend no coinciden con los esperados
UNAUTHORIZED_EXTENSIONUnauthorized attempt to access an Extensions resourcese está consultando un endpoint no habilitado para extensiones
UNAUTHORIZED_USERUnauthorized attempt to access a protected endpointusuario no autenticado, falta autenticación en la request
CONNECTION_ERRORThere was an error connecting to AuravantFalló la conexión con el microservicio de Sensores. **ver qué mostrarle al usuario
PERMISSION_ERRORThe user is not allowed to perform this operationEl usuario no tiene permiso para realizar la acción solicitada

Telefónica IOT

GET

Cargar el listado de estaciones sincronizadas. Puede volver el array vacío.

Authorization: Bearer TOKEN
GET /integrations/telefonicaiot/sync

Respuesta:

{
"res": "ok",
"data": []
}

Donde data es un array de objetos de variable_groups con las estaciones sincronizadas.

Errores:

CODEINFOdescripcion
GET_STATION_ERRORStations could not be fetchedfalló la lectura del listado de estaciones

POST

Dar de alta una estación para sincronizar.

Authorization: Bearer TOKEN
Content-type: application/json
POST /integrations/telefonicaiot/sync
Body:
{
"device": <DEVICE>
"key": <KEY>
}

Donde <DEVICE> (str) es el número de serie de la estación Donde <KEY> (str) es la key de la estación

Respuesta:

{
"res": "ok",
"info": "stations imported",
"data": []
}

Donde data es un array de objetos de variable_groups, con la estación sincronizada.

Errores:

CODEINFOdescripcion
GET_STATION_ERRORStations could not be fetchedfalló la lectura del listado de estaciones
STATION_EXISTS_ERRORStation has already been syncedSe está queriendo sincronizar una estación ya sincronizada
DEVICE_NOT_FOUND_ERRORThe requested device was not foundNo se encontró el dispositivo solicitado. Puede ser por key inválida
CREATE_STATION_ERRORStation could not be createdNo se pudo dar de alta la estación en auravant
METOS_CONNECTION_ERRORMetos server failed to execute the requested operationFalló la conexión con Metos

DELETE

Detener la sincronización de una estación. Avisar que al eliminar, se dejarán de sincronizar los valores de las estaciones, pero no se eliminarán. Para eliminar la estación, deberá eliminarla desde el módulo de sensores.

Authorization: Bearer TOKEN
Content-type: application/json
DELETE /integrations/telefonicaiot/sync
Body:
{
"device": <DEVICE>
}

Donde <DEVICE> (str) es el número de serie de la estación

Respuesta:

{
"res": "ok",
"info": "station deleted"
}

Errores:

CODEINFOdescripcion
GET_STATION_ERRORStations could not be fetchedfalló la lectura del listado de estaciones
STATION_NOT_FOUND_ERRORStation was not foundNo se encontró la estación. Podría llegar a pasar si el usuario elimina la estación y no se llegó a actualizar

Metos General

OAuth - Authorize

Iniciar el flujo de Oauth

Authorization: Bearer TOKEN
Content-type: application/json
GET /metos/api/oauth/authorize

Respuesta:

{
"url": "<AUTHORIZE_URL>"
}

Donde "<AUTHORIZE_URL>" es la url a donde se debe redirigir al usuario para loguearse en Metos

Errores:

CODEINFOdescripcion
AUTH_ERRORUser has already authorized this appNo debería pasar. implica que se está iniciando el flujo y el usuario ya está logueado

OAuth - Eliminar credenciales

API para desloguearse

Authorization: Bearer TOKEN
Content-type: application/json
DELETE /metos/api/oauth/authorize

Respuesta:

{
"info": "credentiales deleted"
}

Errores:

CODEINFOdescripcion
NO_CREDENTIALSThere are no valid credentials for this userNo debería pasar. implica que se el usuario no está logueado

GET

Cargar el listado de estaciones sincronizadas. Puede volver el array vacío.

Usar este método para verificar si el usuario tiene credenciales de Metos

Authorization: Bearer TOKEN
GET /metos/api/sync

Respuesta:

{
"res": "ok",
"data": []
}

Donde data es un array de objetos de variable_groups con las estaciones sincronizadas.

Errores:

CODEINFOdescripcion
NO_CREDENTIALSThere are no valid credentials for this userNo debería pasar. implica que se el usuario no está logueado
GET_STATION_ERRORStations could not be fetchedfalló la lectura del listado de estaciones

POST

Sincronizar todas las estaciones de la cuenta de Metos.

Authorization: Bearer TOKEN
Content-type: application/json
POST /metos/api/sync

Respuesta:

{
"res": "ok",
"info": "stations imported",
"data": []
}

Donde data es un array de objetos de variable_groups, con la estación sincronizada.

Errores:

CODEINFOdescripcion
NO_CREDENTIALSThere are no valid credentials for this userNo debería pasar. implica que se el usuario no está logueado
GET_STATION_ERRORStations could not be fetchedfalló la lectura del listado de estaciones
NO_DEVICESNo device were foundNo se encontraron estaciones en la cuenta de MEtos del usuario
ALL_SYNCEDAll devices are already syncedTodas las estaciones ya se encuentran sincronziadas
CREATE_STATION_ERRORStation could not be createdNo se pudo dar de alta la estación en auravant
METOS_CONNECTION_ERRORMetos server failed to execute the requested operationFalló la conexión con Metos

DELETE

Detener la sincronización de una estación. Avisar que al eliminar, se dejarán de sincronizar los valores de las estaciones, pero no se eliminarán. Para eliminar la estación, deberá eliminarla desde el módulo de sensores.

Authorization: Bearer TOKEN
Content-type: application/json
DELETE /metos/api/sync
Body:
{
"device": <DEVICE>
}

Donde <DEVICE> (str) es el número de serie de la estación

Respuesta:

{
"res": "ok",
"info": "station deleted"
}

Errores:

CODEINFOdescripcion
NO_CREDENTIALSThere are no valid credentials for this userNo debería pasar. implica que se el usuario no está logueado
GET_STATION_ERRORStations could not be fetchedfalló la lectura del listado de estaciones
STATION_NOT_FOUND_ERRORStation was not foundNo se encontró la estación. Podría llegar a pasar si el usuario elimina la estación y no se llegó a actualizar

Variables

Variable groups

objeto variable_group:

  • group_uuid: string uuid del grupo. identificador ante auravant
  • created_at: string fecha de creación. formato YYYY-MM-DDTHH:MM:SSZ
  • deleted_at: string fecha de eliminación. formato YYYY-MM-DDTHH:MM:SSZ. Puede ser nula (no eliminado)
  • group_name: string Nombre de la estación según Metos.
  • user_group_name: string Nombre de la estación seteado por el usuario en auravant.
  • device: string Número de serie de la estación.
  • position: string Posición en el mapa según Metos. Puede ser nula
  • user_position: string Posición en el mapa seteado por el usuario en auravant. Puede ser nula
  • timezone_offset: int con la cantidad de minutos de offset respecto a UTC de la estación
  • metadata: object con metadata. Contiene únicamente las licencias de cultivos. {"licenses": {}}
  • variables: array con objetos variables