]> nmode's Git Repositories - signal-cli/blobdiff - man/signal-cli-dbus.5.adoc
Rename username to account
[signal-cli] / man / signal-cli-dbus.5.adoc
index c5c27fa9aa371df9f72ec1299f67ecb8ba84e123..5950b582814864db3896e9dca9f743d3a1ff72e1 100755 (executable)
@@ -11,11 +11,11 @@ DBus API for signal-cli - A commandline and dbus interface for the Signal messen
 
 == Synopsis
 
-*signal-cli* [--verbose] [--config CONFIG] [-u USERNAME] [-o {plain-text,json}] daemon [--system]
+*signal-cli* [--verbose] [--config CONFIG] [-a ACCOUNT] [-o {plain-text,json}] daemon [--system]
 
 *dbus-send* [--system | --session] [--print-reply] --type=method_call --dest="org.asamk.Signal" /org/asamk/Signal[/_<phonenum>] org.asamk.Signal.<method> [string:<string argument>] [array:<type>:<array argument>]
 
-Note: when daemon was started without explicit `-u USERNAME`, the `dbus-send` command requires adding the phone number in `/org/asamk/Signal/_<phonenum>`.
+Note: when daemon was started without explicit `-a ACCOUNT`, the `dbus-send` command requires adding the phone number in `/org/asamk/Signal/_<phonenum>`.
 
 == Description
 
@@ -29,7 +29,7 @@ method(arg1<type>, arg2<type>, ...) -> return<type>
 
 Where <type> is according to DBus specification:
 
-* <a>   : Array of ... (comma-separated list)
+* <a>   : Array of ... (comma-separated list) (array:)
 * (...) : Struct (cannot be sent via `dbus-send`)
 * <b>   : Boolean (false|true) (boolean:)
 * <i>   : Signed 32-bit (int) integer (int32:)
@@ -48,17 +48,17 @@ Phone numbers always have the format +<countrycode><regional number>
 == Methods
 
 === Control methods
-These methods are available if the daemon is started anonymously (without an explicit `-u USERNAME`).
+These methods are available if the daemon is started anonymously (without an explicit `-a ACCOUNT`).
 Requests are sent to `/org/asamk/Signal`; requests related to individual accounts are sent to
 `/org/asamk/Signal/_441234567890` where the + dialing code is replaced by an underscore (_).
-Only `version()` is activated in single-user mode; the rest are disabled.
+Only `version()` is activated in single-account mode; the rest are disabled.
 
 link() -> deviceLinkUri<s>::
 link(newDeviceName<s>) -> deviceLinkUri<s>::
 * newDeviceName : Name to give new device (defaults to "cli" if no name is given)
 * deviceLinkUri : URI of newly linked device
 
-Returns a URI of the form "sgnl://linkdevice/?uuid=...". This can be piped to a QR encoder to create a display that
+Returns a URI of the form "sgnl://linkdevice?uuid=...". This can be piped to a QR encoder to create a display that
 can be captured by a Signal smartphone client. For example:
 
 `dbus-send --session --dest=org.asamk.Signal --type=method_call --print-reply /org/asamk/Signal org.asamk.Signal.link string:"My secondary client"|tr '\n' '\0'|sed 's/.*string //g'|sed 's/\"//g'|qrencode -s10 -tANSI256`
@@ -103,210 +103,292 @@ version() -> version<s>::
 
 Exceptions: None
 
-=== Device methods
-Requests for these methods are sent to a specific device (main or linked); the list is available
-from the listDevices() method (see below under "Other methods").
+=== Group control methods
+The following methods listen to the recipient's object path, which is constructed as follows:
+"/org/asamk/Signal/" + DBusNumber
+* DBusNumber  : recipient's phone number, with underscore (_) replacing plus (+)
 
-removeDevice() -> <>::
+createGroup(groupName<s>, members<as>, avatar<s>) -> groupId<ay>::
+* groupName : String representing the display name of the group
+* members   : String array of new members to be invited to group
+* avatar    : Filename of avatar picture to be set for group (empty if none)
+* groupId   : Byte array representing the internal group identifier
 
-Exceptions: Failure
+Exceptions: AttachmentInvalid, Failure, InvalidNumber;
 
-=== Other methods
+getGroup(groupId<ay>) -> objectPath<o>::
+* groupId    : Byte array representing the internal group identifier
+* objectPath : DBusPath for the group
 
-updateGroup(groupId<ay>, newName<s>, members<as>, avatar<s>) -> groupId<ay>::
-* groupId  : Byte array representing the internal group identifier
-* newName  : New name of group (empty if unchanged)
-* members  : String array of new members to be invited to group
-* avatar   : Filename of avatar picture to be set for group (empty if none)
+getGroupMembers(groupId<ay>) -> members<as>::
+* groupId   : Byte array representing the internal group identifier
+* members   : String array with the phone numbers of all active members of a group
 
