Overview
A client-mode connector for a curated slice of AVEVA CONNECT data services (formerly AVEVA Data Hub / OSIsoft Cloud Services) under your regional hosthttps://{region}.datahub.connect.aveva.com/api/v1/Tenants/{tenant}/Namespaces/{ns}:
BASE_ADDRESS includes tenant and namespace (no trailing slash; endpoints start with /). Topics use historian/aveva-connect-data-services/<object>/<verb>. Default stub region is uswe (US West).
See the base guide: REST API Connectors.
Tenant + OAuth required. There is no public CONNECT sandbox. Replace
YOUR_TENANT / YOUR_NAMESPACE, pick your region, and supply an OAuth 2.0 client credentials access token. Prefer Hub secrets.OMF connection. For
POST /omf, map the client-credentials client to an OMF connection that targets the namespace (CONNECT portal: Data Management → Connections). Otherwise OMF ingress is unauthorized or not routed.Prefer Hub secrets for tokens / client secrets. This template has not been verified against a live CONNECT tenant. Queue status remains blocked until an authenticated live smoke succeeds.
Basic Syntax
Events
Auth
- Create a Client-Credentials client in CONNECT (Security → Clients) with roles that can read/write SDS streams (and OMF if ingesting).
- For OMF, create an OMF connection and map that client to the target namespace(s).
- Exchange credentials at the regional token endpoint, e.g.
POST https://uswe.datahub.connect.aveva.com/identity/connect/token
withgrant_type=client_credentials,client_id,client_secret. - Discovery:
https://uswe.datahub.connect.aveva.com/identity/.well-known/openid-configuration. - Pass the access token on each MQTT payload as
api_token→ headerAuthorization: Bearer {value.json.api_token}. - Prefer Hub secrets. Never commit
client_secretor access tokens.
Example payloads
List streams (smoke):api_token in a wrapper only if your upstream strips non-body keys before {payload} — otherwise publish the OMF body alone and pass the token via a Hub secret injection pattern your broker supports). Practical pattern: put api_token alongside path fields when the connector uses {value.json.*} for path/query, and keep {payload} as the full MQTT JSON for PUT/POST when the API accepts extra fields being ignored — for OMF, prefer a clean OMF array body.
Get stream data:
streamId in the MQTT JSON for the path placeholder; shape the body as an SDS value array.
Configuration checklist
- Set
BASE_ADDRESSregion + tenant + namespace. - Store OAuth client id/secret (or a short-lived access token) in Hub secrets.
- Map the client to an OMF connection before using
PostOmf*. - Deploy the
.lotwith-addRoute(noADD METADATAin the deployable file). - Smoke: publish to
historian/aveva-connect-data-services/streams/list→ expect HTTP 200 on the response topic.
Sources
Related
- REST API Connectors
- AVEVA PI Web API (on-prem sister historian package)
- REST API Apps catalog

