Gabble-specific extensions to the Telepathy interfaces

Copyright (C) 2007 Collabora Limited

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.

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.

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 St, Fifth Floor, Boston, MA 02110-1301 USA

Interfaces

org.freedesktop.Telepathy.ChannelBundle.DRAFT

This interface is experimental and is likely to cause havoc to your API/ABI if bindings are generated. Don't include it in libraries that care about compatibility.

A group of related channels, which should all be dispatched to the same handler if possible.

Bundles currently have no functionality of their own, so clients SHOULD NOT examine this interface, but should instead treat the bundle object-path as an opaque identifier. If more functionality is added to bundles in future, this interface will be used for capability discovery.

The lifetime of a bundle is defined by its component channels - as long as one or more channels whose Bundle property is B exist, the bundle B will also exist.

Interface has no methods.

Interface has no signals.

Interface has no Telepathy properties.

D-Bus core Properties:

Accessed using the org.freedesktop.DBus.Properties interface.

Interfacesas (DBus_Interface[]), read-only
A list of the extra interfaces provided by this channel bundle.

org.freedesktop.Telepathy.Channel.FUTURE

This interface is a staging area for future Channel functionality and is likely to cause havoc to your API/ABI if bindings are generated. Don't include it in libraries that care about compatibility.

This interface contains functionality which we intend to incorporate into the Channel interface in future. It should be considered to be conceptually part of the core Channel interface, but without API or ABI guarantees.

If we add new functionality to the Channel interface, libraries that use generated code (notably telepathy-glib) will have it as part of their ABI forever, meaning we can't make incompatible changes. By using this interface as a staging area for future Channel functionality, we can try out new properties, signals and methods as application-specific extensions, then merge them into the core Channel interface when we have enough implementation experience to declare them to be stable.

The name is by analogy to Python's __future__ pseudo-module.

Interface has no methods.

Interface has no signals.

Interface has no Telepathy properties.

D-Bus core Properties:

Accessed using the org.freedesktop.DBus.Properties interface.

Bundleo, read-only

The ChannelBundle to which this channel belongs.

A channel's Bundle property can never change.

Older connection managers might not have this property. Clients (particularly the channel dispatcher) SHOULD recover by considering each channel to be in a bundle containing only that channel, distinct from all other bundles, which has no additional interfaces.

Added in version 0.17.9. (in Channel.FUTURE pseudo-interface)

org.laptop.Telepathy.BuddyInfo

Implementations of this interface must also implement:

An interface on connections to associate OLPC buddy information with contacts, providing methods for the user to set their own information and retrieve information of contacts. The user is automatically notified when information of contacts that are in his 'subscribe' contact list change.

The following types and names are used to request and set information (except for activities):

s:color
The color name of the buddy. Format used is #RRGGBB,#RRGGBB (stroke,fill).
ay:key
The public key of the buddy.
s:jid
For link-local connections, the JID of the buddy's server account.

Activities are represented by a struct containing:

Methods:

SetProperties ( a{sv}: properties ) → nothing

Set the information of the local user for this connection.

This method may be called before Connect(), in which case the given properties will be advertised as soon as possible after connection (possibly immediately).

Parameters

propertiesa{sv}
A dictionary mapping information names to the desired values. This replaces any existing buddy properties completely: any keys which were previously present, but are not present in this dictionary, are deleted.

Possible errors

org.freedesktop.Telepathy.Error.InvalidArgument
(Undocumented.)

GetProperties ( u: contact ) → a{sv}

Get the properties of a particular contact.

Parameters

contactu
An integer handle for the contact to request his properties for

Returns

propertiesa{sv}
A dictionary mapping information names to their values

Possible errors

org.freedesktop.Telepathy.Error.Disconnected
(Undocumented.)
org.freedesktop.Telepathy.Error.InvalidArgument
(Undocumented.)

SetActivities ( a(su): activities ) → nothing

Set the activities of the local user for this connection.

Parameters

activitiesa(su) (Activity[])
An array of structs containing:
  • the identifier of the activity
  • the room handle of the activity channel

Possible errors

org.freedesktop.Telepathy.Error.Disconnected
(Undocumented.)
org.freedesktop.Telepathy.Error.InvalidArgument
(Undocumented.)

AddActivity ( s: id, u: handle ) → nothing

Advertise an activity associated to a muc room
Once an activity shares itself, needs to be advertised if it's not private. SetActivities could be used for this but it would mean that the activity would need to call GetActivities then add itself.

Parameters

ids
An activity id
handleu
A room handle

Possible errors

org.freedesktop.Telepathy.Error.Disconnected
(Undocumented.)
org.freedesktop.Telepathy.Error.InvalidArgument
(Undocumented.)

GetActivities ( u: contact ) → a(su)

Get the activities of a particular contact.

Parameters

contactu
An integer handle for the contact whose activities are to be returned

Returns

activitiesa(su) (Activity[])
An array of structs containing:
  • the identifier of the activity
  • the room handle of the activity channel

Possible errors

org.freedesktop.Telepathy.Error.Disconnected
(Undocumented.)
org.freedesktop.Telepathy.Error.InvalidArgument
(Undocumented.)

SetCurrentActivity ( s: activity, u: channel ) → nothing

Set the current activity of the local user for this connection.

Parameters

activitys
The identifier of the activity, or the empty string if there is no current activity
channelu
The room handle of the activity channel, or 0 if there is no current activity

Possible errors

org.freedesktop.Telepathy.Error.Disconnected
(Undocumented.)
org.freedesktop.Telepathy.Error.InvalidArgument
(Undocumented.)

GetCurrentActivity ( u: contact ) → s, u

Get the current activity of a particular contact.

Parameters

contactu
An integer handle for the contact whose current activity is to be returned

Returns

activitys
The identifier of the activity, or "" if there is no current activity
channelu
The room handle of the activity, or 0 if there is no current activity

Possible errors

org.freedesktop.Telepathy.Error.Disconnected
(Undocumented.)
org.freedesktop.Telepathy.Error.InvalidArgument
(Undocumented.)

Signals:

PropertiesChanged ( u: contact, a{sv}: properties )

Signal emitted when the properties of a contact from your 'subscribe' contact list are changed.

Parameters

contactu
An integer handle representing the contact
propertiesa{sv}
A dictionary mapping property names to their new values. All properties are included, not just those that have changed.

ActivitiesChanged ( u: contact, a(su): activities )

Signal emitted when the activities of a contact from your 'subscribe' contact list are changed.

Parameters

contactu
An integer handle representing the contact
activitiesa(su) (Activity[])
An array of structs containing:
  • the identifier of the activity
  • the handle of the activity channel

CurrentActivityChanged ( u: contact, s: activity, u: channel )

Signal emitted when the current activity of a contact from your 'subscribe' contact list is changed.

Parameters

contactu
An integer handle representing the contact
activitys
The identifier of the activity, or "" if there is no current activity
channelu
The room handle of the activity channel, or 0 if there is no current activity

Interface has no Telepathy properties.

Interface has no D-Bus core properties.

Structure types

Activity − ( s: id, u: room )

A struct containing: the identifier of the activity the room handle of the activity channel

In bindings that need a separate name, arrays of Activity should be called Activity_List.

Members

ids
(undocumented)
roomu (Room_Handle)
(undocumented)

org.laptop.Telepathy.ActivityProperties

Implementations of this interface must also implement:

An interface on connections to associate OLPC activity properties with rooms.

The following types and names are used to request and set properties:

s:color
The color of the activity. Format used is #RRGGBB,#RRGGBB (stroke,fill).
s:name
The name of the activity.
s:type
The type of the activity.

Methods:

SetProperties ( u: room, a{sv}: properties ) → nothing

Set the properties of the activity associated to the given room for this connection. You have to be the owner of this activity.

Parameters

roomu
An integer handle representing the room of the activity
propertiesa{sv}
A dictionary mapping properties names to the desired values

Possible errors

org.freedesktop.Telepathy.Error.Disconnected
(Undocumented.)
org.freedesktop.Telepathy.Error.InvalidArgument
(Undocumented.)
org.freedesktop.Telepathy.Error.PermissionDenied
(Undocumented.)

GetProperties ( u: room ) → a{sv}

Get the properties of a particular activity.

Parameters

roomu
An integer handle for the activity's room to request his properties for

Returns

propertiesa{sv}
A dictionary mapping properties names to their values

Possible errors

org.freedesktop.Telepathy.Error.Disconnected
(Undocumented.)
org.freedesktop.Telepathy.Error.InvalidArgument
(Undocumented.)

GetActivity ( s: activity_id ) → u

Returns the handle of the room associated with this activity
When an activity starts up, it knows its activity_id but doesn't know yet if it's shared or not, much less the room.

Parameters

activity_ids
An activity id

Returns

roomu
A room handle

Possible errors

org.freedesktop.Telepathy.Error.Disconnected
(Undocumented.)
org.freedesktop.Telepathy.Error.InvalidArgument
(Undocumented.)

Signals:

ActivityPropertiesChanged ( u: room, a{sv}: properties )

Signal emitted when the properties of an activity are changed.

Parameters

roomu
An integer handle representing the room of the activity
propertiesa{sv}
A dictionary mapping properties names to their new values

Interface has no Telepathy properties.

Interface has no D-Bus core properties.

org.freedesktop.Telepathy.Channel.Type.FileTransfer.FUTURE