-Exceptions: AttachmentInvalid, Failure, InvalidNumber, GroupNotFound
+Exceptions: None, if the group name is not found an empty array is returned
 
-updateProfile(name<s>, about<s>, aboutEmoji <s>, avatar<s>, remove<b>) -> <>::
-updateProfile(givenName<s>, familyName<s>, about<s>, aboutEmoji <s>, avatar<s>, remove<b>) -> <>::
-* name        : Name for your own profile (empty if unchanged)
-* givenName   : Given name for your own profile (empty if unchanged)
-* familyName  : Family name for your own profile (empty if unchanged)
-* about       : About message for profile (empty if unchanged)
-* aboutEmoji  : Emoji for profile (empty if unchanged)
-* avatar      : Filename of avatar picture for profile (empty if unchanged)
-* remove      : Set to true if the existing avatar picture should be removed
+joinGroup(inviteURI<s>) -> <>::
+* inviteURI : String starting with https://signal.group/#
+
+Behavior of this method depends on the `requirePermission` parameter of the `enableLink` method. If permission is required, `joinGroup` adds you to the requesting members list. Permission may be granted based on the group's `PermissionAddMember` property (`ONLY_ADMINS` or `EVERY_MEMBER`). If permission is not required, `joinGroup` admits you immediately to the group.
 
 Exceptions: Failure
 
+listGroups() -> groups<a(oays)>::
+* groups          : Array of Structs(objectPath, groupId, groupName)
+** objectPath      : DBusPath
+** groupId         : Byte array representing the internal group identifier
+** groupName       : String representing the display name of the group
 
-setExpirationTimer(number<s>, expiration<i>) -> <>::
-* number     : Phone number of recipient
-* expiration : int32 for the number of seconds before messages to this recipient disappear. Set to 0 to disable expiration.
+sendGroupMessage(message<s>, attachments<as>, groupId<ay>) -> timestamp<x>::
+* message     : Text to send (can be UTF8)
+* attachments : String array of filenames to send as attachments (passed as filename, so need to be readable by the user signal-cli is running under)
+* groupId     : Byte array representing the internal group identifier
+* timestamp   : Long, can be used to identify the corresponding Signal reply
 
-Exceptions: Failure, InvalidNumber
+Exceptions: GroupNotFound, Failure, AttachmentInvalid, InvalidGroupId
 
-setContactBlocked(number<s>, block<b>) -> <>::
-* number  : Phone number affected by method
-* block   : false=remove block, true=blocked
+sendGroupMessageReaction(emoji<s>, remove<b>, targetAuthor<s>, targetSentTimestamp<x>, groupId<ay>) -> timestamp<x>::
+* emoji               : Unicode grapheme cluster of the emoji
+* remove              : Boolean, whether a previously sent reaction (emoji) should be removed
+* targetAuthor        : String with the phone number of the author of the message to which to react
+* targetSentTimestamp : Long representing timestamp of the message to which to react
+* groupId             : Byte array representing the internal group identifier
+* timestamp           : Long, can be used to identify the corresponding signal reply
 
-Messages from blocked numbers will no longer be forwarded via DBus.
+Exceptions: Failure, InvalidNumber, GroupNotFound, InvalidGroupId
 
-Exceptions: InvalidNumber
+sendGroupRemoteDeleteMessage(targetSentTimestamp<x>, groupId<ay>) -> timestamp<x>::
+* targetSentTimestamp : Long representing timestamp of the message to delete
+* groupId             : Byte array with base64 encoded group identifier
+* timestamp           : Long, can be used to identify the corresponding signal reply
 
-setGroupBlocked(groupId<ay>, block<b>) -> <>::
-* groupId : Byte array representing the internal group identifier
-* block   : false=remove block , true=blocked
+Exceptions: Failure, GroupNotFound, InvalidGroupId
 
