Skip to main content
Technical Preview

Overview

Proficy Historian (GE Vernova, formerly GE Digital) stores plant time-series data. Its Historian REST API is installed with the Historian web-based clients and lives under https://<host>/historian-rest-api/v1/. Calls carry an OAuth2 bearer token issued by Proficy Authentication (UAA) on the same host at /uaa/oauth/token. The ProficyHistorian connector covers the token request, server and system status, tag management, every read mode (current value, raw, interpolated, calculated, sampled) and writing samples with datapoints/create. Each event publishes the server’s reply on <topic>/response.

Prerequisites

  1. Proficy Historian 8.x, 9.x, 2022, 2023 or 2024 (Windows) with the web-based clients installed. That install adds the Historian REST API and Proficy Authentication. The broker host must reach the web-based clients node on HTTPS port 443. Historian 7.x used port 8443 for both the REST API and UAA.
  2. A Proficy Authentication client (client ID and secret) for the client_credentials grant, or a Historian web user plus the historian_public_rest_api client for the password grant. Writes (datapoints/create, tag add / update / delete) need the REST API administrator or a user with write permission.
  3. The certificate of the web-based clients node, trusted on the broker host. The default install uses a self-signed certificate.
  4. Store the client credentials in a Hub secret, for example PROFICY_HISTORIAN_CLIENT holding Basic <base64 of client_id:client_secret>.

Authentication

  1. Publish { "authorization": "Basic <base64 of client_id:client_secret>" } to historian/proficy-historian/token/create. The response carries access_token, token_type bearer and expires_in (seconds).
  2. Send "authorization": "Bearer <access_token>" with every other event. Request a new token before expires_in runs out.
As an alternative, historian/proficy-historian/user-token/create uses the password grant: client_id (historian_public_rest_api), client_secret (set during install), username (default <machinename>.admin) and password go in the payload. It sends no Authorization header.
Keep client secrets and passwords in Hub secrets and add them with GET SECRET. Never put them in the connector file or in retained topics.

Configuration

  • Replace YOUR_HISTORIAN_HOST in BASE_ADDRESS with the web-based clients node. For Historian 7.x use https://<host>:8443.
  • Tag names go into the URL as given. URL-encode special characters (# becomes %23). Separate several tags in tagNames with ;.
  • Timestamps are ISO 8601 UTC, for example 2026-10-05T07:00:00.000Z.
  • Responses are JSON { "ErrorCode": 0, "ErrorMessage": null, "Data": ... }. Check ErrorCode as well as the HTTP status. ErrorCode 14 on the tag list means more tags exist than maxNumber.
  • The server also serves Swagger UI at https://<host>/historian-rest-api/swagger-ui.html for the exact API of your version.

Examples

Get the current value of two tags:
Read raw samples for the last hour (count 0 reads by time; a positive count reads that many samples; direction 0 is forward):
Ten-minute averages (calculationMode 1 is Average):
Write a sample from MQTT into the historian (Quality 3 is Good):
Add a tag before writing to it (Name and DataType are required):
Example actions: refresh and keep the token, poll two tags, store an MQTT value in the historian, and a health check:

Testing

Technical preview, not yet live-tested. The app package’s smoke script checks every event against GE Vernova’s Historian 2024 REST API documentation (static) and runs every event against a local mock Historian (Proficy Authentication token endpoint with client credentials and password grant, bearer-protected REST API, tag add / update / delete and write → current value read-back), plus negative controls (no token, bad client secret, bad user password, expired token 401; unknown tag ErrorCode; bad timestamp 400; write without write permission 403). A run against a real Proficy Historian server and a broker MQTT round-trip are still open. See TEST.md in the app package.

Not covered

  • POST variants of the read APIs (tagNames in the body), trend data (datapoints/trend), tag rename, add many tags (tags/addtags) and data store / collection settings. Use the same URL pattern with your own event if you need them.
  • Systems administration (machines, mirror groups, storages, DHS services, performance counters), Historian model, collectors and collector instances, data stores, and alarms and events.
  • Proficy Operations Hub, the Historian Web Admin console, the Historian SDK / User API / OLE DB provider, and Historian collectors (including the MQTT collector, which can ingest from this broker directly).
Last modified on October 21, 2026