influxdata / influxdata/iot-api-js
Update app to use InfluxDB 3 Enterprise
@jstirnaman is already working on this.
Since Feb 10, 2026.
- Dominant language
- JavaScript
- Stars
- 12
- Forks
- 5
- Avg merge
- 2d 16h
- Merged PRs (30d)
- 2
Description
Use InfluxDB 3 Enterprise
Overview
Extend the IoT API sample application to leverage InfluxDB 3 Enterprise features for production-ready deployments with historical data access, resource tokens, and enhanced monitoring.
Prerequisite: Complete InfluxDB 3 Core migration first.
Phase 3: Enterprise Migration
Resource Tokens
Replace application-level tokens with InfluxDB 3 Enterprise resource tokens for fine-grained access control.
Token Format: db:DATABASE:PERMISSIONS
# Create read-only token for a device
influxdb3 create token \
--description "Device sensor-001 read token" \
--resource "db:iot_center:read"
# Create read-write token for device registration
influxdb3 create token \
--description "Device registration service" \
--resource "db:iot_center:read,write" \
--resource "db:iot_center_devices:read,write"
Implementation:
- Update device creation to generate Enterprise resource tokens
- Store token metadata in device registry
- Validate tokens server-side before processing requests
Historical Data Queries
Remove 72-hour query limitation for full historical analysis.
Use cases:
- Long-term trend analysis
- Historical reporting
- Data export for ML training
API Enhancements:
// GET /api/measurements?range=30d
// GET /api/measurements?start=2024-01-01&end=2024-12-31
High Availability
Enterprise supports clustered deployments for production reliability.
Considerations:
- Connection pooling for multiple nodes
- Retry logic with backoff
- Health check endpoints
Phase 4: Enterprise Enhancements
InfluxDB 3 Explorer UI Integration
Leverage the built-in web UI for data exploration and debugging.
Features to document:
Feature | Description
-- | --
SQL Query Editor | Autocomplete and syntax highlighting
Real-time Visualization | Interactive charts and graphs
Table Browser | Schema and table exploration
Query History | Saved and recent queries
Migration Checklist
- [ ] Upgrade InfluxDB 3 Core to Enterprise
- [ ] Migrate application tokens to resource tokens
- [ ] Update API to support historical queries
- [ ] Configure connection pooling for HA
- [ ] Set up Grafana dashboards
- [ ] Document Explorer UI usage
- [ ] Deploy scheduled processing plugins
- [ ] Update monitoring and alerting
References
- InfluxDB 3 Enterprise Documentation
- Resource Tokens
- Grafana InfluxDB Data Source
- Processing Engine Triggers
Related
- InfluxDB 3 Core migration (prerequisite)
- PR #18: Initial migration implementation
- Branch:
claude/influxdb3-migration-v3-pMqwy
### Overview
Extend the IoT API sample application to leverage InfluxDB 3 Enterprise features for production-ready deployments with historical data access, resource tokens, and enhanced monitoring.
> **Prerequisite**: Complete InfluxDB 3 Core migration first.
---
## Phase 3: Enterprise Migration
### Resource Tokens
Replace application-level tokens with InfluxDB 3 Enterprise resource tokens for fine-grained access control.
**Token Format**: `db:DATABASE:PERMISSIONS`
```bash
# Create read-only token for a device
influxdb3 create token \
--description "Device sensor-001 read token" \
--resource "db:iot_center:read"
# Create read-write token for device registration
influxdb3 create token \
--description "Device registration service" \
--resource "db:iot_center:read,write" \
--resource "db:iot_center_devices:read,write"
```
**Implementation**:
- Update device creation to generate Enterprise resource tokens
- Store token metadata in device registry
- Validate tokens server-side before processing requests
### Historical Data Queries
Remove 72-hour query limitation for full historical analysis.
**Use cases**:
- Long-term trend analysis
- Historical reporting
- Data export for ML training
**API Enhancements**:
```javascript
// GET /api/measurements?range=30d
// GET /api/measurements?start=2024-01-01&end=2024-12-31
```
### High Availability
Enterprise supports clustered deployments for production reliability.
**Considerations**:
- Connection pooling for multiple nodes
- Retry logic with backoff
- Health check endpoints
---
## Phase 4: Enterprise Enhancements
### InfluxDB 3 Explorer UI Integration
Leverage the built-in web UI for data exploration and debugging.
**Features to document**:
| Feature | Description |
|---------|-------------|
| SQL Query Editor | Autocomplete and syntax highlighting |
| Real-time Visualization | Interactive charts and graphs |
| Table Browser | Schema and table exploration |
| Query History | Saved and recent queries |
**Integration points**:
- Link from API error responses to Explorer for debugging
- Document Explorer URL patterns for deep linking
### Grafana Dashboard Integration
Build monitoring dashboards using Grafana with InfluxDB 3 as data source.
**Example Dashboards**:
#### 1. Device Overview Dashboard
| Panel | Type | Description |
|-------|------|-------------|
| Active Devices | Gauge | Current count of registered devices |
| Registration Timeline | Time Series | Device registrations over time |
| Devices by Type | Pie Chart | Distribution of device types |
#### 2. Telemetry Monitoring Dashboard
| Panel | Type | Description |
|-------|------|-------------|
| Temperature/Humidity | Time Series | Trends per device |
| Anomaly Alerts | Alert List | Threshold violations |
| Ingestion Rate | Stat Panel | Data points per second |
#### 3. System Health Dashboard
| Panel | Type | Description |
|-------|------|-------------|
| API Response Times | Histogram | Latency distribution |
| Error Rates | Bar Chart | Errors by endpoint |
| Query Performance | Time Series | Database query metrics |
**Grafana Data Source Configuration**:
```yaml
datasources:
- name: InfluxDB 3
type: influxdb
url: http://localhost:8181
jsonData:
version: Flux # Use SQL plugin when available
organization: ""
defaultBucket: iot_center
```
### Advanced Processing Engine
Enterprise-scale processing with additional capabilities.
**Scheduled Aggregation Plugin**:
```python
# hourly_rollup.py - Runs every hour
def process_scheduled(influxdb3_local, args):
# Query last hour of raw data
results = influxdb3_local.query("""
SELECT
deviceId,
AVG(Temperature) as avg_temp,
MAX(Temperature) as max_temp,
MIN(Temperature) as min_temp
FROM environment
WHERE time >= now() - INTERVAL '1 hour'
GROUP BY deviceId
""")
# Write aggregated data to rollup table
for row in results:
influxdb3_local.write(
f'environment_hourly,deviceId={row["deviceId"]} '
f'avg_temp={row["avg_temp"]},max_temp={row["max_temp"]},min_temp={row["min_temp"]}'
)
```
---
## Enterprise-Specific Environment Variables
```bash
# .env.production
INFLUX_HOST=https://influxdb.example.com
INFLUX_TOKEN=enterprise-admin-token
INFLUX_DATABASE=iot_center
INFLUX_DATABASE_AUTH=iot_center_devices
# Enterprise-specific
INFLUX_ENABLE_RESOURCE_TOKENS=true
INFLUX_CLUSTER_NODES=node1:8181,node2:8181,node3:8181
```
---
## Core vs Enterprise Comparison
| Feature | Core | Enterprise |
|---------|------|------------|
| Query Window | 72 hours | Unlimited |
| Resource Tokens | No | Yes |
| High Availability | No | Yes |
| Processing Engine | Yes | Yes (enhanced) |
| Explorer UI | Yes | Yes |
| Grafana Support | Yes | Yes |
---
## Migration Checklist
- [ ] Upgrade InfluxDB 3 Core to Enterprise
- [ ] Migrate application tokens to resource tokens
- [ ] Update API to support historical queries
- [ ] Configure connection pooling for HA
- [ ] Set up Grafana dashboards
- [ ] Document Explorer UI usage
- [ ] Deploy scheduled processing plugins
- [ ] Update monitoring and alerting
---
## References
- [[InfluxDB 3 Enterprise Documentation](https://docs.influxdata.com/influxdb3/enterprise/)](https://docs.influxdata.com/influxdb3/enterprise/)
- [[Resource Tokens](https://docs.influxdata.com/influxdb3/enterprise/admin/tokens/resource/)](https://docs.influxdata.com/influxdb3/enterprise/admin/tokens/resource/)
- [[Grafana InfluxDB Data Source](https://grafana.com/docs/grafana/latest/datasources/influxdb/)](https://grafana.com/docs/grafana/latest/datasources/influxdb/)
- [[Processing Engine Triggers](https://docs.influxdata.com/influxdb3/core/process-data/triggers/)](https://docs.influxdata.com/influxdb3/core/process-data/triggers/)
---
## Related
- [InfluxDB 3 Core migration](#38) (prerequisite)
- PR #18: Initial migration implementation
- Branch: `claude/influxdb3-migration-v3-pMqwy`
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.