Summary

Barco Pulse projector control spec covering JSON-RPC over TCP/IP and RS-232, plus HTTP file endpoints. API supports power, source routing, illumination, image processing, optics, DMX, environment monitoring, firmware management, properties, subscriptions, and introspection.

Transport

protocols:
  - tcp
  - serial
  - http
addressing:
  port: 9090
  base_url: "http://{projector-address}/api"
serial:
  baud_rate: 19200
  data_bits: 8
  parity: none
  stop_bits: 1
  flow_control: none
auth:
  type: passcode
  required_for: elevated_access
  normal_user_auth_required: false
  credential:
    name: code
    type: integer
    value: null  # UNRESOLVED: secret pass code is installation-specific

Traits

- powerable
- routable
- queryable
- levelable

Actions

- id: authenticate
  label: Authenticate Session
  kind: action
  command: '{"jsonrpc":"2.0","method":"authenticate","params":{"code":{code}},"id":{id}}'
  params:
    - name: code
      type: integer
      description: Secret pass code
    - name: id
      type: integer
      description: Request identifier

- id: invoke_method
  label: Invoke Named Method
  kind: action
  command: '{"jsonrpc":"2.0","method":"{method}","params":{params},"id":{id}}'
  params:
    - name: method
      type: string
      description: Dot-notation method name
    - name: params
      type: object
      description: Named method parameters
    - name: id
      type: integer
      description: Request identifier

- id: property_set
  label: Set Property
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"{property}","value":{value}},"id":{id}}'
  params:
    - name: property
      type: string
      description: Dot-notation property name
    - name: value
      type: any
      description: Property value
    - name: id
      type: integer
      description: Request identifier

- id: property_get
  label: Read Property
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"{property}"},"id":{id}}'
  params:
    - name: property
      type: string
      description: Dot-notation property name
    - name: id
      type: integer
      description: Request identifier

- id: properties_get
  label: Read Multiple Properties
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":{properties}},"id":{id}}'
  params:
    - name: properties
      type: array
      items: string
      description: Dot-notation property names
    - name: id
      type: integer
      description: Request identifier

- id: property_subscribe
  label: Subscribe to Property
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.subscribe","params":{"property":"{property}"},"id":{id}}'
  params:
    - name: property
      type: string
      description: Dot-notation property name
    - name: id
      type: integer
      description: Request identifier

- id: properties_subscribe
  label: Subscribe to Multiple Properties
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.subscribe","params":{"property":{properties}},"id":{id}}'
  params:
    - name: properties
      type: array
      items: string
      description: Dot-notation property names
    - name: id
      type: integer
      description: Request identifier

- id: property_unsubscribe
  label: Unsubscribe from Property
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.unsubscribe","params":{"property":"{property}"},"id":{id}}'
  params:
    - name: property
      type: string
      description: Dot-notation property name
    - name: id
      type: integer
      description: Request identifier

- id: properties_unsubscribe
  label: Unsubscribe from Multiple Properties
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.unsubscribe","params":{"property":{properties}},"id":{id}}'
  params:
    - name: properties
      type: array
      items: string
      description: Dot-notation property names
    - name: id
      type: integer
      description: Request identifier

- id: signal_subscribe
  label: Subscribe to Signal
  kind: action
  command: '{"jsonrpc":"2.0","method":"signal.subscribe","params":{"signal":"{signal}"},"id":{id}}'
  params:
    - name: signal
      type: string
      description: Dot-notation signal name
    - name: id
      type: integer
      description: Request identifier

- id: signals_subscribe
  label: Subscribe to Multiple Signals
  kind: action
  command: '{"jsonrpc":"2.0","method":"signal.subscribe","params":{"signal":{signals}},"id":{id}}'
  params:
    - name: signals
      type: array
      items: string
      description: Dot-notation signal names
    - name: id
      type: integer
      description: Request identifier

- id: signal_unsubscribe
  label: Unsubscribe from Signal
  kind: action
  command: '{"jsonrpc":"2.0","method":"signal.unsubscribe","params":{"signal":"{signal}"},"id":{id}}'
  params:
    - name: signal
      type: string
      description: Dot-notation signal name
    - name: id
      type: integer
      description: Request identifier

