Include "sys/types.h" at pkgmgr-info.h
[platform/core/appfw/pkgmgr-info.git] / include / pkgmgr-info.h
old mode 100755 (executable)
new mode 100644 (file)
index 01745d6..a82ab8b
@@ -48,6 +48,8 @@
 
 #include <errno.h>
 #include <stdbool.h>
+#include <unistd.h>
+#include <sys/types.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -72,6 +74,12 @@ extern "C" {
  * Generated by    Sewook Park <sewook7.park@samsung.com>
  */
 
+/**
+ * @brief A type to retrieve uid information from the manifest handle
+ */
+typedef struct {
+       uid_t uid;
+} pkgmgrinfo_uidinfo_t;
 
 /**
  * @brief A handle to insert certificate information
@@ -143,6 +151,12 @@ typedef enum {
 }pkgmgrinfo_app_hwacceleration;
 
 typedef enum {
+       PMINFO_SCREENREADER_OFF = 0,            /**< Don't use screen reader*/
+       PMINFO_SCREENREADER_ON = 1,             /**< Use screen reader*/
+       PMINFO_SCREENREADER_USE_SYSTEM_SETTING = 2              /**< Follow system setting for screen reader */
+}pkgmgrinfo_app_screenreader;
+
+typedef enum {
        PMINFO_RECENTIMAGE_USE_ICON = 0,                /**<Use icon for recent image*/
        PMINFO_RECENTIMAGE_USE_CAPTURE = 1,             /**< Use capture for recent image*/
        PMINFO_RECENTIMAGE_USE_NOTHING = 2              /**< Don't use recent image */
@@ -237,6 +251,36 @@ typedef int (*pkgmgrinfo_app_category_list_cb ) (const char *category_name,
                                                        void *user_data);
 
 /**
+ * @fn int (*pkgmgrinfo_app_permission_list_cb ) (const char *permission_type, void *user_data)
+ *
+ * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_foreach_category()
+ *
+ * @param[in] permission_name the name of the permission
+ * @param[in] user_data user data passed to pkgmgrinfo_appinfo_foreach_category()
+ *
+ * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
+ *
+ * @see  pkgmgrinfo_appinfo_foreach_category()
+ */
+typedef int (*pkgmgrinfo_app_permission_list_cb ) (const char *permission_type,
+                                                       void *user_data);
+
+/**
+ * @fn int (*pkgmgrinfo_pkg_privilege_list_cb ) (const char *privilege_name, void *user_data)
+ *
+ * @brief Specifies the type of function passed to pkgmgrinfo_pkginfo_foreach_privilege()
+ *
+ * @param[in] privilege_name the name of the privilege
+ * @param[in] user_data user data passed to pkgmgrinfo_pkginfo_foreach_privilege()
+ *
+ * @return 0 if success, negative value(<0) if fail. Callback is not called if return value is negative.\n
+ *
+ * @see  pkgmgrinfo_pkginfo_foreach_privilege()
+ */
+typedef int (*pkgmgrinfo_pkg_privilege_list_cb ) (const char *privilege_name,
+                                                       void *user_data);
+
+/**
  * @fn int (*pkgmgrinfo_app_metadata_list_cb ) (const char *metadata_key, const char *metadata_value, void *user_data)
  *
  * @brief Specifies the type of function passed to pkgmgrinfo_appinfo_foreach_metadata()
@@ -353,6 +397,8 @@ typedef enum {
 #define        PMINFO_PKGINFO_PROP_PACKAGE_UPDATE              "PMINFO_PKGINFO_PROP_PACKAGE_UPDATE"
   /** Boolean property for filtering based on package info*/
 #define        PMINFO_PKGINFO_PROP_PACKAGE_APPSETTING          "PMINFO_PKGINFO_PROP_PACKAGE_APPSETTING"
+   /** Boolean property for filtering based on package info*/
+#define        PMINFO_PKGINFO_PROP_PACKAGE_NODISPLAY_SETTING           "PMINFO_PKGINFO_PROP_PACKAGE_NODISPLAY_SETTING"
 
  /** Integer property for filtering based on package info*/
 #define        PMINFO_PKGINFO_PROP_PACKAGE_SIZE                "PMINFO_PKGINFO_PROP_PACKAGE_SIZE"
@@ -377,6 +423,8 @@ typedef enum {
 #define        PMINFO_APPINFO_PROP_APP_CATEGORY        "PMINFO_APPINFO_PROP_APP_CATEGORY"
  /** String property for filtering based on app info*/
 #define        PMINFO_APPINFO_PROP_APP_HWACCELERATION  "PMINFO_APPINFO_PROP_APP_HWACCELERATION"
+  /** String property for filtering based on app info*/
+#define        PMINFO_APPINFO_PROP_APP_SCREENREADER    "PMINFO_APPINFO_PROP_APP_SCREENREADER"
 
  /** Boolean property for filtering based on app info*/
 #define        PMINFO_APPINFO_PROP_APP_NODISPLAY               "PMINFO_APPINFO_PROP_APP_NODISPLAY"
@@ -388,15 +436,32 @@ typedef enum {
 #define        PMINFO_APPINFO_PROP_APP_AUTORESTART     "PMINFO_APPINFO_PROP_APP_AUTORESTART"
  /** Boolean property for filtering based on app info*/
 #define        PMINFO_APPINFO_PROP_APP_TASKMANAGE      "PMINFO_APPINFO_PROP_APP_TASKMANAGE"
+ /** Boolean property for filtering based on app info*/
+#define        PMINFO_APPINFO_PROP_APP_LAUNCHCONDITION "PMINFO_APPINFO_PROP_APP_LAUNCHCONDITION"
+
+ /** will be updated*/
+ /** string property for filtering based on pkg info*/
+#define        PMINFO_PKGINFO_PROP_RANGE_BASIC "PMINFO_PKGINFO_PROP_RANGE_BASIC"
+
+/* For multiuser support */
+char *getIconPath(uid_t uid);
+char *getUserPkgParserDBPath(void);
+char *getUserPkgParserDBPathUID(uid_t uid);
+char *getUserPkgCertDBPath(void);
+char *getUserPkgCertDBPathUID(uid_t uid);
+const char* getUserDesktopPath(uid_t uid);
+const char* getUserManifestPath(uid_t uid);
 
 /**
  * @fn int pkgmgrinfo_pkginfo_get_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data)
+ * @fn int pkgmgrinfo_pkginfo_get_usr_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data, uid_t uid)
  * @brief      This API gets list of installed packages
  *
  * @par                This API is for package-manager client application
  * @par Sync (or) Async : Synchronous API
  * @param[in]  pkg_list_cb     iteration function for list
  * @param[in]  user_data       user data to be passed to callback function
+ * @param[in]  uid     the addressee user id of the instruction
  * @return     0 if success, error code(<0) if fail
  * @retval     PMINFO_R_OK     success
  * @retval     PMINFO_R_EINVAL invalid argument
@@ -430,7 +495,7 @@ static int list_pkgs()
  * @endcode
  */
 int pkgmgrinfo_pkginfo_get_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data);
-
+int pkgmgrinfo_pkginfo_get_usr_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_data, uid_t uid);
 /**
  * @fn int pkgmgrinfo_pkginfo_get_pkginfo(const char *pkgid, pkgmgrinfo_pkginfo_h *handle)
  * @brief      This API creates the package information handle from db
@@ -439,6 +504,7 @@ int pkgmgrinfo_pkginfo_get_list(pkgmgrinfo_pkg_list_cb pkg_list_cb, void *user_d
  * @par Sync (or) Async : Synchronous API
  *
  * @param[in]  pkgid   pointer to package ID
+ * @param[in]  uid     the addressee user id of the instruction
  * @param[out] handle          pointer to the package info handle.
  * @return     0 if success, error code(<0) if fail
  * @retval     PMINFO_R_OK     success
@@ -469,6 +535,7 @@ static int get_pkg_type(const char *pkgid)
  * @endcode
  */
 int pkgmgrinfo_pkginfo_get_pkginfo(const char *pkgid, pkgmgrinfo_pkginfo_h *handle);
+int pkgmgrinfo_pkginfo_get_usr_pkginfo(const char *pkgid, uid_t uid, pkgmgrinfo_pkginfo_h *handle);
 
 /**
  * @fn int pkgmgrinfo_pkginfo_get_pkgname(pkgmgrinfo_pkginfo_h handle, char **pkg_name)
@@ -1242,6 +1309,43 @@ static int get_root_path(const char *pkgid)
  */
 int pkgmgrinfo_pkginfo_get_root_path(pkgmgrinfo_pkginfo_h handle, char **path);
 
+
+/**
+ * @fn int pkgmgrinfo_pkginfo_get_csc_path(pkgmgrinfo_pkginfo_h handle, char **path)
+ * @brief      This API gets the csc path of package
+ *
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in] handle           pointer to package info handle
+ * @param[out] path            pointer to hold csc path of package
+ * @return     0 if success, error code(<0) if fail
+ * @retval     PMINFO_R_OK     success
+ * @retval     PMINFO_R_EINVAL invalid argument
+ * @retval     PMINFO_R_ERROR  internal error
+ * @code
+static int get_csc_path(const char *pkgid)
+{
+       int ret = 0;
+       char *path = 0;
+       pkgmgrinfo_pkginfo_h handle;
+       ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
+       if (ret != PMINFO_R_OK)
+               return -1;
+
+       ret = pkgmgrinfo_pkginfo_get_csc_path(handle, &path);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
+               return -1;
+       }
+       printf("path : %s\n", path);
+       pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
+
+       return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_pkginfo_get_csc_path(pkgmgrinfo_pkginfo_h handle, char **path);
+
 /**
  * @fn int pkgmgrinfo_pkginfo_compare_pkg_cert_info(const char *lhs_package_id, const char *rhs_package_id, pkgmgrinfo_cert_compare_result_type_e *compare_result)
  * @brief      This API compare the cert information from given package id
@@ -1276,7 +1380,7 @@ static int compare_pkg_cert_info(const char *lhs_package_id, const char *rhs_pac
  * @endcode
  */
 int pkgmgrinfo_pkginfo_compare_pkg_cert_info(const char *lhs_package_id, const char *rhs_package_id, pkgmgrinfo_cert_compare_result_type_e *compare_result);
-
+int pkgmgrinfo_pkginfo_compare_usr_pkg_cert_info(const char *lhs_package_id, const char *rhs_package_id, uid_t uid, pkgmgrinfo_cert_compare_result_type_e *compare_result);
 /**
  * @fn int pkgmgrinfo_pkginfo_compare_app_cert_info(const char *lhs_app_id, const char *rhs_app_id, pkgmgrinfo_cert_compare_result_type_e *compare_result)
  * @brief      This API compare the cert information from given app id
@@ -1311,7 +1415,7 @@ static int compare_app_cert_info(const char *lhs_app_id, const char *rhs_app_id,
  * @endcode
  */
 int pkgmgrinfo_pkginfo_compare_app_cert_info(const char *lhs_app_id, const char *rhs_app_id, pkgmgrinfo_cert_compare_result_type_e *compare_result);
-
+int pkgmgrinfo_pkginfo_compare_usr_app_cert_info(const char *lhs_app_id, const char *rhs_app_id, uid_t uid, pkgmgrinfo_cert_compare_result_type_e *compare_result);
 /**
  * @fn int pkgmgrinfo_pkginfo_is_removable(pkgmgrinfo_pkginfo_h handle, bool *removable)
  * @brief      This API gets the package 'removable' value from the package ID
@@ -1429,6 +1533,45 @@ static int get_pkg_preload(const char *pkgid)
 int pkgmgrinfo_pkginfo_is_preload(pkgmgrinfo_pkginfo_h handle, bool *preload);
 
 /**
+ * @fn int pkgmgrinfo_pkginfo_is_system(pkgmgrinfo_pkginfo_h handle, bool *system)
+ * @brief      This API gets the value for given handle is system or not
+ *
+ * @par                This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in]  handle  pointer to package info handle
+ * @param[out] system          pointer to hold  system is or not
+ * @return     0 if success, error code(<0) if fail
+ * @retval     PMINFO_R_OK     success
+ * @retval     PMINFO_R_EINVAL invalid argument
+ * @retval     PMINFO_R_ERROR  internal error
+ * @pre                pkgmgrinfo_pkginfo_get_pkginfo()
+ * @post               pkgmgrinfo_pkginfo_destroy_pkginfo()
+ * @see                pkgmgrinfo_pkginfo_get_pkgid()
+ * @see                pkgmgrinfo_pkginfo_is_readonly()
+ * @code
+static int get_pkg_system(const char *pkgid)
+{
+       int ret = 0;
+       bool system = false;
+       pkgmgrinfo_pkginfo_h handle = NULL;
+       ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
+       if (ret != PMINFO_R_OK)
+               return -1;
+       ret = pkgmgrinfo_pkginfo_is_system(handle, &system);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
+               return -1;
+       }
+       printf("pkg system: %d\n", system);
+       pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
+       return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_pkginfo_is_system(pkgmgrinfo_pkginfo_h handle, bool *system);
+
+/**
  * @fn int pkgmgrinfo_pkginfo_is_readonly(pkgmgrinfo_pkginfo_h handle, bool *readonly)
  * @brief      This API gets the package 'readonly' value from the package ID
  *
@@ -1506,6 +1649,22 @@ static int get_pkg_update(const char *pkgid)
  */
 int pkgmgrinfo_pkginfo_is_update(pkgmgrinfo_pkginfo_h handle, bool *update);
 
+
+/**
+ * @fn int pkgmgrinfo_pkginfo_is_global(uid_t uid, const char *pkgid)
+ * @brief      This API gets the package 'uid' value from the view table of user database
+ *
+ * @par                This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in]  uid     uid of the user to determine the database
+ * @param[in]  pkgid   id of the current package
+ * @return     1 if it a global package, 0 else
+ */
+
+int pkgmgrinfo_pkginfo_is_global(uid_t uid, const char *pkgid);
+
+
 /**
  * @fn int pkgmgrinfo_pkginfo_is_accessible(pkgmgrinfo_pkginfo_h handle, bool *accessible)
  * @brief      This API gets the package 'accessible' value from the package ID
@@ -1858,9 +2017,12 @@ static int get_rpm_pkg_list()
  */
 int pkgmgrinfo_pkginfo_filter_foreach_pkginfo(pkgmgrinfo_pkginfo_filter_h handle,
                pkgmgrinfo_pkg_list_cb pkg_cb, void *user_data);
+int pkgmgrinfo_pkginfo_usr_filter_foreach_pkginfo(pkgmgrinfo_pkginfo_filter_h handle,
+               pkgmgrinfo_pkg_list_cb pkg_cb, void *user_data, uid_t uid);
 
 /**
  * @fn int pkgmgrinfo_pkginfo_filter_count(pkgmgrinfo_pkginfo_filter_h handle, int *count)
+ * @fn int pkgmgrinfo_pkginfo_usr_filter_count(pkgmgrinfo_pkginfo_filter_h handle, int *count, uid_t uid)
  * @brief      This API counts the package that satisfy the filter conditions
  *
  * @par                This API is for package-manager client application
@@ -1868,6 +2030,7 @@ int pkgmgrinfo_pkginfo_filter_foreach_pkginfo(pkgmgrinfo_pkginfo_filter_h handle
  *
  * @param[in] handle           pointer to the package info filter handle.
  * @param[in] count            pointer to store the count value.
+ * @param[in]  uid     the addressee user id of the instruction
  * @return     0 if success, error code(<0) if fail
  * @retval     PMINFO_R_OK     success
  * @retval     PMINFO_R_EINVAL invalid argument
@@ -1901,6 +2064,60 @@ static int get_rpm_pkg_count()
  * @endcode
  */
 int pkgmgrinfo_pkginfo_filter_count(pkgmgrinfo_pkginfo_filter_h handle, int *count);
+int pkgmgrinfo_pkginfo_usr_filter_count(pkgmgrinfo_pkginfo_filter_h handle, int *count, uid_t uid);
+/**
+ * @fn int pkgmgrinfo_pkginfo_foreach_privilege(pkgmgrinfo_pkginfo_h handle,
+                       pkgmgrinfo_pkg_privilege_list_cb privilege_func, void *user_data);
+ * @brief      This API gets the list of privilege for a particular package
+ *
+ * @par                This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ * @param[in]  handle          pointer to the package info handle.
+ * @param[in]  privilege_func          callback function for list
+ * @param[in] user_data        user data to be passed to callback function
+ * @return     0 if success, error code(<0) if fail
+ * @retval     PMINFO_R_OK     success
+ * @retval     PMINFO_R_EINVAL invalid argument
+ * @retval     PMINFO_R_ERROR  internal error
+ * @pre                pkgmgrinfo_pkginfo_get_pkginfo()
+ * @post               pkgmgrinfo_pkginfo_destroy_pkginfo()
+ * @code
+int privilege_func(const char *name, void *user_data)
+{
+       if (strcmp(name, (char *)user_data) == 0)
+               return -1;
+       else
+               return 0;
+}
+
+static int list_privilege(const char *package, char *privilege)
+{
+       int ret = 0;
+       pkgmgrinfo_pkginfo_h handle;
+       ret = pkgmgrinfo_pkginfo_get_pkginfo(package, &handle);
+       if (ret != PMINFO_R_OK)
+               return -1;
+       ret = pkgmgrinfo_pkginfo_foreach_privilege(handle, privilege_func, (void *)privilege);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
+               return -1;
+       }
+       pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
+       return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_pkginfo_foreach_privilege(pkgmgrinfo_pkginfo_h handle,
+                       pkgmgrinfo_pkg_privilege_list_cb privilege_func, void *user_data);
+
+/* TODO: add doxygen comment here */
+int pkgmgrinfo_pkginfo_get_size_from_xml(const char *manifest, int *size);
+int pkgmgrinfo_pkginfo_get_location_from_xml(const char *manifest, pkgmgrinfo_install_location *location);
+int pkgmgrinfo_pkginfo_is_for_all_users(pkgmgrinfo_pkginfo_h handle, bool *for_all_users);
+int pkgmgrinfo_appinfo_set_state_enabled(const char *appid, bool enabled);
+int pkgmgrinfo_appinfo_set_usr_state_enabled(const char *appid, bool enabled, uid_t uid);
+int pkgmgrinfo_appinfo_set_default_label(const char *appid, const char *label);
+int pkgmgrinfo_appinfo_set_usr_default_label(const char *appid, const char *label, uid_t uid);
 
 /**
  * @fn int pkgmgrinfo_appinfo_get_list(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_app_component component,
@@ -1947,7 +2164,50 @@ static int list_apps(const char *pkgid)
  */
 int pkgmgrinfo_appinfo_get_list(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_app_component component,
                                                        pkgmgrinfo_app_list_cb app_func, void *user_data);
+int pkgmgrinfo_appinfo_get_usr_list(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_app_component component,
+                                                       pkgmgrinfo_app_list_cb app_func, void *user_data, uid_t uid);
+/**
+ * @fn int pkgmgrinfo_appinfo_get_install_list(pkgmgrinfo_app_list_cb app_func, void *user_data);
+ * @brief      This API gets list of installed applications from all packages with  minimum informaion.
+ *
+ * @par                This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ * @param[in]  app_func                iteration function for list
+ * @param[in] user_data        user data to be passed to callback function
+ * @return     0 if success, error code(<0) if fail
+ * @retval     PMINFO_R_OK     success
+ * @retval     PMINFO_R_EINVAL invalid argument
+ * @retval     PMINFO_R_ERROR  internal error
+ * @pre                None
+ * @post               None
+ * @code
+int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
+{
+       char *pkgid1 = NULL;
+       char *pkgid2 = NULL;
+       pkgid1 = (char *)user_data;
+       pkgmgrinfo_appinfo_get_pkgid(handle, &pkgid2);
+       if (strcmp(pkgid1, pkgid2) == 0) {
+               return -1;
+       } else {
+               return 0;
+       }
+}
 
+static int list_apps()
+{
+       int ret = 0;
+       char *name = "helloworld";
+       ret = pkgmgrinfo_appinfo_get_install_list(app_list_cb, (void *)name);
+       if (ret != PMINFO_R_OK) {
+               return -1;
+       }
+       return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_appinfo_get_install_list(pkgmgrinfo_app_list_cb app_func, void *user_data);
+int pkgmgrinfo_appinfo_get_usr_install_list(pkgmgrinfo_app_list_cb app_func, uid_t uid, void *user_data);
 /**
  * @fn int pkgmgrinfo_appinfo_get_installed_list(pkgmgrinfo_app_list_cb app_func, void *user_data);
  * @brief      This API gets list of installed applications from all packages.
@@ -1989,6 +2249,7 @@ static int list_apps()
  * @endcode
  */
 int pkgmgrinfo_appinfo_get_installed_list(pkgmgrinfo_app_list_cb app_func, void *user_data);
+int pkgmgrinfo_appinfo_get_usr_installed_list(pkgmgrinfo_app_list_cb app_func, uid_t uid, void *user_data);
 
 /**
  * @fn int pkgmgrinfo_appinfo_get_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle)
@@ -2028,7 +2289,7 @@ static int get_app_type(const char *appid)
  * @endcode
  */
 int pkgmgrinfo_appinfo_get_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle);
