Skip to main content
Version: 8.4 / 3.12.0

Export report result data

The data export API allows users to export large amounts of data in a machine-readable format (JSON) from Optimize.

Functionality

Users can export all report types (except combined process reports) from Optimize using the Data Export API. Moreover, raw data reports will include additional data relating to the executed flow nodes and can be exported in a paginated fashion, so that large amounts of data can be consumed in chunks by the client.

Pagination

The simplest way to paginate through the results is to perform a search request with all the REQUIRED header/query parameters as described in the sections below (but without searchRequestId), then pass the searchRequestId returned in each response to the next request, until no more documents are returned. Note that it's often the case, but not guaranteed, that the searchRequestId remains stable through the entire pagination, so always use the searchRequestId from the most current response to make your next request.

Method & HTTP target resource

GET /api/public/export/report/{report-ID}/result/json

Where report-ID is the ID of the report you wish to export.

Request headers

The following request headers have to be provided with every data export request:

HeaderConstraintsValue
AuthenticationREQUIREDAuthentication

Query parameters

The following query parameters have to be provided with every data export request:

ParameterConstraintsValue
limitREQUIREDMaximum number of records per page. Please note that the limit will only be considered when performing the request for the first page of a raw data report. The following requests for a given searchRequestId will have the same page size as the first request.
paginationTimeoutREQUIREDThe amount of time (in seconds) for which a search context will be held in memory, so that the remaining pages of the result can be retrieved. For more information on how to paginate through the results, please refer to the section Pagination.
searchRequestIdOptionalThe ID of a previous search for which you wish to retrieve the next page of results. For more information on how to get and use a searchRequestId please refer to the section Pagination.

Request body

No request body is required.

Result

ContentValue
searchRequestIdThe ID of the performed search. The following pages from this search can be retrieved by using this ID. For more information please refer to the section Pagination.
numberOfRecordsInResponseNumber of records in the JSON Response. This is a number between [0, limit]
totalNumberOfRecordsThe total number of records (from all pages) for this report export
reportIdThe ID of the exported report
messageIn case there is additional information relevant to this request, this field will contain a message describing it. The response will only contain this field if there is a message to be shown
data [Array]An array containing numberOfRecordsInResponse report data records in JSON Format

Response codes

Possible HTTP response status codes:

CodeDescription
200Request successful.
400Returned if some of the properties from the request are invalid or missing.
401Secret incorrect or missing in HTTP Header. See authentication on how to authenticate.
404The requested report was not found, please check the provided report-ID.
500Some error occurred while processing the export request, best check the Optimize log.

Example

Export a raw data report

Let's assume you want to export a report with the ID e6c5abb1-6a18-44e7-8480-d562d511ba62, with a maximum of two records per page, an access token mySecret and a pagination timeout of 60s, this is what it would look like

Initial API call

GET /api/public/export/report/e6c5aaa1-6a18-44e7-8480-d562d511ba62/result/json? paginationTimeout=60&limit=2

Request header

Authorization: Bearer mySecret

Response content
    {
"searchRequestId": "FGluY2x1ZGVfY29udGV4dF91dWlkDXF1ZXJ",
"numberOfRecordsInResponse": 2,
"totalNumberOfRecords": 11,
"reportId": "e6c5abb1-6a18-44e7-8480-d562d511ba62",
"data": [
{
"processDefinitionKey": "aProcess",
"processDefinitionId": "aProcess:1:1801",
"processInstanceId": "1809",
"businessKey": "aBusinessKey",
"startDate": "2021-12-02T17:21:49.330+0200",
"endDate": "2021-12-02T17:21:49.330+0200",
"duration": 0,
"engineName": "camunda-bpm",
"tenantId": null,
"variables": {}
},
{
"processDefinitionKey": "aProcess",
"processDefinitionId": "aProcess:1:1801",
"processInstanceId": "1804",
"businessKey": "aBusinessKey",
"startDate": "2021-12-02T17:21:49.297+0200",
"endDate": "2021-12-02T17:21:49.298+0200",
"duration": 1,
"engineName": "camunda-bpm",
"tenantId": null,
"variables": {}
}
]
}
Response

Status 200.

Subsequent API calls

Note here the use of the query parameter searchRequestId to retrieve further pages from the initial search.

GET /api/public/export/report/e6c5aaa1-6a18-44e7-8480-d562d511ba62/result/json?paginationTimeout=60&searchRequestId=FGluY2x1ZGVfY29udGV4dF91dWlkDXF1ZXJ&limit=2

Request header

Authorization: Bearer mySecret

Response content
    {
"searchRequestId": "FGluY2x1ZGVfY29udGV4dF91dWlkDXF1ZXJ",
"numberOfRecordsInResponse": 2,
"totalNumberOfRecords": 11,
"reportId": "e6c5abb1-6a18-44e7-8480-d562d511ba62",
"data": [
{
"processDefinitionKey": "aProcess",
"processDefinitionId": "aProcess:1:1bc9474d-5762-11ec-8b2c-0242ac120003",
"processInstanceId": "1bdafab8-5762-11ec-8b2c-0242ac120003",
"businessKey": "aBusinessKey",
"startDate": "2021-12-07T15:32:22.739+0200",
"endDate": "2021-12-07T15:32:22.740+0200",
"duration": 1,
"engineName": "camunda-bpm",
"tenantId": null,
"variables": {}
},
{
"processDefinitionKey": "aProcess",
"processDefinitionId": "aProcess:1:1bc9474d-5762-11ec-8b2c-0242ac120003",
"processInstanceId": "1bda3763-5762-11ec-8b2c-0242ac120003",
"businessKey": "aBusinessKey",
"startDate": "2021-12-07T15:32:22.735+0200",
"endDate": "2021-12-07T15:32:22.735+0200",
"duration": 0,
"engineName": "camunda-bpm",
"tenantId": null,
"variables": {}
}
]
}
Response

Status 200.