Get desktop application:
View/edit binary Protocol Buffers messages
Threema contact.
Used in:
, ,Threema ID of the contact Always required.
Public key of the contact Required towards a new device and for a new contact. Should not be set for existing contacts and must be ignored (a public key for an identity cannot be changed).
Unix-ish timestamp in milliseconds when the contact has been created (added) locally. Required towards a new device and for a new contact. Optional for an existing contact.
First name of the contact Always optional. An empty string is valid. When both `first_name` and `last_name` are empty string, the `nickname` should be used as display name.
Last name of the contact Always optional. An empty string is valid. When both `first_name` and `last_name` are empty string, the `nickname` should be used as display name.
Nickname of the contact (without `~` prefix) Always optional. An empty string is valid. If `first_name`, `last_name` and `nickname` are empty string, the Threema ID should be used as display name.
Features available for the contact (64 bit mask, `common.CspFeatureMaskFlag` logically or-ed). Required towards a new device and for a new contact. Optional for an existing contact.
Contact-defined profile picture as received from the contact in a `set-profile-picture` message. Always optional.
User-defined profile picture set by the user or imported from the address book. Always optional.
Conversation category of the contact Required towards a new device and for a new contact. Optional for an existing contact.
Conversation visibility of the contact Required towards a new device and for a new contact. Optional for an existing contact.
Acquaintance level of the contact Required towards a new device and for a new contact. Optional for an existing contact.
Used in:
The contact was explicitly added by the user or a 1:1 conversation with the contact has been initiated.
This level covers the following cases: - The contact is part of a group the user is also part of. The contact was not explicitly added and no 1:1 conversation has been initiated. - The contact was part of a group the user was/is also part of before but either of them has since been removed from all common groups. - The contact has been explicitly removed by the user. The protocol refers to contacts with this level as either acquaintance level _group_ or _deleted_. They are interchangeable and there's no semantic difference between them beyond the context in which they are referred to.
Activity state of the contact Required towards a new device and for a new contact. Optional for an existing contact.
Used in:
The ID is active (used recently and not deleted).
The ID has not been used for a prolonged time (typically 3 months) and may have been abandoned. Such IDs can be marked as "inactive" in the client's contact database, and the user may be alerted to the fact that messages to this ID may not arrive (e.g. alert box, gray color in contact list etc.). An inactive ID can become active again at any time, so the client should keep checking it.
ID has never been assigned, or it has been permanently deleted. Such IDs should be marked as "deleted" in the client's contact database, and no further messages should be sent or received from them. Since deletion is permanent, once an ID has been reported as invalid by the server, it should not be checked again in the future.
Identity type of the contact Required towards a new device and for a new contact. Optional for an existing contact.
Used in:
Regular contact (uses the regular Threema app)
Work contact (uses the Threema work app)
Notification sound policy for the contact Required towards a new device and for a new contact. Optional for an existing contact. Custom sounds are not reflected but are to be (re-)applied in case the policy is _default_.
Used in:
Apply the notification sound policy specified in the settings (i.e. always emit a sound when notifying of a _conversation_ message).
Apply the following notification sound policy
Notification trigger policy for the contact Required towards a new device and for a new contact. Optional for an existing contact.
Used in:
Apply the trigger policy specified in the settings (i.e. trigger on every _conversation_ message).
Apply the following notification trigger policy
Used in:
Unix-ish timestamp in milliseconds when the provided policy should expire and fall back to the default. If not provided, the policy does not expire.
Apply the following notification trigger policy
Used in:
Never trigger a notification message.
_Read_ receipt policy override for this contact Required towards a new device and for a new contact. Optional for an existing contact.
Used in:
Apply the _read_ receipt policy specified in the settings
Apply the following _read_ receipt policy
Contact synchronisation state Required towards a new device and for a new contact. Optional for an existing contact. These states are strict monotonic. When a downgrade is being detected, log the incident and ignore the update.
Used in:
The contact data has not been imported and has not been edited by the user either.
The contact data has been imported (e.g. via a local address book and an identity link). In this state, subsequent contact synchronisations must not alter the contact's data.
The contact data has been edited by the user. In this state, subsequent contact synchronisations must not alter the contact's data.
Typing indicator policy override for this contact Required towards a new device and for a new contact. Optional for an existing contact.
Used in:
Apply the typing indicator policy specified in the settings
Apply the following typing indicator policy
Verification level of the contact Required towards a new device and for a new contact. Optional for an existing contact. Note: When applying logic depending on the verification level, a `WorkVerificationLevel` of `WORK_SUBSCRIPTION_VERIFIED` virtually raises the verification level to `SERVER_VERIFIED`. However, the contact verification level takes precedence if it is `FULLY_VERIFIED`.
Used in:
Unverified, public key has been obtained from the server
Verified with one of the account links via the server, or the contact has been obtained via the Work API.
Verified, public key has been obtained via a secure channel
Threema Work verification level of the contact. Required towards a new device and for a new contact. Optional for an existing contact. Note: When not using a Threema Work client, the Threema Work verification level must always be `NONE`.
Used in:
The user does not use Threema Work or the contact is not in the same Threema Work subscription.
The contact is in the same Threema Work subscription.
Category of a conversation.
Used in:
, ,No specific (default) category
Protected conversation (_private chat_)
Visibility of a conversation.
Used in:
, ,Appears normally in the list of conversations
Appears pinned in the list of conversations
Appears in the archived list of conversations
Threema contacts associated to a distribution list.
Used in:
, ,Unique ID of the distribution list Always required.
Name of the distribution list Required towards a new device and for a new distribution list. Optional for an existing distribution list. An empty string is valid. In such a case, the display name of the distribution list is the list of its members.
Unix-ish timestamp in milliseconds when the group has been created Required towards a new device and for a new distribution list. Optional for an existing distribution list.
Distribution list members Required towards a new device and for a new distribution list. Optional for an existing distribution list. An empty list is **not** valid. Clearing all members should be prevented by the UI.
Conversation category of the distribution list Required towards a new device and for a new distribution list. Optional for an existing distribution list.
Conversation visibility of the distribution list Required towards a new device and for a new distribution list. Optional for an existing distribution list.
Threema contacts associated to a group.
Used in:
, ,Unique group identity Always required.
Name of the group Required towards a new device and for a new group. Optional for an existing group. An empty string is valid. In such a case, the display name of the group is the list of its members.
Unix-ish timestamp in milliseconds when the group has been created locally Required towards a new device and for a new group. Optional for an existing group.
Group's profile picture as received from the group's creator Always optional.
Group members (**NOT** including the creator and the user itself) Required towards a new device and for a new group. Optional for an existing group. The concrete semantic of this list depends on the current `user_state`: - `MEMBER`: It contains a list of all **current** group members (with the user itself implicitly added). - `KICKED`/`LEFT`: It contains a list of all **previous** group members up to that event. If the list is empty, the group must not be visible in the UI. An empty list is valid.
Conversation category of the group Required towards a new device and for a new group. Optional for an existing group.
Conversation visibility of the group Required towards a new device and for a new group. Optional for an existing group.
Notification sound policy for the group Required towards a new device and for a new group. Optional for an existing group. Custom sounds are not reflected but are to be (re-)applied in case the policy is _default_.
Used in:
Apply the notification sound policy specified in the settings (i.e. always emit a sound when notifying of a _conversation_ message).
Apply the following notification sound policy
Notification trigger policy for the group Required towards a new device and for a new group. Optional for an existing group.
Used in:
Apply the trigger policy specified in the settings (i.e. trigger on every _conversation_ message).
Apply the following notification trigger policy
Used in:
Unix-ish timestamp in milliseconds when the provided policy should expire and fall back to the default. If not provided, the policy does not expire.
Apply the following notification trigger policy
Used in:
Only trigger a notification if mentioned in a _conversation_ message.
Never trigger a notification message.
The user's state within the group Required towards a new device and for a new group. Optional for an existing group.
Used in:
The user is a member (or creator) of the group.
The user has been kicked from the group. Implies that the group has been marked as _left_.
The user left the group. Implies that the group has been marked as _left_. If the user is the creator, this implies that the group has been disbanded.
Application configuration parameters shared across Threema Work devices. See [mdm-parameters.md](./md-parameters.md) for documentation of possible parameter values and associated steps to apply when a parameter has been set for the first time, modified, or removed. Note: MDM parameters are always transmitted fully, not as delta updates.
Used in:
,A map of MDM parameters, originating from an external MDM system. The map key is the identifier of the MDM parameter (e.g. `th_nickname`).
A map of MDM parameters, originating from Threema App Configuration. The map key is the identifier of the MDM parameter (e.g. `th_nickname`).
The parameter precedence defines how to resolve conflicting parameters between an external MDM and the Threema App Configuration.
A single MDM parameter.
Used in:
String parameter
Integer parameter
Boolean parameter
Used in:
On conflict, parameters defined by Threema App Configuration take precedence
On conflict, parameters defined by an external MDM take precedence
Notification sound policy.
Used in:
,Do not emit a sound when notifying of a _conversation_ message.
_Read_ receipt policy (when an unread message has been read)
Used in:
,Send _read_ receipt when an unread message has been read
Don't send _read_ receipts
App settings When the user changes one or more settings: 1. Begin a transaction (scope: `SETTINGS_SYNC`, precondition: none). 2. For each setting that has been modified, run the associated steps of the setting and include the modified settings. 3. Reflect this message and commit the transaction. 4. Apply the modified settings locally. When reflected from another device: 1. For each setting that is being included by this message, run the associated steps of the setting and apply the modified setting.
Used in:
,_Read_ receipt policy (when an unread message has been read) Required towards a new device. Optional otherwise.
Typing indicator policy (signal _currently typing_) Required towards a new device. Optional otherwise.
List of Threema IDs whose messages are blocked Required towards a new device. Optional otherwise. An empty list is valid.
Threema IDs to be excluded when syncing the contact list Required towards a new device. Optional otherwise. An empty list is valid.
Contact synchronisation policy Required towards a new device. Optional otherwise.
Used in:
Not synced
Synced
Threema Group Call policy Required towards a new device. Optional otherwise.
Used in:
Allow creating/receiving Threema Group Calls
Denied from creating/receiving any Threema Group Calls
Keyboard data collection policy (e.g. for personalised suggestions) Required towards a new device. Optional otherwise.
Used in:
Allow keyboard input data to be collected
Deny collecting of keyboard input data
Threema 1:1 Call connection policy. Required towards a new device. Optional otherwise. Note: This is only relevant for 1:1 calls.
Used in:
Allow direct (peer-to-peer) connections for Threema 1:1 Calls
Require relayed connections for Threema 1:1 Calls
Threema 1:1 Call policy Required towards a new device. Optional otherwise.
Used in:
Allow creating/receiving Threema 1:1 Calls
Denied from creating/receiving any Threema 1:1 Calls
Threema 1:1 Call video (stream) policy. Required towards a new device. Optional otherwise.
Used in:
Allow sending and receiving video streams in Threema 1:1 Calls.
Reject and don't send video streams in Threema 1:1 Calls.
Screenshot policy Required towards a new device. Optional otherwise.
Used in:
Allow taking screenshots
Deny taking screenshots, if possible
Unknown contacts policy Required towards a new device. Optional otherwise.
Used in:
Allowed to contact the user
Will be blocked by the user
Threema Work credentials for authentication towards Work APIs.
Used in:
Work username.
Work password.
Typing indicator policy (signal _currently typing_)
Used in:
,Send _typing_ indicator when a message is being composed
Don't send _typing_ indicators
The user's profile.
Used in:
,Nickname Required towards a new device. Optional otherwise. When the user cleared its nickname, send an empty string. Do not send the user's Threema ID (i.e. process data). When an empty string was received, store the empty string as-is and fall back to the users Threema ID when sending an end-to-end encrypted message.
Profile picture Always optional.
External entities linked with the identity Required towards a new device. Optional otherwise. When the user has cleared all of its identity links, this message is present but `links` contains zero items.
Used in:
List of identity links
Threema ID link.
Used in:
Identity link type
Linked with a verified telephone number (E.164 format without leading `+`)
Linked with a verified email address
Identity link description
Profile picture share policy Required towards a new device. Optional otherwise.
Used in:
Don't share
Share with everyone
Share only with explicitly listed contacts When the user selected _allow list_ but did not select any contacts, send an empty list. Do not fall back to `nobody`.