Tutorial: 5. Metadata API

5. Metadata API

The REST API's Metadata API provides services to support search and autocompletion scenarios, for example, to retrieve metadata from runtime, design-time and other metadata locations. The typical location of runtime metadata is the so called SAP HANA database catalog. Currently it is possible to retrieve metadata for tables, views, procedures, functions, sequnces, and schemas. The design-time location for metadata is the SAP HANA Repository. Also accessible is the metadata location used by Core Data Services (CDS). All provided services are available at the following (single) access point:

/sap/hana/xs/dt/base/metadata

The specific services are called by setting the HTTP parameter Service-Name to the appropriate value. This part of the interface only supports HTTP GET requests.

In SP09 the access mechanism for SP08 is still supported. In addition have be introduced new access mechanisms by new access points and support of metadata access based on URL. The documentation contains in addition to SP08 specification the SP09 specification in the related chapter.

The URL based metadata access documentation can ber found here..

checkMetadataExistence

Checks for the existence of a provided set of entities and returns an array of entries which specify if a specified entity exists or not.

The following contexts ares supported:

  • Runtime ( HANA DB Catalog)
  • Design Time ( HANA XS Repository)
  • Core data Services MetaData (CDS)

The following entity types are supported:

Runtime: Table, View( OLAP, Calculation, DB ), Sequence, UserDefined TableType, Procedure, Function, Schema, Role, Priviledge

Designtime: all design time artifacts for runtime entities, xsodata, xsjs, package

CDS: CDS_Entity

SP08

Example Request

var strPayloadFromJava = "{\"isSynonymSearchRequired\":false,\"isCaseInsensitiveSearchRequired\":false,\"metadata\ {\"localName\":\"home.hana.xs.dt.base.work.wolfgang.ContentToBeChecked::ROVYMETAENTITY\",\"scope\":[{\"baseLocalName\":\"ROVY\",\"type\":[\"TABLE\"],\"mode\":[\"RT\"]}]}]}";

var strHeaderServiceName = "checkMetadataExistence";
var strSapBackPack = strPayloadFromJava;
var request = new $.net.http.Request($.net.http.GET, cMetaDataAccessP);
request.headers.set('SapBackPack', strSapBackPack);
request.headers.set('Service-Name', strHeaderServiceName);
var response = client.request(request, destination).getResponse();

Input and Output Parameters

Input Parameters

NameMandatoryDefaultDescription
isSynonymSearchRequired [1]YestrueSynonym is implicitly searched (for all types)
isCaseInsensitiveSearchRequired [1],[2]YestrueCase-insensitive search
workspaceName [1],[3]Relevant for DT_INACTIVE Metadata mode
ListYesMetadata for existence check
localNameYesMetadata Object name
List [4]YesMetadata search scope
namespaceMetadata Scope: RT: Schema name; DT: Full package name
baseLocalName [5]Metadata Scope: Based-Object name
List [5]Metadata Scope: Object type
ListMetadata Scope: Object type
ListMetadata Scope: Mode

JSON Representation

