Skip to content


The Changelog tracks updates made in each new version of Plaid


  • Init curl timeouts in constructor (#273)
  • Curl init/cleanup w/mutex (#307)
  • Cleanup plugin pointer (#305)
  • Expose optional CA file configuration for Windows (#302)
  • Pass event list to OnDistributeEventStart callback (#282)
  • Refactor OnEiResposne, OnStatus callbacks (#303)
    • Add EiResponse object to OnEiResponse callback
    • Rename OnStatus -> OnHeartbeat
  • Instrument plugin calls (#298)
  • Use lambdas in all venmgr calls that return data (#297)
  • Consolidate data in event callback messages (#243)
  • Add 5 minutes to the expiration data poster messages that are expired (#269)
  • Add resourceIds to default plugin (#265)
  • Add targets to OnEvent{ Complete|Cancel|Archive } (#243)
  • Add ResourceIds to event messages (#265)
  • Remove INovaNotifier and use INotifierPlugin directly (#291)


  • Add first pass at docker files
  • Update xerces in deps to 3.2.2 for alpine build
  • Update ASIO to v1.13
  • Remove body validation in sample plugin
  • Add instanceId to sample plugin config
  • Add venID, vtnID, and instanceID to all plugin messages
  • Fixed spelling on HTTP API
  • Move plugin API header to oadrapi


Updates to plugin

  • Added instanceId, venId, vtnId to all messages
  • instanceId is configured in the plugin config, the other ids come from registration
  • Change key notifierEventType to notifierMessageType
  • Precede all message types with On


  • Use upload queue for report uploads so there's a single report upload job
  • Add registration callbacks OnRegister, OnCancelRegistration, OnRequestReregistration
  • Refactor OnArchive event
  • Add communication status to status API
  • Add isRandomized helper to Event object interface
  • Consolidate report callbacks
  • Refactor retry error handling logic: Only JobRetryExceptions will cause a scheduler job to execute again
  • Expose Emix units
  • Expose Baseline
  • Bugfixes
  • Unschedule invalid modified event
  • Fix persistIDs implementation
  • Fixed gaps missed in test harness testing
  • Validate VEN ID in create report
  • Return OadrResponse after receiving a Reregistration request via poll
  • Return 4xx in CanceledReport if any of the request IDs are invalid


  • Use Xerces macro to pull in version


  • Send oadrResponse after receiving RequestReregistration message
  • Validate VEN ID in CreateReport message


  • Refactor job retry logic


  • Parse +/- preceding duration string


  • Fixed interval start time calculation in sample plugin


  • Fixed a few compliance issues


  • Windows build updates
  • Compliance testing bug fixes
  • Two event tests fail in 1.0.2 - users must upgrade to 1.0.3
  • Convert http keys in headers to lowercase


  • Retry failures from plugin
  • Upgrade SPD logger to v1.3.1
  • Add log flushing. Expose config parameter to flush the log an a specified interval
  • Added CA certificates for test and production
  • Added OpenADR response code and message to the HTTP API functions which communicate to the VTN
  • Schedule/Unschedule event callbacks on opt in/out
  • Override config file options from the command line
  • Implement max log size and log rotation. Expose parameters in the config
  • Implement last report date tracking in the sample plugin. If the OnGeneratePeriodicReport function throws an error, the function will be retried at the retry interval, and will use the last report date as a starting point for collecting data.
  • Implement curl rewind. This fixes occasional errors that occur when the remote has closed the socket but curl has not yet detected the socket is closed.


  • Windows support


  • Populate optional UID field in Interval object
  • Expose ReadingType in EiSpecifierPayload
  • Handle report generation when no intervals are added to report
  • Wait for thread pool threads to exit before shutting down
  • Use async IO to execute on a single thread
  • Updated Event callbacks (see nova/deps/plugin/pluginapi/notifier/INovaNotifierPlugin.h)
  • EventFailedValidation callback: notifies plugin when an event is rejected
  • ValidateEvent callback: let's plugin accept or reject an event
  • Compliance test aganist the 1.1.2 Quality Logic test harness
  • Report generation API improvements
  • Wrap OpenADR objects passed to plugin in interfaces
  • Add retries to sample plugin
  • Pass logger to plugin
  • Pass exceptions to plugin
  • Pass sent and received XML messages to plugin
  • Single threaded with ASIO


  • Add signal matcher to config


  • Add report generation helper to sample plugin


  • Add http code and message to receive message callback
  • Expose connect and request timeouts


  • Reregister on 452/463 errors
  • Added persistIds flag: if set, reuses the registration ID and VEN ID supplied by the VTN during registration, and persists the IDs in the config file
  • Add OnRegister callback, called when the VEN successfully registers
  • Add dtsart to startEvent callback


  • Allow 0 duration report intervals to be scheduled
  • Fix memory management issues in EventManager and ReportManager


  • Allow regular expressions for market context matching
  • Add complete event callbacks for active events that are canceled


  • Add content type header option to HttCurl constructor
  • Schedule event callbacks to allow forEach to be called from more callbacks
  • Change event callbacks to use full event duration, not remainingDuration
  • Use TLS strings (instead of integers) in config file


  • Opt out per resource in callbacks
  • Enable or disable status callback and set the callback interval from the config
  • Status Functon calls go to the plugin OnStatus callback
  • Enable or disable event randomization from the config. If disabled, the external system is responsible for adhering to the randomization set in the event.
  • Event visitor function added to the IVenManager API. IVenManager exposed to plugins
  • Messages received on HTTP API that match a plugin supplied namespace are forwarded to the plugin function OnRegisteredMessage.


  • Initial Release