Telepathy protocol enumerations

## Telepathy protocol enumerations Telepathy protocol enumerations — Enumerated types and bitfields from the Telepathy spec |

## Synopsis

    #include <telepathy-glib/enums.h>

    enum                TpHandleType;
    #define             NUM_TP_HANDLE_TYPES
    enum                TpConnMgrParamFlags;
    enum                TpConnectionStatus;
    #define             NUM_TP_CONNECTION_STATUSES
    enum                TpConnectionStatusReason;
    #define             NUM_TP_CONNECTION_STATUS_REASONS
    enum                TpConnectionAliasFlags;
    enum                TpConnectionCapabilityFlags;
    enum                TpConnectionPresenceType;
    #define             NUM_TP_CONNECTION_PRESENCE_TYPES
    enum                TpDTMFEvent;
    #define             NUM_TP_DTMF_EVENTS
    enum                TpMediaStreamType;
    #define             NUM_TP_MEDIA_STREAM_TYPES
    enum                TpMediaStreamState;
    #define             NUM_TP_MEDIA_STREAM_STATES
    enum                TpMediaStreamDirection;
    #define             NUM_TP_MEDIA_STREAM_DIRECTIONS
    enum                TpMediaStreamPendingSend;
    enum                TpChannelMediaCapabilities;
    enum                TpChannelTextSendError;
    #define             NUM_TP_CHANNEL_TEXT_SEND_ERRORS
    enum                TpChannelTextMessageType;
    #define             NUM_TP_CHANNEL_TEXT_MESSAGE_TYPES
    enum                TpChannelTextMessageFlags;
    enum                TpChannelChatState;
    #define             NUM_TP_CHANNEL_CHAT_STATES
    enum                TpChannelGroupFlags;
    enum                TpChannelGroupChangeReason;
    #define             NUM_TP_CHANNEL_GROUP_CHANGE_REASONS
    enum                TpChannelPasswordFlags;
    enum                TpMediaStreamError;
    #define             NUM_TP_MEDIA_STREAM_ERRORS
    enum                TpMediaStreamBaseProto;
    #define             NUM_TP_MEDIA_STREAM_BASE_PROTOS
    enum                TpMediaStreamTransportType;
    #define             NUM_TP_MEDIA_STREAM_TRANSPORT_TYPES
    enum                TpPropertyFlags;
    #define             NUM_TP_SOCKET_ACCESS_CONTROLS
    enum                TpSocketAccessControl;
    #define             NUM_TP_SOCKET_ADDRESS_TYPES
    enum                TpSocketAddressType;
    #define             NUM_TP_TUBE_STATES
    enum                TpTubeState;
    #define             NUM_TP_TUBE_TYPES
    enum                TpTubeType;

## Description

This header exposes the constants from the Telepathy specification as C enums. It is automatically generated from the specification.

The names used in the specification (e.g. Connection_Status_Connected) are converted to upper-case and given a TP_ prefix, e.g. TP_CONNECTION_STATUS_CONNECTED.

Each enum also has a constant for the number of members, named like NUM_TP_CONNECTION_STATUSES. The pluralization is currently hard-coded in the conversion scripts, but should move into the specification in future.

Constants LAST_TP_CONNECTION_STATUS, etc. are also provided. These are deprecated and will be removed in a future release.

## Details

### enum TpHandleType

    typedef enum {
        TP_HANDLE_TYPE_NONE = 0,
        TP_HANDLE_TYPE_CONTACT = 1,
        TP_HANDLE_TYPE_ROOM = 2,
        TP_HANDLE_TYPE_LIST = 3,
        TP_HANDLE_TYPE_GROUP = 4,
    } TpHandleType;

Bitfield/set of flags generated from the Telepathy specification.

`TP_HANDLE_TYPE_NONE` | A "null" handle type used to indicate the absence of a handle. When a handle type and a handle appear as a pair, if the handle type is zero, the handle must also be zero.
`TP_HANDLE_TYPE_CONTACT` | A contact
`TP_HANDLE_TYPE_ROOM` | A chat room
`TP_HANDLE_TYPE_LIST` | A server-generated contact list (see Channel.Interface.Group)
`TP_HANDLE_TYPE_GROUP` | A user-defined contact list (see Channel.Interface.Group)

### NUM_TP_HANDLE_TYPES

    #define             NUM_TP_HANDLE_TYPES

1 higher than the highest valid value of TpHandleType.

### enum TpConnMgrParamFlags

    typedef enum {
        TP_CONN_MGR_PARAM_FLAG_REQUIRED = 1,
        TP_CONN_MGR_PARAM_FLAG_REGISTER = 2,
        TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT = 4,
    } TpConnMgrParamFlags;

Bitfield/set of flags generated from the Telepathy specification.

`TP_CONN_MGR_PARAM_FLAG_REQUIRED` | This parameter is required for connecting to the server.
`TP_CONN_MGR_PARAM_FLAG_REGISTER` | This parameter is required for registering an account on the server.
`TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT` | This parameter has a default value, which is returned in GetParameters; not providing this parameter is equivalent to providing the default.

