A API de Ingestão permite-te enviar dados dos teus sensores para o Flumio. Precisas de uma conta de Administrador e dos nomes exatos dos sensores registados no sistema.
|
Propriedade |
Valor |
|---|---|
|
URL base |
|
|
Autenticação |
Cookies (definidos automaticamente no login) |
|
Formato dos dados |
JSON ( |
Autenticação
POST /auth/login
Content-Type: application/x-www-form-urlencoded
Utiliza este endpoint para te autenticares no Flumio:
|
Campo |
Tipo |
Descrição |
|---|---|---|
|
|
string |
O teu e-mail (não um nome de utilizador) |
|
|
string |
A tua palavra-passe |
A resposta define automaticamente cookies de sessão. O token de acesso expira após 15 minutos — para renovar, envia POST /auth/refresh (válido por 7 dias).
Envio de dados
POST /ingestion/ingest_time_series
Utiliza este endpoint para enviares medições para o Flumio:
{
"entries": [
{
"sensor": "CAUDAL_ZMC_01",
"timestamp": "2025-01-15T10:00:00+00:00",
"value": 12.5
},
{
"sensor": "PRESSAO_NO_42",
"timestamp": "2025-01-15T10:00:00+00:00",
"value": 3.2
}
]
}
|
Campo |
Tipo |
Descrição |
|---|---|---|
|
|
string |
Nome exato do sensor (case-sensitive) |
|
|
string |
ISO 8601 com offset de timezone |
|
|
float ou string |
Valor numérico da medição |
Os valores são convertidos automaticamente para unidades SI.
Formato do timestamp
O timestamp deve incluir o offset de timezone:
YYYY-MM-DDTHH:MM:SS+HH:MM
2025-01-15T10:30:00+00:00 # UTC
2025-01-15T10:30:00+01:00 # Europe/Lisbon (inverno)
|
Formato |
Aceite? |
Problema |
|---|---|---|
|
|
Sim |
— |
|
|
Não |
Sufixo |
|
|
Não |
Espaço em vez de |
|
|
Não |
Falta o offset |
Validação
Cada registo (timestamp e respetivo valor) é validado individualmente. Registos inválidos são colocados em quarentena — os restantes continuam a ser processados.
|
Regra |
|---|
|
O sensor deve existir no Flumio |
|
O sensor deve estar Ativo |
|
O timestamp deve seguir o formato exigido e representar uma data válida |
|
O valor deve ser um número finito (sem |
|
Sensores de tipo |
|
Não pode haver duplicados |
Verificar sensores
GET /timeseries/signal_status_table
Consulta este endpoint para confirmares os nomes dos teus sensores e o último timestamp ingerido:
{
"sensors": [
{
"sensor": "CAUDAL_ZMC_01",
"timestamp": "2025-01-15T10:30:00+00:00",
"value": 12.5
},
{
"sensor": "PRESSAO_NO_42",
"timestamp": null,
"value": null
}
]
}
Utiliza o campo timestamp para enviares apenas dados novos (posteriores ao último registo). Quando timestamp é null, o sensor ainda não tem dados — nesse caso, envia dados desde a data que considerares adequada.
Verificar resultados
GET /tasks/status/{task_id}
A ingestão é processada em segundo plano. A resposta imediata inclui um task_id — consulta o estado em GET /tasks/status/{task_id}. Quando task_state for SUCCESS, o campo task_result indica:
|
|
Significado |
|---|---|
|
|
Todas as entradas processadas |
|
|
Algumas entradas em quarentena (ver |
|
|
Todas as entradas em quarentena |
Erros
Consulta os códigos de erro e respetivas descrições:
|
Código |
Descrição |
|---|---|
|
400 |
Formato do pedido inválido |
|
401 |
Sessão ausente ou expirada — re-autentica ou renova o token |
|
403 |
Sem permissão — apenas Administradores podem ingerir |
|
413 |
Payload demasiado grande — limita cada pedido a ~5 MB |
|
429 |
Rate limit excedido |