655 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			655 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
/////
 | 
						|
vim:set ts=4 sw=4 tw=82 noet:
 | 
						|
/////
 | 
						|
 | 
						|
:quotes.~:
 | 
						|
 | 
						|
= signal-cli-dbus (5)
 | 
						|
:doctype: manpage
 | 
						|
 | 
						|
== Name
 | 
						|
 | 
						|
signal-cli-dbus - A commandline and dbus interface for the Signal messenger
 | 
						|
 | 
						|
== Synopsis
 | 
						|
 | 
						|
*signal-cli* [--verbose] [--config CONFIG] [-a ACCOUNT] [-o {plain-text,json}] daemon [--dbus] [--dbus-system]
 | 
						|
 | 
						|
*dbus-send* [--system | --session] [--print-reply] --type=method_call --dest="org.asamk.Signal" /org/asamk/Signal[/_<phonenumber>] org.asamk.Signal.<method> [string:<string argument>] [array:<type>:<array argument>]
 | 
						|
 | 
						|
Note: when daemon was started without explicit `-a ACCOUNT`, the `dbus-send` command requires adding the phone number in `/org/asamk/Signal/_<phonenumber>`.
 | 
						|
 | 
						|
== Description
 | 
						|
 | 
						|
See signal-cli (1) for details on the application.
 | 
						|
 | 
						|
This documentation handles the supported methods when running signal-cli as a DBus daemon.
 | 
						|
 | 
						|
The method are described as follows:
 | 
						|
 | 
						|
method(arg1<type>, arg2<type>, ...) -> return<type>
 | 
						|
 | 
						|
Where <type> is according to DBus specification:
 | 
						|
 | 
						|
* <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:)
 | 
						|
* <o> : DBusPath object (objpath:)
 | 
						|
* <s> : String (string:)
 | 
						|
* <x> : Signed 64-bit (long) integer (int64:)
 | 
						|
* <y> : Unsigned 8-bit (byte) integer (byte:)
 | 
						|
* <> : no return value
 | 
						|
 | 
						|
The final parenthetical value (such as "boolean:") is the type indicator used by `dbus-send`.
 | 
						|
 | 
						|
Exceptions are the names of the Java Exceptions returned in the body field.
 | 
						|
They typically contain an additional message with details.
 | 
						|
All Exceptions begin with "org.asamk.Signal.Error." which is omitted here for better readability.
 | 
						|
 | 
						|
Phone numbers always have the format +<countrycode><regional number>
 | 
						|
 | 
						|
== Methods
 | 
						|
 | 
						|
=== SignalControl interface
 | 
						|
 | 
						|
These methods are available if the daemon is started in multi-account mode (without an explicit `-a ACCOUNT`).
 | 
						|
The exported `/org/asamk/Signal` object provides a SignalControl interface, with methods to manage accounts.
 | 
						|
Individual accounts are exported as separate objects and provide a Signal interface, that's described below.
 | 
						|
e.g. `/org/asamk/Signal/\_441234567890` where the + dialing code is replaced by an underscore (_).
 | 
						|
 | 
						|
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 can be captured by a Signal smartphone client.
 | 
						|
 | 
						|
For example:
 | 
						|
 | 
						|
[source,bash]
 | 
						|
----
 | 
						|
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
 | 
						|
----
 | 
						|
 | 
						|
listAccounts() -> accountList<as>::
 | 
						|
* accountList : Array of all attached accounts in DBus object path form
 | 
						|
 | 
						|
Exceptions: None
 | 
						|
 | 
						|
register(number<s>, voiceVerification<b>) -> <>::
 | 
						|
* number : Phone number
 | 
						|
* voiceVerification : true = use voice verification; false = use SMS verification
 | 
						|
 | 
						|
Exceptions: Failure, InvalidNumber, RequiresCaptcha
 | 
						|
 | 
						|
registerWithCaptcha(number<s>, voiceVerification<b>, captcha<s>) -> <>::
 | 
						|
* number : Phone number
 | 
						|
* voiceVerification : true = use voice verification; false = use SMS verification
 | 
						|
* captcha : Captcha string
 | 
						|
 | 
						|
Exceptions: Failure, InvalidNumber, RequiresCaptcha
 | 
						|
 | 
						|
verify(number<s>, verificationCode<s>) -> <>::
 | 
						|
* number : Phone number
 | 
						|
* verificationCode : Code received from Signal after successful registration request
 | 
						|
 | 
						|
Command fails if PIN was set after previous registration; use verifyWithPin instead.
 | 
						|
 | 
						|
Exceptions: Failure, InvalidNumber
 | 
						|
 | 
						|
verifyWithPin(number<s>, verificationCode<s>, pin<s>) -> <>::
 | 
						|
* number : Phone number
 | 
						|