- id: signals_unsubscribe
  label: Unsubscribe from Multiple Signals
  kind: action
  command: '{"jsonrpc":"2.0","method":"signal.unsubscribe","params":{"signal":{signals}},"id":{id}}'
  params:
    - name: signals
      type: array
      items: string
      description: Dot-notation signal names
    - name: id
      type: integer
      description: Request identifier

- id: introspect_recursive
  label: Introspect Object Recursively
  kind: query
  command: '{"jsonrpc":"2.0","method":"introspect","params":{"object":"{object}","recursive":true},"id":{id}}'
  params:
    - name: object
      type: string
      description: Object name; empty value introspects everything
    - name: id
      type: integer
      description: Request identifier

- id: introspect_non_recursive
  label: Introspect Object Non-Recursively
  kind: query
  command: '{"jsonrpc":"2.0","method":"introspect","params":{"object":"{object}","recursive":false},"id":{id}}'
  params:
    - name: object
      type: string
      description: Object name
    - name: id
      type: integer
      description: Request identifier

- id: system_power_on
  label: Power On
  kind: action
  command: '{"jsonrpc":"2.0","method":"system.poweron"}'
  params: []

- id: system_power_off
  label: Power Off
  kind: action
  command: '{"jsonrpc":"2.0","method":"system.poweroff"}'
  params: []

- id: serial_eco_wake
  label: Wake from ECO over RS-232
  kind: action
  command: ":POWR1\r"
  params: []

- id: system_state_get
  label: Read Projector State
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"system.state"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: system_state_subscribe
  label: Subscribe to Projector State
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.subscribe","params":{"property":"system.state"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: active_source_get
  label: Read Active Source
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"image.window.main.source"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: active_source_set
  label: Set Active Source
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.window.main.source","value":"{source}"},"id":{id}}'
  params:
    - name: source
      type: string
      description: Name returned by image.source.list
    - name: id
      type: integer
      description: Request identifier

- id: active_source_subscribe
  label: Subscribe to Active Source
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.subscribe","params":{"property":"image.window.main.source"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: image_source_list
  label: List Available Sources
  kind: query
  command: '{"jsonrpc":"2.0","method":"image.source.list","id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: image_connector_list
  label: List Available Connectors
  kind: query
  command: '{"jsonrpc":"2.0","method":"image.connector.list","id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: source_connectors_list
  label: List Connectors for Source
  kind: query
  command: '{"jsonrpc":"2.0","method":"image.source.{source_object}.listconnectors","id":{id}}'
  params:
    - name: source_object
      type: string
      description: Lowercase source name with non-word characters removed
    - name: id
      type: integer
      description: Request identifier

- id: connector_signal_get
  label: Read Connector Signal
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"image.connector.{connector_object}.detectedsignal"},"id":{id}}'
  params:
    - name: connector_object
      type: string
      description: Lowercase connector name with non-word characters removed
    - name: id
      type: integer
      description: Request identifier

- id: connector_signal_subscribe
  label: Subscribe to Connector Signal
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.subscribe","params":{"property":"image.connector.{connector_object}.detectedsignal"},"id":{id}}'
  params:
    - name: connector_object
      type: string
      description: Lowercase connector name with non-word characters removed
    - name: id
      type: integer
      description: Request identifier

- id: illumination_state_get
  label: Read Illumination State
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"illumination.state"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: illumination_state_subscribe
  label: Subscribe to Illumination State
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.subscribe","params":{"property":"illumination.state"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: illumination_sources_introspect
  label: List Illumination Sources
  kind: query
  command: '{"jsonrpc":"2.0","method":"introspect","params":{"object":"illumination.sources","recursive":false},"id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: laser_power_get
  label: Read Laser Power
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"illumination.sources.laser.power"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: laser_power_set
  label: Set Laser Power
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"illumination.sources.laser.power","value":{power}},"id":{id}}'
  params:
    - name: power
      type: float
      description: Target illumination power percentage
    - name: id
      type: integer
      description: Request identifier

- id: laser_power_subscribe
  label: Subscribe to Laser Power
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.subscribe","params":{"property":"illumination.sources.laser.power"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: laser_min_power_get
  label: Read Minimum Laser Power
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"illumination.sources.laser.minpower"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: laser_max_power_get
  label: Read Maximum Laser Power
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"illumination.sources.laser.maxpower"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: image_brightness_get
  label: Read Brightness
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"image.brightness"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: image_brightness_set
  label: Set Brightness
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.brightness","value":{brightness}},"id":{id}}'
  params:
    - name: brightness
      type: float
      minimum: -1
      maximum: 1
      precision: 0.01
    - name: id
      type: integer
      description: Request identifier