-
+int pkgmgrinfo_appinfo_get_usr_appinfo(const char *appid, uid_t uid, pkgmgrinfo_appinfo_h *handle);
 /**
  * @fn int pkgmgrinfo_appinfo_get_appid(pkgmgrinfo_appinfo_h handle, char **appid)
  * @brief      This API gets the application ID
@@ -2264,6 +2525,41 @@ static int get_app_label(const char *appid)
 int pkgmgrinfo_appinfo_get_label(pkgmgrinfo_appinfo_h  handle, char **label);
 
 /**
+ * @fn int pkgmgrinfo_appinfo_get_localed_label(const char *appid, const char *locale, char **label)
+ * @brief      This API gets exactly matched label by given appid and locale
+ *
+ * @par                This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in]  appid   pointer to appid
+ * @param[in]  locale  pointer to locale
+ * @param[out] label           pointer to hold app label
+ * @return     0 if success, error code(<0) if fail
+ * @retval     PMINFO_R_OK     success
+ * @retval     PMINFO_R_EINVAL invalid argument
+ * @retval     PMINFO_R_ERROR  internal error
+ * @code
+static int get_localed_label(const char *appid, const char *locale)
+{
+       int ret = 0;
+       char *label = NULL;
+
+       ret = pkgmgrinfo_appinfo_get_localed_label(appid, locale, &label);
+       if (ret != PMINFO_R_OK)
+               return -1;
+
+       printf("localed label: %s\n", label);
+
+       free(label);
+
+       return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_appinfo_get_localed_label(const char *appid, const char *locale, char **label);
+int pkgmgrinfo_appinfo_usr_get_localed_label(const char *appid, const char *locale, uid_t uid, char **label);
+
+/**
  * @fn int pkgmgrinfo_appinfo_get_component(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_component *component)
  * @brief      This API gets the component of the application
  *
@@ -2504,6 +2800,60 @@ int pkgmgrinfo_appinfo_get_mime(pkgmgrinfo_appcontrol_h  handle,
                                                                                int *mime_count, char ***mime);
 
 /**
+ * @fn int pkgmgrinfo_appinfo_get_subapp(pkgmgrinfo_appcontrol_h  handle,
+                                                                               int *subapp_count, char ***subapp)
+ * @brief      This API gets the list of subapp of the application
+ *
+ * @par                This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in] handle           pointer to the appcontrol handle.
+ * @param[out] subapp_count            pointer to hold number of subapp
+ * @param[out] subapp          pointer to hold list of subapp
+ * @return     0 if success, error code(<0) if fail
+ * @retval     PMINFO_R_OK     success
+ * @retval     PMINFO_R_EINVAL invalid argument
+ * @retval     PMINFO_R_ERROR  internal error
+ * @pre                pkgmgrinfo_appinfo_get_appinfo()
+ * @post               pkgmgrinfo_appinfo_destroy_appinfo()
+ * @see                pkgmgrinfo_appinfo_get_uri()
+ * @see                pkgmgrinfo_appinfo_get_operation()
+ * @code
+int appcontrol_func(pkgmgrinfo_appcontrol_h handle, void *user_data)
+{
+       int sc = 0;
+       int i = 0;
+       char **subapp = NULL;
+       pkgmgrinfo_appinfo_get_subapp(handle, &sc, &subapp);
+       for (i = 0; i < sc; i++) {
+               if (strcmp(subapp[i], (char *)user_data) == 0)
+                       return -1;
+               else
+                       return 0;
+       }
+}
+
+static int check_subapp(const char *appid, char *subapp)
+{
+       int ret = 0;
+       pkgmgrinfo_appinfo_h handle = NULL;
+       ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
+       if (ret != PMINFO_R_OK)
+               return -1;
+       ret = pkgmgrinfo_appinfo_foreach_appcontrol(handle, appcontrol_func, (void *)subapp);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_appinfo_destroy_appinfo(handle);
+               return -1;
+       }
+       pkgmgrinfo_appinfo_destroy_appinfo(handle);
+       return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_appinfo_get_subapp(pkgmgrinfo_appcontrol_h  handle,
+                                               int *subapp_count, char ***subapp);
+
+/**
  * @fn int pkgmgrinfo_appinfo_get_notification_icon(pkgmgrinfo_appinfo_h handle, char **icon)
  * @brief      This API gets the notification icon of the application
  *
@@ -2699,25 +3049,303 @@ static int get_app_permission(const char *appid)
 int pkgmgrinfo_appinfo_get_permission_type(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_permission_type *permission);
 
 /**
- * @fn int pkgmgrinfo_appinfo_foreach_category(pkgmgrinfo_appinfo_h handle,
-                       pkgmgrinfo_app_category_list_cb category_func, void *user_data);
- * @brief      This API gets the list of category for a particular application
+ * @fn int pkgmgrinfo_appinfo_get_component_type(pkgmgrinfo_appinfo_h handle, char **component_type)
+ * @brief      This API gets the component_type
  *
  * @par                This API is for package-manager client application
  * @par Sync (or) Async : Synchronous API
- * @param[in]  handle          pointer to the application info handle.
- * @param[in]  category_func           callback function for list
- * @param[in] user_data        user data to be passed to callback function
+ *
+ * @param[in] handle           pointer to the application info handle.
+ * @param[out] component_type          pointer to hold component_type
  * @return     0 if success, error code(<0) if fail
  * @retval     PMINFO_R_OK     success
  * @retval     PMINFO_R_EINVAL invalid argument
  * @retval     PMINFO_R_ERROR  internal error
  * @pre                pkgmgrinfo_appinfo_get_appinfo()
- * @post               pkgmgrinfo_appinfo_destroy_appinfo()
+ * @post       pkgmgrinfo_appinfo_destroy_appinfo()
+ * @see                pkgmgrinfo_appinfo_get_pkgid()
+ * @see                pkgmgrinfo_appinfo_is_multiple()
  * @code
-int category_func(const char *name, void *user_data)
+static int get_component_type(const char *appid)
 {
-       if (strcmp(name, (char *)user_data) == 0)
+       int ret = 0;
+       char *component_type = NULL;
+       pkgmgrinfo_appinfo_h handle;
+       ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
+       if (ret != PMINFO_R_OK)
+               return -1;
+       ret = pkgmgrinfo_appinfo_get_component_type(handle, &component_type);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_appinfo_destroy_appinfo(handle);
+               return -1;
+       }
+       printf("component_type: %s\n", component_type);
+       pkgmgrinfo_appinfo_destroy_appinfo(handle);
+       return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_appinfo_get_component_type(pkgmgrinfo_appinfo_h  handle, char **component_type);
+
+/**
+ * @fn int pkgmgrinfo_appinfo_get_hwacceleration(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_hwacceleration *hwacceleration)
+ * @brief      This API gets the application 'hwacceleration' value from the app ID
+ *
+ * @par                This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in]  handle  pointer to application info handle
+ * @param[out] hwacceleration          pointer to hold package hwacceleration value
+ * @return     0 if success, error code(<0) if fail
+ * @retval     PMINFO_R_OK     success
+ * @retval     PMINFO_R_EINVAL invalid argument
+ * @retval     PMINFO_R_ERROR  internal error
+ * @pre                pkgmgrinfo_appinfo_get_appinfo()
+ * @post       pkgmgrinfo_appinfo_destroy_appinfo()
+ * @see                pkgmgrinfo_appinfo_get_appid()
+ * @see                pkgmgrinfo_appinfo_is_multiple()
+ * @code
+static int get_app_hwacceleration(const char *appid)
+{
+       int ret = 0;
+       pkgmgrinfo_app_hwacceleration hwacceleration;
+       pkgmgrinfo_appinfo_h handle;
+       ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
+       if (ret != PMINFO_R_OK)
+               return -1;
+       ret = pkgmgrinfo_appinfo_get_hwacceleration(handle, &hwacceleration);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_appinfo_destroy_appinfo(handle);
+               return -1;
+       }
+       printf("app hwacceleration: %d\n", hwacceleration);
+       pkgmgrinfo_appinfo_destroy_appinfo(handle);
+       return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_appinfo_get_hwacceleration(pkgmgrinfo_appinfo_h  handle, pkgmgrinfo_app_hwacceleration *hwacceleration);
+
+/**
+ * @fn int pkgmgrinfo_appinfo_get_screenreader(pkgmgrinfo_appinfo_h  handle, pkgmgrinfo_app_screenreader *screenreader)
+ * @brief      This API gets the application 'screenreader' value from the app ID
+ *
+ * @par                This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in]  handle  pointer to application info handle
+ * @param[out] screenreader            pointer to hold package accessibility value
+ * @return     0 if success, error code(<0) if fail
+ * @retval     PMINFO_R_OK     success
+ * @retval     PMINFO_R_EINVAL invalid argument
+ * @retval     PMINFO_R_ERROR  internal error
+ * @pre                pkgmgrinfo_appinfo_get_appinfo()
+ * @post       pkgmgrinfo_appinfo_destroy_appinfo()
+ * @see                pkgmgrinfo_appinfo_get_appid()
+ * @see                pkgmgrinfo_appinfo_is_multiple()
+ * @code
+static int get_app_screenreader(const char *appid)
+{
+       int ret = 0;
+       pkgmgrinfo_app_screenreader screenreader = PMINFO_USE_SYSTEM_SETTING;
+       pkgmgrinfo_appinfo_h handle = NULL;
+       ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
+       if (ret != PMINFO_R_OK)
+               return -1;
+       ret = pkgmgrinfo_appinfo_get_screenreader(handle, &screenreader);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_appinfo_destroy_appinfo(handle);
+               return -1;
+       }
+       printf("app screenreader: %d\n", screenreader);
+       pkgmgrinfo_appinfo_destroy_appinfo(handle);
+       return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_appinfo_get_screenreader(pkgmgrinfo_appinfo_h  handle, pkgmgrinfo_app_screenreader *screenreader);
+
+/**
+ * @fn int pkgmgrinfo_appinfo_get_effectimage(pkgmgrinfo_appinfo_h  handle, char **portrait_img, char **landscape_img)
+ * @brief      This API gets the application's landscape & portrait effect images
+ *
+ * @par                This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in]  handle  pointer to application info handle
+ * @param[out]  portrait_img contains portrait mode effect image
+ * @param[out]  landscape_img contains landscape mode effect image
+ * @return     0 if success, error code(<0) if fail
+ * @retval     PMINFO_R_OK     success
+ * @retval     PMINFO_R_EINVAL invalid argument
+ * @retval     PMINFO_R_ERROR  internal error
+ * @pre                pkgmgrinfo_appinfo_get_appinfo()
+ * @post               pkgmgrinfo_appinfo_destroy_appinfo()
+ * @see                pkgmgrinfo_appinfo_get_appid()
+ * @see                pkgmgrinfo_appinfo_is_nodisplay()
+ * @code
+static int get_app_effectimages(const char *appid)
+{
+       int ret = 0;
+       char *portraitimg = NULL;
+       char *landscapeimg = NULL;
+       pkgmgrinfo_appinfo_h handle;
+       ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
+       if (ret != PMINFO_R_OK)
+               return -1;
+       ret = pkgmgrinfo_appinfo_get_effectimage(handle, &portraitimg, &landscapeimg);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_appinfo_destroy_appinfo(handle);
+               return -1;
+       }
+       printf("app effect image portrait: %s, app effect image landscape : %s\n", portraitimg, landscapeimg);
+       pkgmgrinfo_appinfo_destroy_appinfo(handle);
+       return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_appinfo_get_effectimage(pkgmgrinfo_appinfo_h  handle, char **portrait_img, char **landscape_img);
+
+/**
+ * @fn int pkgmgrinfo_appinfo_get_submode_mainid(pkgmgrinfo_appinfo_h handle, char **submode_mainid)
+ * @brief      This API gets the submode_mainid of the application
+ *
+ * @par                This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in] handle           pointer to the application info handle.
+ * @param[out] submode_mainid          pointer to hold package name
+ * @return     0 if success, error code(<0) if fail
+ * @retval     PMINFO_R_OK     success
+ * @retval     PMINFO_R_EINVAL invalid argument
+ * @retval     PMINFO_R_ERROR  internal error
+ * @pre                pkgmgrinfo_appinfo_get_appinfo()
+ * @post               pkgmgrinfo_appinfo_destroy_appinfo()
+ * @see                pkgmgrinfo_appinfo_get_appid()
+ * @see                pkgmgrinfo_appinfo_is_multiple()
+ * @code
+static int get_app_submode_mainid(const char *appid)
+{
+       int ret = 0;
+       char *submode_mainid = NULL;
+       pkgmgrinfo_appinfo_h handle = NULL;
+       ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
+       if (ret != PMINFO_R_OK)
+               return -1;
+       ret = pkgmgrinfo_appinfo_get_submode_mainid(handle, &submode_mainid);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_appinfo_destroy_appinfo(handle);
+               return -1;
+       }
+       printf("submode_mainid: %s\n", submode_mainid);
+       pkgmgrinfo_appinfo_destroy_appinfo(handle);
+       return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_appinfo_get_submode_mainid(pkgmgrinfo_appinfo_h  handle, char **submode_mainid);
+
+/**
+ * @fn int pkgmgrinfo_appinfo_get_datacontrol_info(const char *providerid, const char *type, char **appid, char **access);
+ * @brief      This API gets the datacontrol info
+ *
+ * @par                This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in] providerid               pointer to the providerid of dataconltrol.
+ * @param[in] type                     pointer to the type of dataconltrol.
+ * @param[out] appid                   pointer to hold appid, need to free after using
+ * @param[out] access                  pointer to hold access, need to free after using
+ * @return     0 if success, error code(<0) if fail
+ * @retval     PMINFO_R_OK     success
+ * @retval     PMINFO_R_EINVAL invalid argument
+ * @retval     PMINFO_R_ERROR  internal error
+ * @endcode
+ */
+int pkgmgrinfo_appinfo_get_datacontrol_info(const char *providerid, const char *type, char **appid, char **access);
+
+/**
+ * @fn int pkgmgrinfo_appinfo_get_datacontrol_appid(const char *providerid, char **appid);
+ * @brief      This API gets the appid of datacontrol
+ *
+ * @par                This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in] providerid               pointer to the providerid of dataconltrol.
+ * @param[out] appid                   pointer to hold appid, need to free after using
+ * @return     0 if success, error code(<0) if fail
+ * @retval     PMINFO_R_OK     success
+ * @retval     PMINFO_R_EINVAL invalid argument
+ * @retval     PMINFO_R_ERROR  internal error
+ * @endcode
+ */
+int pkgmgrinfo_appinfo_get_datacontrol_appid(const char *providerid, char **appid);
+
+/**
+ * @fn int pkgmgrinfo_appinfo_foreach_permission(pkgmgrinfo_appinfo_h handle,
+                       pkgmgrinfo_app_permission_list_cb permission_func, void *user_data);
+ * @brief      This API gets the list of permission for a particular application
+ *
+ * @par                This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ * @param[in]  handle          pointer to the application info handle.
+ * @param[in]  permission_func         callback function for list
+ * @param[in] user_data        user data to be passed to callback function
+ * @return     0 if success, error code(<0) if fail
+ * @retval     PMINFO_R_OK     success
+ * @retval     PMINFO_R_EINVAL invalid argument
+ * @retval     PMINFO_R_ERROR  internal error
+ * @pre                pkgmgrinfo_appinfo_get_appinfo()
+ * @post               pkgmgrinfo_appinfo_destroy_appinfo()
+ * @code
+int permission_func(const char *name, void *user_data)
+{
+       if (strcmp(name, (char *)user_data) == 0)
+               return -1;
+       else
+               return 0;
+}
+
+static int list_permission(const char *appid, char *permission)
+{
+       int ret = 0;
+       pkgmgrinfo_appinfo_h handle;
+       ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
+       if (ret != PMINFO_R_OK)
+               return -1;
+       ret = pkgmgrinfo_appinfo_foreach_permission(handle, permission_func, (void *)permission);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_appinfo_destroy_appinfo(handle);
+               return -1;
+       }
+       pkgmgrinfo_appinfo_destroy_appinfo(handle);
+       return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_appinfo_foreach_permission(pkgmgrinfo_appinfo_h handle,
+                       pkgmgrinfo_app_permission_list_cb permission_func, void *user_data);
+
+/**
+ * @fn int pkgmgrinfo_appinfo_foreach_category(pkgmgrinfo_appinfo_h handle,
+                       pkgmgrinfo_app_category_list_cb category_func, void *user_data);
+ * @brief      This API gets the list of category for a particular application
+ *
+ * @par                This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ * @param[in]  handle          pointer to the application info handle.
+ * @param[in]  category_func           callback function for list
+ * @param[in] user_data        user data to be passed to callback function
+ * @return     0 if success, error code(<0) if fail
+ * @retval     PMINFO_R_OK     success
+ * @retval     PMINFO_R_EINVAL invalid argument
+ * @retval     PMINFO_R_ERROR  internal error
+ * @pre                pkgmgrinfo_appinfo_get_appinfo()
+ * @post               pkgmgrinfo_appinfo_destroy_appinfo()
+ * @code
+int category_func(const char *name, void *user_data)
+{
+       if (strcmp(name, (char *)user_data) == 0)
                return -1;
        else
                return 0;
@@ -2794,6 +3422,8 @@ int pkgmgrinfo_appinfo_foreach_metadata(pkgmgrinfo_appinfo_h handle,
 /**
  * @fn int pkgmgrinfo_appinfo_foreach_appcontrol(pkgmgrinfo_appinfo_h handle,
                        pkgmgrinfo_app_control_list_cb appcontrol_func, void *user_data);
+ * @fn int pkgmgrinfo_usr_appinfo_foreach_appcontrol(pkgmgrinfo_appinfo_h handle,
+                       pkgmgrinfo_app_control_list_cb appcontrol_func, void *user_data, uid_t uid);
  * @brief      This API gets the list of app-control for a particular application
  *
  * @par                This API is for package-manager client application
@@ -2801,6 +3431,7 @@ int pkgmgrinfo_appinfo_foreach_metadata(pkgmgrinfo_appinfo_h handle,
  * @param[in]  handle          pointer to the application info handle.
  * @param[in]  appcontrol_func         callback function for list
  * @param[in] user_data        user data to be passed to callback function
+ * @param[in]  uid     the addressee user id of the instruction
  * @return     0 if success, error code(<0) if fail
  * @retval     PMINFO_R_OK     success
  * @retval     PMINFO_R_EINVAL invalid argument
@@ -2841,6 +3472,8 @@ static int check_operation(const char *appid, char *operation)
  */
 int pkgmgrinfo_appinfo_foreach_appcontrol(pkgmgrinfo_appinfo_h handle,
                        pkgmgrinfo_app_control_list_cb appcontrol_func, void *user_data);