### enum TpConnectionStatus

    typedef enum {
        TP_CONNECTION_STATUS_CONNECTED = 0,
        TP_CONNECTION_STATUS_CONNECTING = 1,
        TP_CONNECTION_STATUS_DISCONNECTED = 2,
    } TpConnectionStatus;

Bitfield/set of flags generated from the Telepathy specification.

`TP_CONNECTION_STATUS_CONNECTED` | The connection is alive and all methods are available.
`TP_CONNECTION_STATUS_CONNECTING` | The connection has not yet been established, or has been severed and reconnection is being attempted. Some methods may fail until the connection has been established.
`TP_CONNECTION_STATUS_DISCONNECTED` | The connection has been severed and no method calls are valid. The object may be removed from the bus at any time.

### NUM_TP_CONNECTION_STATUSES

    #define             NUM_TP_CONNECTION_STATUSES

1 higher than the highest valid value of TpConnectionStatus.

### enum TpConnectionStatusReason

    typedef enum {
        TP_CONNECTION_STATUS_REASON_NONE_SPECIFIED = 0,
        TP_CONNECTION_STATUS_REASON_REQUESTED = 1,
        TP_CONNECTION_STATUS_REASON_NETWORK_ERROR = 2,
        TP_CONNECTION_STATUS_REASON_AUTHENTICATION_FAILED = 3,
        TP_CONNECTION_STATUS_REASON_ENCRYPTION_ERROR = 4,
        TP_CONNECTION_STATUS_REASON_NAME_IN_USE = 5,
        TP_CONNECTION_STATUS_REASON_CERT_NOT_PROVIDED = 6,
        TP_CONNECTION_STATUS_REASON_CERT_UNTRUSTED = 7,
        TP_CONNECTION_STATUS_REASON_CERT_EXPIRED = 8,
        TP_CONNECTION_STATUS_REASON_CERT_NOT_ACTIVATED = 9,
        TP_CONNECTION_STATUS_REASON_CERT_HOSTNAME_MISMATCH = 10,
        TP_CONNECTION_STATUS_REASON_CERT_FINGERPRINT_MISMATCH = 11,
        TP_CONNECTION_STATUS_REASON_CERT_SELF_SIGNED = 12,
        TP_CONNECTION_STATUS_REASON_CERT_OTHER_ERROR = 13,
    } TpConnectionStatusReason;

Bitfield/set of flags generated from the Telepathy specification.

`TP_CONNECTION_STATUS_REASON_NONE_SPECIFIED` | There is no reason set for this state change.
`TP_CONNECTION_STATUS_REASON_REQUESTED` | The change is in response to a user request.
`TP_CONNECTION_STATUS_REASON_NETWORK_ERROR` | There was an error sending or receiving on the network socket.
`TP_CONNECTION_STATUS_REASON_AUTHENTICATION_FAILED` | The username or password was invalid.
`TP_CONNECTION_STATUS_REASON_ENCRYPTION_ERROR` | There was an error negotiating SSL on this connection, or encryption was unavailable and require-encryption was set when the connection was created.
`TP_CONNECTION_STATUS_REASON_NAME_IN_USE` | Someone is already connected to the server using the name you are trying to connect with.
`TP_CONNECTION_STATUS_REASON_CERT_NOT_PROVIDED` | The server did not provide a SSL certificate.
`TP_CONNECTION_STATUS_REASON_CERT_UNTRUSTED` | The server's SSL certificate could not be trusted.
`TP_CONNECTION_STATUS_REASON_CERT_EXPIRED` | The server's SSL certificate has expired.
`TP_CONNECTION_STATUS_REASON_CERT_NOT_ACTIVATED` | The server's SSL certificate is not yet valid.
`TP_CONNECTION_STATUS_REASON_CERT_HOSTNAME_MISMATCH` | The server's SSL certificate did not match its hostname.
`TP_CONNECTION_STATUS_REASON_CERT_FINGERPRINT_MISMATCH` | The server's SSL certificate does not have the expected fingerprint.
`TP_CONNECTION_STATUS_REASON_CERT_SELF_SIGNED` | The server's SSL certificate is self-signed.
`TP_CONNECTION_STATUS_REASON_CERT_OTHER_ERROR` | There was some other error validating the server's SSL certificate.

### NUM_TP_CONNECTION_STATUS_REASONS

    #define             NUM_TP_CONNECTION_STATUS_REASONS

1 higher than the highest valid value of TpConnectionStatusReason.

### enum TpConnectionAliasFlags

    typedef enum {
        TP_CONNECTION_ALIAS_FLAG_USER_SET = 1,
    } TpConnectionAliasFlags;

Bitfield/set of flags generated from the Telepathy specification.

`TP_CONNECTION_ALIAS_FLAG_USER_SET` | The aliases of contacts on this connection may be changed by the user of the service, not just by the contacts themselves. This is the case on Jabber, for instance. It is possible that aliases can be changed by the contacts too - which alias takes precedence is not defined by this specification, and depends on the server and/or connection manager implementation. This flag only applies to the aliases of "globally valid" contact handles. At this time, clients should not expect to be able to change the aliases corresponding to any channel-specific handles. If this becomes possible in future, a new flag will be defined.

