This document describes the Metadata Management (MM) SDK which is based on a REST API.
Copyright © Meta Integration Technology, Inc. 1997-2023.
All Rights Reserved. Meta Integration® is a registered trademark of Meta Integration Technology, Inc. Other product and company names (or logos) mentioned herein may be the trademarks of their respective owners. http://www.metaintegration.com |
New or improved API methods |
Group |
Summary |
POST /dataModel/entityRelationship |
Data Model |
A new API function to allow the user to create an Entity Relationship between two classifiers. |
DELETE /dataModel/entityRelationship |
Data Model |
A new API function to allow the user to delete an Entity Relationship between two classifiers. |
POST /repository/dashboard/import |
Repository |
A new API function to allow the user to import the dashboard JSON definition from a file. |
POST /repository/dashboard/export |
Repository |
A new API function to allow the user to export the JSON definition of a dashboard to a file. |
POST /semanticMapping/semanticLink |
Semantic Mapping |
A new API function to allow the user to create a new semantic link between two objects. |
DELETE /semanticMapping/semanticLink |
Semantic Mapping |
A new API function to allow the user to delete a semantic link between two objects. |
GET /entities/{objectId}GET /entities/validateMQLQueryGET /entities/countMQLQueryGET /relationships/{objectId}GET /relationships/count/{objectId} |
Browse |
New parameter "mqlVersion": The MQL version. The current MQL version is 3. Specify a number less than 3 if you want to use deprecated syntax and/or MQL system attributes. |
POST /entities/executeMQLQueryPOST /entities/getAttributeValueCounts |
Browse |
New property "mqlVersion" of Requst body: The MQL version. The current MQL version is 3. Specify a number less than 3 if you want to use deprecated syntax and/or MQL system attributes. |
POST /entities/upgradeMQLQuery |
Browse |
Upgrade the Request body to the latest MQL syntax |
POST /License/updateLicense |
License |
Update license |
POST /repository/model/export |
Repository |
New parameter exportDataProfilingAndSampling |
For more information about the MQL version, please refer to MQL Documentation.
Deprecation of API methods, parameters or schemas |
Replacements |
More information |
POST /repository/semanticMapping/exportCSV |
POST /repository/model/export |
Consolidate the import/export APIs |
POST /repository/semanticMapping/importCSV |
POST /repository/model/import |
Consolidate the import/export APIs |
POST /operations/glossary/exportAndDownloadCSV |
POST /repository/model/export |
Consolidate the import/export APIs |
PUT /entities/glossary/classify |
POST /semanticMapping/semanticLink |
Improve mapped data documentation |
PUT /entities/glossary/unclassify |
DELETE /semanticMapping/semanticLink |
Improve mapped data documentation |
POST /repository/createRelationship |
POST /dataModel/entityRelationship |
New relationships as object types |
The following table list API methods removed with MM 11.1.0 and the recommended methods to replace them. Please ensure your applications do not use any of these methods before upgrading to MM 11.1.0.
Removal of API methods, parameters or schemas |
Replacements |
More information |
New or improved API methods |
Group |
Summary |
GET /entities/validateMQLQuery |
Browse |
New parameter "scope": Scope conditions in MQL syntax to further restrict the models or objects in the FROM |
POST /entities/executeMQLQuery |
Browse |
New field "scope" in the request body: Scope conditions in MQL syntax to further restrict the models or objects in the FROM |
GET /entities/countMQLQuery |
Browse |
New parameter "scope": Scope conditions in MQL syntax to further restrict the models or objects in the FROM |
POST /entities/executeWorksheet |
Browse |
Get the objects of a worksheet |
GET /entities/countWorksheet |
Browse |
Get the total number of objects of a worksheet |
POST /entities/getAttributeValueCounts |
Browse |
New field "scope" in the request body: Scope conditions in MQL syntax to further restrict the models or objects in the FROM |
POST /entities/Dataprofiling/{objectId} |
Browse |
New parameter ""sensitivityLabel: allow the user to propose a sensitivity label |
GET /repository/dataClasses/ |
Data Classes |
Rebrand "Semantic Type" as "Data Class" |
GET /repository/dataClasses/{objectId} |
Data Classes |
Rebrand "Semantic Type" as "Data Class" |
PUT /repository/dataClasses/{objectId} |
Data Classes |
Rebrand "Semantic Type" as "Data Class" |
POST /dataMapping/exportScript |
Data Mapping |
Export a Data Mapping to data mapping script format files using the Default Server |
POST /dataMapping/importScript |
Data Mapping |
Import the data mapping from data mapping format script files |
PUT /entities/glossary/classify/{objectId} |
Glossary |
Classify an object with an existing term or using a new term |
PUT /entities/glossary/unclassify/{objectId} |
Glossary |
Unclassify an object |
POST /operations/glossary/exportAndDownloadCSV |
Glossary |
Download glossary terms that belong to a term or a list of terms recursively |
GET /lineage/getOperations/{startingId} |
Lineage |
Get operations/transformation logic |
GET /operations/listOperations |
Operation |
Get operations |
POST /operations/downloadOperationLog/{operationId} |
Operation |
Download the log of an operation |
POST /repository/metaModel/importXML |
Repository |
Import the meta model from an XML file |
POST /repository/metaModel/exportXML |
Repository |
Export a meta model package as an XML file |
POST /repository/model/import |
Repository |
Import the custom model or imported model from a zip file which contains the CSV files |
POST /repository/model/export |
Repository |
Export the custom model or imported model as a zip file which contains the CSV files |
POST /repository/backup |
Repository |
This function now backs up to a zip file |
POST /repository/restore |
Repository |
This function now restores from a zip file |
GET /admin/grants/getGlobalRoles |
Roles |
Get the global role(s) of a user or user group |
GET /admin/grants/getGlobalGrantees |
Roles |
Get the users or user groups who have a particular global role |
PUT /admin/grants/grantGlobalRoles |
Roles |
Grant a global role to a user or user group |
PUT /admin/grants/revokeGlobalRole |
Roles |
Revoke a global role from a user or user group |
GET /admin/grants/getObjectRoles/{objectId} |
Roles |
Get the role(s) of a user or user group on an object |
GET /admin/grants/getObjectGrantees/{objectId} |
Roles |
Get the users or user groups who have a particular role on an object |
PUT /admin/grants/grantObjectRole/{objectId} |
Roles |
Grant a role on an object to a user or user group |
PUT /admin/grants/revokeObjectRole/{objectId} |
Roles |
Revoke a role on an object from a user or user group |
POST /admin/grants/importGlobalRolesCSV |
Roles |
Import the global roles from a CSV file |
POST /admin/grants/exportGlobalRolesCSV |
Roles |
Export the global roles as a CSV file |
POST /admin/grants/importObjectRolesCSV |
Roles |
Import the object roles from a CSV file |
POST /admin/grants/exportObjectRolesCSV |
Roles |
Export the object roles as a CSV file |
GET /repository/sensitivityLabels/ |
Sensitivity Labels |
Get sensitivity labels |
GET /repository/sensitivityLabels/{objectId} |
Sensitivity Labels |
Get the sensitivity label associated with an object |
PUT /repository/sensitivityLabels/{objectId} |
Sensitivity Labels |
Maintain the sensitivity label associated with an object |
PUT /admin/users |
Users |
In order to update a user's password an old password is required now |
Deprecation of API methods, parameters or schemas |
Replacements |
More information |
POST /repository/databaseDocumentation/exportCSV |
POST /repository/model/export |
Consolidate the import/export APIs |
GET /repository/semanticTypes |
GET /repository/dataClasses |
Rebrand "Semantic Type" as "Data Class" |
GET /repository/semanticTypes/{objectId} |
GET /repository/dataClasses/{objectId} |
Rebrand "Semantic Type" as "Data Class" |
PUT /repository/semanticTypes/{objectId} |
PUT /repository/dataClasses/{objectId} |
Rebrand "Semantic Type" as "Data Class" |
POST /entities/executeMQLQuery parameter legacyEntityFormat |
This function will always return results in the MQL Entity Format |
|
POST /entities/getAttributeDistinctValueCounts |
POST /entities/getAttributeValueCounts |
The new function is more efficient |
POST /entities/getInferredSemanticObjects |
POST /entities/executeMQLQuery |
Use the system attribute "Inferred Documentation" to get inferred documentation of the object |
POST /dataMapping/exportExcel |
POST /dataMapping/exportScript |
The output of the new function can be edited by the user and imported back via POST /dataMapping/importScript |
POST /entities/DataProfiling/{objectId} parameter hideData |
new parameter sensitivityLabel | Use sensitivity label to hide data |
GET /types/listEntityTypes |
GET /types/listObjectTypes |
Rebrand entity type as object type |
GET /repository/customAttributes/{nameOrId} |
POST /repository/metaModel/exportXML |
Rebrand custom attributes as Meta model attribute types. Export the Meta model to view the definition of any attribute type. |
POST /operations/glossary/exportAndDownloadCSV |
POST /repository/model/export |
Specify the objectIds parameter to export a term or a list of terms. |
PUT /repository/setCustomAttributes |
PUT /repository/setAttributes |
Rebrand custom attributes as Meta model attribute types |
GET /entities/DataProfiling/{objectId} |
Deprecated the following fields in the result: totalSemanticTypeRows, invalidSemanticTypeValues and inferredSemanticTypes. |
Removed data classes from data profiling. Note that these fields are not set in the output. |
PUT /entities/DataProfiling/{objectId} |
Deprecated the following fields in the Request body: totalSemanticTypeRows, invalidSemanticTypeValues and inferredSemanticTypes. |
Removed data classes from data profiling. Note that these fields in the input will be ignored. |
POST /entities/glossary parameter categoryPath |
new parameter termPath |
Removed category from glossary |
GET /types/listAttributeTypes parameter entityType |
new parameter objectType |
Rebrand entity type as object type |
GET /types/listGroupTypes parameter entityType |
new parameter objectType |
Rebrand entity type as object type |
Schema Entity's field entityType |
new field objectType |
Rebrand entity type as object type. Note that entityType and objectType are set to the same value for MM 11.0. |
Schema Entity's field term |
new field terms |
Object can be defined by multiple terms. The field term will store the first term if the object has multiple terms. |
Schema Entity's field semanticTypes |
new field dataClassifications |
Rebrand semantic type as data classification. Note that semanticTypes and dataClassifications are set to the same value for MM 11.0. |
Enumeration type ReferenceType used by Schema GlossaryTermReference's type field |
Replaced "More General" with "Specializes", "More Specific" with "Generalizes". Added "Possible Value" and "Possible Value Of". |
New meta model relationships for Term |
Schema ModelSettings_Create's field "Send email notification when an import" |
Notifications are sent to model watchers for model changes and metadata managers for import failures. There are no more notification options in the content. |
|
Schema ModelSettings_Create_Data's field "Data hiding" |
new field "Hide data using Sensitivity Label" | Data hiding is controlled by the sensitivity label defined on the field |
Schema ModelSettings_Set's field "Send email notification when an import" |
Notifications are sent to model watchers for model changes and metadata managers for import failures. There are no more notification options in the content. |
The following table list API methods removed with MM 11.0.0 and the recommended methods to replace them. Please ensure your applications do not use any of these methods before upgrading to MM 11.0.0.
Removal of API methods, parameters or schemas |
Replacements |
More information |
GET /auth/login |
POST /auth/login |
Deprecated with MM 10.1.0 as the POST method is more secure |
GET /auth/loginPlainText |
POST /auth/loginPlainText |
Deprecated with MM 10.1.0 as the POST method is more secure |
GET /auth/loginOAuth2 |
POST /auth/loginOAuth2 |
Deprecated with MM 10.1.0 as the POST method is more secure |
POST /entities |
POST /entities/executeMQLQuery |
Deprecated with MM 10.1.0 as the new function provides better functionality |
POST /entities/countEntities |
GET /entities/countMQLQuery |
Deprecated with MM 10.1.0 as the new function provides better functionality |
GET /repository/getModelImportParameters |
GET /repository/importModel |
Deprecated with MM 10.1.0 as the new function provides better functionality |
PUT /repository/setModelImportParameters |
PUT /repository/importModel |
Deprecated with MM 10.1.0 as the new function provides better functionality |
GET /repository/getDataParameters |
GET /repository/importModel |
Deprecated with MM 10.1.0 as the new function provides better functionality |
PUT /repository/setDataParameters |
PUT /repository/importModel |
Deprecated with MM 10.1.0 as the new function provides better functionality |
POST /operations/repositoryExport/attachFile |
POST /repository/attachments/{objectId} |
Deprecated with MM 10.1.0 as the new function provides better functionality |
POST /search/entity |
POST /entities/executeMQLQuery |
Deprecated with MM 10.1.0 as the new function provides better functionality |
POST /entities/getAttributeStatistics |
Deprecated with MM 10.1.0 as this function was rarely used by users |
|
POST /entities/getAttributeStatisticsCount |
Deprecated with MM 10.1.0 as this function was rarely used by users |
|
GET /admin/grants/{objectId} |
GET /admin/grants/getObjectRoles/{objectId} |
This function no longer complies with the MM 11.0 object role framework |
PUT /admin/grants/{objectId}/{userGroupId} |
PUT /admin/grants/grantObjectRole/{objectId} and PUT /admin/grants/revokeObjectRole/{objectId} |
This function no longer complies with the MM 11.0 object role framework |
GET /admin/stewards/{objectId} |
GET /admin/grants/getObjectGrantees/{objectId} |
This function no longer complies with the MM 11.0 object role framework |
PUT /admin/stewards/{objectId} |
PUT /admin/grants/grantObjectRole/{objectId} and PUT /admin/grants/revokeObjectRole/{objectId} |
This function no longer complies with the MM 11.0 object role framework |
POST /repository/backup parameter backupAllVersions |
backupCachedModels |
This parameter is deprecated with MM 10.1.0. |
All API methods with a few exceptions take a header parameter "api_key" to allow user authentication. A valid value of the "api_key" can be obtained by calling the API method POST "/auth/loginPlainText" or POST "/auth/login". If you call POST "/auth/loginPlainText" the response string itself can be used as the "api_key". If you call POST "/auth/login" the "result" property of the response object can be used as the "api_key".
If you are making API calls via the MM REST API SDK Documentation (or REST API UI), you only need to login once by providing the user name and password and clicking on the Login button in the upper right corner. The MM REST API UI will inject the "api_key" header in all subsequent calls.
An "api_key" will become invalid after a "/auth/logout" call is made, the Login timeout is reached, or the Logout button in the upper right corner of the MM REST API UI is clicked.
All API methods with a few exceptions return a JSON "ResponseObject" in the following format:
{
"result": "...",
"error": {
"errorCode": "...",
"message": "..."
}
}
In general if a GET method, or sometimes a POST method, is executed successfully, the "result" property will contain the data it retrieved. If a PUT or DELETE method is executed successfully, the "result" property will usually be an empty string.
Following are a few common error codes:
Some API methods may produce more than one content type. For example, POST /operations/repositoryImport/downloadModelAttachment produces content type application/x-download when an attachment file is downloaded successfully or application/json if there is an error. You need to set your request Accept header appropriately to receive the response.
If you get a Response Code 500 with such a function that may produce more than one media type, try to switch the media type from one to the other, for example, from application/x-download to application/json.
All API calls are logged in the MM system log with the following status information:
Following are a few examples of the log messages:
Object ID is mostly used as a path parameter, sometimes a query parameter, and other times a property in the JSON body. The object can be a repository object, model object, glossary term, user, or group etc.
An object ID can take the following formats:
The "result" property of many API methods represents Entity object(s) or objects that embed Entity objects. Some system attributes of an Entity object, such as Context, "Business Name Inferred Origin" and "Business Description Inferred Origin", may also contain Entity objects. For details on MM system attributes, refer to MQL Documentation.
A legacy Entity format consists of the following properties. Not all properties are required.
{
"id": "73555_35",
"objectType": {
"name": "RDBMS Relational Database (Database).Table",
"displayName": "RDBMS Relational Database (Database).Table"
},
"name": "CategoryGroup",
"attributes": [
{
"attributeType": {
"name": "Last Modified Date",
"displayName": "Last Modified Date",
"type": "SYSTEM_ATTRIBUTE"
},
"value": "2018-09-24 13:47:37"
},
{
"attributeType": {
"name": "Name",
"displayName": "Name",
"type": "SYSTEM_ATTRIBUTE"
},
"value": "CategoryGroup"
},
{
"attributeType": {
"name": "Native Type",
"displayName": "Native Type",
"type": "ATTRIBUTE"
},
"value": "TABLE"
}
],
"parentId": "73555_28"
}
{
"attributes": [
{
"attributeType": {
"name": "Name",
"displayName": "Name",
"type": "SYSTEM_ATTRIBUTE"
},
"value": "PurchaseOrder"
},
{
"attributeType": {
"name": ""\"Object Type\""",
"displayName": "Object Type",
"type": "SYSTEM_ATTRIBUTE"
},
"value": "Table"
},
{
"attributeType": {
"name": ""\"Object Id\""",
"displayName": "Object Id",
"type": "SYSTEM_ATTRIBUTE"
},
"value": "69585_200"
}
]
}
Every legacy Entity property can be mapped to an MM system attribute. Here is the mapping between the legacy Entity properties and MM system attributes.
Legacy Entity Property |
MM System Attribute |
id |
"Object Id" |
name |
Name |
objectType |
"Object Type" |
labels |
Labels |
parentId |
Context |
term |
"Term Classification" |
semanticTypes |
"Data Classifications" |
Some API methods return Entity objects in the Legacy Entity format only. Some API methods may return both formats depending on the value of the input. In general, the MQL Entity format is used whenever there is a "select" property/parameter specified.
API method |
Legacy format |
MQL format |
GET /entities/{objectId} |
If "select" parameter is not specified |
If "select" parameter is specified |
GET /relationships/{objectId} |
If "select" parameter is not specified |
If "select" parameter is specified |
POST /entities/executeMQLQuery |
If "legacyEntityFormat" is set to true |
If "legacyEntityFormat" is set to false |
GET /repository/getContext |
Always |
|
GET /configuration/listModels |
Always |
|
GET /entities/reports/{termId} |
Always |
|
GET /configurations/listConnectedModels |
Always |
The entity objects that the system attributes such as Context, "Business Name Inferred Origin" and "Business Description Inferred Origin" may have are always returned in the legacy entity format even though the object itself may be represented in the MQL entity format.
Following is a sample Entity object in the MQL Entity Format which corresponds to the SELECT list: Name, Context:
{
"attributes": [
{
"attributeType": {
"name": "Name",
"displayName": "Name",
"type": "ATTRIBUTE"
},
"value": "Employee Sales by Country"
},
{
"attributeType": {
"name": "Context",
"displayName": "Context",
"type": "SYSTEM_ATTRIBUTE"
},
"value": [
{
"id": "20_1",
"objectType": {
"name": "RDBMS Relational Database (Server).Database Server",
"displayName": "RDBMS Relational Database (Server).Database Server"
},
"name": "Northwind"
},
{
"id": "22_1",
"objectType": {
"name": "RDBMS Relational Database (Database).Database Schema",
"displayName": "RDBMS Relational Database (Database).Database Schema"
},
"name": "dbo"
}
]
}
]
}
The entity objects embedded within the system attributes contain only the following properties: id, name and objectType.