<!DOCTYPE node PUBLIC
"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd" [
  <!ENTITY ERROR_GENERAL "org.freedesktop.packagekit.Denied">
]>
<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
  <interface name="org.freedesktop.PackageKit">
    <doc:doc>
      <doc:description>
        <doc:para>
          The root interface is used for interacting with the daemon.
        </doc:para>
      </doc:description>
    </doc:doc>

    <!--*********************************************************************-->
    <property name="VersionMajor" type="u" access="read">
      <doc:doc>
        <doc:description>
          <doc:para>
            The major version number.
          </doc:para>
        </doc:description>
      </doc:doc>
    </property>
    <property name="VersionMinor" type="u" access="read">
      <doc:doc>
        <doc:description>
          <doc:para>
            The minor version number.
          </doc:para>
        </doc:description>
      </doc:doc>
    </property>
    <property name="VersionMicro" type="u" access="read">
      <doc:doc>
        <doc:description>
          <doc:para>
            The micro version number.
          </doc:para>
        </doc:description>
      </doc:doc>
    </property>

    <!--*********************************************************************-->
    <property name="BackendName" type="s" access="read">
      <doc:doc>
        <doc:description>
          <doc:para>
            The backend name, e.g. <doc:tt>"yum"</doc:tt>.
          </doc:para>
        </doc:description>
      </doc:doc>
    </property>

    <!--*********************************************************************-->
    <property name="BackendDescription" type="s" access="read">
      <doc:doc>
        <doc:description>
          <doc:para>
            The backend description, e.g. <doc:tt>"Yellow Dog Update Modifier"</doc:tt>.
          </doc:para>
        </doc:description>
      </doc:doc>
    </property>

    <!--*********************************************************************-->
    <property name="BackendAuthor" type="s" access="read">
      <doc:doc>
        <doc:description>
          <doc:para>
            The backend author, e.g. <doc:tt>"Joe Bloggs &lt;joe&amp;blogs.com&gt;"</doc:tt>.
          </doc:para>
        </doc:description>
      </doc:doc>
    </property>

    <!--*********************************************************************-->
    <property name="Roles" type="t" access="read">
      <doc:doc>
        <doc:description>
          <doc:para>
            The roles the backend supports, e.g. <doc:tt>search-name|refresh-cache</doc:tt>.
          </doc:para>
        </doc:description>
      </doc:doc>
    </property>

    <!--*********************************************************************-->
    <property name="Provides" type="t" access="read">
      <doc:doc>
        <doc:description>
          <doc:para>
            The provides the backend supports, e.g. <doc:tt>codec|font|hardware-driver</doc:tt>.
          </doc:para>
        </doc:description>
      </doc:doc>
    </property>

    <!--*********************************************************************-->
    <property name="Groups" type="t" access="read">
      <doc:doc>
        <doc:description>
          <doc:para>
            The groups the backend supports, e.g. <doc:tt>accessories|games</doc:tt>.
          </doc:para>
        </doc:description>
      </doc:doc>
    </property>

    <!--*********************************************************************-->
    <property name="Filters" type="t" access="read">
      <doc:doc>
        <doc:description>
          <doc:para>
            The filters the backend supports, e.g. <doc:tt>installed|newest</doc:tt>.
          </doc:para>
        </doc:description>
      </doc:doc>
    </property>

    <!--*********************************************************************-->
    <property name="MimeTypes" type="as" access="read">
      <doc:doc>
        <doc:description>
          <doc:para>
            The mime-types the backend supports, e.g.
            <doc:tt>['application/x-rpm;', 'application/x-deb']</doc:tt>.
          </doc:para>
        </doc:description>
      </doc:doc>
    </property>

    <!--*********************************************************************-->
    <property name="Locked" type="b" access="read">
      <doc:doc>
        <doc:description>
          <doc:para>
            Set when the backend is locked and native tools would fail.
          </doc:para>
        </doc:description>
      </doc:doc>
    </property>

    <!--*********************************************************************-->
    <property name="NetworkState" type="u" access="read">
      <doc:doc>
        <doc:description>
          <doc:para>
            Gets the network state from the daemon. This is provided as some clients may not want
            to use NetworkManager if the system daemon is configured to use something else.
          </doc:para>
          <doc:para>
            If the system is managed using NetworkManager then the following
            states are supported:
            <doc:tt>unknown</doc:tt>, <doc:tt>offline</doc:tt>, <doc:tt>online</doc:tt>,
            <doc:tt>wifi</doc:tt>, <doc:tt>mobile</doc:tt> or <doc:tt>wired</doc:tt>.
            If the system is configured for legacy UNIX network fallback, or NetworkManager
            is not running then the folowing states are supported:
            <doc:tt>unknown</doc:tt>, <doc:tt>offline</doc:tt> or <doc:tt>online</doc:tt>.
          </doc:para>
        </doc:description>
      </doc:doc>
    </property>

    <!--*********************************************************************-->
    <property name="DistroId" type="s" access="read">
      <doc:doc>
        <doc:description>
          <doc:para>
            The distribution identification, in the
            distro;version;arch form e.g.
            <doc:tt>"debian;squeeze/sid;x86_64"</doc:tt>.
          </doc:para>
        </doc:description>
      </doc:doc>
    </property>

    <!--*********************************************************************-->
    <method name="CanAuthorize">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <doc:doc>
        <doc:description>
          <doc:para>
            Allows a client to find out if it would be allowed to authorize an action.
          </doc:para>
        </doc:description>
      </doc:doc>
      <arg type="s" name="action_id" direction="in">
        <doc:doc>
          <doc:summary>
            <doc:para>
              The action ID, e.g. <doc:tt>org.freedesktop.packagekit.system-network-proxy-configure</doc:tt>
            </doc:para>
          </doc:summary>
        </doc:doc>
      </arg>
      <arg type="u" name="result" direction="out">
        <doc:doc>
          <doc:summary>
            <doc:para>
              The result, either <doc:tt>yes</doc:tt>, <doc:tt>no</doc:tt> or <doc:tt>interactive</doc:tt>.
            </doc:para>
          </doc:summary>
        </doc:doc>
      </arg>
    </method>

    <!--*********************************************************************-->
    <method name="CreateTransaction">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <doc:doc>
        <doc:description>
          <doc:para>
            Creates a new transaction that can have operations done on
            it.
            Note: The dameon will automatically destroy this transaction
            if it is not used after a few minutes.
          </doc:para>
        </doc:description>
      </doc:doc>
      <arg type="o" name="object_path" direction="out">
        <doc:doc>
          <doc:summary>
            <doc:para>
              The object_path, e.g. <doc:tt>/45_dafeca</doc:tt>
            </doc:para>
          </doc:summary>
        </doc:doc>
      </arg>
    </method>

    <!--*********************************************************************-->
    <method name="GetTimeSinceAction">
      <doc:doc>
        <doc:description>
          <doc:para>
            This method allows us to query how long since an action has successfully completed.
          </doc:para>
        </doc:description>
      </doc:doc>
      <arg type="u" name="role" direction="in">
        <doc:doc>
          <doc:summary>
            <doc:para>
              The role enum, e.g. <doc:tt>update-system</doc:tt>
            </doc:para>
          </doc:summary>
        </doc:doc>
      </arg>
      <arg type="u" name="seconds" direction="out">
        <doc:doc>
          <doc:summary>
            <doc:para>
              The amount of time in seconds
            </doc:para>
          </doc:summary>
        </doc:doc>
      </arg>
    </method>

    <!--*********************************************************************-->
    <method name="GetTransactionList">
      <doc:doc>
        <doc:description>
          <doc:para>
            Gets the transaction list of any transactions that are in progress
          </doc:para>
        </doc:description>
      </doc:doc>
      <arg type="ao" name="transactions" direction="out">
        <doc:doc>
          <doc:summary>
            <doc:para>
              A list of transaction ID's
            </doc:para>
          </doc:summary>
        </doc:doc>
      </arg>
    </method>

    <!--*********************************************************************-->
    <method name="StateHasChanged">
      <doc:doc>
        <doc:description>
          <doc:para>
            This method suggests to PackageKit that the package backend state may have changed.
            This allows plugins to the native package manager to suggest that PackageKit drops
            it's caches.
          </doc:para>
        </doc:description>
      </doc:doc>
      <arg type="s" name="reason" direction="in">
        <doc:doc>
          <doc:summary>
            <doc:para>
              The reason of the state change. Valid reasons are <doc:tt>resume</doc:tt> or
              <doc:tt>posttrans</doc:tt>.
              Resume is given a lower priority than posttrans.
            </doc:para>
          </doc:summary>
        </doc:doc>
      </arg>
    </method>

    <!--*********************************************************************-->
    <method name="SuggestDaemonQuit">
      <doc:doc>
        <doc:description>
          <doc:para>
            Suggests to the daemon that it should quit as soon as possible, for instance if a native
            package management tool is waiting to be used.
          </doc:para>
        </doc:description>
      </doc:doc>
    </method>

    <!--*********************************************************************-->
    <method name="GetPackageHistory">
      <annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="QVariant"/>
      <doc:doc>
        <doc:description>
          <doc:para>
            Gets the history for a given package name.
            This uses the internal PackageKit history database and will not
            return transactions done outside of PackageKit using a distribution
            native tool.
          </doc:para>
        </doc:description>
      </doc:doc>
      <arg type="as" name="names" direction="in">
        <doc:doc>
          <doc:summary>
            <doc:para>
              The package names to return history for, e.g. <doc:tt>[ colord ]</doc:tt>.
            </doc:para>
          </doc:summary>
        </doc:doc>
      </arg>
      <arg type="u" name="count" direction="in">
        <doc:doc>
          <doc:summary>
            <doc:para>
              The maximum number of past transactions to return, or 0 for no limit.
            </doc:para>
          </doc:summary>
        </doc:doc>
      </arg>
      <arg type="a{saa{sv}}" name="history" direction="out">
        <doc:doc>
          <doc:summary>
            <doc:para>
              The list of actions performed on this package. The array may contain
              the following keys of types:
              <doc:tt>info[uint]</doc:tt>,
              <doc:tt>user-id[uint]</doc:tt>,
              <doc:tt>version[string]</doc:tt>,
              <doc:tt>source[string]</doc:tt>,
              <doc:tt>timestamp[uint64]</doc:tt>.
              Other keys and values may be added in the future.
            </doc:para>
          </doc:summary>
        </doc:doc>
      </arg>
    </method>

    <!--*********************************************************************-->
    <method name="GetDaemonState">
      <doc:doc>
        <doc:description>
          <doc:para>
            Gets the debugging state from the daemon.
            No secure state will be shown, and all information is for reference only.
          </doc:para>
        </doc:description>
      </doc:doc>
      <arg type="s" name="state" direction="out">
        <doc:doc>
          <doc:summary>
            <doc:para>
              The state of the dameon at this specific moment.
            </doc:para>
          </doc:summary>
        </doc:doc>
      </arg>
    </method>

    <!--*********************************************************************-->
    <method name="SetProxy">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <doc:doc>
        <doc:description>
          <doc:para>
            Sets the proxy used by the dameon.
          </doc:para>
        </doc:description>
        <doc:permission>Callers need the org.freedesktop.packagekit.set-proxy</doc:permission>
      </doc:doc>
      <arg type="s" name="proxy_http" direction="in">
        <doc:doc>
          <doc:summary>
            <doc:para>
              The HTTP proxy, e.g. <doc:tt>username:password@server:port</doc:tt>.
            </doc:para>
          </doc:summary>
        </doc:doc>
      </arg>
      <arg type="s" name="proxy_https" direction="in">
        <doc:doc>
          <doc:summary>
            <doc:para>
              The HTTPS proxy, e.g. <doc:tt>username:password@server:port</doc:tt>.
            </doc:para>
          </doc:summary>
        </doc:doc>
      </arg>
      <arg type="s" name="proxy_ftp" direction="in">
        <doc:doc>
          <doc:summary>
            <doc:para>
              The FTP proxy, e.g. <doc:tt>username:password@server:port</doc:tt>.
            </doc:para>
          </doc:summary>
        </doc:doc>
      </arg>
      <arg type="s" name="proxy_socks" direction="in">
        <doc:doc>
          <doc:summary>
            <doc:para>
              The SOCKS proxy, e.g. <doc:tt>username:password@server:port</doc:tt>.
            </doc:para>
          </doc:summary>
        </doc:doc>
      </arg>
      <arg type="s" name="no_proxy" direction="in">
        <doc:doc>
          <doc:summary>
            <doc:para>
              The comma seporated list of sites to not use the proxy for, e.g.
              <doc:tt>127.0.0.1,localmirror.org</doc:tt>.
            </doc:para>
          </doc:summary>
        </doc:doc>
      </arg>
      <arg type="s" name="pac" direction="in">
        <doc:doc>
          <doc:summary>
            <doc:para>
              The PAC file for the proxy, e.g.
              <doc:tt>/etc/network/school.pac</doc:tt>.
              Note: Most backends will not be able to use a PAC file.
            </doc:para>
          </doc:summary>
        </doc:doc>
      </arg>
    </method>

    <!--*********************************************************************-->
    <signal name="TransactionListChanged">
      <doc:doc>
        <doc:description>
          <doc:para>
            The transaction list has changed, because either a transaction has finished or a new
            transaction created.
          </doc:para>
        </doc:description>
      </doc:doc>
      <arg type="as" name="transactions" direction="out">
        <doc:doc>
          <doc:summary>
            <doc:para>
              A list of transaction ID's.
            </doc:para>
          </doc:summary>
        </doc:doc>
      </arg>
    </signal>

    <!--*********************************************************************-->
    <signal name="RestartSchedule">
      <doc:doc>
        <doc:description>
          <doc:para>
            A system restart has been sceduled
          </doc:para>
        </doc:description>
      </doc:doc>
    </signal>

    <!--*********************************************************************-->
    <signal name="RepoListChanged">
      <doc:doc>
        <doc:description>
          <doc:para>
            This signal is emitted when the repository list has changed
          </doc:para>
        </doc:description>
      </doc:doc>
    </signal>

    <!--*********************************************************************-->
    <signal name="UpdatesChanged">
      <doc:doc>
        <doc:description>
          <doc:para>
            This signal is emitted when the number of updates has changed
          </doc:para>
        </doc:description>
      </doc:doc>
    </signal>

    <!--*********************************************************************-->
    <signal name="Changed">
      <doc:doc>
        <doc:description>
          <doc:para>
            This signal is emitted when a property on the interface changes.
          </doc:para>
        </doc:description>
      </doc:doc>
    </signal>

  </interface>
</node>

