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.
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.
| Tag | What it tells you |
|---|---|
<tagPath> | The polled value, carrying source quality and the time of the last successful retrieval. |
Diagnostics/<name>/Quality | Current source state — GOOD, STALE, BAD_CONNECTION. |
Diagnostics/<name>/DataAgeMs | Age of the value, in milliseconds. Increases while a source is unavailable. |
Diagnostics/<name>/ConsecutiveFailures | Length of the current failure run, which can be alarmed on a threshold. |
Diagnostics/<name>/LastError | Detail 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
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.
- One configured REST source
- Every feature included
- No license key required
Pro
One gateway, no source limit.
- Unlimited REST sources
- One Ignition gateway
- Everything in Free
Integrator
Deploy across any gateway.
- Unlimited REST sources
- Any number of gateways
- Everything in Pro
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?
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?
Which Ignition versions are supported?
Can it write back to the API?
What authentication is supported?
Does adding a source require a gateway restart?
What happens if one endpoint is slow?
Does it support history and alarming?
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