+int pkgmgrinfo_usr_appinfo_foreach_appcontrol(pkgmgrinfo_appinfo_h handle,
+                       pkgmgrinfo_app_control_list_cb appcontrol_func, void *user_data, uid_t uid);
 
 /**
  * @fn int pkgmgrinfo_appinfo_is_nodisplay(pkgmgrinfo_appinfo_h handle, bool *nodisplay)
@@ -2961,15 +3594,14 @@ static int get_app_indicator_display(const char *appid)
 int pkgmgrinfo_appinfo_is_indicator_display_allowed(pkgmgrinfo_appinfo_h handle, bool *indicator_disp);
 
 /**
- * @fn int pkgmgrinfo_appinfo_get_effectimage(pkgmgrinfo_appinfo_h  handle, char **portrait_img, char **landscape_img)
- * @brief      This API gets the application's landscape & portrait effect images
+ * @fn int pkgmgrinfo_appinfo_is_taskmanage(pkgmgrinfo_appinfo_h handle, bool *taskmanage)
+ * @brief      This API gets the application 'taskmanage' value from the app ID
  *
  * @par                This API is for package-manager client application
  * @par Sync (or) Async : Synchronous API
  *
  * @param[in]  handle  pointer to application info handle
- * @param[out]  portrait_img contains portrait mode effect image
- * @param[out]  landscape_img contains landscape mode effect image
+ * @param[out] taskmanage              pointer to hold package taskmanage value
  * @return     0 if success, error code(<0) if fail
  * @retval     PMINFO_R_OK     success
  * @retval     PMINFO_R_EINVAL invalid argument
@@ -2977,39 +3609,38 @@ int pkgmgrinfo_appinfo_is_indicator_display_allowed(pkgmgrinfo_appinfo_h handle,
  * @pre                pkgmgrinfo_appinfo_get_appinfo()
  * @post               pkgmgrinfo_appinfo_destroy_appinfo()
  * @see                pkgmgrinfo_appinfo_get_appid()
- * @see                pkgmgrinfo_appinfo_is_nodisplay()
+ * @see                pkgmgrinfo_appinfo_is_multiple()
  * @code
-static int get_app_effectimages(const char *appid)
+static int get_app_taskmanage(const char *appid)
 {
        int ret = 0;
-       char *portraitimg = NULL;
-       char *landscapeimg = NULL;
+       bool taskmanage;
        pkgmgrinfo_appinfo_h handle;
        ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
        if (ret != PMINFO_R_OK)
                return -1;
-       ret = pkgmgrinfo_appinfo_get_effectimage(handle, &portraitimg, &landscapeimg);
+       ret = pkgmgrinfo_appinfo_is_taskmanage(handle, &taskmanage);
        if (ret != PMINFO_R_OK) {
                pkgmgrinfo_appinfo_destroy_appinfo(handle);
                return -1;
        }
-       printf("app effect image portrait: %s, app effect image landscape : %s\n", portraitimg, landscapeimg);
+       printf("app taskmanage: %d\n", taskmanage);
        pkgmgrinfo_appinfo_destroy_appinfo(handle);
        return 0;
 }
  * @endcode
  */
-int pkgmgrinfo_appinfo_get_effectimage(pkgmgrinfo_appinfo_h  handle, char **portrait_img, char **landscape_img);
+int pkgmgrinfo_appinfo_is_taskmanage(pkgmgrinfo_appinfo_h  handle, bool *taskmanage);
 
 /**
- * @fn int pkgmgrinfo_appinfo_is_taskmanage(pkgmgrinfo_appinfo_h handle, bool *taskmanage)
+ * @fn int pkgmgrinfo_appinfo_is_enabled(pkgmgrinfo_appinfo_h handle, bool *enabled)
  * @brief      This API gets the application 'taskmanage' value from the app ID
  *
  * @par                This API is for package-manager client application
  * @par Sync (or) Async : Synchronous API
  *
  * @param[in]  handle  pointer to application info handle
- * @param[out] taskmanage              pointer to hold package taskmanage value
+ * @param[out] enabled         pointer to hold package enabled value
  * @return     0 if success, error code(<0) if fail
  * @retval     PMINFO_R_OK     success
  * @retval     PMINFO_R_EINVAL invalid argument
@@ -3019,36 +3650,36 @@ int pkgmgrinfo_appinfo_get_effectimage(pkgmgrinfo_appinfo_h  handle, char **port
  * @see                pkgmgrinfo_appinfo_get_appid()
  * @see                pkgmgrinfo_appinfo_is_multiple()
  * @code
-static int get_app_taskmanage(const char *appid)
+static int get_app_enabled(const char *appid)
 {
        int ret = 0;
-       bool taskmanage;
+       bool enabled;
        pkgmgrinfo_appinfo_h handle;
        ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
        if (ret != PMINFO_R_OK)
                return -1;
-       ret = pkgmgrinfo_appinfo_is_taskmanage(handle, &taskmanage);
+       ret = pkgmgrinfo_appinfo_is_taskmanage(handle, &enabled);
        if (ret != PMINFO_R_OK) {
                pkgmgrinfo_appinfo_destroy_appinfo(handle);
                return -1;
        }
-       printf("app taskmanage: %d\n", taskmanage);
+       printf("app enabled: %d\n", enabled);
        pkgmgrinfo_appinfo_destroy_appinfo(handle);
        return 0;
 }
  * @endcode
  */
