Path segment types
Exact match
Every segment names a specific node. Returns at most one parameter.
Wildcard (`*`)
Matches any single segment. Returns all parameters at that position.
Alias filter (`[key:value]`)
Like a wildcard, but only returns instances where a sibling parameter equals
the given value.
Exact match
declare() returns a ParameterWrapper whose .value, .path, and other accessors resolve directly to that parameter.
Wildcard (*)
A * in any segment position matches every child at that level:
MACAddress parameter across all WAN devices, connection devices, and IP connections. Use for...of on the returned ParameterWrapper to iterate the results.
Alias filter ([key:value])
An alias filter acts like a wildcard but additionally restricts results to instances where a sibling parameter matches the given value:
ExternalIPAddress parameter whose sibling AddressingType parameter equals "DHCP".
You can include multiple key-value pairs in the same filter (comma-separated), use multiple filters, or mix filters and wildcards within the same path. All combinations are valid.
Paths are parsed and cached in a two-generation LRU cache rotated every 120
seconds. Paths are immutable once created, and their segments are frozen.
Using path expressions with declare()
Reading a single parameter
Re-discovering instances with path timestamp
Using a recent timestamp for the path attribute causes GenieACS to re-sync the device and rediscover all matching instances:
Creating and deleting object instances
Because provisions are declarative, you do not issue explicit AddObject or DeleteObject commands. Instead, you declare the desired number of instances and GenieACS determines what RPCs are needed. Specify the count using thepath key in the values argument of declare(). The wildcard (or alias filter) at the last segment of the path is the instance selector.
Ensure exactly one instance exists
{path: 1} means “there should be exactly 1 instance matching this path.”
Delete all instances matching a filter
{path: 0} deletes all instances. The empty alias filter [] matches every instance regardless of its child parameters.
Special GenieACS parameters
In addition to the standard TR-069 data model, GenieACS exposes its own parameters that can be used indeclare() calls.
DeviceID
Read-only parameters that identify the device. These are populated from the Inform message.
| Path | Description |
|---|---|
DeviceID.ID | GenieACS internal device identifier. |
DeviceID.SerialNumber | Device serial number. |
DeviceID.ProductClass | Device product class. |
DeviceID.OUI | Organizationally Unique Identifier. |
DeviceID.Manufacturer | Device manufacturer name. |
Tags
Device tags are exposed as boolean child parameters under Tags. Setting a tag to false deletes it; setting a non-existent tag to true creates it.
Reboot
Holds the timestamp of the last reboot command. Declaring a value larger than the current value triggers a reboot.
FactoryReset
Works like Reboot but triggers a factory reset.
Downloads
The Downloads sub-tree holds information about download commands. Each download is an instance (e.g. Downloads.1) with parameters including Download (timestamp), LastFileType, LastFileName. The parameters FileType, FileName, TargetFileName, and Download are writable.
| Value | Meaning |
|---|---|
1 Firmware Upgrade Image | Firmware image |
2 Web Content | Web content |
3 Vendor Configuration File | Vendor config file |
4 Tone File | Tone file |
5 Ringer File | Ringer file |
7 TRANSFER COMPLETE event. You can use that event to trigger a reboot.
VirtualParameters
User-defined computed parameters appear under the VirtualParameters.* namespace and can be read and written just like real device parameters. Virtual parameter scripts can reference other virtual parameters up to 8 levels deep.