Scheduling & Delivery
Cron-driven export scheduling with IANA timezone support, file or webhook delivery, retry with exponential backoff, and retention policies.
ExportJobSpec
| Field | Type | Description |
|---|---|---|
| schedule | String | 7-field cron expression |
| timezone | String | IANA timezone (e.g. "America/New_York") |
| source | ExportSource | Live (current state) or Historical (time_range) |
| entity_filter | Option | Filter entities by expression |
| destination | ExportDestination | File or Webhook |
| sla_max_latency_secs | Option<f64> | SLA breach alert threshold |
Destinations
- File: Write to local path. RetentionPolicy enforces max_age_days, max_count, max_size_bytes.
- Webhook: HTTP POST with configurable auth_header, content_type, and timeout (default 30s).
Retry & Retention
- RetryPolicy: Exponential backoff via
nerve-core::retry. Configurable max attempts and base delay. - RetentionPolicy: Enforces max_age_days, max_count, and max_size_bytes. Old files auto-purged.
Example
YAML
exports:
- id: daily_hvac_report
schedule: "0 0 6 * * * *" # 6 AM daily
timezone: "Australia/Perth"
source: { type: historical, time_range: "-24h" }
domain: hvac
fields: [entity_id, actual_temp, setpoint, comfort_index]
format: xlsx
destination:
type: webhook
url: "https://reports.internal/upload"
auth_header: "Bearer ${REPORT_TOKEN}"
encryption: { type: recipient, public_key: "age1..." }
sign: true
retention: { max_age_days: 90, max_count: 100 } Questions?
Reach out for help with integration, deployment, or custom domain codecs.