{                              

{
"isSynonymSearchRequired": false,
"isCaseInsensitiveSearchRequired": false,
"workspaceName": "MyWorkspace",
"metadata": [
{
"localName": "MyObjectName",
"scope": [
{
"namespace": "MyNameSpace",
"baseLocalName": "MyBaseLocalName",
"baseType": [
"TABLE",
"VIEW"
],
"type": [
"COLUMN"
],
"mode": [
"RT",
"DT_INACTIVE"
]
}
]
}
]
}

Output Parameters

NameMandatoryDefaultDescription
ListYMetadata that is checked; size is equal to the input metadata list
localNameYMetadata Object name
isExistYtrueMetadata exist
List [6]YMetadata exist
namespaceMetadata Scope: RT: Schema name; DT: Full package name
separator [7]Metadata: separator between namespace and localName or baseLocalName
baseLocalNameMetadata Scope: Based-Object name
baseTypeMetadata: Based-Object type
typeMetadata: Object type
mode [8]Metadata: Mode
descMetadata: Description

JSON Representation

{                                      

"metadata": [
{
"localName": "MyLocalName",
"isExist": true,
"exist": [
{
"namespace": "MyNamespace",
"separator": ".",
"baseLocalName": "MyLocalName",
"baseType": "TABLE",
"type": "COLUMN",
"mode": "RT"
}
]
}
]
}

[1] artifactType, artifactSubType: based on artifact's file name <artifactType>-<artifactSubType>

[1] Client-side user aspect: Parameters which usually are fixed for multiple user (scenario) requests; this configuration could be set in advance, and user does not have to set it explicitly for each request
[2] isCaseInsensitiveSearchRequired: it can be used for searching the original object names
[3] workspaceName: an additional filter for DT_INACTIVE mode; user is mandatory (implicit) filter Based on: _SYS_REPO.INACTIVE_OBJECT table - OWNER and WORKSPACE fields
[4] scope: if empty: no scope limit
[5] baseLocalName and baseType: supports scope dependency with other object, for example, column depending on table
[6] scopeExclude: avoid scope that is being covered by client-side search (based on local files)
[7] separator: RT - ".", DT - "::" or "\" (according to MetadataType)
[8] mode: output mode resolution depends on input mode resolution
For example, if RT mode is requested, no distinction is made between RT_DIRECT and RT_INDIRECT Note the following differences compared to the checkMetadataExistence API: Based on full names (localName or / and namespace - not necessarily a fully qualified name), no sort, no limit on the maximum result.

SP09

Access Point

/sap/hana/xs/dt/base/metadata/validation_result

Example Request

var strPayloadFromJava = "{\"isSynonymSearch\":false,\"isCaseInsensitiveSearch\":false,\"metadata\":[{\"name\":\"P_USERS_\",\"context\":[{\"schema\":\"SYS\",\"mode\":[{\"main\":\"RT\"},{\"main\":\"DT\"}],\"type\":[{\"main\":\"TABLE\"},{\"main\":\"VIEW\"},{\"main\":\"PROCEDURE\"}]}]}]}";;

var strSapBackPack = strPayloadFromJava;
var request = new $.net.http.Request($.net.http.GET, "/sap/hana/xs/dt/base/metadata/validation_result");
request.headers.set('SapBackPack', strSapBackPack);
request.headers.set('Service-Name', strHeaderServiceName);
var response = client.request(request, destination).getResponse();

Input and Output Parameters

Input Parameters

NameMandatoryDefaultDescription
isSynonymSearchRequired [1]YestrueSynonym is implicitly searched (for all types)
isCaseInsensitiveSearchRequired [1],[2]YestrueCase-insensitive search
workspaceName [1],[3]Relevant for DT_INACTIVE Metadata mode
ListYesMetadata for existence check
localNameYesMetadata Object name
List [4]YesMetadata search scope
namespaceMetadata Scope: RT: Schema name; DT: Full package name
baseLocalName [5]Metadata Scope: Based-Object name
List [5]Metadata Scope: Object type
ListMetadata Scope: Object type
ListMetadata Scope: Mode

JSON Representation

{

"isSynonymSearch": false,
"isCaseInsensitiveSearch": false,
"workspaceName": "MyWorkspace",
"isUriExclude": false,
"metadata": [
{
"name": "USERS",
"context": [
{
"schema": "SYS",
"mode": [
{
"main": "RT"
},
{
"main": "DT"
}
],
"type": [
{
"main": "TABLE"
},
{
"main": "VIEW"
},
{
"main": "PROCEDURE"
}
]
}
]
},
{
"name": "ZZZUSERS",
"context": [
{
"schema": "SYS",
"mode": [
{
"main": "RT"
}
],
"type": [
{
"main": "TABLE"
},
{
"main": "VIEW"
}
]
}
]
},
{
"name": "GET_OBJECT_VERSION",
"context": [
{
"schema": "SYS",
"mode": [
{
"main": "RT"
}
],
"type": [
{
"main": "TABLE"
},
{
"main": "PROCEDURE"
}
]
}
]
}
]
}

Output Parameters

NameMandatoryDefaultDescription
ListYMetadata that is checked; size is equal to the input metadata list
localNameYMetadata Object name
isExistYtrueMetadata exist
List [6]YMetadata exist
namespaceMetadata Scope: RT: Schema name; DT: Full package name
separator [7]Metadata: separator between namespace and localName or baseLocalName
baseLocalNameMetadata Scope: Based-Object name
baseTypeMetadata: Based-Object type
typeMetadata: Object type
mode [8]Metadata: Mode
descMetadata: Description

JSON Representation

{

"metadata": [
{
"name": "USERS",
"isExist": true,
"exist": [
{
"uri": "http://host:port/sap/hana/xs/dt/base/metadata?schema=SYS&objectName=USERS&mainMode=RT&mainType=VIEW",
"schema": "SYS",
"separator": ".",
"objectName": "USERS",
"mainMode": "RT",
"subMode": "DIRECT",
"mainType": "VIEW",
"subType": "ROW",
"description": "MyDescription"
}
]
},
{
"name": "ZZZUSERS",
"isExist": false
},
{
"name": "GET_OBJECT_VERSION",
"isExist": true,
"exist": [
{
"uri": "http://host:port/sap/hana/xs/dt/base/metadata?schema=SYS&objectName=GET_OBJECT_VERSION&mainMode=RT&mainType=PROCEDURE",
"schema": "SYS",
"separator": ".",
"objectName": "GET_OBJECT_VERSION",
"mainMode": "RT",
"subMode": "DIRECT",
"mainType": "PROCEDURE",
"subType": "BULITIN",
"description": "MyDescription"
}
]
}
]
}

[1] artifactType, artifactSubType: based on artifact's file name <artifactType>-<artifactSubType>

[1] Client-side user aspect: Parameters which usually are fixed for multiple user (scenario) requests; this configuration could be set in advance, and user does not have to set it explicitly for each request
[2] isCaseInsensitiveSearchRequired: it can be used for searching the original object names
[3] workspaceName: an additional filter for DT_INACTIVE mode; user is mandatory (implicit) filter Based on: _SYS_REPO.INACTIVE_OBJECT table - OWNER and WORKSPACE fields
[4] scope: if empty: no scope limit
[5] baseLocalName and baseType: supports scope dependency with other object, for example, column depending on table
[6] scopeExclude: avoid scope that is being covered by client-side search (based on local files)
[7] separator: RT - ".", DT - "::" or "\" (according to MetadataType)
[8] mode: output mode resolution depends on input mode resolution
For example, if RT mode is requested, no distinction is made between RT_DIRECT and RT_INDIRECT Note the following differences compared to the checkMetadataExistence API: Based on full names (localName or / and namespace - not necessarily a fully qualified name), no sort, no limit on the maximum result.

checkMetadataExistence URI

Checks for the existence of a specifc resource (entity) uniqly expressed as an HTTP universal resource indicator (URI). checkMetadataExistence URI returns an array of entries which specify if a given entity is exists or not.

SP08

Example Request

var strPayloadFromJava = "{}";

var strHeaderServiceName = "checkMetadataExistence";
var strSapBackPack = strPayloadFromJava;
var strAccessPath = cMetaDataAccessP + '/VIEW/RT/TABLES';
var request = new $.net.http.Request($.net.http.GET, strAccessPath);
request.headers.set('SapBackPack', strSapBackPack);
request.headers.set('Service-Name', strHeaderServiceName);
var response = client.request(request, destination).getResponse();

Example Response

List

localName
isExist
List [6]
namespace
separator [7]
baseLocalName
baseType
type
mode [8]
desc

getMetadataSuggestion

The getMetadataSuggestion service provides the functionality required to retrieve metadata from a set of entities whose names match a specified text pattern. The get-metadata tool can be used to support autocompletion functionality in a related text editor or to support advanced search functionality provided in other parts of the tool.

SP08

Example Request

var strPayloadFromJava = "{\"isFullNameSearchRequired\":false,\"isSynonymSearchRequired\":false,\"isCaseInsensitiveSearchRequired\":false,\"metadataStringSearchMode\":false,\"metadataNamePart\":\"S\",\"maxResultsNumber\":20}";

var strHeaderServiceName = "getMetadataSuggestion";
var strSapBackPack = strPayloadFromJava;
var request = new $.net.http.Request($.net.http.GET, cMetaDataAccessP);
request.headers.set('SapBackPack', strSapBackPack);
request.headers.set('Service-Name', strHeaderServiceName);
var response = client.request(request, destination).getResponse();

Input and Output Parameters

Input Parameters

NameMandatoryDefaultDescription
isSynonymSearchRequired [1]YestrueSynonym is implicitly searched (for all types)
isCaseInsensitiveSearchRequired [1],[2]YestrueCase-insensitive search
workspaceName [1],[3]Relevant for DT_INACTIVE Metadata mode
ListYesMetadata for existence check
localNameYesMetadata Object name
List [4]YesMetadata search scope
namespaceMetadata Scope: RT: Schema name; DT: Full package name
baseLocalName [5]Metadata Scope: Based-Object name
List [5]Metadata Scope: Object type
ListMetadata Scope: Object type
ListMetadata Scope: Mode

JSON Representation

{                                      

"isFullNameSearchRequired": false,
"isSynonymSearchRequired": false,
"isCaseInsensitiveSearchRequired": false,
"metadataStringSearchMode": "PATTERN",
"workspaceName": "MyWorkspace",
"metadataSort": [
"METADATA_TYPE",
"ALPHABET_LOCAL_NAME"
],
"metadataModePriorityFilter": [
"RT",
"DT_ACTIVE"
],
"maxResultsNumber": 10,
"metadataNamePart": "abc",
"metadataScope": [
{
"namespace": "MyNameSpace",
"baseLocalName": "MyBaseLocalName",
"baseType": [
"TABLE",
"VIEW"
],
"type": [
"COLUMN"
],
"mode": [
"RT",
"DT_ACTIVE",
"DT_INACTIVE"
]
}
]
}

Output Parameters

NameMandatoryDefaultDescription
ListYMetadata that is checked; size is equal to the input metadata list
localNameYMetadata Object name
isExistYtrueMetadata exist
List [6]YMetadata exist
namespaceMetadata Scope: RT: Schema name; DT: Full package name
separator [7]Metadata: separator between namespace and localName or baseLocalName
baseLocalNameMetadata Scope: Based-Object name
baseTypeMetadata: Based-Object type
typeMetadata: Object type
mode [8]Metadata: Mode
descMetadata: Description

JSON Representation

{                                  

"isPartialResult": false,
"metadata": [
{
"localName": "MyLocalName",
"namespace": "MyNamespace",
"separator": ".",
"baseLocalName": "MyBaseLocalName",
"baseType": "TABLE",
"type": "COLUMN",
"mode": "RT",
"desc": "MyDescription",
"fuzzyScore": 0.8
}
]
}

[1] Client-side user aspect: Parameters which usually are fixed for multiple user (scenario) requests; therefore, these configuration could be set in advance, and user doesn't have to set it explicitly for each request
[2] isFullNameSearchRequired: not relevant for SCHEMA and PACKAGE artifact type (in this case: namespace = localName)
[3] isCaseInsensitiveSearchRequired: it can be used for searching the original object names
[4] Search modes.
[5] workspaceName: an additional filter for DT_INACTIVE mode; user is mandatory (implicit) filter Based on: _SYS_REPO.INACTIVE_OBJECT table - OWNER and WORKSPACE fields
[6] metadataSort: if empty: no result sort; Supports sorting according to multiple prioritized parameters (similar to SQL ORDER BY) typical editor request would not use sorting as results should be combined with local search results (which done in parallel on the client-side) For fuzzy search the sorting is done anyway according to the fuzzy score; if metadataSort provided then fuzzy score search is the last sort step
[7] metadataModePriorityFilter: if provided then duplicated objects output are being filtered according the provided priority list e.g. DT, RT: remove (filter) RT object which exists also as DT object in output
[8] metadataNamePart: input data from user; it can also be with empty value, although result would be too "vague"
[9] metadataScope: if empty: no scope limit
[10] baseLocalName and baseType: supports scope dependency with other object, e.g. column dependend on table
[11] metadataScopeExclude: avoid scope that is being covered by client-side search (based on local files)
[12] separator: RT - ".", DT - "::" or "\" (according to MetadataType)
[13] mode: output mode resolution depends on input mode resolution e.g. if RT mode requested then there will not be a distinguish between RT_DIRECT and RT_INDIRECT
[14] fuzzyScore: used for potential client-side cache support
Special implicit behavior a Balanced search When possible results exceeds the limit - results spreads (distributed) equally (as much as possible) between the different channels (mode and type) b Complex search Complex search: full name search while input text includes name separators ("::",".")

SP09

Access Point

/sap/hana/xs/dt/base/metadata/search_result

Example Request

var strPayloadFromJava = "{\"metadataNamePart\":\"TT_TEST_WP\",\"metadataStringSearchMode\":\"PATTERN\",\"maxResultsNumber\":10,\"isFullNameSearch\":false,\"isSynonymSearch\":false,\"isCaseInsensitiveSearch\":true,\"metadataSort\":[\"ALPHABET_OBJECT_NAME\",\"ALPHABET_SCHEMA_NAMESPACE\"],\"metadataContext\":[{\"mode\":[{\"main\":\"RT\"}],\"type\":[{\"main\":\"TABLE\"}]}]}";

var strSapBackPack = strPayloadFromJava;
var request = new $.net.http.Request($.net.http.GET, "/sap/hana/xs/dt/base/metadata/search_result");
request.headers.set('SapBackPack', strSapBackPack);
request.headers.set('Service-Name', strHeaderServiceName);
var response = client.request(request, destination).getResponse();

Input and Output Parameters

Input Parameters

NameMandatoryDefaultDescription
isSynonymSearchRequired [1]YestrueSynonym is implicitly searched (for all types)
isCaseInsensitiveSearchRequired [1],[2]YestrueCase-insensitive search
workspaceName [1],[3]Relevant for DT_INACTIVE Metadata mode
ListYesMetadata for existence check
localNameYesMetadata Object name
List [4]YesMetadata search scope
namespaceMetadata Scope: RT: Schema name; DT: Full package name
baseLocalName [5]Metadata Scope: Based-Object name
List [5]Metadata Scope: Object type
ListMetadata Scope: Object type
ListMetadata Scope: Mode

JSON Representation

{

"metadataContext": [
{
"mode": [
{
"main": "RT"
},
{
"main": "DT"
}
],
"type": [
{
"main": "TABLE_TYPE"
},
{
"main": "SCHEMA"
}
]
},
{
"mode": [
{
"main": "RT"
}
],
"type": [
{
"main": "PROCEDURE"
},
{
"main": "TABLE",
"sub": "COLUMN"
},
{
"main": "FUNCTION",
"property": [
{
"key": "TABLE_FUNCTION"
}
]
}
]
},
{
"mode": [
{
"main": "DT"
}
],
"type": [
{
"main": "VIEW",
"sub": "ANALYTICVIEW"
},
{
"main": "CDS_DD",
"sub": "SCALAR"
},
{
"main": "CDS_DD",
"sub": "STRUCTURE"
}
]
}
]
}

Output Parameters

NameMandatoryDefaultDescription
ListYMetadata that is checked; size is equal to the input metadata list
localNameYMetadata Object name
isExistYtrueMetadata exist
List [6]YMetadata exist
namespaceMetadata Scope: RT: Schema name; DT: Full package name
separator [7]Metadata: separator between namespace and localName or baseLocalName
baseLocalNameMetadata Scope: Based-Object name
baseTypeMetadata: Based-Object type
typeMetadata: Object type
mode [8]Metadata: Mode
descMetadata: Description

JSON Representation

{

"isPartialResult": false,
"metadata": [
{
"uri": "http://host:port/sap/hana/xs/dt/base/metadata?schema=SYS&objectName=CACHE_P_AUDITEDUSERS_&mainMode=RT&mainType=TABLE",
"schema": "SYS",
"separator": ".",
"objectName": "CACHE_P_AUDITEDUSERS_",
"mainMode": "RT",
"subMode": "DIRECT",
"mainType": "TABLE",
"subType": "ROW",
"description": "MyDescription",
"searchScore": 0.8
},
{
"uri": "http://host:port/sap/hana/xs/dt/base/metadata?schema=SYS&objectName=CACHE_P_USERS_&mainMode=RT&mainType=TABLE",
"schema": "SYS",
"separator": ".",
"objectName": "CACHE_P_USERS_",
"mainMode": "RT",
"subMode": "DIRECT",
"mainType": "TABLE",
"subType": "ROW",
"description": "MyDescription",
"searchScore": 0.8
}
]
}

[1] Client-side user aspect: Parameters which usually are fixed for multiple user (scenario) requests; therefore, these configuration could be set in advance, and user doesn't have to set it explicitly for each request
[2] isFullNameSearchRequired: not relevant for SCHEMA and PACKAGE artifact type (in this case: namespace = localName)
[3] isCaseInsensitiveSearchRequired: it can be used for searching the original object names
[4] Search modes.
[5] workspaceName: an additional filter for DT_INACTIVE mode; user is mandatory (implicit) filter Based on: _SYS_REPO.INACTIVE_OBJECT table - OWNER and WORKSPACE fields
[6] metadataSort: if empty: no result sort; Supports sorting according to multiple prioritized parameters (similar to SQL ORDER BY) typical editor request would not use sorting as results should be combined with local search results (which done in parallel on the client-side) For fuzzy search the sorting is done anyway according to the fuzzy score; if metadataSort provided then fuzzy score search is the last sort step
[7] metadataModePriorityFilter: if provided then duplicated objects output are being filtered according the provided priority list e.g. DT, RT: remove (filter) RT object which exists also as DT object in output
[8] metadataNamePart: input data from user; it can also be with empty value, although result would be too "vague"
[9] metadataScope: if empty: no scope limit
[10] baseLocalName and baseType: supports scope dependency with other object, e.g. column dependend on table
[11] metadataScopeExclude: avoid scope that is being covered by client-side search (based on local files)
[12] separator: RT - ".", DT - "::" or "\" (according to MetadataType)
[13] mode: output mode resolution depends on input mode resolution e.g. if RT mode requested then there will not be a distinguish between RT_DIRECT and RT_INDIRECT
[14] fuzzyScore: used for potential client-side cache support

Special implicit behavior a Balanced search When possible results exceeds the limit - results spreads (distributed) equally (as much as possible) between the different channels (mode and type) b Complex search Complex search: full name search while input text includes name separators ("::",".")

URL based metadata access

Checks for the existence of a provided URL parameters and returns an array of entries which contain the expected metadata in various formats..

Additional expand values: BI, BI&DATA. Types supported: TABLE, VIEW(ANALYTICAL, DB View, Calculation View), Procedure, Function, CDS_ENTITY.

SP09 only.

Example Request

geturl = $.ajax({

url: "/sap/hana/xs/dt/base/metadata?expand=DATA&namespace=sap.hana.xs.dt.base.server.DTAccess&objectName=dtaa&mainMode=DT&subMode=ACTIVE&mainType=VIEW",
type: 'GET',
headers:{
"Content-Type": strheaderContenttType,
"X-CSRF-Token": frames.securityToken
},

Input and Output Parameters

URL Parameters

NameMandatoryDefaultDescription
isSynonymSearchRequired [1]YestrueSynonym is implicitly searched (for all types)
isCaseInsensitiveSearchRequired [1],[2]YestrueCase-insensitive search
workspaceName [1],[3]Relevant for DT_INACTIVE Metadata mode
ListYesMetadata for existence check
localNameYesMetadata Object name
List [4]YesMetadata search scope
namespaceMetadata Scope: RT: Schema name; DT: Full package name
baseLocalName [5]Metadata Scope: Based-Object name
List [5]Metadata Scope: Object type
ListMetadata Scope: Object type
ListMetadata Scope: Mode

Output Parameters

NameMandatoryDefaultDescription
ListYMetadata that is checked; size is equal to the input metadata list
localNameYMetadata Object name
isExistYtrueMetadata exist
List [6]YMetadata exist
namespaceMetadata Scope: RT: Schema name; DT: Full package name
separator [7]Metadata: separator between namespace and localName or baseLocalName
baseLocalNameMetadata Scope: Based-Object name
baseTypeMetadata: Based-Object type
typeMetadata: Object type
mode [8]Metadata: Mode
descMetadata: Description

JSON Representation


{

"metadata": [
{
"uri": "http://iltlvl700.emea.global.corp.sap:8000/sap/hana/xs/dt/base/metadata?objectName=SYSTEM&mainMode=RT&mainType=SCHEMA",
"objectName": "SYSTEM",
"mainMode": "RT",
"subMode": "DIRECT",
"mainType": "SCHEMA",
"owner": "SYSTEM",
"version": "133146"
}
]
}

[1] artifactType, artifactSubType: based on artifact's file name <artifactType>-<artifactSubType>

[1] Client-side user aspect: Parameters which usually are fixed for multiple user (scenario) requests; this configuration could be set in advance, and user does not have to set it explicitly for each request
[2] isCaseInsensitiveSearchRequired: it can be used for searching the original object names
[3] workspaceName: an additional filter for DT_INACTIVE mode; user is mandatory (implicit) filter Based on: _SYS_REPO.INACTIVE_OBJECT table - OWNER and WORKSPACE fields
[4] scope: if empty: no scope limit
[5] baseLocalName and baseType: supports scope dependency with other object, for example, column depending on table
[6] scopeExclude: avoid scope that is being covered by client-side search (based on local files)
[7] separator: RT - ".", DT - "::" or "\" (according to MetadataType)
[8] mode: output mode resolution depends on input mode resolution For example, if RT mode is requested, no distinction is made between RT_DIRECT and RT_INDIRECT Note the following differences compared to the checkMetadataExistence API: Based on full names (localName or / and namespace - not necessarily a fully qualified name), no sort, no limit on the maximum result.