wiki-Reference
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:
| CODE | INFO | descripcion |
|---|---|---|
| GENERAL_ERROR | The requested action failed to execute | error general, es generalmente un error no atajado |
| EXPIRED_AUTHENTICATION | Expired Authentication token | token vencido, no deberia ocurrir desde la extensión |
| INVALID_AUTH | Invalid Authentication token | token inválido, no debería ocurrir desde la extensión |
| PARAMETER_ERROR | Parameters error | los parámetros enviados al backend no coinciden con los esperados |
| UNAUTHORIZED_EXTENSION | Unauthorized attempt to access an Extensions resource | se está consultando un endpoint no habilitado para extensiones |
| UNAUTHORIZED_USER | Unauthorized attempt to access a protected endpoint | usuario no autenticado, falta autenticación en la request |
| CONNECTION_ERROR | There was an error connecting to Auravant | Falló la conexión con el microservicio de Sensores. **ver qué mostrarle al usuario |
| PERMISSION_ERROR | The user is not allowed to perform this operation | El 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:
| CODE | INFO | descripcion |
|---|---|---|
| GET_STATION_ERROR | Stations could not be fetched | falló 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:
| CODE | INFO | descripcion |
|---|---|---|
| GET_STATION_ERROR | Stations could not be fetched | falló la lectura del listado de estaciones |
| STATION_EXISTS_ERROR | Station has already been synced | Se está queriendo sincronizar una estación ya sincronizada |
| DEVICE_NOT_FOUND_ERROR | The requested device was not found | No se encontró el dispositivo solicitado. Puede ser por key inválida |
| CREATE_STATION_ERROR | Station could not be created | No se pudo dar de alta la estación en auravant |
| METOS_CONNECTION_ERROR | Metos server failed to execute the requested operation | Falló 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:
| CODE | INFO | descripcion |
|---|---|---|
| GET_STATION_ERROR | Stations could not be fetched | falló la lectura del listado de estaciones |
| STATION_NOT_FOUND_ERROR | Station was not found | No 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:
| CODE | INFO | descripcion |
|---|---|---|
| AUTH_ERROR | User has already authorized this app | No 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:
| CODE | INFO | descripcion |
|---|---|---|
| NO_CREDENTIALS | There are no valid credentials for this user | No 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:
| CODE | INFO | descripcion |
|---|---|---|
| NO_CREDENTIALS | There are no valid credentials for this user | No debería pasar. implica que se el usuario no está logueado |
| GET_STATION_ERROR | Stations could not be fetched | falló 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:
| CODE | INFO | descripcion |
|---|---|---|
| NO_CREDENTIALS | There are no valid credentials for this user | No debería pasar. implica que se el usuario no está logueado |
| GET_STATION_ERROR | Stations could not be fetched | falló la lectura del listado de estaciones |
| NO_DEVICES | No device were found | No se encontraron estaciones en la cuenta de MEtos del usuario |
| ALL_SYNCED | All devices are already synced | Todas las estaciones ya se encuentran sincronziadas |
| CREATE_STATION_ERROR | Station could not be created | No se pudo dar de alta la estación en auravant |
| METOS_CONNECTION_ERROR | Metos server failed to execute the requested operation | Falló 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:
| CODE | INFO | descripcion |
|---|---|---|
| NO_CREDENTIALS | There are no valid credentials for this user | No debería pasar. implica que se el usuario no está logueado |
| GET_STATION_ERROR | Stations could not be fetched | falló la lectura del listado de estaciones |
| STATION_NOT_FOUND_ERROR | Station was not found | No 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:stringuuid del grupo. identificador ante auravantcreated_at:stringfecha de creación. formatoYYYY-MM-DDTHH:MM:SSZdeleted_at:stringfecha de eliminación. formatoYYYY-MM-DDTHH:MM:SSZ. Puede ser nula (no eliminado)group_name:stringNombre de la estación según Metos.user_group_name:stringNombre de la estación seteado por el usuario en auravant.device:stringNúmero de serie de la estación.position:stringPosición en el mapa según Metos. Puede ser nulauser_position:stringPosición en el mapa seteado por el usuario en auravant. Puede ser nulatimezone_offset:intcon la cantidad de minutos de offset respecto aUTCde la estaciónmetadata:objectcon metadata. Contiene únicamente las licencias de cultivos.{"licenses": {}}variables:arraycon objetosvariables