This interface is a staging area for future File Transfer Channel functionality and is likely to cause havoc to your API/ABI if bindings are generated. Don't include it in libraries that care about compatibility.

This interface contains functionality which we intend to incorporate into the File Transfer Channel interface in future. It should be considered to be conceptually part of the core File Transfer Channel interface, but without API or ABI guarantees.

If we add new functionality to the Channel interface, libraries that use generated code (notably telepathy-glib) will have it as part of their ABI forever, meaning we can't make incompatible changes. By using this interface as a staging area for future Channel functionality, we can try out new properties, signals and methods as application-specific extensions, then merge them into the core Channel interface when we have enough implementation experience to declare them to be stable.

The name is by analogy to Python's __future__ pseudo-module.

Interface has no methods.

Interface has no signals.

Interface has no Telepathy properties.

D-Bus core Properties:

Accessed using the org.freedesktop.DBus.Properties interface.

FileCollections, read-only

The FileCollection to which this channel belongs.

A channel's FileCollection property can never change.

At least on GTalk and apparently also on iChat the user can send a set of files to a contact and that contact can then pick and choose which files to actually receive. The CM should emit all new FT channels belonging to one collection at the same time, UIs supporting this feature can then bundle all these channels together in some way and show a nice UI. UIs not supporting it will treat them as seperate transfers, which is not great but a reasonable fallback

Added in version 0.19.2. (in Channel.Type.FileTransfer.FUTURE pseudo-interface)

org.freedesktop.Telepathy.Connection.Interface.Gabble.Decloak

This interface is experimental and is likely to cause havoc to your API/ABI if bindings are generated. Don't include it in libraries that care about compatibility.

Implementations of this interface must also implement:

A simple D-Bus API for XEP-0276 Temporary Presence Sharing. See the XEP for more details.

Added in version Gabble 0.9.4. (Gabble-specific)

Methods:

SendDirectedPresence ( u: Contact, b: Full ) → nothing

Send directed presence to a contact. This MAY be called at any time, but will typically be used as a response to DecloakRequested

Parameters

Contactu (Contact_Handle)
The contact to send directed presence to.
Fullb
If true, full presence (status, message, avatar hash etc.) will be directed to the specified contact. If false, only capabilities and the fact that the user is online at all will be directed to the specified contact (the local user will appear to that contact as being in 'available' status).

Signals:

DecloakRequested ( u: Contact, s: Reason, b: Decloaked )

Emitted when a remote contact asks for the local user's capabilities and basic presence to be disclosed.

Parameters

Contactu (Contact_Handle)
The contact asking for presence disclosure
Reasons
A code indicating the reason that decloaking is requested, or the empty string if no reason code was given. As per the proto-XEP, well-known values are 'media' (remote contact wants to call local user), 'text' (remote contact wants to establish a text messaging session, perhaps end-to-end encrypted), and 'file' (remote contact wants to send the local user a file).
Decloakedb
If true, the connection manager automatically disclosed the local user's capabilities and basic presence in response to the request, and this signal is merely for information. If false, presence was not automatically disclosed; a user interface MAY respond by calling SendDirectedPresence.

Interface has no Telepathy properties.

D-Bus core Properties:

Accessed using the org.freedesktop.DBus.Properties interface.

DecloakAutomaticallyb, read/write

If true, the connection manager will automatically disclose the local user's capabilities (and hence the fact that they are online, but no further presence information) on request from any remote XMPP user.

This is necessary to allow incoming calls from arbitrary users.

This property SHOULD also be available as a connection manager parameter, with the DBus_Property flag. The default SHOULD be false since this constitutes a deliberate presence leak.

org.freedesktop.Telepathy.Connection.Interface.MailNotification.DRAFT

This interface is experimental and is likely to cause havoc to your API/ABI if bindings are generated. Don't include it in libraries that care about compatibility.

Implementations of this interface must also implement:

An interface to support receiving notifications about a e-mail account associated with this connection.

In protocols where this is possible, this interface also allows the connection manager to provide the necessary information for clients to open a web-based mail client without having to re-authenticate.

To use this interface, a client MUST first subscribe using the Subscribe method. The subscription mechanic aims at reducing network traffic and memory footprint in the situation where nobody is currently interesting in provided information. When done with this interface, clients SHOULD call Unsubscribe to release resources in the CM.

Protocols have various different levels of Mail Notification support. To describe the level of support, the interface provides a property called MailNotificationFlags. Not all combinations are valid; protocols can be divided into four categories as follows.

Connections to the most capable protocols, such as Google's XMPP Mail Notification extension, have the Supports_Unread_Mails flag (this implies that they must also have Supports_Unread_Mail_Count, but not Emits_Mails_Received). On these connections, clients requiring change notification MUST monitor the UnreadMailsChanged signal, and either recover the initial state from the UnreadMails property (if they require details other than the number of mails) or the UnreadMailCount property (if they are only interested in the number of unread mails). The MailsReceived signal is never emitted on these connections, so clients that will display a short-term notification for each new mail MUST do so in response to emission of the UnreadMailsChanged signal.

The most common situation, seen in protocols like MSN and Yahoo, is that the number of unread mails is provided and kept up-to-date, and a separate notification is emitted with some details of each new mail. This is a combination of the following two features, and clients SHOULD implement one or both as appropriate for their requirements.

On protocols that have the Emits_Mails_Received flag (which implies that they do not have Supports_Unread_Mails), the CM does not keep track of any mails; it simply emits a notification whenever new mail arrives. Those events may be used for short term display (like a notification popup) to inform the user. No protocol is known to support only this feature, but it is useful for integration with libraries that that do not implement tracking of the number of mails. Clients requiring these notifications MUST monitor the MailsReceived signal on any connections with this flag.

On protocols that have the Supports_Unread_Mail_Count flag but not the Supports_Unread_Mails flag, clients cannot display complete details of unread email, but can display an up-to-date count of the number of unread mails. To do this, they must monitor the UnreadMailsChanged signal, and retrieve the initial state from the UnreadMailCount property.

Orthogonal features described by the MailNotificationFlags property include the RequestSomethingURL methods, which are used to obtain URLs allowing clients to open a webmail client. Connections SHOULD support as many of these methods as possible.

Added in version 0.19.1. (as draft 1)

Methods:

Subscribe ( ) → nothing

This method subscribes a client to the notification interface. This MUST be called by clients before using this interface. The Connection tracks a subscription count (like a refcount) for each unique bus name that has called Subscribe(). When a client calls Unsubscribe(), it releases one "reference". If a client exits (or crashes), the Connection releases all "references" held on its behalf.
The reference count imposed on the subscription simplifies implementation of client running in the same process (e.g. plug-ins): two plug-ins interested in mail notification can call Subscribe and Unsubscribe independently without interfering with each other. This method exists to reduce memory and network overhead when there is no active subscription. An example of a protocol that benefits from this method is the Google XMPP Mail Notification extension: in this protocol, the CM receives a notification that something has changed, but to get more information, the CM must request this information. Knowing that nobody is currently interested in this information, the CM can avoid generating useless network traffic. Similarly, the CM may free the list of unread messages to reduce memory overhead.

Possible errors

org.freedesktop.Telepathy.Error.Disconnected
(Undocumented.)
org.freedesktop.Telepathy.Error.NotImplemented
(Undocumented.)

Unsubscribe ( ) → nothing

This method unsubscribes a client from the notification interface. This SHOULD be called by each client that has successfully called Subscribe when it no longer needs the mail notification interface.
See Subscribe for rationale.

Possible errors

org.freedesktop.Telepathy.Error.NotAvailable
Raised if the client calling this method has no references to release.
org.freedesktop.Telepathy.Error.NotImplemented
(Undocumented.)

RequestInboxURL ( ) → (sua(ss))

This method creates and returns a URL and an optional POST data that allow opening the Inbox folder of a webmail account. This URL MAY contain tokens with a short lifetime, so clients SHOULD request a new URL for each visit to the webmail interface. This method is implemented only if the Supports_Request_Inbox_URL flag is set in MailNotificationFlags.
We are not using properties here because the tokens are unsuitable for sharing between clients, and network round-trips may be required to obtain the information that leads to authentication free webmail access.

Returns

URL(sua(ss)) (Mail_URL)
A struture containing a URL and optional additional data to open a webmail client, without re-authentication if possible.

Possible errors

org.freedesktop.Telepathy.Error.Disconnected
(Undocumented.)
org.freedesktop.Telepathy.Error.NetworkError
(Undocumented.)
org.freedesktop.Telepathy.Error.NotImplemented
(Undocumented.)

RequestMailURL ( s: ID, v: URL_Data ) → (sua(ss))

This method creates and returns a URL and optional POST data that allow opening a specific mail in a webmail interface. This method is implemented only if Supports_Request_Mail_URL flag is set in MailNotificationFlags.
See RequestInboxURL for design rationale.

Parameters

IDs
The mail's id as found in the Mail structure, or the empty string if no id key was provided.
URL_Datav
Whatever url-data was found in the Mail structure, or the boolean value False (D-Bus type 'b') if no url-data was provided in the Mail.

Returns

URL(sua(ss)) (Mail_URL)
A struture that contains a URL and optional additional data to open a webmail client, without re-authentication if possible.

Possible errors

