<?xml version="1.0" ?>
<node name="/Channel_Type_Contact_List" xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
  <tp:copyright> Copyright (C) 2005, 2006 Collabora Limited </tp:copyright>
  <tp:copyright> Copyright (C) 2005, 2006 Nokia Corporation </tp:copyright>
  <tp:copyright> Copyright (C) 2006 INdT </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.Channel.Type.ContactList">
    <tp:requires interface="org.freedesktop.Telepathy.Channel"/>
    <tp:requires interface="org.freedesktop.Telepathy.Channel.Interface.Group"/>

    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
      <p>A channel type for representing a list of people on the server which is
    not used for communication. This is intended for use with the interface
    <tp:dbus-ref
      namespace="org.freedesktop.Telepathy">Channel.Interface.Group</tp:dbus-ref>
    for managing buddy lists and privacy lists
    on the server. This channel type has no methods because all of the
    functionality it represents is available via the group interface.</p>

    <p>There are currently two types of contact list:
    HANDLE_TYPE_LIST is a &quot;magic&quot; server-defined list, and
    HANDLE_TYPE_GROUP is a user-defined contact group.</p>

    <p>For server-defined lists like the subscribe list, singleton instances
    of this channel type should be created by the connection manager at
    connection time if the list exists on the server, or may be requested
    by using the appropriate handle.  These handles can be obtained using
    <tp:dbus-ref
      namespace="org.freedesktop.Telepathy.Connection">RequestHandles</tp:dbus-ref>
    with a <tp:type>Handle_Type</tp:type> of HANDLE_TYPE_LIST and one of the
    following identifiers:</p>

    <ul>
      <li>subscribe - the group of contacts for whom you receive presence</li>
      <li>publish - the group of contacts who may receive your presence</li>
      <li>hide - a group of contacts who are on the publish list but are temporarily disallowed from receiving your presence</li>
      <li>allow - a group of contacts who may send you messages</li>
      <li>deny - a group of contacts who may not send you messages</li>
      <li>stored - on protocols where the user's contacts are stored, this
      contact list contains all stored contacts regardless of subscription
      status.</li>
    </ul>

    <p>A contact can be in several server-defined lists. All lists are optional
    to implement. If <tp:dbus-ref
      namespace="org.freedesktop.Telepathy.Connection">RequestHandles</tp:dbus-ref>
    or <tp:dbus-ref
      namespace="org.freedesktop.Telepathy.Connection">RequestChannel</tp:dbus-ref>
    for a particular contact list raises an error, this indicates that the
    connection manager makes no particular statement about the list's contents;
    clients MUST NOT consider this to be fatal.</p>

    <p>If a client wants to list all of a user's contacts, it is appropriate to
    use the union of the subscribe, publish and stored lists, including the
    local and remote pending members.</p>

    <p>For example in XMPP, contacts who have the subscription type "none",
    "from", "to" and "both" can be respectively in the lists:</p>

    <ul>
      <li>"none": stored</li>
      <li>"from": stored and publish</li>
      <li>"to": stored and subscribe</li>
      <li>"both": stored, publish and subscribe</li>
    </ul>

    <p>These contact list channels may not be closed.</p>

    <p>For user-defined contact groups, instances of this channel type should
    be created by the connection manager at connection time for each group
    that exists on the server. New, empty groups can be created by calling
    <tp:dbus-ref
      namespace="org.freedesktop.Telepathy.Connection">RequestHandles</tp:dbus-ref>
    with a <tp:type>Handle_Type</tp:type> of HANDLE_TYPE_GROUP and with the
    name set to the human-readable UTF-8 name of the group.</p>

    <p>User-defined groups may be deleted by calling <tp:dbus-ref
      namespace="org.freedesktop.Telepathy.Channel">Close</tp:dbus-ref> on the
    channel, but only if
    the group is already empty. Closing a channel to a non-empty group is
    not allowed; its members must be set to the empty set first.</p>

    <p>On some protocols (e.g. XMPP) empty groups are not represented on the
    server, so disconnecting from the server and reconnecting might cause
    empty groups to vanish.</p>
    </tp:docstring>

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