hangups¶
hangups is the first third-party instant messaging client for Google Hangouts. It includes both a Python library and a reference client with a text-based user interface.
Unlike its predecessor Google Talk, Hangouts uses a proprietary, non-interoperable protocol. hangups is implemented by reverse-engineering this protocol, which allows it to support features like group messaging that aren’t available in clients that connect via XMPP.
hangups is still in an early stage of development. The reference client is usable for basic chatting, but the API is undocumented and subject to change. Bug reports and pull requests are welcome!
Quick Links¶
Documentation Contents¶
Installation¶
hangups requires Python 3.3, 3.4, or 3.5 and is known to work on Linux, Mac OS X, and Windows (with Cygwin).
Python Package Index (PyPI)¶
hangups is listed in PyPI, and may be installed using pip:
pip3 install hangups
Docker¶
hangups is available as an automated build on Docker Hub as tdryer/hangups.
Create a data-only container for hangups to allow upgrading without losing your login session:
docker run --name hangups-session --entrypoint true tdryer/hangups
Whenever you want to start hangups, run a new container:
docker run -it --rm --name hangups --volumes-from hangups-session tdryer/hangups
To upgrade hangups, pull the latest version of the image:
docker pull tdryer/hangups
Arch Linux¶
An unofficial hangups package is available for Arch Linux in the Arch User Repository.
Install from Source¶
The hangups code is available from GitHub. Either download and extract a hangups release archive, or clone the hangups repository:
git clone https://github.com/tdryer/hangups.git
Switch to the hangups directory and install the package:
cd hangups
python3 setup.py install
User Guide¶
This page is intended for end-users who want to use the textual user interface included with hangups.
Running¶
Once installed, run this command to start hangups:
hangups
For help with command line arguments, run:
hangups -h
Logging in¶
The first time you start hangups, you will need to log in to your Google account. hangups supports logging in using OAuth 2.0. You will be prompted to open a link in your browser. Google will prompt you to authorize the application, and then provide an authorization code. Copy and paste the authorization code into hangups to complete the process.
After a successful login, hangups will save a refresh token allowing it to
login automatically. By default, the token is saved to a file in an OS-specific
cache directory. The default token file path can be viewed using hangups
-h
. To specify a different path for the token file, use the
--token-path
option:
hangups --token-path /path/to/refresh_token.txt
hangups may be deauthorized from your Google account from the Google recently used devices page. hangups will be listed as “iOS”.
Usage¶
After connecting, hangups will display the conversations tab, which lists the
names of all the available conversations. Use the up and down arrow keys to
select a conversation, and press enter
to open it in a new tab.
hangups uses a tabbed interface. The first tab is always the conversations
tab. Once multiple tabs are open, use ctrl+u
and ctrl+d
and
move up and down the list of tabs. Use ctrl+w
to close a tab.
In a conversation tab, type a message and press enter
to send it, or
use the up and arrows to scroll the list of previous messages. hangups
supports readline commands for editing text. See the readlike library
documentation for a full list. Note that some of hangouts’ bindings
conflict with these key combinations, see the Configuration section on how to
adjust key bindings.
When new messages arrive, hangups will open a conversation tab in the
background, and display the number of unread messages in the tab title. On
Linux (with an appropriate desktop notification service running) and Mac OS X,
hangups will also display a desktop notification. To mark messages as read,
press any key (such as enter
) while in a conversation tab.
When the network connection is interrupted, hangups will show a “Disconnected” message in each conversation. When the connection is restored a “Connected” message is shown, and hangups will attempt to sync any messages that were missed during the disconnection. If hangups is disconnected for too long, it will eventually exit.
To exit hangups, press ctrl+e
.
Configuration¶
hangups may be configured through both command line arguments and a configuration file. See the output of hangups -h for details on using both of these methods.
Keybindings are specified using urwid’s format, for example: ctrl e or shift ctrl e. Some key combinations may be unavailable due to terminal limitations or conflicts.
Colours are specified using urwid’s colors, for example: dark red or Xresources color1. Standard Foreground and Background Colors can be found here for 16 bit palette.
Constants for 88-Color and 256-Color palettes for urwid’s hcolors.
Troubleshooting¶
hangups can log information that may be useful for troubleshooting a problem.
Run hangups -h
to view the default log file path.
To specify a custom log file path, run:
hangups --log /path/to/mylog
To log detailed debugging messages, run:
hangups -d
Developer Guide¶
This page is intended for developers who want to use the hangups library to write their own applications.
Example¶
See the examples directory for examples of using hangups as a library.
Protocol Documentation¶
The Hangouts protocol is undocumented, as such any documentation here is unofficial and liable to be incomplete and/or incorrect.
Protocol Buffers¶
This file documents the reverse-engineered Protocol Buffers used by the Hangouts chat protocol. hangups and other projects may these Protocol Buffers to serialize and deserialize data for communicating with Google’s servers.
Some of the most important Protocol Buffer messages include:
DoNotDisturbSetting¶
The state of do-not-disturb mode. Not to be confused with DndSetting, which is used to change the state of do-not-disturb mode.
Field | Number | Type | Label | Description |
---|---|---|---|---|
do_not_disturb |
1 | bool | optional | Whether do-not-disturb mode is enabled. |
expiration_timestamp |
2 | uint64 | optional | Timestamp when do-not-disturb mode expires. |
version |
3 | uint64 | optional | Timestamp when this setting was applied. Not present when this message comes from a notification. |
NotificationSettings¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
dnd_settings |
1 | DoNotDisturbSetting | optional |
ConversationId¶
Identifies a conversation.
Field | Number | Type | Label | Description |
---|---|---|---|---|
id |
1 | string | optional | Unique identifier for a conversation. |
ParticipantId¶
Identifies a user.
Field | Number | Type | Label | Description |
---|---|---|---|---|
gaia_id |
1 | string | optional | Unique identifier for a user’s Google account. |
chat_id |
2 | string | optional | Seems to always be the same as gaia_id. |
DeviceStatus¶
Indicates whether Hangouts is active (running in the foreground) on different types of devices.
Field | Number | Type | Label | Description |
---|---|---|---|---|
mobile |
1 | bool | optional | True if a mobile phone is active. |
desktop |
2 | bool | optional | True if a desktop or laptop is active. |
tablet |
3 | bool | optional | True if a tablet is active. |
LastSeen¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
last_seen_timestamp_usec |
1 | uint64 | optional |
Presence¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
reachable |
1 | bool | optional | |
available |
2 | bool | optional | |
device_status |
6 | DeviceStatus | optional | |
mood_message |
9 | MoodMessage | optional | |
last_seen |
10 | LastSeen | optional |
PresenceResult¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
user_id |
1 | ParticipantId | optional | |
presence |
2 | Presence | optional |
ClientIdentifier¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
resource |
1 | string | optional | (client_id in hangups). |
header_id |
2 | string | optional | unknown (header_id in hangups). |
ClientPresenceState¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
identifier |
1 | ClientIdentifier | optional | |
state |
2 | ClientPresenceStateType | optional |
UserEventState¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
user_id |
1 | ParticipantId | optional | |
client_generated_id |
2 | string | optional | |
notification_level |
3 | NotificationLevel | optional |
Formatting¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
bold |
1 | bool | optional | |
italic |
2 | bool | optional | |
strikethrough |
3 | bool | optional | |
underline |
4 | bool | optional |
LinkData¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
link_target |
1 | string | optional |
Segment¶
A segment of a message. Message are broken into segments that may be of different types and have different formatting.
Field | Number | Type | Label | Description |
---|---|---|---|---|
type |
1 | SegmentType | required | Note: This field is required because Hangouts for Chrome misbehaves if it isn’t serialized. |
text |
2 | string | optional | The segment text. For line breaks, may either be empty or contain new line character. |
formatting |
3 | Formatting | optional | Formatting for this segment. |
link_data |
4 | LinkData | optional | Link data for this segment, if it is a link. |
PlusPhoto¶
Google Plus photo that can be embedded in a chat message.
Field | Number | Type | Label | Description |
---|---|---|---|---|
thumbnail |
1 | PlusPhoto.Thumbnail | optional | Thumbnail. |
owner_obfuscated_id |
2 | string | optional | Owner obfuscated ID. |
album_id |
3 | string | optional | Album ID. |
photo_id |
4 | string | optional | Photo ID. |
url |
6 | string | optional | URL of full-sized image. |
original_content_url |
10 | string | optional | URL of image thumbnail. |
media_type |
13 | PlusPhoto.MediaType | optional | The media type. |
stream_id |
14 | string | repeated | List of stream ID parameters. |
PlusPhoto.Thumbnail¶
Metadata for displaying an image thumbnail.
Field | Number | Type | Label | Description |
---|---|---|---|---|
url |
1 | string | optional | URL to navigate to when thumbnail is selected (a Google Plus album page). |
image_url |
4 | string | optional | URL of thumbnail image. |
width_px |
10 | uint64 | optional | Image width in pixels. |
height_px |
11 | uint64 | optional | Image height in pixels. |
PlusPhoto.MediaType¶
Media type.
Name | Number | Description |
---|---|---|
MEDIA_TYPE_UNKNOWN |
0 | |
MEDIA_TYPE_PHOTO |
1 | |
MEDIA_TYPE_ANIMATED_PHOTO |
4 |
Place¶
Place that can be embedded in a chat message via Google Maps.
Field | Number | Type | Label | Description |
---|---|---|---|---|
url |
1 | string | optional | Google Maps URL pointing to the map coordinates. |
name |
3 | string | optional | Name of map location. |
representative_image |
185 | Place.RepresentativeImage | optional | Representative image of the place (map with pin). |
Place.RepresentativeImage¶
Representative image of a place.
Field | Number | Type | Label | Description |
---|---|---|---|---|
url |
2 | string | optional | URL of image. |
EmbedItem¶
An item of some type embedded in a chat message.
Field | Number | Type | Label | Description |
---|---|---|---|---|
type |
1 | ItemType | repeated | List of embedded item types in this message. |
id |
2 | string | optional | For photos this is not given, for maps, it’s the URL of the map. |
plus_photo |
27639957 | PlusPhoto | optional | Embedded Google Plus photo. |
place |
35825640 | Place | optional | Embedded Google Map of a place. |
Attachment¶
An attachment for a chat message.
Field | Number | Type | Label | Description |
---|---|---|---|---|
embed_item |
1 | EmbedItem | optional |
MessageContent¶
Chat message content.
Field | Number | Type | Label | Description |
---|---|---|---|---|
segment |
1 | Segment | repeated | |
attachment |
2 | Attachment | repeated |
EventAnnotation¶
Annotation that can be applied to a chat message event. The only known use for this is “me” actions supported by the Chrome client (type 4).
Field | Number | Type | Label | Description |
---|---|---|---|---|
type |
1 | int32 | optional | Annotation type. |
value |
2 | string | optional | Optional annotation string value. |
ChatMessage¶
A chat message in a conversation.
Field | Number | Type | Label | Description |
---|---|---|---|---|
annotation |
2 | EventAnnotation | repeated | Optional annotation to attach to message. |
message_content |
3 | MessageContent | optional | The message’s content. |
MembershipChange¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
type |
1 | MembershipChangeType | optional | |
participant_ids |
3 | ParticipantId | repeated |
ConversationRename¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
new_name |
1 | string | optional | |
old_name |
2 | string | optional |
HangoutEvent¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
event_type |
1 | HangoutEventType | optional | |
participant_id |
2 | ParticipantId | repeated |
OTRModification¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
old_otr_status |
1 | OffTheRecordStatus | optional | |
new_otr_status |
2 | OffTheRecordStatus | optional | |
old_otr_toggle |
3 | OffTheRecordToggle | optional | |
new_otr_toggle |
4 | OffTheRecordToggle | optional |
HashModifier¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
update_id |
1 | string | optional | |
hash_diff |
2 | uint64 | optional | |
version |
4 | uint64 | optional |
Event¶
Event that becomes part of a conversation’s history.
Field | Number | Type | Label | Description |
---|---|---|---|---|
conversation_id |
1 | ConversationId | optional | ID of the conversation this event belongs to. |
sender_id |
2 | ParticipantId | optional | ID of the user that sent this event. |
timestamp |
3 | uint64 | optional | Timestamp when the event occurred. |
self_event_state |
4 | UserEventState | optional | |
source_type |
6 | SourceType | optional | |
chat_message |
7 | ChatMessage | optional | |
membership_change |
9 | MembershipChange | optional | |
conversation_rename |
10 | ConversationRename | optional | |
hangout_event |
11 | HangoutEvent | optional | |
event_id |
12 | string | optional | Unique ID for the event. |
expiration_timestamp |
13 | uint64 | optional | |
otr_modification |
14 | OTRModification | optional | |
advances_sort_timestamp |
15 | bool | optional | |
otr_status |
16 | OffTheRecordStatus | optional | |
persisted |
17 | bool | optional | |
medium_type |
20 | DeliveryMedium | optional | |
event_type |
23 | EventType | optional | The event’s type. |
event_version |
24 | uint64 | optional | Event version timestamp. |
hash_modifier |
26 | HashModifier | optional | |
group_link_sharing_modification |
31 | GroupLinkSharingModification | optional |
UserReadState¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
participant_id |
1 | ParticipantId | optional | |
latest_read_timestamp |
2 | uint64 | optional |
DeliveryMedium¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
medium_type |
1 | DeliveryMediumType | optional | |
phone_number |
2 | PhoneNumber | optional | Phone number to use for sending Google Voice messages. |
DeliveryMediumOption¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
delivery_medium |
1 | DeliveryMedium | optional | |
current_default |
2 | bool | optional |
UserConversationState¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
client_generated_id |
2 | string | optional | |
self_read_state |
7 | UserReadState | optional | |
status |
8 | ConversationStatus | optional | |
notification_level |
9 | NotificationLevel | optional | |
view |
10 | ConversationView | repeated | |
inviter_id |
11 | ParticipantId | optional | |
invite_timestamp |
12 | uint64 | optional | |
sort_timestamp |
13 | uint64 | optional | |
active_timestamp |
14 | uint64 | optional | |
invite_affinity |
15 | InvitationAffinity | optional | |
delivery_medium_option |
17 | DeliveryMediumOption | repeated |
ConversationParticipantData¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
id |
1 | ParticipantId | optional | |
fallback_name |
2 | string | optional | |
invitation_status |
3 | InvitationStatus | optional | |
participant_type |
5 | ParticipantType | optional | |
new_invitation_status |
6 | InvitationStatus | optional |
Conversation¶
A conversation between two or more users.
Field | Number | Type | Label | Description |
---|---|---|---|---|
conversation_id |
1 | ConversationId | optional | |
type |
2 | ConversationType | optional | |
name |
3 | string | optional | |
self_conversation_state |
4 | UserConversationState | optional | |
read_state |
8 | UserReadState | repeated | |
has_active_hangout |
9 | bool | optional | True if the conversation has an active Hangout. |
otr_status |
10 | OffTheRecordStatus | optional | The conversation’s “off the record” status. |
otr_toggle |
11 | OffTheRecordToggle | optional | Whether the OTR toggle is available to the user for this conversation. |
conversation_history_supported |
12 | bool | optional | |
current_participant |
13 | ParticipantId | repeated | |
participant_data |
14 | ConversationParticipantData | repeated | |
network_type |
18 | NetworkType | repeated | |
force_history_state |
19 | ForceHistory | optional | |
group_link_sharing_status |
22 | GroupLinkSharingStatus | optional |
EasterEgg¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
message |
1 | string | optional |
BlockStateChange¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
participant_id |
1 | ParticipantId | optional | |
new_block_state |
2 | BlockState | optional |
Photo¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
photo_id |
1 | string | optional | Picasa photo ID. |
delete_albumless_source_photo |
2 | bool | optional | |
user_id |
3 | string | optional | Optional Picasa user ID needed for photos from other accounts (eg. stickers). |
is_custom_user_id |
4 | bool | optional | Must be true if user_id is specified. |
EventRequestHeader¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
conversation_id |
1 | ConversationId | optional | |
client_generated_id |
2 | uint64 | optional | |
expected_otr |
3 | OffTheRecordStatus | optional | |
delivery_medium |
4 | DeliveryMedium | optional | |
event_type |
5 | EventType | optional |
ClientVersion¶
The client and device version.
Field | Number | Type | Label | Description |
---|---|---|---|---|
client_id |
1 | ClientId | optional | Identifies the client. |
build_type |
2 | ClientBuildType | optional | The client build type. |
major_version |
3 | string | optional | Client version. |
version_timestamp |
4 | uint64 | optional | Client version timestamp. |
device_os_version |
5 | string | optional | OS version string (for native apps). |
device_hardware |
6 | string | optional | Device hardware name (for native apps). |
RequestHeader¶
Header for requests from the client to the server.
Field | Number | Type | Label | Description |
---|---|---|---|---|
client_version |
1 | ClientVersion | optional | |
client_identifier |
2 | ClientIdentifier | optional | |
language_code |
4 | string | optional |
ResponseHeader¶
Header for responses from the server to the client.
Field | Number | Type | Label | Description |
---|---|---|---|---|
status |
1 | ResponseStatus | optional | |
error_description |
2 | string | optional | |
debug_url |
3 | string | optional | |
request_trace_id |
4 | string | optional | |
current_server_time |
5 | uint64 | optional |
Entity¶
A user that can participate in conversations.
Field | Number | Type | Label | Description |
---|---|---|---|---|
id |
9 | ParticipantId | optional | The user’s ID. |
presence |
8 | Presence | optional | Optional user presence status. |
properties |
10 | EntityProperties | optional | Optional user properties. |
entity_type |
13 | ParticipantType | optional | |
had_past_hangout_state |
16 | Entity.PastHangoutState | optional |
Entity.PastHangoutState¶
Name | Number | Description |
---|---|---|
PAST_HANGOUT_STATE_UNKNOWN |
0 | |
PAST_HANGOUT_STATE_HAD_PAST_HANGOUT |
1 | |
PAST_HANGOUT_STATE_NO_PAST_HANGOUT |
2 |
EntityProperties¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
type |
1 | ProfileType | optional | |
display_name |
2 | string | optional | |
first_name |
3 | string | optional | |
photo_url |
4 | string | optional | Photo URL with protocol scheme omitted (eg. “//lh.googleusercontent.com/...”). |
email |
5 | string | repeated | |
phone |
6 | string | repeated | |
in_users_domain |
10 | bool | optional | |
gender |
11 | Gender | optional | |
photo_url_status |
12 | PhotoUrlStatus | optional | |
canonical_email |
15 | string | optional |
ConversationState¶
State of a conversation and recent events.
Field | Number | Type | Label | Description |
---|---|---|---|---|
conversation_id |
1 | ConversationId | optional | |
conversation |
2 | Conversation | optional | |
event |
3 | Event | repeated | |
event_continuation_token |
5 | EventContinuationToken | optional |
EventContinuationToken¶
Token that allows retrieving more events from a position in a conversation. Specifying event_timestamp is sufficient.
Field | Number | Type | Label | Description |
---|---|---|---|---|
event_id |
1 | string | optional | |
storage_continuation_token |
2 | bytes | optional | |
event_timestamp |
3 | uint64 | optional |
EntityLookupSpec¶
Specifies an entity to lookup by one of its properties.
Field | Number | Type | Label | Description |
---|---|---|---|---|
gaia_id |
1 | string | optional | |
email |
3 | string | optional | |
phone |
4 | string | optional | Phone number as string (eg. “+15551234567”). |
create_offnetwork_gaia |
6 | bool | optional | Whether create a gaia_id for off-network contacts (eg. Google Voice contacts). |
ConfigurationBit¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
configuration_bit_type |
1 | ConfigurationBitType | optional | |
value |
2 | bool | optional |
RichPresenceState¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
get_rich_presence_enabled_state |
3 | RichPresenceEnabledState | repeated |
RichPresenceEnabledState¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
type |
1 | RichPresenceType | optional | |
enabled |
2 | bool | optional |
DesktopOffSetting¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
desktop_off |
1 | bool | optional | State of “desktop off” setting. |
DesktopOffState¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
desktop_off |
1 | bool | optional | Whether Hangouts desktop is signed off or on. |
version |
2 | uint64 | optional |
DndSetting¶
Enable or disable do-not-disturb mode. Not to be confused with DoNotDisturbSetting, which is used to indicate the state of do-not-disturb mode.
Field | Number | Type | Label | Description |
---|---|---|---|---|
do_not_disturb |
1 | bool | optional | Whether to enable or disable do-not-disturb mode. |
timeout_secs |
2 | uint64 | optional | Do not disturb expiration in seconds. |
PresenceStateSetting¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
timeout_secs |
1 | uint64 | optional | |
type |
2 | ClientPresenceStateType | optional |
MoodMessage¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
mood_content |
1 | MoodContent | optional |
MoodSetting¶
The user’s mood message.
Field | Number | Type | Label | Description |
---|---|---|---|---|
mood_message |
1 | MoodMessage | optional |
MoodState¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
mood_setting |
4 | MoodSetting | optional |
DeleteAction¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
delete_action_timestamp |
1 | uint64 | optional | |
delete_upper_bound_timestamp |
2 | uint64 | optional | |
delete_type |
3 | DeleteType | optional |
InviteeID¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
gaia_id |
1 | string | optional | |
fallback_name |
4 | string | optional |
Country¶
Describes a user’s country.
Field | Number | Type | Label | Description |
---|---|---|---|---|
region_code |
1 | string | optional | Abbreviated region code (eg. “CA”). |
country_code |
2 | uint64 | optional | Country’s calling code (eg. “1”). |
DesktopSoundSetting¶
Sound settings in the desktop Hangouts client.
Field | Number | Type | Label | Description |
---|---|---|---|---|
desktop_sound_state |
1 | SoundState | optional | Whether to play sound for incoming messages. |
desktop_ring_sound_state |
2 | SoundState | optional | Whether to ring for incoming calls. |
PhoneData¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
phone |
1 | Phone | repeated | |
caller_id_settings_mask |
3 | CallerIdSettingsMask | optional |
Phone¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
phone_number |
1 | PhoneNumber | optional | |
google_voice |
2 | bool | optional | |
verification_status |
3 | PhoneVerificationStatus | optional | |
discoverable |
4 | bool | optional | |
discoverability_status |
5 | PhoneDiscoverabilityStatus | optional | |
primary |
6 | bool | optional |
I18nData¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
national_number |
1 | string | optional | |
international_number |
2 | string | optional | |
country_code |
3 | uint64 | optional | |
region_code |
4 | string | optional | |
is_valid |
5 | bool | optional | |
validation_result |
6 | PhoneValidationResult | optional |
PhoneNumber¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
e164 |
1 | string | optional | Phone number as string (eg. “+15551234567”). |
i18n_data |
2 | I18nData | optional |
SuggestedContactGroupHash¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
max_results |
1 | uint64 | optional | Number of results to return from this group. |
hash |
2 | bytes | optional | An optional 4-byte hash. If this matches the server’s hash, no results will be sent. |
SuggestedContact¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
entity |
1 | Entity | optional | The contact’s entity. |
invitation_status |
2 | InvitationStatus | optional | The contact’s invitation status. |
SuggestedContactGroup¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
hash_matched |
1 | bool | optional | True if the request’s hash matched and no contacts will be included. |
hash |
2 | bytes | optional | A 4-byte hash which can be used in subsequent requests. |
contact |
3 | SuggestedContact | repeated | List of contacts in this group. |
GroupLinkSharingModification¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
new_status |
1 | GroupLinkSharingStatus | optional |
StateUpdate¶
Pushed from the server to the client to notify it of state changes. Includes exactly one type of notification, and optionally updates the attributes of a conversation.
Field | Number | Type | Label | Description |
---|---|---|---|---|
state_update_header |
1 | StateUpdateHeader | optional | |
conversation |
13 | Conversation | optional | If set, includes conversation attributes that have been updated by the notification. |
conversation_notification |
2 | ConversationNotification | optional | |
event_notification |
3 | EventNotification | optional | |
focus_notification |
4 | SetFocusNotification | optional | |
typing_notification |
5 | SetTypingNotification | optional | |
notification_level_notification |
6 | SetConversationNotificationLevelNotification | optional | |
reply_to_invite_notification |
7 | ReplyToInviteNotification | optional | |
watermark_notification |
8 | WatermarkNotification | optional | |
view_modification |
11 | ConversationViewModification | optional | |
easter_egg_notification |
12 | EasterEggNotification | optional | |
self_presence_notification |
14 | SelfPresenceNotification | optional | |
delete_notification |
15 | DeleteActionNotification | optional | |
presence_notification |
16 | PresenceNotification | optional | |
block_notification |
17 | BlockNotification | optional | |
notification_setting_notification |
19 | SetNotificationSettingNotification | optional | |
rich_presence_enabled_state_notification |
20 | RichPresenceEnabledStateNotification | optional |
StateUpdateHeader¶
Header for StateUpdate messages.
Field | Number | Type | Label | Description |
---|---|---|---|---|
active_client_state |
1 | ActiveClientState | optional | |
request_trace_id |
3 | string | optional | |
notification_settings |
4 | NotificationSettings | optional | |
current_server_time |
5 | uint64 | optional |
BatchUpdate¶
List of StateUpdate messages to allow pushing multiple notifications from the server to the client simultaneously.
Field | Number | Type | Label | Description |
---|---|---|---|---|
state_update |
1 | StateUpdate | repeated |
ConversationNotification¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
conversation |
1 | Conversation | optional |
SetFocusNotification¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
conversation_id |
1 | ConversationId | optional | |
sender_id |
2 | ParticipantId | optional | |
timestamp |
3 | uint64 | optional | |
type |
4 | FocusType | optional | |
device |
5 | FocusDevice | optional |
SetTypingNotification¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
conversation_id |
1 | ConversationId | optional | |
sender_id |
2 | ParticipantId | optional | |
timestamp |
3 | uint64 | optional | |
type |
4 | TypingType | optional |
SetConversationNotificationLevelNotification¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
conversation_id |
1 | ConversationId | optional | |
level |
2 | NotificationLevel | optional | |
timestamp |
4 | uint64 | optional |
ReplyToInviteNotification¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
conversation_id |
1 | ConversationId | optional | |
type |
2 | ReplyToInviteType | optional |
WatermarkNotification¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
sender_id |
1 | ParticipantId | optional | |
conversation_id |
2 | ConversationId | optional | |
latest_read_timestamp |
3 | uint64 | optional |
ConversationViewModification¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
conversation_id |
1 | ConversationId | optional | |
old_view |
2 | ConversationView | optional | |
new_view |
3 | ConversationView | optional |
EasterEggNotification¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
sender_id |
1 | ParticipantId | optional | |
conversation_id |
2 | ConversationId | optional | |
easter_egg |
3 | EasterEgg | optional |
SelfPresenceNotification¶
Notifies the status of other clients and mood.
Field | Number | Type | Label | Description |
---|---|---|---|---|
client_presence_state |
1 | ClientPresenceState | optional | |
do_not_disturb_setting |
3 | DoNotDisturbSetting | optional | |
desktop_off_setting |
4 | DesktopOffSetting | optional | |
desktop_off_state |
5 | DesktopOffState | optional | |
mood_state |
6 | MoodState | optional |
DeleteActionNotification¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
conversation_id |
1 | ConversationId | optional | |
delete_action |
2 | DeleteAction | optional |
PresenceNotification¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
presence |
1 | PresenceResult | repeated |
BlockNotification¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
block_state_change |
1 | BlockStateChange | repeated |
SetNotificationSettingNotification¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
desktop_sound_setting |
2 | DesktopSoundSetting | optional |
RichPresenceEnabledStateNotification¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
rich_presence_enabled_state |
1 | RichPresenceEnabledState | repeated |
ConversationSpec¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
conversation_id |
1 | ConversationId | optional |
OffnetworkAddress¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
type |
1 | OffnetworkAddressType | optional | |
email |
3 | string | optional |
EntityResult¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
lookup_spec |
1 | EntityLookupSpec | optional | |
entity |
2 | Entity | repeated |
AddUserRequest¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
request_header |
1 | RequestHeader | optional | |
invitee_id |
3 | InviteeID | repeated | |
event_request_header |
5 | EventRequestHeader | optional |
AddUserResponse¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
response_header |
1 | ResponseHeader | optional | |
created_event |
5 | Event | optional |
CreateConversationRequest¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
request_header |
1 | RequestHeader | optional | |
type |
2 | ConversationType | optional | |
client_generated_id |
3 | uint64 | optional | |
name |
4 | string | optional | |
invitee_id |
5 | InviteeID | repeated |
CreateConversationResponse¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
response_header |
1 | ResponseHeader | optional | |
conversation |
2 | Conversation | optional | |
new_conversation_created |
7 | bool | optional |
DeleteConversationRequest¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
request_header |
1 | RequestHeader | optional | |
conversation_id |
2 | ConversationId | optional | |
delete_upper_bound_timestamp |
3 | uint64 | optional |
DeleteConversationResponse¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
response_header |
1 | ResponseHeader | optional | |
delete_action |
2 | DeleteAction | optional |
EasterEggRequest¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
request_header |
1 | RequestHeader | optional | |
conversation_id |
2 | ConversationId | optional | |
easter_egg |
3 | EasterEgg | optional |
EasterEggResponse¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
response_header |
1 | ResponseHeader | optional | |
timestamp |
2 | uint64 | optional |
GetConversationRequest¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
request_header |
1 | RequestHeader | optional | |
conversation_spec |
2 | ConversationSpec | optional | |
include_conversation_metadata |
3 | bool | optional | Whether the ConversationState in the response should include metadata other than the conversation ID (default true). |
include_event |
4 | bool | optional | Whether to include list of events in the response (default true). |
max_events_per_conversation |
6 | uint64 | optional | |
event_continuation_token |
7 | EventContinuationToken | optional |
GetConversationResponse¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
response_header |
1 | ResponseHeader | optional | |
conversation_state |
2 | ConversationState | optional |
GetEntityByIdRequest¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
request_header |
1 | RequestHeader | optional | |
batch_lookup_spec |
3 | EntityLookupSpec | repeated |
GetEntityByIdResponse¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
response_header |
1 | ResponseHeader | optional | |
entity |
2 | Entity | repeated | Resulting entities of PARTICIPANT_TYPE_GAIA only. |
entity_result |
3 | EntityResult | repeated | All resulting entities. |
GetGroupConversationUrlRequest¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
request_header |
1 | RequestHeader | optional | |
conversation_id |
2 | ConversationId | optional | Conversation to retrieve URL for. |
GetGroupConversationUrlResponse¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
response_header |
1 | ResponseHeader | optional | |
group_conversation_url |
2 | string | optional | URL for others to join conversation. |
GetSuggestedEntitiesRequest¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
request_header |
1 | RequestHeader | optional | |
max_count |
4 | uint64 | optional | Max number of non-grouped entities to return. |
favorites |
8 | SuggestedContactGroupHash | optional | Optional hash for “favorites” contact group. |
contacts_you_hangout_with |
9 | SuggestedContactGroupHash | optional | Optional hash for “contacts you hangout with” contact group. |
other_contacts_on_hangouts |
10 | SuggestedContactGroupHash | optional | Optional hash for “other contacts on hangouts” contact group. |
other_contacts |
11 | SuggestedContactGroupHash | optional | Optional hash for “other contacts” contact group. |
dismissed_contacts |
12 | SuggestedContactGroupHash | optional | Optional hash for “dismissed contacts” contact group. |
pinned_favorites |
13 | SuggestedContactGroupHash | optional | Optional hash for “pinned favorites” contact group. |
GetSuggestedEntitiesResponse¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
response_header |
1 | ResponseHeader | optional | |
entity |
2 | Entity | repeated | |
favorites |
4 | SuggestedContactGroup | optional | |
contacts_you_hangout_with |
5 | SuggestedContactGroup | optional | |
other_contacts_on_hangouts |
6 | SuggestedContactGroup | optional | |
other_contacts |
7 | SuggestedContactGroup | optional | |
dismissed_contacts |
8 | SuggestedContactGroup | optional | |
pinned_favorites |
9 | SuggestedContactGroup | optional |
GetSelfInfoRequest¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
request_header |
1 | RequestHeader | optional |
GetSelfInfoResponse¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
response_header |
1 | ResponseHeader | optional | |
self_entity |
2 | Entity | optional | |
is_known_minor |
3 | bool | optional | |
dnd_state |
5 | DoNotDisturbSetting | optional | |
desktop_off_setting |
6 | DesktopOffSetting | optional | |
phone_data |
7 | PhoneData | optional | |
configuration_bit |
8 | ConfigurationBit | repeated | |
desktop_off_state |
9 | DesktopOffState | optional | |
google_plus_user |
10 | bool | optional | |
desktop_sound_setting |
11 | DesktopSoundSetting | optional | |
rich_presence_state |
12 | RichPresenceState | optional | |
default_country |
19 | Country | optional |
QueryPresenceRequest¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
request_header |
1 | RequestHeader | optional | |
participant_id |
2 | ParticipantId | repeated | |
field_mask |
3 | FieldMask | repeated |
QueryPresenceResponse¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
response_header |
1 | ResponseHeader | optional | |
presence_result |
2 | PresenceResult | repeated |
RemoveUserRequest¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
request_header |
1 | RequestHeader | optional | |
participant_id |
3 | ParticipantId | optional | Optional participant to remove from conversation, yourself if not given. |
event_request_header |
5 | EventRequestHeader | optional |
RemoveUserResponse¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
response_header |
1 | ResponseHeader | optional | |
created_event |
4 | Event | optional |
RenameConversationRequest¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
request_header |
1 | RequestHeader | optional | |
new_name |
3 | string | optional | |
event_request_header |
5 | EventRequestHeader | optional |
RenameConversationResponse¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
response_header |
1 | ResponseHeader | optional | |
created_event |
4 | Event | optional |
SearchEntitiesRequest¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
request_header |
1 | RequestHeader | optional | |
query |
3 | string | optional | |
max_count |
4 | uint64 | optional |
SearchEntitiesResponse¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
response_header |
1 | ResponseHeader | optional | |
entity |
2 | Entity | repeated |
SendChatMessageRequest¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
request_header |
1 | RequestHeader | optional | |
annotation |
5 | EventAnnotation | repeated | |
message_content |
6 | MessageContent | optional | |
existing_media |
7 | ExistingMedia | optional | |
event_request_header |
8 | EventRequestHeader | optional |
SendChatMessageResponse¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
response_header |
1 | ResponseHeader | optional | |
created_event |
6 | Event | optional |
SendOffnetworkInvitationRequest¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
request_header |
1 | RequestHeader | optional | |
invitee_address |
2 | OffnetworkAddress | optional |
SendOffnetworkInvitationResponse¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
response_header |
1 | ResponseHeader | optional |
SetActiveClientRequest¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
request_header |
1 | RequestHeader | optional | |
is_active |
2 | bool | optional | Whether to set the client as active or inactive. |
full_jid |
3 | string | optional | ‘email/resource’. |
timeout_secs |
4 | uint64 | optional | Timeout in seconds for client to remain active. |
SetActiveClientResponse¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
response_header |
1 | ResponseHeader | optional |
SetConversationLevelRequest¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
request_header |
1 | RequestHeader | optional |
SetConversationLevelResponse¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
response_header |
1 | ResponseHeader | optional |
SetConversationNotificationLevelRequest¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
request_header |
1 | RequestHeader | optional | |
conversation_id |
2 | ConversationId | optional | |
level |
3 | NotificationLevel | optional |
SetConversationNotificationLevelResponse¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
response_header |
1 | ResponseHeader | optional | |
timestamp |
2 | uint64 | optional |
SetFocusRequest¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
request_header |
1 | RequestHeader | optional | |
conversation_id |
2 | ConversationId | optional | |
type |
3 | FocusType | optional | |
timeout_secs |
4 | uint32 | optional |
SetFocusResponse¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
response_header |
1 | ResponseHeader | optional | |
timestamp |
2 | uint64 | optional |
SetGroupLinkSharingEnabledRequest¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
request_header |
1 | RequestHeader | optional | |
event_request_header |
2 | EventRequestHeader | optional | |
group_link_sharing_status |
4 | GroupLinkSharingStatus | optional | New group link sharing status. |
SetGroupLinkSharingEnabledResponse¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
response_header |
1 | ResponseHeader | optional | |
created_event |
2 | Event | optional | Created event of type EVENT_TYPE_GROUP_LINK_SHARING_MODIFICATION. |
updated_conversation |
3 | Conversation | optional | Updated conversation. |
SetPresenceRequest¶
Allows setting one or more of the included presence-related settings.
Field | Number | Type | Label | Description |
---|---|---|---|---|
request_header |
1 | RequestHeader | optional | |
presence_state_setting |
2 | PresenceStateSetting | optional | |
dnd_setting |
3 | DndSetting | optional | |
desktop_off_setting |
5 | DesktopOffSetting | optional | |
mood_setting |
8 | MoodSetting | optional |
SetPresenceResponse¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
response_header |
1 | ResponseHeader | optional |
SetTypingRequest¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
request_header |
1 | RequestHeader | optional | |
conversation_id |
2 | ConversationId | optional | |
type |
3 | TypingType | optional |
SetTypingResponse¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
response_header |
1 | ResponseHeader | optional | |
timestamp |
2 | uint64 | optional |
SyncAllNewEventsRequest¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
request_header |
1 | RequestHeader | optional | |
last_sync_timestamp |
2 | uint64 | optional | Timestamp after which to return all new events. |
max_response_size_bytes |
8 | uint64 | optional |
SyncAllNewEventsResponse¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
response_header |
1 | ResponseHeader | optional | |
sync_timestamp |
2 | uint64 | optional | |
conversation_state |
3 | ConversationState | repeated |
SyncRecentConversationsRequest¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
request_header |
1 | RequestHeader | optional | |
max_conversations |
3 | uint64 | optional | |
max_events_per_conversation |
4 | uint64 | optional | |
sync_filter |
5 | SyncFilter | repeated |
SyncRecentConversationsResponse¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
response_header |
1 | ResponseHeader | optional | |
sync_timestamp |
2 | uint64 | optional | |
conversation_state |
3 | ConversationState | repeated | |
event_continuation_token |
4 | EventContinuationToken | optional |
UpdateWatermarkRequest¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
request_header |
1 | RequestHeader | optional | |
conversation_id |
2 | ConversationId | optional | |
last_read_timestamp |
3 | uint64 | optional |
UpdateWatermarkResponse¶
Field | Number | Type | Label | Description |
---|---|---|---|---|
response_header |
1 | ResponseHeader | optional |
ActiveClientState¶
Describes which Hangouts client is active.
Name | Number | Description |
---|---|---|
ACTIVE_CLIENT_STATE_NO_ACTIVE |
0 | No client is active. |
ACTIVE_CLIENT_STATE_IS_ACTIVE |
1 | This is the active client. |
ACTIVE_CLIENT_STATE_OTHER_ACTIVE |
2 | Other client is active. |
FocusType¶
Name | Number | Description |
---|---|---|
FOCUS_TYPE_UNKNOWN |
0 | |
FOCUS_TYPE_FOCUSED |
1 | |
FOCUS_TYPE_UNFOCUSED |
2 |
FocusDevice¶
Name | Number | Description |
---|---|---|
FOCUS_DEVICE_UNSPECIFIED |
0 | |
FOCUS_DEVICE_DESKTOP |
20 | |
FOCUS_DEVICE_MOBILE |
300 |
TypingType¶
Name | Number | Description |
---|---|---|
TYPING_TYPE_UNKNOWN |
0 | |
TYPING_TYPE_STARTED |
1 | Started typing. |
TYPING_TYPE_PAUSED |
2 | Stopped typing with inputted text. |
TYPING_TYPE_STOPPED |
3 | Stopped typing with no inputted text. |
ClientPresenceStateType¶
Name | Number | Description |
---|---|---|
CLIENT_PRESENCE_STATE_UNKNOWN |
0 | |
CLIENT_PRESENCE_STATE_NONE |
1 | |
CLIENT_PRESENCE_STATE_DESKTOP_IDLE |
30 | |
CLIENT_PRESENCE_STATE_DESKTOP_ACTIVE |
40 |
NotificationLevel¶
Name | Number | Description |
---|---|---|
NOTIFICATION_LEVEL_UNKNOWN |
0 | |
NOTIFICATION_LEVEL_QUIET |
10 | Notifications are disabled. |
NOTIFICATION_LEVEL_RING |
30 | Notifications are enabled. |
SegmentType¶
Name | Number | Description |
---|---|---|
SEGMENT_TYPE_TEXT |
0 | Segment is text. |
SEGMENT_TYPE_LINE_BREAK |
1 | Segment is a line break. |
SEGMENT_TYPE_LINK |
2 | Segment is hyperlinked text. |
ItemType¶
A type of embedded item.
Name | Number | Description |
---|---|---|
ITEM_TYPE_THING |
0 | |
ITEM_TYPE_PLUS_PHOTO |
249 | Google Plus photo. |
ITEM_TYPE_PLACE |
335 | |
ITEM_TYPE_PLACE_V2 |
340 | Google Map place. |
MembershipChangeType¶
Name | Number | Description |
---|---|---|
MEMBERSHIP_CHANGE_TYPE_JOIN |
1 | |
MEMBERSHIP_CHANGE_TYPE_LEAVE |
2 |
HangoutEventType¶
Name | Number | Description |
---|---|---|
HANGOUT_EVENT_TYPE_UNKNOWN |
0 | |
HANGOUT_EVENT_TYPE_START |
1 | |
HANGOUT_EVENT_TYPE_END |
2 | |
HANGOUT_EVENT_TYPE_JOIN |
3 | |
HANGOUT_EVENT_TYPE_LEAVE |
4 | |
HANGOUT_EVENT_TYPE_COMING_SOON |
5 | |
HANGOUT_EVENT_TYPE_ONGOING |
6 |
OffTheRecordToggle¶
Whether the OTR toggle is available to the user.
Name | Number | Description |
---|---|---|
OFF_THE_RECORD_TOGGLE_UNKNOWN |
0 | |
OFF_THE_RECORD_TOGGLE_ENABLED |
1 | |
OFF_THE_RECORD_TOGGLE_DISABLED |
2 |
OffTheRecordStatus¶
Name | Number | Description |
---|---|---|
OFF_THE_RECORD_STATUS_UNKNOWN |
0 | |
OFF_THE_RECORD_STATUS_OFF_THE_RECORD |
1 | Conversation is off-the-record (history disabled). |
OFF_THE_RECORD_STATUS_ON_THE_RECORD |
2 | Conversation is on-the-record (history enabled). |
SourceType¶
Name | Number | Description |
---|---|---|
SOURCE_TYPE_UNKNOWN |
0 |
EventType¶
Name | Number | Description |
---|---|---|
EVENT_TYPE_UNKNOWN |
0 | |
EVENT_TYPE_REGULAR_CHAT_MESSAGE |
1 | |
EVENT_TYPE_SMS |
2 | |
EVENT_TYPE_VOICEMAIL |
3 | |
EVENT_TYPE_ADD_USER |
4 | |
EVENT_TYPE_REMOVE_USER |
5 | |
EVENT_TYPE_CONVERSATION_RENAME |
6 | |
EVENT_TYPE_HANGOUT |
7 | |
EVENT_TYPE_PHONE_CALL |
8 | |
EVENT_TYPE_OTR_MODIFICATION |
9 | |
EVENT_TYPE_PLAN_MUTATION |
10 | |
EVENT_TYPE_MMS |
11 | |
EVENT_TYPE_DEPRECATED_12 |
12 | |
EVENT_TYPE_OBSERVED_EVENT |
13 | |
EVENT_TYPE_GROUP_LINK_SHARING_MODIFICATION |
14 |
ConversationType¶
Name | Number | Description |
---|---|---|
CONVERSATION_TYPE_UNKNOWN |
0 | |
CONVERSATION_TYPE_ONE_TO_ONE |
1 | Conversation is one-to-one (only 2 participants). |
CONVERSATION_TYPE_GROUP |
2 | Conversation is group (any number of participants). |
ConversationStatus¶
Name | Number | Description |
---|---|---|
CONVERSATION_STATUS_UNKNOWN |
0 | |
CONVERSATION_STATUS_INVITED |
1 | User is invited to conversation. |
CONVERSATION_STATUS_ACTIVE |
2 | User is participating in conversation. |
CONVERSATION_STATUS_LEFT |
3 | User has left conversation. |
ConversationView¶
Name | Number | Description |
---|---|---|
CONVERSATION_VIEW_UNKNOWN |
0 | |
CONVERSATION_VIEW_INBOX |
1 | Conversation is in inbox. |
CONVERSATION_VIEW_ARCHIVED |
2 | Conversation has been archived. |
DeliveryMediumType¶
Name | Number | Description |
---|---|---|
DELIVERY_MEDIUM_UNKNOWN |
0 | |
DELIVERY_MEDIUM_BABEL |
1 | |
DELIVERY_MEDIUM_GOOGLE_VOICE |
2 | |
DELIVERY_MEDIUM_LOCAL_SMS |
3 |
InvitationAffinity¶
Name | Number | Description |
---|---|---|
INVITE_AFFINITY_UNKNOWN |
0 | |
INVITE_AFFINITY_HIGH |
1 | |
INVITE_AFFINITY_LOW |
2 |
ParticipantType¶
Name | Number | Description |
---|---|---|
PARTICIPANT_TYPE_UNKNOWN |
0 | |
PARTICIPANT_TYPE_GAIA |
2 | |
PARTICIPANT_TYPE_GOOGLE_VOICE |
3 |
InvitationStatus¶
Name | Number | Description |
---|---|---|
INVITATION_STATUS_UNKNOWN |
0 | |
INVITATION_STATUS_PENDING |
1 | |
INVITATION_STATUS_ACCEPTED |
2 |
ForceHistory¶
Name | Number | Description |
---|---|---|
FORCE_HISTORY_UNKNOWN |
0 | |
FORCE_HISTORY_NO |
1 |
NetworkType¶
Name | Number | Description |
---|---|---|
NETWORK_TYPE_UNKNOWN |
0 | |
NETWORK_TYPE_BABEL |
1 | |
NETWORK_TYPE_GOOGLE_VOICE |
2 |
BlockState¶
Name | Number | Description |
---|---|---|
BLOCK_STATE_UNKNOWN |
0 | |
BLOCK_STATE_BLOCK |
1 | |
BLOCK_STATE_UNBLOCK |
2 |
ReplyToInviteType¶
Name | Number | Description |
---|---|---|
REPLY_TO_INVITE_TYPE_UNKNOWN |
0 | |
REPLY_TO_INVITE_TYPE_ACCEPT |
1 | |
REPLY_TO_INVITE_TYPE_DECLINE |
2 |
ClientId¶
Identifies the client.
Name | Number | Description |
---|---|---|
CLIENT_ID_UNKNOWN |
0 | |
CLIENT_ID_ANDROID |
1 | Hangouts app for Android. |
CLIENT_ID_IOS |
2 | Hangouts app for iOS. |
CLIENT_ID_CHROME |
3 | Hangouts Chrome extension. |
CLIENT_ID_WEB_GPLUS |
5 | Hangouts web interface in Google Plus. |
CLIENT_ID_WEB_GMAIL |
6 | Hangouts web interface in Gmail. |
CLIENT_ID_ULTRAVIOLET |
13 | Hangouts Chrome app (“ultraviolet”). |
CLIENT_ID_WEB_HANGOUTS |
44 | Hangouts web app (https://hangouts.google.com). |
ClientBuildType¶
Build type of the client.
Name | Number | Description |
---|---|---|
BUILD_TYPE_UNKNOWN |
0 | |
BUILD_TYPE_PRODUCTION_WEB |
1 | Web app (not used anymore?). |
BUILD_TYPE_PRODUCTION_APP |
3 | Native app. |
ResponseStatus¶
Status of the response from the server to the client.
Name | Number | Description |
---|---|---|
RESPONSE_STATUS_UNKNOWN |
0 | |
RESPONSE_STATUS_OK |
1 | |
RESPONSE_STATUS_UNEXPECTED_ERROR |
3 | |
RESPONSE_STATUS_INVALID_REQUEST |
4 |
PhotoUrlStatus¶
Status of EntityProperties.photo_url.
Name | Number | Description |
---|---|---|
PHOTO_URL_STATUS_UNKNOWN |
0 | |
PHOTO_URL_STATUS_PLACEHOLDER |
1 | URL is a placeholder. |
PHOTO_URL_STATUS_USER_PHOTO |
2 | URL is a photo set by the user. |
Gender¶
Name | Number | Description |
---|---|---|
GENDER_UNKNOWN |
0 | |
GENDER_MALE |
1 | |
GENDER_FEMALE |
2 |
ProfileType¶
Name | Number | Description |
---|---|---|
PROFILE_TYPE_NONE |
0 | |
PROFILE_TYPE_ES_USER |
1 |
ConfigurationBitType¶
A type of binary configuration option.
Name | Number | Description |
---|---|---|
CONFIGURATION_BIT_TYPE_UNKNOWN |
0 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_1 |
1 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_2 |
2 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_3 |
3 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_4 |
4 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_5 |
5 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_6 |
6 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_7 |
7 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_8 |
8 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_9 |
9 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_10 |
10 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_11 |
11 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_12 |
12 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_13 |
13 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_14 |
14 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_15 |
15 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_16 |
16 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_17 |
17 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_18 |
18 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_19 |
19 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_20 |
20 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_21 |
21 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_22 |
22 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_23 |
23 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_24 |
24 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_25 |
25 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_26 |
26 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_27 |
27 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_28 |
28 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_29 |
29 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_30 |
30 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_31 |
31 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_32 |
32 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_33 |
33 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_34 |
34 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_35 |
35 | |
CONFIGURATION_BIT_TYPE_UNKNOWN_36 |
36 |
RichPresenceType¶
Name | Number | Description |
---|---|---|
RICH_PRESENCE_TYPE_UNKNOWN |
0 | |
RICH_PRESENCE_TYPE_IN_CALL_STATE |
1 | |
RICH_PRESENCE_TYPE_UNKNOWN_3 |
3 | |
RICH_PRESENCE_TYPE_UNKNOWN_4 |
4 | |
RICH_PRESENCE_TYPE_UNKNOWN_5 |
5 | |
RICH_PRESENCE_TYPE_DEVICE |
2 | |
RICH_PRESENCE_TYPE_LAST_SEEN |
6 |
FieldMask¶
Name | Number | Description |
---|---|---|
FIELD_MASK_REACHABLE |
1 | |
FIELD_MASK_AVAILABLE |
2 | |
FIELD_MASK_MOOD |
3 | |
FIELD_MASK_IN_CALL |
6 | |
FIELD_MASK_DEVICE |
7 | |
FIELD_MASK_LAST_SEEN |
10 |
DeleteType¶
Name | Number | Description |
---|---|---|
DELETE_TYPE_UNKNOWN |
0 | |
DELETE_TYPE_UPPER_BOUND |
1 |
SyncFilter¶
Name | Number | Description |
---|---|---|
SYNC_FILTER_UNKNOWN |
0 | |
SYNC_FILTER_INBOX |
1 | |
SYNC_FILTER_ARCHIVED |
2 |
SoundState¶
Name | Number | Description |
---|---|---|
SOUND_STATE_UNKNOWN |
0 | |
SOUND_STATE_ON |
1 | |
SOUND_STATE_OFF |
2 |
CallerIdSettingsMask¶
Name | Number | Description |
---|---|---|
CALLER_ID_SETTINGS_MASK_UNKNOWN |
0 | |
CALLER_ID_SETTINGS_MASK_PROVIDED |
1 |
PhoneVerificationStatus¶
Name | Number | Description |
---|---|---|
PHONE_VERIFICATION_STATUS_UNKNOWN |
0 | |
PHONE_VERIFICATION_STATUS_VERIFIED |
1 |
PhoneDiscoverabilityStatus¶
Name | Number | Description |
---|---|---|
PHONE_DISCOVERABILITY_STATUS_UNKNOWN |
0 | |
PHONE_DISCOVERABILITY_STATUS_OPTED_IN_BUT_NOT_DISCOVERABLE |
2 |
PhoneValidationResult¶
Name | Number | Description |
---|---|---|
PHONE_VALIDATION_RESULT_IS_POSSIBLE |
0 |
OffnetworkAddressType¶
Name | Number | Description |
---|---|---|
OFFNETWORK_ADDRESS_TYPE_UNKNOWN |
0 | |
OFFNETWORK_ADDRESS_TYPE_EMAIL |
1 |
GroupLinkSharingStatus¶
Name | Number | Description |
---|---|---|
GROUP_LINK_SHARING_STATUS_UNKNOWN |
0 | |
GROUP_LINK_SHARING_STATUS_ON |
1 | |
GROUP_LINK_SHARING_STATUS_OFF |
2 |