org.freedesktop.Telepathy.Error.Disconnected
(Undocumented.)
org.freedesktop.Telepathy.Error.NetworkError
(Undocumented.)
org.freedesktop.Telepathy.Error.NotImplemented
(Undocumented.)
org.freedesktop.Telepathy.Error.InvalidArgument
(Undocumented.)

Signals:

MailsReceived ( aa{sv}: Mails )

Emitted when new e-mails messages arrive to the inbox associated with this connection. This signal is used for protocols that are not able to maintain the UnreadMails list, but do provide real-time notification about newly arrived e-mails. It MUST NOT be emitted unless Emits_Mails_Received is set in MailNotificationFlags.

Parameters

Mailsaa{sv} (Mail[])

An array of Mails. Those e-mail MUST NOT have the "id" key.

On connections that emit this signal, it's impossible to tell when a mail has been removed, and hence when "id" has become invalid.

UnreadMailsChanged ( u: Count, aa{sv}: Mails_Added, as: Mails_Removed )

Emitted when UnreadMails or UnreadMailCount have changed. It MUST NOT be emited if Supports_Unread_Mail_Count flag is not set in MailNotificationFlags.

Mails_Added and Mails_Removed MUST be empty if the Supports_Unread_Mails flag is not set.

Parameters

Countu
Number of unread messages in the inbox (the new value of UnreadMailCount).
Mails_Addedaa{sv} (Mail[])

A list of Mail that are being added or updated in UnreadMails.

Mails may be updated when the URL information (URL and POST data) have changed, or senders were added or removed from an e-mail thread.

If the Supports_Unread_Mails flag is not set, this list MUST be empty, even if Count has increased.

Mails_Removedas
A list of e-mail IDs that are being removed from UnreadMails. If the Supports_Unread_Mails flag is not set, this list MUST be empty, even if Count has decreased.

Interface has no Telepathy properties.

D-Bus core Properties:

Accessed using the org.freedesktop.DBus.Properties interface.

MailNotificationFlagsu (Mail_Notification_Flags), read-only
Integer representing the bitwise-OR of supported features for e-mails notification on this server. This property MUST NOT change after the Connection becomes CONNECTED.
This property indicates the behavior and availability of the other properties and signals within this interface. A connection manager that cannot at least set one of the flags in the Mail_Notification_Flags SHOULD NOT provide this interface.
UnreadMailCountu, read-only

The number of unread messages in the Inbox. Change notification is via UnreadMailsChanged.

This property is only useful if Supports_Unread_Mail_Count is set in the MailNotificationFlags; otherwise, it MUST be zero.

If Thread_Based appears in the MailNotificationFlags, this property counts the number of threads, not the number of mails.

Note that this count MAY be bigger than the number of items in UnreadMails. See UnreadMails for more details.

UnreadMailsaa{sv} (Mail[]), read-only
An array of unread Mails. Change notification is via UnreadMailsChanged. This property is only useful if Supports_Unread_Mails is set in MailNotificationFlags; otherwise, it MUST be an empty list. The array size MAY be shorter than UnreadMailCount.
Some servers may limits the amount of detailed e-mails sent. This can significantly reduce the network traffic for large inbox. For this reason, it is normal that UnreadMailCount be bigger or equal to the size of this array.
MailAddresss, read-only
A string representing the e-mail address of the account. The CMs MUST provide this information.
In close integration of MailNotification with other e-mail services, the e-mail address can be used has a unique identifier for the account. Possible integration could be between Telepathy and Evolution where the e-mail address is the common information in both interfaces.

Enumerated types:

HTTP_Method

The HTTP Method with which to request a URL.
HTTP_Method_Get = 0
Use the GET method when opening the URL.
HTTP_Method_Post = 1
Use the POST method when opening the URL. Refer to HTTP_Post_Data for more details.

Sets of flags:

Mail_Notification_Flags

Flags representing capabilities provided by a connection manager. Those values can be used as bitfield. Some flags depend on, or conflict with, each other. Connections SHOULD implement as many of these features as the underlying protocol allows, preferring to implement Supports_Unread_Mails instead of Emits_Mails_Received if both are possible.
Mail_Notification_Flag_Supports_Unread_Mail_Count = 1
This Connection provides the number of unread e-mails (or e-mail threads) in the main folder of your e-mail account, as the UnreadMailCount property. The connection manager will update this value by emitting the UnreadMailsChanged signal.
Mail_Notification_Flag_Supports_Unread_Mails = 2
This Connection provides a detailed list of unread e-mails, as the UnreadMails property. If this flag is set, Supports_Unread_Mail_Count MUST be set, and Emits_Mails_Received MUST NOT be set. The Connection will update the list by emitting the UnreadMailsChanged signals.
Mail_Notification_Flag_Emits_Mails_Received = 4
This Connection emits the MailsReceived signal, which provides details about newly arrived e-mails but does not maintain their read/unread status afterwards. This flag MUST NOT be combined with Supports_Unread_Mails.
Mail_Notification_Flag_Supports_Request_Inbox_URL = 8
This Connection can provide a URL (with optional POST data) to open the the inbox of the e-mail account in a web-based client, via the RequestInboxURL method.
Mail_Notification_Flag_Supports_Request_Mail_URL = 16

This Connection can provide a URL (with optional POST data) to open a specific mail in a web-based client, via the RequestMailURL method. This feature is not useful unless either Emits_Mails_Received or Supports_Unread_Mails is set.

If this flag is not set, clients SHOULD fall back to using RequestInboxURL if available.

Mail_Notification_Flag_Thread_Based = 32

Each Mail represents a thread of e-mails, which MAY have more than one sender.

Google Talk notifies users about new mail in terms of unread threads, rather than unread e-mails.

Structure types

HTTP_Post_Data − ( s: Key, s: Value )

A pair (key, value) representing POST data compatible with the application/x-www-form-urlencoded MIME type. The strings MUST be valid UTF-8 strings, and the characters used in the key MUST obey the requirements of the HTML CDATA type. The value MUST NOT be encoded with HTML entities.

For example, if the POST data should contain a key "less-than" with value "<", and a key "percent" with value "%", this should be represented as two HTTP_Post_Data structures, ("less-than", "<") and ("percent", "%"), resulting in a POST request whose request body is "less-than=&lt;&percent=%25". If a client passes this to a browser by writing it into an HTML form, it could do so by representing it as:

        <input type="hidden" name="less-than">&lt;</input>
        <input type="hidden" name="percent">%</input>
        

This data can be used to generate a HTML file that will automatically load the URL with appropriate POST data, in which case the client MUST convert any characters that are special within HTML into HTML entities. Alternatively, it can be used in an API that will instruct the browser how to load the URL (like the Netscape Plug-in API), in which case the client MUST escape characters that are reserved in URLs, if appropriate for that API.

An array of pairs is used instead of a map from keys to values, because it's valid to repeat keys in both HTML and x-www-form-urlencoded data.

In bindings that need a separate name, arrays of HTTP_Post_Data should be called HTTP_Post_Data_List.

Members

Keys
The key, corresponding to a HTML control name
Values
The value

Mail_Address − ( s: Name, s: Address )

A pair (name, address) representing an e-mail address, such as ("Nicolas Dufresne", "nicolas.dufresne@collabora.co.uk").

In bindings that need a separate name, arrays of Mail_Address should be called Mail_Address_List.

Members

Names
The displayed name corresponding to the e-mail address
Addresss
The actual e-mail address

Mail_URL − ( s: URL, u: Method, a(ss): Post_Data )

A structure containing the required information to open a web-based e-mail UI, without needing re-authentication (if possible).

Because the URL and POST data frequently contain short-lived credential tokens, a new URL should be requested (by calling one of the methods that returns a Mail_URL) for each visit to the web-based UI, and the URL should be visited soon after it is returned.

Arrays of Mail_URL don't generally make sense.

Members

URLs
The URL to which to send a request.
Methodu (HTTP_Method)
The HTTP method of the request.
Post_Dataa(ss) (HTTP_Post_Data[])
An array of name-value pairs containing the POST data to use when opening the URL. This MUST be an empty array if the Method is not POST.

Mapping types

Mail − a{ s: Key → v: Value }

An extensible map representing a mail, or (on protocols where Thread_Based appears in MailNotificationFlags) a thread of mails. All keys are optional where not otherwise stated; however, at least one of "senders" and "subject" must be included.

In bindings that need a separate name, arrays of Mail should be called Mail_List.

Members

Keys
A key providing information about the mail or thread. Well-known keys are as follows: id — s A unique ID for this e-mail. CMs with Supports_Unread_Mails set in MailNotificationFlags MUST provide this key in each Mail. If provided, the ID SHOULD be unique to a Mail at least until that mail is removed with the UnreadMailsChanged signal (in protocols with Supports_Unread_Emails), or unique for the duration of a session (otherwise).
In protocols with Supports_Unread_Mails, this key is used to indicate which mail was removed. In protocols without that feature, it's impossible to tell when a mail has been removed (and hence how long the identifier will remain valid for use with RequestMailURL).
url-data — any type An opaque identifier (typically a string or list of strings) provided to the Connection when calling RequestMailURL, containing information used by the Connection to build the URL. senders — a(ss) (Mail_Address) An array of sender display name and e-mail address pairs. Note that only e-mails represented as a thread can have multiple senders. to-addresses — a(ss) (Mail_Address) An array of display name and e-mail address pairs representing the recipients. cc-addresses — a(ss) (Mail_Address) An array of display name and e-mail address pairs representing the carbon-copy recipients. sent-timestamp — x (Unix_Timestamp64) A UNIX timestamp indicating when the message was sent, or for a thread, when the most recent message was sent. received-timestamp — x (Unix_Timestamp64) A UNIX timestamp indicating when the message was received, or for a thread, when the most recent message was received. has-attachments — b If true, this mail has attachments. subject — s The subject of the message. This MUST be encoded in UTF-8. content-type — s The MIME type of the message content. Two types are currently supported: "text/plain" for plain text, and "text/html" for a HTML document. If omitted, "text/plain" MUST be assumed. Regardless of MIME type, the content MUST be valid UTF-8 (which may require that the Connection transcodes it from a legacy encoding).
All strings on D-Bus must be UTF-8.
truncated — b If true, the content is only a partial message; if false or omitted, the content is the entire message. content — s The body of the message, possibly truncated, encoded as appropriate for "content-type". folder — s The name of the folder containing this e-mails. If omitted, the inbox SHOULD be assumed.
Valuev
The value, of whatever type is appropriate for the key.