### enum TpConnectionCapabilityFlags

    typedef enum {
        TP_CONNECTION_CAPABILITY_FLAG_CREATE = 1,
        TP_CONNECTION_CAPABILITY_FLAG_INVITE = 2,
    } TpConnectionCapabilityFlags;

Bitfield/set of flags generated from the Telepathy specification.

`TP_CONNECTION_CAPABILITY_FLAG_CREATE` | The given channel type and handle can be given to RequestChannel to create a new channel of this type.
`TP_CONNECTION_CAPABILITY_FLAG_INVITE` | The given contact can be invited to an existing channel of this type.

### enum TpConnectionPresenceType

    typedef enum {
        TP_CONNECTION_PRESENCE_TYPE_UNSET = 0,
        TP_CONNECTION_PRESENCE_TYPE_OFFLINE = 1,
        TP_CONNECTION_PRESENCE_TYPE_AVAILABLE = 2,
        TP_CONNECTION_PRESENCE_TYPE_AWAY = 3,
        TP_CONNECTION_PRESENCE_TYPE_EXTENDED_AWAY = 4,
        TP_CONNECTION_PRESENCE_TYPE_HIDDEN = 5,
        TP_CONNECTION_PRESENCE_TYPE_BUSY = 6,
    } TpConnectionPresenceType;

Bitfield/set of flags generated from the Telepathy specification.

`TP_CONNECTION_PRESENCE_TYPE_UNSET` | An invalid presence type used as a null value
`TP_CONNECTION_PRESENCE_TYPE_OFFLINE` | Offline
`TP_CONNECTION_PRESENCE_TYPE_AVAILABLE` | Available
`TP_CONNECTION_PRESENCE_TYPE_AWAY` | Away
`TP_CONNECTION_PRESENCE_TYPE_EXTENDED_AWAY` | Away for an extended time
`TP_CONNECTION_PRESENCE_TYPE_HIDDEN` | Hidden (invisible)
`TP_CONNECTION_PRESENCE_TYPE_BUSY` | Busy, Do Not Disturb.

### NUM_TP_CONNECTION_PRESENCE_TYPES

    #define             NUM_TP_CONNECTION_PRESENCE_TYPES

1 higher than the highest valid value of TpConnectionPresenceType.

### enum TpDTMFEvent

    typedef enum {
        TP_DTMF_EVENT_DIGIT_0 = 0,
        TP_DTMF_EVENT_DIGIT_1 = 1,
        TP_DTMF_EVENT_DIGIT_2 = 2,
        TP_DTMF_EVENT_DIGIT_3 = 3,
        TP_DTMF_EVENT_DIGIT_4 = 4,
        TP_DTMF_EVENT_DIGIT_5 = 5,
        TP_DTMF_EVENT_DIGIT_6 = 6,
        TP_DTMF_EVENT_DIGIT_7 = 7,
        TP_DTMF_EVENT_DIGIT_8 = 8,
        TP_DTMF_EVENT_DIGIT_9 = 9,
        TP_DTMF_EVENT_ASTERISK = 10,
        TP_DTMF_EVENT_HASH = 11,
        TP_DTMF_EVENT_LETTER_A = 12,
        TP_DTMF_EVENT_LETTER_B = 13,
        TP_DTMF_EVENT_LETTER_C = 14,
        TP_DTMF_EVENT_LETTER_D = 15,
    } TpDTMFEvent;

Bitfield/set of flags generated from the Telepathy specification.

`TP_DTMF_EVENT_DIGIT_0` | 0
`TP_DTMF_EVENT_DIGIT_1` | 1
`TP_DTMF_EVENT_DIGIT_2` | 2
`TP_DTMF_EVENT_DIGIT_3` | 3
`TP_DTMF_EVENT_DIGIT_4` | 4
`TP_DTMF_EVENT_DIGIT_5` | 5
`TP_DTMF_EVENT_DIGIT_6` | 6
`TP_DTMF_EVENT_DIGIT_7` | 7
`TP_DTMF_EVENT_DIGIT_8` | 8
`TP_DTMF_EVENT_DIGIT_9` | 9
`TP_DTMF_EVENT_ASTERISK` | *
`TP_DTMF_EVENT_HASH` | #
`TP_DTMF_EVENT_LETTER_A` | A
`TP_DTMF_EVENT_LETTER_B` | B
`TP_DTMF_EVENT_LETTER_C` | C
`TP_DTMF_EVENT_LETTER_D` | D

### NUM_TP_DTMF_EVENTS

    #define             NUM_TP_DTMF_EVENTS

1 higher than the highest valid value of TpDTMFEvent.

### enum TpMediaStreamType

    typedef enum {
        TP_MEDIA_STREAM_TYPE_AUDIO = 0,
        TP_MEDIA_STREAM_TYPE_VIDEO = 1,
    } TpMediaStreamType;

Bitfield/set of flags generated from the Telepathy specification.

`TP_MEDIA_STREAM_TYPE_AUDIO` | An audio stream
`TP_MEDIA_STREAM_TYPE_VIDEO` | A video stream

