Gateway Function Reference
Fluxy Free 0.2.0.20260714 declares 28 authenticated Gateway functions. All 28 are available on Ignition 8.3; 26 are available on Ignition 8.1 because historian metadata requires 8.3. The route prefix, authorization implementation, and underlying version adapters differ, but supported operations retain the same JSON contract and Python names.
Connection contract
Section titled “Connection contract”All functions use HTTP POST.
| Gateway | Route prefix | Credential |
|---|---|---|
| Ignition 8.3.4+ | /data/fluxy | Complete Ignition Gateway API key in X-Ignition-API-Token |
| Ignition 8.1.50+ | /main/data/fluxy | Fluxy token whose SHA-256 hash is configured on the Gateway |
JSON routes accept Content-Type: application/json, reject request bodies larger than 1 MiB, and reject ordinary JSON responses larger than 4 MiB. Collection requests accept at most 1,000 items. Every route returns X-Fluxy-Request-Id and X-Fluxy-Run-Id response headers. Clients may supply:
X-Fluxy-Request-Id: unique operation correlation ID.X-Fluxy-Run-Id: stable script or batch correlation ID.X-Fluxy-Script: optional script name.
Ignition 8.3 authorization uses the Gateway API Read or Write permission shown below. Ignition 8.1 uses the configured read token or write token; the write token can call both access levels.
Every Write operation emits a mutation audit record when the Gateway audit profile is configured. Audit records contain operation and target identifiers, but never imported tag definitions, tag or historian values, annotation data, metadata values, API credentials, or complete request bodies.
Function index
Section titled “Function index”| Python API | Gateway route | Access | Underlying Ignition API |
|---|---|---|---|
fx.util.get_version() | util/getVersion | Read | system.util.getVersion |
| Current client source | util/getCapabilities | Read | Shared native route manifest |
fx.util.get_modules() | util/getModules | Read | system.util.getModules |
fx.util.query_audit_log(...) | util/queryAuditLog | Read | system.util.queryAuditLog |
fx.tag.read_blocking(...) | tag/readBlocking | Read | system.tag.readBlocking |
fx.tag.browse(...) | tag/browse | Read | system.tag.browse |
fx.tag.get_configuration(...) | tag/getConfiguration | Read | system.tag.getConfiguration |
fx.tag.export_tags(...) | tag/exportTags | Read | system.tag.exportTags |
fx.tag.query(...) | tag/queryTags | Read | system.tag.query |
fx.tag.configure(...) | tag/configure | Write | system.tag.configure |
fx.tag.write_blocking(...) | tag/writeBlocking | Write | system.tag.writeBlocking |
fx.tag.delete_tags(...) | tag/deleteTags | Write | system.tag.deleteTags |
fx.tag.copy(...) | tag/copy | Write | system.tag.copy |
fx.tag.move(...) | tag/move | Write | system.tag.move |
fx.tag.rename(...) | tag/rename | Write | system.tag.rename |
fx.tag.import_tags(...) | tag/importTags | Write | system.tag.importTags |
fx.historian.browse(...) | historian/browse | Read | 8.3 system.historian.browse; 8.1 system.tag.browseHistoricalTags |
fx.historian.query_raw_points(...) | historian/queryRawPoints | Read | 8.3 system.historian.queryRawPoints; 8.1 system.tag.queryTagHistory |
| Client helper in current source | historian/queryRawPointsStream | Read | Java TagHistoryManager.queryHistory |
fx.historian.query_aggregated_points(...) | historian/queryAggregatedPoints | Read | 8.3 system.historian.queryAggregatedPoints; 8.1 history/calculation adapters |
fx.historian.query_annotations(...) | historian/queryAnnotations | Read | 8.3 system.historian.queryAnnotations; 8.1 system.tag.queryAnnotations |
fx.historian.query_metadata(...) | historian/queryMetadata | Read | 8.3 only: system.historian.queryMetadata |
fx.historian.store_data_points(...) | historian/storeDataPoints | Write | 8.3 system.historian.storeDataPoints; 8.1 system.tag.storeTagHistory |
fx.historian.store_annotations(...) | historian/storeAnnotations | Write | 8.3 system.historian.storeAnnotations; 8.1 system.tag.storeAnnotations |
fx.historian.delete_annotations(...) | historian/deleteAnnotations | Write | 8.3 system.historian.deleteAnnotations; 8.1 system.tag.deleteAnnotations |
fx.historian.store_metadata(...) | historian/storeMetadata | Write | 8.3 only: system.historian.storeMetadata |
fx.project.request_scan() | project/requestScan | Read | Java ProjectManager.requestScan |
fx.project.get_project_names() | project/getProjectNames | Read | system.project.getProjectNames |
Routes below are relative to /data/fluxy/ on 8.3 or /main/data/fluxy/ on 8.1.
Utility functions
Section titled “Utility functions”Get Gateway version
Section titled “Get Gateway version”POST util/getVersion
- Python:
fx.util.get_version() - Access: Read
- Request: empty JSON object.
- Response:
version,major,minor,transport, andcontractVersion.
{}Get module capabilities
Section titled “Get module capabilities”POST util/getCapabilities
- Python:
fx.util.get_capabilities()in current client source. PyPIfluxy-ign 0.1.1can call the raw route directly but does not include this helper. - Access: Read
- Request: empty JSON object.
- Response: transport, contract version, module version, Ignition family, and all 28 declared operations with
accessand version-specificavailablefields.
{}Use capability discovery before optional operations. Ignition 8.1 reports historian/queryMetadata and historian/storeMetadata with available: false; those routes are not mounted on 8.1.
List installed modules
Section titled “List installed modules”POST util/getModules
- Python:
fx.util.get_modules() - Access: Read
- Request: empty JSON object.
- Response: the installed module inventory as
columnsandrows; the Python client converts it to row mappings.
{}Query audit log
Section titled “Query audit log”POST util/queryAuditLog
- Python:
fx.util.query_audit_log(...) - Access: Read
- Required:
auditProfileNamestring. - Optional:
startDate,endDateas epoch milliseconds;actorFilter,actionFilter,targetFilter,valueFilter,systemFilter, andcontextFilter. - Response: an Ignition Dataset serialized as
columnsandrows; the Python client converts it to row mappings.
{ "auditProfileName": "Fluxy Audit", "actionFilter": "Fluxy.tag/writeBlocking", "targetFilter": "[default]Area/Setpoint"}Tag functions
Section titled “Tag functions”Read tags
Section titled “Read tags”POST tag/readBlocking
- Python:
fx.tag.read_blocking(tag_paths, timeout_ms=None) - Access: Read
- Required:
tagPathslist. - Optional:
timeoutMs; default45000. - Response: one entry per path with
tagPath, JSON-compatiblevalue,quality, and ISO timestamp.
{ "tagPaths": ["[default]Area/Temperature"], "timeoutMs": 45000}Browse tags
Section titled “Browse tags”POST tag/browse
- Python:
fx.tag.browse(path, tag_filter=None) - Access: Read
- Required:
pathstring. - Optional:
filterobject using Ignition tag browse filters. - Response: entries containing available
name,fullPath,tagType,dataType, andhasChildrenfields.
{ "path": "[default]Area", "filter": {"tagType": "AtomicTag"}}Get tag configuration
Section titled “Get tag configuration”POST tag/getConfiguration
- Python:
fx.tag.get_configuration(path, recursive=False) - Access: Read
- Required: one
pathstring or apathslist. - Optional:
recursive; defaultfalse. - Response: normalized tag configuration objects, including nested
tagswhen requested.
{ "path": "[default]Area/Temperature", "recursive": false}Export tags
Section titled “Export tags”POST tag/exportTags
- Python:
fx.tag.export_tags(tag_paths, recursive=True) - Access: Read
- Required:
tagPathslist. - Optional:
recursive; defaulttrue. - Response: decoded
tagsplus the original IgnitionrawJsonexport.
{ "tagPaths": ["[default]Area"], "recursive": true}Query tags
Section titled “Query tags”POST tag/queryTags
- Python:
fx.tag.query(provider, query=None, limit=None, continuation=None) - Access: Read
- Required:
providerstring. - Optional: Ignition tag-report
queryobject,limit, andcontinuationpoint. - Limits: omitted
limitdefaults to1000; accepted range is1through10000. - Response: requested tag properties and
continuationPoint. JSON-compatible property types are preserved.
{ "provider": "default", "query": { "condition": {"path": "Area/*", "tagType": "AtomicTag"}, "returnProperties": ["path", "tagType", "valueSource"] }, "limit": 100}Configure tags
Section titled “Configure tags”POST tag/configure
- Python:
fx.tag.configure(tags, base_path=..., collision_policy="o") - Access: Write
- Required:
basePathstring andtagslist. - Optional:
collisionPolicy; defaultofor overwrite. - Response: quality and name for each submitted tag.
- Audit: successful mutations are written to the configured Gateway audit profile.
{ "basePath": "[default]", "collisionPolicy": "o", "tags": [ { "name": "fluxy", "tagType": "AtomicTag", "valueSource": "memory", "dataType": "String", "value": "Hello World" } ]}Write tags
Section titled “Write tags”POST tag/writeBlocking
- Python:
fx.tag.write_blocking(tag_paths, values, timeout_ms=None) - Access: Write
- Required: equally sized
tagPathsandvalueslists. - Optional:
timeoutMs; default45000. - Response: quality and path for every write.
- Audit: successful mutations are written to the configured Gateway audit profile. Values are not logged or audited.
{ "tagPaths": ["[default]fluxy"], "values": ["Hello World"], "timeoutMs": 45000}Delete tags
Section titled “Delete tags”POST tag/deleteTags
- Python:
fx.tag.delete_tags(tag_paths) - Access: Write
- Required:
tagPathslist. - Response: quality and path for every deletion.
- Audit: successful mutations are written to the configured Gateway audit profile.
{ "tagPaths": ["[default]TemporaryTag"]}Copy tags
Section titled “Copy tags”POST tag/copy
- Python:
fx.tag.copy(tag_paths, destination_path, collision_policy="o") - Access: Write
- Required:
tagPathslist anddestinationPathstring. - Optional:
collisionPolicy; defaulto. - Response: source, destination, and quality for every copied tag.
{ "tagPaths": ["[default]Area/Source"], "destinationPath": "[default]Area/Copies", "collisionPolicy": "o"}Move a tag
Section titled “Move a tag”POST tag/move
- Python:
fx.tag.move(source_path, destination_path) - Access: Write
- Required:
sourcePathand destination-folderdestinationPathstrings. - Response: source, destination, and quality.
{ "sourcePath": "[default]Area/Source", "destinationPath": "[default]Area/Moved"}Rename a tag
Section titled “Rename a tag”POST tag/rename
- Python:
fx.tag.rename(tag_path, new_name) - Access: Write
- Required:
tagPathandnewNamestrings. - Response: original path, new name, and quality.
{ "tagPath": "[default]Area/OldName", "newName": "NewName"}Import tags
Section titled “Import tags”POST tag/importTags
- Python:
fx.tag.import_tags(tags, base_path=..., collision_policy="o") - Access: Write
- Required:
tagsas decoded tag-export JSON or a raw JSON string, plusbasePath. - Optional:
collisionPolicy; defaulto. - Response: one quality per imported root tag.
{ "basePath": "[default]", "collisionPolicy": "o", "tags": { "name": "ImportedFolder", "tagType": "Folder" }}Historian functions
Section titled “Historian functions”Historian functions require an enabled, licensed or active-trial historian module and a configured provider.
Browse history
Section titled “Browse history”POST historian/browse
- Python:
fx.historian.browse(path, continuation_point=None) - Access: Read
- Required:
pathstring. - Optional:
continuationPointreturned by a previous browse response. - Response: historical paths, display paths, child state, type, metadata, continuation point, and result quality.
{ "path": "histprov:Core Historian:/"}Query raw history
Section titled “Query raw history”POST historian/queryRawPoints
- Python:
fx.historian.query_raw_points(paths, start_time, end_time, return_size=100) - Access: Read
- Required:
pathslist,startTime, andendTimeas epoch milliseconds. - Optional:
returnSize; default100. - Response: an Ignition Dataset serialized as
columnsandrows, converted to row mappings by the Python client.
{ "paths": ["histprov:Core Historian:/sys:gateway:/prov:default:/tag:Area/Temperature"], "startTime": 1783987200000, "endTime": 1783990800000, "returnSize": 100}Query aggregated history
Section titled “Query aggregated history”POST historian/queryAggregatedPoints
- Python:
fx.historian.query_aggregated_points(...) - Access: Read
- Required:
pathslist,startTime, andendTimeas epoch milliseconds. - Optional:
aggregates,fillModes,columnNames,returnFormat,returnSize,includeBounds, andexcludeObservations. - Limits:
returnSizedefaults to1and accepts1through100000. - Response: an Ignition Dataset serialized as
columnsandrows.
{ "paths": ["histprov:Core Historian:/sys:gateway:/prov:default:/tag:Area/Temperature"], "startTime": 1783987200000, "endTime": 1784073600000, "aggregates": ["Maximum"], "fillModes": ["NONE"], "columnNames": ["Maximum"], "returnFormat": "CALCULATION", "returnSize": 1, "includeBounds": false, "excludeObservations": false}On Ignition 8.1, CALCULATION uses system.tag.queryTagCalculations; WIDE and TALL use system.tag.queryTagHistory. The 8.1 adapter supports a consistent DERIVED or NONE fill mode for all paths and rejects other fill modes or excludeObservations: true rather than silently changing semantics.
Stream raw history
Section titled “Stream raw history”POST historian/queryRawPointsStream
- Python:
fx.historian.stream_raw_points(...)in current client source. PyPIfluxy-ign 0.1.1can call the raw route directly but does not yet include this helper. - Access: Read
- Content type:
application/x-ndjson. - Required:
pathslist,startTime, andendTimeas epoch milliseconds. - Optional:
blockRows; default1000, range1through5000. - Limits: 1-128 paths, one history provider per request, 4 MiB maximum encoded block, 1 GiB maximum stream, and 30-minute maximum duration.
- Events:
schema, zero or moreblockevents, thenend; failures use anerrorevent when the response is already streaming. - Headers: also returns
X-Fluxy-Query-IdandX-Fluxy-Stream-Version.
{ "paths": ["histprov:Core Historian:/sys:gateway:/prov:default:/tag:Area/Temperature"], "startTime": 1783987200000, "endTime": 1784073600000, "blockRows": 1000}Store raw history
Section titled “Store raw history”POST historian/storeDataPoints
- Python:
fx.historian.store_data_points(paths, values, timestamps, qualities=None) - Access: Write
- Required: equally sized
paths,values, and epoch-millisecondtimestampslists. - Optional:
qualities; defaults to192(Good) for every path. - Response: one quality string per submitted point.
- Audit: successful mutations are written to the configured Gateway audit profile. Values are not logged or audited.
{ "paths": ["histprov:Core Historian:/sys:gateway:/prov:default:/tag:Area/Temperature"], "values": [72.5], "timestamps": [1783987200000], "qualities": [192]}Store annotations
Section titled “Store annotations”POST historian/storeAnnotations
- Python:
fx.historian.store_annotations(...) - Access: Write
- Required: equally sized
pathsand epoch-millisecondstartTimeslists. - Optional: equally sized
endTimes,types,data,storageIds, anddeletedlists. - Response: one quality string per annotation.
{ "paths": ["histprov:Core Historian:/sys:gateway:/prov:default:/tag:Area/Temperature"], "startTimes": [1783987200000], "endTimes": [1783987260000], "types": ["note"], "data": ["Operator check"]}Query annotations
Section titled “Query annotations”POST historian/queryAnnotations
- Python:
fx.historian.query_annotations(paths, start_date, end_date=None, allowed_types=None) - Access: Read
- Required:
pathslist and epoch-millisecondstartDate. - Optional: epoch-millisecond
endDateandallowedTypeslist. - Response: storage ID, path, time range, type, data, and available author/deleted fields.
{ "paths": ["histprov:Core Historian:/sys:gateway:/prov:default:/tag:Area/Temperature"], "startDate": 1783987200000, "endDate": 1784073600000, "allowedTypes": ["note"]}Delete annotations
Section titled “Delete annotations”POST historian/deleteAnnotations
- Python:
fx.historian.delete_annotations(paths, storage_ids) - Access: Write
- Required: equally sized
pathsandstorageIdslists. - Response: one quality string per deletion.
{ "paths": ["histprov:Core Historian:/sys:gateway:/prov:default:/tag:Area/Temperature"], "storageIds": ["annotation-storage-id"]}Store metadata
Section titled “Store metadata”POST historian/storeMetadata
- Python:
fx.historian.store_metadata(paths, timestamps, properties) - Availability: Ignition 8.3 only.
- Access: Write
- Required: equally sized
pathsand epoch-millisecondtimestampslists plus apropertiesobject. - Response: one quality string per path.
{ "paths": ["histprov:Core Historian:/sys:gateway:/prov:default:/tag:Area/Temperature"], "timestamps": [1783987200000], "properties": {"documentation": "Commissioned", "engUnit": "degF"}}Query metadata
Section titled “Query metadata”POST historian/queryMetadata
- Python:
fx.historian.query_metadata(paths, start_date=None, end_date=None) - Availability: Ignition 8.3 only.
- Access: Read
- Required:
pathslist. - Optional: epoch-millisecond
startDateandendDate; an end date requires a start date. - Response: path, timestamp, quality, and metadata properties.
{ "paths": ["histprov:Core Historian:/sys:gateway:/prov:default:/tag:Area/Temperature"], "startDate": 1783987200000, "endDate": 1784073600000}Project functions
Section titled “Project functions”Request project scan
Section titled “Request project scan”POST project/requestScan
- Python:
fx.project.request_scan(); current client source also acceptstimeout_seconds. - Access: Read.
- Optional:
timeoutSeconds; default10, range1through300. - Response:
ok, completion message, anddurationMillis.
{ "timeoutSeconds": 30}A timeout stops only the HTTP request from waiting. It does not cancel the project scan. Use this function after changing files under data/projects/; do not restart the Gateway merely to load project changes.
List projects
Section titled “List projects”POST project/getProjectNames
- Python:
fx.project.get_project_names() - Access: Read
- Request: empty JSON object.
- Response:
projectNameslist.
{}Direct HTTP example
Section titled “Direct HTTP example”curl --request POST \ --header 'Content-Type: application/json' \ --header 'X-Ignition-API-Token: fluxy-service:replace-with-your-secret' \ --data '{"tagPaths":["[default]fluxy"]}' \ 'https://your-gateway.example/data/fluxy/tag/readBlocking'Not exposed by the Gateway module
Section titled “Not exposed by the Gateway module”The native module intentionally does not expose arbitrary scripting or the broader WebDev function catalog. The following fluxy-ign namespaces are not currently module routes:
- Database and named-query operations.
- Device and OPC management.
- Alarm operations.
- Reporting.
- User, role, schedule, and holiday management.
- OPC UA connection management.
- Arbitrary script or function execution.
Use only functions in this reference when the client base URL targets the Fluxy Free Gateway module.