-Messages from blocked groups will no longer be forwarded via DBus.
+=== Group methods
+The following methods listen to the group's object path, which can be obtained from the listGroups() method and is constructed as follows:
+"/org/asamk/Signal/" + DBusNumber + "/Groups/" + DBusGroupId
+* DBusNumber  : recipient's phone number, with underscore (_) replacing plus (+)
+* DBusGroupId : groupId in base64 format, with underscore (_) replacing plus (+), equals (=), or slash (/)
+
+Groups have the following (case-sensitive) properties:
+* Id<ay> (read-only)                : Byte array representing the internal group identifier
+* Name<s>                           : Display name of the group
+* Description<s>                    : Description of the group
+* Avatar<s> (write-only)            : Filename of the avatar
+* IsBlocked<b>                      : true=member will not receive group messages; false=not blocked
+* IsMember<b> (read-only)           : always true (object path exists only for group members)
+* IsAdmin<b> (read-only)            : true=member has admin privileges; false=not admin
+* MessageExpirationTimer<i>         : int32 representing message expiration time for group
+* Members<as> (read-only)           : String array of group members' phone numbers
+* PendingMembers<as> (read-only)    : String array of pending members' phone numbers
+* RequestingMembers<as> (read-only) : String array of requesting members' phone numbers
+* Admins<as> (read-only)            : String array of admins' phone numbers
+* PermissionAddMember<s>            : String representing who has permission to add members
+** ONLY_ADMINS, EVERY_MEMBER
+* PermissionEditDetails<s>          : String representing who may edit group details
+** ONLY_ADMINS, EVERY_MEMBER
+* PermissionSendMessage<s>          : String representing who post messages to group
+** ONLY_ADMINS, EVERY_MEMBER (note that ONLY_ADMINS is equivalent to IsAnnouncementGroup)
+* GroupInviteLink<s> (read-only)    : String of the invitation link (starts with https://signal.group/#)
+
+To get a property, use (replacing `--session` with `--system` if needed):
+`dbus-send --session --dest=org.asamk.Signal --print-reply $OBJECT_PATH org.freedesktop.DBus.Properties.Get string:org.asamk.Signal.Group string:$PROPERTY_NAME`
+
+To set a property, use:
+`dbus-send --session --dest=org.asamk.Signal --print-reply $OBJECT_PATH org.freedesktop.DBus.Properties.Set string:org.asamk.Signal.Group string:$PROPERTY_NAME variant:$PROPERTY_TYPE:$PROPERTY_VALUE`
+
+To get all properties, use:
+`dbus-send --session --dest=org.asamk.Signal --print-reply $OBJECT_PATH org.freedesktop.DBus.Properties.GetAll string:org.asamk.Signal.Group`
+
+addAdmins(recipients<as>) -> <>::
+* recipients  : String array of phone numbers
 
-Exceptions: GroupNotFound, InvalidGroupId
+Grant admin privileges to recipients.
 
-joinGroup(inviteURI<s>) -> <>::
-* inviteURI : String starting with https://signal.group which is generated when you share a group link via Signal App
+Exceptions: Failure
+
+addMembers(recipients<as>) -> <>::
+* recipients  : String array of phone numbers
+
+Add recipients to group if they are pending members; otherwise add recipients to list of requesting members.
 
 Exceptions: Failure
 
-quitGroup(groupId<ay>) -> <>::
-* groupId : Byte array representing the internal group identifier
+disableLink() -> <>::
 
-Note that quitting a group will not remove the group from the getGroupIds command, but set it inactive which can be tested with isMember()
+Disables the group's invitation link.
 
-Exceptions: GroupNotFound, Failure, InvalidGroupId
+Exceptions: Failure
 
-isMember(groupId<ay>) -> isMember<b>::
-* groupId   : Byte array representing the internal group identifier
-* isMember  : true=you are a group member; false=you are not a group member
+enableLink(requiresApproval<b>) -> <>::
+* requiresApproval : true=add numbers using the link to the requesting members list
 
-Note that this method does not raise an Exception for a non-existing/unknown group but will simply return 0 (false)
+Enables the group's invitation link.
 
-sendEndSessionMessage(recipients<as>) -> <>::
-* recipients : Array of phone numbers 
+Exceptions: Failure
 
-Exceptions: Failure, InvalidNumber, UntrustedIdentity
+quitGroup() -> <>::
+Exceptions: Failure, LastGroupAdmin
 
-sendGroupMessage(message<s>, attachments<as>, groupId<ay>) -> timestamp<x>::
-* message     : Text to send (can be UTF8)
-* attachments : String array of filenames to send as attachments (passed as filename, so need to be readable by the user signal-cli is running under)
-* groupId     : Byte array representing the internal group identifier
-* timestamp   : Long, can be used to identify the corresponding Signal reply
+removeAdmins(recipients<as>) -> <>::
+* recipients  : String array of phone numbers
 
-Exceptions: GroupNotFound, Failure, AttachmentInvalid, InvalidGroupId
+Remove admin privileges from recipients.
 
-sendContacts() -> <>::
+Exceptions: Failure
 
-Sends a synchronization message with the local contacts list to all linked devices. This command should only be used if this is the primary device.
+removeMembers(recipients<as>) -> <>::
+* recipients  : String array of phone numbers
+
+Remove recipients from group.
 
 Exceptions: Failure
 
-sendSyncRequest() -> <>::
+resetLink() -> <>::
 
-Sends a synchronization request to the primary device (for group, contacts, ...). Only works if sent from a secondary device.
+Resets the group's invitation link to a new random URL starting with https://signal.group/#
 
 Exceptions: Failure
 
-sendNoteToSelfMessage(message<s>, attachments<as>) -> timestamp<x>::
-* message     : Text to send (can be UTF8)
-* attachments : String array of filenames to send as attachments (passed as filename, so need to be readable by the user signal-cli is running under)
-* timestamp   : Long, can be used to identify the corresponding Signal reply
+=== Deprecated group control methods
+The following deprecated methods listen to the recipient's object path, which is constructed as follows:
+"/org/asamk/Signal/" + DBusNumber
+* DBusNumber  : recipient's phone number, with underscore (_) replacing plus (+)
 
-Exceptions: Failure, AttachmentInvalid
+getGroupIds() -> groupList<aay>::
+groupList : Array of Byte arrays representing the internal group identifiers
 
-sendMessage(message<s>, attachments<as>, recipient<s>) -> timestamp<x>::
-sendMessage(message<s>, attachments<as>, recipients<as>) -> timestamp<x>::
-* message     : Text to send (can be UTF8)
-* attachments : String array of filenames to send as attachments (passed as filename, so need to be readable by the user signal-cli is running under)
-* recipient   : Phone number of a single recipient
-* recipients  : String array of phone numbers
-* timestamp   : Long, can be used to identify the corresponding Signal reply
+All groups known are returned, regardless of their active or blocked status. To query that use isMember() and isGroupBlocked()
 
-Depending on the type of the recipient field this sends a message to one or multiple recipients.
+Exceptions: None
 
-Exceptions: AttachmentInvalid, Failure, InvalidNumber, UntrustedIdentity
+getGroupName(groupId<ay>) -> groupName<s>::
+* groupId   : Byte array representing the internal group identifier
+* groupName : The display name of the group
 
-sendTyping(recipient<s>, stop<b>) -> <>::
-* recipient             : Phone number of a single recipient
-* targetSentTimestamp   : True, if typing state should be stopped
+Exceptions: None, if the group name is not found an empty string is returned
 
-Exceptions: Failure, GroupNotFound, UntrustedIdentity
+isGroupBlocked(groupId<ay>) -> isGroupBlocked<b>::
+* groupId        : Byte array representing the internal group identifier
+* isGroupBlocked : true=group is blocked; false=group is not blocked
 
-sendReadReceipt(recipient<s>, targetSentTimestamps<ax>) -> <>::
-* recipient             : Phone number of a single recipient
-* targetSentTimestamps  : Array of Longs to identify the corresponding Signal messages
+Dbus will not forward messages from a group when you have blocked it.
 
-Exceptions: Failure, UntrustedIdentity
+Exceptions: InvalidGroupId, Failure
 
-sendGroupMessageReaction(emoji<s>, remove<b>, targetAuthor<s>, targetSentTimestamp<x>, groupId<ay>) -> timestamp<x>::
-* emoji               : Unicode grapheme cluster of the emoji
-* remove              : Boolean, whether a previously sent reaction (emoji) should be removed
-* targetAuthor        : String with the phone number of the author of the message to which to react
-* targetSentTimestamp : Long representing timestamp of the message to which to react
-* groupId             : Byte array representing the internal group identifier
-* timestamp           : Long, can be used to identify the corresponding signal reply
+isMember(groupId<ay>) -> isMember<b>::
+* groupId   : Byte array representing the internal group identifier
+* isMember  : true=you are a group member; false=you are not a group member
 
-Exceptions: Failure, InvalidNumber, GroupNotFound, InvalidGroupId
+Note that this method does not raise an Exception for a non-existing/unknown group but will simply return 0 (false)
 
-sendMessageReaction(emoji<s>, remove<b>, targetAuthor<s>, targetSentTimestamp<x>, recipient<s>) -> timestamp<x>::
-sendMessageReaction(emoji<s>, remove<b>, targetAuthor<s>, targetSentTimestamp<x>, recipients<as>) -> timestamp<x>::
-* emoji               : Unicode grapheme cluster of the emoji
-* remove              : Boolean, whether a previously sent reaction (emoji) should be removed
-* targetAuthor        : String with the phone number of the author of the message to which to react
-* targetSentTimestamp : Long representing timestamp of the message to which to react
-* recipient           : String with the phone number of a single recipient
-* recipients          : Array of strings with phone numbers, should there be more recipients
-* timestamp           : Long, can be used to identify the corresponding Signal reply
+quitGroup(groupId<ay>) -> <>::
+* groupId : Byte array representing the internal group identifier
 
-Depending on the type of the recipient(s) field this sends a reaction to one or multiple recipients.
+Note that quitting a group will not remove the group from the getGroupIds command, but set it inactive which can be tested with isMember()
 
-Exceptions: Failure, InvalidNumber
+Exceptions: GroupNotFound, Failure, InvalidGroupId
 
-sendGroupRemoteDeleteMessage(targetSentTimestamp<x>, groupId<ay>) -> timestamp<x>::
-* targetSentTimestamp : Long representing timestamp of the message to delete
-* groupId             : Byte array with base64 encoded group identifier
-* timestamp           : Long, can be used to identify the corresponding signal reply
+setGroupBlocked(groupId<ay>, block<b>) -> <>::
+* groupId : Byte array representing the internal group identifier
+* block   : false=remove block , true=blocked
 
-Exceptions: Failure, GroupNotFound, InvalidGroupId
+Messages from blocked groups will no longer be forwarded via DBus.
 
-sendRemoteDeleteMessage(targetSentTimestamp<x>, recipient<s>) -> timestamp<x>::
-sendRemoteDeleteMessage(targetSentTimestamp<x>, recipients<as>) -> timestamp<x>::
-* targetSentTimestamp : Long representing timestamp of the message to delete
-* recipient           : String with the phone number of a single recipient
-* recipients          : Array of strings with phone numbers, should there be more recipients
-* timestamp           : Long, can be used to identify the corresponding signal reply
+Exceptions: GroupNotFound, InvalidGroupId
 
-Depending on the type of the recipient(s) field this deletes a message with one or multiple recipients.
+updateGroup(groupId<ay>, newName<s>, members<as>, avatar<s>) -> groupId<ay>::
+* groupId  : Byte array representing the internal group identifier
+* newName  : New name of group (empty if unchanged)
+* members  : String array of new members to be invited to group
+* avatar   : Filename of avatar picture to be set for group (empty if none)
 
-Exceptions: Failure, InvalidNumber
+Exceptions: AttachmentInvalid, Failure, InvalidNumber, GroupNotFound
 
-getContactName(number<s>) -> name<s>::
-* number  : Phone number
-* name    : Contact's name in local storage (from the master device for a linked account, or the one set with setContactName); if not set, contact's profile name is used
+=== Device control methods
+The following methods listen to the recipient's object path, which is constructed as follows:
+"/org/asamk/Signal/" + DBusNumber
+* DBusNumber  : recipient's phone number, with underscore (_) replacing plus (+)
 
-Exceptions: None
+addDevice(deviceUri<s>) -> <>::
+* deviceUri : URI in the form of "sgnl://linkdevice?uuid=..." (formerly "tsdevice:/?uuid=...") Normally displayed by a Signal desktop app, smartphone app, or another signal-cli instance using the `link` control method.
 
-setContactName(number<s>,name<>) -> <>::
-* number  : Phone number
-* name    : Name to be set in contacts (in local storage with signal-cli)
+getDevice(deviceId<x>) -> devicePath<o>::
+* deviceId   : Long representing a deviceId
+* devicePath : DBusPath object for the device
 
-Exceptions: InvalidNumber, Failure
+Exceptions: DeviceNotFound
 
-getGroupIds() -> groupList<aay>::
-groupList : Array of Byte arrays representing the internal group identifiers
+listDevices() -> devices<a(oxs)>::
+* devices      : Array of structs (objectPath, id, name)
+** objectPath   : DBusPath representing the device's object path
+** id           : Long representing the deviceId
+** name         : String representing the device's name
 
-All groups known are returned, regardless of their active or blocked status. To query that use isMember() and isGroupBlocked()
+Exceptions: InvalidUri
 
-Exceptions: None
+sendContacts() -> <>::
 
-getGroupName(groupId<ay>) -> groupName<s>::
-* groupId   : Byte array representing the internal group identifier
-* groupName : The display name of the group
+Sends a synchronization message with the local contacts list to all linked devices. This command should only be used if this is the primary device.
 
-Exceptions: None, if the group name is not found an empty string is returned
+Exceptions: Failure
 
-getGroupMembers(groupId<ay>) -> members<as>::
-* groupId   : Byte array representing the internal group identifier
-* members   : String array with the phone numbers of all active members of a group
+sendSyncRequest() -> <>::
 
-Exceptions: None, if the group name is not found an empty array is returned
+Sends a synchronization request to the primary device (for group, contacts, ...). Only works if sent from a secondary device.
 
-listNumbers() -> numbers<as>::
-* numbers : String array of all known numbers
+Exceptions: Failure
 
-This is a concatenated list of all defined contacts as well of profiles known (e.g. peer group members or sender of received messages)
+=== Device methods and properties
+The following methods listen to the device's object path, which is constructed as follows:
+"/org/asamk/Signal/" + DBusNumber + "/Devices/" + deviceId
+* DBusNumber  : recipient's phone number, with underscore (_) replacing plus (+)
+* deviceId    : Long representing the device identifier (obtained from listDevices() method)
+
+Devices have the following (case-sensitive) properties:
+* Id<x> (read-only)       : Long representing the device identifier
+* Created<x> (read-only)  : Long representing the number of milliseconds since the Unix epoch
+* LastSeen<x> (read-only) : Long representing the number of milliseconds since the Unix epoch
+* Name<s>                 : String representing the display name of the device
+
+To get a property, use (replacing `--session` with `--system` if needed):
+`dbus-send --session --dest=org.asamk.Signal --print-reply $OBJECT_PATH org.freedesktop.DBus.Properties.Get string:org.asamk.Signal.Device string:$PROPERTY_NAME`
+
+To set a property, use:
+`dbus-send --session --dest=org.asamk.Signal --print-reply $OBJECT_PATH org.freedesktop.DBus.Properties.Set string:org.asamk.Signal.Device string:$PROPERTY_NAME variant:$PROPERTY_TYPE:$PROPERTY_VALUE`
+
+To get all properties, use:
+`dbus-send --session --dest=org.asamk.Signal --print-reply $OBJECT_PATH org.freedesktop.DBus.Properties.GetAll string:org.asamk.Signal.Device`
+
+removeDevice() -> <>::
+
+Exceptions: Failure
+
+=== Configuration properties
+The configuration's object path, which exists only for primary devices, is constructed as follows:
+"/org/asamk/Signal/" + DBusNumber + "/Configuration"
+* DBusNumber  : recipient's phone number, with underscore (_) replacing plus (+)
+
+Configurations have the following (case-sensitive) properties:
+* ReadReceipts<b>                   : should send read receipts (true/false)
+* UnidentifiedDeliveryIndicators<b> : should show unidentified delivery indicators (true/false)
+* TypingIndicators<b>               : should send/show typing indicators (true/false)
+* LinkPreviews<b>                   : should generate link previews (true/false)
+
+To get a property, use (replacing `--session` with `--system` if needed):
+`dbus-send --session --dest=org.asamk.Signal --print-reply $OBJECT_PATH org.freedesktop.DBus.Properties.Get string:org.asamk.Signal.Configuration string:$PROPERTY_NAME`
+
+To set a property, use:
+`dbus-send --session --dest=org.asamk.Signal --print-reply $OBJECT_PATH org.freedesktop.DBus.Properties.Set string:org.asamk.Signal.Configuration string:$PROPERTY_NAME variant:$PROPERTY_TYPE:$PROPERTY_VALUE`
+
+To get all properties, use:
+`dbus-send --session --dest=org.asamk.Signal --print-reply $OBJECT_PATH org.freedesktop.DBus.Properties.GetAll string:org.asamk.Signal.Configuration`
+
+=== Other methods
+
+getContactName(number<s>) -> name<s>::
+* number  : Phone number
+* name    : Contact's name in local storage (from the master device for a linked account, or the one set with setContactName); if not set, contact's profile name is used
 
 Exceptions: None
 
@@ -318,6 +400,11 @@ Searches contacts and known profiles for a given name and returns the list of al
 
 Exceptions: None
 
+getSelfNumber() -> number<s>::
+* number : Your phone number
+
+Exceptions: None
+
 isContactBlocked(number<s>) -> blocked<b>::
 * number    : Phone number
 * blocked   : true=blocked, false=not blocked
@@ -326,13 +413,24 @@ For unknown numbers false is returned but no exception is raised.
 
 Exceptions: InvalidPhoneNumber
 
-isGroupBlocked(groupId<ay>) -> isGroupBlocked<b>::
-* groupId        : Byte array representing the internal group identifier
-* isGroupBlocked : true=group is blocked; false=group is not blocked
+isRegistered() -> result<b>::
+isRegistered(number<s>) -> result<b>::
+isRegistered(numbers<as>) -> results<ab>::
+* number  : Phone number
+* numbers : String array of phone numbers
+* result  : true=number is registered, false=number is not registered
+* results : Boolean array of results
 
-Dbus will not forward messages from a group when you have blocked it.
+For unknown numbers, false is returned, but no exception is raised. If no number is given, returns true (indicating that you are registered).
 
-Exceptions: InvalidGroupId, Failure
+Exceptions: InvalidNumber
+
+listNumbers() -> numbers<as>::
+* numbers : String array of all known numbers
+
+This is a concatenated list of all defined contacts as well of profiles known (e.g. peer group members or sender of received messages)
+
+Exceptions: None
 
 removePin() -> <>::
 
@@ -340,55 +438,97 @@ Removes registration PIN protection.
 
 Exceptions: Failure
 
-setPin(pin<s>) -> <>::
-* pin               : PIN you set after registration (resets after 7 days of inactivity)
+sendEndSessionMessage(recipients<as>) -> <>::
+* recipients : Array of phone numbers
 
-Sets a registration lock PIN, to prevent others from registering your number.
+Exceptions: Failure, InvalidNumber, UntrustedIdentity
 
-Exceptions: Failure
+sendMessage(message<s>, attachments<as>, recipient<s>) -> timestamp<x>::
+sendMessage(message<s>, attachments<as>, recipients<as>) -> timestamp<x>::
+* message     : Text to send (can be UTF8)
+* attachments : String array of filenames to send as attachments (passed as filename, so need to be readable by the user signal-cli is running under)
+* recipient   : Phone number of a single recipient
+* recipients  : String array of phone numbers
+* timestamp   : Long, can be used to identify the corresponding Signal reply
 
-version() -> version<s>::
-* version : Version string of signal-cli
+Depending on the type of the recipient field this sends a message to one or multiple recipients.
 
-Exceptions: None
+Exceptions: AttachmentInvalid, Failure, InvalidNumber, UntrustedIdentity
 
-getSelfNumber() -> number<s>::
-* number : Your phone number
+sendMessageReaction(emoji<s>, remove<b>, targetAuthor<s>, targetSentTimestamp<x>, recipient<s>) -> timestamp<x>::
+sendMessageReaction(emoji<s>, remove<b>, targetAuthor<s>, targetSentTimestamp<x>, recipients<as>) -> timestamp<x>::
+* emoji               : Unicode grapheme cluster of the emoji
+* remove              : Boolean, whether a previously sent reaction (emoji) should be removed
+* targetAuthor        : String with the phone number of the author of the message to which to react
+* targetSentTimestamp : Long representing timestamp of the message to which to react
+* recipient           : String with the phone number of a single recipient
+* recipients          : Array of strings with phone numbers, should there be more recipients
+* timestamp           : Long, can be used to identify the corresponding Signal reply
 
-Exceptions: None
+Depending on the type of the recipient(s) field this sends a reaction to one or multiple recipients.
 
-isRegistered() -> result<b>::
-isRegistered(number<s>) -> result<b>::
-isRegistered(numbers<as>) -> results<ab>::
-* number  : Phone number
-* numbers : String array of phone numbers
-* result  : true=number is registered, false=number is not registered
-* results : Boolean array of results
+Exceptions: Failure, InvalidNumber
 
-For unknown numbers, false is returned, but no exception is raised. If no number is given, returns true (indicating that you are registered).
+sendNoteToSelfMessage(message<s>, attachments<as>) -> timestamp<x>::
+* message     : Text to send (can be UTF8)
+* attachments : String array of filenames to send as attachments (passed as filename, so need to be readable by the user signal-cli is running under)
+* timestamp   : Long, can be used to identify the corresponding Signal reply
+
+Exceptions: Failure, AttachmentInvalid
+
+sendReadReceipt(recipient<s>, targetSentTimestamps<ax>) -> <>::
+* recipient             : Phone number of a single recipient
+* targetSentTimestamps  : Array of Longs to identify the corresponding Signal messages
+
+Exceptions: Failure, UntrustedIdentity
+
+sendViewedReceipt(recipient<s>, targetSentTimestamp<ax>) -> <>::
+* recipient             : Phone number of a single recipient
+* targetSentTimestamp   : Array of Longs to identify the corresponding signal messages
+
+Exceptions: Failure, UntrustedIdentity
+
+sendRemoteDeleteMessage(targetSentTimestamp<x>, recipient<s>) -> timestamp<x>::
+sendRemoteDeleteMessage(targetSentTimestamp<x>, recipients<as>) -> timestamp<x>::
+* targetSentTimestamp : Long representing timestamp of the message to delete
+* recipient           : String with the phone number of a single recipient
+* recipients          : Array of strings with phone numbers, should there be more recipients
+* timestamp           : Long, can be used to identify the corresponding signal reply
+
+Depending on the type of the recipient(s) field this deletes a message with one or multiple recipients.
+
+Exceptions: Failure, InvalidNumber
+
+sendTyping(recipient<s>, stop<b>) -> <>::
+* recipient             : Phone number of a single recipient
+* targetSentTimestamp   : True, if typing state should be stopped
+
+Exceptions: Failure, GroupNotFound, UntrustedIdentity
+
+setContactBlocked(number<s>, block<b>) -> <>::
+* number  : Phone number affected by method
+* block   : false=remove block, true=blocked
+
+Messages from blocked numbers will no longer be forwarded via DBus.
 
 Exceptions: InvalidNumber
 
-addDevice(deviceUri<s>) -> <>::
-* deviceUri : URI in the form of "sgnl://linkdevice/?uuid=..." (formerly "tsdevice:/?uuid=...") Normally displayed by a Signal desktop app, smartphone app, or another signal-cli instance using the `link` control method.
+setContactName(number<s>,name<>) -> <>::
+* number  : Phone number
+* name    : Name to be set in contacts (in local storage with signal-cli)
 
-listDevices() -> devices<a(oxs)>::
-* devices      : Array of structs (objectPath, id, name)
-** objectPath   : DBusPath representing the device's object path
-** id           : Long representing the deviceId
-** name         : String representing the device's name
+Exceptions: InvalidNumber, Failure
 
-Exceptions: InvalidUri
+setExpirationTimer(number<s>, expiration<i>) -> <>::
+* number     : Phone number of recipient
+* expiration : int32 for the number of seconds before messages to this recipient disappear. Set to 0 to disable expiration.
 
-getDevice(deviceId<x>) -> devicePath<o>::
-* deviceId   : Long representing a (potential) deviceId
-* devicePath : DBusPath object for the device
+Exceptions: Failure, InvalidNumber
 
-Exceptions: DeviceNotFound
+setPin(pin<s>) -> <>::
+* pin               : PIN you set after registration (resets after 7 days of inactivity)
 
-uploadStickerPack(stickerPackPath<s>) -> url<s>::
-* stickerPackPath : Path to the manifest.json file or a zip file in the same directory
-* url             : URL of sticker pack after successful upload
+Sets a registration lock PIN, to prevent others from registering your number.
 
 Exceptions: Failure
 
@@ -399,6 +539,29 @@ Can be used to lift some rate-limits by solving a captcha.
 
 Exception: IOErrorException
 
+updateProfile(name<s>, about<s>, aboutEmoji <s>, avatar<s>, remove<b>) -> <>::
+updateProfile(givenName<s>, familyName<s>, about<s>, aboutEmoji <s>, avatar<s>, remove<b>) -> <>::
+* name        : Name for your own profile (empty if unchanged)
+* givenName   : Given name for your own profile (empty if unchanged)
+* familyName  : Family name for your own profile (empty if unchanged)
+* about       : About message for profile (empty if unchanged)
+* aboutEmoji  : Emoji for profile (empty if unchanged)
+* avatar      : Filename of avatar picture for profile (empty if unchanged)
+* remove      : Set to true if the existing avatar picture should be removed
+
+Exceptions: Failure
+
+uploadStickerPack(stickerPackPath<s>) -> url<s>::
+* stickerPackPath : Path to the manifest.json file or a zip file in the same directory
+* url             : URL of sticker pack after successful upload
+
+Exceptions: Failure
+
+version() -> version<s>::
+* version : Version string of signal-cli
+
+Exceptions: None
+
 == Signals
 SyncMessageReceived (timestamp<x>, sender<s>, destination<s>, groupId<ay>, message<s>, attachments<as>)::
 * timestamp   : Integer value that can be used to associate this e.g. with a sendMessage()
@@ -433,7 +596,7 @@ dbus-send --print-reply --type=method_call --dest="org.asamk.Signal" /org/asamk/
 Send a group message::
 dbus-send --session --print-reply --type=method_call --dest=org.asamk.Signal /org/asamk/Signal org.asamk.Signal.sendGroupMessage  string:'The message goes here'  array:string:'/path/to/attachmnt1','/path/to/attachmnt2'  array:byte:139,22,72,247,116,32,170,104,205,164,207,21,248,77,185
 
-Print the group name corresponding to a groupId; the daemon runs on system bus, and was started without an explicit `-u USERNAME`::
+Print the group name corresponding to a groupId; the daemon runs on system bus, and was started without an explicit `-a ACCOUNT`::
 dbus-send --system --print-reply --type=method_call --dest='org.asamk.Signal' /org/asamk/Signal/_1234567890 org.asamk.Signal.getGroupName array:byte:139,22,72,247,116,32,170,104,205,164,207,21,248,77,185
 
 == Authors