Ignition module · gateway

REST to Tags

Poll a REST endpoint and publish the result as an Ignition tag. Configure a URL, select the JSON value you need, and choose a tag path and data type — the module handles polling, quality, source timestamps, history, alarms and optional write-back.

Timer script → memory tagStale
Value18.4 °C
QualityGood
Timestamp2 s ago
The endpoint has been failing for three hours. The script errored, but the memory tag retains its last value at Good quality and its timestamp advanced when the tag was last written.
REST to TagsReported
Value18.4 °C
QualityBad_Connection
Timestamp3 h 04 m ago
Same outage. The timestamp reflects the last successful retrieval and quality has transitioned, so Ignition’s quality-based alarms can detect it.

REST to Tags is a gateway module for bringing JSON API data into Ignition without maintaining gateway timer scripts and memory tags.

If the API stops responding, the tag does not continue reporting a healthy value. Its quality changes and its timestamp reflects the last successful retrieval, so standard Ignition quality alarms can detect the issue.

↓Available now. The free module runs one REST source with every feature enabled. Install it, confirm it works on your gateway, then add a license key to lift the limit — no reinstall.

Why not use a timer script?

A gateway timer script that calls system.net.httpGet and writes to memory tags is often enough for a quick integration. The limitation is that the tag’s value, timestamp and quality all need to be managed by the script.

If a request fails and the script does not explicitly update quality or preserve the last successful retrieval time, operators may see an old value that still appears current. That can make source failures harder to identify from the HMI alone.

REST to Tags manages those details at the tag-provider level. A failed source retains the last successful value and retrieval time, while quality transitions based on the configured failure behavior — briefly to stale, where a recent value may still be useful, then to a bad code.

This module exists because API integrations are often treated as “just run an HTTP request,” while timestamp and quality behavior are left to every individual project.

Features

JSON REST polling
Map a JSON path such as current.temperature_2m to an Ignition tag, with the data type you choose.
Quality handling
Successful reads publish Good quality. Repeated failures move the source through stale and bad states based on configuration.
Accurate source timestamps
The value tag timestamp represents the most recent successful retrieval, not the most recent polling attempt.
Standard Ignition alarming
When a source is bad you can use Ignition’s normal quality-based alarm behavior, rather than maintaining a separate expression tag.
Optional write-back
Configure a write endpoint for writable tags; sources without one remain read-only.
Independent polling per source
Each source runs on its own scheduled task, so a slow endpoint delays only its own tag. An invalid entry is skipped with a per-field reason and the rest still load.

Per-source diagnostic tags

Each source publishes its value tag plus a diagnostics folder. Diagnostics are published at Good quality regardless of source state, since they describe the source and need to remain readable while it is unavailable.

TagWhat it tells you
<tagPath>The polled value, carrying source quality and the time of the last successful retrieval.
Diagnostics/<name>/QualityCurrent source state — GOOD, STALE, BAD_CONNECTION.
Diagnostics/<name>/DataAgeMsAge of the value, in milliseconds. Increases while a source is unavailable.
Diagnostics/<name>/ConsecutiveFailuresLength of the current failure run, which can be alarmed on a threshold.
Diagnostics/<name>/LastErrorDetail of the most recent failure.

Configuration

Sources are configured from a gateway config editor with a status table showing each source’s quality, data age, failure count and last error. Saving reconfigures a running gateway.

The same configuration can be edited directly as sources.json in the gateway data directory. The file is watched and re-read when it changes, so adding, editing or removing a source takes effect within seconds without a restart.

// <gateway data dir>/rest-tags/sources.json
{
  "sources": [
    {
      "tagPath":    "Weather/OutdoorTempC",
      "url":        "https://api.example.com/v1/current",
      "jsonPath":   "current.temperature_2m",
      "dataType":   "Float8",
      "pollRateMs": 30000,
      "writeUrl":   "https://api.example.com/v1/setpoint",
      "headers":    { "X-API-Key": "..." }
    }
  ]
}

pollRateMs, writeUrl and headers are optional. For OAuth2 client-credentials, replace the static header with an oauth block; tokens are cached until 30 seconds before expiry and refetched on a 401, so an expired credential recovers without intervention.

Requirements

Ignition

8.3 or later

Scope

Gateway only

Maker Edition

Compatible

Module

Signed .modl

Gateway scope only; there is no Designer or Perspective component to install. The module ships only its own jars, with no bundled third-party dependencies.

How licensing works

Buying is simple and the module runs entirely on your own gateway:

1

Free

install the .modl and configure one REST source. Every feature is there — quality, source timestamps, history, alarming and write-back — so the only thing the free tier limits is how many sources run.

2

Paid

check out, then send us the gateway id the module shows on its configuration page. Your key is emailed within one business day of receiving it.

3

Activation

paste the key on the Gateway configuration page. The source limit lifts in place — no restart, no reinstall, and nothing already configured is touched. Keys are validated offline, so an air-gapped gateway is fine.

4

Per gateway

one key covers one Ignition gateway, perpetual for the major version you buy. A second gateway needs a second key.

Pricing

The free tier is the full module limited to a single configured source. Every feature — quality handling, diagnostics, history, alarming and write-back — is present, so you can verify the behavior on your own gateway before paying for anything.

Free$0Pro$995
1 API URL · no time limit/gateway · perpetual
One configured REST sourceUnlimited REST sources
Every feature includedOne Ignition gateway
No license key requiredEverything in Free
Download freeBuy now — $995

Install the free module first and confirm it works on your own gateway — that is what the free tier is for. Pro is a one-time purchase for the major version you buy, per gateway, with no recurring fee. Card or US bank transfer. Need a PO, or buying more than one module? Request an invoice instead — Net 30, and we reply with a quote. Terms of Sale.

Frequently asked questions

Why not use a gateway timer script?
A timer script calling system.net.httpGet and writing memory tags is often enough for a quick integration. The limitation is that value, timestamp and quality all have to be managed by the script. If a request fails and the script does not explicitly update quality or preserve the last successful retrieval time, operators may see an old value that still appears current. REST to Tags manages those details at the tag-provider level.
Do I need a separate alarm tag to detect an outage?
No. When a source goes bad the tag quality reflects it, so Ignition’s normal quality-based alarm behavior applies without a separate companion tag or expression.
Which Ignition versions are supported?
Ignition 8.3 or later, gateway scope only. There is no Designer or Perspective component to install. The module is signed and is compatible with Maker Edition.
Can it write back to the API?
Yes. Configure a write endpoint on a source and the tag becomes writable. Sources without one remain read-only.
What authentication is supported?
Static headers such as an API key, and OAuth2 client-credentials. Tokens are cached until 30 seconds before expiry and refetched on a 401, so an expired credential recovers without intervention.
Does adding a source require a gateway restart?
No. Saving from the config editor reconfigures a running gateway, and the sources file is watched and re-read when it changes. Adding, editing or removing a source takes effect within seconds; removing a source removes its tags.
What happens if one endpoint is slow?
Each source polls on its own scheduled task, so a slow endpoint delays only its own tag. An invalid entry is skipped with a per-field reason and the remaining sources still load.
Does it support history and alarming?
These are standard Ignition tags, so history and alarming behave as they do on any other tag. History is written when the history-provider property is set.

Not sure which tier fits? Tell us how many sources and gateways you need and we’ll point you to the right license.

Email us about licensing