ChargeLink Native

Integration API Reference

Package chargelink.integration.v1, API version 1.8.0, served over plaintext HTTP/2 gRPC on 127.0.0.1:50051 by chargelink integration serve. The proto file for the installed release (integration.proto) is the normative definition; this page summarises it for integrators. Compatibility history: 1.0.0 baseline, 1.1.0, 1.2.0 HIL, 1.3.0 XIL, 1.4.0 factory, 1.5.0 enterprise, 1.6.0, 1.7.0 listener binding, 1.8.0 current (host-monotonic stamps).

Conventions

  • Every request carries RequestContext { request_id, correlation_id, session_id, campaign_id, requested_api, idempotency_key }; every response carries ResponseContext.
  • Limits: max_page_size 1000, max_signal_batch_size 512 (from GetCapabilities).
  • Streams (Watch*) deliver state changes; polling Get* is always available.
  • Upstream gRPC errors are surfaced as standard status codes; the REST adapter maps them to HTTP 502.

Services and RPCs

ServiceRPCsNotes
HealthServiceGetHealth, GetVersion, GetCapabilities, WatchHealth (stream)Health states STARTING / SERVING / DEGRADED / STOPPING with uptime_ms. Capabilities carry enabled and claim_boundary per entry, the protocol list and the traceability standards.
ConfigurationServiceValidateConfiguration, LoadConfiguration, GetConfiguration, UpdateConfiguration (configuration_json, expected_revision), ListProfiles, ResolveProfileOptimistic concurrency through the revision.
SessionServiceCreateSession (session_id, profile_id, protocol, chargelink_role, sut_role, configuration_json), ConfigureSession, StartSession, PauseSession, ResumeSession, StopSession, DeleteSession, GetSession, ListSessions, WatchSession (stream)States from CREATED through RUNNING, COMPLETED to TERMINATED. Manages server-side session records; a listener started from the CLI is not bound to these records.
ProtocolServiceListProtocols, ListChargingModes, ListPaymentModes, ListSecurityModes, GetProtocolCapabilities, GetProtocolState, WatchProtocolStateGetProtocolState returns unobserved unless a bound observer exists (a session bound to a listener; capability bound-live-protocol-observer).
SignalServiceListSignals, ReadSignals, WriteSignals, SubscribeSignals (max_update_rate_hz, queue_capacity, after_sequence), GetSignalMetadata, CreateAcquisition (sample_rate_hz), StartAcquisition, StopAcquisition, GetAcquisition94 canonical signals; samples carry SourceIdentity { epoch, sequence, target_time_ms, applied_command_sequence }. Metadata: unit, direction, min/max, nominal sample rate.
TimeServiceConfigureTime (mode WALL_CLOCK / EXTERNALLY_CLOCKED / STEP_BASED / FASTER_THAN_REALTIME / DETERMINISTIC_REPLAY, fixed_step_ns, rate, random_seed), InitializeTime, PauseTime, ResumeTime, StepTime, GetTime, CreateCheckpoint, RestoreCheckpoint, WatchTimeExternally clocked and replay domains drive managed SIL and campaign deadlines; host time remains a safety boundary only.
SilServiceCreateSilSession (topology EVSE_NATIVE_SIL_EVCC or EVCC_NATIVE_SIL_EVSE, tls_required, ipv6_host, interface_index), InitializeSilSession, PauseSilSession, ResumeSilSession, RunNetworkExchange, RunCampaignBridge, GetSilSession, StopSilSession, TerminateSilSession, WatchSilSessionManaged SIL over real IPv6 loopback networking (SDP UDP 15118, TCP 50118), optional rustls, V2GTP, native EXI; campaign bridge evaluates evidence with the shared engine.
HilServiceListHardwareAdapters, GetHardwareAdapter, CreateHardwareSession, ConfigureHardwareSession (HardwareIoMapping), ApplyHardwareCalibration, InitializeHardwareSession, StartHardwareSession, PauseHardwareSession, ResumeHardwareSession, SynchronizeHardwareSession (cycle_ns, maximum_jitter_ns), WriteHardwareSignals, ReadHardwareSignals, InjectHardwareFault, ClearHardwareFault, EmergencyStopHardwareSession, CaptureHardwareEvidence, GetHardwareSession, StopHardwareSession, TerminateHardwareSession, WatchHardwareSessionVendor-neutral adapter SDK; the shipped adapter is deterministic-hardware-simulator (physical_hardware_present: false). Fault kinds: control_pilot_fault, proximity_disconnected, isolation_fault, contactor_welded, overtemperature, cooling_loss, plc_link_loss, can_bus_off, emergency_stop.
XilServiceListXilBridges, GetXilBridge, CreateXilSession, ConfigureXilSession (XilVariableMapping: framework variable, port kind, testbench variable, direction, scale, offset, unit), LoadXilConfiguration, StartXilSession, PauseXilSession, ResumeXilSession, SynchronizeXilSession, ListXilVariables, ReadXilVariables, WriteXilVariables, ConfigureXilCapture (sample_period_ns), RunXilSignalGeneration, InjectXilElectricalFault, ClearXilElectricalFault, CaptureXilEvidence, GetXilSession, StopXilSession, TerminateXilSession, WatchXilSessionASAM XIL Framework / MAPort / EESPort model with the deterministic reference bridge veristand-asam-xil-reference. Electrical faults: OpenCircuit, ShortToGround, ShortToBattery, Resistance, Intermittent.
TestCampaignServiceListTestPackages, ListTestAreas, ListTestCases, CreateTestPlan, RunCampaign, StopCampaign, GetCampaign, WatchCampaign, GetCaseResult, ListCaseResultsSame engine as chargelink test; verdicts require live-SUT or validated-replay evidence.
EvidenceServiceListEvidence, GetEvidence, StreamEvidence, ExportEvidence, VerifyEvidenceSHA-256 integrity; export honours redaction classes.
ReportServiceGenerateReport (campaign_id, format), GetReport, ListReports, ExportReportJSON, Markdown and HTML.
FactoryServiceListFactoryStations, GetFactoryStation, ListFactoryRecipes, GetFactoryRecipe, CreateFactoryExecution, ConfigureFactoryExecution, StartFactoryExecution, PauseFactoryExecution, ResumeFactoryExecution, RecordFactoryMeasurement, CompleteFactoryStep, CompleteFactoryExecution, AbortFactoryExecution, GetFactoryExecution, ListFactoryExecutions, CaptureFactoryEvidence, GetFactoryEvidence, WatchFactoryExecutionDeterministic station/recipe/limit/disposition engine; reference station reports no physical hardware.
EnterpriseServiceListEditions, ListRoleDefinitions, UpsertPrincipal, ListPrincipals, EvaluateAuthorization, PutSecret, ListSecretMetadata, DeleteSecret, VerifySecretStore, AppendAuditEvent, ListAuditEvents, VerifyAuditChain, EnrollRemoteAgent, HeartbeatRemoteAgent, ListRemoteAgents, GetFleetHealth, CreateUpdateManifest, VerifyUpdateManifest, ListUpdateManifests, CreateUpdateRollout, AdvanceUpdateRollout, PauseUpdateRollout, ResumeUpdateRollout, RollbackUpdateRollout, ListUpdateRollouts, CaptureEnterpriseEvidence, WatchEnterpriseEventsEditions engineering / professional / enterprise / factory; deterministic reference cryptography; EvaluateAuthorization is not enforced on other RPCs.
ReleaseCandidateServiceListEnvironments, ListScenarios, ListPerformanceBudgets, CreateRun, StartRun, InterruptRun, RecoverRun, SubmitEnvironmentResult, FinalizeRun, GetRun, ListRuns, CaptureEvidence, WatchEventsCross-environment run dossier used by DEVlink release tooling; not needed for operation.

Compatibility

  • Generate clients from the proto of the installed release; check GetCapabilities.api_version at start-up and refuse to run against a lower major version.
  • Minor versions add services and fields; they do not remove them.
  • chargelink integration compatibility validates the protobuf compatibility policy of the installed build.
  • The CLI smokes (session-smoke, signals smoke, sil-smoke, hil-smoke, xil-smoke, factory-smoke, enterprise-smoke) are the reference behaviour for each service group.

Security

Transport: plaintext HTTP/2 on a loopback address only, with a per-start bearer token required on every call (authorization: Bearer <token>, token in <state-root>\api-token). API 1.8.0 is additive: SourceIdentity.host_monotonic_ns (the owner's command send instant on the host monotonic clock) and the observed_monotonic_ns / issued_monotonic_ns fields of the owner-safety frame and request. Components of different releases refuse each other (fail closed), so the owner host, the service and the SECC must come from the same release. The transport requirement (loopback plus token) is breaking for third-party clients written for 0.3.0. See Production Security.