- id: image_brightness_subscribe
  label: Subscribe to Brightness
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.subscribe","params":{"property":"image.brightness"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: image_contrast_get
  label: Read Contrast
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"image.contrast"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: image_contrast_set
  label: Set Contrast
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.contrast","value":{contrast}},"id":{id}}'
  params:
    - name: contrast
      type: float
      minimum: 0
      maximum: 2
      precision: 0.01
    - name: id
      type: integer
      description: Request identifier

- id: image_gamma_get
  label: Read Gamma
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"image.gamma"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: image_gamma_set
  label: Set Gamma
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.gamma","value":{gamma}},"id":{id}}'
  params:
    - name: gamma
      type: float
      minimum: 1
      maximum: 3
      precision: 0.1
    - name: id
      type: integer
      description: Request identifier

- id: image_saturation_get
  label: Read Saturation
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"image.saturation"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: image_saturation_set
  label: Set Saturation
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.saturation","value":{saturation}},"id":{id}}'
  params:
    - name: saturation
      type: float
      minimum: 0
      maximum: 2
      precision: 0.01
    - name: id
      type: integer
      description: Request identifier

- id: image_sharpness_get
  label: Read Sharpness
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"image.sharpness"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: image_sharpness_set
  label: Set Sharpness
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.sharpness","value":{sharpness}},"id":{id}}'
  params:
    - name: sharpness
      type: integer
      minimum: -2
      maximum: 8
    - name: id
      type: integer
      description: Request identifier

- id: image_orientation_get
  label: Read Orientation
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"image.orientation"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: image_orientation_set
  label: Set Orientation
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.orientation","value":"{orientation}"},"id":{id}}'
  params:
    - name: orientation
      type: enum
      values:
        - DESKTOP_FRONT
        - DESKTOP_REAR
        - CEILING_FRONT
        - CEILING_REAR
    - name: id
      type: integer
      description: Request identifier

- id: window_position_get
  label: Read Window Position
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"image.window.main.position"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: window_position_set
  label: Set Window Position
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.window.main.position","value":{"x":{x},"y":{y}}},"id":{id}}'
  params:
    - name: x
      type: integer
    - name: y
      type: integer
    - name: id
      type: integer
      description: Request identifier

- id: window_size_get
  label: Read Window Size
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"image.window.main.size"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: window_size_set
  label: Set Window Size
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.window.main.size","value":{"width":{width},"height":{height}}},"id":{id}}'
  params:
    - name: width
      type: integer
    - name: height
      type: integer
    - name: id
      type: integer
      description: Request identifier

- id: window_scaling_mode_get
  label: Read Window Scaling Mode
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"image.window.main.scalingmode"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: window_scaling_mode_set
  label: Set Window Scaling Mode
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.window.main.scalingmode","value":"{mode}"},"id":{id}}'
  params:
    - name: mode
      type: enum
      values:
        - Fill
        - OneToOne
        - FillScreen
        - Stretch
    - name: id
      type: integer
      description: Request identifier

- id: warp_enable_set
  label: Enable or Disable Warp
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.warp.enable","value":{enabled}},"id":{id}}'
  params:
    - name: enabled
      type: boolean
    - name: id
      type: integer
      description: Request identifier

- id: warp_file_upload
  label: Upload Warp File
  kind: action
  command: 'curl -X POST -F file=@{file} http://{projector-address}/api/image/processing/warp/file/transfer'
  params:
    - name: file
      type: string
      description: Local warp XML file
    - name: projector-address
      type: string
      description: Projector network address

- id: warp_file_select
  label: Select Warp File
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.warp.file.selected","value":"{filename}"},"id":{id}}'
  params:
    - name: filename
      type: string
    - name: id
      type: integer
      description: Request identifier

- id: warp_file_enable
  label: Enable or Disable Warp File
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.warp.file.enable","value":{enabled}},"id":{id}}'
  params:
    - name: enabled
      type: boolean
    - name: id
      type: integer
      description: Request identifier

- id: blend_file_upload
  label: Upload Blend Mask
  kind: action
  command: 'curl -X POST -F file=@{file} http://{projector-address}/api/image/processing/blend/file/transfer'
  params:
    - name: file
      type: string
      description: Local PNG, JPEG, or TIFF image
    - name: projector-address
      type: string
      description: Projector network address

