Changelog
What's new in AmpNexus
Release notes pulled straight from our delivery pipeline — every entry ships with verified quality and performance data.
346 releases
- stableService
Meter API – 1.4.0
meter-apiQualitytests: 59 passedcoverage: 15% line1.4.0 (2026-02-25)
Bug Fixes
- allow platform admin meter SSE (a1cca9f)
- allow tenant_global meter sse (5ff4f11)
Features
- meter-api: consume platform.ocpp.events meter values (c60d3d8)
- stableService
Device API – 1.1.0
device-apiQualitytests: 19 passedcoverage: 5% line1.1.0 (2026-02-25)
Features
- add setup-existing endpoint for field device imports (8a42dde)
- stableService
Firmware Orchestrator – 1.1.0
firmware-orchestratorQualitytests: 12 passedcoverage: 4% lineBug Fixes
- ci: inline orchestrator changes rules for valid gitlab config (266c0b2)
- ci: remove skip-ci release message from semantic-release commits (35e711d)
- ci: trigger orchestrator image builds for release and build config changes (646d560)
- db: correct postgres placeholders for enum casts (06fdc0d)
- db: tolerate idempotent ingest inserts (b83c169)
- events: consume fw.device.status telemetry (e073886)
- rabbitmq: auto-reconnect consumer on stream drop (ac271c4)
- rollouts: cast status enums in db updates (af0c1fc)
Features
- rollouts: ingest approval snapshot and allow via rabbitmq (ee52735)
- stableService
Release API – 1.4.2
release-apiQualitytests: 95 passedcoverage: 7% line1.4.2 (2026-02-24)
Bug Fixes
- ci: trigger builds when release and ci configs change (593102f)
- performance overview now includes releases with recent tests regardless of release date (7a9bec3)
Performance Improvements
- add index and concurrent queries for lower list_releases latency (b7c93b6)
- add slow request logging middleware for latency debugging (49e731a)
- optimize db connection pool for lower latency (c89b330)
- stableFirmware
PlugStream Firmware 1.10.2
PlugStream 7PlugStream 22Qualitytests: 127 passedcoverage: 93% line· 93% branchBug Fixes
- evse: move meter reads off esp_timer task (56eddf7)
- ota: clear pending state immediately after boot validation (ac8c194)
- ota: harden boot partition persistence (b59a47a)
- ota: harden resume flow after reboot (3a5008a)
- ci: run staging publish on develop->staging MRs (edd69e3)
- correct SecurityEvent timestamps and quote transaction column (9373bbe)
- defer security events until boot accepted (6cccf4f)
- evse: gate charging start on profile/random delay (4e416f0)
- improve GetTransactionStatus ongoingIndicator (dffea8e)
- network: add connectivity watchdog for WS DNS failures (79c8fa2)
- network: delay captive portal on outages and keep STA reconnecting (eb5365a)
- ocpp: accept DateTime fractional seconds (2ed09f7)
- ocpp: add missing enum string helpers (fedab93)
- ocpp: harden inbound CSMS CALL handling (3bf0a94)
- ocpp: harden SetChargingProfile validation (e5a3f5b)
- ocpp: prune expired profiles and enforce storage cap (595b1e7)
- ocpp: remove duplicate ChargingStateHelper definition (3e37f49)
- ocpp: wire ChangeAvailability, CertificateSigned, GetTransactionStatus (bcfcbf3)
- prevent security_evt stack overflow (6056e45)
- reduce heap churn in VariableRegistry persistence (877deea)
- tests: remove gtest dependency for host tests (94da004)
- websocket: prevent reconnect lockout and keep retrying (a783c09)
- wolfssl: enable OpenSSL-compat APIs for cert utilities (a9acc2d)
- ws: validate inbound OCPP frames (b70c5a6)
- ocpp: encode metering sampled values as numbers (1bd4981)
Features
- add DataTransfer and local auth list support (de1f9dc)
- add handlers for all missing OCPP actions (d6ed9dd)
- enrich security event tech info (91e26af)
- implement CertificateSigned certificate persistence (687df3f)
- implement SetNetworkProfile with NVS persistence (93287fd)
- implement SignCertificate CSR generation (83f92c4)
- led: add connectivity override LED when websocket offline (cc350d7)
- metering: add snapshot + ms timestamps for MeterValues (40fbebd)
- ocpp: add v201 variable monitoring service (675d814)
- ocpp: enrich GetCompositeSchedule response (7662280)
- ocpp: enrich GetTransactionStatus and telemetry (9466195)
- ocpp: enrich NotifyChargingLimit schedule preview (3e2a317)
- ocpp: enrich TransactionEvent metering + cost (397342b)
- ocpp: implement certificate management messages (27cb32c)
- ocpp: implement CertificateSigned message - Phase 1 Complete (v1.3.0) (c66e1b5)
- ocpp: implement ChangeAvailability message (Phase 1 critical stub) (f1f3ada)
- ocpp: implement ClearedChargingLimit message (Phase 1 critical stub) (86199bd)
- ocpp: implement GetTransactionStatus message (v1.2.0) (9595076)
- ocpp: implement OCPP 2.0.1 reservation system (37f2712)
- ocpp: implement v201 Variables schema + validation (89dbd9d)
- ocpp: persist variable monitoring across reboot (10f6fdc)
- ocpp: validate charging profiles before install (afe8cfb)
- ocpp: wire v201 variable monitoring and events (692bb5b)
- ota: preflight reboot, resume pending update, and clean firmware.bin (bb9af83)
- ota: send SecurityEvent before preflight reboot (a6424ee)
- persist auto token and send SecurityEventNotification (f63a7a6)
- scripts: add automatic serial logging to monitor scripts (c7eb8ba)
- security: persist CP cert and enable mutual TLS (880dbff)
- stableFirmware
PlugStream Firmware 1.9.0
PlugStream 7PlugStream 22Qualitytests: 39 passedcoverage: 89% line· 89% branchBug Fixes
- firmware: harden OTA validation and rollback handling (7b65d37)
- prevent LED standby light spam when override is active (df4ba4e)
- websocket: ignore late CALLRESULTs (80c3bdc)
- add BLE notification failure diagnostics and tracking (13abc23), closes #10
- add stabilization delay for socket lock state feedback (4354c1e)
- Added esp-idf selection in ci pipelines (35671a8)
- address ArduinoJson deprecations and cleanup includes (8ef1175)
- allocate StaticTask_t in internal RAM for PSRAM tasks (55a9573)
- avoid abort on bt controller mem release (7908234)
- avoid aborts on ledc duty updates (154aeca)
- avoid printf formatting for ocpp payload logs (041ecde)
- bluetooth,wifi: WiFi scan on-demand + DNS graceful shutdown (ada1d92)
- bluetooth: avoid NimBLE stop crash (1fa9f29)
- bluetooth: avoid nimble_port_deinit crash during OTA (c75a65c)
- bluetooth: prevent os_mbuf memory leak on notification failures (709f129), closes #2
- bluetooth: prevent WiFi scan task memory leak and dangling pointer (4b045d3), closes #3 #4 #3 #4
- bluetooth: stop leaking WiFi scan tasks and avoid NimBLE double-init (f31730b)
- ci: change releases MR target from master to staging (3cf6352)
- ci: correct firmware binary filename in GitLab releases (6578ffb)
- ci: remove redundant changes rule to prevent pipeline skipping (109cff6)
- ci: send portal-friendly release notes to API (e6610da)
- clear default netif when Ethernet loses IP (55be7ca)
- correct firmware download log format (e087b88)
- correct firmware download task stack sizing (0f7614c)
- correct firmware stack watermark logging (5d3c4a3)
- correct inverted socket lock state GPIO polarity (ba8c7aa)
- correct JSON field parsing and persist provisioning data to NVS (cc3ce6f)
- correct ota task stack sizes (idf bytes) and reduce hash stack usage (161f4ae)
- correct socket lock timing to match PCB design requirements (be40eb5)
- correct stack sizing for ws/adc tasks (e4052a5)
- correct task stack size units for firmware tasks (a29b21d)
- correct task stack sizing and reduce monitor heap churn (9a6af00)
- correct voltage measurement using peak-to-RMS method (8066d80)
- defer ota install task to ensure internal stack (2b7be2e)
- disable network stats due to RAM constraints (e7c583d)
- downgrade socket lock state feedback mismatch to warning (a8b1da9)
- Eliminate database memory leaks and prevent SQLITE_BUSY errors (e4ca9a9)
- emit cp healthy event after evse health check (30d3498)
- enlarge ocpp_monitor stack to 12kb (45fe171)
- enlarge ws_rx internal stack to avoid overflow (32d9d01)
- ensure installed status emitted by auto-marking validation (652a991)
- free RAM before download task and retry with smaller stack (a784952)
- guard bluetooth stop against double calls (db0c8de)
- hal: resolve critical HAL safety and logic issues (2761737)
- handle empty result from database integrity check (a46c9a1)
- handle ESP_ERR_NOT_SUPPORTED in OTA partition state check (e97c488)
- handle WiFi state properly when starting captive AP (20094f1)
- harden captive portal wifi transitions (df0bcae)
- harden ethernet init and default netif set (c2b510d)
- harden led driver and smooth boot rainbow (fed226d)
- harden websocket/logging and PEN fault persistence (7ad3ec3)
- improve low-memory resilience and non-critical init (1f91a06)
- increase DNS catchall task stack from 4KB to 8KB (4f42851)
- increase NTP task stack to 6KB to prevent overflow (aca6956)
- Increase stack size for CP Activation task via Bluetooth (8fdbd86)
- increase task stack sizes to prevent overflows (a1b6cce)
- increase task stacks for large OCPP message safety (e5d2e98)
- increase WebSocket buffer size for large OCPP messages (0fc665d)
- install immediately when installDate not provided (c2db347)
- install immediately when schedule time is past (ce79778)
- keep websocket running during ota (92ad191)
- led: keep firmware update override active (63e95ad)
- make adc continuous isr cache safe (9cfd8d1)
- make coverage script compatible with CI lcov (21c1b5b)
- make sntp init idempotent (ffac48c)
- miscellaneous improvements and stack optimizations (e2c1a35)
- move stacks to PSRAM and reduce internal heap pressure (7e8144e)
- ocpp,websocket: harden rx and remote stop handling (4265798)
- ocpp: critical OCPP message handling improvements (3d7e7f1), closes #2 #3 #4
- ocpp: implement CALLERROR processing and message ID validation (cca0d51), closes #1 #5
- only set Ethernet as default interface when it has IP (49f513e)
- optimize processedMessages with deque+set hybrid for O(1) lookup (825e21a), closes #9
- ota: add robust download validation and error handling (2266778)
- ota: prevent timer memory leaks and improve resource management (d314a51)
- ota: replace statvfs with ESP-IDF littlefs API for filesystem space check (92dd99f)
- pause ble during ota to free ram (80627f2)
- pause websocket during OTA and shrink download buffers (419f14e)
- prevent download task stack overflow (663bc9b)
- prevent duplicate BootNotification on reconnect and fix LED state (0dadebb)
- prevent duplicate BootNotification on WebSocket reconnect (9821f75)
- prevent PSRAM task from accessing flash/NVS (crash fix) (090b631)
- properly allocate task stacks in PSRAM instead of internal RAM (bb195f6)
- reduce LogWorker stack usage by removing std::regex (34c4141)
- rely on evse health event for ota validation (3de20f8)
- remove blocking wait for Ethernet IP and set priority (bdb94c9)
- remove coverage flags from firmware build (43e8cdd)
- remove deadlock in MeterManager saveToNvs (a577b2c)
- remove nested mutex locks causing TLS memory exhaustion (cd0ae49)
- remove redundant esp_wifi_connect() call causing race condition (6e49b45)
- remove stray escape sequences in LED control (118e864)
- resolve critical meter accuracy issues (adf224b)
- resolve EVSE control loop bugs and improve code quality (ca79184)
- Resolved stack overflow on Bluetooth WiFi Network scan with large amount of Access Points. (aae93f5)
- Resolved web socket failure on Activation Task processing (2ec7205)
- Resolved websocket reconnect on Bluetooth CP Activation (17564c4)
- reuse persistent NVS handle to reduce flash overhead (aef1a80), closes #8
- revert flash I/O tasks to internal RAM (9aaef4c)
- revert NTP task to internal RAM - stack overflow on cleanup (608a051)
- route EVSE and meter NVS writes through main loop queue (67baf92)
- run install on separate high-stack task (921b86d)
- run websocket RX task on internal stack to avoid flash cache assert (9f65e84)
- start mdns only with softap clients (b42685c)
- update firmware root CA for api.s3.ampnexus.net (1b3d287)
- use iram tx stack and rfc3339 firmware times (5ff67c3)
- use PSRAM for NTP task stack to preserve internal RAM (c9acc13)
- WebSocket race condition in message processing (3be366c)
- websocket: add mutex protection for wsclient to prevent race conditions (5392152), closes #6
- websocket: connect CSMS after network up (87094f2)
- websocket: harden tx queue under stalled CSMS (5b036b6)
- websocket: prevent processedMessages memory leak (48ae5c8), closes #1
- websocket: resolve critical safety and threading issues (b68183a)
- ci: Trigger CI Build (1ec1744)
- ci: Trigger CI Build (13c6e6f)
- ci: Trigger CI Pipeline (b805338)
- release: Trigger CI Build (f414203)
- release: Trigger CI Build (3134d9e)
- release: Trigger CI Build (a0dbffa)
- release: Trigger CI Build (d8cd5bc)
- Trigger CI Build (b8e3c69)
- Trigger CI Build (3d884f1)
- Trigger CI Build (b354592)
- Trigger CI Build (8668559)
- Updated CI Dispatcher to remove reference to branch for templates (6f05af0)
- Updated CI Pipeline template name to use correct version (655ab84)
- Updated CI Pipelines to use jolt-builder image (e1783d9)
- Updated image url (6202868)
Features
- ocpp: implement GetLog upload + LogStatusNotification (1432df5)
- ocpp: implement TriggerMessage + harden stub responses (38bc156)
- ocpp: phase 1 charging profiles and limit notifications (b016774)
- account ota traffic in system monitor (c78cbdb)
- add boot reason watchdog for accurate OCPP 2.0.1 BootNotification (4785dce)
- add DEBUG_SYSTEM_MONITOR flag and network stats display (05513b2)
- add environment-based URL configuration for builds (a775f2d)
- add network statistics tracking to SystemMonitor (6f5d462)
- add OCPP monitoring task for CPU optimization (4e1b1b6)
- add SystemMonitor for CPU/RAM/task statistics (9b8100e)
- add WebSocket TX task for event-driven processing (58e8594)
- Added additional network tracking to support Onboarding wizard via Bluetooth (8d29b7a)
- Added additional WiFi event handling (d0d2508)
- Added catch2 test support with coverage calculations (871de5f)
- buffer firmware download in psram before writing (eec8beb)
- ci: add staging branch with RC releases (a97edec)
- firmware update LED override and install gating (01ed1bd)
- implement event-based OTA validation system (15659de)
- implement NVS write queue for PSRAM task safety (32e8f89)
- Implement OCPP 2.0.1 registration status handling (Pending/Rejected) (a067d4c)
- implement real power metering with power factor correction (c3936cc)
- improve WiFi connection reliability with reconnection logic (2dbfb17)
- integrate OCPP and WebSocket tasks into main loop (abede10)
- keep Bluetooth running during OTA updates (1d4d687)
- load firmware TLS CAs dynamically from CA store (e1d16ad)
- load websocket TLS CAs dynamically from CA store (29e368b)
- make NTP sync non-blocking with automatic periodic updates (f43aa5d)
- move 5 major tasks to PSRAM freeing 20KB internal RAM (6a1f220)
- ocpp: improve charging profile support (gating + throttling) (2a5790f)
- Phase 1 PSRAM task optimization - security events and monitoring (457bfad)
- Reworked checkCpProvisioned into a single timeout-governed loop that continues retrying provisioning while the device remains unprovisioned (b06da83)
- Updated Bluetooth Manager to support Mobile App Adoption (dfbddd4)
- Updated PEN fault detection and alerting (a031a94)
- Updated PEN fault to use Voltage RMS to avoid [secure] positives. Changed NTP to only block when network connection available (ae70de4)
- wifi: Persist long WiFi creds correctly, dedupe scan results in HAL, drop forced reboots on WiFi connect. (8c1197c)
Performance Improvements
- add thread-local JsonDocument pooling to OCPP handlers (1d551c2)
- enable BSS segment external memory (PSRAM) (f700a98)
- increase NimBLE stack to 8KB for better BLE throughput (2e1e2bc)
- move ADC and DNS tasks to PSRAM (0a0bc1a)
- move OCPP task to PSRAM with security profile caching (e56ae60)
- move WebSocket RX task to PSRAM with increased stack (1b19c91)
- optimize NTP task memory usage (edc551c)
- optimize WebSocket header caching and DNS polling (01a0386), closes #11 #12 #11 #12
- reduce TLS buffer sizes to free internal RAM (c5927a4)
- websocket: optimize string allocation in OCPP message hot path (b834c61), closes #5
- wifi: reduce DNS task stack size from 16KB to 8KB (ef6fe8b), closes #7
- stableService
Device API – 1.0.1
device-apiQualitytests: 17 passedcoverage: 5% line1.0.1 (2026-01-07)
Bug Fixes
- expose performance test under /device/v1 (7cf8193)
- stableService
Ocpp API – 2.1.1
ocpp-apiQualitytests: 138 passedcoverage: 8% line2.1.1 (2026-01-07)
Bug Fixes
- add v1 performance test alias (8a266be)
- expose versioned performance-test endpoint (5d52d3a)
- make performance test endpoint resilient to missing tables (66acd32)
- stableService
Firmware API – 1.4.0
firmware-apiQualitytests: 173 passedcoverage: 7% line1.4.0 (2026-01-07)
Bug Fixes
- add v1 alias for performance test (1ce56f2)
- align device.tags with postgres json column (7fc8e1f)
- allow platform global to query tenant_global devices (3402557)
- allow platform/global device validation for tenant_global devices (7df4a23)
- cast rollout device status enum for fw.device.status (f8778f4)
- enable distribute preview + sync tenant changes (0e25617)
- events: consume fw.device.status from ocpp core (bab1af5)
- handle duplicate model mappings in firmware uploads (7626af1)
- prevent allow request from downgrading rollout status (6134b8e)
- releases: persist groups_any as json (817c98d)
- return device_count in groups list (edc48f6)
- rollouts: make rollout device index unique (de12cbc)
Features
- add cohort preview endpoint (e4db7c1)
- add delete cancelled rollout endpoint (9f42460)
- Add endpoint to list devices for tenant (6c88ee5)
- allow SKU-based model mapping for compatibility (63b6d12)
- enrich rollout responses with product and version labels (77218ae)
- firmware: add rollouts list endpoint (1c49515)
- populate rollout cohort totals and canary (a1a18ef)
- retention: delete withdrawn firmware objects after 7d (e26594f)
- rollouts: add stats REST and SSE endpoints (da0b082)
- rollouts: enroll devices and execute via rabbitmq (2f2fae0)
- stableService
Meter API – 1.3.1
meter-apiQualitytests: 56 passedcoverage: 14% line1.3.1 (2026-01-04)
Bug Fixes
- expose performance test under meter v1 (0b76c92)
- stableService
Tenant API – 1.4.1
tenant-apiQualitytests: 174 passedcoverage: 5% line1.4.1 (2025-12-29)
Bug Fixes
- add v1 performance test alias (cc0a464)
- stableService
Ocpp Integration – 1.1.1
ocpp-integrationQualitytests: 5 passedcoverage: 1% lineOcpp Integration – 1.1.1 (2025-12-29)
Release notes not available.
- stableService
Tariff API – 1.2.2
tariff-apiQualitytests: 92 passedcoverage: 11% line1.2.2 (2025-12-29)
Bug Fixes
- expose performance test under tariff v1 (d4dbe33)
- stableService
Reporting API – 1.3.1
reporting-apiQualitytests: 1 passedcoverage: 0% line1.3.1 (2025-12-29)
Bug Fixes
- add v1 alias for performance test (64699ab)
- stableService
Release API – 1.4.1
release-apiQualitytests: 95 passedcoverage: 7% line1.4.1 (2025-12-29)
Bug Fixes
- expose performance test under releases v1 (7b09aed)
- stableService
Device API – 1.0.0
device-apiQualitytests: 16 passedcoverage: 5% line1.0.0 (2025-12-29)
Bug Fixes
- add semantic-release configuration for GitLab (3ddfb02)
- device-api: accept legacy mac_address on setup (c96476b)
- update route path syntax for Axum 0.7+ compatibility (fd34e69)
Features
- add version endpoint and Dockerfile metadata (10e3de8)
- Move health endpoints under /device/v1 (8440c51)
- stableService
Auth API – 1.5.0
auth-apiQualitytests: 85 passedcoverage: 34% line1.5.0 (2025-12-29)
Features
- Added chargepoint setup endpoint to public exclusion (5073ee3)
- auth-api: add /v1/health alias (7bcae86)
- stableService
Tenant API – 1.4.0
tenant-apiQualitytests: 174 passedcoverage: 5% lineFeatures
- Expose health endpoints under /tenant/v1 (e2e8333)
- optimize database connection pool (min: 5, max: 20) to reduce cold-start errors (c38f819)
Bug Fixes
- enforce org/tenant scoping on tenant endpoints (143ba57)
- fusionauth: include firmware permissions in unified sync (1479727)
- security: enforce tenant isolation and add unit tests (bdd1a3c)
- tenancy: use tenant slug for platform context (6e2e7fb)
- stableService
Tariff API – 1.2.1
tariff-apiQualitytests: 92 passedcoverage: 11% lineBug Fixes
- expose health endpoints under /tariff/v1 (f663bbf)
Features
- add multi-tenant filtering support with tenant-api integration (cdf5651)
- optimize database connection pool (min: 5, max: 20) to reduce cold-start errors (db35b23)
- stableService
Firmware API – 1.3.0
firmware-apiQualitytests: 165 passedcoverage: 8% lineFeatures
- Expose health endpoints under /firmware/v1 (94dce81)
- sync device events and enforce firmware model compatibility (0b8d670)
- firmware: add distribute-by-device-tenants admin endpoint (7401bb2)
- optimize database connection pool (min: 5, max: 20) to reduce cold-start errors (06fcf26)
Bug Fixes
- add postgres enum migration for firmware channel/state/criticality (b8bdc9c)
- auth: request-scoped auth ctx and rate limit key (675660d)
- db: align entity names with migrations (07e5c15)
- db: handle firmware_state default during enum migration (217c52a)
- firmware: tenant-scoped distribute endpoint (7c6758d)
- internal: validate performance-test service token (a38eb15)
- performance: align internal perf endpoint auth (fc9b122)
- tenancy: enforce RBAC and tenant isolation (258c0f2)
- Updated s3 storage client for firmware storage and presigned url config (bccabc7)
- stableService
Release API – 1.4.0
release-apiQualitytests: 95 passedcoverage: 7% lineBug Fixes
- expose health endpoints under /release/v1 (2ff6970)
- expose internal performance overview under internal releases namespace (7a4edba)
- performance overview only includes services with recorded tests (70e2ce4)
- Add default SLO targets to internal performance time series endpoint (7242b91)
Features
- add database connection pool with pre-warmed connections to reduce cold-start errors (3f8d31e)
- add internal performance overview endpoint (c3f6d46)
- add performance overview API endpoint for dashboard view (33e6016)
- extend performance_tests table with full k6 metrics (total_requests, total_errors, availability_percent, concurrent_users, test_tool) (95462c7)
- persist performance test data to dedicated table for long-term trend analysis (08284c0)
- query performance data from dedicated table for 12-month trend analysis (20287f2)
- update default availability SLO target from 99.9% to 99.5% (55ccb5d)
- stableService
Reporting API – 1.3.0
reporting-apiQualitytests: 1 passedcoverage: 0% lineFeatures
- Expose health endpoints under /reporting/v1 (034531c)
- implement multi-tenant filtering architecture (4cc06ea)
- optimize database connection pool (min: 5, max: 20) to reduce cold-start errors (3fa2264)
- stableService
Chargepoint API – 1.3.0
chargepoint-apiQualitytests: 49 passedcoverage: 17% lineFeatures
- Expose health endpoints under /chargepoint/v1 (2dcc2a7)
- add organisation-based device filtering for resellers/CPOs (99bf483)
- optimize database connection pool (min: 5, max: 20) to reduce cold-start errors (4539c8b)
- support global device listing for platform admins (60c8c1f)
Bug Fixes
- apply organisation filtering to single-resource device endpoints (e62d6bc)
- Mount OpenAPI docs under /chargepoint/v1 prefix (fd54ca1)
- security: enforce org tenant filtering and add SQL tests (8f6a1ae)
- tenancy: accept tenant_global as platform-global alias (844fe8e)
- use tenant-api internal endpoints for tenant/org lookups (bbb9f1e)
- stableService
Meter API – 1.3.0
meter-apiQualitytests: 56 passedcoverage: 14% lineFeatures
- Expose health endpoints under /meter/v1 (472e0b2)
- implement multi-tenant filtering with organisation support (5776ab0)
- optimize database connection pool (min: 5, max: 20) to reduce cold-start errors (f1e0ea2)
- stableService
Ocpp API – 2.1.0
ocpp-apiQualitytests: 138 passedcoverage: 8% lineFeatures
- Expose health endpoints under /ocpp/v1 (4b03f0a)
- implement multi-tenant filtering with organisation support (ba29f22)
- optimize database connection pool (min: 5, max: 20) to reduce cold-start errors (108e5cd)
BREAKING CHANGES
- URL patterns changed from tenant_slug to tenant (tenant_id)
Clients will need to update their API calls to use tenant IDs instead of slugs
Key security improvements:
- Platform admins can access tenant_global for platform-wide view
- Organisation-based filtering for resellers/CPOs via tenant-api
- as_tenant query parameter for platform admin impersonation
- Changed URL paths from /tenants/{tenant_slug} to /tenants/{tenant}
- All endpoints enforce tenant allowlist filtering
Changes: - Add tenant-api client with internal endpoint support
- Add filtering helpers for tenant resolution and org expansion
- Update all route handlers with compliant filtering logic
- Change URL pattern from tenant_slug to tenant throughout
- Add TENANT_API_BASE_URL and INTERNAL_AUTH_TOKEN config
- Remove old ensure_tenant logic from AuthContext
- Add comprehensive unit tests for filtering scenarios
All endpoints now enforce proper tenant isolation with audit logging.