* verificationCode : Code received from Signal after successful registration request
 | 
						|
* pin : PIN you set with setPin command after verifying previous registration
 | 
						|
 | 
						|
Exceptions: Failure, InvalidNumber
 | 
						|
 | 
						|
version() -> version<s>::
 | 
						|
* version : Version string of signal-cli
 | 
						|
 | 
						|
Exceptions: None
 | 
						|
 | 
						|
=== Signal interface
 | 
						|
 | 
						|
The following methods listen to the account's object path, which is constructed as follows:
 | 
						|
 | 
						|
- for single-account mode: "/org/asamk/Signal/"
 | 
						|
- for multi-account mode: "/org/asamk/Signal/" + DBusNumber
 | 
						|
* DBusNumber: account's phone number, with underscore (_) replacing plus (+)
 | 
						|
 | 
						|
getContactName(number<s>) -> name<s>::
 | 
						|
* number : Phone number
 | 
						|
* name : Contact's name in local storage (from the primary device for a linked account, or the one set with setContactName); if not set, contact's profile name is used
 | 
						|
 | 
						|
Exceptions: None
 | 
						|
 | 
						|
getContactNumber(name<s>) -> numbers<as>::
 | 
						|
* numbers : Array of phone number
 | 
						|
* name : Contact or profile name ("firstname lastname")
 | 
						|
 | 
						|
Searches contacts and known profiles for a given name and returns the list of all known numbers.
 | 
						|
May result in e.g. two entries if a contact and profile name is set.
 | 
						|
 | 
						|
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
 | 
						|
 | 
						|
For unknown numbers false is returned but no exception is raised.
 | 
						|
 | 
						|
Exceptions: InvalidPhoneNumber
 | 
						|
 | 
						|
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
 | 
						|
 | 
						|
For unknown numbers, false is returned, but no exception is raised.
 | 
						|
If no number is given, returns true (indicating that you are registered).
 | 
						|
 | 
						|
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() -> <>::
 | 
						|
 | 
						|
Removes registration PIN protection.
 | 
						|
 | 
						|
Exceptions: Failure
 | 
						|
 | 
						|
sendEndSessionMessage(recipients<as>) -> <>::
 | 
						|
* recipients : Array of phone numbers
 | 
						|
 | 
						|
Exceptions: Failure, InvalidNumber, UntrustedIdentity
 | 
						|
 | 
						|
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
 | 
						|
 | 
						|
Depending on the type of the recipient field this sends a message to one or multiple recipients.
 | 
						|
 | 
						|
Exceptions: AttachmentInvalid, Failure, InvalidNumber, UntrustedIdentity
 | 
						|
 | 
						|
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
 | 
						|
 | 
						|
Depending on the type of the recipient(s) field this sends a reaction to one or multiple recipients.
 | 
						|
 | 
						|
Exceptions: Failure, InvalidNumber
 | 
						|
 | 
						|
sendPaymentNotification(receipt<ay>, note<s>, recipient<s>) -> timestamp<x>::
 | 
						|
* receipt : Byte array with the payment receipt blob
 | 
						|
* note : String with a note for the payment
 | 
						|
* recipient : String with the phone number of a single recipient
 | 
						|
 | 
						|
* timestamp : Long, can be used to identify the corresponding Signal reply
 | 
						|
 | 
						|
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
 | 
						|
 | 
						|
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
 | 
						|
* stop : True, if typing state should be stopped
 | 
						|
 | 
						|
Exceptions: Failure, 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
 | 
						|
 | 
						|
setContactName(number<s>,name<>) -> <>::
 | 
						|
* number : Phone number
 | 
						|
* name : Name to be set in contacts (in local storage with signal-cli)
 | 
						|
 | 
						|
Exceptions: InvalidNumber, Failure
 | 
						|
 | 
						|
deleteContact(number<s>) -> <>::
 | 
						|
* number : Phone number
 | 
						|
 | 
						|
Exceptions: Failure
 | 
						|
 | 
						|
deleteRecipient(number<s>) -> <>::
 | 
						|
* number : Phone number
 | 
						|
 | 
						|
Exceptions: Failure
 | 
						|
 | 
						|
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.
 | 
						|
 | 
						|
Exceptions: Failure, InvalidNumber
 | 
						|
 | 
						|
setPin(pin<s>) -> <>::
 | 
						|
* pin : PIN you set after registration (resets after 7 days of inactivity)
 | 
						|
 | 
						|
Sets a registration lock PIN, to prevent others from registering your number.
 | 
						|
 | 
						|
Exceptions: Failure
 | 
						|
 | 
						|
submitRateLimitChallenge(challenge<s>, captcha<s>) -> <>::
 | 
						|
* challenge : The challenge token taken from the proof required error.
 | 
						|