-int pkgmgrinfo_appinfo_is_taskmanage(pkgmgrinfo_appinfo_h  handle, bool *taskmanage);
+int pkgmgrinfo_appinfo_is_enabled(pkgmgrinfo_appinfo_h  handle, bool *enabled);
 
 /**
- * @fn int pkgmgrinfo_appinfo_is_enabled(pkgmgrinfo_appinfo_h handle, bool *enabled)
- * @brief      This API gets the application 'taskmanage' value from the app ID
+ * @fn int pkgmgrinfo_appinfo_is_onboot(pkgmgrinfo_appinfo_h handle, bool *onboot)
+ * @brief      This API gets the application 'onboot' value from the app ID
  *
  * @par                This API is for package-manager client application
  * @par Sync (or) Async : Synchronous API
  *
  * @param[in]  handle  pointer to application info handle
- * @param[out] enabled         pointer to hold package enabled value
+ * @param[out] onboot          pointer to hold package onboot value
  * @return     0 if success, error code(<0) if fail
  * @retval     PMINFO_R_OK     success
  * @retval     PMINFO_R_EINVAL invalid argument
@@ -3058,75 +3689,75 @@ int pkgmgrinfo_appinfo_is_taskmanage(pkgmgrinfo_appinfo_h  handle, bool *taskman
  * @see                pkgmgrinfo_appinfo_get_appid()
  * @see                pkgmgrinfo_appinfo_is_multiple()
  * @code
-static int get_app_enabled(const char *appid)
+static int get_app_onboot(const char *appid)
 {
        int ret = 0;
-       bool enabled;
+       bool onboot;
        pkgmgrinfo_appinfo_h handle;
        ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
        if (ret != PMINFO_R_OK)
                return -1;
-       ret = pkgmgrinfo_appinfo_is_taskmanage(handle, &enabled);
+       ret = pkgmgrinfo_appinfo_is_onboot(handle, &onboot);
        if (ret != PMINFO_R_OK) {
                pkgmgrinfo_appinfo_destroy_appinfo(handle);
                return -1;
        }
-       printf("app enabled: %d\n", enabled);
+       printf("app onboot: %d\n", onboot);
        pkgmgrinfo_appinfo_destroy_appinfo(handle);
        return 0;
 }
  * @endcode
  */
-int pkgmgrinfo_appinfo_is_enabled(pkgmgrinfo_appinfo_h  handle, bool *enabled);
+int pkgmgrinfo_appinfo_is_onboot(pkgmgrinfo_appinfo_h  handle, bool *onboot);
 
 /**
- * @fn int pkgmgrinfo_appinfo_get_hwacceleration(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_hwacceleration *hwacceleration)
- * @brief      This API gets the application 'hwacceleration' value from the app ID
+ * @fn int pkgmgrinfo_appinfo_is_autorestart(pkgmgrinfo_appinfo_h handle, bool *autorestart)
+ * @brief      This API gets the application 'autorestart' value from the app ID
  *
  * @par                This API is for package-manager client application
  * @par Sync (or) Async : Synchronous API
  *
  * @param[in]  handle  pointer to application info handle
- * @param[out] hwacceleration          pointer to hold package hwacceleration value
+ * @param[out] autorestart             pointer to hold package autorestart value
  * @return     0 if success, error code(<0) if fail
  * @retval     PMINFO_R_OK     success
  * @retval     PMINFO_R_EINVAL invalid argument
  * @retval     PMINFO_R_ERROR  internal error
  * @pre                pkgmgrinfo_appinfo_get_appinfo()
- * @post       pkgmgrinfo_appinfo_destroy_appinfo()
+ * @post               pkgmgrinfo_appinfo_destroy_appinfo()
  * @see                pkgmgrinfo_appinfo_get_appid()
  * @see                pkgmgrinfo_appinfo_is_multiple()
  * @code
-static int get_app_hwacceleration(const char *appid)
+static int get_app_autorestart(const char *appid)
 {
        int ret = 0;
-       pkgmgrinfo_app_hwacceleration hwacceleration;
+       bool autorestart;
        pkgmgrinfo_appinfo_h handle;
        ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
        if (ret != PMINFO_R_OK)
                return -1;
-       ret = pkgmgrinfo_appinfo_get_hwacceleration(handle, &hwacceleration);
+       ret = pkgmgrinfo_appinfo_is_autorestart(handle, &autorestart);
        if (ret != PMINFO_R_OK) {
                pkgmgrinfo_appinfo_destroy_appinfo(handle);
                return -1;
        }
-       printf("app hwacceleration: %d\n", hwacceleration);
+       printf("app autorestart: %d\n", autorestart);
        pkgmgrinfo_appinfo_destroy_appinfo(handle);
        return 0;
 }
  * @endcode
  */
-int pkgmgrinfo_appinfo_get_hwacceleration(pkgmgrinfo_appinfo_h  handle, pkgmgrinfo_app_hwacceleration *hwacceleration);
+int pkgmgrinfo_appinfo_is_autorestart(pkgmgrinfo_appinfo_h  handle, bool *autorestart);
 
 /**
- * @fn int pkgmgrinfo_appinfo_is_onboot(pkgmgrinfo_appinfo_h handle, bool *onboot)
- * @brief      This API gets the application 'onboot' value from the app ID
+ * @fn int pkgmgrinfo_appinfo_is_mainapp(pkgmgrinfo_appinfo_h  handle, bool *mainapp)
+ * @brief      This API gets the value for given application is main app or not from handle
  *
  * @par                This API is for package-manager client application
  * @par Sync (or) Async : Synchronous API
  *
  * @param[in]  handle  pointer to application info handle
- * @param[out] onboot          pointer to hold package onboot value
+ * @param[out] mainapp         pointer to hold package mainapp is or not
  * @return     0 if success, error code(<0) if fail
  * @retval     PMINFO_R_OK     success
  * @retval     PMINFO_R_EINVAL invalid argument
@@ -3136,36 +3767,37 @@ int pkgmgrinfo_appinfo_get_hwacceleration(pkgmgrinfo_appinfo_h  handle, pkgmgrin
  * @see                pkgmgrinfo_appinfo_get_appid()
  * @see                pkgmgrinfo_appinfo_is_multiple()
  * @code
-static int get_app_onboot(const char *appid)
+static int get_app_mainapp(const char *appid)
 {
        int ret = 0;
-       bool onboot;
+       bool mainapp;
        pkgmgrinfo_appinfo_h handle;
        ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
        if (ret != PMINFO_R_OK)
                return -1;
-       ret = pkgmgrinfo_appinfo_is_onboot(handle, &onboot);
+       ret = pkgmgrinfo_appinfo_is_mainapp(handle, &mainapp);
        if (ret != PMINFO_R_OK) {
                pkgmgrinfo_appinfo_destroy_appinfo(handle);
                return -1;
        }
-       printf("app onboot: %d\n", onboot);
+       printf("mainapp: %d\n", mainapp);
        pkgmgrinfo_appinfo_destroy_appinfo(handle);
        return 0;
 }
  * @endcode
  */
-int pkgmgrinfo_appinfo_is_onboot(pkgmgrinfo_appinfo_h  handle, bool *onboot);
+int pkgmgrinfo_appinfo_is_mainapp(pkgmgrinfo_appinfo_h  handle, bool *mainapp);
+
 
 /**
- * @fn int pkgmgrinfo_appinfo_is_autorestart(pkgmgrinfo_appinfo_h handle, bool *autorestart)
- * @brief      This API gets the application 'autorestart' value from the app ID
+ * @fn int pkgmgrinfo_appinfo_is_preload(pkgmgrinfo_appinfo_h handle, bool *preload)
+ * @brief      This API gets the value for given application is preload or not from handle
  *
  * @par                This API is for package-manager client application
  * @par Sync (or) Async : Synchronous API
  *
  * @param[in]  handle  pointer to application info handle
- * @param[out] autorestart             pointer to hold package autorestart value
+ * @param[out] preload         pointer to hold preload is or not
  * @return     0 if success, error code(<0) if fail
  * @retval     PMINFO_R_OK     success
  * @retval     PMINFO_R_EINVAL invalid argument
@@ -3175,36 +3807,36 @@ int pkgmgrinfo_appinfo_is_onboot(pkgmgrinfo_appinfo_h  handle, bool *onboot);
  * @see                pkgmgrinfo_appinfo_get_appid()
  * @see                pkgmgrinfo_appinfo_is_multiple()
  * @code
-static int get_app_autorestart(const char *appid)
+static int get_app_preload(const char *appid)
 {
        int ret = 0;
-       bool autorestart;
-       pkgmgrinfo_appinfo_h handle;
+       bool preload = 0;
+       pkgmgrinfo_appinfo_h handle = NULL;
        ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
        if (ret != PMINFO_R_OK)
                return -1;
-       ret = pkgmgrinfo_appinfo_is_autorestart(handle, &autorestart);
+       ret = pkgmgrinfo_appinfo_is_preload(handle, &preload);
        if (ret != PMINFO_R_OK) {
                pkgmgrinfo_appinfo_destroy_appinfo(handle);
                return -1;
        }
-       printf("app autorestart: %d\n", autorestart);
+       printf("preload: %d\n", preload);
        pkgmgrinfo_appinfo_destroy_appinfo(handle);
        return 0;
 }
  * @endcode
  */
-int pkgmgrinfo_appinfo_is_autorestart(pkgmgrinfo_appinfo_h  handle, bool *autorestart);
+int pkgmgrinfo_appinfo_is_preload(pkgmgrinfo_appinfo_h handle, bool *preload);
 
 /**
- * @fn int pkgmgrinfo_appinfo_is_mainapp(pkgmgrinfo_appinfo_h  handle, bool *mainapp)
- * @brief      This API gets the value for given application is main app or not from handle
+ * @fn int pkgmgrinfo_appinfo_is_submode(pkgmgrinfo_appinfo_h handle, bool *submode)
+ * @brief      This API gets the value for given application is submode or not from handle
  *
  * @par                This API is for package-manager client application
  * @par Sync (or) Async : Synchronous API
  *
  * @param[in]  handle  pointer to application info handle
- * @param[out] mainapp         pointer to hold package mainapp is or not
+ * @param[out] submode         pointer to hold submode is or not
  * @return     0 if success, error code(<0) if fail
  * @retval     PMINFO_R_OK     success
  * @retval     PMINFO_R_EINVAL invalid argument
@@ -3214,26 +3846,64 @@ int pkgmgrinfo_appinfo_is_autorestart(pkgmgrinfo_appinfo_h  handle, bool *autore
  * @see                pkgmgrinfo_appinfo_get_appid()
  * @see                pkgmgrinfo_appinfo_is_multiple()
  * @code
-static int get_app_mainapp(const char *appid)
+static int get_app_submode(const char *appid)
+{
+       int ret = 0;
+       bool submode = 0;
+       pkgmgrinfo_appinfo_h handle = NULL;
+       ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
+       if (ret != PMINFO_R_OK)
+               return -1;
+       ret = pkgmgrinfo_appinfo_is_submode(handle, &submode);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_appinfo_destroy_appinfo(handle);
+               return -1;
+       }
+       printf("submode: %d\n", submode);
+       pkgmgrinfo_appinfo_destroy_appinfo(handle);
+       return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_appinfo_is_submode(pkgmgrinfo_appinfo_h handle, bool *submode);
+
+/**
+ * @fn int pkgmgrinfo_appinfo_is_category_exist(pkgmgrinfo_appinfo_h handle, const char *category, bool *exist)
+ * @brief      This API checks if the application has the given category
+ *
+ * @par                This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in]  handle  pointer to the application info handle
+ * @param[in]  category        category
+ * @param[out] exist           value Gets whether the application has the given category
+ * @return     0 if success, error code(<0) if fail
+ * @retval     PMINFO_R_OK     success
+ * @retval     PMINFO_R_EINVAL invalid argument
+ * @retval     PMINFO_R_ERROR  internal error
+ * @code
+static int is_category_exist(const char *appid, const char *category)
 {
        int ret = 0;
-       bool mainapp;
        pkgmgrinfo_appinfo_h handle;
+       bool exist = false;
+
        ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
        if (ret != PMINFO_R_OK)
                return -1;
-       ret = pkgmgrinfo_appinfo_is_mainapp(handle, &mainapp);
+
+       ret = pkgmgrinfo_appinfo_is_category_exist(handle, category, &exist);
        if (ret != PMINFO_R_OK) {
                pkgmgrinfo_appinfo_destroy_appinfo(handle);
                return -1;
        }
-       printf("mainapp: %d\n", mainapp);
+
        pkgmgrinfo_appinfo_destroy_appinfo(handle);
        return 0;
 }
  * @endcode
  */