- id: blend_file_select
  label: Select Blend File
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.blend.file.selected","value":"{filename}"},"id":{id}}'
  params:
    - name: filename
      type: string
    - name: id
      type: integer
      description: Request identifier

- id: blend_file_enable
  label: Enable or Disable Blend File
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.blend.file.enable","value":{enabled}},"id":{id}}'
  params:
    - name: enabled
      type: boolean
    - name: id
      type: integer
      description: Request identifier

- id: blacklevel_file_upload
  label: Upload Black-Level Mask
  kind: action
  command: 'curl -X POST -F file=@{file} http://{projector-address}/api/image/processing/blacklevel/file/transfer'
  params:
    - name: file
      type: string
      description: Local PNG, JPEG, or TIFF image
    - name: projector-address
      type: string
      description: Projector network address

- id: blacklevel_file_select
  label: Select Black-Level File
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.blacklevel.file.selected","value":"{filename}"},"id":{id}}'
  params:
    - name: filename
      type: string
    - name: id
      type: integer
      description: Request identifier

- id: blacklevel_file_enable
  label: Enable or Disable Black-Level File
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.blacklevel.file.enable","value":{enabled}},"id":{id}}'
  params:
    - name: enabled
      type: boolean
    - name: id
      type: integer
      description: Request identifier

- id: dmx_mode_get
  label: Read DMX Mode
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"dmx.mode"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: dmx_mode_set
  label: Set DMX Mode
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"dmx.mode","value":"{mode}"},"id":{id}}'
  params:
    - name: mode
      type: string
    - name: id
      type: integer
      description: Request identifier

- id: dmx_start_channel_get
  label: Read DMX Start Channel
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"dmx.startchannel"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: dmx_start_channel_set
  label: Set DMX Start Channel
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"dmx.startchannel","value":{channel}},"id":{id}}'
  params:
    - name: channel
      type: integer
      minimum: 1
      maximum: 512
    - name: id
      type: integer
      description: Request identifier

- id: dmx_shutdown_get
  label: Read DMX Shutdown Setting
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"dmx.shutdown"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: dmx_shutdown_set
  label: Set DMX Shutdown
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"dmx.shutdown","value":{enabled}},"id":{id}}'
  params:
    - name: enabled
      type: boolean
    - name: id
      type: integer
      description: Request identifier

- id: dmx_list_channels
  label: List DMX Channels
  kind: query
  command: '{"jsonrpc":"2.0","method":"dmx.listchannels","id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: dmx_list_modes
  label: List DMX Modes
  kind: query
  command: '{"jsonrpc":"2.0","method":"dmx.listmodes","id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: network_ipv4_config_get
  label: Read LAN IPv4 Configuration
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"network.device.lan.ip4config"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: network_lan_state_get
  label: Read LAN State
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"network.device.lan.state"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: shutter_position_get
  label: Read Shutter Position
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"optics.shutter.position"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: shutter_target_get
  label: Read Shutter Target
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"optics.shutter.target"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: shutter_target_set
  label: Set Shutter Target
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"optics.shutter.target","value":"{target}"},"id":{id}}'
  params:
    - name: target
      type: enum
      values:
        - Open
        - Closed
    - name: id
      type: integer
      description: Request identifier

- id: zoom_position_get
  label: Read Zoom Position
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"optics.zoom.position"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: zoom_position_set
  label: Set Zoom Position
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"optics.zoom.position","value":{position}},"id":{id}}'
  params:
    - name: position
      type: integer
    - name: id
      type: integer
      description: Request identifier

- id: focus_position_get
  label: Read Focus Position
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"optics.focus.position"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: focus_position_set
  label: Set Focus Position
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"optics.focus.position","value":{position}},"id":{id}}'
  params:
    - name: position
      type: integer
    - name: id
      type: integer
      description: Request identifier

- id: lens_shift_horizontal_get
  label: Read Horizontal Lens Shift
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"optics.lensshift.horizontal.position"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: lens_shift_horizontal_set
  label: Set Horizontal Lens Shift
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"optics.lensshift.horizontal.position","value":{position}},"id":{id}}'
  params:
    - name: position
      type: integer
    - name: id
      type: integer
      description: Request identifier

