There are currently three interfaces on the service org.freedesktop.PackageKit.

== org.freedesktop.PackageKit ==

 * This interface is a legacy interface first used in gnome-packagekit 0.2.1
   and methods were added and changed over the 0.2.x series.
 * It was not really designed at this time as a standalone service, and as such
   provides little flexibility for client programs.
 * Consider this interface DEPRECATED as it will be removed in the 0.4.x series.

== org.freedesktop.PackageKit.Query ==

 * This interface is used for synchronous querying of package data, for instance
   finding what package owns a file, or if a package is installed.
 * It is designed to be easy to use, rather than flexible.
 * In the interaction mode an application can also specify that it should not
   be blocked when other transactions are in progress.
   If the system is in the process of updating glibc and the kernel, and
   a trivial request is issued for org.freedesktop.PackageKit.Query.IsInstalled
   then we might not want to wait several minutes for an accurate answer.

   The timeout command is supplied for this purpose.
    - By adding the interaction mode of timeout=0 the method will immediately fail
      if there are any other transactions running
    - The mode timeout=10 would wait a maximum of 10 seconds before returning with
      an error.

== org.freedesktop.PackageKit.Modify ==

 * This interface is for synchronous modification of the system, for instance
   installing applications or other resources.
 * The user interaction is controlled using an 'interaction mode', and this is
   outlined below:

  There are lots of different types that can be shown or suppressed:

   - confirm-search	Ask the user before we search
   - confirm-deps	Ask the user to agree to deps
   - confirm-install	Ask the user before we install
   - progress		Show the user a progress bar
   - finished		Ask the user a finished dialog box
   - warning		Show the user a warning

  These are obviously something that people may want to set per-user defaults,
  and so the GSettings key org.gnome.packagekit:dbus_default_interaction is
  provided.
  This sets up the default interactions used by clients unless they opt-in
  or opt-out of certain interactions.

  Of course, we do not want software silently installing things behind our back,
  even if they are signed and trusted. One could imagine an application hiding
  all the interactions do install some software silently.
  Another GSettings key org.gnome.packagekit:dbus_enforced_interaction is used
  to set modes that are absolutely required or suppressed, even when the client
  or defaults specify otherwise.

  An example:
  Defaults specify:
   show-confirm-search,show-confirm-deps,show-confirm-install,show-progress
  Enforced specify:
   show-confirm-install
  Client specifies:
   hide-confirm-install,hide-confirm-search,show-warnings

  The defaults are modified by the client settings to add warnings, and
  remove confirm-install.
  The admin specified confirm-install is required, so the finished interaction
  mode is:
   show-confirm-deps,show-confirm-install,show-progress,show-warnings