### NUM_TP_MEDIA_STREAM_TYPES

    #define             NUM_TP_MEDIA_STREAM_TYPES

1 higher than the highest valid value of TpMediaStreamType.

### enum TpMediaStreamState

    typedef enum {
        TP_MEDIA_STREAM_STATE_DISCONNECTED = 0,
        TP_MEDIA_STREAM_STATE_CONNECTING = 1,
        TP_MEDIA_STREAM_STATE_CONNECTED = 2,
    } TpMediaStreamState;

Bitfield/set of flags generated from the Telepathy specification.

`TP_MEDIA_STREAM_STATE_DISCONNECTED` | The stream is disconnected.
`TP_MEDIA_STREAM_STATE_CONNECTING` | The stream is trying to connect.
`TP_MEDIA_STREAM_STATE_CONNECTED` | The stream is connected.

### NUM_TP_MEDIA_STREAM_STATES

    #define             NUM_TP_MEDIA_STREAM_STATES

1 higher than the highest valid value of TpMediaStreamState.

### enum TpMediaStreamDirection

    typedef enum {
        TP_MEDIA_STREAM_DIRECTION_NONE = 0,
        TP_MEDIA_STREAM_DIRECTION_SEND = 1,
        TP_MEDIA_STREAM_DIRECTION_RECEIVE = 2,
        TP_MEDIA_STREAM_DIRECTION_BIDIRECTIONAL = 3,
    } TpMediaStreamDirection;

Bitfield/set of flags generated from the Telepathy specification.

`TP_MEDIA_STREAM_DIRECTION_NONE` | Media are not being sent or received
`TP_MEDIA_STREAM_DIRECTION_SEND` | Media are being sent, but not received
`TP_MEDIA_STREAM_DIRECTION_RECEIVE` | Media are being received, but not sent
`TP_MEDIA_STREAM_DIRECTION_BIDIRECTIONAL` | Media are being sent and received

### NUM_TP_MEDIA_STREAM_DIRECTIONS

    #define             NUM_TP_MEDIA_STREAM_DIRECTIONS

1 higher than the highest valid value of TpMediaStreamDirection.

### enum TpMediaStreamPendingSend

    typedef enum {
        TP_MEDIA_STREAM_PENDING_LOCAL_SEND = 1,
        TP_MEDIA_STREAM_PENDING_REMOTE_SEND = 2,
    } TpMediaStreamPendingSend;

Bitfield/set of flags generated from the Telepathy specification.

`TP_MEDIA_STREAM_PENDING_LOCAL_SEND` | The local user has been asked to send media by the remote user. Call RequestStreamDirection to indicate whether or not this is acceptable.
`TP_MEDIA_STREAM_PENDING_REMOTE_SEND` | The remote user has been asked to send media by the local user. The StreamDirectionChanged signal will be emitted when the remote user accepts or rejects this change.

### enum TpChannelMediaCapabilities

    typedef enum {
        TP_CHANNEL_MEDIA_CAPABILITY_AUDIO = 1,
        TP_CHANNEL_MEDIA_CAPABILITY_VIDEO = 2,
        TP_CHANNEL_MEDIA_CAPABILITY_NAT_TRAVERSAL_STUN = 4,
        TP_CHANNEL_MEDIA_CAPABILITY_NAT_TRAVERSAL_GTALK_P2P = 8,
    } TpChannelMediaCapabilities;

The channel-type-specific capability flags used for Channel.Type.StreamedMedia in the Connection.Interface.Capabilities interface.

Bitfield/set of flags generated from the Telepathy specification.

`TP_CHANNEL_MEDIA_CAPABILITY_AUDIO` | The handle is capable of using audio streams within a media channel.
`TP_CHANNEL_MEDIA_CAPABILITY_VIDEO` | The handle is capable of using video streams within a media channel.
`TP_CHANNEL_MEDIA_CAPABILITY_NAT_TRAVERSAL_STUN` | The handle is capable of performing STUN to traverse NATs.
`TP_CHANNEL_MEDIA_CAPABILITY_NAT_TRAVERSAL_GTALK_P2P` | The handle is capable of establishing Google Talk peer-to-peer connections (as implemented in libjingle 0.3) to traverse NATs.

### enum TpChannelTextSendError

    typedef enum {
        TP_CHANNEL_TEXT_SEND_ERROR_UNKNOWN = 0,
        TP_CHANNEL_TEXT_SEND_ERROR_OFFLINE = 1,
        TP_CHANNEL_TEXT_SEND_ERROR_INVALID_CONTACT = 2,
        TP_CHANNEL_TEXT_SEND_ERROR_PERMISSION_DENIED = 3,
        TP_CHANNEL_TEXT_SEND_ERROR_TOO_LONG = 4,
        TP_CHANNEL_TEXT_SEND_ERROR_NOT_IMPLEMENTED = 5,
    } TpChannelTextSendError;

Bitfield/set of flags generated from the Telepathy specification.

