[ACR-47] Add API Reference for Service Adaptor Client
authorMichal Marcinkowski <m.marcinkows@samsung.com>
Fri, 12 Jun 2015 11:29:03 +0000 (13:29 +0200)
committerMichal Marcinkowski <m.marcinkows@samsung.com>
Tue, 16 Jun 2015 13:25:40 +0000 (15:25 +0200)
Change-Id: I2b8aac3da575824335b196034a7e3300b361eed9
Signed-off-by: Michal Marcinkowski <m.marcinkows@samsung.com>
org.tizen.web.apireference/html/device_api/mobile/index.html
org.tizen.web.apireference/html/device_api/mobile/tizen/serviceadaptor.html [new file with mode: 0644]

index 576f046..cb8b3f1 100644 (file)
                 <td>2.1</td>
                 <td>Optional</td>
                 <td>No</td>
+                
+                </tr><tr><td><a href="tizen/serviceadaptor.html" data-origin="tizen" data-domain="pim" data-category="core" data-status="S" data-version="">
+                        Service Adaptor</a></td>
+                        <td>This API provides methods to communicate with cloud storage systems or other storage systems. </td>
+                <td>2.4</td>
+                <td>Mandatory</td>
+                <td>Yes</td>
 
                 </tr></tbody></table><h4 id="System">System</h4>
              <table class="api-list"><thead><tr><th>API</th><th>Description</th><th>Version (Since)</th><th>Mobile</th><th>Supported on<br>Mobile Emulator</th></tr>
