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

name (string)

The application name. Must be properly encoded; back-quote character is not allowed.

Query parameters

date (string)

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

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

application/json

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.