Skip to content
ReportShell ReportShell Documentation

Input Controls REST API

These endpoints power dynamic parameter forms in the ReportShell frontend viewer or any custom web viewer by exposing JasperReports parameter metadata parsed from the JRXML.

GET /v1/reports/{reportKey}/controls
GET /v1/controls/{*reportKey}

Returns the list of input controls for the specified report.

Array<ControlMetadata>

If report does not have any input controls, an empty array is returned.

PropertyTypeDescription
parameterStringThe unique identifier for the parameter.
labelString?User-friendly display label for the control.
dataTypeStringData type of the parameter (e.g., String, Integer, Date).
dependsOnArray<String>List of parent parameters that this control depends on. Empty array if for no dependencies.
hiddenBooleanIndicates if the control should be hidden in the UI.
requiredBooleanIndicates if a value is mandatory.
multiBooleanIndicates if multiple values can be selected.
choiceBooleanIndicates if the control presents a set of choices (dropdown/list).
choiceWidgetString?Specifies the UI widget type for choice parameters (e.g., SELECT, RADIO).
[
{
"parameter": "createdAfter",
"label": "Created After",
"dataType": "Date",
"dependsOn": [],
"hidden": false,
"required": false,
"multi": false,
"choice": false
},
{
"parameter": "city",
"label": "City",
"dataType": "Integer",
"dependsOn": [],
"hidden": false,
"required": false,
"multi": true,
"choice": true,
"choiceWidget": "SELECT"
},
...
]

404 Not Found: If the report does not exist

GET /v1/reports/{reportKey}/control-states
GET /v1/control-states/{*reportKey}

Returns the values and data sets for input controls of the specified report. On first load (without rs.onchange parameter), it evaluates default values and loads data sets of parent controls which don’t depend on any other controls or child controls whose parent controls have a provided or default value.

When called with a rs.onchange parameter, it loads the child controls of the changed controls and re-evaluates the currently selected values of those child controls, removing any invalid values based on the parent’s current value.

The endpoint takes report parameters for input controls as described in the REST API Overview and an optional rs.onchange parameter as described above.

GET /v1/reports/{reportKey}/control-states?param1=foo&param2=bar&rs.null=param3

This initial request sets values for param1, param2 and param3. For any other control, if the parameter specifies a default value expression it is evaluated. Then, data sets for controls that specify a query or list of values are loaded. For child controls, if the parent control has a specified value (including null), the child control’s data set is loaded. Any invalid values based on loaded data sets are removed for controls that have a data set.

GET /v1/reports/{reportKey}/control-states?param1=foo&param2=bar&rs.null=param3&rs.onchange=param1

This request is similar to the initial request, but only child controls that depend on param1 are loaded and re-evaluated. Any invalid values based on loaded data sets are removed for the child controls.

Array<ControlState>

If report does not have any input controls, an empty array is returned.

PropertyTypeDescription
parameterStringThe name of the associated control parameter.
valueString? | Array<String>? | nullCurrent value of the control.
optionsArray<Option>The options for the control.
errorControlLoadError?Any validation errors for the control.
PropertyTypeDescription
valueStringThe value of the option.
columnsArray<String>The columns to be used as the display label of the option.
PropertyTypeDescription
messageStringThe error message.

© 2026 Bivektor Inc. All rights reserved. ReportShell™ is a trademark of Bivektor, Inc.
Questions? Email us at reportshell@bivektor.com.


JasperReports® and Jaspersoft® are trademarks of Cloud Software Group, Inc. and/or its subsidiaries. Eclipse BIRT™ and BIRT™ are trademarks of the Eclipse Foundation. Spring® is a trademark of Broadcom Inc. and/or its subsidiaries. React is a trademark of Meta Platforms, Inc. ReportShell and Bivektor, Inc. are not affiliated with, endorsed by, sponsored by or otherwise associated with the owners of the JasperReports®, Jaspersoft®, Spring®, Eclipse BIRT™, BIRT™ or React marks. Any reference to these or other trademarks on this site is made solely for informational, descriptive, comparative and interoperability purposes.