7 Using the EDQ Case Management API
EDQ provides a set of REST-based interfaces to allow case retrieval and update, filter execution, and load testing.
To open the Case Management API, select the Case Management API Specification from the Web Services dropdown menu in the Launchpad; the service loads automatically once selected. In this chapter, the EDQ service is assumed to be installed at:
http://edqserver:8001/edq
This chapter provides a detailed description of these interfaces and the operations that can be performed using these interfaces. It includes the following topics:
- Retrieving Details of a Case or Alert
- Executing a Saved Filter or Report
- Updating Case or Alert Details
- Adding Comments to One or More Cases or Alerts
- Deleting One or More Cases or Alerts
- Bulk Deleting Cases or Alerts using a Filter
- Executing Multiple Filters for Load Testing
- Bulk Updating Cases or Alerts using a Filter
- Running a Report
- Exporting Cases and Alerts
- Canceling a Bulk Operation
- Filter Definition in JSON Format
- Checking the Execution Status of a Bulk Operation
- Using the Case Management Administration REST APIs
7.1 Retrieving Details of a Case or Alert
To get details for a single case or alert, call the interface with an external or internal ID.
GET http://edqserver:8001/edq/cm/getcase/{id}[?sourcedata=true]
The following table lists the supported input properties for this call:
Property | Type | Required | Description |
---|---|---|---|
Id |
String |
Yes |
The case identifier. Specify either an external ID such as S2-1241, or a numeric internal ID. |
sourcedata |
Boolean |
No |
Set to true to include source and relationships data (alerts only). Note: This property is available in EDQ 12.2.1.4.3 and later releases. |
The following table lists the output properties displayed for each case:
Property | Type | Required | Description |
---|---|---|---|
Id | String | Yes | The external case ID. You must specify either the external case ID or the internal case ID. |
internalid | Integer | Yes | The internal case ID. You must specify either the external case ID or the internal case ID. |
source | String | Yes | The case source name. |
sourceid | String | Yes | The case source identifier. |
type | String | Yes | The type of the case or alert. |
parentid | Integer | No | For alerts, the internal ID of the containing case. |
key | String | Yes | The case key. |
description | String | No | The description of the case. |
createdby | String | Yes | The name of the user who created the case. |
createdbyid | Integer | Yes | The internal ID of the user who created the case. |
createdbydisplay | String | Yes | The display name of user who created the case. |
createdwhen | String | Yes | The creation time stamp. |
modifiedby | String | Yes | The name of user who made the most recent modification. |
modifiedbyid | Integer | Yes | The internal ID of user who made most recent modification. |
modifiedbydisplay | String | Yes | The display name of user who made most recent modification. |
modifiedwhen | String | Yes | The time stamp of the most recent modification. |
assigneduser | String | No | The name of the currently assigned user. This value is not present if the case is unassigned. |
assigneduserid | String | No | The internal ID of the currently assigned user. This value is not present if the case is unassigned. |
assigneduserdisplay | String | No | The display name of the currently assigned user. This value is not present if the case is unassigned. |
assignedby | String | No | The name of the user who made the most recent assignment. |
assignedbyid | Integer | No | The internal ID of the user who made the most recent assignment. |
assignedbydisplay | String | No | The display name of the user who made the most recent assignment. |
assignedwhen | String | No | The time stamp of the most recent assignment. |
priority | Integer | Yes | The case priority.
minimum: 0 maximum: 3 |
state | String | Yes | The current state. |
statechangedby | String | No | The name of the user who made the most recent state change. |
statechangedbyid | Integer | No | The internal ID of the user who made the most recent state change. |
statechangedbydisplay | String | No | The display name of the user who made the most recent state change. |
statechangedwhen | String | No | The time stamp of the most recent state change. |
derivedstate | String | Yes | The derived state |
reviewflag | Boolean | Yes | The new review flag. |
reviewflagupdatedby | String | No | The name of the user who made the most recent review flag change. |
reviewflagupdatedbyid | String | No | The internal ID of the user who made the most recent review flag change. |
reviewflagupdatedbydisplay | String | No | The display name of the user who made the most recent review flag change. |
reviewflagupdatedwhen | String | No | The time stamp of the most recent review flag change. |
permission | String | No | The case permission. The value is the internal key defined in Case Management Administration. |
extendedattributen | String | No | The extended attribute |
extendedattributenmodifiedby | String | No | The name of the user who made most recent modification to extended attribute n. |
extendedattributenmodifiedbyid | Integer | No | The internal ID of the user who made most recent modification to extended attribute n. |
extendedattributenmodifiedbydisplay | String | No | The display name of the user who made most recent modification to extended attribute n. |
extendedattributenmodifiedwhen | String | No | The time stamp of the most recent modification to extended attribute n. |
extendedattributenlabel | String | No | The label of the extended attribute n. |
Unset values are omitted. The extended attributes, which are included in the JSON object, are derived from the definitions in the system flags.xml
file in the oedq_local_home/casemanagement
directory..
The timestamps are returned in the ISO format, which is YYYY-MM-DDTHH:MM:SS.mmmZ
If the sourcedata
flag is set to true, and the result is for an alert, the output properties also include the sourcedata
and relationships
attributes.
The following table lists the output properties that are displayed for the sourcedata
attribute:
Property | Description |
---|---|
relationships | Relationships data |
sourcedata | Source data |
The following table lists the output properties that are displayed for the relationship
attribute:
Property | Description |
---|---|
inputname | The internal name of the input stream. |
recordid | The internal ID of the source record. |
relatedinputname | The internal name of the related input stream. |
relatedrecordid | The internal ID of the related source record. |
rulename | The internal ID of the related source record. |
priorityscore | The name of the rule that generated the relationship. |
The sourcedata object is an array of input objects, each containing the input stream name and label, and the associated attribute labels, along with the source records.
The following is an example of the relationship and source data from a simple alert:
"relationships": [
{
"inputname": "workdata 1",
"recordid": 77,
"relatedinputname": "refdata 1",
"relatedrecordid": 199342,
"rulename": "MatchRule1",
"priorityscore": 0
}
],
"sourcedata": [
{
"inputname": "refdata 1",
"label": "refdata",
"labels": {
"ID": "ID",
"TITLE": "TITLE",
"FIRSTNAME": "FIRSTNAME",
"LASTNAME": "LASTNAME",
"TELEPHONE": "TELEPHONE",
"NewAttribute": "AGE",
"NewAttribute1": "type"
},
"records": [
{
"recordid": 199342,
"data": {
"ID": 48,
"TITLE": "Doctor",
"FIRSTNAME": "Riaz",
"LASTNAME": "Audoire",
"TELEPHONE": "05305 937614",
"NewAttribute": 67,
"NewAttribute1": "I"
}
}
]
},
{
"inputname": "workdata 1",
"label": "workdata",
"labels": {
"ID": "ID",
"TITLE": "TITLE",
"FIRSTNAME": "FIRSTNAME",
"LASTNAME": "LASTNAME",
"TELEPHONE": "TELEPHONE",
"NewAttribute": "AGE",
"NewAttribute1": "type"
},
"records": [
{
"recordid": 77,
"data": {
"ID": 48,
"TITLE": "Doctor",
"FIRSTNAME": "Riaz",
"LASTNAME": "Audoire",
"TELEPHONE": "05305 937614",
"NewAttribute": 3,
"NewAttribute1": "I"
}
}
]
}
]
7.2 Executing a Saved Filter or Report
Use runfilter
to run a saved case management filter or report. The retrieved results are generated and displayed in JSON format. The filter results are limited according to the same rules as in the Case Management application. This call returns a limited number of results, along with indications of the total number of results available. You can specify the limit. The default limit is 100.
To execute a saved case management filter or report, use the following interface:
GET http://edqserver:8001/edq/cm/runfilter?filter=NAME[&global=true][&limit=100][&sql=false]
You can also create a JSON object that describes the filter you want to execute and then send it in the request body of the REST call using an HTTP POST. For example,
POST http://edqserver:8001/edq/cm/runfilter
{
"filter": "string",
"global": true,
"limit": 50,
"sourcedata": true
}
The following table lists the supported input properties for runfilter
:
Property | Description |
---|---|
filter |
The name of the filter or inline filter definition. See Filter Definition in JSON Format. |
global |
If set to true, specifies the global filter. |
orderby |
An array of strings that defines the order by columns for the query. Use the same column names as in the filter definition. Add an
|
limit |
The result limit in the range 1-1000. Minimum: 1 Maximum: 1000 The default value is 100. |
sql |
Set to false to force non-SQL execution if available. This attribute controls the
use of SQL for the |
sourcedata |
Set to true to include source and relationships data (alerts only). |
When this code runs successfully, the details of the case are generated and displayed in JSON format:
{ "version": 1, "report": false, "count": 1000, "more": true, "cases": [ array of case/alert details ] }
The count and more attributes reflect the values seen in the UI. For example, if a filter shows 100 items, 196 total on server, then count = 196 and more = false. If a filter shows 100 items, > 1,000 on server, then count = 1000 and more = true.
For a report execution, the result is a JSON object with the following structure:
{
"version": 1,
"report": true,
"xlabels": [array of X axis labels],
"ylabels": [array of Y axis labels],
"scores": [2 dimensional array of row/col values]
}
Reporting supports multiple items on each axis so the elements in the label arrays are arrays of strings.
7.3 Updating Case or Alert Details
To update case or alert details you need to create a JSON object that specifies the details that you want to change.
For example,
POST http://edqserver:8001/edq/cm/update
The payload to the request is a JSON object with the attributes listed in the following table:
Property | Type | Description |
---|---|---|
failonanyerror | Boolean | If true, fail the request if any updates end in error. Invalid values in updates, such as priority out of range, always cause the call to fail. Errors that occur in individual updates include permission problems. |
updates | Array | An array of individual case/alert update requests. The array may not contain more than 1000 elements. |
The following table lists the attributes that each object in the updates array can contain:
Property | Type | Required | Description |
---|---|---|---|
Id | String | Yes | The external case ID. You must specify either the external case ID or the internal case ID. |
internalid | Integer | Yes | The internal case ID. You must specify either the external case ID or the internal case ID. |
description | String | No | The description of the case. |
assigneduser | String | No | The name of the currently assigned user. This value is not present if the case is unassigned. |
priority | Integer | Yes | The case priority.
minimum: 0 maximum: 3 |
reviewflag | Boolean | No | The new review flag. |
permission | String | No | The case permission. The value is the internal key defined in Case Management Administration. |
extendedattributen | String | No | The extended attribute. |
statechange | Object | No | The state change definition. |
The statechange object can contain these objects:
Property | Description |
---|---|
transition | (Required) The transition name. |
comment | The comment for the state change. |
restrictingpermission | The Restricting Permission to apply to the comment. Specify the key for the permission, not the UI name. |
{
"updates": [
{
"id": "ECS-234",
"assigneduser": "john.sheridan",
"priority": 3,
"statechange": {
"transition": "toMatch",
"comment": "Updated by API call"
}
}
]
}
The result of a successful call (status 200) is an object with a status array containing the results of each individual case/alert update. Each status object contains these attributes:
Property | Description |
---|---|
ok | If true, indicates that the update was successful. |
reason | If ok is set to false, the reason code for the failure.
|
message | Additional message if the update failed. |
The following is an example error response:
{ "status": [
{ "ok": false,
"reason": "unknown_user",
"message": "Unknown user \"tamie.grindy\""
}
]
}
7.4 Adding Comments to One or More Cases or Alerts
To add comments to one or more cases or alerts you need to create a JSON object that specifies the case/alert comment definitions.
For example,
POST /edq/cm/addcomments
The payload to the request is a JSON object with the attributes listed in the following table:
Property | Type | Description |
---|---|---|
failonanyerror | Boolean | If true, fail the request if any updates end in error. Invalid values in updates, such as unknown permission, always cause the call to fail. Errors that occur in individual updates include missing cases. |
comments | Array | An array of individual case/alert comment definitions. The array may not contain more than 1000 elements. |
The following table lists the attributes that each object in the comments array can contain:
Property | Type | Required | Description |
---|---|---|---|
Id | String | No | The external case ID. You must specify either the external case ID or the internal case ID. |
internalid | Integer | No | The internal case ID. You must specify either the external case ID or the internal case ID. |
comment | String | Yes | The comment text. |
restrictingpermission | String | No | The Restricting Permission to apply to the comment. Specify the key for the permission, not the UI name. |
The result of a successful call (status 200) is an object with a status array containing the results of each individual case/alert update.
7.5 Deleting One or More Cases or Alerts
The user making the call must have the case management bulk delete permission. To delete cases or alerts create a JSON object that includes the array of IDs of case/alert that you want to delete and then send it in the request body of the REST call using an HTTP POST. For example,
POST http://edqserver:8001/edq/cm/deletecases
{ "deleteemptycases": true,
"ids": [
1213423,
454344,
"X1-123",
"X1-456"
]
}
The payload to the POST is a JSON object with the following attributes:
Property | Type | Description |
---|---|---|
ids |
array |
Array IDs of case/alerts to delete. Each element is a numeric internal ID or a string external ID, such as "S2-1231". The array may not contain more than 1,000 elements. |
deleteemptycases |
Boolean |
If true, cases for which all contained alerts were deleted are also deleted. The default is false. |
The result of a successful call is an object with the following attribute:
Property | Type | Description |
---|---|---|
count | number | Number of cases/alerts deleted by the call. |
7.6 Bulk Deleting Cases or Alerts using a Filter
The user making the call must have the case management bulk delete permission. To delete cases or alerts in bulk using a filter, create a JSON object that includes the filter name and then send it in the request body of the REST call using an HTTP POST. Use the following interface:
POST http://edqserver:8001/edq/cm/bulkdelete
The payload to the POST is a JSON object with the following attributes:
Property | Type | Description |
---|---|---|
filter |
String or JSON Object |
The name of the filter or inline filter definition. See Filter Definition in JSON Format. |
global |
Boolean |
Set to true to specify a global filter. |
deleteemptycases |
Boolean |
If true, cases for which all contained alerts were deleted are also deleted. The default is false. |
The bulk deletion runs asynchronously. The result to the call is a JSON object containing a key corresponding to the execution.
{
"executionkey":"a279513d1ea44b0198094ac31ae68258"
}
You can use the key to poll for execution completion. See Checking the Execution Status of a Bulk Operation.
If you want to cancel the bulk delete operation, use the bulkoperation
method. See Canceling a Bulk Operation.
7.7 Bulk Updating Cases or Alerts using a Filter
The user making the call must have the case management bulk update permission, as well as any permissions defined with transitions used in state change definitions.
To update cases or alerts in bulk using a filter, create a JSON object that includes the filter name and then send it in the request body of the REST call using an HTTP POST. Use the following interface:
POST http://edqserver:8001/edq/cm/bulkupdate
The payload to the POST is a JSON object with the following attributes:
Property | Type | Description |
---|---|---|
filter |
String or JSON Object |
The name of the filter or inline filter definition. See Filter Definition in JSON Format. |
global |
Boolean |
Set to true to specify a global filter. This value is allowed with named filters only. |
assignment |
JSON object |
The group and user assignment definition. |
statechanges |
JSON object |
The map of origin state to transition definition.
statechanges may be specified if the sources and case types defined in the filter all map to the same workflow. |
edits |
JSON objects |
The attribute edits. Supported keys are description, priority, reviewflag, permission, stateexpiry, and extendedattributeN. |
The object used with assignment has these attributes:
Property | Type | Description |
---|---|---|
groups | Array of strings | The list of group names. |
users | Array of strings | The list of user names. Use null to specify "unassigned". |
groupbycase | Boolean | Set to true to group assignments by case. |
The edits object can have these attributes:
Property | Type | Description |
---|---|---|
description | String | The case or alert description. Use null to clear the current value. |
priority | Integer | The case or alert priority in the range 0-3. |
reviewflag | Boolean | The review flag. |
permission | String | The case or alert permission. |
stateexpiry | Date | The timestamp of the state expiry. |
extendedattributeN | String, number or boolean | The extended attribute. |
For example
{ "filter": {
"source": "WFP",
"type": "alert",
"state": ["one", "two"]
},
"statechanges": {
"one": {
"transition": "toThree",
"comment": "one to three"
}
},
"edits": {
"description": "Alert description",
"priority": 1,
"extendedattribute3": "string 3",
"extendedattribute1": true,
"permission": "CMPermission1",
"stateexpiry": "2024-12-10T00:00:00Z"
},
"assignment": {
"groups": ["Administrators"],
"users": ["user1", null]
}
}
The bulk update operation runs asynchronously. The result to the call is a JSON object containing a key corresponding to the execution.
"executionkey":"a279513d1ea44b0198094ac31ae68258"
You can use the key to poll for execution completion. See Checking the Execution Status of a Bulk Operation.
The result object returned with the execution status when complete has these attributes:
Property | Type | Description |
---|---|---|
processed | Integer | The count of cases or alerts processed during the bulk update. |
rejected | Integer | The count of cases or alerts that could not be updated due to locking issues. |
failedassignments | Integer | The count of cases or alerts that could not be assigned because no user had view permission. |
failedtransitions | Integer | The count of cases or alerts that had a defined transition but the transition was rejected. |
If you want to cancel the bulk update operation, use the bulkoperation
method. See Canceling a Bulk Operation.
7.8 Running a Report
To run a a case management report, using a generic filter, use the following interface:
http://edqserver:8001/edq/cm/report
The payload to the POST is a JSON object with the attributes listed in the following table:
Property | Type | Description |
---|---|---|
filter | JSON object | The filter definition. |
xaxis | Array of strings | The attribute names for X axis. |
yaxis | Array of strings | The attribute names for Y axis. |
xaggregation | Number or date aggregation | The aggregation definition for X axis. |
yaggregation | Number or date aggregation | The aggregation definition for Y axis. |
The xaxis and yaxis attributes specify the attributes used to form the X and Y axis. The attribute names are as used in filter definitions. If an aggregation definition is supplied, the corresponding axis must have a single numeric flag or date attribute. If the aggregation attribute is set to null, no aggregation is performed and the axis contains discrete values.
The aggregation definition for a numeric flag has the attributes listed in the following table:
Property | Type | Description | Default value |
---|---|---|---|
granularity | Number | The axis granularity. | 10 |
offset | Number | Offset | 0 |
hideempty | Boolean | If true, hide empty rows/columns. | false |
The aggregation definition for a date has these attributes:
Property | Type | Description | Default value |
---|---|---|---|
granularity | Number | The axis granularity. Must be YEAR, QUARTER, MONTH, WEEK, DAY, HOUR, MINUTE or SECOND. | MONTH |
hideempty | Boolean | If true, hide empty rows/columns. | false |
7.9 Exporting Cases and Alerts
The user must have the Export to Excel case management permission.
To initiate an asynchronous operation to export cases and alerts to a file or URL, use the following interface:
POST http://edqserver:8001/edq/cm/export
Supported output formats are JSON, JSON lines, XLSX and CSV. The payload to the POST is a JSON object that includes the following attributes:
Property | Type | Description |
---|---|---|
filter |
String or JSON object |
The name of the filter or inline filter definition. See Filter Definition in JSON Format. |
global |
Boolean |
Set to true for a global named filter. This value is allowed with named filters only. |
orderby |
Array of strings |
The column ordering. |
sourcedata |
Boolean |
Set to true to include source and relationships data (alerts only). Supported with JSON and JSON lines output only. |
limit |
Number |
The limit on the number of cases and alerts that will be written to the export file. |
destination |
JSON object |
The output destination definition. |
format |
String |
The output file format. Must be json, jsonlines, xlsx or csv. |
label |
String |
An optional label to describe the export. This label is returned in the bulk status reports and is available in the export trigger. |
The destination object is required and contains these attributes:
Property | Type | Description |
---|---|---|
location | String |
(Required) The file name or URL for the package file. If a non-absolute file name is specified, the location is relative to the "local home" configuration directory. |
credentials | String | The name of stored credentials used to authenticate a request to a URL location. This value is ignored if the location is a file. If the URL requires a simple username/password authentication, use "basic" stored credentials. |
platformcredentials | Boolean | Set to true to use platform credentials for the file upload and download operations. Supported on Oracle Cloud Infrastructure (OCI), Amazon Web Services (AWS) and Google Cloud Platform (GCP). |
method | String | The HTTP method used for uploads. This value is ignored if the location is a file. The default method is PUT. |
multipart | String | The multipart mechanism used for uploading large files. Supported values are aws, s3, and oci. aws and s3 are equivalent. |
The result to the call is a JSON object containing a key corresponding to the execution.
"executionkey":"a279513d1ea44b0198094ac31ae68258"
You can use the key to poll for execution completion. See Checking the Execution Status of a Bulk Operation.
When the export is completed, a trigger is run with the /casemanagement/export
path. The single argument passed to the trigger is an object with the following attributes:
Property | Type | Description |
---|---|---|
failed | Boolean | Is true if the export completed with an error. |
cancelled | Boolean | Is true if the export was cancelled. |
start | String | The date and time when the export started. |
end | String | The date and time when the export completed. |
error | String | The error message if the execution completed with an error. This value is present only if failed is true. |
userid | Integer | The ID of user who is initiating the export. |
label | String | The label copied from the run export payload. |
location | String | The output location. The value is an absolute file name or URL. |
format | String | The output file format. |
The following is an example trigger that sends the output file in an email attachment:
addLibrary("usercache");
addLibrary("mail");
addLibrary("logging");
function getPath() {
return "/casemanagement/export"
}
function run(path, id, env, status) {
if (!status.failed && !status.cancelled) {
logger.log(Level.INFO, "CM: {0}: {1} exported {2} to {3} ({4})", status.label, usercache.getUser(status.userid).userName, status.count, status.location, status.format)
var mh = Mail.open({enabled : true});
var msg = mh.newMessage("An export from cm")
msg.text = "Export complete"
msg.addTo("someuser@example.com")
msg.type = "text/plain";
msg.addAttachment(status.location, "application/jsonl")
msg.send()
}
}
If you want to cancel the bulk export operation, use the bulkoperation
method. See Canceling a Bulk Operation.
7.10 Filter Definition in JSON Format
The filter used with the runfilter, bulkdelete, bulkupdate and export APIs can be the name of a global filter or a JSON map defining the search conditions. These conditions can include any of the standard and extended attributes that are supported in the Case Management UI. Note that, currently, searches using case comments and transitions are not supported.
The runfilter payload supports an additional orderby attribute, which is an an array of strings that define the order by columns for the query.
The available attributes in the filter map are listed in the following table:
Property | Type | Description | Null values allowed | Can be negated |
---|---|---|---|---|
id | String or array of strings | The Case ID. | No | Yes |
internalid | Integer or array of integers | The Case internal ID. | No | Yes |
key | String | Free-form text search on the case key. | No | No |
description | String | Free form text search on the case description. | No | No |
source | String or array of strings | The source name. | No | No |
sourceid | String or array of strings | The source identifier. | Yes | Yes |
type | Case/alert type | Must be "case" or "alert". | No | No |
createdbyid | Integer or array of integers | The ID of user who created the case or alert. | No | Yes |
createdwhen | Date, array of dates, or date range | The timestamp when the case or alert was created. | Yes | Yes |
modifiedbyid | Integer or array of integers | The ID of the user who modified the case or alert. | No | Yes |
modifiedwhen | Date, array of dates, or date range | The timestamp when the case or alert was modified. | Yes | Yes |
assigneduserid | Integer or array of integers | The ID of the currently assigned user. Specify -1 if the case is unassigned. | No | Yes |
assignedbyid | Integer or array of integers | The ID of the user who made the most recent assignment. | No | Yes |
assignedwhen | Date, array of dates, or date range | The timestamp of the most recent assignment. | Yes | Yes |
state | String or array of strings | The current state | No | Yes |
statechangebyid | Integer or array of integers | The ID of the user who made the most recent state change. | Yes | Yes |
statechangedwhen | Date, array of dates, or date range | The timestamp of the most recent state change. | Yes | Yes |
stateexpiry | Date, array of dates, or date range | The timestamp of the case or alert state expiry. | Yes | Yes |
derivedstate | String or array of strings | The derived state | Yes | Yes |
permission | String or array of strings | The case permission. The value is the internal key defined in Case Management Administration. | Yes | Yes |
reviewflag | Boolean | The new review flag. Must be true or false. | No | No |
reviewflagupdatedbyid | Integer or array of integers | The ID of the user who made the most recent review flag change. | Yes | Yes |
reviewflagupdatedwhen | Date, array of dates, or date range | The timestamp of the most recent review flag change. | Yes | Yes |
priority | Integer or array of integers | The case priority. Values must be in the 0-3 range. | Yes | Yes |
extendedattributeN | Value, array or range | The extended attribute n. | Yes | Yes |
extendedattributeNmodifiedbyid | Integer or array of integers | The ID of the user who made most recent modification to extended attribute n. | Yes | Yes |
extendedattributeNmodifiedwhen | Date, array of dates, or date range | The timestamp of the most recent modification to extended attribute n. | Yes | Yes |
sourceattributes | Map of source to array of tests | The filter on source and relationship attributes. See Filtering with source attributes. |
For filter attributes that have timestamp values, see Filtering with dates.
For filtering using extended attributes, see Filtering extended attributes.
For an attribute test that has a Yes in the Can be negated? column, you can invert the test by adding a boolean attribute with the filter name suffixed with "negated". For example the following filter settings select all alerts with no permission set:
"type": "alert", "permission": null, "permissionnegated": true
Filtering with source attributes
The sourceattributes filter value is a map of the source name to an array of tests for the attributes and relationships associated with the source. Each element in the test array has the following attributes:
Attribute | Type | Description |
---|---|---|
input | String | The name of the input stream as seen in the Case Management UI. For relationship tests use Relationships. |
attribute | String | The name of the attribute in the stream as seen in the Case Management UI. |
value | Object | The value to compare against. The value could be null, a scalar value, an array, or a number or date range. |
negated | Boolean | Set to true to negate the test. |
Each source name must also be specified in the filter source list.
The input and attribute values are the stream and source attribute labels as seen in the Source Attributes section in the Browser Pane of the Case Management UI. The UI allows you to edit the labels and use the same label more than once for a stream. If an ambiguous label is used in a filter, the API will reject the call.
For example:
{ "source": ["Screening", "Test"],
"sourceattributes": {
"Screening": [
{ "input": "workdata",
"attribute": "firstname",
"value": "j%"
},
{ "input": "workdata",
"attribute": "lastname",
"value": ["kirk", "doohan"]
}
],
"Test": [
{ "input": "Relationships",
"attribute": "Rule Name",
"value": "R0012 or R002%",
"negated": true
},
{ "input": "Watchlist",
"attribute": "dob",
"value": { "from": "1990-01-01T00:00:00Z", "to": "2023-11-21T12:34:56Z" }
}
]
}
}
Filtering with dates
Filter attributes that are timestamps can be specified as null, a single ISO timestamp string, an array of timestamp strings, or a date range object. Timestamp strings can omit the .mmm millisecond portion.
For example, these are all valid settings of the createdwhen attribute:
"createdwhen": null
"createdwhen": "2023-10-11T12:34:56Z"
"createdwhen": ["2023-10-11T12:34:56Z", "2024-01-08T11:01:12Z"]
"createdwhen": {"from": "2023-01-01T00:00:00Z", "to": "2024-12-31T23:59:59Z"}
The date range object can contain the following attributes:
Attribute | Type | Description |
---|---|---|
from | Date string | The lower bound of the date range. You must specify either the from or the to value. |
to | Date string | The upper bound of date range. You must specify either the from or the to value. |
inclusive | Boolean | If true, the range is inclusive of the upper bound. |
Filtering extended attributes
The value specified with an extendedattributeN filter depends on the type of the associated flag.
The following table lits the flag type and the associated value format:
File Type | Value format |
---|---|
boolean | null, true, or false |
string | null, string or array of strings |
number | null, number, array or numbers, or number range |
A number range is specified a JSON object with these attributes:
Attribute | Type | Description |
---|---|---|
from | Date string | The lower bound of the number range. |
to | Date string | The upper bound of number range. |
inclusive | Boolean | If true, the range is inclusive of the upper bound. |
Examples:
"extendedattribute1": null,
"extendedattribute2": true,
"extendedattribute3": "string",
"extendedattribute4": ["monday", "tuesday"],
"extendedattribute5": 20,
"extendedattribute6": [2,4,5,8,37.4],
"extendedattribute7": {"from": 10, "to": 55, "inclusive": true]
7.11 Canceling a Bulk Operation
You can cancel a bulk operation such as update, delete or export using the following interface:
DELETE http://edqserver:8001/edq/cm/bulkoperation/EXECUTIONKEY
The payload to the POST call is a JSON object containing an executionkey
attribute that specifies the execution key that was returned by the call that initiated the bulk operation.
The result is a JSON object containing a cancelled attribute, which is set to true if the operation was not completed when the cancel request was received.
7.12 Checking the Execution Status of a Bulk Operation
You can check the status of bulk operations such as update, delete or export using the execution key that you get as a result when the call runs. The status of a completed execution is available for one hour after completion.
To get the status of a bulk operation, use the following interface:
GET http://edqserver:8001/edq/cm/bulkstatus/EXECUTIONKEY
The EXECUTIONKEY component of the URL is the key returned from a previous bulk delete call. If the key is not known, the request fails with 404 error.
The payload to the POST is a JSON object with the following attributes:
Property | Type | Description |
---|---|---|
complete | Boolean | Is true if the execution is complete. Is false otherwise. |
failed | Boolean | Is true if the execution completed with an error. Is false if the execution is not complete or has finished without error. |
start | String | The start date and time when the execution started. |
end | String | The start date and time when the execution completed. This value is present only if complete is true. |
error | String | The error message if the execution completed with an error. This value is present only if complete and failed are true. |
result | Object | The result object containing the count of cases and alerts deleted, updated or exported. |
For example:
{
"complete": true,
"failed": false,
"start": "2022-08-24T17:34:44.990Z",
"end": "2022-08-24T17:34:45.448Z",
"result": {
"count": 20
}
}
7.13 Executing Multiple Filters for Load Testing
To execute multiple saved filters and report timing, use the following interface:
POST http://edqserver:8001/edq/cm/filtertest?[?sql=false]
The payload to the POST is a JSON object that includes the following attributes:
Property | Type | Description |
---|---|---|
filter |
String |
The name of the filter. |
global |
Boolean |
Set to true to specify a global filter. |
count |
Integer |
The repetition count for the filter. The total number of filter executions in one test should not exceed the maximum number of filter execution threads. The default filter execution thread limit is 100. You can set the thread limit by setting the |
For example:
{
"tests": [
{ "filter": "NAME1", "global": true, "count": 50 },
{ "filter": "NAME2", "global": true, "count": 50 },
...
]
}
The result of the call is a JSON object:
{
duration: total duration of tests in milliseconds,
results: [
{ "filter": "NAME1", "global": true, "count": 50, "xids": [internal execution ids for each invocation] },
...
]
}
The filter, global and count attributes in the results array elements reflect the values in the input object. xids are the internal execution IDs for each execution of the filter.
7.14 Using the Case Management Administration REST APIs
You can use REST APIs to list and delete case sources, workflows, permissions, and global filters. These APIS are primarily for use with the automated REST testing framework.
The REST interface for the Case Management Administration REST APIs is:
http://edqserver:8001/edq/cmadmin
This interface allows you to perform the following tasks:
- Get list of Case Sources
- Delete a Case Source
- Get list of Case Workflows
- Delete a Case Workflow
- Get list of Case Management Dynamic Permissions
- Delete a Case Management Dynamic Permission
- Get list of Case Global Filters
- Delete a Case Global Filter
Get list of Case Sources
The user must have access to the Case Management Administration application.
To get the list of case sources, use the following interface:
GET http://edqserver:8001/edq/cmadmin/sources
The result is an array of objects each containing these attributes:
Property | Type | Description |
---|---|---|
name | String | The name of the case source. |
prefix | String | The case source prefix. |
description | String | The case source description. |
permission | String | The permission associated with the case source. |
Delete a Case Source
The user must have access to the Case Management Administration application and must have the Delete Sources permission.
To delete a case source, use the following interface:
DELETE http://edqserver:8001/edq/cmadmin/source/NAME
This call deletes the case source that you specify in the NAME
attribute.
Get list of Case Workflows
The user must have access to the Case Management Administration application.
To get the list of case workflows, use the following interface:
GET http://edqserver:8001/edq/cmadmin/workflows
The result is an array of objects each containing these attributes:
Property | Type | Description |
---|---|---|
version | Number | The workflow version. |
name | String | The name of the workflow. |
label | String | The label of the workflow. |
description | String | The description of the workflow |
Delete a Case Workflow
The user must have access to the Case Management Administration application and must have the Delete Sources permission.
To delete a case workflow, use the following interface:
DELETE http://edqserver:8001/edq/cmadmin/workflow/NAME
This call deletes the case workflow that you specify in the NAME
attribute.
Get list of Case Management Dynamic Permissions
The user must have access to the Case Management Administration application.
To get the list of Case Management dynamic permissions, use the following interface:
GET http://edqserver:8001/edq/cmadmin/permissions
The result is an array of objects each containing these attributes:
Property | Type | Description |
---|---|---|
key | String | The internal key for the permission. |
name | String | The name of the permission. |
description | String | The description of the permission. |
Delete a Case Management Dynamic Permission
The user must have access to the Case Management Administration application and must have the Delete Sources permission.
To delete a Case Management dynamic permission, use the following interface:
DELETE http://edqserver:8001/edq/cmadmin/permission/KEY
This call deletes the Case Management dynamic permission that you specify in the KEY
attribute.
Get list of Case Global Filters
The user must have access to the Case Management Administration application, and must have the Edit Global Filters permission. If the user does not have the Edit Global Filters permission, the results are filtered by the permission associated with each filter, if any.
To get the list of case global filters, use the following interface:
GET http://edqserver:8001/edq/cmadmin/filters
The result is an array of objects each containing these attributes:
Property | Type | Description |
---|---|---|
name | String | The name of the filter. |
description | String | The description of the filter. |
permission | String | The permission associated with the filter. |
report | Boolean | Is true if the filter generates a report. |
Delete a Case Global Filter
The user must have access to the Case Management Administration application, and must have the Edit Global Filters permission.
To delete a case global filter, use the following interface:
DELETE http://edqserver:8001/edq/cmadmin/filter/NAME
This call deletes the case global filter that you specify in the NAME
attribute.