# @ohos.data.UDMF (Unified Data Management Framework)
The **UDMF** module provides unified data management capabilities, including standard definition of data types, such as text and image. By calling the APIs provided by this module, applications can encapsulate a variety of data into unified data objects.
> **NOTE**
>
> The initial APIs of this module are supported since API version 10. Newly added APIs will be marked with a superscript to indicate their earliest API version.
## Modules to Import
```js
importUDMFfrom'@ohos.data.UDMF';
```
## UnifiedDataType
Enumerates the types of the [data records](#unifiedrecord) in the [unifiedData](#unifieddata) object.
| record | [UnifiedRecord](#unifiedrecord) | Yes | Data record to add. It is a **UnifiedRecord** child class object.|
**Example**
```js
lettext1=newUDMF.PlainText();
text1.textContent='this is textContent of text1';
letunifiedData=newUDMF.UnifiedData(text1);
lettext2=newUDMF.PlainText();
text2.textContent='this is textContent of text2';
unifiedData.addRecord(text2);
```
### getRecords
getRecords(): Array\<UnifiedRecord\>
Obtains all data records from this **UnifiedData** object. The data obtained is of the **UnifiedRecord** type. Before using the data, you need to use [getType](#gettype) to obtain the data type and convert the data type to a child class.
| summary | { [key: string]: number } | Yes | No | A directory type object, where **key** indicates the data type (see [UnifiedDataType](#unifieddatatype)), and the value indicates the total size (in bytes) of this type of records in the **UnifiedData** object.|
| totalSize | number | Yes | No | Total size of all the records in the **UnifiedData** object, in bytes. |
## UnifiedRecord
An abstract definition of the data content supported by the UDMF. A **UnifiedRecord** object contains one or more data records, for example, a text record, an image record, or an HTML record.
**UnifiedRecord** is an abstract parent class that does not hold specific data content. It cannot be added to a **UnifiedData** object directly. Instead, a child class with specific content, such as text and image, must be created.
### getType
getType(): string
Obtains the type of this **UnfiedRecord**. The data obtained by [getRecords](#getrecords) from the **UnifiedData** object is a **UnifiedRecord** object. You need to use this API to obtain the specific type of the record, convert the **UnifiedRecord** object to its child class, and call the child class interfaces.
Represents the text data. It is a child class of [UnifiedRecord](#unifiedrecord) and a base class of text data. You are advised to use the child class of **Text**, for example, [PlainText](#plaintext), [Hyperlink](#hyperlink), and [HTML](#html), to describe data.
| details | { [key: string]: string } | Yes | Yes | A dictionary type object, where both the key and value are of the string type and are used to describe the text content. For example, a data object with the following content can be created to describe a text file:<br>{<br>title: 'Title',<br>"content":"Content"<br>}<br>This parameter is optional. The default value is an empty dictionary object.|
**Example**
```js
lettext=newUDMF.Text();
text.details={
title:'MyTitle',
content:'this is content',
};
letunifiedData=newUDMF.UnifiedData(text);
```
## PlainText
Represents the plaintext data. It is a child class of [Text](#text) and is used to describe plaintext data.
| htmlContent | string | Yes | Yes | Content in HTML format. |
| plainContent | string | Yes | Yes | Plaintext without HTML tags. This parameter is optional. The default value is an empty string.|
**Example**
```js
lethtml=newUDMF.HTML();
html.htmlContent='<div><p>Title</p></div>';
html.plainContent='this is plainContent';
```
## File
Represents the file data. It is a child class of [UnifiedRecord](#unifiedrecord) and a base class of the data of the file type. You are advised to use the child class of **File**, for example, [Image](#image), [Video](#video), and [Folder](#folder), to describe data.
| details | { [key: string]: string } | Yes | Yes | A dictionary type object, where Both the key and value are of the string type and are used to describe file information. For example, a data object with the following content can be created to describe a file:<br>{<br>"name":"File name",<br>"type":"File type"<br>}<br>This parameter is optional. The default value is an empty dictionary object.|
| uri | string | Yes | Yes | URI of the file data. |
Represents specific data types defined by OpenHarmony. It is a child class of [UnifiedRecord](#unifiedrecord) and a base class of OpenHarmony-specific data types. You are advised to use the child class of **SystemDefinedRecord**, for example, [SystemDefinedForm](#systemdefinedform), [SystemDefinedAppItem](#systemdefinedappitem), and [SystemDefinedPixelMap](#systemdefinedpixelmap), to describe OpenHarmony-specific data.
| details | { [key: string]: number \| string \| Uint8Array } | Yes | Yes | A dictionary type object, where the key is of the string type, and the value can be a number, a string, or a Uint8Array.<br/>This parameter is optional. The default value is an empty dictionary object. |
**Example**
```js
letsdr=newUDMF.SystemDefinedRecord();
letu8Array=newUint8Array([1,2,3,4,5,6,7,8,9,10]);
sdr.details={
title:'recordTitle',
version:1,
content:u8Array,
};
letunifiedData=newUDMF.UnifiedData(sdr);
```
## SystemDefinedForm
Represents the widget data. It is a child class of [SystemDefinedRecord](#systemdefinedrecord).
| appId | string | Yes | Yes | ID of the application, for which the icon is used. |
| appName | string | Yes | Yes | Name of the application, for which the icon is used. |
| appIconId | string | Yes | Yes | Image ID of the icon. |
| appLabelId | string | Yes | Yes | Label ID corresponding to the icon name. |
| bundleName | string | Yes | Yes | Bundle name corresponding to the icon.|
| abilityName | string | Yes | Yes | Application ability name corresponding to the icon.|
**Example**
```js
letappItem=newUDMF.SystemDefinedAppItem();
appItem.appId='MyAppId';
appItem.appName='MyAppName';
appItem.appIconId='MyAppIconId';
appItem.appLabelId='MyAppLabelId';
appItem.bundleName='MyBundleName';
appItem.abilityName='MyAbilityName';
letu8Array=newUint8Array([1,2,3,4,5,6,7,8,9,10]);
appItem.details={
appItemKey1:123,
appItemKey2:'appItemValue',
appItemKey3:u8Array,
};
letunifiedData=newUDMF.UnifiedData(appItem);
```
## SystemDefinedPixelMap
Represents the image data corresponding to the [PixelMap](js-apis-image.md#pixelmap7) defined by OpenHarmony. It is a child class of [SystemDefinedRecord](#systemdefinedrecord) and used to store only the binary data of **PixelMap**.
Represents the custom data type for applications only. It is a child class of [UnifiedRecord](#unifiedrecord) and a base class of custom data types of applications. Applications can extend custom data types based on this class.