Summary
Barco Pulse-platform projector controlled via the Pulse JSON-RPC 2.0 API. Primary control is TCP/IP on port 9090 and/or RS-232 serial (19200 baud); the same command set is available over both transports. An HTTP file-endpoint interface (under /api) supports upload/download of warp grids, blend masks and black-level masks.
Transport
protocols:
- tcp
- serial
- http
addressing:
port: 9090 # Pulse JSON-RPC service on TCP
base_url: "http://<projector-ip>/api" # HTTP file endpoints; host address device-specific
serial:
baud_rate: 19200
data_bits: 8
parity: none
stop_bits: 1
flow_control: none
auth:
type: none # inferred: source states authentication may be skipped for normal end-user access; optional `authenticate` method (secret code) exists for elevated access levels
Traits
traits:
- powerable # inferred: system.poweron / system.poweroff methods present
- queryable # inferred: property.get queries and list methods present
- levelable # inferred: brightness/contrast/gamma/saturation/sharpness/laser-power settable
- routable # inferred: image.window.main.source selection + window position/size present
Actions
# JSON-RPC 2.0 Pulse API. Each entry below is a distinct documented operation.
# Framing/transport notes: identical commands carried over TCP:9090 and RS-232.
# `id` in examples is the JSON-RPC request id and is omitted from command templates.
# --- System / Power ---
- id: system_poweron
label: Power On
kind: action
command: '{"jsonrpc":"2.0","method":"system.poweron"}'
params: []
notes: "No-op if already on or in transition. Verify system.state is standby/ready first."
- id: system_poweroff
label: Power Off
kind: action
command: '{"jsonrpc":"2.0","method":"system.poweroff"}'
params: []
notes: "No-op if already off or in transition. Verify system.state is on first."
- id: eco_wake_serial
label: ECO Mode Wake via Serial
kind: action
command: ':POWR1\r'
params: []
notes: "ASCII serial command to wake projector in ECO mode. Alternatives: WoL (MAC), IR/panel power button."
- id: authenticate
label: Authenticate (elevated access)
kind: action
command: '{"jsonrpc":"2.0","method":"authenticate","params":{"code":98765}}'
params:
- name: code
type: integer
description: Secret pass code; sets user access level. Optional for normal end-user access.
notes: "Only required for higher-than-end-user access. Returns result:true on success."
# --- Generic property framework ---
- id: property_set
label: Set Property
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"<object.property>","value":<value>}}'
params:
- name: property
type: string
description: Dot-notation property path
- name: value
type: any
description: Property value
notes: "Wait for confirmation before re-setting the same property (flood risk)."
- id: property_get
label: Get Property
kind: query
command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"<object.property>"}}'
params:
- name: property
type: string
description: Dot-notation property path (or array of paths for multi-get)
- id: property_get_multi
label: Get Multiple Properties
kind: query
command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":["<prop1>","<prop2>"]}}'
params:
- name: property
type: array
description: Array of property paths
- id: property_subscribe
label: Subscribe to Property Changes
kind: action
command: '{"jsonrpc":"2.0","method":"property.subscribe","params":{"property":"<object.property>"}}'
params:
- name: property
type: string
description: Property path (or array of paths)
- id: property_unsubscribe
label: Unsubscribe from Property
kind: action
command: '{"jsonrpc":"2.0","method":"property.unsubscribe","params":{"property":"<object.property>"}}'
params:
- name: property
type: string
description: Property path (or array of paths)
- id: signal_subscribe
label: Subscribe to Signal
kind: action
command: '{"jsonrpc":"2.0","method":"signal.subscribe","params":{"signal":"<signalname>"}}'
params:
- name: signal
type: string
description: Signal name (or array of names)
- id: signal_unsubscribe
label: Unsubscribe from Signal
kind: action
command: '{"jsonrpc":"2.0","method":"signal.unsubscribe","params":{"signal":"<signalname>"}}'
params:
- name: signal
type: string
description: Signal name (or array of names)
- id: introspect
label: Introspect Object
kind: query
command: '{"jsonrpc":"2.0","method":"introspect","params":{"object":"<object>","recursive":true}}'
params:
- name: object
type: string
description: Object name (dot notation); empty introspects everything
- name: recursive
type: boolean
description: "true (default) = full; false = object names only (one level)"
# --- Source / connector management ---
- id: image_source_list
label: List Available Sources
kind: query
command: '{"jsonrpc":"2.0","method":"image.source.list"}'
params: []
notes: "Returns array of source names; contents vary by model (e.g. DVI 1, DVI 2, DisplayPort 1/2, Dual DVI, Dual DisplayPort, Dual Head DVI/DisplayPort, HDBaseT, HDMI, SDI)."
- id: image_connector_list
label: List Available Connectors
kind: query
command: '{"jsonrpc":"2.0","method":"image.connector.list"}'
params: []
- id: image_source_listconnectors
label: List Connectors for Source
kind: query
command: '{"jsonrpc":"2.0","method":"image.source.<sourcename>.listconnectors"}'
params:
- name: sourcename
type: string
description: "Source object name = source name with non-word chars removed, lowercased (e.g. 'DisplayPort 1' -> 'displayport1')"
notes: "Returns array of connector info (name, gridposition)."
- id: set_active_source
label: Set Active Source
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.window.main.source","value":"<source>"}}'
params:
- name: source
type: string
description: "Source name from image.source.list (e.g. 'DisplayPort 1', 'HDMI')"
- id: get_active_source
label: Get Active Source
kind: query
command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"image.window.main.source"}}'
params: []
# --- Image / picture ---
- id: set_brightness
label: Set Brightness
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.brightness","value":<v>}}'
params:
- name: v
type: float
description: "Normalized offset; min -1, max 1, step 1, precision 0.01; 0 = default"
- id: set_contrast
label: Set Contrast
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.contrast","value":<v>}}'
params:
- name: v
type: float
description: "Normalized gain; min 0, max 2, step 1, precision 0.01; 1 = default"
- id: set_gamma
label: Set Gamma
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.gamma","value":<v>}}'
params:
- name: v
type: float
description: "min 1, max 3, step 1, precision 0.1; default 2.2"
- id: set_saturation
label: Set Saturation
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.saturation","value":<v>}}'
params:
- name: v
type: float
description: "Normalized; min 0, max 2, step 1, precision 0.01; 1 = default"
- id: set_sharpness
label: Set Sharpness
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.sharpness","value":<v>}}'
params:
- name: v
type: integer
description: "min -2, max 8, step 1, precision 1; normalized"
- id: set_orientation
label: Set Image Orientation
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.orientation","value":"<v>"}}'
params:
- name: v
type: string
description: "Enum: DESKTOP_FRONT | DESKTOP_REAR | CEILING_FRONT | CEILING_REAR"
- id: set_window_position
label: Set Window Position
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.window.main.position","value":{"x":<x>,"y":<y>}}}'
params:
- name: x
type: integer
- name: y
type: integer
- id: set_window_size
label: Set Window Size
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.window.main.size","value":{"width":<w>,"height":<h>}}}'
params:
- name: width
type: integer
- name: height
type: integer
- id: set_scalingmode
label: Set Scaling Mode
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.window.main.scalingmode","value":"<v>"}}'
params:
- name: v
type: string
description: "Enum: Fill | OneToOne | FillScreen | Stretch"
# --- Color presets (P7 custom) ---
- id: color_p7_custom_copypreset
label: Copy Color Preset to Custom
kind: action
command: '{"jsonrpc":"2.0","method":"image.color.p7.custom.copypresettocustom","params":{"presetname":"<name>"}}'
params:
- name: presetname
type: string
- id: color_p7_custom_resetpreset
label: Reset Custom Color Preset
kind: action
command: '{"jsonrpc":"2.0","method":"image.color.p7.custom.resetpreset","params":{"presetname":"<name>"}}'
params:
- name: presetname
type: string
- id: color_p7_custom_resettonative
label: Reset Color to Native
kind: action
command: '{"jsonrpc":"2.0","method":"image.color.p7.custom.resettonative"}'
params: []
- id: color_rgbmode_next
label: Next RGB Mode
kind: action
command: '{"jsonrpc":"2.0","method":"image.color.rgbmode.nextrgbmode"}'
params: []
notes: "Cycles through all possible RGB modes."
# --- Illumination / laser ---
- id: set_laser_power
label: Set Laser Power
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"illumination.sources.laser.power","value":<v>}}'
params:
- name: v
type: float
description: "Target power in percent; range per minpower/maxpower (read-only, dynamic)"
- id: get_laser_power
label: Get Laser Power
kind: query
command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"illumination.sources.laser.power"}}'
params: []
- id: get_laser_minpower
label: Get Laser Min Power
kind: query
command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"illumination.sources.laser.minpower"}}'
params: []
- id: get_laser_maxpower
label: Get Laser Max Power
kind: query
command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"illumination.sources.laser.maxpower"}}'
params: []
- id: illumination_clo_engage
label: Engage CLO
kind: action
command: '{"jsonrpc":"2.0","method":"illumination.clo.engage"}'
params: []
notes: "Engage Constant Light Output at current light level."
- id: illumination_laser_getserialnumber
label: Get Laser Serial Number
kind: query
command: '{"jsonrpc":"2.0","method":"illumination.laser.getserialnumber"}'
params: []
# --- Optics ---
- id: get_shutter_position
label: Get Shutter Position
kind: query
command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"optics.shutter.position"}}'
params: []
- id: set_shutter_target
label: Set Shutter Target
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"optics.shutter.target","value":"<v>"}}'
params:
- name: v
type: string
description: "Enum: Open | Closed"
- id: get_zoom_position
label: Get Zoom Position
kind: query
command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"optics.zoom.position"}}'
params: []
- id: get_focus_position
label: Get Focus Position
kind: query
command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"optics.focus.position"}}'
params: []
- id: get_lensshift_horizontal
label: Get Lens Shift Horizontal
kind: query
command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"optics.lensshift.horizontal.position"}}'
params: []
- id: get_lensshift_vertical
label: Get Lens Shift Vertical
kind: query
command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"optics.lensshift.vertical.position"}}'
params: []
# --- Warp ---
- id: set_warp_enable
label: Enable/Disable Warp
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.warp.enable","value":<v>}}'
params:
- name: v
type: boolean
- id: set_warp_file_enable
label: Enable/Disable File Warp
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.warp.file.enable","value":<v>}}'
params:
- name: v
type: boolean
- id: set_warp_file_selected
label: Select Warp File
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.warp.file.selected","value":"<filename>"}}'
params:
- name: filename
type: string
description: "Warp grid file name (e.g. 'warp.xml'); MCM500/400 format"
- id: upload_warp_file
label: Upload Warp Grid File
kind: action
command: 'curl -X POST -F file=@warp.xml http://<projector-ip>/api/image/processing/warp/file/transfer'
params:
- name: projector-ip
type: string
description: Projector IP address
notes: "HTTP file endpoint. -X POST implied with -F."
- id: download_warp_file
label: Download Warp Grid File
kind: action
command: 'curl -O -J http://<projector-ip>/api/image/processing/warp/file/transfer'
params:
- name: projector-ip
type: string
notes: "Current grid; or append /<filename> for a specific file."
# --- Blend ---
- id: set_blend_file_enable
label: Enable/Disable File Blend
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.blend.file.enable","value":<v>}}'
params:
- name: v
type: boolean
- id: set_blend_file_selected
label: Select Blend File(s)
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.blend.file.selected","value":["<file>"]}}'
params:
- name: file
type: array
description: Array of selected blend file names
- id: upload_blend_mask
label: Upload Blend Mask
kind: action
command: 'curl -X POST -F file=@mask.png http://<projector-ip>/api/image/processing/blend/file/transfer'
params:
- name: projector-ip
type: string
notes: "Grayscale PNG (up to 16 bit) / JPEG / TIFF. Only blue channel used if color. Size per projector resolution (WUXGA 1920x1200, WQXGA 1280x800, 4K 1280x800, 4K Cinemascope 1280x540)."
# --- Black level ---
- id: set_blacklevel_file_enable
label: Enable/Disable Black Level Correction
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.blacklevel.file.enable","value":<v>}}'
params:
- name: v
type: boolean
- id: set_blacklevel_file_selected
label: Select Black Level File
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.blacklevel.file.selected","value":"<filename>"}}'
params:
- name: filename
type: string
- id: upload_blacklevel_mask
label: Upload Black Level Mask
kind: action
command: 'curl -X POST -F file=@blacklevel.png http://<projector-ip>/api/image/processing/blacklevel/file/transfer'
params:
- name: projector-ip
type: string
notes: "Grayscale PNG/JPEG/TIFF; same size table as blend masks."
# --- DMX ---
- id: dmx_listchannels
label: List DMX Channels
kind: query
command: '{"jsonrpc":"2.0","method":"dmx.listchannels"}'
params: []
notes: "Returns available channel names. Extended mode exposes more channels."
- id: dmx_listmodes
label: List DMX Modes
kind: query
command: '{"jsonrpc":"2.0","method":"dmx.listmodes"}'
params: []
- id: set_dmx_mode
label: Set DMX Mode
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"dmx.mode","value":"<v>"}}'
params:
- name: v
type: string
- id: set_dmx_startchannel
label: Set DMX Start Channel
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"dmx.startchannel","value":<v>}}'
params:
- name: v
type: integer
description: "Range 1..512"
- id: set_dmx_shutdown
label: Set DMX Shutdown
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"dmx.shutdown","value":<v>}}'
params:
- name: v
type: boolean
# --- System state enable flags ---
- id: set_standby_enable
label: Enable/Disable Standby State
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"system.standby.enable","value":<v>}}'
params:
- name: v
type: boolean
notes: "Check availability first."
- id: set_eco_enable
label: Enable/Disable ECO State
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"system.eco.enable","value":<v>}}'
params:
- name: v
type: boolean
notes: "Check availability first."
# --- Environment / diagnostics ---
- id: environment_getcontrolblocks
label: Get Environment Control Blocks
kind: query
command: '{"jsonrpc":"2.0","method":"environment.getcontrolblocks","params":{"type":"<type>","valuetype":"<valuetype>"}}'
params:
- name: type
type: string
description: "Enum: Sensor | Filter | Controller | Actuator | Alarm | GenericBlock"
- name: valuetype
type: string
description: "Enum: Temperature | Speed | PWM | Voltage | Current | Power | Altitude | Pressure | Humidity | ADC | Coordinate | Peltier | Waveform | Average | Delay | Difference | Interpolation | Limit | Median | Noise | Weighting | Comparison | Threshold | Formula | Driver | PID | Mode | State | Pump | Resistance | Simulation | Constant | Manual | Range | Any"
notes: "Returns dict of sensor->reading (e.g. temperatures, fan tachos)."
- id: get_system_state
label: Get System State
kind: query
command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"system.state"}}'
params: []
- id: get_illumination_state
label: Get Illumination State
kind: query
command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"illumination.state"}}'
params: []
- id: get_alarm_state
label: Get Alarm State
kind: query
command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"environment.alarmstate"}}'
params: []
- id: environment_getalarminfo
label: Get Alarm Info
kind: query
command: '{"jsonrpc":"2.0","method":"environment.getalarminfo"}'
params: []
notes: "Returns array of {severity, timestamp, source, description, custommessage}."
- id: get_connector_detectedsignal
label: Get Connector Detected Signal
kind: query
command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"image.connector.<name>.detectedsignal"}}'
params:
- name: name
type: string
description: "Connector object name, lowercased (e.g. 'displayport1', 'l1hdmi')"
notes: "Returns active bool + timing/color info; disregard if active=false."
# --- Network ---
- id: get_network_ip4config
label: Get LAN IPv4 Config
kind: query
command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"network.device.lan.ip4config"}}'
params: []
- id: get_network_state
label: Get LAN State
kind: query
command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"network.device.lan.state"}}'
params: []
# --- Firmware ---
- id: firmware_listcomponents
label: List Firmware Components
kind: query
command: '{"jsonrpc":"2.0","method":"firmware.listcomponents"}'
params: []
- id: firmware_listcomponentversionstatus
label: List Firmware Version Status
kind: query
command: '{"jsonrpc":"2.0","method":"firmware.listcomponentversionstatus"}'
params: []
notes: "Returns components with {name, versions{available,running}, status: Unknown|OK|Upgradable}."
- id: firmware_schedulecomponentupgrade
label: Schedule Component Upgrade
kind: action
command: '{"jsonrpc":"2.0","method":"firmware.schedulecomponentupgrade"}'
params: []
notes: "Forces a component upgrade at next reboot."
Feedbacks
- id: system_state
type: enum
values: ["boot", "eco", "standby", "ready", "conditioning", "on", "deconditioning", "service", "error"]
source_property: system.state
- id: illumination_state
type: enum
values: ["On", "Off"]
source_property: illumination.state
- id: active_source
type: string
source_property: image.window.main.source
- id: laser_power
type: float
source_property: illumination.sources.laser.power
- id: alarm_state
type: enum
values: ["Fatal", "Error", "Alert", "Warning", "Ok"]
source_property: environment.alarmstate
- id: network_lan_state
type: enum
values: ["CONNECTED", "DISCONNECTED"]
source_property: network.device.lan.state
- id: shutter_position
type: enum
values: ["Open", "Closed"]
source_property: optics.shutter.position
- id: connector_detectedsignal
type: object
source_property: image.connector.<name>.detectedsignal
notes: "active, name, resolution/timing, color_space, chroma_sampling, gamma_type, etc."
Variables
- id: brightness
property: image.brightness
type: float
min: -1
max: 1
step_size: 1
precision: 0.01
default: 0
access: read_write
- id: contrast
property: image.contrast
type: float
min: 0
max: 2
step_size: 1
precision: 0.01
default: 1
access: read_write
- id: gamma
property: image.gamma
type: float
min: 1
max: 3
step_size: 1
precision: 0.1
default: 2.2
access: read_write
- id: saturation
property: image.saturation
type: float
min: 0
max: 2
step_size: 1
precision: 0.01
default: 1
access: read_write
- id: sharpness
property: image.sharpness
type: integer
min: -2
max: 8
step_size: 1
precision: 1
access: read_write
- id: laser_power
property: illumination.sources.laser.power
type: float
unit: percent
access: read_write
# UNRESOLVED: absolute min/max not fixed; minpower/maxpower are dynamic per source/lens
- id: dmx_startchannel
property: dmx.startchannel
type: integer
min: 1
max: 512
access: read_write
Events
# Unsolicited JSON-RPC notifications (no id, no response to return).
- id: property_changed
method: property.changed
description: "Pushed when a subscribed property value changes. params.property = array of {<property>: <value>} pairs. Two notifications may fire on source change (deselect old, select new)."
- id: signal_callback
method: signal.callback
description: "Pushed when a subscribed signal is emitted. params.signal = array of {<signal>: {args}}."
- id: modelupdated
method: modelupdated
description: "Signal: object structure changed (objects added/removed). Subscribe via signal.subscribe."
Macros
# Source: Power-on best-practice sequence (programmers guide)
- id: poweron_safe
label: Safe Power-On
steps:
- get_system_state # verify standby or ready
- system_poweron # issue only if in standby/ready
notes: "If already on or in transition, system.poweron is a no-op."
# Source: Warp grid activation sequence (warping chapter)
- id: warp_file_activate
label: Activate Uploaded Warp File
steps:
- upload_warp_file # HTTP POST grid to /api/image/processing/warp/file/transfer
- set_warp_file_selected # property.set ...file.selected
- set_warp_file_enable # property.set ...file.enable = true
- set_warp_enable # property.set ...warp.enable = true (global)
# Source: Blend mask activation sequence
- id: blend_file_activate
label: Activate Uploaded Blend Mask
steps:
- upload_blend_mask # HTTP POST to /api/image/processing/blend/file/transfer
- set_blend_file_selected
- set_blend_file_enable # ...blend.file.enable = true
# Source: Black-level mask activation sequence
- id: blacklevel_file_activate
label: Activate Uploaded Black-Level Mask
steps:
- upload_blacklevel_mask # HTTP POST to /api/image/processing/blacklevel/file/transfer
- set_blacklevel_file_selected
- set_blacklevel_file_enable # ...blacklevel.file.enable = true
Safety
confirmation_required_for: []
interlocks: []
# Power-on/off are no-ops during state transitions; source recommends verifying
# system.state before issuing system.poweron (expect standby/ready) or
# system.poweroff (expect on). No explicit safety interlock procedure documented.
# <!-- UNRESOLVED: no interlock / power-sequencing / lamp-cooldown safety procedure stated in source -->
Notes
- Pulse API is JSON-RPC 2.0 over TCP:9090 and RS-232 (19200/8/N/1/none). Same command set on both. JSON-RPC request
idis the client request identifier (string or number); omitted from command templates above. - Property order is irrelevant (params passed by name).
- Best practice: wait for
property.setconfirmation before re-setting the same property (flooding reduces performance). - API is partly dynamic: available objects/properties depend on peripherals and config (e.g. motorized zoom lens, DMX extended mode). Use
introspectto discover the exact runtime API of a specific unit. - Source name -> object name transform: strip non-word chars, lowercase (e.g.
DisplayPort 1->displayport1). - Source: wake-from-ECO options are WoL (MAC), IR/panel power button, or serial ASCII
:POWR1\r.
Spec built. Pulse JSON-RPC API — TCP:9090 + RS-232 19200/8/N/1 + HTTP file endpoints. ~60 actions covering power, sources, image, illumination, optics, warp/blend/blacklevel, DMX, firmware, environment. Power-on/warp/blend/blacklevel macros from programmers-guide sequences. Unresolved markers: model identity confirmation, firmware compat, API version, per-model source lists, dynamic laser power bounds.
## Provenance
```yaml
source_domains:
- audiogeneral.com
source_urls:
- "https://www.audiogeneral.com/barco/UDX%20Series/JSON_ReferenceGuide.pdf"
retrieved_at: 2026-08-09T18:10:36.504Z
last_checked_at: 2026-08-19T08:38:27.737Z
Verification Summary
verdict: verified
checked_at: 2026-08-19T08:38:27.737Z
matched_actions: 71
action_count: 71
confidence: medium
summary: "All 71 spec actions map to JSON-RPC methods or HTTP endpoints documented in the Pulse API catalog; transport parameters verbatim. (7 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "source is a generic Pulse API catalog; exact model/family confirmation, firmware compatibility, and full per-model source/connector lists not stated."
- "absolute min/max not fixed; minpower/maxpower are dynamic per source/lens"
- "no interlock / power-sequencing / lamp-cooldown safety procedure stated in source"
- "model identity — source is a generic Barco Pulse API catalog and does not name \"HDX Input 3G-DVI-RGBHV\" explicitly; model mapping assumed from device/file name."
- "firmware version compatibility not stated in source."
- "protocol/API version number not stated in source."
- "exact per-model source/connector lists vary; only example lists documented."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0