`TP_CHANNEL_TEXT_SEND_ERROR_UNKNOWN` | An unknown error occurred
`TP_CHANNEL_TEXT_SEND_ERROR_OFFLINE` | The requested contact was offline
`TP_CHANNEL_TEXT_SEND_ERROR_INVALID_CONTACT` | The requested contact is not valid
`TP_CHANNEL_TEXT_SEND_ERROR_PERMISSION_DENIED` | The user does not have permission to speak on this channel
`TP_CHANNEL_TEXT_SEND_ERROR_TOO_LONG` | The outgoing message was too long and was rejected by the server
`TP_CHANNEL_TEXT_SEND_ERROR_NOT_IMPLEMENTED` | The channel doesn't support sending text messages to the requested contact

### NUM_TP_CHANNEL_TEXT_SEND_ERRORS

    #define             NUM_TP_CHANNEL_TEXT_SEND_ERRORS

1 higher than the highest valid value of TpChannelTextSendError.

### enum TpChannelTextMessageType

    typedef enum {
        TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL = 0,
        TP_CHANNEL_TEXT_MESSAGE_TYPE_ACTION = 1,
        TP_CHANNEL_TEXT_MESSAGE_TYPE_NOTICE = 2,
        TP_CHANNEL_TEXT_MESSAGE_TYPE_AUTO_REPLY = 3,
    } TpChannelTextMessageType;

Bitfield/set of flags generated from the Telepathy specification.

`TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL` | A standard message
`TP_CHANNEL_TEXT_MESSAGE_TYPE_ACTION` | An action which might be presented to the user as "* <sender> <action>"
`TP_CHANNEL_TEXT_MESSAGE_TYPE_NOTICE` | A one-off or automated message not necessarily expecting a reply
`TP_CHANNEL_TEXT_MESSAGE_TYPE_AUTO_REPLY` | An automatically-generated reply message

### NUM_TP_CHANNEL_TEXT_MESSAGE_TYPES

    #define             NUM_TP_CHANNEL_TEXT_MESSAGE_TYPES

1 higher than the highest valid value of TpChannelTextMessageType.

### enum TpChannelTextMessageFlags

    typedef enum {
        TP_CHANNEL_TEXT_MESSAGE_FLAG_TRUNCATED = 1,
    } TpChannelTextMessageFlags;

Bitfield/set of flags generated from the Telepathy specification.

`TP_CHANNEL_TEXT_MESSAGE_FLAG_TRUNCATED` | The incoming message was truncated to a shorter length by the server or the connection manager.

### enum TpChannelChatState

    typedef enum {
        TP_CHANNEL_CHAT_STATE_GONE = 0,
        TP_CHANNEL_CHAT_STATE_INACTIVE = 1,
        TP_CHANNEL_CHAT_STATE_ACTIVE = 2,
        TP_CHANNEL_CHAT_STATE_PAUSED = 3,
        TP_CHANNEL_CHAT_STATE_COMPOSING = 4,
    } TpChannelChatState;

Bitfield/set of flags generated from the Telepathy specification.

`TP_CHANNEL_CHAT_STATE_GONE` | The contact has effectively ceased participating in the chat.
`TP_CHANNEL_CHAT_STATE_INACTIVE` | The contact has not been active for some time.
`TP_CHANNEL_CHAT_STATE_ACTIVE` | The contact is actively participating in the chat.
`TP_CHANNEL_CHAT_STATE_PAUSED` | The contact has paused composing a message.
`TP_CHANNEL_CHAT_STATE_COMPOSING` | The contact is composing a message to be sent to the chat.

### NUM_TP_CHANNEL_CHAT_STATES

    #define             NUM_TP_CHANNEL_CHAT_STATES

1 higher than the highest valid value of TpChannelChatState.

### enum TpChannelGroupFlags

    typedef enum {
        TP_CHANNEL_GROUP_FLAG_CAN_ADD = 1,
        TP_CHANNEL_GROUP_FLAG_CAN_REMOVE = 2,
        TP_CHANNEL_GROUP_FLAG_CAN_RESCIND = 4,
        TP_CHANNEL_GROUP_FLAG_MESSAGE_ADD = 8,
        TP_CHANNEL_GROUP_FLAG_MESSAGE_REMOVE = 16,
        TP_CHANNEL_GROUP_FLAG_MESSAGE_ACCEPT = 32,
        TP_CHANNEL_GROUP_FLAG_MESSAGE_REJECT = 64,
        TP_CHANNEL_GROUP_FLAG_MESSAGE_RESCIND = 128,
        TP_CHANNEL_GROUP_FLAG_CHANNEL_SPECIFIC_HANDLES = 256,
        TP_CHANNEL_GROUP_FLAG_ONLY_ONE_GROUP = 512,
        TP_CHANNEL_GROUP_FLAG_HANDLE_OWNERS_NOT_AVAILABLE = 1024,
    } TpChannelGroupFlags;

Bitfield/set of flags generated from the Telepathy specification.