- id: lens_shift_vertical_get
  label: Read Vertical Lens Shift
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"optics.lensshift.vertical.position"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: lens_shift_vertical_set
  label: Set Vertical Lens Shift
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"optics.lensshift.vertical.position","value":{position}},"id":{id}}'
  params:
    - name: position
      type: integer
    - name: id
      type: integer
      description: Request identifier

- id: standby_enable_get
  label: Read Standby Enable
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"system.standby.enable"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: standby_enable_set
  label: Set Standby Enable
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"system.standby.enable","value":{enabled}},"id":{id}}'
  params:
    - name: enabled
      type: boolean
    - name: id
      type: integer
      description: Request identifier

- id: eco_enable_get
  label: Read ECO Enable
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"system.eco.enable"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: eco_enable_set
  label: Set ECO Enable
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"system.eco.enable","value":{enabled}},"id":{id}}'
  params:
    - name: enabled
      type: boolean
    - name: id
      type: integer
      description: Request identifier

- id: environment_alarm_state_get
  label: Read Environment Alarm State
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"environment.alarmstate"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: environment_control_blocks_get
  label: Read Environment Control Blocks
  kind: query
  command: '{"jsonrpc":"2.0","method":"environment.getcontrolblocks","params":{"type":"{type}","valuetype":"{value_type}"},"id":{id}}'
  params:
    - name: type
      type: enum
      values:
        - Sensor
        - Filter
        - Controller
        - Actuator
        - Alarm
        - GenericBlock
    - name: value_type
      type: string
      description: Documented sensor value type
    - name: id
      type: integer
      description: Request identifier

- id: environment_alarm_info_get
  label: Read Environment Alarm Information
  kind: query
  command: '{"jsonrpc":"2.0","method":"environment.getalarminfo","id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: firmware_components_list
  label: List Firmware Components
  kind: query
  command: '{"jsonrpc":"2.0","method":"firmware.listcomponents","id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: firmware_component_version_status_list
  label: List Firmware Component Version Status
  kind: query
  command: '{"jsonrpc":"2.0","method":"firmware.listcomponentversionstatus","id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: firmware_component_upgrade_schedule
  label: Schedule Firmware Component Upgrade
  kind: action
  command: '{"jsonrpc":"2.0","method":"firmware.schedulecomponentupgrade","params":{params},"id":{id}}'
  params:
    - name: params
      type: object
      description: "UNRESOLVED: method parameter schema not stated in source"
    - name: id
      type: integer
      description: Request identifier

- id: clo_engage
  label: Engage Constant Light Output
  kind: action
  command: '{"jsonrpc":"2.0","method":"illumination.clo.engage","id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: laser_serial_number_get
  label: Read Laser Serial Number
  kind: query
  command: '{"jsonrpc":"2.0","method":"illumination.laser.getserialnumber","id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: p7_copy_preset_to_custom
  label: Copy P7 Preset to Custom
  kind: action
  command: '{"jsonrpc":"2.0","method":"image.color.p7.custom.copypresettocustom","params":{"presetname":"{preset_name}"},"id":{id}}'
  params:
    - name: preset_name
      type: string
    - name: id
      type: integer
      description: Request identifier

- id: p7_reset_preset
  label: Reset P7 Preset
  kind: action
  command: '{"jsonrpc":"2.0","method":"image.color.p7.custom.resetpreset","params":{"presetname":"{preset_name}"},"id":{id}}'
  params:
    - name: preset_name
      type: string
    - name: id
      type: integer
      description: Request identifier

- id: p7_reset_to_native
  label: Reset P7 to Native
  kind: action
  command: '{"jsonrpc":"2.0","method":"image.color.p7.custom.resettonative","id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

- id: next_rgb_mode
  label: Select Next RGB Mode
  kind: action
  command: '{"jsonrpc":"2.0","method":"image.color.rgbmode.nextrgbmode","id":{id}}'
  params:
    - name: id
      type: integer
      description: Request identifier

Feedbacks

- id: authentication_result
  source: authenticate
  type: boolean

- id: property_set_result
  source: property.set
  type: boolean

- id: property_value
  source: property.get
  type: any

- id: property_subscription_result
  source: property.subscribe
  type: boolean

- id: property_unsubscription_result
  source: property.unsubscribe
  type: boolean

- id: signal_subscription_result
  source: signal.subscribe
  type: boolean

- id: signal_unsubscription_result
  source: signal.unsubscribe
  type: boolean

