+* 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.
+
+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.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`