* captcha : The captcha token from the solved captcha on the Signal website.
 | 
						|
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
 | 
						|
 | 
						|
==== Group related methods
 | 
						|
 | 
						|
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: AttachmentInvalid, Failure, InvalidNumber;
 | 
						|
 | 
						|
getGroup(groupId<ay>) -> objectPath<o>::
 | 
						|
* groupId : Byte array representing the internal group identifier
 | 
						|
* objectPath : DBusPath for the group
 | 
						|
 | 
						|
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: None, if the group name is not found an empty array is returned
 | 
						|
 | 
						|
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
 | 
						|
 | 
						|
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: GroupNotFound, Failure, AttachmentInvalid, InvalidGroupId
 | 
						|
 | 
						|
sendGroupTyping(groupId<ay>, stop<b>) -> <>::
 | 
						|
* groupId : Byte array representing the internal group identifier
 | 
						|
* stop : True, if typing state should be stopped
 | 
						|
 | 
						|
Exceptions: Failure, GroupNotFound, UntrustedIdentity
 | 
						|
 | 
						|
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
 | 
						|
 | 
						|
Exceptions: Failure, InvalidNumber, GroupNotFound, 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
 | 
						|
 | 
						|
Exceptions: Failure, GroupNotFound, InvalidGroupId
 | 
						|
 | 
						|
==== Device related methods
 | 
						|
 | 
						|
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.
 | 
						|
 | 
						|
getDevice(deviceId<x>) -> devicePath<o>::
 | 
						|
* deviceId : Long representing a deviceId
 | 
						|
* devicePath : DBusPath object for the device
 | 
						|
 | 
						|
Exceptions: DeviceNotFound
 | 
						|
 | 
						|
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: InvalidUri
 | 
						|
 | 
						|
sendContacts() -> <>::
 | 
						|
 | 
						|
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: Failure
 | 
						|
 | 
						|
sendSyncRequest() -> <>::
 | 
						|
 | 
						|
Sends a synchronization request to the primary device (for group, contacts, ...).
 | 
						|
Only works if sent from a secondary device.
 | 
						|
 | 
						|
Exceptions: Failure
 | 
						|
 | 
						|
==== Identity related methods
 | 
						|
 | 
						|
listIdentities() -> identities<a(oss)>::
 | 
						|
* identities : Array of structs (objectPath, id, name)
 | 
						|
** objectPath : DBusPath representing the identity object path
 | 
						|
** uuid : Internal uuid of the identity
 | 
						|
** number : Phone number of the identity
 | 
						|
 | 
						|
Lists all know identities
 | 
						|
 | 
						|
getIdentity(Number<s>) -> identityPath<o>::
 | 
						|
* Number : Phone number
 | 
						|
* identityPath : DBusPath object for the identity
 | 
						|
 | 
						|
Gets the identity Dbus path for a given phone number
 | 
						|
 | 
						|
Exceptions: Failure
 | 
						|
 | 
						|
=== Signal.Group interface
 | 
						|
 | 
						|
The following methods listen to the group's object path, which can be obtained from the listGroups() method and is constructed as follows:
 | 
						|
 | 
						|
<ACCOUNT_PATH> + "/Groups/" + DBusGroupId
 | 
						|
 | 
						|
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
 | 
						|
 | 
						|
Grant admin privileges to recipients.
 | 
						|
 | 
						|
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.
 | 
						|
This command is also used to accept group invitations by adding yourself to a group.
 | 
						|
 | 
						|
Exceptions: Failure
 | 
						|
 | 
						|
disableLink() -> <>::
 | 
						|
 | 
						|
Disables the group's invitation link.
 | 
						|
 | 
						|
Exceptions: Failure
 | 
						|
 | 
						|
enableLink(requiresApproval<b>) -> <>::
 | 
						|
* requiresApproval : true=add numbers using the link to the requesting members list
 | 
						|
 | 
						|
Enables the group's invitation link.
 | 
						|
 | 
						|
Exceptions: Failure
 | 
						|
 | 
						|
quitGroup() -> <>::
 | 
						|
Exceptions: Failure, LastGroupAdmin
 | 
						|
 | 
						|
removeAdmins(recipients<as>) -> <>::
 | 
						|
* recipients : String array of phone numbers
 | 
						|
 | 
						|
Remove admin privileges from recipients.
 | 
						|
 | 
						|
Exceptions: Failure
 | 
						|
 | 
						|
removeMembers(recipients<as>) -> <>::
 | 
						|
* recipients : String array of phone numbers
 | 
						|
 | 
						|
Remove recipients from group.
 | 
						|
 | 
						|
Exceptions: Failure
 | 
						|
 | 
						|
resetLink() -> <>::
 | 
						|
 | 
						|
