# Configuring Web API Queries

ActiveReports provides a Visual Studio integrated report designer, rich controls to create and modify reports, and interactive report viewers to preview the reports.

## Content



### General

Once you have configured a valid [JSON Web API data source](/activereportsnet/docs/v19.2/report-authors/using-report-wizard/configuring-data-source/web-api-data-source), the **Configure JSON Queries** screen allows you to add one or more queries to the JSON data retrieved by the data source.

![Configure JSON Queries](https://cdn.mescius.io/document-site-files/images/b298aea2-8cb8-4a0f-be88-4f54aa263ebd/images/configure-web-api-queries.png)

### Adding and Removing Queries

You can add and remove Queries by using the **Add** and **Remove** buttons below the list on the left side of the screen. At least one query is required to complete proceed to the next steps.

### Configuring Queries

Each query has the **Name** property that is the unique ID of the query and the **Path** property that is a **JSON Path expression** that is used to select the repeating nodes from the JSON data to visualize them in a report.

You can set the **Path** in the JSON data tree by clicking the corresponding node or you can enter the **Path** manually in the **Query** textbox. Here are several examples of JSON Path Expressions.

*   If the JSON data is an array, and you want to select all nodes from that array, you can use the expression **$.[\*\]**, as shown in the screenshot above.
*   If you want to select data from a specific property within an object, such as selecting a customer's orders, you can use an expression like **$.orders[\*\]**.
*   If you want to filter the data by a specific field, you can use an expression like **$.[?(@.country == 'USA')\]**.
*   For more examples, you can check the original [JSON Path specification](https://web.archive.org/web/20070911145032/https://goessner.net/articles/JsonPath/).

### Dynamic queries

You could also make a query dynamic by using parameters in the path expression. Parameters are dynamic values that are either supplied programmatically via your application's code or provided by the report reader through user input. To insert a parameter into a path expression, click the **Insert parameter...** link below the **Query** textbox. The **Parameters** dialog will appear:

![Configure Dynamic Queries](https://cdn.mescius.io/document-site-files/images/b298aea2-8cb8-4a0f-be88-4f54aa263ebd/images/configure-web-api-queries-parameter.png)

Here, you can re-use an existing parameter or create a new one by clicking the **Add** button. The following parameter properties can be configured:

*   **Name**: The parameter name used as a reference in query. You’ll need this name to supply its value via code if you choose to do so.
*   **Type**: The data type of the parameter. You can select from **Boolean**, **DateTime**, **Integer**, **Float**, and **String**.
*   **Testing Value**: The value used at design-time to test the query.
*   **Input Source**: Choose **Programmatic** to supply the parameter values via your application code, or **Interactive** to allow report readers to provide the parameter values.

Once you click the **OK** button, the reference to the selected parameter will be inserted into the path expression. For example, it will be updated to **$.[?(@.country == {country})\]**, which filters the data by country using a dynamic value.

### Next steps

Once you have configured one or more queries, click **Finish >>** to create a report with data binding configured, or click **Next >** to add a [data display control](/activereportsnet/docs/v19.2/report-authors/using-report-wizard/configuring-report-controls).