summaryrefslogtreecommitdiff
path: root/spec/Account_Interface_Storage.xml
blob: 4e3ba5dcaeb0f5773f990b1c5be79c8d28a2f612 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
<?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: -->