<!DOCTYPE node PUBLIC
"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd" >
<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
  <interface name="org.freedesktop.Accounts">

    <!-- ************************************************************ -->

    <method name="ListCachedUsers">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="users" direction="out" type="ao">
        <doc:doc><doc:summary>Object paths of cached users</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Lists users which have logged into the system locally before.
            This is not meant to return an exhaustive list of all users.
            It is possible for <doc:ref type="method" to="Accounts.FindUserByName">FindUserByName()</doc:ref>
            to return a user that's not on the list.
          </doc:para>
        </doc:description>
      </doc:doc>
    </method>

    <method name="FindUserById">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="id" direction="in" type="x">
        <doc:doc><doc:summary>The uid to look up</doc:summary></doc:doc>
      </arg>
      <arg name="user" direction="out" type="o">
        <doc:doc><doc:summary>Object path of user</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Finds a user by uid.
          </doc:para>
        </doc:description>
        <doc:errors>
          <doc:error name="org.freedesktop.Accounts.Error.Failed">if no user with the given uid exists</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

    <method name="FindUserByName">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="name" direction="in" type="s">
        <doc:doc><doc:summary>The username to look up</doc:summary></doc:doc>
      </arg>
      <arg name="user" direction="out" type="o">
        <doc:doc><doc:summary>Object path of user</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Finds a user by its username.
          </doc:para>
        </doc:description>
        <doc:errors>
          <doc:error name="org.freedesktop.Accounts.Error.Failed">if no user with the given username exists</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

    <method name="CreateUser">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="name" direction="in" type="s">
        <doc:doc><doc:summary>The username for the new user</doc:summary></doc:doc>
      </arg>
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="fullname" direction="in" type="s">
        <doc:doc><doc:summary>The real name for the new user</doc:summary></doc:doc>
      </arg>
      <arg name="user" direction="out" type="o">
        <doc:doc><doc:summary>Object path of the new user</doc:summary></doc:doc>
      </arg>
      <arg name="accountType" direction="in" type="i">
        <doc:doc>
          <doc:summary>The account type, encoded as an integer</doc:summary>
        </doc:doc>
      </arg>
      <doc:doc>
        <doc:description>
          <doc:para>
            Creates a new user account.
          </doc:para>
          <doc:para>
          The accountType argument can take the following values:
          </doc:para>
            <doc:list>
              <doc:item>
                <doc:term>0</doc:term>
                <doc:definition>Standard user</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>1</doc:term>
                <doc:definition>Administrator</doc:definition>
              </doc:item>
            </doc:list>
        </doc:description>
        <doc:permission>
          The caller needs the org.freedesktop.accounts.user-administration PolicyKit authorization.
        </doc:permission>
        <doc:errors>
          <doc:error name="org.freedesktop.Accounts.Error.PermissionDenied">if the caller lacks the appropriate PolicyKit authorization</doc:error>
          <doc:error name="org.freedesktop.Accounts.Error.Failed">if the operation failed</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

    <method name="CacheUser">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="name" direction="in" type="s">
        <doc:doc><doc:summary>The username for the user</doc:summary></doc:doc>
      </arg>
      <arg name="user" direction="out" type="o">
        <doc:doc><doc:summary>Object path of user</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Caches a user account, so that it shows up in ListCachedUsers() output.
            The user name may be a remote user, but the system must be able to lookup
            the user name and resolve the user information.
          </doc:para>
        </doc:description>
        <doc:permission>
          The caller needs the org.freedesktop.accounts.user-administration PolicyKit authorization.
        </doc:permission>
        <doc:errors>
          <doc:error name="org.freedesktop.Accounts.Error.PermissionDenied">if the caller lacks the appropriate PolicyKit authorization</doc:error>
          <doc:error name="org.freedesktop.Accounts.Error.UserDoesNotExist">if the user name cannot be resolved</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

    <method name="UncacheUser">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="name" direction="in" type="s">
        <doc:doc><doc:summary>The username for the user</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Releases all metadata about a user account, including icon, language and session. If the user account is
            from a remote server and the user has never logged in before, then that account will no longer show up
            in ListCachedUsers() output.
          </doc:para>
        </doc:description>
        <doc:permission>
          The caller needs the org.freedesktop.accounts.user-administration PolicyKit authorization.
        </doc:permission>
        <doc:errors>
          <doc:error name="org.freedesktop.Accounts.Error.PermissionDenied">if the caller lacks the appropriate PolicyKit authorization</doc:error>
          <doc:error name="org.freedesktop.Accounts.Error.UserDoesNotExist">if the user name cannot be resolved</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

    <method name="DeleteUser">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="id" direction="in" type="x">
        <doc:doc><doc:summary>The uid to delete</doc:summary></doc:doc>
      </arg>
      <arg name="removeFiles" direction="in" type="b">
        <doc:doc><doc:summary>Whether to remove the users files</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Deletes a user account.
          </doc:para>
        </doc:description>
        <doc:permission>
          The caller needs the org.freedesktop.accounts.user-administration PolicyKit authorization.
        </doc:permission>
        <doc:errors>
          <doc:error name="org.freedesktop.Accounts.Error.PermissionDenied">if the caller lacks the appropriate PolicyKit authorization</doc:error>
          <doc:error name="org.freedesktop.Accounts.Error.Failed">if the operation failed</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

    <signal name="UserAdded">
      <arg name="user" type="o">
        <doc:doc><doc:summary>Object path of the user that was added.</doc:summary></doc:doc>
      </arg>
      <doc:doc>
        <doc:description>
          <doc:para>
            Emitted when a user is added.
          </doc:para>
        </doc:description>
      </doc:doc>
    </signal>

    <signal name="UserDeleted">
      <arg name="user" type="o">
        <doc:doc><doc:summary>Object path of the user that was deleted.</doc:summary></doc:doc>
      </arg>
      <doc:doc>
        <doc:description>
          <doc:para>
            Emitted when a user is deleted.
          </doc:para>
        </doc:description>
      </doc:doc>
    </signal>

   <property name="DaemonVersion" type="s" access="read">
     <doc:doc>
       <doc:description>
         <doc:para>
           The version of the running daemon.
         </doc:para>
       </doc:description>
     </doc:doc>
   </property>

  </interface>
</node>