`TP_CHANNEL_GROUP_FLAG_CAN_ADD` | The AddMembers method can be used to add or invite members who are not already in the local pending list (which is always valid).
`TP_CHANNEL_GROUP_FLAG_CAN_REMOVE` | The RemoveMembers method can be used to remove channel members (removing those on the pending local list is always valid).
`TP_CHANNEL_GROUP_FLAG_CAN_RESCIND` | The RemoveMembers method can be used on people on the remote pending list.
`TP_CHANNEL_GROUP_FLAG_MESSAGE_ADD` | A message may be sent to the server when calling AddMembers on contacts who are not currently pending members.
`TP_CHANNEL_GROUP_FLAG_MESSAGE_REMOVE` | A message may be sent to the server when calling RemoveMembers on contacts who are currently channel members.
`TP_CHANNEL_GROUP_FLAG_MESSAGE_ACCEPT` | A message may be sent to the server when calling AddMembers on contacts who are locally pending.
`TP_CHANNEL_GROUP_FLAG_MESSAGE_REJECT` | A message may be sent to the server when calling RemoveMembers on contacts who are locally pending.
`TP_CHANNEL_GROUP_FLAG_MESSAGE_RESCIND` | A message may be sent to the server when calling RemoveMembers on contacts who are remote pending.
`TP_CHANNEL_GROUP_FLAG_CHANNEL_SPECIFIC_HANDLES` | The members of this group have handles which are specific to this channel, and are not valid as general-purpose handles on the connection. Depending on the channel, it may be possible to call GetHandleOwners to find the owners of these handles, which should be done if you wish to eg subscribe to the contact's presence. Connection managers must ensure that any given handle is not simultaneously a general-purpose handle and a channel-specific handle.
`TP_CHANNEL_GROUP_FLAG_ONLY_ONE_GROUP` | Placing a contact in multiple groups of this type is not allowed and will raise NotAvailable (on services where contacts may only be in one user-defined group, user-defined groups will have this flag).
`TP_CHANNEL_GROUP_FLAG_HANDLE_OWNERS_NOT_AVAILABLE` | In rooms with channel specific handles (ie Channel_Specific_Handles flag is set), this flag indicates that none of the handle owners are available, and that GetHandleOwners method will always return 0 for channel members other than the self handle.

### enum TpChannelGroupChangeReason

    typedef enum {
        TP_CHANNEL_GROUP_CHANGE_REASON_NONE = 0,
        TP_CHANNEL_GROUP_CHANGE_REASON_OFFLINE = 1,
        TP_CHANNEL_GROUP_CHANGE_REASON_KICKED = 2,
        TP_CHANNEL_GROUP_CHANGE_REASON_BUSY = 3,
        TP_CHANNEL_GROUP_CHANGE_REASON_INVITED = 4,
        TP_CHANNEL_GROUP_CHANGE_REASON_BANNED = 5,
        TP_CHANNEL_GROUP_CHANGE_REASON_ERROR = 6,
        TP_CHANNEL_GROUP_CHANGE_REASON_INVALID_CONTACT = 7,
        TP_CHANNEL_GROUP_CHANGE_REASON_NO_ANSWER = 8,
        TP_CHANNEL_GROUP_CHANGE_REASON_RENAMED = 9,
        TP_CHANNEL_GROUP_CHANGE_REASON_PERMISSION_DENIED = 10,
        TP_CHANNEL_GROUP_CHANGE_REASON_SEPARATED = 11,
    } TpChannelGroupChangeReason;

Bitfield/set of flags generated from the Telepathy specification.

`TP_CHANNEL_GROUP_CHANGE_REASON_NONE` | No reason was provided for this change.
`TP_CHANNEL_GROUP_CHANGE_REASON_OFFLINE` | The change is due to a user going offline. Also used when user is already offline, but this wasn't known previously.
`TP_CHANNEL_GROUP_CHANGE_REASON_KICKED` | The change is due to a kick operation.
`TP_CHANNEL_GROUP_CHANGE_REASON_BUSY` | The change is due to a busy indication.
`TP_CHANNEL_GROUP_CHANGE_REASON_INVITED` | The change is due to an invitation.
`TP_CHANNEL_GROUP_CHANGE_REASON_BANNED` | The change is due to a kick+ban operation.
`TP_CHANNEL_GROUP_CHANGE_REASON_ERROR` | The change is due to an error occurring.
`TP_CHANNEL_GROUP_CHANGE_REASON_INVALID_CONTACT` | The change is because the requested contact does not exist.
`TP_CHANNEL_GROUP_CHANGE_REASON_NO_ANSWER` | The change is because the requested contact did not respond.
`TP_CHANNEL_GROUP_CHANGE_REASON_RENAMED` | The change is because a contact's unique identifier changed. There must be exactly one handle in the removed set and exactly one handle in one of the added sets. The Renamed signal on the Renaming interface will have been emitted for the same handles, shortly before this MembersChanged signal is emitted.
`TP_CHANNEL_GROUP_CHANGE_REASON_PERMISSION_DENIED` | The change is because there was no permission to contact the requested handle.
`TP_CHANNEL_GROUP_CHANGE_REASON_SEPARATED` | If members are removed with this reason code, the change is because the group has split into unconnected parts which can only communicate within themselves (e.g. netsplits on IRC use this reason code). If members are added with this reason code, the change is because unconnected parts of the group have rejoined. If this channel carries messages (e.g. Text or Tubes channels) applications must assume that the contacts being added are likely to have missed some messages as a result of the separation, and that the contacts in the group are likely to have missed some messages from the contacts being added. Note that from the added contacts' perspective, they have been in the group all along, and the contacts we indicate to be in the group (including the local user) have just rejoined the group with reason Separated. Application protocols in Tubes should be prepared to cope with this situation.