-int pkgmgrinfo_appinfo_is_mainapp(pkgmgrinfo_appinfo_h  handle, bool *mainapp);
+int pkgmgrinfo_appinfo_is_category_exist(pkgmgrinfo_appinfo_h handle, const char *category, bool *exist);
 
 /**
  * @fn int pkgmgrinfo_appinfo_destroy_appinfo(pkgmgrinfo_appinfo_h handle)
@@ -3471,525 +4141,1130 @@ int pkgmgrinfo_appinfo_filter_add_int(pkgmgrinfo_appinfo_filter_h handle,
  * @see                pkgmgrinfo_appinfo_filter_count()
  * @see                pkgmgrinfo_appinfo_filter_foreach_appinfo()
  * @code
-static int get_capp_count()
+static int get_capp_count()
+{
+       int ret = 0;
+       int count = 0;
+       pkgmgrinfo_appinfo_filter_h handle;
+       ret = pkgmgrinfo_appinfo_filter_create(&handle);
+       if (ret != PMINFO_R_OK)
+               return -1;
+       ret = pkgmgrinfo_appinfo_filter_add_string(handle, PMINFO_APPINFO_PROP_APP_TYPE, "capp");
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_appinfo_filter_destroy(handle);
+               return -1;
+       }
+       ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_appinfo_filter_destroy(handle);
+               return -1;
+       }
+       printf("No of capp: %d\n", count);
+       pkgmgrinfo_appinfo_filter_destroy(handle);
+       return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_appinfo_filter_add_string(pkgmgrinfo_appinfo_filter_h handle,
+               const char *property, const char *value);
+
+/**
+ * @fn int pkgmgrinfo_appinfo_filter_foreach_appinfo(pkgmgrinfo_appinfo_filter_h handle, pkgmgrinfo_app_list_cb app_cb, void *user_data)
+ * @brief      This API executes the user supplied callback function for each application that satisfy the filter conditions
+ *
+ * @par                This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in] handle           pointer to the application info filter handle.
+ * @param[in] app_cb           callback function.
+ * @param[in] user_data                user data to be passed to the callback function
+ * @return     0 if success, error code(<0) if fail
+ * @retval     PMINFO_R_OK     success
+ * @retval     PMINFO_R_EINVAL invalid argument
+ * @retval     PMINFO_R_ERROR  internal error
+ * @pre                pkgmgrinfo_appinfo_filter_create()
+ * @post               pkgmgrinfo_appinfo_filter_destroy()
+ * @see                pkgmgrinfo_appinfo_filter_count()
+ * @code
+int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
+{
+       char *appid = NULL;
+       pkgmgrinfo_appinfo_get_appid(handle, &appid);
+       printf("appid : %s\n", appid);
+       return 0;
+}
+
+static int get_capp_list()
+{
+       int ret = 0;
+       pkgmgrinfo_appinfo_filter_h handle;
+       ret = pkgmgrinfo_appinfo_filter_create(&handle);
+       if (ret != PMINFO_R_OK)
+               return -1;
+       ret = pkgmgrinfo_appinfo_filter_add_string(handle, PMINFO_APPINFO_PROP_APP_TYPE, "capp");
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_appinfo_filter_destroy(handle);
+               return -1;
+       }
+       ret = pkgmgrinfo_appinfo_filter_foreach_appinfo(handle, app_list_cb, NULL);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_appinfo_filter_destroy(handle);
+               return -1;
+       }
+       pkgmgrinfo_appinfo_filter_destroy(handle);
+       return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_appinfo_filter_foreach_appinfo(pkgmgrinfo_appinfo_filter_h handle,
+               pkgmgrinfo_app_list_cb app_cb, void *user_data);
+int pkgmgrinfo_appinfo_usr_filter_foreach_appinfo(pkgmgrinfo_appinfo_filter_h handle,
+               pkgmgrinfo_app_list_cb app_cb, void *user_data, uid_t uid);
+
+/**
+ * @fn int pkgmgrinfo_appinfo_filter_count(pkgmgrinfo_appinfo_filter_h handle, int *count)
+ * @fn int pkgmgrinfo_appinfo_usr_filter_count(pkgmgrinfo_appinfo_filter_h handle, int *count, uid_t uid)
+ * @brief      This API counts the application that satisfy the filter conditions
+ *
+ * @par                This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in] handle           pointer to the application info filter handle.
+ * @param[in] count            pointer to store count value
+ * @param[in]  uid     the addressee user id of the instruction
+ * @return     0 if success, error code(<0) if fail
+ * @retval     PMINFO_R_OK     success
+ * @retval     PMINFO_R_EINVAL invalid argument
+ * @retval     PMINFO_R_ERROR  internal error
+ * @pre                pkgmgrinfo_appinfo_filter_create()
+ * @post               pkgmgrinfo_appinfo_filter_destroy()
+ * @see                pkgmgrinfo_appinfo_filter_foreach_appinfo()
+ * @code
+static int get_capp_count()
+{
+       int ret = 0;
+       int count = 0;
+       pkgmgrinfo_appinfo_filter_h handle;
+       ret = pkgmgrinfo_appinfo_filter_create(&handle);
+       if (ret != PMINFO_R_OK)
+               return -1;
+       ret = pkgmgrinfo_appinfo_filter_add_string(handle, PMINFO_APPINFO_PROP_APP_TYPE, "capp");
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_appinfo_filter_destroy(handle);
+               return -1;
+       }
+       ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_appinfo_filter_destroy(handle);
+               return -1;
+       }
+       printf("No of capp: %d\n", count);
+       pkgmgrinfo_appinfo_filter_destroy(handle);
+       return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_appinfo_filter_count(pkgmgrinfo_appinfo_filter_h handle, int *count);
+int pkgmgrinfo_appinfo_usr_filter_count(pkgmgrinfo_appinfo_filter_h handle, int *count, uid_t uid);
+/**
+ * @fn int pkgmgrinfo_appinfo_metadata_filter_create(pkgmgrinfo_appinfo_metadata_filter_h *handle)
+ * @brief      This API creates the application's metadata  information filter handle from db.
+ *
+ * @par                This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[out] handle          pointer to the application metadata info filter handle.
+ * @return     0 if success, error code(<0) if fail
+ * @retval     PMINFO_R_OK     success
+ * @retval     PMINFO_R_EINVAL invalid argument
+ * @retval     PMINFO_R_ERROR  internal error
+ * @pre                None
+ * @post               pkgmgrinfo_appinfo_metadata_filter_destroy()
+ * @see                pkgmgrinfo_appinfo_metadata_filter_foreach()
+ * @code
+int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
+{
+       char *appid = NULL;
+       pkgmgrinfo_appinfo_get_appid(handle, &appid);
+       printf("appid : %s\n", appid);
+       return 0;
+}
+
+static int get_app_list(const char *mkey, const char *mvalue)
+{
+       int ret = 0;
+       pkgmgrinfo_appinfo_metadata_filter_h handle;
+       ret = pkgmgrinfo_appinfo_metadata_filter_create(&handle);
+       if (ret != PMINFO_R_OK)
+               return -1;
+       ret = pkgmgrinfo_appinfo_metadata_filter_add(handle, mkey, mvalue);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
+               return -1;
+       }
+       ret = pkgmgrinfo_appinfo_metadata_filter_foreach(handle, app_list_cb, NULL);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
+               return -1;
+       }
+       pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
+       return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_appinfo_metadata_filter_create(pkgmgrinfo_appinfo_metadata_filter_h *handle);
+
+/**
+ * @fn int pkgmgrinfo_appinfo_metadata_filter_destroy(pkgmgrinfo_appinfo_metadata_filter_h handle)
+ * @brief      This API destroys the application's metadata  information filter handle.
+ *
+ * @par                This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in] handle           pointer to the application metadata info filter handle.
+ * @return     0 if success, error code(<0) if fail
+ * @retval     PMINFO_R_OK     success
+ * @retval     PMINFO_R_EINVAL invalid argument
+ * @retval     PMINFO_R_ERROR  internal error
+ * @pre                pkgmgrinfo_appinfo_metadata_filter_create()
+ * @post               None
+ * @see                pkgmgrinfo_appinfo_metadata_filter_foreach()
+ * @code
+int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
+{
+       char *appid = NULL;
+       pkgmgrinfo_appinfo_get_appid(handle, &appid);
+       printf("appid : %s\n", appid);
+       return 0;
+}
+
+static int get_app_list(const char *mkey, const char *mvalue)
+{
+       int ret = 0;
+       pkgmgrinfo_appinfo_metadata_filter_h handle;
+       ret = pkgmgrinfo_appinfo_metadata_filter_create(&handle);
+       if (ret != PMINFO_R_OK)
+               return -1;
+       ret = pkgmgrinfo_appinfo_metadata_filter_add(handle, mkey, mvalue);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
+               return -1;
+       }
+       ret = pkgmgrinfo_appinfo_metadata_filter_foreach(handle, app_list_cb, NULL);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
+               return -1;
+       }
+       pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
+       return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_appinfo_metadata_filter_destroy(pkgmgrinfo_appinfo_metadata_filter_h handle);
+
+/**
+ * @fn int pkgmgrinfo_appinfo_metadata_filter_add(pkgmgrinfo_appinfo_metadata_filter_h handle, const char *key, const char *value)
+ * @brief      This API adds filter condition for the query API.  The query will search the entire application metadata  information collected from
+ * the manifest file of all the installed packages. You can specify value as NULL to search based on key only.
+ *
+ * @par                This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in] handle           pointer to the application metadata info filter handle.
+ * @param[in] key                      pointer to metadata key
+ * @param[in] value                    pointer to metadata value
+ * @return     0 if success, error code(<0) if fail
+ * @retval     PMINFO_R_OK     success
+ * @retval     PMINFO_R_EINVAL invalid argument
+ * @retval     PMINFO_R_ERROR  internal error
+ * @pre                pkgmgrinfo_appinfo_metadata_filter_create()
+ * @post               pkgmgrinfo_appinfo_metadata_filter_foreach(), pkgmgrinfo_appinfo_metadata_filter_destroy()
+ * @see                pkgmgrinfo_appinfo_metadata_filter_foreach()
+ * @code
+int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
+{
+       char *appid = NULL;
+       pkgmgrinfo_appinfo_get_appid(handle, &appid);
+       printf("appid : %s\n", appid);
+       return 0;
+}
+
+static int get_app_list(const char *mkey, const char *mvalue)
+{
+       int ret = 0;
+       pkgmgrinfo_appinfo_metadata_filter_h handle;
+       ret = pkgmgrinfo_appinfo_metadata_filter_create(&handle);
+       if (ret != PMINFO_R_OK)
+               return -1;
+       ret = pkgmgrinfo_appinfo_metadata_filter_add(handle, mkey, mvalue);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
+               return -1;
+       }
+       ret = pkgmgrinfo_appinfo_metadata_filter_foreach(handle, app_list_cb, NULL);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
+               return -1;
+       }
+       pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
+       return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_appinfo_metadata_filter_add(pkgmgrinfo_appinfo_metadata_filter_h handle,
+               const char *key, const char *value);
+
+/**
+ * @fn int pkgmgrinfo_appinfo_metadata_filter_foreach(pkgmgrinfo_appinfo_metadata_filter_h handle, pkgmgrinfo_app_list_cb app_cb, void *user_data)
+ * @fn int pkgmgrinfo_appinfo_usr_metadata_filter_foreach(pkgmgrinfo_appinfo_metadata_filter_h handle, pkgmgrinfo_app_list_cb app_cb, void *user_data, uid_t uid)
+ * @brief      This API executes the filter query. The query will search the entire application metadata  information collected from
+ * the manifest file of all the installed packages. For each application returned by the query, the callback will be called. If callback returns
+ * negative value, no more callbacks will be called and API will return.
+ *
+ * @par                This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in] handle           pointer to the application metadata info filter handle.
+ * @param[in] app_cb           function pointer to callback
+ * @param[in] user_data                pointer to user data
+ * @param[in]  uid     the addressee user id of the instruction
+ * @return     0 if success, error code(<0) if fail
+ * @retval     PMINFO_R_OK     success
+ * @retval     PMINFO_R_EINVAL invalid argument
+ * @retval     PMINFO_R_ERROR  internal error
+ * @pre                pkgmgrinfo_appinfo_metadata_filter_create()
+ * @post               pkgmgrinfo_appinfo_metadata_filter_destroy()
+ * @code
+int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
+{
+       char *appid = NULL;
+       pkgmgrinfo_appinfo_get_appid(handle, &appid);
+       printf("appid : %s\n", appid);
+       return 0;
+}
+
+static int get_app_list(const char *mkey, const char *mvalue)
+{
+       int ret = 0;
+       pkgmgrinfo_appinfo_metadata_filter_h handle;
+       ret = pkgmgrinfo_appinfo_metadata_filter_create(&handle);
+       if (ret != PMINFO_R_OK)
+               return -1;
+       ret = pkgmgrinfo_appinfo_metadata_filter_add(handle, mkey, mvalue);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
+               return -1;
+       }
+       ret = pkgmgrinfo_appinfo_metadata_filter_foreach(handle, app_list_cb, NULL);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
+               return -1;
+       }
+       pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
+       return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_appinfo_metadata_filter_foreach(pkgmgrinfo_appinfo_metadata_filter_h handle,
+               pkgmgrinfo_app_list_cb app_cb, void *user_data);
+int pkgmgrinfo_appinfo_usr_metadata_filter_foreach(pkgmgrinfo_appinfo_metadata_filter_h handle,
+               pkgmgrinfo_app_list_cb app_cb, void *user_data, uid_t uid);
+/**
+ * @fn int pkgmgrinfo_pkginfo_create_certinfo(pkgmgrinfo_certinfo_h *handle)
+ * @brief      This API creates the package cert information handle to get data from db.
+ *
+ * @par                This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[out] handle          pointer to the package cert handle.
+ * @return     0 if success, error code(<0) if fail
+ * @retval     PMINFO_R_OK     success
+ * @retval     PMINFO_R_EINVAL invalid argument
+ * @retval     PMINFO_R_ERROR  internal error
+ * @pre                None
+ * @post               pkgmgrinfo_pkginfo_destroy_certinfo()
+ * @see                pkgmgrinfo_pkginfo_get_cert_value()
+ * @see                pkgmgrinfo_pkginfo_load_certinfo()
+ * @code
+static int get_cert_info(const char *pkgid)
+{
+       int ret = 0;
+       pkgmgrinfo_certinfo_h handle;
+       char *auth_cert = NULL;
+       ret = pkgmgrinfo_pkginfo_create_certinfo(&handle);
+       if (ret != PMINFO_R_OK)
+               return -1;
+       ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_pkginfo_destroy_certinfo(handle);
+               return -1;
+       }
+       ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_pkginfo_destroy_certinfo(handle);
+               return -1;
+       }
+       printf("Author root certificate: %s\n", auth_root);
+       pkgmgrinfo_pkginfo_destroy_certinfo(handle);
+       return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_pkginfo_create_certinfo(pkgmgrinfo_certinfo_h *handle);
+
+/**
+ * @fn int pkgmgrinfo_pkginfo_load_certinfo(const char *pkgid, pkgmgrinfo_certinfo_h handle)
+ * @brief      This API loads the package cert information handle with data from db.
+ *
+ * @par                This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in] pkgid            pointer to the package ID.
+ * @param[in] handle           pointer to the package cert handle.
+ * @return     0 if success, error code(<0) if fail
+ * @retval     PMINFO_R_OK     success
+ * @retval     PMINFO_R_EINVAL invalid argument
+ * @retval     PMINFO_R_ERROR  internal error
+ * @pre                pkgmgrinfo_pkginfo_create_certinfo()
+ * @post               pkgmgrinfo_pkginfo_destroy_certinfo()
+ * @see                pkgmgrinfo_pkginfo_get_cert_value()
+ * @code
+static int get_cert_info(const char *pkgid)
+{
+       int ret = 0;
+       pkgmgrinfo_certinfo_h handle;
+       char *auth_cert = NULL;
+       ret = pkgmgrinfo_pkginfo_create_certinfo(&handle);
+       if (ret != PMINFO_R_OK)
+               return -1;
+       ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_pkginfo_destroy_certinfo(handle);
+               return -1;
+       }
+       ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_pkginfo_destroy_certinfo(handle);
+               return -1;
+       }
+       printf("Author root certificate: %s\n", auth_root);
+       pkgmgrinfo_pkginfo_destroy_certinfo(handle);
+       return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_pkginfo_load_certinfo(const char *pkgid, pkgmgrinfo_certinfo_h handle, uid_t uid);
+
+/**
+ * @fn int pkgmgrinfo_pkginfo_get_cert_value(pkgmgrinfo_certinfo_h handle, pkgmgrinfo_cert_type cert_type, const char **cert_value)
+ * @brief      This API gets the package cert information from the handle
+ *
+ * @par                This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in] handle           pointer to the package cert handle.
+ * @param[in] cert_type                certificate type
+ * @param[out] cert_value      pointer to hold certificate value
+ * @return     0 if success, error code(<0) if fail
+ * @retval     PMINFO_R_OK     success
+ * @retval     PMINFO_R_EINVAL invalid argument
+ * @retval     PMINFO_R_ERROR  internal error
+ * @pre                pkgmgrinfo_pkginfo_create_certinfo()
+ * @post               pkgmgrinfo_pkginfo_destroy_certinfo()
+ * @see                pkgmgrinfo_pkginfo_load_certinfo()
+ * @code
+static int get_cert_info(const char *pkgid)
+{
+       int ret = 0;
+       pkgmgrinfo_certinfo_h handle;
+       char *auth_cert = NULL;
+       ret = pkgmgrinfo_pkginfo_create_certinfo(&handle);
+       if (ret != PMINFO_R_OK)
+               return -1;
+       ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_pkginfo_destroy_certinfo(handle);
+               return -1;
+       }
+       ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_pkginfo_destroy_certinfo(handle);
+               return -1;
+       }
+       printf("Author root certificate: %s\n", auth_root);
+       pkgmgrinfo_pkginfo_destroy_certinfo(handle);
+       return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_pkginfo_get_cert_value(pkgmgrinfo_certinfo_h handle, pkgmgrinfo_cert_type cert_type, const char **cert_value);
+
+/**
+ * @fn int pkgmgrinfo_pkginfo_destroy_certinfo(pkgmgrinfo_certinfo_h handle)
+ * @brief      This API destroys the package cert information handle freeing up all the resources
+ *
+ * @par                This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in] handle           pointer to the package cert handle.
+ * @return     0 if success, error code(<0) if fail
+ * @retval     PMINFO_R_OK     success
+ * @retval     PMINFO_R_EINVAL invalid argument
+ * @retval     PMINFO_R_ERROR  internal error
+ * @pre                pkgmgrinfo_pkginfo_create_certinfo()
+ * @post               None
+ * @see                pkgmgrinfo_pkginfo_load_certinfo()
+ * @code
+static int get_cert_info(const char *pkgid)
+{
+       int ret = 0;
+       pkgmgrinfo_certinfo_h handle;
+       char *auth_cert = NULL;
+       ret = pkgmgrinfo_pkginfo_create_certinfo(&handle);
+       if (ret != PMINFO_R_OK)
+               return -1;
+       ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_pkginfo_destroy_certinfo(handle);
+               return -1;
+       }
+       ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_pkginfo_destroy_certinfo(handle);
+               return -1;
+       }
+       printf("Author root certificate: %s\n", auth_root);
+       pkgmgrinfo_pkginfo_destroy_certinfo(handle);
+       return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_pkginfo_destroy_certinfo(pkgmgrinfo_certinfo_h handle);
+
+/**
+ * @fn int pkgmgrinfo_delete_certinfo(const char *pkgid)
+ * @brief      This API deletes the package cert information from DB
+ *
+ * @par                This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in] pkgid            pointer to the package ID.
+ * @return     0 if success, error code(<0) if fail
+ * @retval     PMINFO_R_OK     success
+ * @retval     PMINFO_R_EINVAL invalid argument
+ * @retval     PMINFO_R_ERROR  internal error
+ * @pre                None
+ * @post               None
+ * @code
+static int delete_cert_info(const char *pkgid)
+{
+       int ret = 0;
+       ret = pkgmgrinfo_delete_certinfo(pkgid);
+       if (ret != PMINFO_R_OK)
+               return -1;
+       return 0;
+}
+ * @endcode
+ */
+ int pkgmgrinfo_delete_certinfo(const char *pkgid);
+ int pkgmgrinfo_delete_usr_certinfo(const char *pkgid, uid_t uid);
+/**
+ * @fn int pkgmgrinfo_create_pkgdbinfo(const char *pkgid, pkgmgrinfo_pkgdbinfo_h *handle)
+ * @fn int pkgmgrinfo_create_pkgusrdbinfo(const char *pkgid, pkgmgrinfo_pkgdbinfo_h *handle)
+ * @brief      This API creates the package db information handle to set data in db.
+ *
+ * @par                This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in] pkgid    pointer to the package ID.
+ * @param[in]  uid     the addressee user id of the instruction
+ * @param[out] handle          pointer to the package db info handle.
+ * @return     0 if success, error code(<0) if fail
+ * @retval     PMINFO_R_OK     success
+ * @retval     PMINFO_R_EINVAL invalid argument
+ * @retval     PMINFO_R_ERROR  internal error
+ * @pre                None
+ * @post               pkgmgrinfo_destroy_pkgdbinfo()
+ * @see                pkgmgrinfo_save_pkgdbinfo()
+ * @see                pkgmgrinfo_set_type_to_pkgdbinfo()
+ * @code
+static int set_pkg_in_db(const char *pkgid)
+{
+       int ret = 0;
+       pkgmgrinfo_pkgdbinfo_h handle;
+       ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
+       if (ret != PMINFO_R_OK)
+               return -1;
+       ret = pkgmgrinfo_set_version_to_pkgdbinfo(handle, "0.0.1");
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_destroy_pkgdbinfo(handle);
+               return -1;
+       }
+       ret = pkgmgrinfo_save_pkgdbinfo(handle);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_destroy_pkgdbinfo(handle);
+               return -1;
+       }
+       pkgmgrinfo_destroy_pkgdbinfo(handle);
+       return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_create_pkgdbinfo(const char *pkgid, pkgmgrinfo_pkgdbinfo_h *handle);
+int pkgmgrinfo_create_pkgusrdbinfo(const char *pkgid, uid_t uid, pkgmgrinfo_pkgdbinfo_h *handle);
+
+/**
+ * @fn int pkgmgrinfo_set_type_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *type)
+ * @brief      This API sets the package type in db handle
+ *
+ * @par                This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in] handle   pointer to the pkgdbinfo handle.
+ * @param[in] type             pointer to the package type.
+ * @return     0 if success, error code(<0) if fail
+ * @retval     PMINFO_R_OK     success
+ * @retval     PMINFO_R_EINVAL invalid argument
+ * @retval     PMINFO_R_ERROR  internal error
+ * @pre                pkgmgrinfo_create_pkgdbinfo()
+ * @post               pkgmgrinfo_destroy_pkgdbinfo()
+ * @see                pkgmgrinfo_save_pkgdbinfo()
+ * @see                pkgmgrinfo_set_version_to_pkgdbinfo()
+ * @code
+static int set_pkg_type_in_db(const char *pkgid)
+{
+       int ret = 0;
+       pkgmgrinfo_pkgdbinfo_h handle;
+       ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
+       if (ret != PMINFO_R_OK)
+               return -1;
+       ret = pkgmgrinfo_set_type_to_pkgdbinfo(handle, "wgt");
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_destroy_pkgdbinfo(handle);
+               return -1;
+       }
+       ret = pkgmgrinfo_save_pkgdbinfo(handle);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_destroy_pkgdbinfo(handle);
+               return -1;
+       }
+       pkgmgrinfo_destroy_pkgdbinfo(handle);
+       return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_set_type_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *type);
+
+/**
+ * @fn int pkgmgrinfo_set_version_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *version)
+ * @brief      This API sets the package version in db handle
+ *
+ * @par                This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in] handle   pointer to the pkgdbinfo handle.
+ * @param[in] version          pointer to the package version
+ * @return     0 if success, error code(<0) if fail
+ * @retval     PMINFO_R_OK     success
+ * @retval     PMINFO_R_EINVAL invalid argument
+ * @retval     PMINFO_R_ERROR  internal error
+ * @pre                pkgmgrinfo_create_pkgdbinfo()
+ * @post               pkgmgrinfo_destroy_pkgdbinfo()
+ * @see                pkgmgrinfo_save_pkgdbinfo()
+ * @see                pkgmgrinfo_set_type_to_pkgdbinfo()
+ * @code
+static int set_pkg_version_in_db(const char *pkgid)
 {
        int ret = 0;
-       int count = 0;
-       pkgmgrinfo_appinfo_filter_h handle;
-       ret = pkgmgrinfo_appinfo_filter_create(&handle);
+       pkgmgrinfo_pkgdbinfo_h handle;
+       ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
        if (ret != PMINFO_R_OK)
                return -1;
-       ret = pkgmgrinfo_appinfo_filter_add_string(handle, PMINFO_APPINFO_PROP_APP_TYPE, "capp");
+       ret = pkgmgrinfo_set_version_to_pkgdbinfo(handle, "0.0.1");
        if (ret != PMINFO_R_OK) {
-               pkgmgrinfo_appinfo_filter_destroy(handle);
+               pkgmgrinfo_destroy_pkgdbinfo(handle);
                return -1;
        }
-       ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
+       ret = pkgmgrinfo_save_pkgdbinfo(handle);
        if (ret != PMINFO_R_OK) {
-               pkgmgrinfo_appinfo_filter_destroy(handle);
+               pkgmgrinfo_destroy_pkgdbinfo(handle);
                return -1;
        }
-       printf("No of capp: %d\n", count);
-       pkgmgrinfo_appinfo_filter_destroy(handle);
+       pkgmgrinfo_destroy_pkgdbinfo(handle);
        return 0;
 }
  * @endcode
  */