- id: projector_state
  source: system.state
  type: enum
  values:
    - boot
    - eco
    - standby
    - ready
    - conditioning
    - "on"
    - service
    - deconditioning
    - error

- id: illumination_state
  source: illumination.state
  type: enum
  values:
    - "On"
    - "Off"

- id: active_source
  source: image.window.main.source
  type: string

- id: available_sources
  source: image.source.list
  type: array
  items: string

- id: available_connectors
  source: image.connector.list
  type: array
  items: string

- id: detected_signal
  source: image.connector.{connector_object}.detectedsignal
  type: object

- id: network_lan_state
  source: network.device.lan.state
  type: enum
  values:
    - CONNECTED
    - DISCONNECTED

- id: shutter_position
  source: optics.shutter.position
  type: enum
  values:
    - Open
    - Closed

- id: environment_alarm_state
  source: environment.alarmstate
  type: enum
  values:
    - Fatal
    - Error
    - Alert
    - Warning
    - Ok

- id: firmware_component_status
  source: firmware.listcomponentversionstatus
  type: enum
  values:
    - Unknown
    - OK
    - Upgradable

Variables

- id: active_source
  property: image.window.main.source
  type: string
  access: read_write

- id: illumination_state
  property: illumination.state
  type: enum
  values:
    - "On"
    - "Off"
  access: read

- id: laser_power
  property: illumination.sources.laser.power
  type: float
  unit: percent
  access: read_write

- id: laser_min_power
  property: illumination.sources.laser.minpower
  type: float
  unit: percent
  access: read

- id: laser_max_power
  property: illumination.sources.laser.maxpower
  type: float
  unit: percent
  access: read

- id: brightness
  property: image.brightness
  type: float
  minimum: -1
  maximum: 1
  precision: 0.01
  access: read_write

- id: contrast
  property: image.contrast
  type: float
  minimum: 0
  maximum: 2
  precision: 0.01
  access: read_write

- id: gamma
  property: image.gamma
  type: float
  minimum: 1
  maximum: 3
  precision: 0.1
  access: read_write

- id: saturation
  property: image.saturation
  type: float
  minimum: 0
  maximum: 2
  precision: 0.01
  access: read_write

- id: sharpness
  property: image.sharpness
  type: integer
  minimum: -2
  maximum: 8
  access: read_write

- id: orientation
  property: image.orientation
  type: enum
  values:
    - DESKTOP_FRONT
    - DESKTOP_REAR
    - CEILING_FRONT
    - CEILING_REAR
  access: read_write

- id: window_position
  property: image.window.main.position
  type: object
  access: read_write

- id: window_size
  property: image.window.main.size
  type: object
  access: read_write

- id: window_scaling_mode
  property: image.window.main.scalingmode
  type: enum
  values:
    - Fill
    - OneToOne
    - FillScreen
    - Stretch
  access: read_write

- id: warp_enabled
  property: image.processing.warp.enable
  type: boolean
  access: read_write

- id: warp_file_enabled
  property: image.processing.warp.file.enable
  type: boolean
  access: read_write

- id: warp_file_selected
  property: image.processing.warp.file.selected
  type: string
  access: read_write

- id: blend_file_enabled
  property: image.processing.blend.file.enable
  type: boolean
  access: read_write

- id: blend_files_selected
  property: image.processing.blend.file.selected
  type: array
  items: string
  access: read_write

- id: blacklevel_file_enabled
  property: image.processing.blacklevel.file.enable
  type: boolean
  access: read_write

- id: blacklevel_file_selected
  property: image.processing.blacklevel.file.selected
  type: string
  access: read_write

- id: dmx_mode
  property: dmx.mode
  type: string
  access: read_write

- id: dmx_start_channel
  property: dmx.startchannel
  type: integer
  minimum: 1
  maximum: 512
  access: read_write

- id: dmx_shutdown
  property: dmx.shutdown
  type: boolean
  access: read_write

- id: network_ipv4_configuration
  property: network.device.lan.ip4config
  type: object
  access: read

- id: network_lan_state
  property: network.device.lan.state
  type: enum
  values:
    - CONNECTED
    - DISCONNECTED
  access: read

- id: shutter_position
  property: optics.shutter.position
  type: enum
  values:
    - Open
    - Closed
  access: read

- id: shutter_target
  property: optics.shutter.target
  type: enum
  values:
    - Open
    - Closed
  access: read_write

