Codec API-Poller
Overview
The codec-apipoller module polls a remote API endpoint for codec records and displays the returned data in a filterable BUG table.
The container polls the configured API URL every 300 seconds using an HTTP POST request. When the response body is an array, the module stores the returned codec records and exposes them to the panel UI.
Features
- filterable codec table in the main panel
- sortable columns for codec name, address, port, and selected nested device fields
- dropdown filters for zone, capabilities, and device tags
- admin-only configuration panel
- codec database capability output from the stored codec list
- panel status check for recent codec data availability
Configuration
| Field | Default Value | Description |
|---|---|---|
id | "" | Unique identifier for the module instance. |
order | 0 | Display order of the panel in the dashboard. |
needsConfigured | true | Indicates that the module requires configuration before use. |
title | "" | Human-readable panel title shown in the UI. |
module | "codec-apipoller" | Internal module name. |
description | "" | Optional descriptive text for the panel. |
notes | "" | Optional free-text notes. |
enabled | false | Enables or disables the module instance. |
url | "" | Remote API endpoint to poll for codec data. This field is required. |
Panel Data
The main panel displays codec records from the polled API response with these visible fields:
NameZoneCapabilitiesAddressPortDevice TagsDevice(manufacturer+model)
The table requests option lists for zone, capabilities, and device.tags so those values can be used as dropdown filters.
Codec Data Schema
The polled API endpoint is expected to return a JSON array of codec endpoints.
[
{
"id": "my-codec-endpoint-id",
"name": "My Codec SRT 01 (internet)",
"capabilities": ["srt", "h264", "aac"],
"address": "10.1.1.2",
"port": 6000,
"zone": "internet",
"device": {
"hostname": "my-codec-01",
"name": "My Codec 01",
"location": "My Location",
"tags": ["decoder"],
"description": "My nice rackmount codec",
"model": "CD1234",
"manufacturer": "Codec Inc",
"notes": "Main Path 1"
}
}
]
Top-Level Fields
| Field | Type | Description |
|---|---|---|
id | string | Unique identifier for the codec endpoint record. |
name | string | Display name shown in the panel. |
capabilities | array of strings | Capability labels used for display and filtering. |
address | string | Codec IP address or hostname. |
port | number | Codec service port. |
zone | string | Logical grouping used for display and filtering. |
device | object | Additional metadata about the underlying device. |
device Fields
| Field | Type | Description |
|---|---|---|
hostname | string | Device hostname. |
name | string | Human-readable device name. |
location | string | Device location text. |
tags | array of strings | Device tags used for filtering. |
description | string | Short description of the device. |
model | string | Device model name or number. |
manufacturer | string | Device manufacturer name. |
notes | string | Free-text notes about the device. |
The module currently uses these fields for filtering and sorting when present:
namezonecapabilitiesaddressportdevice.namedevice.locationdevice.tagsdevice.descriptiondevice.modeldevice.manufacturerdevice.notes
Capabilities
This module follows BUG’s standard capabilities model. For more information, see BUG Capabilities Documentation.
| Type | List |
|---|---|
| Exposes | codec-db |
| Consumes | None |
Troubleshooting
No codecs appear in the table
Check that the module is enabled and that url points to a reachable API endpoint returning an array of codec objects.
The panel shows a status warning or critical state
The status check reports when no recent codec data has been stored. Verify that the API endpoint is reachable and that the polling worker is running.
Changelog
version 1.1.2
- 2026-07-15: update test to return only default status [copilot] (f393752)
- 2026-07-14: don’t alert on stale data (e82848b)
version 1.1.1
- 2026-07-11: add tests (ecba755)
- 2026-07-11: implement status handling (b8a36b2)
- 2026-07-11: add README.md (b2fded2)
- 2026-07-11: refactor CodecList for updated schema (196f63b)
- 2026-07-11: add polling task and improve error handling [copilot] (27d6b61)
- 2026-07-11: improve error handling in services [copilot] (ceb9b8d)
- 2026-07-11: refactor routes to use asyncHandler [copilot] (e8d1601)