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

Ignition8.3 or later
ScopeGateway only
Maker EditionCompatible
ModuleSigned .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.

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

Evaluate, or run one source.

$0
1 API URL · no time limit
  • One configured REST source
  • Every feature included
  • No license key required
Download free

Integrator

Deploy across any gateway.

$3,500
any gateway · perpetual
  • Unlimited REST sources
  • Any number of gateways
  • Everything in Pro
Buy now — $3,500

Install the free module first and confirm it works on your gateway — a license key lifts the source limit in place, with no reinstall. Pro and Integrator are one-time purchases for the major version you buy, with no recurring fee — Pro covers a single gateway, Integrator covers any number of gateways. Checkout is by card or US bank transfer, and your license key is emailed within one business day. Need a PO, or buying more than one module? Request an invoice instead — Net 30, and we reply with a quote. Get in touch.

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 Parsley about licensing