<?xml version="1.0" ?>
<node name="/Account_Interface_Storage"
  xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
  <tp:copyright>Copyright (C) 2010 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.Account.Interface.Storage">
    <tp:requires interface="org.freedesktop.Telepathy.Account"/>

    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
      <p>
        This interface extends the core Account interface to specify details
        regarding the storage of this account.
      </p>

      <tp:rationale>
        <p>
          Single-sign-on systems do not generally have directly user-editable
          properties for Accounts, and require the user to visit a specific UI
          to alter their account properties. User interfaces should know not to
          expose these account properties as user-editable, and instead
          redirect the user to the appropriate interface.
        </p>
      </tp:rationale>

    </tp:docstring>
    <tp:added version="0.19.8"/>

    <property name="StorageProvider" tp:name-for-bindings="Storage_Provider"
              type="s" access="read">
      <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
        <p>
          The name of the account storage implementation, which SHOULD start
          with a reversed domain name in the same way as D-Bus interface names.
          When this is the empty string the account is internally stored.
        </p>
        <p>
          This property cannot change once an Account has been created.
        </p>
      </tp:docstring>
    </property>

    <property name="StorageIdentifier"
              tp:name-for-bindings="Storage_Identifier" type="v" access="read">
      <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
        <p>
          Unique identification of the account within the storage backend.
          The contents of the variant are defined by the
          <tp:member-ref>StorageProvider</tp:member-ref>.
        </p>
        <p>
          This property cannot change once an Account has been created.
        </p>
        <tp:rationale>
          <p>
            Different storage systems will have their own way of uniquely
            identifying an account, typically an integer or a string.
            Given that all users of this property should have direct knowledge
            of the backend they should know what types to expect and how to
            handle it.
          </p>
        </tp:rationale>
      </tp:docstring>
    </property>

    <property name="StorageSpecificInformation"
              tp:name-for-bindings="Storage_Specific_Information" type="a{sv}"
              access="read">
      <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
        <p>
          Map containing information specific to the storage backend. The keys
          and the types of their values are defined by the
          <tp:member-ref>StorageProvider</tp:member-ref>, and are not
          interpreted by the AccountManager implementation.
        </p>
        <p>
          As the values in this map may change at any time (due to an external
          application manipulating the storage provider directly), this
          property should not be cached; it should instead be retrieved each
          time it is needed.
        </p>

        <tp:rationale>
          <p>
            This can be used to provide additional hints to user interfaces
            aware of a specific storage provider, without requiring those user
            interfaces to use the
            <tp:member-ref>StorageIdentifier</tp:member-ref> to query the
            storage provider directly.
          </p>
        </tp:rationale>
      </tp:docstring>
    </property>

    <property name="StorageRestrictions"
              tp:name-for-bindings="Storage_Restrictions" type="u"
              tp:type="Storage_Restriction_Flags"
              access="read">
      <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
        <p>
          Bitfield which defines what restrictions this Storage method has.
        </p>
        <p>
          This property cannot change once an Account has been created.
        </p>
      </tp:docstring>
    </property>

    <tp:flags name="Storage_Restriction_Flags"
              value-prefix="Storage_Restriction_Flag" type="u">
      <tp:docstring>
        Flags indicating restrictions imposed on an Account by its storage
        method.
      </tp:docstring>

      <tp:flag suffix="Cannot_Set_Parameters" value="1">
        <tp:docstring>
          The account's <tp:dbus-ref
            namespace="org.freedesktop.Telepathy.Account"
            >Parameters</tp:dbus-ref> property can't be changed by calling
          <tp:dbus-ref namespace="org.freedesktop.Telepathy.Account"
            >UpdateParameters</tp:dbus-ref>.
        </tp:docstring>
      </tp:flag>

      <tp:flag suffix="Cannot_Set_Enabled" value="2">
        <tp:docstring>
          The account can't be enabled/disabled by setting the <tp:dbus-ref
            namespace="org.freedesktop.Telepathy.Account"
            >Enabled</tp:dbus-ref> property.
        </tp:docstring>
      </tp:flag>

      <tp:flag suffix="Cannot_Set_Presence" value="4">
        <tp:docstring>
          The account's presence can't be changed by setting the <tp:dbus-ref
            namespace="org.freedesktop.Telepathy.Account"
            >RequestedPresence</tp:dbus-ref> and <tp:dbus-ref
            namespace="org.freedesktop.Telepathy.Account"
            >AutomaticPresence</tp:dbus-ref> properties.
        </tp:docstring>
      </tp:flag>

      <tp:flag suffix="Cannot_Set_Service" value="8">
        <tp:docstring>
          The account's <tp:dbus-ref
            namespace="org.freedesktop.Telepathy.Account">Service</tp:dbus-ref>
          property cannot be changed.
        </tp:docstring>
      </tp:flag>
    </tp:flags>

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