AmpNexus

Changelog

What's new in AmpNexus

Release notes pulled straight from our delivery pipeline — every entry ships with verified quality and performance data.

181 releases

  1. stableService

    Device Setup – 1.0.0

    device-setup
    Qualitytests: 9 passedcoverage: 0% line

    1.0.0 (2025-12-09)

    Bug Fixes

    • Added correct fields for cp.created and cp.updated events (d85e074)
    • Added DeviceStatus and ConnectorStatus enums (without rename_all) (e59844d)
    • Added password to cp.event create and update payloads (203c236)
    • Change Exchange declaration (5799c42)
    • Changed default tenant to tenant_global (5aeda3e)
    • Changed queue type (00c6206)
    • Dockerfile copy and trigger build (4df44b5)
    • Remove conflicting NULL/NOT NULL declarations in migration (becb7cb)
    • Resolved payload to ensure compatibility with other services (975f643)
    • Updated db credentials (a78c6d5)
    • Updated migration to remove double null declaration and updated environment variables to match standard (6443497)
    • Updated prod CI build pipeline config (ccbfa61)

    Features

    • Added activation_code and adoption_code fields to DeviceData struct (e202c23)
    • Added device modal name to payload rather then ChargePoint- (bbf54c3)
    • Added gitlab ci configuration for staging and prod (aace96d)
    • Added health endpoints and lint and tests (573f12b)
    • Added SKU mappings for PlugStream chargepoints and RabbitMq publishing of data for other service consumption. (cfc0e55)
    • Refactored to a rust endpoint (1a18636)
    • Updated cp.events RabbitMQ events to use sku rather then model (6d640c1)
    • Updated endpoint configuration details (212ee79)
    • Updated Setup API Endpoint RabbitMq message handling (82e4854)
    • Updated to print serial number labels on setup of new device (7209aaa)
  2. stableService

    Firmware API – 1.0.0

    firmware-api
    Qualitytests: 151 passedcoverage: 0% line

    1.0.0 (2025-12-09)

    Bug Fixes

    • Add debug logging (4330cf0)
    • Add reconnection loop to AMQP consumer (4ffd536)
    • Added additional node_modules (3cf11bb)
    • Added duplicate rollout detection and reporting (f4e9e49)
    • Added Prisma Client copy in Docker stage (ec77acf)
    • Auto-create devices when assigning to cohorts (f58cd5b)
    • build: Correct relative imports in version lifecycle routes to resolve module-not-found during Next build (21b9a0d)
    • ci: Corrected typo in lint stage of Staging Pipeline (a2fda2a)
    • ci: Removed tsx from Dockerfile (88e78d8)
    • Cleaned up prisma Migrations (15fec12)
    • Corrected CI Pipeline template (5209d7e)
    • Corrected Migration (6e49672)
    • improve S3 presigned URL generation and upload error handling (89acc6d)
    • platform-owner: Finalise auth/rbac updates and ensure group listing aligns with new guards (a3284fe)
    • prisma: Add Device.groupMemberships back-relation to satisfy FirmwareGroupDevice.device relation validation (30da89d)
    • Remove minHwRev requirement so it is optional (42c2d91)
    • Remove public from Dockerfile copy block (f17c261)
    • Removed Copying files from prod stage (a558e2a)
    • Resolve build issue in withdraw route (a5dfcdc)
    • Resolve Next.js 15 build issues and type errors (03b3b8c)
    • Resolve Prisma DeviceRolloutStatus enum issues and add device counts to cohorts (404f788)
    • Resolve tenant-auth route imports (d6087ae)

    Documentation

    • Establish consistent tenant scoping requirements for all API endpoints (b34d8bb)

    Features

    • Add enhanced debug logging for tenant resolution in cohorts API - Add detailed logging to trace as_tenant parameter handling - Log auth mode, path tenant, and query parameters at each step - Track data being created in POST requests - Count items returned in GET requests - Enhanced requireTargetTenant logging to debug parameter extraction (f727081)
    • Add proper tenant validation to firmware version lifecycle endpoints (94f6b2e)
    • Add tenant-scoped firmware version lifecycle endpoints (de2a523)
    • Added DB Migration (be60e46)
    • Added health endpoints (ad5d715)
    • Added SSE Endpoints for rollout stats (13eb595)
    • Allow api-key callers through platform RBAC checks (fd54680)
    • api: Add firmware versions list endpoint (64ad495)
    • api: Enhance versions endpoint with product display names (c72e2b6)
    • api: Rollout detail/devices endpoints + operator intents (pause/resume/cancel/promote) with RBAC & AMQP publish - Detail endpoint with KPIs and policy - Devices listing with filters and pagination - Intent routes publishing to AMQP and updating status - RolloutStatus enum: add 'cancelled' + migration - Tests added; docs updated (7814799)
    • auth-mapping: Add FirmwareAuthMapping model, admin CRUD endpoints, and internal FusionAuth access-token exchange with in-memory cache + tests - Prisma model + migration - Admin routes guarded by AUTH_MAPPING_ADMIN with redacted secrets - Internal service token exchange guarded by SERVICE_ORCHESTRATOR with rate limiting - getFaAccessToken helper using Map+TTL cache and FA token POST - Tests for CRUD and token exchange behaviors Docs: implements docs/codex_prompt_firmware_api_fa_mapping.md (92c1f4b)
    • auth: Add TenantAuthMap model + admin CRUD; update JWT verification to use DB map for JWKS selection; document endpoints - Prisma model + migration - lib/auth: resolve faTenantId via prisma.tenantAuthMap - Admin routes for tenant-auth mapping - Tests for admin list/upsert - Update API docs (596d303)
    • cohorts: Drop groups compatibility; rename DB to Cohort/CohortDevice; implement /cohorts API and update rollouts + tests - Prisma: Cohort/CohortDevice models, migration renaming tables and groupId->cohortId - API: cohorts handlers for list/create/get/update/delete + membership and device-cohorts - Rollouts: accept cohorts_any with groups_any fallback, resolve via cohorts - Build: fix import paths in new routes - Tests: updated mocks and expectations (18d5954)
    • Enable tenant-based firmware isolation (a46776a)
    • groups+policy+audit: add FirmwareGroup, membership, and download audit; enforce policy gates; expand rollout cohorts; enrich approval event (b516c96)
    • groups: Membership read APIs + serial resolver - GET groups/{groupId}/devices with pagination and search - GET devices/{deviceId}/groups list memberships - Add lib/devices resolver for serial→deviceId - Prisma relation for FirmwareGroupDevice.device - Tests added; docs updated (6e53993)
    • groups: Tenant group CRUD + membership endpoints; OpenAPI docs; seed script - Routes: list/create, get/update/delete, replace membership - Validation schemas for group payloads - OpenAPI paths and schemas - Seed script and npm script - Tests for group flows (1213098)
    • implement tenant-scoped release endpoint and update documentation (6d15479)
    • lifecycle: Add submit/approve/withdraw/release endpoints; require tenant releases in manifest - Prisma: FirmwareRelease model present; FirmwareVersion state fields used - Routes: versions submit/approve/withdraw, releases create - Manifest: filters by FirmwareRelease for target tenant + state=released - Tests: add lifecycle tests; update manifest tests for new RBAC and release gating (3b95c62)
    • Migrate uploads endpoint to tenant-aware architecture (48f294c)
    • orchestrator-schema: Add IntentDedupe table (+ TTL index), Device.siteId and tenant/site index, and rollout tenant index - Prisma schema updates - Migration for IntentDedupe, Device.siteId, and indexes - Lint clean; tests passing (2b2398e)
    • platform-owner: Add platform owner mode with as_tenant support - Env vars: PLATFORM_TENANT_SLUG, PLATFORM_FA_TENANT_ID, PLATFORM_SCOPE - lib/auth: verifyForPathTenant for dual-mode verification - lib/rbac: requireTenantScopeOrPlatform + requireTargetTenant - Rollout detail + intents honor platform mode and as_tenant; queries filter by target tenant - Update K8s configmap/secret for platform vars - Tests updated to reflect new guards (809dea8)
    • Removed Next.js version (fbc48b3)
    • service-token: Add service token auth and internal download-url endpoint - Env: SERVICE_ORCHESTRATOR_TOKENS in .env and K8s Secret - lib/service-auth.ts guard for internal routes - POST tenants/{tenantId}/internal/download-url for orchestrator with audit and policy checks - Protect internal FA token exchange with service-token fallback - Tests for internal route (49e524e)
    • Trust api-auth headers for firmware-api auth (f289e97)
    • Updated migrations to include firmware approvals (d321b04)
    • Updated to more closly match the API Firmware contract following refactor to rust (e64558f)
    • Use JWT tid claim for tenant validation instead of hardcoded mappings (acdce4b)

    BREAKING CHANGES

    • All firmware API endpoints now MUST follow tenant-scoped URL patterns
    • Update firmware_api_endpoint_contract_v2.md with mandatory tenant scoping
    • Add comprehensive tenant scoping rules and security guidelines
    • Create portal_integration_guidelines.md with frontend integration patterns
    • Add tenant_scoping_migration_checklist.md for implementation guidance
    • Mark all non-tenant-scoped endpoints as deprecated

    This prevents future security issues by ensuring consistent tenant isolation,
    platform admin support, and clear audit trails across all API endpoints.

    Key Changes:

    • /versions/{id}/submit → /tenants/{tenantId}/versions/{id}/submit
    • /uploads → /tenants/{tenantId}/uploads
    • /releases → /tenants/{tenantId}/releases
    • All endpoints require tenant validation and as_tenant support
  3. stableService

    Tenant API – 1.1.0

    tenant-api
    Qualitytests: 16 passedcoverage: 0% line

    1.1.0 (2025-12-09)

    Bug Fixes

    • Added a check to skip organization role hierarchy validation if the user has PLATFORM_ADMIN scope. (b53245d)
    • Correct set_user_roles calls to use FusionAuth user ID instead of tenant ID (e38c09a)
    • Create ingress automatically when DNS verification succeeds (ceaff6e)
    • Deletion of user of fusionauth (5c2d76b)
    • Exclude deleted users from duplicate email check (4b5a77a)
    • Lowercase env var keys to match struct field names (72bc7af)
    • Prevent final env merge from overriding FUSIONAUTH_ISSUER (19ed068)
    • Reactivate deleted users instead of failing with duplicate error (51a2174)
    • Remove /api prefix from routes to match ingress pattern (7a45ad5)
    • Remove invalid memberships join in get_user_highest_role (35a1181)
    • Serialize DomainResponse as camelCase for frontend compatibility (16c4eba)
    • Sync role template permissions to FusionAuth before assigning to user… (ede4d51)
    • Use base issuer URL for FusionAuth tenants without appending slug (90e9ab8)
    • Use letsencrypt-prod-http01 for tenant domain certificates (2f344e1)

    Features

    • Add continuous provisioning status monitoring for domains (38fbafc)
    • Add CP_METER and REPORTING permissions to tenant seeding (67d1f03)
    • Add custom app_name support for tenant branding (a76ab89)
    • Add End User role template with meter and reporting permissions (3278ffb)
    • Add FusionAuth credentials to domain tenant info for custom domain auth… (d7fdcc6)
    • Add FusionAuth redirect URL update to automatic domain verification (f9691ae)
    • Add FusionAuth user deletion and fix lambda configuration (7c78faa)
    • Add health endpoint log filtering to reduce log noise (c43b992)
    • Add logo_url and app_name to TenantInfo in domain lookup responses (f59fc1b)
    • Add S3 logo upload, K8s ingress automation, and GitOps compatibility (93bd5b0)
    • Added database and rabbitmq endpoints (8b3fb8c)
    • Added Organisation Name to locations payload response (c1f1805)
    • Added release configuration and moved docs (d77fae1)
    • Added support for dynamic tenant logo (e1306d4)
    • Auto-assign 'Charge Point Operator' role template when none provided (41d3743)
    • Delete old logo from S3 when uploading new one (cdbeaea)
    • Delete tenant logo from S3 when deleting tenant (3149c01)
    • Delete TLS certificate secret when deleting domain ingress (0b18763)
    • Improve domain lookup function for login support (5442e6a)
    • Monitoring job creates ingresses for verified domains without them (6609d0f)
    • Refactored permission to ensure frontend and backend is consistent (39b393a)
    • release: Updated CI Pipeline dispatcher to use environment specific rust service template with release-api support (c5ccf97)
    • Return organisation with tenant (1c7dfc2)

    Reverts

    • Remove camelCase serialization - keep tenant-api snake_case (4dc1e01)
  4. stableService

    Meter API – 1.0.0

    meter-api
    Qualitytests: 46 passedcoverage: 0% line

    1.0.0 (2025-12-09)

    Bug Fixes

    • Add AMQP queue and exchange declaration to prevent NOT_FOUND errors (62481fd)
    • Configure service for port 80 access and enhanced staging logs (55bece0)
    • Corrected Exchange name and queue (d6e65c7)
    • Prevent AMQP consumer from exiting on connection loss (14f5788)
    • Resolve clippy warnings with allow annotations (224486f)
    • Update route syntax from Axum v0.6 (:) to v0.7+ ({}) format (317719f)
    • Updated device routing keys to enable processing device-setup payloads (cde23bb)

    Features

    • Add health endpoint log filtering to reduce log noise (e7e6f03)
    • Added CI Pipeline config (a27e525)
    • Added device storage (a9e203f)
    • Added health endpoints for database and rabbitmq (f1c5cdf)
    • Changed all provisioning queues to upsert (f9c2ea2)
    • Consume meter samples from OCPP core via AMQP (ac6bfdd)
    • Fixed DeviceCreatedMessage to match device-setup's payload (Uuid instead of String for entity_id) (a9e1f29)
    • Implement event-driven architecture with AMQP publisher and extended handlers (4e09d98)
    • Updated http port to 8088 (954dc1a)
  5. stableService

    Ocpp API – 1.0.1

    ocpp-api
    Qualitytests: 28 passedcoverage: 0% line

    1.0.1 (2025-12-09)

    Bug Fixes

    • Test Release CI Publication (eb0b624)
  6. stableService

    API Auth – 1.0.0

    api-auth
    Qualitytests: 64 passedcoverage: 0% line

    1.0.0 (2025-12-09)

    Bug Fixes

    • Add lookup method to find tenant mapping by FusionAuth UUID (a58ec19)
    • Add openssl to container image to resolve issues with Prisma client (6251a79)
    • Added openssl 3 config for generator client (d47f634)
    • Api Key search tenantId or tenantSlug (f794255)
    • Corrected health check (d408f67)
    • Handle auth_request URIs without /api/service prefix in tenant extraction (3df7a61)
    • Hide health log output to container console (bc8db72)
    • Improved URL matching as part of the tenantId detection for /verify (e4d9eb7)
    • Increase SSE connection limit and sse detection logic, increased SSE test coverage (39f1fb3)
    • Removed duplicate releaserc file (a251636)
    • Removed missing path copy statement in Dockerfile (3b9eb6b)
    • Resolved build issues (c62c03d)
    • Resolved regex build issue (63cb213)
    • Set both tenant_id and tenant_slug when creating API keys (888561c)
    • Support both versioned and non-versioned API paths in tenant URI parsing (ae5d2fa)
    • Updated auth to check correct fusionauth field (86c2b8b)
    • Updated tenant map (5abdcd5)
    • Updated the key-creation payload schema so expiresAt can be null as well as an ISO string (ec6be4d)
    • Updated the regex so /verify can extract tenant slugs from paths. (5fa2a35)
    • Updated verify endpoint to check req.url (a3beaec)

    Features

    • Accept tenantId and tenantSlug from request body (8861376)
    • Add release config file (ae95d0a)
    • Add support for multiple JWT_AUDIENCE's (07ea3e7)
    • Added additional error logs for authentication failures to assist with developer troubleshooting (8c4c678)
    • Added API Key CRUD handlers (ccd1a16)
    • Added health handlers (157ada9)
    • Added platform admin role to API Key issue auth check (51734d1)
    • Added Platform Admin scope to service tokens (0d14992)
    • Added release config (9420614)
    • Added release config (1c9a14d)
    • Added support for API Keys (cf7cae1)
    • Grant scope to service tokens (0ae6c5f)
    • Hide helath check logs (2aa27db)
    • Refactored and built as a rust application to increase performance and implement rate limiting (3091343)
    • Support both tenant ID and slug for API key validation (5a1cf11)
    • Updated Dockerfile for rust application (f95e690)
    • Updated platform detection so JWTs whose tenantId matches either PLATFORM_TENANT_SLUG or PLATFORM_FA_TENANT_ID are treated as platform tokens. (2fb11c1)
Changelog — AmpNexus