### NUM_TP_CHANNEL_GROUP_CHANGE_REASONS

    #define             NUM_TP_CHANNEL_GROUP_CHANGE_REASONS

1 higher than the highest valid value of TpChannelGroupChangeReason.

### enum TpChannelPasswordFlags

    typedef enum {
        TP_CHANNEL_PASSWORD_FLAG_PROVIDE = 8,
    } TpChannelPasswordFlags;

Bitfield/set of flags generated from the Telepathy specification.

`TP_CHANNEL_PASSWORD_FLAG_PROVIDE` | The ProvidePassword method must be called now for the user to join the channel

### enum TpMediaStreamError

    typedef enum {
        TP_MEDIA_STREAM_ERROR_UNKNOWN = 0,
        TP_MEDIA_STREAM_ERROR_EOS = 1,
    } TpMediaStreamError;

Bitfield/set of flags generated from the Telepathy specification.

`TP_MEDIA_STREAM_ERROR_UNKNOWN` | An unknown error occured.
`TP_MEDIA_STREAM_ERROR_EOS` | The end of the stream was reached.

### NUM_TP_MEDIA_STREAM_ERRORS

    #define             NUM_TP_MEDIA_STREAM_ERRORS

1 higher than the highest valid value of TpMediaStreamError.

### enum TpMediaStreamBaseProto

    typedef enum {
        TP_MEDIA_STREAM_BASE_PROTO_UDP = 0,
        TP_MEDIA_STREAM_BASE_PROTO_TCP = 1,
    } TpMediaStreamBaseProto;

Bitfield/set of flags generated from the Telepathy specification.

`TP_MEDIA_STREAM_BASE_PROTO_UDP` | UDP (User Datagram Protocol)
`TP_MEDIA_STREAM_BASE_PROTO_TCP` | TCP (Transmission Control Protocol)

### NUM_TP_MEDIA_STREAM_BASE_PROTOS

    #define             NUM_TP_MEDIA_STREAM_BASE_PROTOS

1 higher than the highest valid value of TpMediaStreamBaseProto.

### enum TpMediaStreamTransportType

    typedef enum {
        TP_MEDIA_STREAM_TRANSPORT_TYPE_LOCAL = 0,
        TP_MEDIA_STREAM_TRANSPORT_TYPE_DERIVED = 1,
        TP_MEDIA_STREAM_TRANSPORT_TYPE_RELAY = 2,
    } TpMediaStreamTransportType;

Bitfield/set of flags generated from the Telepathy specification.

`TP_MEDIA_STREAM_TRANSPORT_TYPE_LOCAL` | A local address
`TP_MEDIA_STREAM_TRANSPORT_TYPE_DERIVED` | An external address derived by a method such as STUN
`TP_MEDIA_STREAM_TRANSPORT_TYPE_RELAY` | An external stream relay

### NUM_TP_MEDIA_STREAM_TRANSPORT_TYPES

    #define             NUM_TP_MEDIA_STREAM_TRANSPORT_TYPES

1 higher than the highest valid value of TpMediaStreamTransportType.

### enum TpPropertyFlags

    typedef enum {
        TP_PROPERTY_FLAG_READ = 1,
        TP_PROPERTY_FLAG_WRITE = 2,
    } TpPropertyFlags;

Bitfield/set of flags generated from the Telepathy specification.

`TP_PROPERTY_FLAG_READ` | The property can be read
`TP_PROPERTY_FLAG_WRITE` | The property can be written

### NUM_TP_SOCKET_ACCESS_CONTROLS

    #define             NUM_TP_SOCKET_ACCESS_CONTROLS

1 higher than the highest valid value of TpSocketAccessControl.

### enum TpSocketAccessControl

    typedef enum {
        TP_SOCKET_ACCESS_CONTROL_LOCALHOST = 0,
        TP_SOCKET_ACCESS_CONTROL_PORT = 1,
        TP_SOCKET_ACCESS_CONTROL_NETMASK = 2,
        TP_SOCKET_ACCESS_CONTROL_CREDENTIALS = 3,
    } TpSocketAccessControl;

Bitfield/set of flags generated from the Telepathy specification.

