Reconciliation API
This section focuses on the reconciliation API. For information about performing reconciliation, see Reconciliation.
|
Only administrators can run reconciliation. |
Endpoint ⇒ POST /api/collections/reconciliation
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
entityTableIds |
|
false |
Reconcile document references from specific entity tables |
indexPatterns |
|
false |
Reconcile document references from specific Elasticsearch index patterns |
If neither entityTableIds or indexPatterns are provided, all document references will be reconciled.
You cannot use both entityTableIds and indexPatterns together - only one or the other.
Sample requests
A request to reconcile document references belonging to the 'company' index:
curl -H "Content-Type: application/json" -H 'kbn-xsrf: any' -u sirenadmin:password -L -XPOST 'http://localhost:5606/api/collections/reconciliation' -d '{ "indexPatterns": ["company"] }'
A request to reconcile document references belonging to the entity table with an ID of search:9b412ba0-533c-411e-b431-532db5d05260:
curl -H "Content-Type: application/json" -H 'kbn-xsrf: any' -u sirenadmin:password -L -XPOST 'http://localhost:5606/api/collections/reconciliation' -d '{ "entityTableIds": ["search:9b412ba0-533c-411e-b431-532db5d05260"] }'
A request to reconcile all document references:
curl -H "Content-Type: application/json" -H 'kbn-xsrf: any' -u sirenadmin:password -L -XPOST 'http://localhost:5606/api/collections/reconciliation' -d '{}'
Response
Reconciliation is a resource-intensive, long-running operation. Once user credentials are verified, Investigate will immediately respond with HTTP status code 202 (Accepted) and an operationId you can use to track its progress.
|
You should avoid starting multiple simultaneous reconciliation operations. Use the following operations API to wait for a reconciliation operation to complete before starting a new reconciliation. |
| Property | Type | Description |
|---|---|---|
operationId |
string |
A UUID string that identifies the operation. |
Endpoint ⇒ GET /api/operations/{operationId}/stream
You can use this endpoint to receive a stream of notifications about the status of the operation represented by operationId. The stream follows the
server-sent events specification.
The stream will emit the following events, representing a status object with data encoded as a JSON string:
| Event | Data type | Description |
|---|---|---|
update |
Reports a progress update, including the overall completion percentage and a textual description of current objects being processed. |
|
done |
Reports the final result of the reconciliation operation. |
|
error |
Reports an error in the procedure. |
Sample request
curl -N -H "Content-Type: application/json" -H 'kbn-xsrf: any' -u sirenadmin:password -L 'http://localhost:5606/api/operations/7e990a3a-9872-4157-9bea-6f7b6afe64d0/stream'
Sample response
event: update
data: {"text":"Update graphs 122/326","progressPercent":37}
event: update
data: {"text":"Update graphs 257/326","progressPercent":78}
id: end
event: done
data: {"totalRecordsCount":3000,"failedRecordsCount":0,"totalCollectionsCount":3,"failedCollectionsCount":0,"elapsedSeconds":3,"failedRecordsDetails":[],"failedCollectionsDetails":[]}
Endpoint ⇒ GET /api/operations/{operationId}/status
You can poll at this endpoint to get information about the current status of the long-running operation represented by operationId. The returned status object
has the following schema:
| Property | Type | Description |
|---|---|---|
status |
|
Current status of the operation. |
data |
The data object associated with the current status. |
Sample request
curl -H "Content-Type: application/json" -H 'kbn-xsrf: any' -u sirenadmin:password -L 'http://localhost:5606/api/operations/7e990a3a-9872-4157-9bea-6f7b6afe64d0/status'
Sample responses
{
"status": "running",
"data": {
"text": "Update graphs 122/326",
"progressPercent": 37
}
}
{
"status": "done",
"data": {
"totalRecordsCount": 3000,
"failedRecordsCount": 0,
"totalCollectionsCount": 3,
"failedCollectionsCount": 0,
"elapsedSeconds": 3,
"failedRecordsDetails": [],
"failedCollectionsDetails": []
}
}
{
"status": "error",
"data": {
"status": 400,
"message": "Any error detail here"
}
}
Status objects
ReconciliationResult
Representation of the result of a reconciliation operation.
| Property | Type | Description |
|---|---|---|
totalRecordsCount |
|
Count of affected collection records |
failedRecordsCount |
|
Count of affected collection records that could not be reconciled |
totalCollectionsCount |
|
Count of collections with affected document references |
failedCollectionsCount |
|
Count of collections with affected document references that could not be reconciled |
elapsedSeconds |
|
Time taken for the reconciliation operation to run |
failedRecordsDetails |
|
Details of any records that could not be reconciled (first 100 entries) |
failedCollectionsDetails |
|
Details of any collections containing document references that could not be updated (first 100 entries) |