REST — GetExecute
Use the GetExecute methods to execute reports in the API without opening an instance of Exago. If executing as text, that is HTML, CSV, or JSON, then the output data is returned directly in the ExecuteData property.
If executing as binary (that is PDF, RTF, or Excel workbook), then ExecuteData will return different responses depending on if Exago is running in a web-farm environment or not.
Not In a Web Farm | In a Web Farm |
---|---|
Either as:
| A base64 encoded representation of the output file.
To display the output data, process the information from the ExecuteData property and send it to the browser. |
All requests require a Session Id URL parameter and basic request headers. In the following topic, headers are omitted in the interest of brevity.
Since GetExecute does not load the full Exago user interface, report interactivity is not supported for these functions. However, the following Server Events are triggered by GetExecute in order to ensure that the data returned accurately reflects the report design:
- Global Event: OnReportExecuteInit
- Global Event: OnReportExecuteStart
- Global Event: OnReportExecuteEnd
- Global Event: OnAfterReportExportSuccess
Report JSON
The path to the report is passed as part of a JSON object, with optional sorts and filters. Any sorts and filters are added only for this execution, and do not persist throughout the session.
Name | Type | Writable | Description |
---|---|---|---|
Id | string | required* | Can be used to retrieve a report from the Storage Management database in lieu of the ReportPath property below in v2021.1+ |
ReportPath | string | required* | Full path from the root folder to the report |
DataType | ExecuteDataType v2021.1+ | yes | Choose how Exago shall return the data to the client, either as raw data or as a URL. |
Sorts | array of Sort JSON | yes | Any sorts to apply to the report during execution |
Filters | array of Filter JSON | yes | Any filters to apply to the report during execution |
Execute a Report
Type indicates which format you want to receive the output data: html, csv, pdf, pdfsnapshot, rtf, excel, json.
POST /Reports/Execute/{Type}
Using curl
curl http://{webservice}/rest/Reports/Execute/csv?sid={sid} -X POST ^ -d "{'ReportPath':'Inventory\\Products'}"
Windows file paths are delimited with double-backslashes:
\\
. With Storage Management in v2020.1+, the double slash is no longer necessary.
Output JSON
GetExecute returns the following JSON object:
Name | Type | Description |
---|---|---|
ReportPath | string | Full path from the root folder to this report |
ExportType | string | Format of export data |
DataType | ExecuteDataType v2021.1+ | How Exago has returned the data to the client, either as binary encoded string or as a URL. |
ExecuteData | string | The output of the GetExecute() method, either as a URL or binary encoded string based on the DataType property. |
IsError | Boolean | Whether there were any errors when executing the report |
ErrorList | array of string | If IsError = true, a list of errors encountered when executing this report |
Examples
Output a CSV file:
POST /rest/Reports/Execute/csv
Status: 200 OK { "ReportPath": "Inventory\\Categories", "ExportType": "csv", "DataType": "Data", "ExecuteData": ""Categories"\r\n"Beverages"\r\n"Condiments"\r\n"Confections"\r\n"Dairy Products"\r\n"Grains/Cereals"\r\n"Meat/Poultry"\r\n"Produce"\r\n"Seafood"\r\n", "IsError": false, "ErrorList": null }
Output a PDF file:
POST /rest/Reports/Execute/pdf
Status: 200 OK { "ReportPath": "Products", "ExportType": "Pdf", "DataType": "Data", "ExecuteData": "JVBERi0xLjQKJeLjz9MKMyAwIG9iaiA8PC9MZW5ndGggNDE5NC9GaWx0ZXIvRmxhdGVEZWNvZGU+PnN0cmVhbQp4nO2dW3PbNhaA3/0r+NCZdmfWXBAEL3h00jbbrdu0SbDAxODgyNCAwMDAwMCBuIAowMDAwMDE5MjU2IDAwMDAwIG4gCjAwMDAwMTkzMDEgMDAwMDAgbiAKdHJhaWxlcgo8PC9TaXplIDE2L0luZm8gMTUgMCBSL0lEIFs8ZDEyNmY0ZDQ2ZDI4OGUwNTA1YWM2MGZlYTMwOTBmYTM+PDYwNTE5NjU1NGM1OWVlODI2YmNkNzdiNDFjZmM4YWI5Pl0vUm9vdCAxNCAwIFI+PgpzdGFydHhyZWYKMTk0NDYKJSVFT0YK", "IsError": false, "ErrorList": null }
Sort JSON
Each run-time sort is supplied using the following JSON object:
Filter JSON
Each run-time filter is supplied using the following JSON object:
Name | Type | Writable | Description |
---|---|---|---|
FilterText | string | required | The value of the filter, either a Category name or a formula. For example:
|
DataType | enum | yes (“string”) | DataType |
Operator | enum as integer | yes (0) | Filter Operator Type (only accepts integer value) |
Values | array of string | yes | Values to filter with |
EntityName | string | deprecated (as of v2018.1) | Data object to filter on |
ColumnName | string | deprecated (as of v2018.1) | Column to filter on |
DateTime strings passed as filter values must be able to be parsed by the .NET method DateTime.Parse using the current thread culture.
Execute with Sorts and Filters
Type indicates which format you want to receive the output data: html, csv, pdf, pdfsnapshot, rtf, excel, json.
POST /rest/Reports/Execute/{Type}
Using curl
curl http://{webservice}/rest/Reports/Execute/csv?sid={sid} -X POST ^ -d @reportExecuteResource.txt
reportExecuteResource.txt
"{ 'ReportPath': 'Inventory\\Categories', 'Sorts': [ { 'EntityName': 'Categories', 'ColumnName': 'CategoryName', 'AscendingFlag': false } ], 'Filters': [ { 'FilterText': 'Category.CategoryName' 'DataType': 'string', 'Operator': 14, 'Values': [ 'Beverages', 'Produce', 'Seafood' ], } ] }"
Example response
Status: 200 OK { "ReportPath": "Inventory\\Categories", "ExportType": "csv", "DataType": "Data", "ExecuteData": ""Categories"\r\n"Seafood"\r\n"Produce"\r\n"Beverages"\r\n", "IsError": false, "ErrorList": null }