<?xml version="1.0" ?>
<node name="/Logger"
  xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
  <tp:copyright>Copyright © 2009 Collabora Ltd.</tp:copyright>
  <tp:license xmlns="http://www.w3.org/1999/xhtml">
    <p>This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.</p>

<p>This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.</p>

<p>You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</p>
  </tp:license>
  <interface name="org.freedesktop.Telepathy.Logger.DRAFT"
    tp:causes-havoc="experimental">
    <tp:added version="0.1">(as a draft)</tp:added>

    <tp:docstring>
      An interface for requesting information from the Telepathy Logger
      service.
    </tp:docstring>

    <tp:struct name="Chat_Message" array-name="Chat_Message_List">
      <tp:member type="s" name="Sender">
        <tp:docstring>
          The identifier of the contact who originated this message.
        </tp:docstring>
      </tp:member>

      <tp:member type="s" name="Message">
        <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
        The body of the message sent to a 1-1 Chat or a Chat Room.
        </tp:docstring>
      </tp:member>

      <tp:member type="x" name="Timestamp" tp:type="Unix_Timestamp64">
        <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
        Unix timestamp for the log entry
        </tp:docstring>
      </tp:member>

      <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
        <p>It represents a single message, received or sent.</p>
        <p>The receiver is implicit in the request: if the sender is the user,
        the receiver is the identifier in chat_id paramenter, if the sender is
        not the user, the user is consequently the receiver of the message</p>
      </tp:docstring>
    </tp:struct>

    <method name="GetRecentMessages"
            tp:name-for-bindings="Get_Recent_Messages">
      <arg direction="in" name="Account" type="o" tp:type="Account">
        <tp:docstring>
        The account path for the TpAccount to which the conversation is related
        </tp:docstring>
      </arg>

      <arg direction="in" name="Identifier" type="s">
        <tp:docstring>
        The buddy's identifier for the conversation
        </tp:docstring>
      </arg>

      <arg direction="in" name="Is_Chatroom" type="b">
        <tp:docstring>
        Whether the conversation is a chatroom (i.e., XMPP MUC) or not
        </tp:docstring>
      </arg>

      <arg direction="in" name="Lines" type="u">
        <tp:docstring>
        how many entries will be returned.

        NOTE: to retreive information that would generate high traffic, use
        the library API approach instead of DBus.
        </tp:docstring>
      </arg>

      <arg direction="out" name="Messages" type="a(ssx)"
           tp:type="Chat_Message[]" />

      <tp:docstring>
        Request the last Lines entries of logs for the specified couple
        Account+Identifier.
      </tp:docstring>
    </method>

    <method name="GetFavouriteContacts"
            tp:name-for-bindings="Get_Favourite_Contacts">
      <arg direction="out" name="Favourite_Contacts" type="a(oas)">
        <tp:docstring>
        The favourite contacts, as an array of TpAccounts and their contact
        identifiers.
        </tp:docstring>
      </arg>

      <tp:docstring>
        Returns the favourite contacts.
      </tp:docstring>
    </method>

    <method name="AddFavouriteContact"
            tp:name-for-bindings="Add_Favourite_Contact">
      <arg direction="in" name="Account" type="o" tp:type="Account">
        <tp:docstring>
        The object path for the TpAccount to which the contact belongs
        </tp:docstring>
      </arg>

      <arg direction="in" name="Identifier" type="s">
        <tp:docstring>
        The favourite contact's identifier
        </tp:docstring>
      </arg>

      <tp:docstring>
        Add a contact's designation as a favourite. This method may not be
        called until the service is ready. See the <tp:dbus-ref
        namespace="org.freedesktop.Telepathy.Logger.DRAFT">FavouriteContactsReady</tp:dbus-ref> signal and <tp:dbus-ref
        namespace="org.freedesktop.Telepathy.Logger.DRAFT">FavouriteContactsIsReady</tp:dbus-ref> property.
      </tp:docstring>
    </method>

    <method name="RemoveFavouriteContact"
            tp:name-for-bindings="Remove_Favourite_Contact">
      <arg direction="in" name="Account" type="o" tp:type="Account">
        <tp:docstring>
        The object path for the TpAccount to which the contact belongs
        </tp:docstring>
      </arg>

      <arg direction="in" name="Identifier" type="s">
        <tp:docstring>
        The favourite contact's identifier
        </tp:docstring>
      </arg>

      <tp:docstring>
        Remove a contact's designation as a favourite. This method may not be
        called until the service is ready. See the <tp:dbus-ref
        namespace="org.freedesktop.Telepathy.Logger.DRAFT">FavouriteContactsReady</tp:dbus-ref> signal and <tp:dbus-ref
        namespace="org.freedesktop.Telepathy.Logger.DRAFT">FavouriteContactsIsReady</tp:dbus-ref> property.
      </tp:docstring>
    </method>

    <signal name="FavouriteContactsChanged"
      tp:name-for-bindings="Favourite_Contacts_Changed">
      <tp:docstring>
        The set of favourite contacts has changed.
      </tp:docstring>

      <arg name="Account" type="o" tp:type="Account">
        <tp:docstring>
          An account associated with the contact.
        </tp:docstring>
      </arg>

      <arg name="Added" type="as">
        <tp:docstring>
        List of contact identifiers of contacts which are now favourites.
        </tp:docstring>
      </arg>

      <arg name="Removed" type="as">
        <tp:docstring>
        List of contact identifiers of contacts which are no longer favourites.
        </tp:docstring>
      </arg>
    </signal>

  </interface>
</node>
<!-- vim:set sw=2 sts=2 et ft=xml: -->