org.freedesktop.Telepathy.Connection.FUTURE

This interface is experimental and is likely to cause havoc to your API/ABI if bindings are generated. Don't include it in libraries that care about compatibility.

Implementations of this interface must also implement:

Methods:

EnsureSidecar ( s: Main_Interface ) → o, a{sv}

Request an object with a particular interface providing additional connection-specific functionality, together with its immutable properties. These will often be implemented by plug-ins to the connection managers; for example, support for an XMPP XEP for which no generic Telepathy interface exists might be implemented by a Gabble plugin exposing a sidecar with a particular interface.

This method may be called at any point during the lifetime of a connection, even before its Connection_Status changes to Connected. It MAY take a long time to return—perhaps it needs to wait for a connection to be established and for all the services supported by the server to be discovered before determining whether necessary server-side support is available—so callers SHOULD override the default method timeout (25 seconds) with a much higher value (perhaps even MAX_INT32, meaning “no timeout” in recent versions of libdbus).

There is an implicit assumption that any connection manager plugin will only want to export one “primary” object per feature it implements, since there is a one-to-one mapping between interface and object. This is reasonable since Sidecars are (intended to be) analogous to extra interfaces on the connection, providing once-per-connection shared functionality; it also makes client code straightforward (look up the interface you care about in a dictionary, build a proxy object from the value). More “plural” plugins are likely to want to implement new types of Channel instead.

Added in version 0.19.UNRELEASED.

Parameters

Main_Interfaces (DBus_Interface)
The "primary" interface implemented by an object attached to a connection. For example, a Gabble plugin implementing fine-grained control of XEP-0016 privacy lists might expose an object implementing com.example.PrivacyLists.

Returns

Patho
The object path of the sidecar, exported by the same bus name as the Connection to which it is attached.
Propertiesa{sv} (Qualified_Property_Value_Map)
Immutable properties of the sidecar.

Interface has no signals.

Interface has no Telepathy properties.

Interface has no D-Bus core properties.

org.freedesktop.Telepathy.Gabble.Plugin.Gateways

A sidecar interface to register with XEP-0100 gateways.

Methods:

Register ( s: Gateway, s: Username, s: Password ) → nothing

Register with a gateway, as per XEP-0100 §4.1. This method does not allow for all the parameters that gateways can potentially have, and indeed doesn't even allow the required or allowed parameters to be discovered, but it should work in practice for nearly all gateways to other IM protocols.

Username and password are enough information to sign in to many IM protocols, and this method has a high "return on investment" in terms of being easy to implement and easy to write UI for.

Parameters

Gateways

The gateway (XMPP component) with which to register, e.g. "sip-transport.example.com".

Usernames

The username with which to register, in whatever format is required by the specified gateway; for instance, this might be a number, the username part of a SIP URI, a complete SIP URI, etc.

Passwords

The password with which to register.

Possible errors

org.freedesktop.Telepathy.Error.NetworkError
(Undocumented.)
org.freedesktop.Telepathy.Error.NotAvailable
(Undocumented.)
org.freedesktop.Telepathy.Error.NotImplemented
(Undocumented.)
org.freedesktop.Telepathy.Error.PermissionDenied
(Undocumented.)

Interface has no signals.

Interface has no Telepathy properties.

Interface has no D-Bus core properties.

org.freedesktop.Telepathy.Gabble.Plugin.Test

A sidecar interface implemented by a plugin used by the test suite.

Interface has no methods.

Interface has no signals.

Interface has no Telepathy properties.

Interface has no D-Bus core properties.

org.freedesktop.Telepathy.Call.Content.DRAFT

This interface is experimental and is likely to cause havoc to your API/ABI if bindings are generated. Don't include it in libraries that care about compatibility.

This object represents one Content inside a Call. For example in an audio/video call there would be one audio and one video content. Each content has one or more Stream.DRAFT objects which represent the actual transport to one or more contacts.

Added in version 0.19.0. (draft 1)

Interface has no methods.

Signals:

StreamAdded ( o: Stream )

Emitted when a stream is added to a call

Parameters

Streamo
The stream which was added

StreamRemoved ( o: Stream )

Emitted when a stream is added to a call

Parameters

Streamo
The stream which was removed

Interface has no Telepathy properties.

D-Bus core Properties:

Accessed using the org.freedesktop.DBus.Properties interface.

Names, read-only

The name of the content. [FIXME: rationale?]

Typeu (Media_Stream_Type), read-only

The media type of this content

Creatoru (Contact_Handle), read-only

The creator of this content

Dispositionu (Call_Content_Disposition), read-only
The disposition of this content. This property cannot change.
Streamsao, read-only

The list of Stream.DRAFT objects that exist in this content.

In a conference call multiple parties can share one media content (say, audio), but the streaming of that media can either be shared or separate. For example, in a multicast conference all contacts would share one stream, while in a Muji conference there would be a stream for each participant.

Change notification is via StreamAdded and StreamRemoved.

Enumerated types:

Call_Content_Disposition

[FIXME]
Call_Content_Disposition_None = 0
The content has no specific disposition
Call_Content_Disposition_Early_Media = 1
[FIXME: what does this mean?]
Call_Content_Disposition_Initial = 2

The content was initially part of the call. When Accept is called on the channel, all streams of this content where the self-handle's sending state in Senders is Sending_State_Pending_Send will be moved to Sending_State_Sending as if SetSending(TRUE) had been called.

org.freedesktop.Telepathy.Call.Content.CodecOffer.DRAFT

This interface is experimental and is likely to cause havoc to your API/ABI if bindings are generated. Don't include it in libraries that care about compatibility.

This object represents an offer of a Codec payload mapping. FIXME add Accept and Reject signals ?

Added in version 0.19.0. (draft 1)

Methods:

Accept ( a(usuua{ss}): Codecs ) → nothing

Accept the updated Codec mapping and update the local mapping

Parameters

Codecsa(usuua{ss}) (Codec[])

Reject ( ) → nothing

Reject the proposed update to the codecs FIXME add error codes and strings here

Interface has no signals.

Interface has no Telepathy properties.

D-Bus core Properties:

Accessed using the org.freedesktop.DBus.Properties interface.

RemoteContactCodecMapa{ua(usuua{ss})} (Contact_Codec_Map), read-only
A map from remote contacts to the lists of codecs they support.

org.freedesktop.Telepathy.Call.Content.Interface.Media.DRAFT

This interface is experimental and is likely to cause havoc to your API/ABI if bindings are generated. Don't include it in libraries that care about compatibility.

Implementations of this interface must also implement:

Interface to use by a software implementation of media streaming. FIXME: How should the streaming implementation know when it is its turn to set the codecs.

Added in version 0.19.0. (draft 1)

Methods:

SetCodecs ( a(usuua{ss}): Codecs ) → nothing

Set or update the local codec mapping.

Parameters

Codecsa(usuua{ss}) (Codec[])
The codecs now supported by the local user.

Signals:

CodecsChanged ( a{ua(usuua{ss})}: Updated_Codecs, au: Removed_Contacts )

Emitted when the codecs in use change.

As well as acting as change notification for the ContactCodecMap, emission of this signal implies that the CodecOffer property has changed to ('/', {}).

Parameters

Updated_Codecsa{ua(usuua{ss})} (Contact_Codec_Map)
A map from contacts to their codecs. Each pair in this map is added to the ContactCodecMap property, replacing any previous pair with that key.
Removed_Contactsau (Contact_Handle[])
A list of keys which were removed from the ContactCodecMap, probably because those contacts left the call.

NewCodecOffer ( o: Offer, a{ua(usuua{ss})}: Codecs )

Emitted when a new CodecOffer.DRAFT appears. The streaming implementation MUST respond by calling the Accept or Reject method on the codec offer object.

Emission of this signal indicates that the CodecOffer property has changed to (Offer, Codecs).

Parameters

Offero
The object path of the new codec offer. This replaces any previous codec offer.
Codecsa{ua(usuua{ss})} (Contact_Codec_Map)

The CodecOffer.DRAFT.RemoteContactCodecMap property of the codec offer.

Having the RemoteContactCodecMap property here saves a D-Bus round-trip - it shouldn't be necessary to get the property from the CodecOffer object, in practice.

Interface has no Telepathy properties.

D-Bus core Properties:

Accessed using the org.freedesktop.DBus.Properties interface.