-int pkgmgrinfo_appinfo_filter_add_string(pkgmgrinfo_appinfo_filter_h handle,
-               const char *property, const char *value);
+int pkgmgrinfo_set_version_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *version);
 
 /**
- * @fn int pkgmgrinfo_appinfo_filter_foreach_appinfo(pkgmgrinfo_appinfo_filter_h handle, pkgmgrinfo_app_list_cb app_cb, void *user_data)
- * @brief      This API executes the user supplied callback function for each application that satisfy the filter conditions
+ * @fn int pkgmgrinfo_set_install_location_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, INSTALL_LOCATION location)
+ * @brief      This API sets the package install location in db handle
  *
  * @par                This API is for package-manager client application
  * @par Sync (or) Async : Synchronous API
  *
- * @param[in] handle           pointer to the application info filter handle.
- * @param[in] app_cb           callback function.
- * @param[in] user_data                user data to be passed to the callback function
+ * @param[in] handle   pointer to the pkgdbinfo handle.
+ * @param[in] location package install location
  * @return     0 if success, error code(<0) if fail
  * @retval     PMINFO_R_OK     success
  * @retval     PMINFO_R_EINVAL invalid argument
  * @retval     PMINFO_R_ERROR  internal error
- * @pre                pkgmgrinfo_appinfo_filter_create()
- * @post               pkgmgrinfo_appinfo_filter_destroy()
- * @see                pkgmgrinfo_appinfo_filter_count()
+ * @pre                pkgmgrinfo_create_pkgdbinfo()
+ * @post               pkgmgrinfo_destroy_pkgdbinfo()
+ * @see                pkgmgrinfo_save_pkgdbinfo()
+ * @see                pkgmgrinfo_set_type_to_pkgdbinfo()
  * @code
-int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
-{
-       char *appid = NULL;
-       pkgmgrinfo_appinfo_get_appid(handle, &appid);
-       printf("appid : %s\n", appid);
-       return 0;
-}
-
-static int get_capp_list()
+static int set_pkg_install_location_in_db(const char *pkgid)
 {
        int ret = 0;
-       pkgmgrinfo_appinfo_filter_h handle;
-       ret = pkgmgrinfo_appinfo_filter_create(&handle);
+       pkgmgrinfo_pkgdbinfo_h handle;
+       ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
        if (ret != PMINFO_R_OK)
                return -1;
-       ret = pkgmgrinfo_appinfo_filter_add_string(handle, PMINFO_APPINFO_PROP_APP_TYPE, "capp");
+       ret = pkgmgrinfo_set_install_location_to_pkgdbinfo(handle, INSTALL_INTERNAL);
        if (ret != PMINFO_R_OK) {
-               pkgmgrinfo_appinfo_filter_destroy(handle);
+               pkgmgrinfo_destroy_pkgdbinfo(handle);
                return -1;
        }
-       ret = pkgmgrinfo_appinfo_filter_foreach_appinfo(handle, app_list_cb, NULL);
+       ret = pkgmgrinfo_save_pkgdbinfo(handle);
        if (ret != PMINFO_R_OK) {
-               pkgmgrinfo_appinfo_filter_destroy(handle);
+               pkgmgrinfo_destroy_pkgdbinfo(handle);
                return -1;
        }
-       pkgmgrinfo_appinfo_filter_destroy(handle);
+       pkgmgrinfo_destroy_pkgdbinfo(handle);
        return 0;
 }
  * @endcode
  */
-int pkgmgrinfo_appinfo_filter_foreach_appinfo(pkgmgrinfo_appinfo_filter_h handle,
-               pkgmgrinfo_app_list_cb app_cb, void *user_data);
+int pkgmgrinfo_set_install_location_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, INSTALL_LOCATION location);
 
 /**
- * @fn int pkgmgrinfo_appinfo_filter_count(pkgmgrinfo_appinfo_filter_h handle, int *count)
- * @brief      This API counts the application that satisfy the filter conditions
+ * @fn int pkgmgrinfo_set_size_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *size)
+ * @brief      This API sets the package size in db handle
  *
  * @par                This API is for package-manager client application
  * @par Sync (or) Async : Synchronous API
  *
- * @param[in] handle           pointer to the application info filter handle.
- * @param[in] count            pointer to store count value
+ * @param[in] handle   pointer to the pkgdbinfo handle.
+ * @param[in] size             pointer to the package size
  * @return     0 if success, error code(<0) if fail
  * @retval     PMINFO_R_OK     success
  * @retval     PMINFO_R_EINVAL invalid argument
  * @retval     PMINFO_R_ERROR  internal error
- * @pre                pkgmgrinfo_appinfo_filter_create()
- * @post               pkgmgrinfo_appinfo_filter_destroy()
- * @see                pkgmgrinfo_appinfo_filter_foreach_appinfo()
+ * @pre                pkgmgrinfo_create_pkgdbinfo()
+ * @post               pkgmgrinfo_destroy_pkgdbinfo()
+ * @see                pkgmgrinfo_save_pkgdbinfo()
+ * @see                pkgmgrinfo_set_type_to_pkgdbinfo()
  * @code
-static int get_capp_count()
+static int set_pkg_size_in_db(const char *pkgid)
 {
        int ret = 0;
-       int count = 0;
-       pkgmgrinfo_appinfo_filter_h handle;
-       ret = pkgmgrinfo_appinfo_filter_create(&handle);
+       pkgmgrinfo_pkgdbinfo_h handle;
+       ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
        if (ret != PMINFO_R_OK)
                return -1;
-       ret = pkgmgrinfo_appinfo_filter_add_string(handle, PMINFO_APPINFO_PROP_APP_TYPE, "capp");
+       ret = pkgmgrinfo_set_size_to_pkgdbinfo(handle, "15");
        if (ret != PMINFO_R_OK) {
-               pkgmgrinfo_appinfo_filter_destroy(handle);
+               pkgmgrinfo_destroy_pkgdbinfo(handle);
                return -1;
        }
-       ret = pkgmgrinfo_appinfo_filter_count(handle, &count);
+       ret = pkgmgrinfo_save_pkgdbinfo(handle);
        if (ret != PMINFO_R_OK) {
-               pkgmgrinfo_appinfo_filter_destroy(handle);
+               pkgmgrinfo_destroy_pkgdbinfo(handle);
                return -1;
        }
-       printf("No of capp: %d\n", count);
-       pkgmgrinfo_appinfo_filter_destroy(handle);
+       pkgmgrinfo_destroy_pkgdbinfo(handle);
        return 0;
 }
  * @endcode
  */
