<!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>
      <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>

  <method name="GetUsersLanguages">
    <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
    <arg name="languages" direction="out" type="as">
      <doc:doc>
        <doc:summary>
          List users' preferred languages, as an array of locale specification like "de_DE.UTF-8".
        </doc:summary>
      </doc:doc>
    </arg>
    <doc:doc>
      <doc:description>
        <doc:para>
          Lists all the languages set by all the users, sorted in order from most used to least used,
          in XPG locale format.
        </doc:para>
        <doc:para>
          Note that the languages are not parsed, and functional duplicates can occur (for instance,
          en_GB and en_GB.UTF-8 may both end up in the list, even though they are the same).
        </doc:para>
        <doc:para>
          The expectation is that package installers will use
          this to know which languages users are interested in, so as
          to install extra data, like translations, dictionaries, etc.
          system-wide.
        </doc:para>
      </doc:description>
    </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>

   <property name="HasNoUsers" type="b" access="read">
     <doc:doc>
       <doc:description>
         <doc:para>
           Whether or not the system has no users
         </doc:para>
       </doc:description>
     </doc:doc>
   </property>

   <property name="HasMultipleUsers" type="b" access="read">
     <doc:doc>
       <doc:description>
         <doc:para>
           Whether or not the system has multiple users
         </doc:para>
       </doc:description>
     </doc:doc>
   </property>

   <property name="AutomaticLoginUsers" type="ao" access="read">
     <doc:doc>
       <doc:description>
         <doc:para>
           Users to automatically log in as
         </doc:para>
       </doc:description>
     </doc:doc>
   </property>

  </interface>
</node>
