Documentação da API EcoMonitor
A API do EcoMonitor permite gerenciar dispositivos IoT para monitoramento sustentável de recursos hídricos e energéticos. Construída com Node.js, Express e MySQL, ela oferece endpoints RESTful para integração com sistemas externos.
Requisitos Básicos
- Todas as requisições devem usar HTTPS
- Todas as respostas são em formato JSON
- Autenticação via API Key no header
URLs Base
Produção
https://api.ecomonitor.dev/v1
Sandbox
https://api.sandbox.ecomonitor.dev/v1
Autenticação
Todas as requisições à API EcoMonitor requerem autenticação via API Key. Sua chave de API deve ser incluída em todos os cabeçalhos de requisição.
Obtenha um token de acesso usando suas credenciais de desenvolvedor.
Como autenticar
Inclua sua API Key no cabeçalho Authorization
de todas as requisições:
Authorization: Bearer <sua-api-key>
Níveis de Acesso
Free
- 100 requisições/dia
- Acesso somente leitura
Silver
- 1,000 requisições/dia
- Acesso completo
Gold
- Requisições ilimitadas
- Suporte prioritário
Limites de Taxa
Para garantir a estabilidade do serviço, a API EcoMonitor implementa limites de taxa (rate limiting) baseados no seu plano de assinatura.
Headers de Resposta
Todas as respostas incluem cabeçalhos que mostram seu status atual de limites de taxa:
X-RateLimit-Limit: 1000 X-RateLimit-Remaining: 987 X-RateLimit-Reset: 3600
Header | Descrição |
---|---|
X-RateLimit-Limit | Número total de requisições permitidas no período |
X-RateLimit-Remaining | Número de requisições restantes no período atual |
X-RateLimit-Reset | Tempo em segundos até o próximo reset do contador |
429 Too Many Requests
.
Recomendamos implementar retry com backoff exponencial em seu código para lidar com esses casos.
Listar Dispositivos
Recupera uma lista paginada de todos os dispositivos IoT registrados no sistema. Os dispositivos podem ser filtrados por tipo, status ou localização.
Retorna uma lista de dispositivos com suporte a paginação e filtros.
Parâmetros de Query
Parâmetro | Tipo | Obrigatório | Descrição |
---|---|---|---|
limit | integer | Não | Número de dispositivos por página (padrão: 10, máximo: 100) |
offset | integer | Não | Número de dispositivos a pular (padrão: 0) |
type | string | Não | Filtrar por tipo de dispositivo (water, energy, etc.) |
status | string | Não | Filtrar por status (active, inactive, maintenance) |
location | string | Não | Filtrar por localização (busca parcial) |
Exemplo de Requisição
GET /devices?limit=5&type=water&status=active Authorization: Bearer <sua-api-key> Accept: application/json
Resposta
{ "status": "success", "data": [ { "id": 1, "name": "Water Sensor 001", "type": "water", "location": "Main Building", "status": "active", "lastReading": "2025-04-23T10:00:00Z", "createdAt": "2025-01-15T08:30:00Z", "updatedAt": "2025-04-20T14:25:00Z" }, { "id": 2, "name": "Water Sensor 002", "type": "water", "location": "Secondary Building", "status": "active", "lastReading": "2025-04-23T09:45:00Z", "createdAt": "2025-02-10T11:20:00Z", "updatedAt": "2025-04-21T10:15:00Z" } ], "meta": { "total": 12, "limit": 5, "offset": 0, "filter": { "type": "water", "status": "active" } } }
Possíveis Erros
limit
e offset
para implementar paginação no seu aplicativo. Isso melhora significativamente o tempo de resposta.
Criar Dispositivo
Registra um novo dispositivo IoT no sistema EcoMonitor. Requer permissões de escrita.
Cria um novo dispositivo com os parâmetros especificados.
Corpo da Requisição
Parâmetro | Tipo | Obrigatório | Descrição |
---|---|---|---|
name | string | Sim | Nome amigável do dispositivo (3-50 caracteres) |
type | string | Sim | Tipo do dispositivo (water, energy, temperature, etc.) |
location | string | Sim | Localização física do dispositivo |
status | string | Não | Status inicial (active, inactive, maintenance - padrão: active) |
metadata | object | Não | Dados adicionais sobre o dispositivo |
{ "name": "Water Sensor 003", "type": "water", "location": "Main Building - Floor 2", "status": "active", "metadata": { "model": "WS-2023", "installationDate": "2025-04-20" } }
Exemplo de Requisição
POST /devices Authorization: BearerContent-Type: application/json Accept: application/json { "name": "Water Sensor 003", "type": "water", "location": "Main Building - Floor 2", "status": "active", "metadata": { "model": "WS-2023", "installationDate": "2025-04-20" } }
Resposta
{ "status": "success", "data": { "id": 3, "name": "Water Sensor 003", "type": "water", "location": "Main Building - Floor 2", "status": "active", "metadata": { "model": "WS-2023", "installationDate": "2025-04-20" }, "createdAt": "2025-04-23T12:00:00Z", "updatedAt": "2025-04-23T12:00:00Z" } }
Possíveis Erros
400 Bad Request
.
Certifique-se de que o campo type
corresponde a um dos tipos suportados pela API.
Exemplo de Requisição
POST /devices Authorization: Bearer <sua-api-key> Content-Type: application/json Accept: application/json { "name": "Water Sensor 003", "type": "water", "location": "Warehouse A", "status": "active", "metadata": { "manufacturer": "EcoTech", "model": "WS-2025", "installationDate": "2025-04-01" } }
Resposta
{ "status": "success", "data": { "id": 15, "name": "Water Sensor 003", "type": "water", "location": "Warehouse A", "status": "active", "metadata": { "manufacturer": "EcoTech", "model": "WS-2025", "installationDate": "2025-04-01" }, "createdAt": "2025-04-23T11:30:00Z", "updatedAt": "2025-04-23T11:30:00Z" } }
Obter Dispositivo
Recupera os detalhes completos de um dispositivo específico pelo seu ID.
Retorna todos os detalhes de um dispositivo específico, incluindo seu histórico de configurações.
Parâmetros de URL
Parâmetro | Tipo | Obrigatório | Descrição |
---|---|---|---|
id | integer | Sim | ID do dispositivo a ser recuperado |
Exemplo de Requisição
GET /devices/15 Authorization: Bearer <sua-api-key> Accept: application/json
Resposta
{ "status": "success", "data": { "id": 15, "name": "Water Sensor 003", "type": "water", "location": "Warehouse A", "status": "active", "lastReading": null, "metadata": { "manufacturer": "EcoTech", "model": "WS-2025", "installationDate": "2025-04-01" }, "createdAt": "2025-04-23T11:30:00Z", "updatedAt": "2025-04-23T11:30:00Z", "configHistory": [] } }
Atualizar Dispositivo
Atualiza as informações de um dispositivo existente. Permite alterar nome, localização, status e metadados.
Atualiza parcial ou completamente um dispositivo existente.
Corpo da Requisição
Parâmetro | Tipo | Obrigatório | Descrição |
---|---|---|---|
name | string | Não | Novo nome para o dispositivo |
location | string | Não | Nova localização para o dispositivo |
status | string | Não | Novo status (active, inactive, maintenance) |
metadata | object | Não | Metadados atualizados (substitui o objeto completo) |
{ "location": "Warehouse A - Sector 2", "status": "maintenance", "metadata": { "manufacturer": "EcoTech", "model": "WS-2025", "installationDate": "2025-04-01", "lastMaintenance": "2025-04-23" } }
Exemplo de Requisição
PUT /devices/15 Authorization: Bearer <sua-api-key> Content-Type: application/json Accept: application/json { "location": "Warehouse A - Sector 2", "status": "maintenance", "metadata": { "manufacturer": "EcoTech", "model": "WS-2025", "installationDate": "2025-04-01", "lastMaintenance": "2025-04-23" } }
Resposta
{ "status": "success", "data": { "id": 15, "name": "Water Sensor 003", "type": "water", "location": "Warehouse A - Sector 2", "status": "maintenance", "metadata": { "manufacturer": "EcoTech", "model": "WS-2025", "installationDate": "2025-04-01", "lastMaintenance": "2025-04-23" }, "createdAt": "2025-04-23T11:30:00Z", "updatedAt": "2025-04-23T12:45:00Z" } }
Remover Dispositivo
Remove permanentemente um dispositivo do sistema. Esta ação é irreversível.
Remove um dispositivo e todos os seus dados associados.
Parâmetros de URL
Parâmetro | Tipo | Obrigatório | Descrição |
---|---|---|---|
id | integer | Sim | ID do dispositivo a ser removido |
Exemplo de Requisição
DELETE /devices/15 Authorization: Bearer <sua-api-key> Accept: application/json
Resposta
// Sem conteúdo no corpo da resposta
Possíveis Erros
Obter Leituras
Recupera as leituras de um dispositivo específico ou de todos os dispositivos, com suporte a filtros por data e tipo.
Retorna leituras paginadas com suporte a diversos filtros.
Parâmetros de Query
Parâmetro | Tipo | Obrigatório | Descrição |
---|---|---|---|
deviceId | integer | Não | Filtrar por ID do dispositivo |
type | string | Não | Filtrar por tipo de leitura (water_level, energy_consumption, etc.) |
startDate | string | Não | Data de início (formato ISO 8601) |
endDate | string | Não | Data de fim (formato ISO 8601) |
limit | integer | Não | Número de leituras por página (padrão: 50, máximo: 1000) |
offset | integer | Não | Número de leituras a pular (padrão: 0) |
Exemplo de Requisição
GET /readings?deviceId=15&type=water_level&startDate=2025-04-01&endDate=2025-04-23&limit=100 Authorization: Bearer <sua-api-key> Accept: application/json
Resposta
{ "status": "success", "data": [ { "id": 12345, "deviceId": 15, "type": "water_level", "value": 42.5, "unit": "cm", "timestamp": "2025-04-22T08:30:00Z", "metadata": { "sensorBattery": 85, "signalStrength": "good" } }, { "id": 12346, "deviceId": 15, "type": "water_level", "value": 41.8, "unit": "cm", "timestamp": "2025-04-22T09:30:00Z", "metadata": { "sensorBattery": 84, "signalStrength": "good" } } ], "meta": { "total": 48, "limit": 100, "offset": 0, "filter": { "deviceId": 15, "type": "water_level", "dateRange": { "start": "2025-04-01T00:00:00Z", "end": "2025-04-23T23:59:59Z" } } } }
Enviar Leitura
Envia uma nova leitura de dados para um dispositivo específico.
Registra uma nova leitura no sistema para processamento e análise.
Corpo da Requisição
Parâmetro | Tipo | Obrigatório | Descrição |
---|---|---|---|
deviceId | integer | Sim | ID do dispositivo que gerou a leitura |
type | string | Sim | Tipo de leitura (ex: water_level, energy_consumption) |
value | number | Sim | Valor numérico da leitura |
unit | string | Sim | Unidade de medida (ex: cm, kWh, °C) |
timestamp | string | Não | Data/hora da leitura (ISO 8601, padrão: agora) |
metadata | object | Não | Dados adicionais sobre a leitura |
{ "deviceId": 15, "type": "water_level", "value": 43.2, "unit": "cm", "timestamp": "2025-04-23T14:30:00Z", "metadata": { "sensorBattery": 83, "signalStrength": "excellent", "accuracy": 0.5 } }
Exemplo de Requisição
POST /readings Authorization: Bearer <sua-api-key> Content-Type: application/json Accept: application/json { "deviceId": 15, "type": "water_level", "value": 43.2, "unit": "cm", "timestamp": "2025-04-23T14:30:00Z", "metadata": { "sensorBattery": 83, "signalStrength": "excellent", "accuracy": 0.5 } }
Resposta
{ "status": "success", "data": { "id": 12347, "deviceId": 15, "type": "water_level", "value": 43.2, "unit": "cm", "timestamp": "2025-04-23T14:30:00Z", "metadata": { "sensorBattery": 83, "signalStrength": "excellent", "accuracy": 0.5 }, "createdAt": "2025-04-23T14:30:05Z" } }
Downloads
Recursos úteis para integrar com a API EcoMonitor.
SDKs e Bibliotecas
Suporte
Precisa de ajuda ou tem dúvidas sobre a API? Entre em contato com nossa equipe.
Chat Online
Disponível no painel de desenvolvedor
Seg-Sex: 9h-18h (horário de Brasília)