Global Search (Reserved)
RESERVED: The keyword RESERVED annotation means that the API is available for use but is not yet part of the officially supported specification. Its behavior, interface, or output may change in future releases without backward compatibility guarantees.
Overview
Search for objects in an application using a combination of keyword matching, tag filters, insight filters, object type filters, property filters, transaction filters, and sorting options.
URI
POST /rest/applications/{name}/search
Path parameters
The application name. Must be properly encoded; back-quote character is not allowed.
Query parameters
Optional. ISO-8601 datetime (e.g. 2024-01-15T00:00:00Z). When provided, restricts results to objects that were active at that point in time.
Request body
Content-Type: application/json
Minimal example
{
"keyword": "getUserById",
"pos": "any",
"searchBy": ["Name"],
"skip": 0,
"limit": 25,
"sortKey": "name",
"sortOrder": "asc"
}
Full example
{
"keyword": "UserService",
"pos": "any",
"searchBy": ["Name", "FullName"],
"ignoreCase": true,
"isRegex": false,
"skip": 0,
"limit": 25,
"all": false,
"sortKey": "Cyclomatic Complexity",
"sortOrder": "desc",
"objectSearchBy": "internal",
"labels": ["critical"],
"forceAllTags": 0,
"objectTypes": ["Java Method", "Java Class"],
"isTagsAndObjectTypes": false,
"insightFilters": [
{ "category": "iso-5055-high", "rules": ["Avoid using SELECT *"] }
],
"forceAllInsight": 1,
"transactions": [
{ "value": "10000001", "label": "Login Transaction" }
],
"forceAllTransactions": 0,
"module": ["AuthModule"],
"roles": ["persist"],
"forceAllProperties": 0,
"operations": [
{
"type": "integer",
"description": "Cyclomatic Complexity",
"operationValue": 10,
"operation": "greaterThan"
}
]
}
Request body fields
Keyword search
| Field |
Type |
Required |
Description |
| keyword |
string |
No |
Text to search for. Empty string matches all objects. |
| searchBy |
[]string |
Yes |
Properties to search in. Valid values: "Name", "FullName". At least one must be provided. |
| pos |
string |
No |
Keyword match position. One of: "any" (contains, default), "start" (starts with), "end" (ends with). |
| ignoreCase |
boolean |
No |
If true, the keyword match is case-insensitive. Default: false. |
| isRegex |
boolean |
No |
If true, keyword is treated as a regular expression. pos is ignored when regex is active. Default: false. |
Pagination and sorting
| Field |
Type |
Required |
Description |
| skip |
integer |
No* |
Number of results to skip. Must be ≥ 0. Required unless all is true. |
| limit |
integer |
No* |
Maximum number of results to return. Must be > 0. Required unless all is true. |
| all |
boolean |
No |
If true, bypasses skip/limit and returns all matching objects. Default: false. |
| sortKey |
string |
No |
What to sort by. An object field ("name", "fullname", "type"), or the description of one of the operations to sort by that property’s value (e.g. "Cyclomatic Complexity"; matched case-insensitively). A value that is neither an object field nor a matching operation description falls back to "name". Default: "name". |
| sortOrder |
string |
No |
Sort direction: "asc" or "desc". Default: "asc". When sorting by a property, objects lacking the property have a null value; per Neo4j ordering, nulls sort last in asc and first in desc. |
Scope filters
| Field |
Type |
Required |
Description |
| objectSearchBy |
string |
No |
Restricts to internal or external objects. One of: "internal" (objects with External = false or null), "external" (objects with External = true). Omit to include all objects. |
Tag filters
| Field |
Type |
Required |
Description |
| labels |
[]string |
No |
List of tag names to filter by. |
| forceAllTags |
integer |
No |
Logical operator applied to labels. 0 = AND (must have all listed tags), 1 = OR (any listed tag), 2 = NOT (none of the listed tags). Default: 0. |
Object type filters
| Field |
Type |
Required |
Description |
| objectTypes |
[]string |
No |
Filter to objects of the listed types (e.g. "Java Method", "SQL Table"). |
| isTagsAndObjectTypes |
boolean |
No |
Controls how the tag (labels) and object-type (objectTypes) conditions combine when both are provided. If true, an object must match both (AND). If false, matching either is sufficient (OR). When only one of labels/objectTypes is provided, that filter always restricts (AND) regardless of this flag. Default: false. |
Insight filters
| Field |
Type |
Required |
Description |
| insightFilters |
[]InsightsFilter or []string |
No |
Insight categories (and optionally specific rules) to filter by. Accepts the new object format or legacy string array. |
| forceAllInsight |
integer |
No |
Logical operator applied to insightFilters. 0 = AND (all), 1 = OR (any), 2 = NOT (none). Default: 0. |
InsightsFilter object:
| Field |
Type |
Description |
| category |
string |
Insight category identifier (e.g. "iso-5055-high", "structural-flaw-critical"). |
| rules |
[]string |
Optional. Specific rule names within the category. |
Transaction filters
| Field |
Type |
Required |
Description |
| transactions |
[]Transaction |
No |
List of transactions to scope the search to. |
| forceAllTransactions |
integer |
No |
Logical operator applied to transactions. 0 = AND (in all transactions), 1 = OR (in any transaction), 2 = NOT (in none of the transactions). Default: 0. |
Transaction object:
| Field |
Type |
Description |
| value |
string |
The transaction AipId. |
| label |
string |
The transaction display name. |
Module and role filters
| Field |
Type |
Required |
Description |
| module |
[]string |
No |
Filter to objects belonging to the listed modules. Applied whenever the list is non-empty (independent of forceAllProperties). |
| roles |
[]string |
No |
Filter to objects whose RoleName is one of the listed values. |
Property (operations) filters
Property (operations) filters always restrict the result set: they are AND-combined with the base match and any keyword/tag/object-type/module/role filters, so they narrow results regardless of isTagsAndObjectTypes. forceAllProperties controls only how multiple operations combine with each other.
| Field |
Type |
Required |
Description |
| operations |
[]Operations |
No |
Property-level filter conditions. Always narrow the result set (AND-combined with the other filters). |
| forceAllProperties |
integer |
No |
Logical operator applied among the operations themselves. 0 = AND (object must satisfy all operations), 1 = OR (any operation), 2 = NOT (none). Default: 0. |
Operations object:
| Field |
Type |
Description |
| type |
string |
Property value type. One of: "string", "integer", "boolean", "enum". |
| description |
string |
Display name of the property. For "integer" operations, if id and IDs are both omitted, the server resolves the property’s identifier(s) from this description (case-insensitive match against searchable integer ObjectProperty nodes). This lets callers filter/order by a stable metric name (e.g. "Cyclomatic Complexity") without knowing the analysis-specific ids. |
| id |
string |
Property identifier. Used when matching a single property. Optional for "integer" operations when description is supplied (resolved server-side). |
| IDs |
[]string |
Alternative to id. Matches any property whose ID is in this list. Optional for "integer" operations when description is supplied (resolved server-side, and populated with all variant ids of the resolved metric). |
| operationValue |
any |
The value to compare against. Type must match the type field. For "boolean", true maps to > 0 and false maps to = 0. |
| operation |
string |
Comparison operator. String: "contains", "beginsWith", "endsWith", "=". Integer: "lessThan", "greaterThan", "lessThanEqualTo", "greaterThanEqualTo", "=". Boolean/Enum: "=". |
| existence |
boolean |
If true, checks whether the property exists on the object regardless of its value. |
To order results by a property’s value, set the top-level sortKey to that property’s description (see the sorting section above) rather than a per-operation field.
Responses
Returns the total count of matching objects and the paginated result list.
{
"count": 120,
"objects": [
{
"id": "4:d1b63f29-9752-412f-874c-d53cb97f9c0f:953115",
"data": {
"Name": "getUserById",
"FullName": "com.example.service.UserService.getUserById",
"Type": "Java Method",
"AipId": "7479",
"External": false,
"RoleName": "select",
"properties": [
{
"id": "137286",
"description": "Cyclomatic Complexity",
"value": 42
}
]
}
}
]
}
JSON representation
| Property |
Type |
Description |
| count |
integer |
Total number of objects matching all filters, before pagination. |
| objects[].id |
string |
The internal node identifier. |
| objects[].data.Name |
string |
The object short name. |
| objects[].data.FullName |
string |
The fully-qualified object name (usually includes file path or package). |
| objects[].data.Type |
string |
The object type display name (e.g. "Java Method"). |
| objects[].data.AipId |
string |
The AIP object identifier. |
| objects[].data.External |
boolean |
true if the object is external to the application; false or null if internal. |
| objects[].data.RoleName |
string |
The role assigned to the object, or null if none. |
| objects[].data.properties |
[]object |
Present (inside data) with one entry per operation whose property is identified by id, IDs, or (for "integer" operations) a resolvable description. Omitted when no operation contributes a property value. |
| objects[].data.properties[].id |
string |
The Id of whichever property actually matched on this object (relevant when the operation used IDs to match more than one candidate property). |
| objects[].data.properties[].description |
string |
The property’s display name, echoed from operations[].description. |
| objects[].data.properties[].value |
string, integer, or null |
The property’s value on this object, cast per operations[].type. null if the object doesn’t have this property. |
Error responses
| Status |
Description |
| 400 |
searchBy is missing or null. |
| 400 |
pos is not one of "start", "end", "any", or "". |
| 400 |
skip is negative (when all is false). |
| 400 |
limit is zero or negative (when all is false). |
| 404 |
Application not found. |