ContactCodecMapa{ua(usuua{ss})} (Contact_Codec_Map), read-only
A map from contact handles (including the local user's own handle) to the codecs supported by that contact. Change notification is via CodecsChanged.
CodecOffer(oa{ua(usuua{ss})}) (Codec_Offering), read-only

The object path to the current CodecOffer.DRAFT object, and its CodecOffer.DRAFT.RemoteContactCodecMap property. If the object path is "/" then there isn't an outstanding codec offer, and the mapping MUST be empty.

Having the RemoteContactCodecMap property here saves a D-Bus round-trip - it shouldn't be necessary to get the property from the CodecOffer object, in practice.

Change notification is via NewCodecOffer (which replaces the value of this property with a new codec offer), and CodecsChanged (which implies that there is no longer any active codec offer).

Structure types

Codec − ( u: Identifier, s: Name, u: Clockrate, u: Channels, a{ss}: Parameters )

A description of a codec.

In bindings that need a separate name, arrays of Codec should be called Codec_List.

Members

Identifieru
Numeric identifier for the codec. This will be used as the PT in the SDP or content description.
Names
The name of the codec.
Clockrateu
The clockrate of the codec
Channelsu
Number of channels of the codec if applicable, otherwise 0
Parametersa{ss}
Extra parameters for this codec

Codec_Offering − ( o: Codec_Offer, a{ua(usuua{ss})}: Remote_Contact_Codec_Map )

A codec offer and its corresponding remote contact codec map.

Arrays of Codec_Offering don't generally make sense.

Members

Codec_Offero
The object path to the CodecOffer.DRAFT
Remote_Contact_Codec_Mapa{ua(usuua{ss})} (Contact_Codec_Map)
The CodecOffer.DRAFT.RemoteContactCodecMap property of the codec offer.

Mapping types

Contact_Codec_Map − a{ u: Handle → a(usuua{ss}): Codecs }

A map from contacts to the lists of codecs they support.

Members

Handleu (Contact_Handle)
A contact
Codecsa(usuua{ss}) (Codec[])
The codecs that the contact supports

org.freedesktop.Telepathy.Call.Stream.DRAFT

This interface is experimental and is likely to cause havoc to your API/ABI if bindings are generated. Don't include it in libraries that care about compatibility.

One stream inside a content FIXME, direction should be a mapping of contact -> (bool)sending ?

Added in version 0.19.0. (draft 1)

Methods:

SetSending ( b: Send ) → nothing

Parameters

Sendb

If true, the local user's sending state should change to Sending, if it isn't already.

If false, the local user's sending state should change to None, if it isn't already.

Possible errors

org.freedesktop.Telepathy.Error.NotImplemented
[FIXME: when?]

RequestReceiving ( u: Contact, b: Receive ) → nothing

Request that a remote contact stops or starts sending on this stream.

Parameters

Contactu (Contact_Handle)

Contact from which sending is requested

Receiveb

If true, request that the given contact starts to send media. If false, request that the given contact stops sending media.

Possible errors

org.freedesktop.Telepathy.Error.NotImplemented
[FIXME: when?]

Signals:

SendersChanged ( a{uu}: Updates, au: Removed )

Emitted when Senders changes.

Parameters

Updatesa{uu} (Contact_Sending_State_Map)
A mapping from channel-specific handles to their updated sending state, whose keys include at least the senders who were added, and the senders whose states changed.
Removedau (Contact_Handle[])
The channel-specific handles that were removed from the keys of the Senders property, as a result of the contact leaving this stream

Interface has no Telepathy properties.

D-Bus core Properties:

Accessed using the org.freedesktop.DBus.Properties interface.

Sendersa{uu} (Contact_Sending_State_Map), read-only

A map from contacts to their sending state.

The local user's handle in this map (the Group.SelfHandle if the channel implements Group, or the Connection.SelfHandle otherwise) indicates whether the local user is sending media. Media sent on this stream should be assumed to be received, directly or indirectly, by every other contact in the Senders mapping. Sending_State_Pending_Send indicates that another contact has asked the local user to send media.

Other contacts' handles in this map indicate whether they are sending media to the contacts in this stream. Sending_State_Pending_Send indicates contacts who are not sending but have been asked to do so.

Enumerated types:

Sending_State

Tristate indicating whether a contact is sending media.
Sending_State_None = 0
The contact is not sending media and has not been asked to do so.
Sending_State_Pending_Send = 1
The contact has been asked to start sending media.
Sending_State_Sending = 2
The contact is sending media.

Mapping types

Contact_Sending_State_Map − a{ u: Contact → u: Sending }

A map from contacts to their sending state.

Members

Contactu (Contact_Handle)
(undocumented)
Sendingu (Sending_State)

org.freedesktop.Telepathy.Call.Stream.Endpoint.DRAFT

This interface is experimental and is likely to cause havoc to your API/ABI if bindings are generated. Don't include it in libraries that care about compatibility.

This object represents a set of candidates of one end-point.

Added in version 0.19.0. (draft 1)

Methods:

SetSelectedCandidate ( (usqa{sv}): Candidate ) → nothing

Parameters

Candidate(usqa{sv}) (Candidate)

SetStreamState ( u: State ) → nothing

Parameters

Stateu (Media_Stream_State)

Signals:

RemoteCredentialsSet ( s: Username, s: Password )

Parameters

Usernames
Passwords

RemoteCandidatesAdded ( a(usqa{sv}): Candidates )

Parameters

Candidatesa(usqa{sv}) (Candidate[])

CandidateSelected ( (usqa{sv}): Candidate )

Parameters

Candidate(usqa{sv}) (Candidate)

StreamStateChanged ( u: state )

Parameters

stateu (Media_Stream_State)

Interface has no Telepathy properties.

D-Bus core Properties:

Accessed using the org.freedesktop.DBus.Properties interface.

RemoteCredentials(ss) (Stream_Credentials), read-only
RemoteCandidatesa(usqa{sv}) (Candidate[]), read-only
SelectedCandidate(usqa{sv}) (Candidate), read-only
StreamStateu (Media_Stream_State), read-only
Transportu (Stream_Transport_Type), read-only

org.freedesktop.Telepathy.Call.Stream.Interface.Media.DRAFT

This interface is experimental and is likely to cause havoc to your API/ABI if bindings are generated. Don't include it in libraries that care about compatibility.

Implementations of this interface must also implement:

[FIXME]

Added in version 0.19.0. (draft 1)

Methods:

AddCandidates ( a(usqa{sv}): candidates ) → nothing

Add candidates to LocalCandidates and signal them to the remote contact(s).

Parameters

candidatesa(usqa{sv}) (Candidate[])
Candidates to be appended to LocalCandidates

CandidatesPrepared ( ) → nothing

This indicates to the CM that the initial batch of candidates has been added.
[FIXME: rationale]

Signals:

LocalCandidatesAdded ( a(usqa{sv}): Candidates )

Emitted when local candidates are added to LocalCandidates.

Parameters

Candidatesa(usqa{sv}) (Candidate[])
Candidates that have been appended to LocalCandidates

LocalCredentialsSet ( s: Username, s: Password )

Emitted when the value of LocalCredentials changes.

Parameters

Usernames
Passwords

ServerInfoRetrieved ( )

Signals that the initial information about STUN and Relay servers has been retrieved, i.e. the RetrievedServerInfo property is now true.

EndpointsChanged ( ao: EndpointsAdded, ao: EndpointsRemoved )

Emitted when the Endpoints property changes.

Parameters

EndpointsAddedao
Endpoints that were added.
EndpointsRemovedao
Endpoints that no longer exist.

Interface has no Telepathy properties.

D-Bus core Properties:

Accessed using the org.freedesktop.DBus.Properties interface.

Transportu (Stream_Transport_Type), read-only
The transport for this stream. This property is immutable.
LocalCandidatesa(usqa{sv}) (Candidate[]), read-only
[FIXME]. Change notification is via LocalCandidatesAdded.
LocalCredentials(ss) (Stream_Credentials), read-only
[FIXME]. Change notification is via LocalCredentialsSet.
STUNServersa(sq) (Socket_Address_IP[]), read-only
The IP addresses of possible STUN servers to use for NAT traversal, as dotted-quad IPv4 address literals or RFC2373 IPv6 address literals. This property cannot change once the stream has been created, so there is no change notification. The IP addresses MUST NOT be given as DNS hostnames.
High-quality connection managers already need an asynchronous DNS resolver, so they might as well resolve this name to an IP to make life easier for streaming implementations.
RelayInfoaa{sv} (String_Variant_Map[]), read-only

A list of mappings describing TURN or Google relay servers available for the client to use in its candidate gathering, as determined from the protocol. Map keys are:

ip - s
The IP address of the relay server as a dotted-quad IPv4 address literal or an RFC2373 IPv6 address literal. This MUST NOT be a DNS hostname.
High-quality connection managers already need an asynchronous DNS resolver, so they might as well resolve this name to an IP and make life easier for streaming implementations.
type - s

Either udp for UDP (UDP MUST be assumed if this key is omitted), tcp for TCP, or tls.

The precise meaning of this key depends on the Transport property: if Transport is ICE, tls means TLS over TCP as referenced by ICE draft 19, and if Transport is GTalk_P2P, tls means a fake SSL session over TCP as implemented by libjingle.

port - q
The UDP or TCP port of the relay server as an ASCII unsigned integer
username - s
The username to use
password - s
The password to use
component - u
The component number to use this relay server for, as an ASCII unsigned integer; if not included, this relay server may be used for any or all components.
In ICE draft 6, as used by Google Talk, credentials are only valid once, so each component needs relaying separately.

An equivalent of the gtalk-p2p-relay-token property on MediaSignalling channels is not included here. The connection manager should be responsible for making the necessary HTTP requests to turn the token into a username and password.

The type of relay server that this represents depends on the value of the Transport property. If Transport is ICE, this is a TURN server; if Transport is GTalk_P2P, this is a Google relay server; otherwise, the meaning of RelayInfo is undefined.

If relaying is not possible for this stream, the list is empty.

RetrievedServerInfob, read-only

True if the initial information about STUN servers and Relay servers has been retrieved. Change notification is via the ServerInfoRetrieved signal.

Streaming implementations that can't cope with STUN and relay servers being added later SHOULD wait for this property to become true before proceeding.

Endpointsao, read-only

Enumerated types:

Stream_Transport_Type

A transport that can be used for streaming.
Stream_Transport_Type_Raw_UDP = 0
Raw UDP, with or without STUN. All streaming clients are assumed to support this transport, so there is no handler capability token for it in the Call.DRAFT interface. [This corresponds to "none" or "stun" in the old Media.StreamHandler interface.]
Stream_Transport_Type_ICE = 1
Interactive Connectivity Establishment, as defined by the IETF MMUSIC working group. [FIXME: do we want this to cover both ICE-UDP and ICE-TCP, or split them?] [This corresponds to "ice-udp" in the old Media.StreamHandler interface.]
Stream_Transport_Type_GTalk_P2P = 2
Google Talk peer-to-peer connectivity establishment, as implemented by libjingle 0.3. [This corresponds to "gtalk-p2p" in the old Media.StreamHandler interface.]
Stream_Transport_Type_WLM_8_5 = 3
The transport used by Windows Live Messenger 8.5 or later, which resembles ICE draft 6. [This corresponds to "wlm-8.5" in the old Media.StreamHandler interface.]
Stream_Transport_Type_WLM_2009 = 4
The transport used by Windows Live Messenger 2009 or later, which resembles ICE draft 19. [This corresponds to "wlm-2009" in the old Media.StreamHandler interface.]

Structure types

Candidate − ( u: Component, s: IP, q: Port, a{sv}: Info )

A Stream Candidate

In bindings that need a separate name, arrays of Candidate should be called Candidate_List.

Members

Componentu
The component number
IPs
The IP address to use
Portq
The port number to use
Infoa{sv} (Candidate_Info)
Additional information about the candidate

Stream_Credentials − ( s: Username, s: Password )

A username/password pair.

Arrays of Stream_Credentials don't generally make sense.

Members

Usernames
The username
Passwords
The password

Mapping types

Candidate_Info − a{ s: Key → v: Value }

Extra information about the candidate. Allowed and mandatory keys depend on the transport protocol used. The following keys are commenly used:
Type (u)
type of candidate (host, srflx, prflx, relay)
Foundation (s)
the foundation of this candiate
Protocol (u)
Underlying protocol of the candidate (udp, tcp)
Priority (u)
Priority of the candidate
BaseIP (u)
Base IP of this candidate
Username (s)
Username of this candidate (only if credentials are per candidate)
Password (s)
Password of this candidate (only if credentials are per candidate)
RawUDPFallback (b)
Indicate whether this candidate may be used to provide a UDP fallback

Members

Keys
One of the well-known keys documented here, or an implementation-specific key
Valuev
The value corresponding to that key

org.freedesktop.Telepathy.Channel.Type.Call.DRAFT

This interface is experimental and is likely to cause havoc to your API/ABI if bindings are generated. Don't include it in libraries that care about compatibility.

Implementations of this interface must also implement:

A channel type for making audio and video calls.

A Call channel can have one or more Content.DRAFT objects, which represent the actual Media that forms the Call (e.g. an audio content and a video content).

Added in version 0.19.0. (draft 1)

Methods:

Ringing ( ) → nothing

Indicate that the local user has been alerted about the incoming call.

This method is only useful if the channel's Requested property is false, and the CallState is Call_State_Pending_Initiator. While this is the case, this method SHOULD change the CallFlags to include Call_Flag_Ringing, and notify the remote contact that the local user has been alerted (if the protocol implements this); repeated calls to this method SHOULD succeed, but have no further effect.

In all other states, this method SHOULD fail with the error NotAvailable.

Possible errors

org.freedesktop.Telepathy.Error.InvalidArgument
The call was Requested, so ringing does not make sense.
org.freedesktop.Telepathy.Error.NotAvailable
The call is no longer in state Call_State_Pending_Initiator.

Accept ( ) → nothing

For incoming calls in state Call_State_Pending_Receiver, accept the incoming call; this changes the CallState to Call_State_Accepted.

For outgoing calls in state Call_State_Pending_Initiator, actually call the remote contact; this changes the CallState to Call_State_Pending_Receiver.

Otherwise, this method SHOULD fail with the error NotAvailable.

This method should be called exactly once per Call, by whatever client (user interface) is handling the channel.

When this method is called, for each Content.DRAFT whose Disposition is Call_Content_Disposition_Initial, any streams where the self-handle's sending state in Senders is Sending_State_Pending_Send will be moved to Sending_State_Sending as if SetSending(TRUE) had been called.

Possible errors

org.freedesktop.Telepathy.Error.NotAvailable
The call is not in one of the states where this method makes sense.

Hangup ( u: Reason, s: Detailed_Hangup_Reason, s: Message ) → nothing

Request that the call is ended.

Parameters

Reasonu (Call_State_Change_Reason)
A generic hangup reason.
Detailed_Hangup_Reasons (DBus_Error_Name)
A more specific reason for the call hangup, if one is available, or an empty string otherwise.
Messages
A human-readable message to be sent to the remote contact(s).
XMPP Jingle allows calls to be terminated with a human-readable message.

Possible errors

org.freedesktop.Telepathy.Error.NotAvailable
The call has already been ended.

AddContent ( s: Content_Name, u: Content_Type ) → o

[FIXME]

Parameters

Content_Names
The suggested name of the content to add
[FIXME: rationale]
Content_Typeu (Media_Stream_Type)
The media type of the content to add

Returns

Contento
Path to the newly-created Call.Content.DRAFT object.

Possible errors

org.freedesktop.Telepathy.Error.InvalidArgument
[FIXME: when?]
org.freedesktop.Telepathy.Error.NotImplemented
[FIXME: when?]

Signals:

ContentAdded ( o: Content, u: Content_Type )

Emitted when a new Content.DRAFT is added to the call.

Parameters

Contento
Path to the newly-created Content.DRAFT object.
Content_Typeu (Media_Stream_Type)
The media type of the content which was added

ContentRemoved ( o: Content )

Emitted when a Content.DRAFT is removed from the call.

Parameters

Contento
The Content.DRAFT which was removed.

CallStateChanged ( u: Call_State, u: Call_Flags, (uus): Call_State_Reason, a{sv}: Call_State_Details )

Emitted when the state of the call as a whole changes.

This signal is emitted for any change in the properties corresponding to its arguments, even if the other properties referenced remain unchanged.

Parameters

Call_Stateu (Call_State)
The new value of the CallState property.
Call_Flagsu (Call_Flags)
The new value of the CallFlags property.
Call_State_Reason(uus)
The new value of the CallStateReason property.
Call_State_Detailsa{sv}
The new value of the CallStateDetails property.

CallMembersChanged ( a{uu}: Flags_Changed, au: Removed )

Emitted when the CallMembers property changes in any way, either because contacts have been added to the call, contacts have been removed from the call, or contacts' flags have changed.

Parameters

Flags_Changeda{uu} (Call_Member_Map)
A map from members of the call to their new call member flags, including at least the members who have been added to CallMembers, and the members whose flags have changed.
Removedau (Contact_Handle[])
A list of members who have left the call, i.e. keys to be removed from CallMembers.

Interface has no Telepathy properties.

D-Bus core Properties:

Accessed using the org.freedesktop.DBus.Properties interface.

Contentsao, read-only

The list of Content.DRAFT objects that are part of this call. Change notification is via the ContentAdded and ContentRemoved signals.

CallStateDetailsa{sv}, read-only

A map used to provide optional extensible details for the CallState, CallFlags and/or CallStateReason.

Well-known keys and their corresponding value types include:

hangup-message - s
An optional human-readable message sent when the call was ended, corresponding to the Message argument to the Hangup method. This is only applicable when the call state is Call_State_Ended.
XMPP Jingle can send such messages.
queue-message - s
An optional human-readable message sent when the local contact is being held in a queue. This is only applicable when Call_Flag_Queued is in the call flags.
SIP 182 notifications can have human-readable messages attached.
debug-message - s
A message giving further details of any error indicated by the CallStateReason. This will not normally be localized or suitable for display to users, and is only applicable when the call state is Call_State_Ended.
CallStateu (Call_State), read-only

The current high-level state of this call. The CallFlags provide additional information, and the CallStateReason and CallStateDetails explain the reason for the current values for those properties.

Clients MAY consider unknown values in this property to be an error.

CallFlagsu (Call_Flags), read-only

Flags representing the status of the call as a whole, providing more specific information than the CallState.

Clients are expected to ignore unknown flags in this property, without error.

CallStateReason(uus) (Call_State_Reason), read-only

The reason for the last change to the CallState and/or CallFlags. The CallStateDetails MAY provide additional information.

HardwareStreamingb, read-only

If this property is TRUE, all of the media streaming is done by some mechanism outside the scope of Telepathy.

A connection manager might be intended for a specialized hardware device, which will take care of the audio streaming (e.g. telepathy-yafono, which uses GSM hardware which does the actual audio streaming for the call).

If this is FALSE, the handler is responsible for doing the actual media streaming for at least some contents itself. Those contents will have the Media.DRAFT interface, to communicate the necessary information to a streaming implementation. Connection managers SHOULD operate like this, if possible.

Many connection managers (such as telepathy-gabble) only do the call signalling, and expect the client to do the actual streaming using something like Farsight, to improve latency and allow better UI integration.

CallMembersa{uu} (Call_Member_Map), read-only
A mapping from the remote contacts that are part of this call to flags discribing their status. This mapping never has the local user's handle as a key.
InitialTransports, read-only

If set on a requested channel this indicates the transport that should be used for this call.

When implementing a voip gateway one wants the outgoing leg of the gatewayed to have the same transport as the incoming leg. This property allows the gateway to request a Call with the right transport from the CM.

InitialAudiob, read-only

If set to true in a channel request that will create a new channel, the connection manager should immediately attempt to establish an audio stream to the remote contact, making it unnecessary for the client to call AddContent.

If this property, or InitialVideo, is passed to EnsureChannel (as opposed to CreateChannel), the connection manager SHOULD ignore these properties when checking whether it can return an existing channel as suitable; these properties only become significant when the connection manager has decided to create a new channel.

If true on a requested channel, this indicates that the audio stream has already been requested and the client does not need to call RequestStreams, although it MAY still do so.

If true on an unrequested (incoming) channel, this indicates that the remote contact initially requested an audio stream; this does not imply that that audio stream is still active (as indicated by Contents).

This property is immutable (cannot change), and therefore SHOULD appear wherever immutable properties are reported, e.g. NewChannels signals.

This reduces D-Bus round trips.

Connection managers capable of signalling audio calls to contacts SHOULD include a channel class in RequestableChannelClasses with ChannelType Call.DRAFT and TargetHandleType = Contact in the fixed properties dictionary, and InitialAudio (and also InitialVideo, if applicable) in the allowed properties list. Clients wishing to discover whether a connection manager can signal audio and/or video calls SHOULD use this information.

Not all protocols support signalling video calls, and it would be possible (although unlikely) to have a protocol where only video, and not audio, could be signalled.

Connection managers that support the ContactCapabilities interface SHOULD represent the capabilities of receiving audio and/or video calls by including a channel class in a contact's capabilities with ChannelType = Call in the fixed properties dictionary, and InitialAudio and/or InitialVideo in the allowed properties list. Clients wishing to discover whether a particular contact is likely to be able to receive audio and/or video calls SHOULD use this information.

Not all clients support video calls, and it would also be possible (although unlikely) to have a client which could only stream video, not audio.

Clients that are willing to receive audio and/or video calls SHOULD include the following among their channel classes if calling UpdateCapabilities (clients of a ChannelDispatcher SHOULD instead arrange for the ChannelDispatcher to do this, by including the filters in their HandlerChannelFilter properties):

Connection managers for protocols with capability discovery, like XMPP, need this information to advertise the appropriate capabilities for their protocol.

InitialVideob, read-only

The same as InitialAudio, but for a video stream. This property is immutable (cannot change).

In particular, note that if this property is false, this does not imply that an active video stream has not been added, only that no video stream was active at the time the channel appeared.

This property is the correct way to discover whether connection managers, contacts etc. support video calls; it appears in capabilities structures in the same way as InitialAudio.

MutableContentsb, read-only

If True, a stream of a different content type can be added after the Channel has been requested

If this property is missing, clients SHOULD assume that it is false, and thus that the channel's streams cannot be changed once the call has started.

If this property isn't present in the "allowed" set in any of the Call entries contact capabilities, then user interfaces MAY choose to show a separate "call" option for each class of call.

For example, once an audio-only Google Talk call has started, it is not possible to add a video stream; both audio and video must be requested at the start of the call if video is desired. User interfaces may use this pseudo-capability as a hint to display separate "Audio call" and "Video call" buttons, rather than a single "Call" button with the option to add and remove video once the call has started for contacts without this flag.

This property is immutable, and therefore SHOULD be announced in NewChannels, etc.

Enumerated types:

Call_State

The state of a call, as a whole.

The allowed transitions are:

Clients MAY consider unknown values from this enum to be an error - additional values will not be defined after the Call specification is declared to be stable.

Call_State_Unknown = 0
The call state is not known. This call state MUST NOT appear as a value of the CallState property, but MAY be used by client code to represent calls whose state is as yet unknown.
Call_State_Pending_Initiator = 1
The initiator of the call hasn't accepted the call yet. This state only makes sense for outgoing calls, where it means that the local user has not yet sent any signalling messages to the remote user(s), and will not do so until Accept is called.
Call_State_Pending_Receiver = 2
The receiver (the contact being called) hasn't accepted the call yet.
Call_State_Accepted = 3
The contact being called has accepted the call.
Call_State_Ended = 4
The call has ended, either via normal termination or an error.

Call_State_Change_Reason

A simple representation of the reason for a change in the call's state, which may be used by simple clients, or used as a fallback when the DBus_Reason member of a Call_State_Reason struct is not understood.
Call_State_Change_Reason_Unknown = 0
We just don't know. Unknown values of this enum SHOULD also be treated like this.
Call_State_Change_Reason_User_Requested = 1

The change was requested by the contact indicated by the Actor member of a Call_State_Reason struct.

If the Actor is the local user, the DBus_Reason SHOULD be the empty string.

If the Actor is a remote user, the DBus_Reason SHOULD be the empty string if the call was terminated normally, but MAY be a non-empty error name to indicate error-like call termination reasons (call rejected as busy, kicked from a conference by a moderator, etc.).

Sets of flags:

Call_Flags

A set of flags representing the status of the call as a whole, providing more specific information than the CallState. Many of these flags only make sense in a particular state.
Call_Flag_Locally_Ringing = 1
The local contact has been alerted about the call but has not responded; if possible, the remote contact(s) have been informed of this fact. This flag only makes sense on incoming calls in state Call_State_Pending_Receiver. It SHOULD be set when Ringing is called successfully, and unset when the state changes.
Call_Flag_Queued = 2
The contact is temporarily unavailable, and the call has been placed in a queue (e.g. 182 Queued in SIP, or call-waiting in telephony). This flag only makes sense on outgoing 1-1 calls in state Call_State_Pending_Receiver. It SHOULD be set or unset according to informational messages from other contacts.
Call_Flag_Locally_Held = 4
The call has been put on hold by the local user, e.g. using the Hold interface. This flag SHOULD only be set if there is at least one Content, and all Contents are locally held; it makes sense on calls in state Call_State_Pending_Receiver or Call_State_Accepted.
Otherwise, in transient situations where some but not all contents are on hold, UIs would falsely indicate that the call as a whole is on hold, which could lead to the user saying something they'll regret, while under the impression that the other contacts can't hear them!
Call_Flag_Forwarded = 8
The initiator of the call originally called a contact other than the current recipient of the call, but the call was then forwarded or diverted. This flag only makes sense on outgoing calls, in state Call_State_Pending_Receiver or Call_State_Accepted. It SHOULD be set or unset according to informational messages from other contacts.
Call_Flag_In_Progress = 16
Progress has been made in placing the outgoing call, but the contact may not have been made aware of the call yet (so the Ringing state is not appropriate). This corresponds to SIP's status code 183 Session Progress, and could be used when the outgoing call has reached a gateway, for instance. This flag only makes sense on outgoing calls in state Call_State_Pending_Receiver, and SHOULD be set or unset according to informational messages from servers, gateways and other infrastructure.
Call_Flag_Clearing = 32
This flag only occurs when the CallState is Ended. The call with this flag set has ended, but not all resources corresponding to the call have been freed yet. Depending on the protocol there might be some audible feedback while the clearing flag is set.
In calls following the ITU-T Q.931 standard there is a period of time between the call ending and the underlying channel being completely free for re-use.

Call_Member_Flags

A set of flags representing the status of a remote contact in a call.

It is protocol- and client-specific whether a particular contact will ever have a particular flag set on them, and Telepathy clients SHOULD NOT assume that a flag will ever be set.

180 Ringing in SIP, and its equivalent in XMPP, are optional informational messages, and implementations are not required to send them. The same applies to the messages used to indicate hold state.

Call_Member_Flag_Ringing = 1

The remote contact's client has told us that the contact has been alerted about the call but has not responded.

This is a flag per member, not a flag for the call as a whole, because in Muji conference calls, you could invite someone and have their state be "ringing" for a while.

Call_Member_Flag_Held = 2

The call member has put this call on hold.

This is a flag per member, not a flag for the call as a whole, because in conference calls, any member could put the conference on hold.

Structure types

Call_State_Reason − ( u: Actor, u: Reason, s: DBus_Reason )

A description of the reason for a change to the CallState and/or CallFlags.

Arrays of Call_State_Reason don't generally make sense.

Members

Actoru (Contact_Handle)
The contact responsible for the change, or 0 if no contact was responsible.
Reasonu (Call_State_Change_Reason)
The reason, chosen from a limited set of possibilities defined by the Telepathy specification.
DBus_Reasons (DBus_Error_Name)

A specific reason for the change, which may be a D-Bus error in the Telepathy namespace, a D-Bus error in any other namespace (for implementation-specific errors), or the empty string to indicate that the state change was not an error.

This SHOULD be an empty string for changes to any state other than Ended.

The errors Cancelled and Terminated SHOULD NOT be used here; an empty string SHOULD be used instead.

Those error names are used to indicate normal call termination by the local user or another user, respectively, in contexts where a D-Bus error name must appear.

Mapping types

Call_Member_Map − a{ u: key → u: Flag }

A mapping from handles to their current state in the call.

In bindings that need a separate name, arrays of Call_Member_Map should be called Call_Member_Map_List.

Members

keyu (Handle)
(undocumented)
Flagu (Call_Member_Flags)
(undocumented)

org.freedesktop.Telepathy.Channel.Type.ServerAuthentication.DRAFT

This interface is experimental and is likely to cause havoc to your API/ABI if bindings are generated. Don't include it in libraries that care about compatibility.

Implementations of this interface must also implement:

An interface for SASL authentication.

Interface has no methods.

Interface has no signals.

Interface has no Telepathy properties.

D-Bus core Properties:

Accessed using the org.freedesktop.DBus.Properties interface.

AuthenticationInformationa{sv}, read-only
Dictionary of information given by the CM which can be used by the handler for authentication.
AuthenticationMethodu (Authentication_Type), read-only
This property defines the Method used for the current authentication step. The method also defines which Interfaces the channel implements. For exmaple if for the SASL method the SaslAuthentication interface needs to be implemented.

Enumerated types:

Authentication_Type

Authentication_Type_Sasl = 0
SASL authentication.
Authentication_Type_Captcha = 1
Captcha authentication.

Mapping types

AuthDetails − a{ s: Key → v: Value }

An extensible map representing details provided by the server for authentication.

In bindings that need a separate name, arrays of AuthDetails should be called AuthDetails_List.

Members

Keys

Well-known keys:

username
string, Username to authenticate with if needed
realm
string, Realm to use for authentication if needed
session-id
XMPP session id as needed for the legacy jabber digest method.

Valuev
(undocumented)

org.freedesktop.Telepathy.Channel.Interface.SaslAuthentication.DRAFT

This interface is experimental and is likely to cause havoc to your API/ABI if bindings are generated. Don't include it in libraries that care about compatibility.

Implementations of this interface must also implement:

A channel interface for SASL authentication.

Methods:

StartMechanism ( s: Mechanism, ay: InitialData ) → nothing

Start an authentication try using Mechanism. If the choosen SASL mechanism is client-first then the first data must be passed in InitialData, otherwise InitialData must be an empty array.

Parameters

Mechanisms
The chosen mechanism.
InitialDataay
Initial data to send with the mechanism.

Respond ( ay: Response_Data ) → nothing

Our response to the CurrentChallenge if required.

Parameters

Response_Dataay
The response data.

Accept ( ) → nothing

Handler accepts the authentication as finished. Can be called whenever the Handler considered the authentication process to be (successfully) finished from its part.

Abort ( u: Reason, s: Debug_Message ) → nothing

Abort the current authentication try.

Parameters

Reasonu (Abort_Reason)
Reason for abort.
Debug_Messages
Debug message for abort.

Signals:

StateChanged ( u: Status, s: Reason, s: DebugMessage )

Notifies of CurrentState changing

Parameters

Statusu (Sasl_Status)
The status of the state.
Reasons (DBus_Error_Name)
The reason for the state.
DebugMessages
A non-localized debug message.

NewChallenge ( ay: ChallengeData )

Recieved a new challenge from the server.

Parameters

ChallengeDataay
The challenge data from the server.

Interface has no Telepathy properties.

D-Bus core Properties:

Accessed using the org.freedesktop.DBus.Properties interface.

AvailableMechanismsas, read-only
Example: [ "PLAIN", "DIGEST-MD5", "SCRAM-SHA-1" ] The SASL mechanisms as offered by the server.
Secureb, read-only
Is this exchange secure (ie. TLS)? Good to know if you need to take a calculated risk with plaintext.
CurrentChallengeay, read-only
The current challenge from the server. change notification via NewChallenge. The handler either needs to respond by calling Respond (if it needs to send reply data), Accept (If the challenge contained final data) or Abort (in case of errors).
CurrentState(uss) (Sasl_State), read-only
The current state of the authentication. Change notification via StateChanged signal.

Enumerated types:

Abort_Reason

Abort_Reason_Invalid_Challenge = 0
Server sent an invalid challenge or data.
Abort_Reason_User_Abort = 1
User aborted the authentication.

Sasl_Status

Sasl_Status_Not_Started = 0
Need to call StartMechanism to start.
Sasl_Status_In_Progress = 1
Challenge/Response cycle in progress
Sasl_Status_Server_Succeeded = 2
Server indicated successful authentication, handler needs to Accept or Abort.
Sasl_Status_Client_Accepted = 3
Handler indicates that from its perspective the authentication has successfully finished.
Sasl_Status_Succeeded = 4
Everyone is happy (server sent success, client sent Accept), up to the handler to close the channel.
Sasl_Status_Server_Failed = 5
Server indicated an authentication failure, Authentication can be restarted by calling StartMechanism again or completely aborted by Closing the channel.
Sasl_Status_Client_Failed = 6
Client indicated an authentication failure, Authentication can be restarted by calling StartMechanism again or completely aborted by Closing the channel.

Structure types

Sasl_State − ( u: Status, s: Reason, s: DebugMessage )

Arrays of Sasl_State don't generally make sense.

Members

Statusu (Sasl_Status)
The status of the state.
Reasons (DBus_Error_Name)
The reason for the state.
DebugMessages
A non-localized debug message.

Generic types

Types defined elsewhere

Room_Handle − u
Defined by: Telepathy specification
Handle_Type − u
Defined by: Telepathy specification
Contact_Handle − u
Defined by: Telepathy specification
DBus_Unique_Name − s
Defined by: Telepathy specification

Generic types

Simple types

Handle − u

An unsigned 32-bit integer representing a handle

Enumerated types:

Media_Stream_Type

Media_Stream_Type_Audio = 0
An audio stream
Media_Stream_Type_Video = 1
A video stream

Media_Stream_State

Media_Stream_State_Disconnected = 0
The stream is disconnected.
Media_Stream_State_Connecting = 1
The stream is trying to connect.
Media_Stream_State_Connected = 2
The stream is connected.

Structure types

Socket_Address_IP − ( s: Address, q: Port )

An IP address and port.

In bindings that need a separate name, arrays of Socket_Address_IP should be called Socket_Address_IP_List.

Members

Addresss
Either a dotted-quad IPv4 address literal as for Socket_Address_IPv4, or an RFC2373 IPv6 address as for Socket_Address_IPv6.
Portq
The TCP or UDP port number.

Socket_Address_IPv4 − ( s: Address, q: Port )

An IPv4 address and port.

Arrays of Socket_Address_IPv4 don't generally make sense.

Members

Addresss
A dotted-quad IPv4 address literal: four ASCII decimal numbers, each between 0 and 255 inclusive, e.g. "192.168.0.1".
Portq
The TCP or UDP port number.

Socket_Address_IPv6 − ( s: Address, q: Port )

An IPv6 address and port.

Arrays of Socket_Address_IPv6 don't generally make sense.

Members

Addresss
An IPv6 address literal as specified by RFC2373 section 2.2, e.g. "2001:DB8::8:800:200C:4171".
Portq
The TCP or UDP port number.

Types defined elsewhere

Contact_Handle − u
Defined by: Telepathy specification
DBus_Interface − s
Defined by: Telepathy specification
DBus_Qualified_Member − s
Defined by: Telepathy specification
Qualified_Property_Value_Map − a{sv}
Defined by: Telepathy specification
DBus_Error_Name − s
Defined by: Telepathy specification
DBus_Well_Known_Name − s
Defined by: Telepathy specification
Handler_Capability_Token − s
Defined by: Telepathy specification
VCard_Field − s
Defined by: Telepathy specification
VCard_Type_Parameter − s
Defined by: Telepathy specification
Contact_Info_Field − (sasas)
Defined by: Telepathy specification
Rich_Presence_Access_Control_Type − u
Defined by: Telepathy specification
Rich_Presence_Access_Control − (uv)
Defined by: Telepathy specification
Unix_Timestamp64 − t
Defined by: Telepathy specification
Unix_Timestamp − u
Defined by: Telepathy specification
String_String_Map − a{ss}
Defined by: Telepathy specification
String_Variant_Map − a{sv}
Defined by: Telepathy specification
Channel_Class − a{sv}
Defined by: Telepathy specification
Socket_Address_Type − u
Defined by: Telepathy specification
Socket_Access_Control − u
Defined by: Telepathy specification
Supported_Socket_Map − a{uau}
Defined by: Telepathy specification
DBus_Tube_Member − (us)
Defined by: Telepathy specification
Requestable_Channel_Class − (a{sv}as)
Defined by: Telepathy specification
Connection_Status − u
Defined by: Telepathy specification

Index

Index of interfaces

Index of types