Legacy REST API for reading and writing tag values over HTTP. Deprecated — new integrations should use the Runtime REST API.

ReferenceCodeExtensions API Connector | WebAccess API Reference


Deprecated — use the Runtime REST API

The WebAccess API (the /rtServices/api/ surface documented on this page) is deprecated as of FrameworX 10.1.5. It remains supported for existing integrations and continues to ship, but it will not gain new capabilities.

New integrations should use the Runtime REST API — the versioned /api/v1/… data-plane API on the same TServer port. It adds aggregated history, alarms, Object Model browse, UserTypes, RFC 7807 errors, and a published OpenAPI 3.1 contract. The Runtime REST API Reference includes a migration table mapping each legacy verb below to its /api/v1/ equivalent.

We provide an API via Web-Service that can read and write tag values. To access the tags, a login is required for solution users. You can directly access this API through HTTP (REST API) connecting with a runtime system. 

This page presents information about how to use the WebAccess REST API.


Where This API Fits in the Runtime API Landscape

This page documents the legacy /rtServices/api/ surface exposed by the runtime web server on port 3101. It remains supported for existing integrations and continues to ship with FrameworX 10.1.5, but it is deprecated for new work.

Starting with 10.1.5, FrameworX also exposes a versioned Runtime REST API v1.0 on the same TServer port (3101+) covering tag read/write, alarm history, aggregated history, and other runtime surfaces under versioned endpoints with Bearer authentication. The v1.0 surface is documented in the Runtime REST API Reference. For machine-wide management (solution lifecycle, licensing, files) see the SolutionCenter API Reference on port 10108.

Companion health endpoints are published on the same port:

  • /health — liveness and runtime status.

  • /ready — readiness for traffic (modules loaded, datasets connected).

When choosing between surfaces: use the legacy verbs below only to maintain existing clients; use the Runtime REST API for all new integrations.


Contract Methods Using REST API

SetServer

Defines the Server for following requests. 

Method: GET

URL Example:  http://localhost:3101/rtServices/api/SetServer

Request
Request/Headers
      . Content-Type: application/json
    . Request/Body
      . { "ModuleName": "Test", "UserName": "guest", "Password": "" }


Response
Response/Headers
      . Access-Control-Allow-Origin: *
      . Access-Control-Allow-Headers: Content-Type, Content-Length, Authorization
      . Access-Control-Expose-Headers: Content-Type, Content-Length, Authorization
      . Access-Control-Allow-Methods: *
      . Content-Length: 0
      . Content-Type: application/octet-stream
      . Access-Control-Max-Age: 1728000
      . Authorization: Bearer c30730a4-e2ee-4595-9131-d64769c5afbe
      . Date: Tue, 28 Nov 2023 13:47:35 GMT
      . Server: TServer WebServer
    . Response/Body
       . Nothing

ReadObject

Reads value from specified object.

Method: GET

URL Example: http://localhost:3101/rtServices/api/SyncObjects/ReadObject

Request
Request/Headers
     . Content-Type: application/json
     . Authorization: Bearer c30730a4-e2ee-4595-9131-d64769c5afbe
     . content-length: 25
   . Ex: .../api/SyncObjects/ReadObject?ObjectName=Tag1


Response
Response/Headers
     . Content-Length: 89
     . Content-Type: application/json
     . Content-Encoding: utf8
     . Date: Tue, 28 Nov 2023 13:56:03 GMT
     . Server: TServer WebServer
   . Response/Body
     . { "ObjectName":"Tag1","Value":11,"Quality":192,"UtcTimeStamp":"11/28/2023 1:49:28.000 PM" }

ReadObjects

Reads value from multiple specified objects.

Method: GET

URL Example: http://localhost:3101/rtServices/api/SyncObjects/ReadObjects

Request
Request/Headers
     . Content-Type: application/json
     . Authorization: Bearer c30730a4-e2ee-4595-9131-d64769c5afbe
     . content-length: 25
   . Request/Body
     . { "ObjectNames": [ "Tag1", "Server.Now" ] }


Response
Response/Headers
     . Content-Length: 89
     . Content-Type: application/json
     . Content-Encoding: utf8
     . Date: Tue, 28 Nov 2023 13:56:03 GMT
     . Server: TServer WebServer
   . Response/Body
     . [ {"ObjectName":"Tag1","Value":11,"Quality":192,"UtcTimeStamp":"11/28/2023 10:47:50.581 AM"},{"ObjectName":"Server.Now","Value":"11/28/2023 1:48:26.003 PM"} ]

WriteObject

Write value to a specified object. You can only write values to objects that have their Visibility property set to Public.

Method: POST

URL Example:http://localhost:3101/rtServices/api/SyncObjects/WriteObject

Request
Request/Headers
     . Content-Type: application/json
     . Authorization: Bearer c30730a4-e2ee-4595-9131-d64769c5afbe
     . content-length: 25
   . Request/Body
     . { "ObjectName" : "Tag1", "Value" : 11, "Quality": 192, "UtcTimestamp": "2023-11-28T10:18:22.260Z" }


Response
Response/Headers
     . Content-Length: 89
     . Content-Type: application/json
     . Content-Encoding: utf8
     . Date: Tue, 28 Nov 2023 13:56:03 GMT
     . Server: TServer WebServer
   . Response/Body
     . true

WriteObjects

Write value to specified objects. You can only write values to objects that have their Visibility property set to Public.

Method: POST

URL Example:http://localhost:3101/rtServices/api/SyncObjects/WriteObjects

Request
Request/Headers
     . Content-Type: application/json
     . Authorization: Bearer c30730a4-e2ee-4595-9131-d64769c5afbe
     . content-length: 25
   . Request/Body
     . { "ObjectList": [ {"ObjectName": "Tag1", "Value": 11 }, { "ObjectName": "Tag2", "Value": 2, "Quality": 192, "UtcTimeStamp": "2023-11-28T10:18:22.260Z" } ] }


Response
Response/Headers
. Content-Length: 89
. Content-Type: application/json
. Content-Encoding: utf8
. Date: Tue, 28 Nov 2023 13:56:03 GMT
. Server: TServer WebServer
. Response/Body
. [true,true]

In this section...