`TP_SOCKET_ACCESS_CONTROL_LOCALHOST` | The IP or Unix socket can be accessed by any local user (e.g. a Unix socket that accepts all local connections, or an IP socket listening on 127.0.0.1 (or ::1) or rejecting connections not from that address). The associated variant must be ignored.
`TP_SOCKET_ACCESS_CONTROL_PORT` | May only be used on IP sockets. The associated variant must contain a struct Socket_Address_IPv4 (or Socket_Address_IPv6) containing the string form of an IP address of the appropriate version, and a port number. The socket can only be accessed if the connecting process has that address and port number; all other connections will be rejected.
`TP_SOCKET_ACCESS_CONTROL_NETMASK` | May only be used on IP sockets. The associated variant must contain a struct Socket_Netmask_IPv4 (or Socket_Netmask_IPv6) with signature (sy), containing the string form of an IP address of the appropriate version, and a prefix length "n". The socket can only be accessed if the first n bits of the connecting address match the first n bits of the given address.
`TP_SOCKET_ACCESS_CONTROL_CREDENTIALS` | The connecting process must send a single zero (NUL) byte when it first connects, which is not considered to be part of the data stream. If the operating system uses sendmsg() with SCM_CREDS or SCM_CREDENTIALS to pass credentials over sockets, the connecting process must do so if possible; if not, it must still send the byte. The listening process will disconnect the connection unless it can determine by OS-specific means that the connecting process has the same user ID as the listening process. The associated variant must be ignored.

### NUM_TP_SOCKET_ADDRESS_TYPES

    #define             NUM_TP_SOCKET_ADDRESS_TYPES

1 higher than the highest valid value of TpSocketAddressType.

### enum TpSocketAddressType

    typedef enum {
        TP_SOCKET_ADDRESS_TYPE_UNIX = 0,
        TP_SOCKET_ADDRESS_TYPE_ABSTRACT_UNIX = 1,
        TP_SOCKET_ADDRESS_TYPE_IPV4 = 2,
        TP_SOCKET_ADDRESS_TYPE_IPV6 = 3,
    } TpSocketAddressType;

Bitfield/set of flags generated from the Telepathy specification.

`TP_SOCKET_ADDRESS_TYPE_UNIX` | A Unix socket. The variant contains a byte-array, signature 'ay', containing the path of the socket.
`TP_SOCKET_ADDRESS_TYPE_ABSTRACT_UNIX` | An abstract Unix socket. The variant contains a byte-array, signature 'ay', containing the path of the socket including the leading null byte.
`TP_SOCKET_ADDRESS_TYPE_IPV4` | An IPv4 socket. The variant contains a Socket_Address_IPv4, i.e. a structure with signature (sq) in which the string is an IPv4 dotted-quad address literal (and must not be a DNS name), while the 16-bit unsigned integer is the port number.
`TP_SOCKET_ADDRESS_TYPE_IPV6` | An IPv6 socket. The variant contains a Socket_Address_IPv6, i.e. a structure with signature (sq) in which the string is an IPv6 address literal as specified in RFC2373 (and must not be a DNS name), while the 16-bit unsigned integer is the port number.

### NUM_TP_TUBE_STATES

    #define             NUM_TP_TUBE_STATES

1 higher than the highest valid value of TpTubeState.

### enum TpTubeState

    typedef enum {
        TP_TUBE_STATE_LOCAL_PENDING = 0,
        TP_TUBE_STATE_REMOTE_PENDING = 1,
        TP_TUBE_STATE_OPEN = 2,
    } TpTubeState;

Bitfield/set of flags generated from the Telepathy specification.

`TP_TUBE_STATE_LOCAL_PENDING` | The tube is waiting to be accepted/closed locally.
`TP_TUBE_STATE_REMOTE_PENDING` | The tube is waiting to be accepted/closed remotely.
`TP_TUBE_STATE_OPEN` | The tube is open for traffic.

### NUM_TP_TUBE_TYPES

    #define             NUM_TP_TUBE_TYPES

1 higher than the highest valid value of TpTubeType.

### enum TpTubeType

    typedef enum {
        TP_TUBE_TYPE_DBUS = 0,
        TP_TUBE_TYPE_STREAM = 1,
    } TpTubeType;

Bitfield/set of flags generated from the Telepathy specification.

`TP_TUBE_TYPE_DBUS` | An ordered reliable transport, for transporting D-Bus traffic. For each D-Bus tube, the connection manager listens on a D-Bus server address, as detailed in the D-Bus specification. On this address, it emulates a bus upon which each tube participant appears as an endpoint. The objects and interfaces which are expected to exist on the emulated bus depend on the well-known name; typically, either the participant who initiated the tube is expected to export the same objects/interfaces that would be exported by a service of that name on a bus, or all participants are expected to export those objects/interfaces. In a multi-user context (Handle_Type_Room) the tube behaves like the D-Bus bus daemon, so participants can send each other private messages, or can send broadcast messages which are received by everyone in the tube (including themselves). Each participant has a D-Bus unique name; connection managers must prevent participants from sending messages with the wrong sender unique name, and should attempt to avoid participants receiving messages not intended for them. In a 1-1 context (Handle_Type_Contact) the tube behaves like a peer-to-peer D-Bus connection - arbitrary D-Bus messages with any sender and/or destination can be sent by each participant, and each participant receives all messages sent by the other participant.
`TP_TUBE_TYPE_STREAM` | A transport for ordered, reliable data transfer, similar to SOCK_STREAM sockets. When accepting a Stream Unix tube, a new listening local socket is created. Each time the client connects to this socket, the connection manager of the initiator of the tube opens a new connection to its local socket. Both sides can then use this pair of sockets to communicate together.