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:

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 asc or desc suffix to control the order direction. For example:

orderby: ["source", "description desc", "extendedattribute4 asc"]

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 GET call.

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.
For example,
{
  "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 cm.search.thread.limit property in director.properties.

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

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.