diff --git a/org.tizen.web.apireference/html/device_api/mobile/tizen/serviceadaptor.html b/org.tizen.web.apireference/html/device_api/mobile/tizen/serviceadaptor.html
new file mode 100644 (file)
index 0000000..18c4a9e
--- /dev/null
@@ -0,0 +1,3561 @@
+<!DOCTYPE html PUBLIC "html">
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+        <link rel="stylesheet" type="text/css" href="tizen.css" media="screen">
+        <script type="text/javascript" src="snippet.js"></script><title>Account API</title>
+    </head>
+    <body id="page-content" onload="prettyPrint()">
+        <div class="api" id="::ServiceAdaptorClient">
+            <div class="supported-platforms"><img class="mobile-mandatory emulator" title="Mandatory, Supported by Tizen Mobile emulator" src="mw_icon.png"></div>
+            <div class="title"><h1>Service Adaptor Client API</h1></div>
+            <div class="brief">
+                The Service Adaptor Client API provides developer with common interfaces like using local service to communicate with remote storage systems.
+                Service Adaptor Client provides functions kind of Authorization, Storage ones.
+            </div>
+            <div class="description">
+                <p>
+                    The basic concepts are:
+                </p>
+                <ul>
+                    <li>
+                        <b>Authorization plugin</b> will allow the Tizen Device users to authorize (login)
+                        into 3rd party clouds or other systems. After authorize user will be able to perform
+                        operation on the Tizen
+                        Device to manage 3rd party storage systems files via Storage Plugin.         </li>
+                    <li>
+                        <b>Storage plugin</b> will allow the Tizen Device users (after authorization using Authorization plugin) to see and manage
+                        files stored on 3rd party storage clouds (or other storages) transparently like local files. Users will be allowed to download files from storage
+                        to Tizen Device, edit these files, remove them or upload files from Tizen Device to 3rd party storages.          </li>
+                </ul>
+                <p>
+                    For more information about how to use Service Adaptor Client API, see <a href="../../../../../org.tizen.guides/html/web/tizen/social/service_adaptor_client_n.htm">Service Adaptor Client Guide</a>.
+                </p>
+            </div>
+            <p><span class="version">
+                    Since: </span>
+                2.4
+            </p>
+            <h2>Table of Contents</h2>
+            <ul class="toc">
+                <li>1. <a href="#typedefs-section">Type Definitions</a><ul class="toc"><li>1.1. <a href="#ServiceErrorCodes">Service Error Codes</a>
+                        </li></ul>
+                </li>
+                <li>2. <a href="#interfaces-section">Interfaces</a><ul class="toc">
+                        <li>2.1. <a href="#AccountManagerObject">AccountManagerObject</a>
+                        </li>
+                    </ul>
+                </li>
+                <li>3. <a href="#full-webidl">Full WebIDL</a>
+                </li>
+            </ul>
+            <hr>
+            <div class="typedefs" id="typedefs-section">
+                <h2>1. Global Type Definitions</h2>
+                <div class="typedef" id="ServiceErrorCodes">
+                    <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServiceErrorCode"></a>
+                    <h3>1.1 Service Error Codes</h3>
+                    <div class="brief">
+                        Specify error codes returned by API functionality.
+                    </div>
+                    <pre class="webidl prettyprint">    enum service_adaptor_error_e {"SERVICE_ADAPTOR_ERROR_NONE", "SERVICE_ADAPTOR_ERROR_NOT_SUPPORTED",
+                                "SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER", "SERVICE_ADAPTOR_ERROR_TIMED_OUT", "SERVICE_ADAPTOR_ERROR_NO_DATA",
+                                "SERVICE_ADAPTOR_ERROR_PERMISSION_DENIED", "SERVICE_ADAPTOR_ERROR_UNKNOWN", "SERVICE_ADAPTOR_ERROR_IPC_UNSTABLE",
+                                "SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED", "SERVICE_ADAPTOR_ERROR_NOT_AUTHORIZED", "SERVICE_ADAPTOR_ERROR_INVALID_STATE"
+                                                    };  </pre>
+                    <p><span class="version">
+                            Since: </span>
+                        2.4
+                    </p>
+                    <div class="description">
+                        <ul>
+                            <li>
+                                SERVICE_ADAPTOR_ERROR_NONE - Success </li>
+                            <li>
+                                SERVICE_ADAPTOR_ERROR_NOT_SUPPORTED - Service plugin does not support API  </li>
+                            <li>
+                                SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER - The parameter is invalid </li>
+                            <li>
+                                SERVICE_ADAPTOR_ERROR_TIMED_OUT - API time out  </li>
+                            <li>
+                                SERVICE_ADAPTOR_ERROR_NO_DATA - There is no data available </li>
+                            <li>
+                                SERVICE_ADAPTOR_ERROR_PERMISSION_DENIED - Permission denied </li>
+                            <li>
+                                SERVICE_ADAPTOR_ERROR_UNKNOWN - Unknown error </li>
+                            <li>
+                                SERVICE_ADAPTOR_ERROR_IPC_UNSTABLE - IPC Connection unstabled </li>
+                            <li>
+                                SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED - The error occured from Plugin, See detail from <font style="background-color: red">service_adaptor_get_last_result()</font> and Plugin SPEC </li>
+                            <li>
+                                SERVICE_ADAPTOR_ERROR_NOT_AUTHORIZED - Need Autholization </li>
+                            <li>
+                                SERVICE_ADAPTOR_ERROR_INVALID_STATE - The handle state is invalid for processing API  </li>
+
+                        </ul>
+                    </div>
+                </div>
+            </div>
+            <div class="interfaces" id="interfaces-section">
+                <h2>2. Service Adaptor API</h2>
+                <div class="brief">
+                    The Service Adaptor API provides functions to manage service adaptor handle and creation of service plugin
+                </div>
+                <div class="interface" id="ServiceAdaptorAPI">
+                    <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServiceAdaptorTypesDefinition"></a>
+                    <h3>2.1. Service Adaptor API Types Definition</h3>
+                    <div class="interface" id ="ServiceAdaptorAPIServiceAdaptorHandle">
+                        <h4>2.1.2 Service Adaptor Handle</h4>
+                        <div class="brief">
+                            The handle for connection and managing plugin handle of Service Adaptor. <br>
+                            <font style="background-color: red">The handle can be created by service_adaptor_create(). <br>
+                            When a handle is no longer needed, use service_adaptor_destroy() </font>
+
+                        </div>
+                        <pre class="webidl prettyprint">    typedef struct _service_adaptor_s* service_adaptor_h  </pre>
+                        <p><span class="version">
+                                Since: </span>
+                            2.4
+                        </p>
+                    </div>
+                    <div class="interface" id ="ServiceAdaptorAPIServiceAdaptorPluginCB">
+                        <h4>2.1.1 Service Adaptor Plugin Callback</h4>
+                        <div class="brief">
+                            Callback for <font style="background-color: red">service_adaptor_foreach_plugin()</font> API
+                        </div>
+                        <pre class="webidl prettyprint">    typedef bool(* service_adaptor_plugin_cb) (char *plugin_uri, int service_mask, void *user_data)  </pre>
+                        <p><span class="version">
+                                Since: </span>
+                            2.4
+                        </p>
+                        <div class="parameters">
+                            <p><span class="param">Parameters:</span></p>
+                            <ul>
+                                <li class="param">
+                                    <span class="name">plugin_uri</span>:
+                                    The service plugin's unique uri, this value be set by plugin
+                                </li>
+                                <li class="param">
+                                    <span class="name">service_mask</span>:
+                                    Masked value for installed  service plugins, this value can be masked multiple enum (<font style="background-color: red">service_plugin_service_type_e</font>)
+                                </li>
+                                <li class="param">
+                                    <span class="name">user_data</span>:
+                                    Passed data from <font style="background-color: red">service_adaptor_foreach_plugin() </font>
+                                </li>
+                            </ul>
+                        </div>
+                    </div>
+                </div>
+                <div class="methods">
+                    <h3>2.2 Methods</h3>
+                    <dl>
+                        <dt class="method" id="::ServiceAdaptorClient::service_adaptor_create">
+                        <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServiceAdaptorAPI::service_adaptor_create"></a>
+                        <code><b><span class="methodName">service_adaptor_create</span></b></code>
+                        </dt>
+                        <dd>
+                            <div class="brief">
+                                Create Service Adaptor.
+                            </div>
+                            <div class="synopsis"><pre class="signature prettyprint">int service_adaptor_create(service_adaptor_h *service_adaptor);
+                                </pre></div>
+                            <p><span class="version">
+                                    Since: </span>
+                                2.4
+                            </p>
+                            <div class="description">
+                                <p>
+                                    Create Service Adaptor handle. The Service Adaptor is needed to use other functionality in this API.
+                                </p>
+                            </div>
+                            <p><span class="privilegelevel">
+                                    Privilege level: </span>
+                                public
+                            </p>
+                            <div class="parameters">
+                                <p><span class="param">Parameters:</span></p>
+                                <ul>
+                                    <li class="param">
+                                        <span class="name">service_adaptor</span>:
+                                        Handle for new Service Adaptor.
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="returntype">
+                                <p><span class="return">Return value:</span></p>
+                                <ul>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                        Successful
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
+                                        Invalid parameter
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN  </span>
+                                        Unknown error
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Remarks</span></p>
+                                service_adaptor  must be released memory using <font style="background-color: red">service_adaptor_destroy()</font>, when a program no longer needs any function of Service Adaptor
+                            </div>
+                            <div class="example">
+                                <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">service_adaptor_h service_adaptor = NULL;
+service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
+
+ret = service_adaptor_create(&service_adaptor);
+
+if (SERVICE_ADAPTOR_ERROR_NONE == ret)
+{
+    some_operations();
+    service_adaptor_destroy(service_adaptor);
+}
+else
+{
+    log_error("Creating Service Adaptor failed", ret);
+}
+                                </pre>
+                            </div>
+                        </dd>
+                    </dl>
+                    <dl>
+                        <dt class="method" id="::ServiceAdaptorClient::service_adaptor_destroy">
+                        <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServiceAdaptorAPI::service_adaptor_destroy"></a>
+                        <code><b><span class="methodName">service_adaptor_create</span></b></code>
+                        </dt>
+                        <dd>
+                            <div class="brief">
+                                Destroy Service Adaptor.
+                            </div>
+                            <div class="synopsis"><pre class="signature prettyprint">int service_adaptor_destroy(service_adaptor_h service_adaptor);
+                                </pre></div>
+                            <p><span class="version">
+                                    Since: </span>
+                                2.4
+                            </p>
+                            <div class="description">
+                                <p>
+                                    Destroy Service Adaptor. It must called after a program no longer needs any function of Service Adaptor.
+                                </p>
+                            </div>
+                            <p><span class="privilegelevel">
+                                    Privilege level: </span>
+                                public
+                            </p>
+                            <div class="parameters">
+                                <p><span class="param">Parameters:</span></p>
+                                <ul>
+                                    <li class="param">
+                                        <span class="name">service_adaptor</span>:
+                                        Handle to Service Adaptor.
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="returntype">
+                                <p><span class="return">Return value:</span></p>
+                                <ul>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                        Successful
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
+                                        Invalid parameter
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN  </span>
+                                        Unknown error
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Precondition</span></p>
+                                service_adaptor  must be issued by <font style="background-color: red">service_adaptor_create() </font>
+                            </div>
+                            <div class="example">
+                                <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">service_adaptor_h service_adaptor = NULL;
+service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
+
+ret = service_adaptor_create(&service_adaptor);
+
+if (SERVICE_ADAPTOR_ERROR_NONE == ret)
+{
+    some_operations();
+    service_adaptor_destroy(service_adaptor);
+}
+else
+{
+    log_error("Creating Service Adaptor failed", ret);
+}
+                                </pre>
+                            </div>
+                        </dd>
+                    </dl>
+                    <dl>
+                        <dt class="method" id="::ServiceAdaptorClient::service_adaptor_foreach_plugin">
+                        <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServiceAdaptorAPI::service_adaptor_foreach_plugin"></a>
+                        <code><b><span class="methodName">service_adaptor_foreach_plugin</span></b></code>
+                        </dt>
+                        <dd>
+                            <div class="brief">
+                                Foreach the list of plugins.
+                            </div>
+                            <div class="synopsis"><pre class="signature prettyprint">int service_adaptor_foreach_plugin(service_adaptor_h service_adaptor, service_adaptor_plugin_cb callback, void * user_data);
+                                </pre></div>
+                            <p><span class="version">
+                                    Since: </span>
+                                2.4
+                            </p>
+                            <div class="description">
+                                <p>
+                                    Foreach the list of plugins. This function will call callback function for all installed plugins.
+                                </p>
+                            </div>
+                            <p><span class="privilegelevel">
+                                    Privilege level: </span>
+                                public
+                            </p>
+                            <div class="parameters">
+                                <p><span class="param">Parameters:</span></p>
+                                <ul>
+                                    <li class="param">
+                                        <span class="name">service_adaptor</span>:
+                                        The handle of Service Adaptor
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">callback</span>:
+                                        The callback for foreach plugin
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">user_data</span>:
+                                        Passed data to callback
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="returntype">
+                                <p><span class="return">Return value:</span></p>
+                                <ul>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                        Successful
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NO_DATA </span>
+                                        There is no available plugins
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
+                                        Invalid parameter
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN  </span>
+                                        Unknown error
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Precondition</span></p>
+                                service_adaptor  must be issued by <font style="background-color: red">service_adaptor_create()</font>
+                            </div>
+                            <div class="example">
+                                <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">bool plugin_cb(char *plugin_uri, int service_mask, void *user_data)
+{
+    do_something_with_plugin(plugin_uri, service_mask);
+    return true;
+}
+
+void process_plugins(service_adaptor_h service_adaptor)
+{
+    service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
+
+    ret = service_adaptor_foreach_plugin(service_adaptor, plugin_cb, NULL);
+
+    switch(ret)
+    {
+        case SERVICE_ADAPTOR_ERROR_NONE: return;
+        case SERVICE_ADAPTOR_ERROR_NO_DATA: log_error("There is no installed plugin"); break;
+        default: log_error("Unknown error", ret);
+    }
+}
+                                </pre>
+                            </div>
+                        </dd>
+                    </dl>
+                    <dl>
+                        <dt class="method" id="::ServiceAdaptorClient::service_adaptor_query_plugin_by_file">
+                        <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServiceAdaptorAPI::service_adaptor_query_plugin_by_file"></a>
+                        <code><b><span class="methodName">service_adaptor_query_plugin_by_file</span></b></code>
+                        </dt>
+                        <dd>
+                            <div class="brief">
+                                Retrieve an plugin URI with local file path.
+                            </div>
+                            <div class="synopsis"><pre class="signature prettyprint">int service_adaptor_query_plugin_by_file(service_adaptor_h service_adaptor, const char *file_path, char **plugin_uri)
+                                </pre></div>
+                            <p><span class="version">
+                                    Since: </span>
+                                2.4
+                            </p>
+                            <div class="description">
+                                <p>
+                                    For specific files that is located in cloud but be shown to such as local files (that is operated by Unified Storage System with Service Adaptor),
+                                    this API can find which plugin is used for that file (showing to likes local file). Please reference details to description for Unified Storage System.
+                                </p>
+                            </div>
+                            <p><span class="privilegelevel">
+                                    Privilege level: </span>
+                                public
+                            </p>
+                            <div class="parameters">
+                                <p><span class="param">Parameters:</span></p>
+                                <ul>
+                                    <li class="param">
+                                        <span class="name">service_adaptor</span>:
+                                        The handle of Service Adaptor
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">file_path</span>:
+                                        The local file path
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">plugin_uri</span>:
+                                        The specfic string for use plugin, this values are set by plugin
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="returntype">
+                                <p><span class="return">Return value:</span></p>
+                                <ul>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                        Successful
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
+                                        Invalid parameter
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NO_DATA </span>
+                                        There is no data (also returned if given file is just local (not storage) file)
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN  </span>
+                                        Unknown error
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Remarks</span></p>
+                                plugin_uri  must be released using free()
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Precondition</span></p>
+                                service_adaptor  must be issued by <font style="background-color: red">service_adaptor_create()</font>
+                            </div>
+                            <div class="example">
+                                <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">void process_files(service_adaptor_h service_adaptor, const char *file)
+{
+    service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
+    char *plugin_uri = NULL;
+
+    ret = service_adaptor_query_plugin_by_file(service_adaptor, file, &plugin_uri);
+
+    if (SERVICE_ADAPTOR_ERROR_NONE == ret)
+    {
+        if (0 == strcmp("org.tizen.plugin.my_plugin", plugin_uri))
+        {
+            view_file(file);
+        }
+        else
+        {
+            log_warrning("File is not managed by my_plugin");
+        }
+    }
+    else
+    {
+        log_error("Error occurred", ret);
+    }
+    free(plugin_uri);
+}
+                                </pre>
+                            </div>
+                        </dd>
+                    </dl>
+                    <dl>
+                        <dt class="method" id="::ServiceAdaptorClient::service_adaptor_get_last_error_message">
+                        <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServiceAdaptorAPI::service_adaptor_get_last_error_message"></a>
+                        <code><b><span class="methodName">service_adaptor_get_last_error_message</span></b></code>
+                        </dt>
+                        <dd>
+                            <div class="brief">
+                                Gets service specific last result error message.
+                            </div>
+                            <div class="synopsis"><pre class="signature prettyprint">int service_adaptor_get_last_error_message(char **message)
+                                </pre></div>
+                            <p><span class="version">
+                                    Since: </span>
+                                2.4
+                            </p>
+                            <div class="description">
+                                <p>
+                                    This function retrieves the last error code that be issued from plugin.
+                                    When if API function returns SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED, gets using this function.
+                                </p>
+                            </div>
+                            <p><span class="privilegelevel">
+                                    Privilege level: </span>
+                                public
+                            </p>
+                            <div class="parameters">
+                                <p><span class="param">Parameters:</span></p>
+                                <ul>
+                                    <li class="param">
+                                        <span class="name">message</span>:
+                                        The error message that is defined service plugin SPEC
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="returntype">
+                                <p><span class="return">Return value:</span></p>
+                                <ul>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                        Successful
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
+                                        Invalid parameter
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NO_DATA </span>
+                                        There is no error message
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN  </span>
+                                        Unknown error
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Remarks</span></p>
+                                message  must be released using free()
+                                Thread safe functions
+                                The result string's detail specification is defined service plugin or provider.
+                            </div>
+                            <div class="example">
+                                <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
+
+ret = do_some_operations_on_plugin();
+
+if (SERVICE_ADAPTOR_ERROR_NONE == ret)
+{
+    return;
+}
+else if (SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED == ret)
+{
+    char *message = NULL;
+    if (SERVICE_ADAPTOR_ERROR_NONE == service_adaptor_get_last_error_message(&message);
+    {
+        show_plugin_message(message);
+        free(message);
+    }
+}
+else
+{
+    log_error("Unknown error", ret);
+}
+                                </pre>
+                            </div>
+                        </dd>
+                    </dl>
+                    <dl>
+                        <dt class="method" id="::ServiceAdaptorClient::service_adaptor_get_last_result">
+                        <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServiceAdaptorAPI::service_adaptor_get_last_result"></a>
+                        <code><b><span class="methodName">service_adaptor_get_last_result</span></b></code>
+                        </dt>
+                        <dd>
+                            <div class="brief">
+                                Gets service specific last result.
+                            </div>
+                            <div class="synopsis"><pre class="signature prettyprint">int service_adaptor_get_last_result(int *err)
+                                </pre></div>
+                            <p><span class="version">
+                                    Since: </span>
+                                2.4
+                            </p>
+                            <div class="description">
+                                <p>
+                                    This function retrieves the last error code that be issued from plugin.
+                                    When if API function returns SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED, gets using this function.
+                                </p>
+                            </div>
+                            <p><span class="privilegelevel">
+                                    Privilege level: </span>
+                                public
+                            </p>
+                            <div class="parameters">
+                                <p><span class="param">Parameters:</span></p>
+                                <ul>
+                                    <li class="param">
+                                        <span class="name">err</span>:
+                                        The error number that is defined service plugin SPEC
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="returntype">
+                                <p><span class="return">Return value:</span></p>
+                                <ul>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                        Successful
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
+                                        Invalid parameter
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NO_DATA </span>
+                                        There is no error message
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN  </span>
+                                        Unknown error
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Remarks</span></p>
+                                Thread safe functions
+                                The result number's detail specification is defined service plugin or provider.
+                                The detail error message can be got using <font style="background-color: red">service_adaptor_get_last_error_message()</font>
+
+                            </div>
+                            <div class="example">
+                                <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
+
+ret = do_some_operations_on_plugin();
+
+if (SERVICE_ADAPTOR_ERROR_NONE == ret)
+{
+    return;
+}
+else if (SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED == ret)
+{
+    int err_msg = 0;
+    if (SERVICE_ADAPTOR_ERROR_NONE == service_adaptor_get_last_result(&err_msg);
+    {
+        handle_plugin_error(err_msg);
+    }
+}
+else
+{
+    log_error("Unknown error", ret);
+}
+                                </pre>
+                            </div>
+                        </dd>
+                    </dl>
+                </div>
+
+                <h2>3. Service Plugin API</h2>
+                <div class="brief">
+                    The Service Plugin API provides functions to manage the plugin set’s property and state.
+                </div>
+                <div class="interface" id="ServicePluginAPI">
+                    <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginTypesDefinition"></a>
+                    <h3>3.1. Service Plugin API Types Definition</h3>
+                    <div class="interface" id ="ServicePluginAPIServicePluginHandle">
+                        <h4>3.1.1 Service Plugin Handle</h4>
+                        <div class="brief">
+                            The Plugn handle for Service Adaptor. <br>
+                            The handle can be created by <font style="background-color: red">service_adaptor_create_plugin()</font><br>
+                            When a handle is no longer needed, use <font style="background-color: red">service_plugin_destroy()</font>
+                        </div>
+                        <pre class="webidl prettyprint">    struct _service_plugin_s* service_plugin_h  </pre>
+                        <p><span class="version">
+                                Since: </span>
+                            2.4
+                        </p>
+                    </div>
+                    <div class="interface" id ="ServicePluginAPIServicePluginServiceType">
+                        <h4>3.1.2 Service Plugin Service Type</h4>
+                        <div class="brief">
+                            Type of service in plugin.
+                        </div>
+                        <pre class="webidl prettyprint">    enum service_plugin_service_type_e {"SERVICE_PLUGIN_SERVICE_AUTH", "SERVICE_PLUGIN_SERVICE_STORAGE"}; </pre>
+                        <div class="description">
+                            <ul>
+                                <li>
+                                    SERVICE_PLUGIN_SERVICE_AUTH  - Auth service type flag </li>
+                                <li>
+                                    SERVICE_PLUGIN_SERVICE_STORAGE - Storage service type flag </li>
+                            </ul>
+                        </div>
+                        <p><span class="version">
+                                Since: </span>
+                            2.4
+                        </p>
+                    </div>
+                    <div class="interface" id ="ServicePluginAPIServicePluginMacros">
+                        <h4>3.1.3 Service Plugin API Macros</h4>
+                        <dl>
+                            <dt class="method" id="::ServiceAdaptorClient::SERVICE_PLUGIN_PROPERTY_APP_KEY">
+                            <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::SERVICE_PLUGIN_PROPERTY_APP_KEY"></a>
+                            <code><b><span class="methodName">SERVICE_PLUGIN_PROPERTY_APP_KEY</span></b></code>
+                            </dt>
+                            <dd>
+                                <div class="brief">
+                                    Definition for the service_plugin property Application Key
+                                </div>
+                                <div class="synopsis"><pre class="signature prettyprint">#define SERVICE_PLUGIN_PROPERTY_APP_KEY "http://tizen.org/service-adaptor/plugin/property/app_key"
+                                    </pre></div>
+                                <p><span class="version">
+                                        Since: </span>
+                                    2.4
+                                </p>
+                                <div class="description">
+                                    <p>
+                                        Definition for the service_plugin property: The application id be issued from service provider for 3<sup>rd</sup> party developer
+                                    </p>
+                                </div>
+                                <p><span class="privilegelevel">
+                                        Privilege level: </span>
+                                    public
+                                </p>
+                            </dd>
+                        </dl>
+                        <dl>
+                            <dt class="method" id="::ServiceAdaptorClient::SERVICE_PLUGIN_PROPERTY_APP_SECRET">
+                            <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::SERVICE_PLUGIN_PROPERTY_APP_SECRET"></a>
+                            <code><b><span class="methodName">SERVICE_PLUGIN_PROPERTY_APP_SECRET</span></b></code>
+                            </dt>
+                            <dd>
+                                <div class="brief">
+                                    Definition for the service_plugin property Application Secret
+                                </div>
+                                <div class="synopsis"><pre class="signature prettyprint">#define SERVICE_PLUGIN_PROPERTY_APP_SECRET  "http://tizen.org/service-adaptor/plugin/property/app_secret"
+                                    </pre></div>
+                                <p><span class="version">
+                                        Since: </span>
+                                    2.4
+                                </p>
+                                <div class="description">
+                                    <p>
+                                        Definition for the service_plugin property: The application password be issued from service provider for 3<sup>rd</sup> party developer
+                                    </p>
+                                </div>
+                                <p><span class="privilegelevel">
+                                        Privilege level: </span>
+                                    public
+                                </p>
+                            </dd>
+                        </dl>
+                        <dl>
+                            <dt class="method" id="::ServiceAdaptorClient::SERVICE_PLUGIN_PROPERTY_USER_ID">
+                            <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::SERVICE_PLUGIN_PROPERTY_USER_ID"></a>
+                            <code><b><span class="methodName">SERVICE_PLUGIN_PROPERTY_USER_ID</span></b></code>
+                            </dt>
+                            <dd>
+                                <div class="brief">
+                                    Definition for the service_plugin property User ID
+                                </div>
+                                <div class="synopsis"><pre class="signature prettyprint">#define SERVICE_PLUGIN_PROPERTY_APP_SECRET  "http://tizen.org/service-adaptor/plugin/property/app_secret"
+                                    </pre></div>
+                                <p><span class="version">
+                                        Since: </span>
+                                    2.4
+                                </p>
+                                <div class="description">
+                                    <p>
+                                        Definition for the service_plugin property: The user id for using specific service provider for 3<sup>rd</sup> party developer
+                                    </p>
+                                </div>
+                                <p><span class="privilegelevel">
+                                        Privilege level: </span>
+                                    public
+                                </p>
+                            </dd>
+                        </dl>
+                    </div>
+                </div>
+                <div class="methods">
+                    <h3>3.2 Methods</h3>
+                    <dl>
+                        <dt class="method" id="::ServiceAdaptorClient::service_adaptor_create_plugin">
+                        <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_adaptor_create_plugin"></a>
+                        <code><b><span class="methodName">service_adaptor_create_plugin</span></b></code>
+                        </dt>
+                        <dd>
+                            <div class="brief">
+                                Create service plugin handle.
+                            </div>
+                            <div class="synopsis"><pre class="signature prettyprint">int service_adaptor_create_plugin(service_adaptor_h service_adaptor, const char *plugin_uri, service_plugin_h *plugin);
+                                </pre></div>
+                            <p><span class="version">
+                                    Since: </span>
+                                2.4
+                            </p>
+                            <div class="description">
+                                <p>
+                                    Create service plugin handle using plugin_uri
+                                </p>
+                            </div>
+                            <p><span class="privilegelevel">
+                                    Privilege level: </span>
+                                public
+                            </p>
+                            <div class="parameters">
+                                <p><span class="param">Parameters:</span></p>
+                                <ul>
+                                    <li class="param">
+                                        <span class="name">service_adaptor</span>:
+                                        The handle of Service Adaptor
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">plugin_uri</span>:
+                                        The specific string for use plugin, this values are set by plugin
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">plugin</span>:
+                                        The handle for use Plugin APIs.
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="returntype">
+                                <p><span class="return">Return value:</span></p>
+                                <ul>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                        Successful
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
+                                        Invalid parameter
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN  </span>
+                                        Unknown error
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Remarks</span></p>
+                                plugin  must be released memory using <font style="background-color: red">service_plugin_destroy()</font> when you no longer needs plugin's
+                            </div>
+                            <div class="example">
+                                <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">service_adaptor_h service_adaptor = NULL;
+service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
+
+ret = service_adaptor_create(&service_adaptor);
+
+if (SERVICE_ADAPTOR_ERROR_NONE == ret)
+{
+    service_plugin_h plugin = NULL;
+    const char *plugin_uri = "org.tizen.plugin.my_plugin";
+
+    ret = service_adaptor_create_plugin(service_adaptor, plugin_uri, &plugin);
+    if (SERVICE_ADAPTOR_ERROR_NONE == ret)
+    {
+        do_something();
+        service_plugin_destroy(plugin);
+    }
+    else
+    {
+        log_error("Creating plugin failed", ret);
+    }
+    service_adaptor_destroy(service_adaptor);
+}
+else
+{
+    log_error("Creating Service Adaptor failed", ret);
+}
+                                </pre>
+                            </div>
+                        </dd>
+                    </dl>
+                    <dl>
+                        <dt class="method" id="::ServiceAdaptorClient::service_plugin_add_property">
+                        <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_plugin_add_property"></a>
+                        <code><b><span class="methodName">service_plugin_add_property </span></b></code>
+                        </dt>
+                        <dd>
+                            <div class="brief">
+                                Add Plugin Property.
+                            </div>
+                            <div class="synopsis"><pre class="signature prettyprint">int service_plugin_add_property(service_plugin_h plugin, const char *key, const char *value)
+                                </pre></div>
+                            <p><span class="version">
+                                    Since: </span>
+                                2.4
+                            </p>
+                            <div class="description">
+                                <p>
+                                    Add Plugin Property.
+                                    The plguin property is used for plugin's basic or optional requirement. <br>
+                                    This value is not used in Adaptor layer, but it can be uesd to important Key for plugin with service provider.
+                                </p>
+                            </div>
+                            <p><span class="privilegelevel">
+                                    Privilege level: </span>
+                                public
+                            </p>
+                            <div class="parameters">
+                                <p><span class="param">Parameters:</span></p>
+                                <ul>
+                                    <li class="param">
+                                        <span class="name">plugin</span>:
+                                        The handle for use Plugin APIs
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">key</span>:
+                                        The key of plugin property defined in <font style="background-color: red">3.1.3 Service Plugin API Macros</font>
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">value</span>:
+                                        The value of plugin property that matched key
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="returntype">
+                                <p><span class="return">Return value:</span></p>
+                                <ul>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                        Successful
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
+                                        Invalid parameter
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN  </span>
+                                        Unknown error
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Remarks</span></p>
+                                Some kind of property key(Not mandatory) is defined in this API (That is named to SERVICE_PLUGIN_PROPERTY_XXX) <br>
+                                If the key  already exists in the property its current value is replaced with the new value . <br>
+                                plugin  must be released memory using <font style="background-color: red">service_plugin_destroy()</font> when you no longer needs plugin's API
+
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Precondition</span></p>
+                                plugin  must be issued by <font style="background-color: red">service_adaptor_create_plugin()</font>
+                            </div>
+                            <div class="example">
+                                <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">void create_plugin(service_adaptor_h service_adaptor)
+{
+    service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
+    service_plugin_h plugin = NULL;
+    const char *plugin_uri = "org.tizen.plugin.my_plugin";
+
+    ret = service_adaptor_create_plugin(service_adaptor, plugin_uri, &plugin);
+    if (SERVICE_ADAPTOR_ERROR_NONE == ret)
+    {
+        service_plugin_add_property(plugin, SERVICE_PLUGIN_PROPERTY_USER_ID, "The King");
+        do_something();
+        service_plugin_destroy(plugin);
+    }
+    else
+    {
+        log_error("Creating plugin failed", ret);
+    }
+}
+                                </pre>
+                            </div>
+                        </dd>
+                    </dl>
+                    <dl>
+                        <dt class="method" id="::ServiceAdaptorClient::service_plugin_get_property">
+                        <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_plugin_get_property"></a>
+                        <code><b><span class="methodName">service_plugin_get_property </span></b></code>
+                        </dt>
+                        <dd>
+                            <div class="brief">
+                                Gets Plugin Property.
+                            </div>
+                            <div class="synopsis"><pre class="signature prettyprint">int service_plugin_get_property(service_plugin_h plugin, const char *key, char **value)
+                                </pre></div>
+                            <p><span class="version">
+                                    Since: </span>
+                                2.4
+                            </p>
+                            <div class="description">
+                                <p>
+                                    Add Plugin Property.
+                                    The plguin property is used for plugin's basic or optional requirement. <br>
+                                    This value is not used in Adaptor layer, but it can be uesd to important Key for plugin with service provider.
+                                </p>
+                            </div>
+                            <p><span class="privilegelevel">
+                                    Privilege level: </span>
+                                public
+                            </p>
+                            <div class="parameters">
+                                <p><span class="param">Parameters:</span></p>
+                                <ul>
+                                    <li class="param">
+                                        <span class="name">plugin</span>:
+                                        The handle for use Plugin APIs
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">key</span>:
+                                        The key of plugin property defined in <font style="background-color: red">3.1.3 Service Plugin API Macros</font>
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">value</span>:
+                                        The value of plugin property that matched key
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="returntype">
+                                <p><span class="return">Return value:</span></p>
+                                <ul>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                        Successful
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
+                                        Invalid parameter
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NO_DATA </span>
+                                        There is no property
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN  </span>
+                                        Unknown error
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Remarks</span></p>
+                                Some kind of property key(Not mandatory) is defined in this API (That is named to SERVICE_PLUGIN_PROPERTY_XXX) <br>
+                                value must be released using free()
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Precondition</span></p>
+                                plugin must be issued by <font style="background-color: red">service_adaptor_create_plugin()</font>
+                            </div>
+                            <div class="example">
+                                <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">bool check_plugin(service_plugin_h service_plugin)
+{
+    service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
+    char *value = NULL;
+
+    ret = service_plugin_get_property(plugin, SERVICE_PLUGIN_PROPERTY_USER_ID, &value);
+    if (SERVICE_ADAPTOR_ERROR_NONE == ret)
+    {
+        bool retVal = check_user(value);
+
+        free(value);
+        return retVal;
+    }
+    else
+    {
+        log_error("Creating plugin failed", ret);
+    }
+    return false;
+}
+                                </pre>
+                            </div>
+                        </dd>
+                    </dl>
+                    <dl>
+                        <dt class="method" id="::ServiceAdaptorClient::service_plugin_remove_property">
+                        <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_plugin_remove_property"></a>
+                        <code><b><span class="methodName">service_plugin_remove_property</span></b></code>
+                        </dt>
+                        <dd>
+                            <div class="brief">
+                                Remove Plugin Property
+                            </div>
+                            <div class="synopsis"><pre class="signature prettyprint">int service_plugin_remove_property(service_plugin_h plugin, const char *key)
+                                </pre></div>
+                            <p><span class="version">
+                                    Since: </span>
+                                2.4
+                            </p>
+                            <div class="description">
+                                <p>
+                                    Remove property that has been added before from plugin.
+                                </p>
+                            </div>
+                            <p><span class="privilegelevel">
+                                    Privilege level: </span>
+                                public
+                            </p>
+                            <div class="parameters">
+                                <p><span class="param">Parameters:</span></p>
+                                <ul>
+                                    <li class="param">
+                                        <span class="name">plugin</span>:
+                                        The handle for use Plugin APIs
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">key</span>:
+                                        The key of plugin property defined in <font style="background-color: red">3.1.3 Service Plugin API Macros</font>
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="returntype">
+                                <p><span class="return">Return value:</span></p>
+                                <ul>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                        Successful
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
+                                        Invalid parameter
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN  </span>
+                                        Unknown error
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Remarks</span></p>
+                                Some kind of property key (not mandatory) is defined in this API (That is named to SERVICE_PLUGIN_PROPERTY_XXX)
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Precondition</span></p>
+                                plugin must be issued by <font style="background-color: red">service_adaptor_create_plugin()</font>
+                                The function property already set by <font style="background-color: red">service_adaptor_set_plugin_property()</font>
+                            </div>
+                            <div class="example">
+                                <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">bool reset_plugin(service_plugin_h service_plugin)
+{
+    service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
+
+    ret = service_plugin_remove_property(plugin, SERVICE_PLUGIN_PROPERTY_USER_ID);
+    return (SERVICE_ADAPTOR_ERROR_NONE == ret);
+}
+                                </pre>
+                            </div>
+                        </dd>
+                    </dl>
+                    <dl>
+                        <dt class="method" id="::ServiceAdaptorClient::service_plugin_start">
+                        <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_plugin_start"></a>
+                        <code><b><span class="methodName">service_plugin_start</span></b></code>
+                        </dt>
+                        <dd>
+                            <div class="brief">
+                                Requests start initialization for service plugin.
+                            </div>
+                            <div class="synopsis"><pre class="signature prettyprint">int service_plugin_start (service_plugin_h plugin, int service_mask)
+                                </pre></div>
+                            <p><span class="version">
+                                    Since: </span>
+                                2.4
+                            </p>
+                            <div class="description">
+                                <p>
+                                    Requests start initialization for service plugin. After start is done plugin is operational and plugin functionality can be used.
+                                </p>
+                            </div>
+                            <p><span class="privilegelevel">
+                                    Privilege level: </span>
+                                public
+                            </p>
+                            <div class="parameters">
+                                <p><span class="param">Parameters:</span></p>
+                                <ul>
+                                    <li class="param">
+                                        <span class="name">plugin</span>:
+                                        The handle for use Plugin APIs
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">service_mask</span>:
+                                        The flag for use service plugins, this flag can be masked multiple enum (<font style="background-color: red">service_plugin_service_type_e</font>)
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="returntype">
+                                <p><span class="return">Return value:</span></p>
+                                <ul>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                        Successful
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER</span>
+                                        Invalid parameter
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NOT_AUTHORIZED</span>
+                                        Need authorization
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_TIMED_OUT</span>
+                                        Timed out
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_IPC_UNSTABLE</span>
+                                        IPC failed with Service Adaptor Daemon
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN  </span>
+                                        Unknown error
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Remarks</span></p>
+                                service_mask  must be input using 'bit or' operation with <font style="background-color: red">service_plugin_service_type_e</font>
+                                - for example,<br>
+                                int  service_mask  |= SERVIE_PLUGIN_SERVICE_AUTH;<br>
+                                service_mask  |= SERVICE_PLUGIN_SERVICE_STORAGE; <br>
+                                int  ret = service_plugin_start(m_plugin , service_mask ); <br>
+                                If a program needs to stop plugin manually, use <font style="background-color: red">service_plugin_stop()</font>.
+                                But in <font style="background-color: red">service_plugin_destroy()</font>, automatically stop service plugin
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Precondition</span></p>
+                                plugin must be issued by <font style="background-color: red">service_adaptor_create_plugin()</font>
+                            </div>
+                            <div class="example">
+                                <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">service_plugin_h service_plugin = NULL;
+
+create_service_plugin(&service_plugin);
+add_properties_to_plugin(service_plugin);
+
+int mask = SERVIE_PLUGIN_SERVICE_AUTH;
+
+service_plugin_start(service_plugin, mask);
+do_something();
+
+service_plugin_destroy(service_plugin);
+                                </pre>
+                            </div>
+                        </dd>
+                    </dl>
+                    <dl>
+                        <dt class="method" id="::ServiceAdaptorClient::service_plugin_stop">
+                        <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_plugin_stop"></a>
+                        <code><b><span class="methodName">service_plugin_stop</span></b></code>
+                        </dt>
+                        <dd>
+                            <div class="brief">
+                                Requests stop manually for service plugin.
+                            </div>
+                            <div class="synopsis"><pre class="signature prettyprint">int service_plugin_stop(service_plugin_h plugin)
+                                </pre></div>
+                            <p><span class="version">
+                                    Since: </span>
+                                2.4
+                            </p>
+                            <div class="description">
+                                <p>
+                                    Requests stop manually for service plugin. This operation could be perform e.g. to change plugin state and start it again.
+                                </p>
+                            </div>
+                            <p><span class="privilegelevel">
+                                    Privilege level: </span>
+                                public
+                            </p>
+                            <div class="parameters">
+                                <p><span class="param">Parameters:</span></p>
+                                <ul>
+                                    <li class="param">
+                                        <span class="name">plugin</span>:
+                                        The handle for use Plugin APIs
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="returntype">
+                                <p><span class="return">Return value:</span></p>
+                                <ul>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                        Successful
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER</span>
+                                        Invalid parameter
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_TIMED_OUT</span>
+                                        Timed out
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_IPC_UNSTABLE</span>
+                                        IPC failed with Service Adaptor Daemon
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN</span>
+                                        Unknown error
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Remarks</span></p>
+                                If a program needs to stop plugin manually, use this function.
+                                But in <font style="background-color: red">service_plugin_destroy()</font>, automatically stop service plugin
+                                plugin must be released memory using <font style="background-color: red">service_plugin_destroy()</font> when you no longer needs plugin's API
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Precondition</span></p>
+                                plugin must be issued by <font style="background-color: red">service_adaptor_create_plugin()</font>
+                            </div>
+                            <div class="example">
+                                <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">service_plugin_h service_plugin = NULL;
+
+create_service_plugin(&service_plugin);
+add_properties_to_plugin(service_plugin);
+
+int mask = SERVIE_PLUGIN_SERVICE_AUTH;
+
+service_plugin_start(service_plugin, mask);
+
+do_something();
+
+service_plugin_stop(service_plugin);
+service_plugin_change_to_annother_user_id(service_plugin);
+service_plugin_start(service_plugin, mask);
+
+do_something();  //do the same with another user id
+
+service_plugin_destroy(service_plugin);
+                                </pre>
+                            </div>
+                        </dd>
+                    </dl>
+                    <dl>
+                        <dt class="method" id="::ServiceAdaptorClient::service_plugin_destroy">
+                        <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_plugin_destroy"></a>
+                        <code><b><span class="methodName">service_plugin_destroy</span></b></code>
+                        </dt>
+                        <dd>
+                            <div class="brief">
+                                Stop and destroy Service Plugin.
+                            </div>
+                            <div class="synopsis"><pre class="signature prettyprint">int service_plugin_destroy(service_plugin_h plugin)
+                                </pre></div>
+                            <p><span class="version">
+                                    Since: </span>
+                                2.4
+                            </p>
+                            <div class="description">
+                                <p>
+                                    Requests stop (if not already stopped) and destroy Service Plugin.<br>
+                                    It must called after a program no longer needs APIs of specific plugin.
+                                </p>
+                            </div>
+                            <p><span class="privilegelevel">
+                                    Privilege level: </span>
+                                public
+                            </p>
+                            <div class="parameters">
+                                <p><span class="param">Parameters:</span></p>
+                                <ul>
+                                    <li class="param">
+                                        <span class="name">plugin</span>:
+                                        The handle for use Plugin APIs
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="returntype">
+                                <p><span class="return">Return value:</span></p>
+                                <ul>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                        Successful
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER</span>
+                                        Invalid parameter
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN</span>
+                                        Unknown error
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Precondition</span></p>
+                                plugin must be issued by <font style="background-color: red">service_adaptor_create_plugin()</font>
+                            </div>
+                            <div class="example">
+                                <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">service_plugin_h service_plugin = NULL;
+
+create_service_plugin(&service_plugin);
+add_properties_to_plugin(service_plugin);
+
+int mask = SERVIE_PLUGIN_SERVICE_AUTH;
+
+service_plugin_start(service_plugin, mask);
+do_something();
+
+service_plugin_destroy(service_plugin);
+                                </pre>
+                            </div>
+                        </dd>
+                    </dl>
+                </div>
+
+                <h2>4. Storage API</h2>
+                <div class="brief">
+                    Storage API provide functions for access and managing storage service.
+                </div>
+                <div class="interface" id="StorageAPI">
+                    <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::StorageTypesDefinition"></a>
+                    <h3>4.1. Storage API Types Definition</h3>
+                    <div class="interface" id ="StorageAPIFileCallback">
+
+                        <h4>4.1.1 Service storage file</h4>
+                        <div class="brief">
+                            The handle of file or directory in storage.
+                        </div>
+                        <pre class="webidl prettyprint">    struct _service_storage_file_s* service_storage_file_h</pre>
+                        <p><span class="version">
+                                Since: </span>
+                            2.4
+                        </p>
+
+                        <h4>4.1.2 Service storage file list</h4>
+                        <div class="brief">
+                            The list handle of file or directory in storage.
+                        </div>
+                        <pre class="webidl prettyprint">    struct _service_storage_file_list_s* service_storage_file_list_h</pre>
+                        <p><span class="version">
+                                Since: </span>
+                            2.4
+                        </p>
+
+                        <h4>4.1.3 Service storage task</h4>
+                        <div class="brief">
+                            The handle of async task for storage service.
+                        </div>
+                        <pre class="webidl prettyprint">    struct _service_storage_task_s* service_storage_task_h</pre>
+                        <p><span class="version">
+                                Since: </span>
+                            2.4
+                        </p>
+
+                        <h4>4.1.4 Service storage task state</h4>
+                        <div class="brief">
+                            The handle of async task for storage service.
+                        </div>
+                        <pre class="webidl prettyprint">    enum service_storage_task_state_e={"SERVICE_STORAGE_TASK_IN_PROGRESS", "SERVICE_STORAGE_TASK_COMPLETED",
+                                       "SERVICE_STORAGE_TASK_CANCELED", "SERVICE_STORAGE_TASK_FAILED"};
+                        </pre>
+                        <p><span class="version">
+                                Since: </span>
+                            2.4
+                        </p>
+                        <div class="description">
+                            <ul>
+                                <li>
+                                    SERVICE_STORAGE_TASK_IN_PROGRESS - The task is progressing  </li>
+                                <li>
+                                    SERVICE_STORAGE_TASK_COMPLETED - The task was completed  </li>
+                                <li>
+                                    SERVICE_STORAGE_TASK_CANCELED - The task was canceled </li>
+                                <li>
+                                    SERVICE_STORAGE_TASK_FAILED - The task was failed </li>
+
+                            </ul>
+                        </div>
+
+                        <h4>4.1.5 Service storage file callback</h4>
+                        <div class="brief">
+                            Callback for <font style="background-color: red">service_storage_file_list_foreach_file()</font> API
+                        </div>
+                        <pre class="webidl prettyprint">    typedef bool(*service_storage_file_cb)(service_storage_file_h file, void *user_data)  </pre>
+                        <p><span class="version">
+                                Since: </span>
+                            2.4
+                        </p>
+                        <div class="parameters">
+                            <p><span class="param">Parameters:</span></p>
+                            <ul>
+                                <li class="param">
+                                    <span class="name">file</span>:
+                                    The handle of file
+                                </li>
+                                <li class="param">
+                                    <span class="name">user_data</span>:
+                                    Passed data from <font style="background-color: red">service_storage_file_list_foreach_file()</font>
+                                </li>
+                            </ul>
+                        </div>
+
+                        <h4>4.1.6 Service storage file list callback</h4>
+                        <div class="brief">
+                            Callback for <font style="background-color: red">service_storage_get_file_list()</font> API
+                        </div>
+                        <pre class="webidl prettyprint">    void(* service_storage_file_list_cb)(int result, service_storage_file_list_h list, void *user_data)  </pre>
+                        <p><span class="version">
+                                Since: </span>
+                            2.4
+                        </p>
+                        <div class="parameters">
+                            <p><span class="param">Parameters:</span></p>
+                            <ul>
+                                <li class="param">
+                                    <span class="name">result</span>:
+                                    Result code for <font style="background-color: red">service_storage_get_file_list() (see service_adaptor_error_e)</font>
+                                    <p><span class="return">Possible value:</span></p>
+                                    <ul>
+                                        <li class="returntypes">
+                                            <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                            Successful
+                                        </li>
+                                        <li class="returntypes">
+                                            <span class="name">SERVICE_ADAPTOR_ERROR_NO_DATA </span>
+                                            There is no files
+                                        </li>
+                                        <li class="returntypes">
+                                            <span class="name">SERVICE_ADAPTOR_ERROR_TIMED_OUT </span>
+                                            Timed out
+                                        </li>
+                                        <li class="returntypes">
+                                            <span class="name">SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED </span>
+                                            Failed in Plugin internal. <br>
+                                            Error code and error message can be obtained using
+                                            <font style="background-color: red">service_adaptor_get_last_result() and service_adaptor_get_last_error_message()</font> method. <br>
+                                            Error codes and messages are described in Service Plugin.
+                                        </li>
+                                        <li class="returntypes">
+                                            <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN</span>
+                                            Unknown error
+                                        </li>
+                                    </ul>
+                                </li>
+                                <li class="param">
+                                    <span class="name">list</span>:
+                                    The handle of file list
+                                </li>
+                                <li class="param">
+                                    <span class="name">user_data</span>:
+                                    Passed data from <font style="background-color: red">service_storage_get_file_list()</font>
+                                </li>
+                            </ul>
+                        </div>
+
+                        <h4>4.1.7 Service storage result callback</h4>
+                        <div class="brief">
+                            Callback for getting async storage operation result.
+                        </div>
+                        <pre class="webidl prettyprint">    void(* service_storage_result_cb)(int result, void *user_data)  </pre>
+                        <p><span class="version">
+                                Since: </span>
+                            2.4
+                        </p>
+                        <div class="parameters">
+                            <p><span class="param">Parameters:</span></p>
+                            <ul>
+                                <li class="param">
+                                    <span class="name">result</span>:
+                                    Result code for storage async operation <font style="background-color: red">(see service_adaptor_error_e)</font>
+                                    <p><span class="return">Possible value:</span></p>
+                                    <ul>
+                                        <li class="returntypes">
+                                            <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                            Successful
+                                        </li>
+                                        <li class="returntypes">
+                                            <span class="name">SERVICE_ADAPTOR_ERROR_NO_DATA </span>
+                                            There is no files
+                                        </li>
+                                        <li class="returntypes">
+                                            <span class="name">SERVICE_ADAPTOR_ERROR_TIMED_OUT </span>
+                                            Timed out
+                                        </li>
+                                        <li class="returntypes">
+                                            <span class="name">SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED </span>
+                                            Failed in Plugin internal. <br>
+                                            Error code and error message can be obtained using
+                                            <font style="background-color: red">service_adaptor_get_last_result() and service_adaptor_get_last_error_message()</font> method. <br>
+                                            Error codes and messages are described in Service Plugin.
+                                        </li>
+                                        <li class="returntypes">
+                                            <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN</span>
+                                            Unknown error
+                                        </li>
+                                    </ul>
+                                </li>
+                                <li class="param">
+                                    <span class="name">user_data</span>:
+                                    Passed data from request function
+                                </li>
+                            </ul>
+                        </div>
+
+                        <h4>4.1.8 Service storage task progress callback</h4>
+                        <div class="brief">
+                            Callback for progress of storage task
+                        </div>
+                        <pre class="webidl prettyprint">    void(* service_storage_task_progress_cb)(unsigned long long progress, unsigned long long total, void *user_data)  </pre>
+                        <p><span class="version">
+                                Since: </span>
+                            2.4
+                        </p>
+                        <div class="parameters">
+                            <p><span class="param">Parameters:</span></p>
+                            <ul>
+                                <li class="param">
+                                    <span class="name">progress</span>:
+                                    The progressed amount of storage task
+                                </li>
+                                <li class="param">
+                                    <span class="name">total</span>:
+                                    The total amount of storage task
+                                </li>
+                                <li class="param">
+                                    <span class="name">user_data</span>:
+                                    Passed data from <font style="background-color: red">service_storage_set_task_progress_cb()</font>
+                                </li>
+                            </ul>
+                        </div>
+
+                        <h4>4.1.9 Service storage task state callback</h4>
+                        <div class="brief">
+                            Callback for changing state of storage task.
+                        </div>
+                        <pre class="webidl prettyprint">    void(* service_storage_task_state_cb)(service_storage_task_state_e state, void *user_data)</pre>
+                        <p><span class="version">
+                                Since: </span>
+                            2.4
+                        </p>
+                        <div class="parameters">
+                            <p><span class="param">Parameters:</span></p>
+                            <ul>
+                                <li class="param">
+                                    <span class="name">state</span>:
+                                    The state of storage task
+                                </li>
+                                <li class="param">
+                                    <span class="name">user_data</span>:
+                                    Passed data from <font style="background-color: red">service_storage_set_task_state_changed_cb()</font>
+                                </li>
+                            </ul>
+                        </div>
+
+
+
+                    </div>
+                </div>
+
+                <div class="methods">
+                    <h3>4.2 Methods</h3>
+                    <dl>
+                        <dt class="method" id="::ServiceAdaptorClient::service_storage_cancel_task">
+                        <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_cancel_task"></a>
+                        <code><b><span class="methodName">service_storage_cancel_task</span></b></code>
+                        </dt>
+                        <dd>
+                            <div class="brief">
+                                Cancels storage task, asynchronously.
+                            </div>
+                            <div class="synopsis"><pre class="signature prettyprint">int service_storage_cancel_task(service_storage_task_h task);
+                                </pre></div>
+                            <p><span class="version">
+                                    Since: </span>
+                                2.4
+                            </p>
+                            <p><span class="privilegelevel">
+                                    Privilege level: </span>
+                                public
+                            </p>
+                            <div class="parameters">
+                                <p><span class="param">Parameters:</span></p>
+                                <ul>
+                                    <li class="param">
+                                        <span class="name">task</span>:
+                                        The handle of storage task
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="returntype">
+                                <p><span class="return">Return value:</span></p>
+                                <ul>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                        Successful
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
+                                        Invalid parameter
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_IPC_UNSTABLE</span>
+                                        IPC failed with Service Adaptor Daemon
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED</span>
+                                        Failed in Plugin internal
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN  </span>
+                                        Unknown error
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Remarks</span></p>
+                                task  must be released memory using <font style="background-color: red">service_storage_destroy_task()</font> when the task no longer run <br>
+                                If the function returns SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED, error code and error message can be obtained using
+                                <font style="background-color: red">service_adaptor_get_last_result()and service_adaptor_get_last_error_message() method. </font> <br>
+                                Error codes and messages are described in Service Plugin.
+                            </div>
+                            <div class="example">
+                                <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">void cancel_task(service_storage_task_h task)
+{
+    service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
+
+    ret = service_storage_cancel_task(task);
+
+    if (SERVICE_ADAPTOR_ERROR_NONE == ret)
+    {
+        service_storage_destroy_task(task);
+    }
+    else
+    {
+        log_error("Cannot cancel task", ret);
+    }
+}
+                                </pre>
+                            </div>
+                        </dd>
+                    </dl>
+                    <dl>
+                        <dt class="method" id="::ServiceAdaptorClient::service_storage_create_download_task">
+                        <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_create_download_task"></a>
+                        <code><b><span class="methodName">service_storage_create_download_task</span></b></code>
+                        </dt>
+                        <dd>
+                            <div class="brief">
+                                Creates storage task for download file from storage.
+                            </div>
+                            <div class="synopsis"><pre class="signature prettyprint">int service_storage_create_download_task(service_plugin_h plugin, const char *storage_path, const char *download_path, service_storage_task_h *task)
+                                </pre></div>
+                            <p><span class="version">
+                                    Since: </span>
+                                2.4
+                            </p>
+                            <p><span class="privilegelevel">
+                                    Privilege level: </span></p>
+                            <ul>
+                                <li> http://tizen.org/privilege/mediastorage
+                                </li>
+                                <li> http://tizen.org/privilege/externalstorage
+                                </li>
+                            </ul>
+                            <div class="parameters">
+                                <p><span class="param">Parameters:</span></p>
+                                <ul>
+                                    <li class="param">
+                                        <span class="name">plugin </span>:
+                                        The handle for use Plugin APIs
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">storage_path </span>:
+                                        The source file path in storage (Physical path)
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">download_path </span>:
+                                        The source file path in storage (Physical path)
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">task</span>:
+                                        The handle of storage task
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="returntype">
+                                <p><span class="return">Return value:</span></p>
+                                <ul>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                        Successful
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_PERMISSION_DENIED </span>
+                                        Permission denied
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
+                                        Invalid parameter
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_STATE </span>
+                                        The handle's state is invalid
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NO_DATA </span>
+                                        There is no files
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_TIMED_OUT</span>
+                                        Timed out
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_IPC_UNSTABLE</span>
+                                        IPC failed with Service Adaptor Daemon
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NOT_SUPPORTED</span>
+                                        Not supported API in this plugin
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED</span>
+                                        Failed in Plugin internal
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN  </span>
+                                        Unknown error
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Remarks</span></p>
+                                task  must be released memory using service_storage_destroy_task() when the task no longer run <br>
+                                If the function returns SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED, error code and error message can be obtained using
+                                <font style="background-color: red">service_adaptor_get_last_result()and service_adaptor_get_last_error_message() method. </font> <br>
+                            </div>
+                            <div class="example">
+                                <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">bool create_task(service_plugin_h plugin)
+{
+    service_storage_task_h task = NULL;
+    const char *storage_path = "/my_file.txt";
+    const char *download_path = "/";
+    service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
+
+    ret = service_storage_create_download_task(plugin, storage_path, download_path, task);
+
+    if (SERVICE_ADAPTOR_ERROR_NONE == ret)
+    {
+        ret = service_storage_start_task(task);
+
+        if (SERVICE_ADAPTOR_ERROR_NONE == ret)
+        {
+            return true;
+        }
+        else
+        {
+            log_error("Cannot start task", ret);
+            service_storage_destroy_task(task);
+        }
+    }
+    else
+    {
+        log_error("Cannot create task", ret);
+    }
+    return false;
+}
+                                </pre>
+                            </div>
+                        </dd>
+                    </dl>
+                    <dl>
+                        <dt class="method" id="::ServiceAdaptorClient::service_storage_create_download_thumbnail_task">
+                        <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_create_download_thumbnail_task"></a>
+                        <code><b><span class="methodName">service_storage_create_download_task</span></b></code>
+                        </dt>
+                        <dd>
+                            <div class="brief">
+                                Creates storage task for download thumbnail from storage.
+                            </div>
+                            <div class="synopsis"><pre class="signature prettyprint">int service_storage_create_download_thumbnail_task(service_plugin_h plugin, const char *storage_path, const char *download_path, int thumbnail_size, service_storage_task_h *task)
+                                </pre></div>
+                            <p><span class="version">
+                                    Since: </span>
+                                2.4
+                            </p>
+                            <p><span class="privilegelevel">
+                                    Privilege level: </span></p>
+                            <ul>
+                                <li> http://tizen.org/privilege/mediastorage
+                                </li>
+                                <li> http://tizen.org/privilege/externalstorage
+                                </li>
+                            </ul>
+                            <div class="parameters">
+                                <p><span class="param">Parameters:</span></p>
+                                <ul>
+                                    <li class="param">
+                                        <span class="name">plugin </span>:
+                                        The handle for use Plugin APIs
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">storage_path </span>:
+                                        The source file path in storage (Physical path)
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">download_path </span>:
+                                        The source file path in storage (Physical path)
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">thumbnail_size</span>:
+                                        The size level of thumbnail, the level is defined service plugin SPEC
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">task</span>:
+                                        The handle of storage task
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="returntype">
+                                <p><span class="return">Return value:</span></p>
+                                <ul>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                        Successful
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_PERMISSION_DENIED </span>
+                                        Permission denied
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
+                                        Invalid parameter
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_STATE </span>
+                                        The handle's state is invalid
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NO_DATA </span>
+                                        There is no files
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_TIMED_OUT</span>
+                                        Timed out
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_IPC_UNSTABLE</span>
+                                        IPC failed with Service Adaptor Daemon
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NOT_SUPPORTED</span>
+                                        Not supported API in this plugin
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED</span>
+                                        Failed in Plugin internal
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN  </span>
+                                        Unknown error
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Remarks</span></p>
+                                If thumbnail_size  is 0 , gets default size thumbnail, the default size must be defined plugin SPEC <br>
+                                If thumbnail_size  is -1 , gets minimum size thumbnail be supported plugin <br>
+                                If thumbnail_size  is -2 , gets maximum size thumbnail be supported plugin <br>
+                                task  must be released memory using <font style="background-color: red">service_storage_destroy_task()</font> when the task no longer run <br>
+                                If the function returns SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED, error code and error message can be obtained using
+                                <font style="background-color: red">service_adaptor_get_last_result()and service_adaptor_get_last_error_message() method. </font> <br>
+                            </div>
+                            <div class="example">
+                                <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">bool download_thumbnail(service_plugin_h plugin)
+{
+    service_storage_task_h task = NULL;
+    const char *storage_path = "/my_file.png";
+    const char *download_path = "/.thumbnails/";
+    int size = -1;
+    service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
+
+    ret = service_storage_create_download_task(plugin, storage_path, download_path, size, task);
+
+    if (SERVICE_ADAPTOR_ERROR_NONE == ret)
+    {
+        ret = service_storage_start_task(task);
+
+        if (SERVICE_ADAPTOR_ERROR_NONE == ret)
+        {
+            return true;
+        }
+        else
+        {
+            log_error("Cannot start task", ret);
+            service_storage_destroy_task(task);
+        }
+    }
+    else
+    {
+        log_error("Cannot create task", ret);
+    }
+    return false;
+}
+                                </pre>
+                            </div>
+                        </dd>
+                    </dl>
+                    <dl>
+                        <dt class="method" id="::ServiceAdaptorClient::service_storage_create_upload_task">
+                        <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_create_upload_task"></a>
+                        <code><b><span class="methodName">service_storage_create_upload_task</span></b></code>
+                        </dt>
+                        <dd>
+                            <div class="brief">
+                                Creates storage task for upload file to storage
+                            </div>
+                            <div class="synopsis"><pre class="signature prettyprint">int service_storage_create_upload_task(service_plugin_h plugin, const char *file_path, const char *upload_path, service_storage_task_h *task)
+                                </pre></div>
+                            <p><span class="version">
+                                    Since: </span>
+                                2.4
+                            </p>
+                            <p><span class="privilegelevel">
+                                    Privilege level: </span></p>
+                            <ul>
+                                <li> http://tizen.org/privilege/mediastorage
+                                </li>
+                                <li> http://tizen.org/privilege/externalstorage
+                                </li>
+                            </ul>
+                            <div class="parameters">
+                                <p><span class="param">Parameters:</span></p>
+                                <ul>
+                                    <li class="param">
+                                        <span class="name">plugin </span>:
+                                        The handle for use Plugin APIs
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">file_path </span>:
+                                        The upload file path in local (Logical path)
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">upload_path </span>:
+                                        The upload target path in storage (Physical path)
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">task</span>:
+                                        The handle of storage task
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="returntype">
+                                <p><span class="return">Return value:</span></p>
+                                <ul>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                        Successful
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_PERMISSION_DENIED </span>
+                                        Permission denied
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
+                                        Invalid parameter
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_STATE </span>
+                                        The handle's state is invalid
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NO_DATA </span>
+                                        There is no files
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_TIMED_OUT</span>
+                                        Timed out
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_IPC_UNSTABLE</span>
+                                        IPC failed with Service Adaptor Daemon
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NOT_SUPPORTED</span>
+                                        Not supported API in this plugin
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED</span>
+                                        Failed in Plugin internal
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN  </span>
+                                        Unknown error
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Remarks</span></p>
+                                task  must be released memory using <font style="background-color: red">service_storage_destroy_task()</font> when the task no longer run <br>
+                                If the function returns SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED, error code and error message can be obtained using
+                                <font style="background-color: red">service_adaptor_get_last_result()and service_adaptor_get_last_error_message() method. </font> <br>
+                            </div>
+                            <div class="example">
+                                <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">bool upload(service_plugin_h plugin)
+{
+    service_storage_task_h task = NULL;
+    const char *upload_path = "/my_file.png";
+    const char *upload_path = "/";
+    service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
+
+    ret = service_storage_create_upload_task (plugin, upload_path, upload_path, task);
+
+    if (SERVICE_ADAPTOR_ERROR_NONE == ret)
+    {
+        ret = service_storage_start_task(task);
+
+        if (SERVICE_ADAPTOR_ERROR_NONE == ret)
+        {
+            return true;
+        }
+        else
+        {
+            log_error("Cannot start task", ret);
+            service_storage_destroy_task(task);
+        }
+    }
+    else
+    {
+        log_error("Cannot create task", ret);
+    }
+    return false;
+}
+                                </pre>
+                            </div>
+                        </dd>
+                    </dl>
+                    <dl>
+                        <dt class="method" id="::ServiceAdaptorClient::service_storage_destroy_task">
+                        <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_destroy_task"></a>
+                        <code><b><span class="methodName">service_storage_destroy_task</span></b></code>
+                        </dt>
+                        <dd>
+                            <div class="brief">
+                                Destroys storage task.
+                            </div>
+                            <div class="synopsis"><pre class="signature prettyprint">int service_storage_destroy_task(service_storage_task_h task)
+                                </pre></div>
+                            <p><span class="version">
+                                    Since: </span>
+                                2.4
+                            </p>
+                            <p><span class="privilegelevel">
+                                    Privilege level: </span>
+                                Public
+                            </p>
+                            <div class="parameters">
+                                <p><span class="param">Parameters:</span></p>
+                                <ul>
+                                    <li class="param">
+                                        <span class="name">task</span>:
+                                        The handle of storage task
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="returntype">
+                                <p><span class="return">Return value:</span></p>
+                                <ul>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                        Successful
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
+                                        Invalid parameter
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_IPC_UNSTABLE</span>
+                                        IPC failed with Service Adaptor Daemon
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED</span>
+                                        Failed in Plugin internal
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN  </span>
+                                        Unknown error
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Remarks</span></p>
+                                If the function returns SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED, error code and error message can be obtained using
+                                <font style="background-color: red">service_adaptor_get_last_result()and service_adaptor_get_last_error_message() method. </font> <br>
+                            </div>
+                            <div class="example">
+                                <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">bool upload(service_plugin_h plugin)
+{
+    service_storage_task_h task = NULL;
+    const char *upload_path = "/my_file.png";
+    const char *upload_path = "/";
+    service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
+
+    ret = service_storage_create_upload_task (plugin, upload_path, upload_path, task);
+
+    if (SERVICE_ADAPTOR_ERROR_NONE == ret)
+    {
+        ret = service_storage_start_task(task);
+
+        if (SERVICE_ADAPTOR_ERROR_NONE == ret)
+        {
+            return true;
+        }
+        else
+        {
+            log_error("Cannot start task", ret);
+            service_storage_destroy_task(task);
+        }
+    }
+    else
+    {
+        log_error("Cannot create task", ret);
+    }
+    return false;
+}
+                                </pre>
+                            </div>
+                        </dd>
+                    </dl>
+                    <dl>
+                        <dt class="method" id="::ServiceAdaptorClient::service_storage_file_clone">
+                        <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_file_clone"></a>
+                        <code><b><span class="methodName">service_storage_file_clone</span></b></code>
+                        </dt>
+                        <dd>
+                            <div class="brief">
+                                Clones the file handle.
+                            </div>
+                            <div class="synopsis"><pre class="signature prettyprint">int service_storage_file_clone(service_storage_file_h src_file, service_storage_file_h *dst_file)
+                                </pre></div>
+                            <p><span class="version">
+                                    Since: </span>
+                                2.4
+                            </p>
+                            <p><span class="privilegelevel">
+                                    Privilege level: </span>
+                                Public
+                            </p>
+                            <div class="parameters">
+                                <p><span class="param">Parameters:</span></p>
+                                <ul>
+                                    <li class="param">
+                                        <span class="name">src_file</span>:
+                                        The source handle
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">dst_file</span>:
+                                        The destination handle
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="returntype">
+                                <p><span class="return">Return value:</span></p>
+                                <ul>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                        Successful
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
+                                        Invalid parameter
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Remarks</span></p>
+                                file  must be released memory using <font style="background-color: red">service_storage_file_destroy()</font> when you no longer needs this handle
+                            </div>
+                            <div class="example">
+                                <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">bool storage_file_cb(service_storage_file_h file, void *user_data) 
+{
+    bool isDir = false;
+    service_storage_file_is_dir(file, &isDir);
+    if (!isDir)
+    {
+        service_storage_file_h copy = NULL;
+        service_storage_file_clone(file, &copy);
+        do_something(copy);
+        service_storage_file_destroy(copy);
+    }
+    return true;
+}
+                                </pre>
+                            </div>
+                        </dd>
+                    </dl>
+                    <dl>
+                        <dt class="method" id="::ServiceAdaptorClient::service_storage_file_destroy">
+                        <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_file_destroy"></a>
+                        <code><b><span class="methodName">service_storage_file_destroy</span></b></code>
+                        </dt>
+                        <dd>
+                            <div class="brief">
+                                Clones the file handle.
+                            </div>
+                            <div class="synopsis"><pre class="signature prettyprint">int service_storage_file_destroy(service_storage_file_h file)
+                                </pre></div>
+                            <p><span class="version">
+                                    Since: </span>
+                                2.4
+                            </p>
+                            <p><span class="privilegelevel">
+                                    Privilege level: </span>
+                                Public
+                            </p>
+                            <div class="parameters">
+                                <p><span class="param">Parameters:</span></p>
+                                <ul>
+                                    <li class="param">
+                                        <span class="name">file</span>:
+                                        The handle of file or directory in storage
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="returntype">
+                                <p><span class="return">Return value:</span></p>
+                                <ul>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                        Successful
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
+                                        Invalid parameter
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="example">
+                                <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">bool storage_file_cb(service_storage_file_h file, void *user_data)
+{
+    bool isDir = false;
+    service_storage_file_is_dir(file, &isDir);
+    if (!isDir)
+    {
+        service_storage_file_h copy = NULL;
+        service_storage_file_clone(file, &copy);
+        do_something(copy);
+        service_storage_file_destroy(copy);
+    }
+    return true;
+}
+                                </pre>
+                            </div>
+                        </dd>
+                    </dl>
+                    <dl>
+                        <dt class="method" id="::ServiceAdaptorClient::service_storage_file_get_logical_path">
+                        <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_file_get_logical_path"></a>
+                        <code><b><span class="methodName">service_storage_file_get_logical_path</span></b></code>
+                        </dt>
+                        <dd>
+                            <div class="brief">
+                                Gets logical path from file handle.
+                            </div>
+                            <div class="synopsis"><pre class="signature prettyprint">int service_storage_file_get_logical_path(service_storage_file_h file, char **path)
+                                </pre></div>
+                            <p><span class="version">
+                                    Since: </span>
+                                2.4
+                            </p>
+                            <p><span class="privilegelevel">
+                                    Privilege level: </span>
+                                Public
+                            </p>
+                            <div class="parameters">
+                                <p><span class="param">Parameters:</span></p>
+                                <ul>
+                                    <li class="param">
+                                        <span class="name">file</span>:
+                                        The source handle
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">path</span>:
+                                        The logical path of file
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="returntype">
+                                <p><span class="return">Return value:</span></p>
+                                <ul>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                        Successful
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
+                                        Invalid parameter
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NO_DATA  </span>
+                                        There is no data
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Remarks</span></p>
+                                path must be released with free() function
+                            </div>
+                            <div class="example">
+                                <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">bool get_file_path(service_storage_file_h file, char **path)
+{
+    service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
+    char *_path = NULL;
+
+    ret = service_storage_file_get_logical_path(file, &_path);
+
+    if (SERVICE_ADAPTOR_ERROR_NONE == ret)
+    {
+        *path = _path;
+        return true;
+    }
+    else
+    {
+        log_error("Cannot get logical path", ret);
+    }
+
+    return false;
+}
+                                </pre>
+                            </div>
+                        </dd>
+                    </dl>
+                    <dl>
+                        <dt class="method" id="::ServiceAdaptorClient::service_storage_file_get_physical_path">
+                        <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_file_get_physical_path"></a>
+                        <code><b><span class="methodName">service_storage_file_get_physical_path</span></b></code>
+                        </dt>
+                        <dd>
+                            <div class="brief">
+                                Gets physical path from file handle.
+                            </div>
+                            <div class="synopsis"><pre class="signature prettyprint">int service_storage_file_get_physical_path(service_storage_file_h file, char **path)
+                                </pre></div>
+                            <p><span class="version">
+                                    Since: </span>
+                                2.4
+                            </p>
+                            <p><span class="privilegelevel">
+                                    Privilege level: </span>
+                                Public
+                            </p>
+                            <div class="parameters">
+                                <p><span class="param">Parameters:</span></p>
+                                <ul>
+                                    <li class="param">
+                                        <span class="name">file</span>:
+                                        The source handle
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">path</span>:
+                                        The physical path of file
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="returntype">
+                                <p><span class="return">Return value:</span></p>
+                                <ul>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                        Successful
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
+                                        Invalid parameter
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NO_DATA  </span>
+                                        There is no data
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Remarks</span></p>
+                                path must be released with free() function
+                            </div>
+                            <div class="example">
+                                <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">bool get_file_physical_path(service_storage_file_h file, char **path)
+{
+    service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
+    char *_path = NULL;
+
+    ret = service_storage_file_get_physical_path(file, &_path);
+
+    if (SERVICE_ADAPTOR_ERROR_NONE == ret)
+    {
+        *path = _path;
+        return true;
+    }
+    else
+    {
+        log_error("Cannot get logical path", ret);
+    }
+
+    return false;
+}
+                                </pre>
+                            </div>
+                        </dd>
+                    </dl>
+                    <dl>
+                        <dt class="method" id="::ServiceAdaptorClient::service_storage_file_get_size">
+                        <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_file_get_size"></a>
+                        <code><b><span class="methodName">service_storage_file_get_size</span></b></code>
+                        </dt>
+                        <dd>
+                            <div class="brief">
+                                Gets size of a file.
+                            </div>
+                            <div class="synopsis"><pre class="signature prettyprint">int service_storage_file_get_size(service_storage_file_h file, unsigned long long *size)
+                                </pre></div>
+                            <p><span class="version">
+                                    Since: </span>
+                                2.4
+                            </p>
+                            <p><span class="privilegelevel">
+                                    Privilege level: </span>
+                                Public
+                            </p>
+                            <div class="parameters">
+                                <p><span class="param">Parameters:</span></p>
+                                <ul>
+                                    <li class="param">
+                                        <span class="name">file</span>:
+                                        The source handle
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">size</span>:
+                                        The size of file (byte)
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="returntype">
+                                <p><span class="return">Return value:</span></p>
+                                <ul>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                        Successful
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
+                                        Invalid parameter
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="example">
+                                <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">bool get_file_size(service_storage_file_h file, unsigned long long **size)
+{
+    service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
+    unsigned long long _size = -1;
+
+    ret = service_storage_file_get_size(file, &_size);
+
+    if (SERVICE_ADAPTOR_ERROR_NONE == ret)
+    {
+        *size = _size;
+        return true;
+    }
+    else
+    {
+        log_error("Cannot get file size", ret);
+    }
+
+    return false;
+}
+                                </pre>
+                            </div>
+                        </dd>
+                    </dl>
+                    <dl>
+                        <dt class="method" id="::ServiceAdaptorClient::service_storage_file_is_dir">
+                        <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_file_is_dir"></a>
+                        <code><b><span class="methodName">service_storage_file_is_dir</span></b></code>
+                        </dt>
+                        <dd>
+                            <div class="brief">
+                                Gets information if file handle is directory or not.
+                            </div>
+                            <div class="synopsis"><pre class="signature prettyprint">int service_storage_file_is_dir(service_storage_file_h file, bool *is_dir)
+                                </pre></div>
+                            <p><span class="version">
+                                    Since: </span>
+                                2.4
+                            </p>
+                            <p><span class="privilegelevel">
+                                    Privilege level: </span>
+                                Public
+                            </p>
+                            <div class="parameters">
+                                <p><span class="param">Parameters:</span></p>
+                                <ul>
+                                    <li class="param">
+                                        <span class="name">file</span>:
+                                        The source handle
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">is_dir</span>:
+                                        true on directory, false on file
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="returntype">
+                                <p><span class="return">Return value:</span></p>
+                                <ul>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                        Successful
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
+                                        Invalid parameter
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="example">
+                                <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">bool storage_file_cb(service_storage_file_h file, void *user_data)
+{
+    bool isDir = false;
+
+    service_storage_file_is_dir(file, &isDir);
+
+
+    if (!isDir)
+    {
+        do_some_file_operations(file);
+    }
+
+    return true;
+}
+                                </pre>
+                            </div>
+                        </dd>
+                    </dl>
+                    <dl>
+                        <dt class="method" id="::ServiceAdaptorClient::service_storage_file_list_clone">
+                        <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_file_list_clone"></a>
+                        <code><b><span class="methodName">service_storage_file_list_clone</span></b></code>
+                        </dt>
+                        <dd>
+                            <div class="brief">
+                                Clones the file list handle.
+                            </div>
+                            <div class="synopsis"><pre class="signature prettyprint">int service_storage_file_list_clone(service_storage_file_list_h src_list, service_storage_file_list_h *dst_list)
+                                </pre></div>
+                            <p><span class="version">
+                                    Since: </span>
+                                2.4
+                            </p>
+                            <p><span class="privilegelevel">
+                                    Privilege level: </span>
+                                Public
+                            </p>
+                            <div class="parameters">
+                                <p><span class="param">Parameters:</span></p>
+                                <ul>
+                                    <li class="param">
+                                        <span class="name">src_list </span>:
+                                        The source handle
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">dst_list </span>:
+                                        The destination handle
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="returntype">
+                                <p><span class="return">Return value:</span></p>
+                                <ul>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                        Successful
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
+                                        Invalid parameter
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Remarks</span></p>
+                                file  must be released memory using <font style="background-color: red">service_storage_file_list_destroy()</font> when you no longer needs this handle
+                            </div>
+                            <div class="example">
+                                <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">void file_list_cb(int result, service_storage_file_list_h list, void *user_data)
+{
+    if(SERVICE_ADAPTOR_ERROR_NONE != result)
+    {
+        log_error("Cannot get file list", ret);
+        return;
+    }
+
+    service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
+    service_storage_file_list_h list_copy = NULL:
+
+    ret = service_storage_file_list_clone(list, &list_copy);
+    if (SERVICE_ADAPTOR_ERROR_NONE == ret)
+    {
+        process_files(list);
+        process_files_second_iteration(list_copy);
+
+        service_storage_file_list_destroy(list_copy);
+    }
+}
+                                </pre>
+                            </div>
+                        </dd>
+                    </dl>
+                    <dl>
+                        <dt class="method" id="::ServiceAdaptorClient::service_storage_file_list_destroy">
+                        <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_file_list_destroy"></a>
+                        <code><b><span class="methodName">service_storage_file_list_destroy</span></b></code>
+                        </dt>
+                        <dd>
+                            <div class="brief">
+                                Destroys the file list handle.
+                            </div>
+                            <div class="synopsis"><pre class="signature prettyprint">int service_storage_file_list_destroy(service_storage_file_list_h list)
+                                </pre></div>
+                            <p><span class="version">
+                                    Since: </span>
+                                2.4
+                            </p>
+                            <p><span class="privilegelevel">
+                                    Privilege level: </span>
+                                Public
+                            </p>
+                            <div class="parameters">
+                                <p><span class="param">Parameters:</span></p>
+                                <ul>
+                                    <li class="param">
+                                        <span class="name">list </span>:
+                                        The file list handle
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="returntype">
+                                <p><span class="return">Return value:</span></p>
+                                <ul>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                        Successful
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
+                                        Invalid parameter
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Remarks</span></p>
+                                It must be used for cloned file list handle
+                            </div>
+                            <div class="example">
+                                <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">void file_list_cb(int result, service_storage_file_list_h list, void *user_data)
+{
+    if(SERVICE_ADAPTOR_ERROR_NONE != result)
+    {
+        log_error("Cannot get file list", ret);
+        return;
+    }
+
+    service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
+    service_storage_file_list_h list_copy = NULL:
+
+    ret = service_storage_file_list_clone(list, &list_copy);
+    if (SERVICE_ADAPTOR_ERROR_NONE == ret)
+    {
+        process_files(list);
+        process_files_second_iteration(list_copy);
+
+        service_storage_file_list_destroy(list_copy);
+    }
+}
+                                </pre>
+                            </div>
+                        </dd>
+                    </dl>
+                    <dl>
+                        <dt class="method" id="::ServiceAdaptorClient::service_storage_file_list_foreach_file">
+                        <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_file_list_foreach_file"></a>
+                        <code><b><span class="methodName">service_storage_file_list_foreach_file</span></b></code>
+                        </dt>
+                        <dd>
+                            <div class="brief">
+                                Foreach All of the file from file list.
+                            </div>
+                            <div class="synopsis"><pre class="signature prettyprint">int service_storage_file_list_foreach_file(service_storage_file_list_h list, service_storage_file_cb callback, void *user_data)
+                                </pre></div>
+                            <p><span class="version">
+                                    Since: </span>
+                                2.4
+                            </p>
+                            <p><span class="privilegelevel">
+                                    Privilege level: </span>
+                                Public
+                            </p>
+                            <div class="parameters">
+                                <p><span class="param">Parameters:</span></p>
+                                <ul>
+                                    <li class="param">
+                                        <span class="name">list </span>:
+                                        The file list handle
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">callback </span>:
+                                        The callback for foreach file
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">user_data  </span>:
+                                        Passed data to callback
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="returntype">
+                                <p><span class="return">Return value:</span></p>
+                                <ul>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                        Successful
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
+                                        Invalid parameter
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NO_DATA  </span>
+                                        There is no file
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="example">
+                                <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">bool storage_file_cb(service_storage_file_h file, void *user_data)
+{
+    bool isDir = false;
+    service_storage_file_is_dir(file, &isDir);
+    if (!isDir)
+    {
+        service_storage_file_h copy = NULL;
+        service_storage_file_clone(file, Â©);
+        do_something(copy);
+        service_storage_file_destroy(copy);
+    }
+    return true;
+}
+
+void process_file_list(service_storage_file_list_h list)
+{
+    service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
+
+    ret = service_storage_file_list_foreach_file(list, storage_file_cb, NULL);
+
+    if (SERVICE_ADAPTOR_ERROR_NONE != ret)
+    {
+        log_error("Foreach operation failed", ret);
+    }
+}
+
+                                </pre>
+                            </div>
+                        </dd>
+                    </dl>
+                    <dl>
+                        <dt class="method" id="::ServiceAdaptorClient::service_storage_file_list_get_length">
+                        <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_file_list_get_length"></a>
+                        <code><b><span class="methodName">service_storage_file_list_get_length</span></b></code>
+                        </dt>
+                        <dd>
+                            <div class="brief">
+                                Gets length of the file list handle.
+                            </div>
+                            <div class="synopsis"><pre class="signature prettyprint">int service_storage_file_list_get_length(service_storage_file_list_h list, int *length)
+                                </pre></div>
+                            <p><span class="version">
+                                    Since: </span>
+                                2.4
+                            </p>
+                            <p><span class="privilegelevel">
+                                    Privilege level: </span>
+                                Public
+                            </p>
+                            <div class="parameters">
+                                <p><span class="param">Parameters:</span></p>
+                                <ul>
+                                    <li class="param">
+                                        <span class="name">list </span>:
+                                        The file list handle
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">length </span>:
+                                        The length of the file list handle
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="returntype">
+                                <p><span class="return">Return value:</span></p>
+                                <ul>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                        Successful
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
+                                        Invalid parameter
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="example">
+                                <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">bool storage_file_cb(service_storage_file_h file, void *user_data)
+{
+    int length;
+    service_storage_file_list_get_length(file, &length);
+    if (length <= 0)
+    {
+        log_warrning("Empty file", file);
+    }
+    else
+    {
+        process_file(file);
+    }
+
+    return true;
+}
+
+                                </pre>
+                            </div>
+                        </dd>
+                    </dl>
+                    <dl>
+                        <dt class="method" id="::ServiceAdaptorClient::service_storage_get_file_list">
+                        <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_get_file_list"></a>
+                        <code><b><span class="methodName">service_storage_get_file_list</span></b></code>
+                        </dt>
+                        <dd>
+                            <div class="brief">
+                                Gets file list from storage, asynchronously.
+                            </div>
+                            <div class="synopsis"><pre class="signature prettyprint">int service_storage_get_file_list(service_plugin_h plugin, const char *dir_path, service_storage_file_list_cb callback, void *user_data)
+                                </pre></div>
+                            <p><span class="version">
+                                    Since: </span>
+                                2.4
+                            </p>
+                            <p><span class="privilegelevel">
+                                    Privilege level: </span>
+                                Public
+                            </p>
+                            <div class="parameters">
+                                <p><span class="param">Parameters:</span></p>
+                                <ul>
+                                    <li class="param">
+                                        <span class="name">plugin  </span>:
+                                        The handle for use Plugin APIs
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">dir_path </span>:
+                                        The dir path (Physical path)
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">callback </span>:
+                                        The callback for getting file list
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">user_data </span>:
+                                        The user data to be passed to the callback function
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="returntype">
+                                <p><span class="return">Return value:</span></p>
+                                <ul>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                        Successful
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_PERMISSION_DENIED </span>
+                                        Permission denied
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_STATE </span>
+                                        The handle's state is invalid
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
+                                        Invalid parameter
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_IPC_UNSTABLE  </span>
+                                        IPC failed with Service Adaptor Daemon
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NOT_SUPPORTED </span>
+                                        Not supported API in this plugin
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN </span>
+                                        Unknown error
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Remarks</span></p>
+                                For the dir_path , "/" means root path.
+                            </div>
+                            <div class="example">
+                                <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">void file_list_cb(int result, service_storage_file_list_h list, void *user_data)
+{
+    if(SERVICE_ADAPTOR_ERROR_NONE != result)
+    {
+        log_error("Cannot get file list", ret);
+        return;
+    }
+
+    process_files_list(list);
+}
+
+void process_directory(service_plugin_h plugin, const char *dir_path)
+{
+    service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
+
+    ret = service_storage_get_file_list(plugin, dir_path, file_list_cb, NULL);
+
+    if (SERVICE_ADAPTOR_ERROR_NONE != ret)
+    {
+        log_error("Cannot process direcory", ret);
+    }
+}
+
+                                </pre>
+                            </div>
+                        </dd>
+                    </dl>
+                    <dl>
+                        <dt class="method" id="::ServiceAdaptorClient::service_storage_remove">
+                        <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_remove"></a>
+                        <code><b><span class="methodName">service_storage_remove</span></b></code>
+                        </dt>
+                        <dd>
+                            <div class="brief">
+                                Removes file or directory in storage.
+                            </div>
+                            <div class="synopsis"><pre class="signature prettyprint">int service_storage_remove(service_plugin_h plugin, const char *remove_path, service_storage_result_cb callback, void *user_data)
+                                </pre></div>
+                            <p><span class="version">
+                                    Since: </span>
+                                2.4
+                            </p>
+                            <p><span class="privilegelevel">
+                                    Privilege level: </span>
+                                Public
+                            </p>
+                            <div class="parameters">
+                                <p><span class="param">Parameters:</span></p>
+                                <ul>
+                                    <li class="param">
+                                        <span class="name">plugin  </span>:
+                                        The handle for use Plugin APIs
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">remove_path </span>:
+                                        The target file or directory for remove (Physical path)
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">callback </span>:
+                                        The callback for getting file list
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">user_data </span>:
+                                        The user data to be passed to the callback function
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="returntype">
+                                <p><span class="return">Return value:</span></p>
+                                <ul>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                        Successful
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_PERMISSION_DENIED </span>
+                                        Permission denied
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_STATE </span>
+                                        The handle's state is invalid
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
+                                        Invalid parameter
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_IPC_UNSTABLE</span>
+                                        IPC failed with Service Adaptor Daemon
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NOT_SUPPORTED </span>
+                                        Not supported API in this plugin
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN </span>
+                                        Unknown error
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Remarks</span></p>
+                                If the function returns SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED, error code and error message can be obtained using
+                                <font style="background-color: red">service_adaptor_get_last_result()and service_adaptor_get_last_error_message() method. </font> <br>
+                                Error codes and messages are described in Service Plugin.
+                            </div>
+                            <div class="example">
+                                <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">void file_list_cb(int result, service_storage_file_list_h list, void *user_data)
+{
+    if(SERVICE_ADAPTOR_ERROR_NONE != result)
+    {
+        log_error("Cannot get file list", ret);
+        return;
+    }
+
+    process_files_list(list);
+}
+
+void process_directory(service_plugin_h plugin, const char *dir_path)
+{
+    service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
+
+    ret = service_storage_get_file_list(plugin, dir_path, file_list_cb, NULL);
+
+    if (SERVICE_ADAPTOR_ERROR_NONE != ret)
+    {
+        log_error("Cannot process direcory", ret);
+    }
+}
+
+                                </pre>
+                            </div>
+                        </dd>
+                    </dl>
+                    <dl>
+                        <dt class="method" id="::ServiceAdaptorClient::service_storage_set_task_progress_cb">
+                        <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_set_task_progress_cb"></a>
+                        <code><b><span class="methodName">service_storage_set_task_progress_cb</span></b></code>
+                        </dt>
+                        <dd>
+                            <div class="brief">
+                                Sets a callback function to be invoked when progress of the task running
+                            </div>
+                            <div class="synopsis"><pre class="signature prettyprint">int service_storage_set_task_progress_cb(service_storage_task_h task, service_storage_task_progress_cb callback, void *user_data)
+                                </pre></div>
+                            <p><span class="version">
+                                    Since: </span>
+                                2.4
+                            </p>
+                            <p><span class="privilegelevel">
+                                    Privilege level: </span>
+                                Public
+                            </p>
+                            <div class="parameters">
+                                <p><span class="param">Parameters:</span></p>
+                                <ul>
+                                    <li class="param">
+                                        <span class="name">task  </span>:
+                                        The handle of storage task
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">callback </span>:
+                                        The callback function to register
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">user_data </span>:
+                                        The user data to be passed to the callback function
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="returntype">
+                                <p><span class="return">Return value:</span></p>
+                                <ul>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                        Successful
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
+                                        Invalid parameter
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_IPC_UNSTABLE</span>
+                                        IPC failed with Service Adaptor Daemon
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED  </span>
+                                        Failed in Plugin internal
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN </span>
+                                        Unknown error
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Remarks</span></p>
+                                If the function returns SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED, error code and error message can be obtained using
+                                <font style="background-color: red">service_adaptor_get_last_result()and service_adaptor_get_last_error_message() method. </font> <br>
+                                Error codes and messages are described in Service Plugin.
+                            </div>
+                            <div class="example">
+                                <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">void task_progress_cb(unsigned long long progress, unsigned long long total, void *user_data)
+{
+    if (progress < total)
+    {
+        update_progress_bar(progress);
+    }
+    else
+    {
+        close_progress_bar();
+    }
+}
+
+void create_task(service_plugin_h plugin)
+{
+    service_storage_task_h task = NULL;
+
+    create_download_task(task);
+    set_task_properties(task);
+
+    service_storage_set_task_progress_cb(task, task_progress_cb, NULL);
+
+    start_task(task);
+}
+                                </pre>
+                            </div>
+                        </dd>
+                    </dl>
+                    <dl>
+                        <dt class="method" id="::ServiceAdaptorClient::service_storage_set_task_state_changed_cb">
+                        <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_set_task_state_changed_cb"></a>
+                        <code><b><span class="methodName">service_storage_set_task_state_changed_cb</span></b></code>
+                        </dt>
+                        <dd>
+                            <div class="brief">
+                                Sets a callback function to be invoked when change of the task running state
+                            </div>
+                            <div class="synopsis"><pre class="signature prettyprint">int service_storage_set_task_state_changed_cb(service_storage_task_h task, service_storage_task_state_cb callback, void *user_data)
+                                </pre></div>
+                            <p><span class="version">
+                                    Since: </span>
+                                2.4
+                            </p>
+                            <p><span class="privilegelevel">
+                                    Privilege level: </span>
+                                Public
+                            </p>
+                            <div class="parameters">
+                                <p><span class="param">Parameters:</span></p>
+                                <ul>
+                                    <li class="param">
+                                        <span class="name">task  </span>:
+                                        The handle of storage task
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">callback </span>:
+                                        The callback function to register
+                                    </li>
+                                    <li class="param">
+                                        <span class="name">user_data </span>:
+                                        The user data to be passed to the callback function
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="returntype">
+                                <p><span class="return">Return value:</span></p>
+                                <ul>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                        Successful
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
+                                        Invalid parameter
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_IPC_UNSTABLE</span>
+                                        IPC failed with Service Adaptor Daemon
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED  </span>
+                                        Failed in Plugin internal
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN </span>
+                                        Unknown error
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Remarks</span></p>
+                                If the function returns SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED, error code and error message can be obtained using
+                                <font style="background-color: red">service_adaptor_get_last_result()and service_adaptor_get_last_error_message() method. </font> <br>
+                                Error codes and messages are described in Service Plugin.
+                            </div>
+                            <div class="example">
+                                <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">void task_state_cb(service_storage_task_state_e state, void *user_data)
+{
+    if (SERVICE_STORAGE_TASK_COMPLETED == state)
+    {
+        ending_task_process();
+    }
+}
+
+void create_task(service_plugin_h plugin)
+{
+    service_storage_task_h task = NULL;
+
+    create_download_task(task);
+    set_task_properties(task);
+
+    service_storage_set_task_progress_cb(task, task_progress_cb, NULL);
+    service_storage_set_task_state_changed_cb(task, task_state_cb, NULL);
+
+    start_task(task);
+}
+                                </pre>
+                            </div>
+                        </dd>
+                    </dl>
+                    <dl>
+                        <dt class="method" id="::ServiceAdaptorClient::service_storage_start_task">
+                        <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_start_task"></a>
+                        <code><b><span class="methodName">service_storage_start_task</span></b></code>
+                        </dt>
+                        <dd>
+                            <div class="brief">
+                                Starts storage task, asynchronously.
+                            </div>
+                            <div class="synopsis"><pre class="signature prettyprint">int service_storage_start_task(service_storage_task_h task)
+                                </pre></div>
+                            <p><span class="version">
+                                    Since: </span>
+                                2.4
+                            </p>
+                            <p><span class="privilegelevel">
+                                    Privilege level: </span>
+                                Public
+                            </p>
+                            <div class="parameters">
+                                <p><span class="param">Parameters:</span></p>
+                                <ul>
+                                    <li class="param">
+                                        <span class="name">task  </span>:
+                                        The handle of storage task
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="returntype">
+                                <p><span class="return">Return value:</span></p>
+                                <ul>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                        Successful
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
+                                        Invalid parameter
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_IPC_UNSTABLE</span>
+                                        IPC failed with Service Adaptor Daemon
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED  </span>
+                                        Failed in Plugin internal
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN </span>
+                                        Unknown error
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Remarks</span></p>
+                                If the function returns SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED, error code and error message can be obtained using
+                                <font style="background-color: red">service_adaptor_get_last_result()and service_adaptor_get_last_error_message() method. </font> <br>
+                                Error codes and messages are described in Service Plugin.
+                            </div>
+                            <div class="example">
+                                <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">void create_task(service_plugin_h plugin)
+{
+    service_storage_task_h task = NULL;
+
+    create_download_task(task);
+    set_task_properties(task);
+    set_task_callbacks(task);
+
+    service_storage_start_task(task);
+}
+                                </pre>
+                            </div>
+                        </dd>
+                    </dl>
+                    <dl>
+                        <dt class="method" id="::ServiceAdaptorClient::service_storage_unset_task_progress_cb">
+                        <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_unset_task_progress_cb"></a>
+                        <code><b><span class="methodName">service_storage_unset_task_progress_cb</span></b></code>
+                        </dt>
+                        <dd>
+                            <div class="brief">
+                                Unsets the progress callback function.
+                            </div>
+                            <div class="synopsis"><pre class="signature prettyprint">int service_storage_unset_task_progress_cb(service_storage_task_h task)
+                                </pre></div>
+                            <p><span class="version">
+                                    Since: </span>
+                                2.4
+                            </p>
+                            <p><span class="privilegelevel">
+                                    Privilege level: </span>
+                                Public
+                            </p>
+                            <div class="parameters">
+                                <p><span class="param">Parameters:</span></p>
+                                <ul>
+                                    <li class="param">
+                                        <span class="name">task  </span>:
+                                        The handle of storage task
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="returntype">
+                                <p><span class="return">Return value:</span></p>
+                                <ul>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                        Successful
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
+                                        Invalid parameter
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Remarks</span></p>
+                                This function must be called before starting task (see <font style="background-color: red">service_storage_start_task()</font>)
+                            </div>
+                            <div class="example">
+                                <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">void set_state_cb_in_task(service_storage_task_h task)
+{
+    service_storage_unset_task_progress_cb(task);
+    service_storage_set_task_progress_cb(task, task_progress_cb2, NULL);
+}
+
+void create_task(service_plugin_h plugin)
+{
+    service_storage_task_h task = NULL;
+
+    create_download_task(task);
+    set_task_properties(task);
+    set_progress_cb_in_task(task);
+
+    start_task(task);
+}
+                                </pre>
+                            </div>
+                        </dd>
+                    </dl>
+                    <dl>
+                        <dt class="method" id="::ServiceAdaptorClient::service_storage_unset_task_state_changed_cb">
+                        <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_unset_task_state_changed_cb"></a>
+                        <code><b><span class="methodName">service_storage_unset_task_state_changed_cb</span></b></code>
+                        </dt>
+                        <dd>
+                            <div class="brief">
+                                Unsets the state changed callback function
+                            </div>
+                            <div class="synopsis"><pre class="signature prettyprint">int service_storage_unset_task_state_changed_cb(service_storage_task_h task)
+                                </pre></div>
+                            <p><span class="version">
+                                    Since: </span>
+                                2.4
+                            </p>
+                            <p><span class="privilegelevel">
+                                    Privilege level: </span>
+                                Public
+                            </p>
+                            <div class="parameters">
+                                <p><span class="param">Parameters:</span></p>
+                                <ul>
+                                    <li class="param">
+                                        <span class="name">task  </span>:
+                                        The handle of storage task
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="returntype">
+                                <p><span class="return">Return value:</span></p>
+                                <ul>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
+                                        Successful
+                                    </li>
+                                    <li class="returntypes">
+                                        <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
+                                        Invalid parameter
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="exception">
+                                <p><span class="name">Remarks</span></p>
+                                This function must be called before starting task (see <font style="background-color: red">service_storage_start_task()</font>)
+                            </div>
+                            <div class="example">
+                                <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">void set_state_cb_in_task(service_storage_task_h task)
+{
+    service_storage_unset_task_progress_cb(task);
+    service_storage_set_task_state_changed_cb(task, task_state_cb, NULL);
+}
+
+void create_task(service_plugin_h plugin)
+{
+    service_storage_task_h task = NULL;
+
+    create_download_task(task);
+    set_task_properties(task);
+    set_state_cb_in_task(task);
+
+    start_task(task);
+}
+                                </pre>
+                            </div>
+                        </dd>
+                    </dl>
+
+
+                </div>
+
+
+            </div>
+        </div>
+        <div id="page-footer">
+            <div class="copyright" align="center">
+                Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>. <br>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.
+            </div>
+            <script type="text/javascript">
+
+                var _gaq = _gaq || [];
+                _gaq.push(['_setAccount', 'UA-25976949-1']);
+                _gaq.push(['_setDomainName', 'tizen.org']);
+                _gaq.push(['_trackPageview']);
+
+                (function () {
+                    var ga = document.createElement('script');
+                    ga.type = 'text/javascript';
+                    ga.async = true;
+                    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+                    var s = document.getElementsByTagName('script')[0];
+                    s.parentNode.insertBefore(ga, s);
+                })();
+
+            </script>
+        </div>
+    </body>
+</html>