Skip to main content

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 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
AuthorizationREQUIREDAuthorization

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 Authorization 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.