- id: zoom_position
  property: optics.zoom.position
  type: integer
  access: read_write

- id: focus_position
  property: optics.focus.position
  type: integer
  access: read_write

- id: lens_shift_horizontal_position
  property: optics.lensshift.horizontal.position
  type: integer
  access: read_write

- id: lens_shift_vertical_position
  property: optics.lensshift.vertical.position
  type: integer
  access: read_write

- id: standby_enabled
  property: system.standby.enable
  type: boolean
  access: read_write

- id: eco_enabled
  property: system.eco.enable
  type: boolean
  access: read_write

- id: environment_alarm_state
  property: environment.alarmstate
  type: enum
  values:
    - Fatal
    - Error
    - Alert
    - Warning
    - Ok
  access: read

Events

- id: property_changed
  method: property.changed
  command: '{"jsonrpc":"2.0","method":"property.changed","params":{"property":{property_value_pairs}}}'
  description: Reports subscribed property changes; notification has no id and requires no response.

- id: signal_callback
  method: signal.callback
  command: '{"jsonrpc":"2.0","method":"signal.callback","params":{"signal":{signal_argument_pairs}}}'
  description: Reports subscribed signals; notification has no id and requires no response.

- id: model_updated
  signal: modelupdated
  description: Triggered when objects are added or removed.

- id: introspect_object_changed
  signal: introspect.objectchanged
  description: Reports object name and whether object is new or lost.

Macros

- id: activate_warp_file
  label: Upload and Activate Warp File
  steps:
    - action: warp_file_upload
    - action: warp_file_select
    - action: warp_file_enable

- id: activate_blend_mask
  label: Upload and Activate Blend Mask
  steps:
    - action: blend_file_upload
    - action: blend_file_select
    - action: blend_file_enable

- id: activate_blacklevel_mask
  label: Upload and Activate Black-Level Mask
  steps:
    - action: blacklevel_file_upload
    - action: blacklevel_file_select
    - action: blacklevel_file_enable

- id: wake_from_eco
  label: Wake Projector from ECO
  alternatives:
    - method: wake_on_lan
      requirement: Projector MAC address
    - action: serial_eco_wake

Safety

confirmation_required_for:
  - system_power_off
  - firmware_component_upgrade_schedule
interlocks:
  - action: system_power_on
    requirement: Verify system.state is standby or ready.
  - action: system_power_off
    requirement: Verify system.state is on.
  - action: property_set
    requirement: Wait for confirmation before setting same property again.
  - action: firmware_component_upgrade_schedule
    requirement: Upgrade occurs at following reboot.
  - action: wake_from_eco
    requirement: Use Wake-on-LAN, remote/keypad power, or RS-232 wake command while projector is in ECO mode.

Notes

Normal end-user access may skip authentication. Elevated access requires an authentication request containing secret pass code. JSON-RPC parameters are named and order-independent. Notifications contain no request ID and require no response.

API availability is dynamic and can depend on projector configuration and attached peripherals. Use recursive or non-recursive introspection to discover exact model API. Property subscription does not return current value; call property.get separately. Source changes may emit empty-source notification before newly selected source notification.

HTTP file endpoints support upload and, where available, download. Warp grid format matches MCM500/400. Blend and black-level masks accept PNG, JPEG, or TIFF; grayscale data is used, and blue channel is used for accepted color images.

Provenance

source_domains:
  - audiogeneral.com
source_urls:
  - "https://www.audiogeneral.com/barco/UDX%20Series/JSON_ReferenceGuide.pdf"
retrieved_at: 2026-07-14T18:18:40.311Z
last_checked_at: 2026-07-21T20:30:40.009Z

Verification Summary

verdict: verified
checked_at: 2026-07-21T20:30:40.009Z
matched_actions: 102
action_count: 102
confidence: medium
summary: "All 102 spec actions matched to wire-level tokens documented in source; all transport params verified (port 9090, 19200 baud, /api base path, authenticate method); spec comprehensively represents source capabilities. (4 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "protocol revision and model-specific API availability not stated in source."
- "secret pass code is installation-specific"
- "method parameter schema not stated in source\""
- "firmware compatibility range, protocol revision, authentication pass code, several method parameter schemas, property access modes not explicitly marked RW, and model-specific dynamic API surface are not fully stated in source."

From the AI4AV catalog (https://ai4av.net) · ODbL-1.0