-int pkgmgrinfo_appinfo_filter_count(pkgmgrinfo_appinfo_filter_h handle, int *count);
+int pkgmgrinfo_set_size_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *size);
 
 /**
- * @fn int pkgmgrinfo_appinfo_metadata_filter_create(pkgmgrinfo_appinfo_metadata_filter_h *handle)
- * @brief      This API creates the application's metadata  information filter handle from db.
+ * @fn int pkgmgrinfo_set_label_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *label, const char *locale)
+ * @brief      This API sets the package label in db handle
  *
  * @par                This API is for package-manager client application
  * @par Sync (or) Async : Synchronous API
  *
- * @param[out] handle          pointer to the application metadata info filter handle.
+ * @param[in] handle   pointer to the pkgdbinfo handle.
+ * @param[in] label            pointer to the package label
+ * @param[in] locale   pointer to the locale
  * @return     0 if success, error code(<0) if fail
  * @retval     PMINFO_R_OK     success
  * @retval     PMINFO_R_EINVAL invalid argument
  * @retval     PMINFO_R_ERROR  internal error
- * @pre                None
- * @post               pkgmgrinfo_appinfo_metadata_filter_destroy()
- * @see                pkgmgrinfo_appinfo_metadata_filter_foreach()
+ * @pre                pkgmgrinfo_create_pkgdbinfo()
+ * @post               pkgmgrinfo_destroy_pkgdbinfo()
+ * @see                pkgmgrinfo_save_pkgdbinfo()
+ * @see                pkgmgrinfo_set_type_to_pkgdbinfo()
  * @code
-int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
-{
-       char *appid = NULL;
-       pkgmgrinfo_appinfo_get_appid(handle, &appid);
-       printf("appid : %s\n", appid);
-       return 0;
-}
-
-static int get_app_list(const char *mkey, const char *mvalue)
+static int set_pkg_label_in_db(const char *pkgid)
 {
        int ret = 0;
-       pkgmgrinfo_appinfo_metadata_filter_h handle;
-       ret = pkgmgrinfo_appinfo_metadata_filter_create(&handle);
+       pkgmgrinfo_pkgdbinfo_h handle;
+       ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
        if (ret != PMINFO_R_OK)
                return -1;
-       ret = pkgmgrinfo_appinfo_metadata_filter_add(handle, mkey, mvalue);
+       ret = pkgmgrinfo_set_label_to_pkgdbinfo(handle, "helloworld", "en-us");
        if (ret != PMINFO_R_OK) {
-               pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
+               pkgmgrinfo_destroy_pkgdbinfo(handle);
                return -1;
        }
-       ret = pkgmgrinfo_appinfo_metadata_filter_foreach(handle, app_list_cb, NULL);
+       ret = pkgmgrinfo_save_pkgdbinfo(handle);
        if (ret != PMINFO_R_OK) {
-               pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
+               pkgmgrinfo_destroy_pkgdbinfo(handle);
                return -1;
        }
-       pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
+       pkgmgrinfo_destroy_pkgdbinfo(handle);
        return 0;
 }
  * @endcode
  */
-int pkgmgrinfo_appinfo_metadata_filter_create(pkgmgrinfo_appinfo_metadata_filter_h *handle);
+int pkgmgrinfo_set_label_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *label, const char *locale);
 
 /**
- * @fn int pkgmgrinfo_appinfo_metadata_filter_destroy(pkgmgrinfo_appinfo_metadata_filter_h handle)
- * @brief      This API destroys the application's metadata  information filter handle.
+ * @fn int pkgmgrinfo_set_icon_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *icon, const char *locale)
+ * @brief      This API sets the package icon in db handle
  *
  * @par                This API is for package-manager client application
  * @par Sync (or) Async : Synchronous API
  *
- * @param[in] handle           pointer to the application metadata info filter handle.
+ * @param[in] handle   pointer to the pkgdbinfo handle.
+ * @param[in] icon             pointer to the package icon
+ * @param[in] locale   pointer to the locale
  * @return     0 if success, error code(<0) if fail
  * @retval     PMINFO_R_OK     success
  * @retval     PMINFO_R_EINVAL invalid argument
  * @retval     PMINFO_R_ERROR  internal error
- * @pre                pkgmgrinfo_appinfo_metadata_filter_create()
- * @post               None
- * @see                pkgmgrinfo_appinfo_metadata_filter_foreach()
+ * @pre                pkgmgrinfo_create_pkgdbinfo()
+ * @post               pkgmgrinfo_destroy_pkgdbinfo()
+ * @see                pkgmgrinfo_save_pkgdbinfo()
+ * @see                pkgmgrinfo_set_type_to_pkgdbinfo()
  * @code
-int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
-{
-       char *appid = NULL;
-       pkgmgrinfo_appinfo_get_appid(handle, &appid);
-       printf("appid : %s\n", appid);
-       return 0;
-}
-
-static int get_app_list(const char *mkey, const char *mvalue)
+static int set_pkg_icon_in_db(const char *pkgid)
 {
        int ret = 0;
-       pkgmgrinfo_appinfo_metadata_filter_h handle;
-       ret = pkgmgrinfo_appinfo_metadata_filter_create(&handle);
+       pkgmgrinfo_pkgdbinfo_h handle;
+       ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
        if (ret != PMINFO_R_OK)
                return -1;
-       ret = pkgmgrinfo_appinfo_metadata_filter_add(handle, mkey, mvalue);
+       ret = pkgmgrinfo_set_icon_to_pkgdbinfo(handle, "helloworld.png", "en-us");
        if (ret != PMINFO_R_OK) {
-               pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
+               pkgmgrinfo_destroy_pkgdbinfo(handle);
                return -1;
        }
-       ret = pkgmgrinfo_appinfo_metadata_filter_foreach(handle, app_list_cb, NULL);
+       ret = pkgmgrinfo_save_pkgdbinfo(handle);
        if (ret != PMINFO_R_OK) {
-               pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
+               pkgmgrinfo_destroy_pkgdbinfo(handle);
                return -1;
        }
-       pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
+       pkgmgrinfo_destroy_pkgdbinfo(handle);
        return 0;
 }
  * @endcode
  */
-int pkgmgrinfo_appinfo_metadata_filter_destroy(pkgmgrinfo_appinfo_metadata_filter_h handle);
+int pkgmgrinfo_set_icon_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *icon, const char *locale);
 
 /**
- * @fn int pkgmgrinfo_appinfo_metadata_filter_add(pkgmgrinfo_appinfo_metadata_filter_h handle, const char *key, const char *value)
- * @brief      This API adds filter condition for the query API.  The query will search the entire application metadata  information collected from
- * the manifest file of all the installed packages. You can specify value as NULL to search based on key only.
+ * @fn int pkgmgrinfo_set_description_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *description, const char *locale)
+ * @brief      This API sets the package description in db handle
  *
  * @par                This API is for package-manager client application
  * @par Sync (or) Async : Synchronous API
  *
- * @param[in] handle           pointer to the application metadata info filter handle.
- * @param[in] key                      pointer to metadata key
- * @param[in] value                    pointer to metadata value
+ * @param[in] handle   pointer to the pkgdbinfo handle.
+ * @param[in] description              pointer to the package description
+ * @param[in] locale   pointer to the locale
  * @return     0 if success, error code(<0) if fail
  * @retval     PMINFO_R_OK     success
  * @retval     PMINFO_R_EINVAL invalid argument
  * @retval     PMINFO_R_ERROR  internal error
- * @pre                pkgmgrinfo_appinfo_metadata_filter_create()
- * @post               pkgmgrinfo_appinfo_metadata_filter_foreach(), pkgmgrinfo_appinfo_metadata_filter_destroy()
- * @see                pkgmgrinfo_appinfo_metadata_filter_foreach()
+ * @pre                pkgmgrinfo_create_pkgdbinfo()
+ * @post               pkgmgrinfo_destroy_pkgdbinfo()
+ * @see                pkgmgrinfo_save_pkgdbinfo()
+ * @see                pkgmgrinfo_set_type_to_pkgdbinfo()
  * @code
-int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
-{
-       char *appid = NULL;
-       pkgmgrinfo_appinfo_get_appid(handle, &appid);
-       printf("appid : %s\n", appid);
-       return 0;
-}
-
-static int get_app_list(const char *mkey, const char *mvalue)
+static int set_pkg_description_in_db(const char *pkgid)
 {
        int ret = 0;
-       pkgmgrinfo_appinfo_metadata_filter_h handle;
-       ret = pkgmgrinfo_appinfo_metadata_filter_create(&handle);
+       pkgmgrinfo_pkgdbinfo_h handle;
+       ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
        if (ret != PMINFO_R_OK)
                return -1;
-       ret = pkgmgrinfo_appinfo_metadata_filter_add(handle, mkey, mvalue);
+       ret = pkgmgrinfo_set_description_to_pkgdbinfo(handle, "helloworld application", "en-us");
        if (ret != PMINFO_R_OK) {
-               pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
+               pkgmgrinfo_destroy_pkgdbinfo(handle);
                return -1;
        }
-       ret = pkgmgrinfo_appinfo_metadata_filter_foreach(handle, app_list_cb, NULL);
+       ret = pkgmgrinfo_save_pkgdbinfo(handle);
        if (ret != PMINFO_R_OK) {
-               pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
+               pkgmgrinfo_destroy_pkgdbinfo(handle);
                return -1;
        }
-       pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
+       pkgmgrinfo_destroy_pkgdbinfo(handle);
        return 0;
 }
  * @endcode
  */
-int pkgmgrinfo_appinfo_metadata_filter_add(pkgmgrinfo_appinfo_metadata_filter_h handle,
-               const char *key, const char *value);
+int pkgmgrinfo_set_description_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *description, const char *locale);
 
 /**
- * @fn int pkgmgrinfo_appinfo_metadata_filter_foreach(pkgmgrinfo_appinfo_metadata_filter_h handle, pkgmgrinfo_app_list_cb app_cb, void *user_data)
- * @brief      This API executes the filter query. The query will search the entire application metadata  information collected from
- * the manifest file of all the installed packages. For each application returned by the query, the callback will be called. If callback returns
- * negative value, no more callbacks will be called and API will return.
+ * @fn int pkgmgrinfo_set_author_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *author_name,
+ const char *author_email, const char *author_href, const char *locale)
+ * @brief      This API sets the package author info in db handle
  *
  * @par                This API is for package-manager client application
  * @par Sync (or) Async : Synchronous API
  *
- * @param[in] handle           pointer to the application metadata info filter handle.
- * @param[in] app_cb           function pointer to callback
- * @param[in] user_data                pointer to user data
+ * @param[in] handle   pointer to the pkgdbinfo handle.
+ * @param[in] author_name              pointer to the package author name
+ * @param[in] author_email             pointer to the package author email
+ * @param[in] author_href              pointer to the package author href
+ * @param[in] locale   pointer to the locale
  * @return     0 if success, error code(<0) if fail
  * @retval     PMINFO_R_OK     success
  * @retval     PMINFO_R_EINVAL invalid argument
  * @retval     PMINFO_R_ERROR  internal error
- * @pre                pkgmgrinfo_appinfo_metadata_filter_create()
- * @post               pkgmgrinfo_appinfo_metadata_filter_destroy()
+ * @pre                pkgmgrinfo_create_pkgdbinfo()
+ * @post               pkgmgrinfo_destroy_pkgdbinfo()
+ * @see                pkgmgrinfo_save_pkgdbinfo()
+ * @see                pkgmgrinfo_set_type_to_pkgdbinfo()
  * @code
-int app_list_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
-{
-       char *appid = NULL;
-       pkgmgrinfo_appinfo_get_appid(handle, &appid);
-       printf("appid : %s\n", appid);
-       return 0;
-}
-
-static int get_app_list(const char *mkey, const char *mvalue)
+static int set_pkg_author_in_db(const char *pkgid)
 {
        int ret = 0;
-       pkgmgrinfo_appinfo_metadata_filter_h handle;
-       ret = pkgmgrinfo_appinfo_metadata_filter_create(&handle);
+       pkgmgrinfo_pkgdbinfo_h handle;
+       ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
        if (ret != PMINFO_R_OK)
                return -1;
-       ret = pkgmgrinfo_appinfo_metadata_filter_add(handle, mkey, mvalue);
+       ret = pkgmgrinfo_set_author_to_pkgdbinfo(handle, "John", "john@samsung.com", "www.samsung.com", "en-us");
        if (ret != PMINFO_R_OK) {
-               pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
+               pkgmgrinfo_destroy_pkgdbinfo(handle);
                return -1;
        }
-       ret = pkgmgrinfo_appinfo_metadata_filter_foreach(handle, app_list_cb, NULL);
+       ret = pkgmgrinfo_save_pkgdbinfo(handle);
        if (ret != PMINFO_R_OK) {
-               pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
+               pkgmgrinfo_destroy_pkgdbinfo(handle);
                return -1;
        }
-       pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
+       pkgmgrinfo_destroy_pkgdbinfo(handle);
        return 0;
 }
  * @endcode
  */
-int pkgmgrinfo_appinfo_metadata_filter_foreach(pkgmgrinfo_appinfo_metadata_filter_h handle,
-               pkgmgrinfo_app_list_cb app_cb, void *user_data);
+int pkgmgrinfo_set_author_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, const char *author_name,
+                       const char *author_email, const char *author_href, const char *locale);
 
 /**
- * @fn int pkgmgrinfo_pkginfo_create_certinfo(pkgmgrinfo_certinfo_h *handle)
- * @brief      This API creates the package cert information handle to get data from db.
+ * @fn int pkgmgrinfo_set_removable_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, int removable)
+ * @brief      This API sets the package 'removable' value in db handle
  *
  * @par                This API is for package-manager client application
  * @par Sync (or) Async : Synchronous API
  *
- * @param[out] handle          pointer to the package cert handle.
+ * @param[in] handle   pointer to the pkgdbinfo handle.
+ * @param[in] removable                package removable value
  * @return     0 if success, error code(<0) if fail
  * @retval     PMINFO_R_OK     success
  * @retval     PMINFO_R_EINVAL invalid argument
  * @retval     PMINFO_R_ERROR  internal error
- * @pre                None
- * @post               pkgmgrinfo_pkginfo_destroy_certinfo()
- * @see                pkgmgrinfo_pkginfo_get_cert_value()
- * @see                pkgmgrinfo_pkginfo_load_certinfo()
+ * @pre                pkgmgrinfo_create_pkgdbinfo()
+ * @post               pkgmgrinfo_destroy_pkgdbinfo()
+ * @see                pkgmgrinfo_save_pkgdbinfo()
+ * @see                pkgmgrinfo_set_type_to_pkgdbinfo()
  * @code
-static int get_cert_info(const char *pkgid)
+static int set_pkg_removable_in_db(const char *pkgid)
 {
        int ret = 0;
-       pkgmgrinfo_certinfo_h handle;
-       char *auth_cert = NULL;
-       ret = pkgmgrinfo_pkginfo_create_certinfo(&handle);
+       pkgmgrinfo_pkgdbinfo_h handle;
+       ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
        if (ret != PMINFO_R_OK)
                return -1;
-       ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle);
+       ret = pkgmgrinfo_set_removable_to_pkgdbinfo(handle, 1);
        if (ret != PMINFO_R_OK) {
-               pkgmgrinfo_pkginfo_destroy_certinfo(handle);
+               pkgmgrinfo_destroy_pkgdbinfo(handle);
                return -1;
        }
-       ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert);
+       ret = pkgmgrinfo_save_pkgdbinfo(handle);
        if (ret != PMINFO_R_OK) {
-               pkgmgrinfo_pkginfo_destroy_certinfo(handle);
+               pkgmgrinfo_destroy_pkgdbinfo(handle);
                return -1;
        }
-       printf("Author root certificate: %s\n", auth_root);
-       pkgmgrinfo_pkginfo_destroy_certinfo(handle);
+       pkgmgrinfo_destroy_pkgdbinfo(handle);
        return 0;
 }
  * @endcode
  */