Resets the group's invitation link to a new random URL starting with https://signal.group/#
 | 
						|
 | 
						|
Exceptions: Failure
 | 
						|
 | 
						|
=== Signal.Device interface
 | 
						|
 | 
						|
The following methods listen to the device's object path, which is constructed as follows:
 | 
						|
 | 
						|
<ACCOUNT_PATH> + "/Devices/" + deviceId
 | 
						|
 | 
						|
deviceId : Number 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
 | 
						|
 | 
						|
=== Signal.Identity interface
 | 
						|
 | 
						|
The following methods listen to the Identities object path, which is constructed as follows:
 | 
						|
 | 
						|
<ACCOUNT_PATH> + "/Identities/" + identity
 | 
						|
 | 
						|
identity : Either the phone number of a contact with underscore (_) replacing plus (+) , or if not known its uuid
 | 
						|
 | 
						|
Identities have the following (case-sensitive) properties:
 | 
						|
 | 
						|
* Number<s> (read-only) : Phone number of the contact
 | 
						|
* Uuid<x> (read-only) : Internal uuid representing the contact
 | 
						|
* Fingerprint<x> (read-only) : Byte array representing the fingerprint
 | 
						|
* SafetyNumber<s> (read-only) : String representation of the safety number used to verify trust
 | 
						|
* TrustLevel<s> (read-only) : Current trust level (UNSTRUSTED, TRUSTED_UNVERIFIED, TRUSTED_VERIFIED)
 | 
						|
* AddedDate<x> (read-only) : Long representing the number of milliseconds since the Unix epoch
 | 
						|
* ScannableSafetyNumber<x> (read-only) : Byte array representation of the safety number
 | 
						|
 | 
						|
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.Identity string:$PROPERTY_NAME`
 | 
						|
 | 
						|
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.Identity`
 | 
						|
 | 
						|
trust() -> <>::
 | 
						|
 | 
						|
Establish trust with the given identity.
 | 
						|
TrustLevel will become TRUSTED_UNVERFIED
 | 
						|
 | 
						|
Exceptions: Failure
 | 
						|
 | 
						|
trustVerified(SafetyNumber<s>) -> <>::
 | 
						|
 | 
						|
Establish trust with the given identity using their safety number.
 | 
						|
TrustLevel will become TRUSTED_VERIFIED
 | 
						|
 | 
						|
Exceptions: Failure
 | 
						|
 | 
						|
=== Signal.Configuration interface
 | 
						|
 | 
						|
The configuration's object path, which exists only for primary devices, is constructed as follows:
 | 
						|
<ACCOUNT_PATH> + "/Configuration"
 | 
						|
 | 
						|
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`
 | 
						|
 | 
						|
== 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()
 | 
						|
* sender : Phone number of the sender
 | 
						|
* destination : DBus code for destination
 | 
						|
* groupId : Byte array representing the internal group identifier (empty when private message)
 | 
						|
* message : Message text
 | 
						|
* attachments : String array of filenames in the signal-cli storage (~/.local/share/signal-cli/attachments/)
 | 
						|
 | 
						|
The sync message is received when the user sends a message from a linked device.
 | 
						|
 | 
						|
ReceiptReceived (timestamp<x>, sender<s>)::
 | 
						|
* timestamp : Integer value that can be used to associate this e.g. with a sendMessage()
 | 
						|
* sender : Phone number of the sender
 | 
						|
 | 
						|
This signal is sent by each recipient (e.g. each group member) after the message was successfully delivered to the device
 | 
						|
 | 
						|
MessageReceived(timestamp<x>, sender<s>, groupId<ay>, message<s>, attachments<as>)::
 | 
						|
* timestamp : Integer value that is used by the system to send a ReceiptReceived reply
 | 
						|
* sender : Phone number of the sender
 | 
						|
* groupId : Byte array representing the internal group identifier (empty when private message)
 | 
						|
* message : Message text
 | 
						|
* attachments : String array of filenames in the signal-cli storage (~/.local/share/signal-cli/attachments/)
 | 
						|
 | 
						|
This signal is received whenever we get a private message or a message is posted in a group we are an active member
 | 
						|
 | 
						|
== Examples
 | 
						|
 | 
						|
Send a text message (without attachment) to a contact::
 | 
						|
dbus-send --print-reply --type=method_call --dest="org.asamk.Signal" /org/asamk/Signal org.asamk.Signal.sendMessage string:"Message text goes here" array:string: string:+123456789
 | 
						|
 | 
						|
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/attachment1','/path/to/attachment2' 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 `-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
 | 
						|
 | 
						|
Maintained by AsamK <asamk@gmx.de>, who is assisted by other open source contributors.
 | 
						|
For more information about signal-cli development, see
 | 
						|
<https://github.com/AsamK/signal-cli>.
 |