-int pkgmgrinfo_pkginfo_create_certinfo(pkgmgrinfo_certinfo_h *handle);
+int pkgmgrinfo_set_removable_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, int removable);
 
 /**
- * @fn int pkgmgrinfo_pkginfo_load_certinfo(const char *pkgid, pkgmgrinfo_certinfo_h handle)
- * @brief      This API loads the package cert information handle with data from db.
+ * @fn int pkgmgrinfo_set_preload_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, int preload)
+ * @brief      This API sets the package 'preload' value in db handle
  *
  * @par                This API is for package-manager client application
  * @par Sync (or) Async : Synchronous API
  *
- * @param[in] pkgid            pointer to the package ID.
- * @param[in] handle           pointer to the package cert handle.
+ * @param[in] handle   pointer to the pkgdbinfo handle.
+ * @param[in] preload          package preload value
  * @return     0 if success, error code(<0) if fail
  * @retval     PMINFO_R_OK     success
  * @retval     PMINFO_R_EINVAL invalid argument
  * @retval     PMINFO_R_ERROR  internal error
- * @pre                pkgmgrinfo_pkginfo_create_certinfo()
- * @post               pkgmgrinfo_pkginfo_destroy_certinfo()
- * @see                pkgmgrinfo_pkginfo_get_cert_value()
+ * @pre                pkgmgrinfo_create_pkgdbinfo()
+ * @post               pkgmgrinfo_destroy_pkgdbinfo()
+ * @see                pkgmgrinfo_save_pkgdbinfo()
+ * @see                pkgmgrinfo_set_type_to_pkgdbinfo()
  * @code
-static int get_cert_info(const char *pkgid)
+static int set_pkg_preload_in_db(const char *pkgid)
 {
        int ret = 0;
-       pkgmgrinfo_certinfo_h handle;
-       char *auth_cert = NULL;
-       ret = pkgmgrinfo_pkginfo_create_certinfo(&handle);
+       pkgmgrinfo_pkgdbinfo_h handle;
+       ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
        if (ret != PMINFO_R_OK)
                return -1;
-       ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle);
+       ret = pkgmgrinfo_set_preload_to_pkgdbinfo(handle, 1);
        if (ret != PMINFO_R_OK) {
-               pkgmgrinfo_pkginfo_destroy_certinfo(handle);
+               pkgmgrinfo_destroy_pkgdbinfo(handle);
                return -1;
        }
-       ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert);
+       ret = pkgmgrinfo_save_pkgdbinfo(handle);
        if (ret != PMINFO_R_OK) {
-               pkgmgrinfo_pkginfo_destroy_certinfo(handle);
+               pkgmgrinfo_destroy_pkgdbinfo(handle);
                return -1;
        }
-       printf("Author root certificate: %s\n", auth_root);
-       pkgmgrinfo_pkginfo_destroy_certinfo(handle);
+       pkgmgrinfo_destroy_pkgdbinfo(handle);
        return 0;
 }
  * @endcode
  */
-int pkgmgrinfo_pkginfo_load_certinfo(const char *pkgid, pkgmgrinfo_certinfo_h handle);
+int pkgmgrinfo_set_preload_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, int preload);
 
 /**
- * @fn int pkgmgrinfo_pkginfo_get_cert_value(pkgmgrinfo_certinfo_h handle, pkgmgrinfo_cert_type cert_type, const char **cert_value)
- * @brief      This API gets the package cert information from the handle
+ * @fn int pkgmgrinfo_set_installed_storage_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, INSTALL_LOCATION location)
+ * @brief      This API sets the package 'installed_storage' value in db handle
  *
  * @par                This API is for package-manager client application
  * @par Sync (or) Async : Synchronous API
  *
- * @param[in] handle           pointer to the package cert handle.
- * @param[in] cert_type                certificate type
- * @param[out] cert_value      pointer to hold certificate value
+ * @param[in] handle   pointer to the pkgdbinfo handle.
+ * @param[in] location         installed_storage value
  * @return     0 if success, error code(<0) if fail
  * @retval     PMINFO_R_OK     success
  * @retval     PMINFO_R_EINVAL invalid argument
  * @retval     PMINFO_R_ERROR  internal error
- * @pre                pkgmgrinfo_pkginfo_create_certinfo()
- * @post               pkgmgrinfo_pkginfo_destroy_certinfo()
- * @see                pkgmgrinfo_pkginfo_load_certinfo()
+ * @pre                pkgmgrinfo_create_pkgdbinfo()
+ * @post               pkgmgrinfo_destroy_pkgdbinfo()
+ * @see                pkgmgrinfo_save_pkgdbinfo()
  * @code
-static int get_cert_info(const char *pkgid)
+static int set_pkg_installed_storage_in_db(const char *pkgid)
 {
        int ret = 0;
-       pkgmgrinfo_certinfo_h handle;
-       char *auth_cert = NULL;
-       ret = pkgmgrinfo_pkginfo_create_certinfo(&handle);
+       pkgmgrinfo_pkgdbinfo_h handle;
+       ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
        if (ret != PMINFO_R_OK)
                return -1;
-       ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle);
+       ret = pkgmgrinfo_set_installed_storage_to_pkgdbinfo(handle, INSTALL_INTERNAL);
        if (ret != PMINFO_R_OK) {
-               pkgmgrinfo_pkginfo_destroy_certinfo(handle);
+               pkgmgrinfo_destroy_pkgdbinfo(handle);
                return -1;
        }
-       ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert);
+       ret = pkgmgrinfo_save_pkgdbinfo(handle);
        if (ret != PMINFO_R_OK) {
-               pkgmgrinfo_pkginfo_destroy_certinfo(handle);
+               pkgmgrinfo_destroy_pkgdbinfo(handle);
                return -1;
        }
-       printf("Author root certificate: %s\n", auth_root);
-       pkgmgrinfo_pkginfo_destroy_certinfo(handle);
+       pkgmgrinfo_destroy_pkgdbinfo(handle);
        return 0;
 }
  * @endcode
  */
-int pkgmgrinfo_pkginfo_get_cert_value(pkgmgrinfo_certinfo_h handle, pkgmgrinfo_cert_type cert_type, const char **cert_value);
+int pkgmgrinfo_set_installed_storage_to_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle, INSTALL_LOCATION location);
 
 /**
- * @fn int pkgmgrinfo_pkginfo_destroy_certinfo(pkgmgrinfo_certinfo_h handle)
- * @brief      This API destroys the package cert information handle freeing up all the resources
+ * @fn int pkgmgrinfo_save_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle)
+ * @fn int pkgmgrinfo_save_pkgdbusrinfo(pkgmgrinfo_pkgdbinfo_h handle, uid_t uid)
+ * @brief      This API saves all the information from the handle to the DB.
  *
  * @par                This API is for package-manager client application
  * @par Sync (or) Async : Synchronous API
  *
- * @param[in] handle           pointer to the package cert handle.
+ * @param[in] handle           pointer to the package db info handle.
+ * @param[in]  uid     the addressee user id of the instruction
  * @return     0 if success, error code(<0) if fail
  * @retval     PMINFO_R_OK     success
  * @retval     PMINFO_R_EINVAL invalid argument
  * @retval     PMINFO_R_ERROR  internal error
- * @pre                pkgmgrinfo_pkginfo_create_certinfo()
- * @post               None
- * @see                pkgmgrinfo_pkginfo_load_certinfo()
+ * @pre                pkgmgrinfo_create_pkgdbinfo()
+ * @post               pkgmgrinfo_destroy_pkgdbinfo()
+ * @see                pkgmgrinfo_set_type_to_pkgdbinfo()
  * @code
-static int get_cert_info(const char *pkgid)
+static int set_pkg_in_db(const char *pkgid)
 {
        int ret = 0;
-       pkgmgrinfo_certinfo_h handle;
-       char *auth_cert = NULL;
-       ret = pkgmgrinfo_pkginfo_create_certinfo(&handle);
+       pkgmgrinfo_pkgdbinfo_h handle;
+       ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
        if (ret != PMINFO_R_OK)
                return -1;
-       ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, handle);
+       ret = pkgmgrinfo_set_version_to_pkgdbinfo(handle, "0.0.1");
        if (ret != PMINFO_R_OK) {
-               pkgmgrinfo_pkginfo_destroy_certinfo(handle);
+               pkgmgrinfo_destroy_pkgdbinfo(handle);
                return -1;
        }
-       ret = pkgmgrinfo_pkginfo_get_cert_value(handle, PMINFO_AUTHOR_ROOT_CERT, &auth_cert);
+       ret = pkgmgrinfo_save_pkgdbinfo(handle);
        if (ret != PMINFO_R_OK) {
-               pkgmgrinfo_pkginfo_destroy_certinfo(handle);
+               pkgmgrinfo_destroy_pkgdbinfo(handle);
                return -1;
        }
-       printf("Author root certificate: %s\n", auth_root);
-       pkgmgrinfo_pkginfo_destroy_certinfo(handle);
+       pkgmgrinfo_destroy_pkgdbinfo(handle);
        return 0;
 }
  * @endcode
  */
-int pkgmgrinfo_pkginfo_destroy_certinfo(pkgmgrinfo_certinfo_h handle);
-
+int pkgmgrinfo_save_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle);
+int pkgmgrinfo_save_pkgusrdbinfo(pkgmgrinfo_pkgdbinfo_h handle, uid_t uid);
 /**
- * @fn int pkgmgrinfo_delete_certinfo(const char *pkgid)
- * @brief      This API deletes the package cert information from DB
+ * @fn int pkgmgrinfo_destroy_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle)
+ * @brief      This API destroys the package db information handle freeing up all the resources
  *
  * @par                This API is for package-manager client application
  * @par Sync (or) Async : Synchronous API
  *
- * @param[in] pkgid            pointer to the package ID.
+ * @param[in] handle           pointer to the package db info handle.
  * @return     0 if success, error code(<0) if fail
  * @retval     PMINFO_R_OK     success
  * @retval     PMINFO_R_EINVAL invalid argument
  * @retval     PMINFO_R_ERROR  internal error
- * @pre                None
+ * @pre                pkgmgrinfo_create_pkgdbinfo()
  * @post               None
+ * @see                pkgmgrinfo_save_pkgdbinfo()
+ * @see                pkgmgrinfo_set_type_to_pkgdbinfo()
  * @code
-static int delete_cert_info(const char *pkgid)
+static int set_pkg_in_db(const char *pkgid)
 {
        int ret = 0;
-       ret = pkgmgrinfo_delete_certinfo(pkgid);
+       pkgmgrinfo_pkgdbinfo_h handle;
+       ret = pkgmgrinfo_create_pkgdbinfo(pkgid, &handle);
        if (ret != PMINFO_R_OK)
                return -1;
+       ret = pkgmgrinfo_set_version_to_pkgdbinfo(handle, "0.0.1");
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_destroy_pkgdbinfo(handle);
+               return -1;
+       }
+       ret = pkgmgrinfo_save_pkgdbinfo(handle);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_destroy_pkgdbinfo(handle);
+               return -1;
+       }
+       pkgmgrinfo_destroy_pkgdbinfo(handle);
        return 0;
 }
  * @endcode
  */
- int pkgmgrinfo_delete_certinfo(const char *pkgid);
+int pkgmgrinfo_destroy_pkgdbinfo(pkgmgrinfo_pkgdbinfo_h handle);
+
 
 /**
  * @fn int pkgmgrinfo_create_certinfo_set_handle(pkgmgrinfo_instcertinfo_h *handle)
@@ -4020,7 +5295,7 @@ static int set_cert_in_db(const char *pkgid)
                pkgmgrinfo_destroy_certinfo_set_handle(handle);
                return -1;
        }
-       ret = pkgmgrinfo_save_pkgdbinfo(pkgid, handle);
+       ret = pkgmgrinfo_save_certinfo(pkgid, handle);
        if (ret != PMINFO_R_OK) {
                pkgmgrinfo_destroy_certinfo_set_handle(handle);
                return -1;
@@ -4062,7 +5337,7 @@ static int set_cert_in_db(const char *pkgid)
                pkgmgrinfo_destroy_certinfo_set_handle(handle);
                return -1;
        }
-       ret = pkgmgrinfo_save_pkgdbinfo(pkgid, handle);
+       ret = pkgmgrinfo_save_certinfo(pkgid, handle);
        if (ret != PMINFO_R_OK) {
                pkgmgrinfo_destroy_certinfo_set_handle(handle);
                return -1;
@@ -4103,7 +5378,7 @@ static int set_cert_in_db(const char *pkgid)
                pkgmgrinfo_destroy_certinfo_set_handle(handle);
                return -1;
        }
-       ret = pkgmgrinfo_save_pkgdbinfo(pkgid, handle);
+       ret = pkgmgrinfo_save_certinfo(pkgid, handle);
        if (ret != PMINFO_R_OK) {
                pkgmgrinfo_destroy_certinfo_set_handle(handle);
                return -1;
@@ -4113,7 +5388,7 @@ static int set_cert_in_db(const char *pkgid)
 }
  * @endcode
  */
-int pkgmgrinfo_save_certinfo(const char *pkgid, pkgmgrinfo_instcertinfo_h handle);
+int pkgmgrinfo_save_certinfo(const char *pkgid, pkgmgrinfo_instcertinfo_h handle, uid_t uid);
 
 /**
  * @fn int pkgmgrinfo_destroy_certinfo_set_handle(pkgmgrinfo_instcertinfo_h handle)
@@ -4143,7 +5418,7 @@ static int set_cert_in_db(const char *pkgid)
                pkgmgrinfo_destroy_certinfo_set_handle(handle);
                return -1;
        }
-       ret = pkgmgrinfo_save_pkgdbinfo(pkgid, handle);
+       ret = pkgmgrinfo_save_certinfo(pkgid, handle);
        if (ret != PMINFO_R_OK) {
                pkgmgrinfo_destroy_certinfo_set_handle(handle);
                return -1;
@@ -4249,6 +5524,48 @@ static int set_app_guestmode_visibility(const char *appid, bool value)
  * @endcode
  */
  int pkgmgrinfo_appinfo_set_guestmode_visibility(pkgmgrinfo_appinfo_h handle, bool status);
+ int pkgmgrinfo_appinfo_set_usr_guestmode_visibility(pkgmgrinfo_appinfo_h handle, uid_t uid, bool status);
+/**
+ * @pkgmgrinfo client API
+**/
+
+/**
+ * @brief listening status type in pkgmgrinfo.
+ */
+#define PMINFO_CLIENT_STATUS_ALL                                               0x00
+#define PMINFO_CLIENT_STATUS_INSTALL                                   0x01
+#define PMINFO_CLIENT_STATUS_UNINSTALL                                 0x02
+#define PMINFO_CLIENT_STATUS_UPGRADE                                   0x04
+#define PMINFO_CLIENT_STATUS_MOVE                                              0x08
+#define PMINFO_CLIENT_STATUS_CLEAR_DATA                                        0x10
+#define PMINFO_CLIENT_STATUS_INSTALL_PROGRESS                  0x20
+
+/**
+ * @brief type definition.
+ */
+typedef void pkgmgrinfo_client;
+typedef int (*pkgmgrinfo_handler)(int req_id, const char *pkg_type,
+                               const char *pkgid, const char *key,
+                               const char *val, const void *pmsg, void *data);
+
+typedef enum {
+       PMINFO_REQUEST = 0,
+       PMINFO_LISTENING,
+       PMINFO_BROADCAST,
+}pkgmgrinfo_client_type;
+
+/**
+ * @brief      This APIs provides pkgmgrinfo client listener
+ */
+pkgmgrinfo_client *pkgmgrinfo_client_new(pkgmgrinfo_client_type ctype);
+int pkgmgrinfo_client_set_status_type(pkgmgrinfo_client *pc, int status_type);
+int pkgmgrinfo_client_listen_status(pkgmgrinfo_client *pc, pkgmgrinfo_handler event_cb, void *data);
+int pkgmgrinfo_client_free(pkgmgrinfo_client *pc);
+int pkgmgrinfo_client_request_enable_external_pkg(char *pkgid);
+
+/**
+ * @pkgmgrinfo client API end
+**/
 
 
 /** @} */