{ "doc_version": "v1", "version": { "name": "signald", "version": "0.11.1+git2021-01-30r350d7b78.75", "branch": "main", "commit": "350d7b78e6d8579866da07b9dc91035663e0b073" }, "info": "This document describes objects that may be used when communicating with signald.", "types": { "v1": { "JsonMessageEnvelope": { "fields": { "username": { "type": "String", "example": "\"+12024561414\"" }, "uuid": { "type": "String", "example": "\"0cc10e61-d64c-4dbc-b51c-334f7dd45a4a\"" }, "source": { "type": "JsonAddress", "version": "v1" }, "sourceDevice": { "type": "int" }, "type": { "type": "String" }, "relay": { "type": "String" }, "timestamp": { "type": "long", "example": "1611966817808" }, "timestampISO": { "type": "String" }, "serverTimestamp": { "type": "long" }, "serverDeliveredTimestamp": { "type": "long", "example": "161196681780880" }, "hasLegacyMessage": { "type": "boolean" }, "hasContent": { "type": "boolean" }, "isUnidentifiedSender": { "type": "boolean" }, "dataMessage": { "type": "JsonDataMessage", "version": "v1" }, "syncMessage": { "type": "JsonSyncMessage", "version": "v1" }, "callMessage": { "type": "JsonCallMessage", "version": "v0" }, "receipt": { "type": "JsonReceiptMessage", "version": "v0" }, "typing": { "type": "JsonTypingMessage", "version": "v0" } } }, "SendRequest": { "fields": { "username": { "type": "String", "example": "\"+12024561414\"", "required": true }, "recipientAddress": { "type": "JsonAddress", "version": "v1" }, "recipientGroupId": { "type": "String", "example": "\"EdSqI90cS0UomDpgUXOlCoObWvQOXlH5G3Z2d3f4ayE=\"" }, "messageBody": { "type": "String", "example": "\"hello\"" }, "attachments": { "list": true, "type": "JsonAttachment", "version": "v0" }, "quote": { "type": "JsonQuote", "version": "v1" }, "timestamp": { "type": "Long" }, "mentions": { "list": true, "type": "JsonMention", "version": "v1" } } }, "SendResponse": { "fields": { "results": { "list": true, "type": "JsonSendMessageResult", "version": "v1" }, "timestamp": { "type": "long", "example": "1611966817808" } } }, "ReactRequest": { "fields": { "username": { "type": "String", "example": "\"+12024561414\"", "required": true }, "recipientAddress": { "type": "JsonAddress", "version": "v1" }, "recipientGroupId": { "type": "String", "example": "\"EdSqI90cS0UomDpgUXOlCoObWvQOXlH5G3Z2d3f4ayE=\"" }, "reaction": { "type": "JsonReaction", "version": "v1", "required": true }, "timestamp": { "type": "long" } }, "doc": "react to a previous message" }, "VersionRequest": { "fields": {} }, "JsonVersionMessage": { "fields": { "name": { "type": "String", "example": "\"signald\"" }, "version": { "type": "String", "example": "\"0.11.1+git2021-01-30r350d7b78.75\"" }, "branch": { "type": "String", "example": "\"main\"" }, "commit": { "type": "String", "example": "\"350d7b78e6d8579866da07b9dc91035663e0b073\"" } } }, "AcceptInvitationRequest": { "fields": { "account": { "type": "String", "doc": "The account to interact with", "example": "\"+12024561414\"", "required": true }, "groupID": { "type": "String", "example": "\"EdSqI90cS0UomDpgUXOlCoObWvQOXlH5G3Z2d3f4ayE=\"", "required": true } }, "doc": "Accept a v2 group invitation. Note that you must have a profile name set to join groups." }, "JsonGroupV2Info": { "fields": { "id": { "type": "String", "example": "\"EdSqI90cS0UomDpgUXOlCoObWvQOXlH5G3Z2d3f4ayE=\"" }, "revision": { "type": "int", "example": "5" }, "title": { "type": "String", "example": "\"Parkdale Run Club\"" }, "timer": { "type": "int", "example": "604800" }, "members": { "list": true, "type": "JsonAddress", "version": "v1" }, "pendingMembers": { "list": true, "type": "JsonAddress", "version": "v1" }, "requestingMembers": { "list": true, "type": "JsonAddress", "version": "v1" }, "inviteLink": { "type": "String" } } }, "ApproveMembershipRequest": { "fields": { "account": { "type": "String", "doc": "The account to interact with", "example": "\"+12024561414\"", "required": true }, "groupID": { "type": "String", "example": "\"EdSqI90cS0UomDpgUXOlCoObWvQOXlH5G3Z2d3f4ayE=\"", "required": true }, "members": { "list": true, "type": "JsonAddress", "version": "v1", "doc": "list of requesting members to approve", "required": true } }, "doc": "approve a request to join a group" }, "GetGroupRequest": { "fields": { "account": { "type": "String", "doc": "The account to interact with", "example": "\"+12024561414\"", "required": true }, "groupID": { "type": "String", "example": "\"EdSqI90cS0UomDpgUXOlCoObWvQOXlH5G3Z2d3f4ayE=\"", "required": true }, "revision": { "type": "int", "doc": "the latest known revision, default value (-1) forces fetch from server" } }, "doc": "Query the server for the latest state of a known group" }, "GetLinkedDevicesRequest": { "fields": { "account": { "type": "String", "doc": "The account to interact with", "example": "\"+12024561414\"", "required": true } }, "doc": "list all linked devices on a Signal account" }, "LinkedDevices": { "fields": { "devices": { "list": true, "type": "DeviceInfo", "version": "v0" } } }, "JoinGroupRequest": { "fields": { "account": { "type": "String", "doc": "The account to interact with", "example": "\"+12024561414\"", "required": true }, "uri": { "type": "String", "doc": "The signal.group URL", "example": "\"https://signal.group/#CjQKINH_GZhXhfifTcnBkaKTNRxW-hHKnGSq-cJNyPVqHRp8EhDUB7zjKNEl0NaULhsqJCX3\"", "required": true } }, "doc": "Join a group using the a signal.group URL. Note that you must have a profile name set to join groups." }, "JsonGroupJoinInfo": { "fields": { "groupID": { "type": "String", "example": "\"EdSqI90cS0UomDpgUXOlCoObWvQOXlH5G3Z2d3f4ayE=\"" }, "title": { "type": "String", "example": "\"Parkdale Run Club\"" }, "memberCount": { "type": "int", "example": "3" }, "addFromInviteLink": { "type": "int" }, "revision": { "type": "int", "example": "5" }, "pendingAdminApproval": { "type": "boolean" } } }, "ProtocolRequest": { "fields": {} }, "RemoveLinkedDeviceRequest": { "fields": { "account": { "type": "String", "doc": "The account to interact with", "example": "\"+12024561414\"", "required": true }, "deviceId": { "type": "long", "doc": "the ID of the device to unlink", "example": "3", "required": true } }, "doc": "Remove a linked device from the Signal account. Only allowed when the local device id is 1" }, "UpdateGroupRequest": { "fields": { "account": { "type": "String", "doc": "The identifier of the account to interact with", "example": "\"+12024561414\"", "required": true }, "groupID": { "type": "String", "example": "\"EdSqI90cS0UomDpgUXOlCoObWvQOXlH5G3Z2d3f4ayE=\"", "required": true }, "title": { "type": "String", "example": "\"Parkdale Run Club\"" }, "avatar": { "type": "String", "example": "\"/tmp/image.jpg\"" }, "addMembers": { "list": true, "type": "JsonAddress", "version": "v1" }, "removeMembers": { "list": true, "type": "JsonAddress", "version": "v1" } }, "doc": "modify a group" }, "GroupInfo": { "fields": { "v1": { "type": "JsonGroupInfo", "version": "v1" }, "v2": { "type": "JsonGroupV2Info", "version": "v1" } }, "doc": "A generic type that is used when the group version is not known" }, "SetProfile": { "fields": { "account": { "type": "String", "doc": "The phone number of the account to use", "example": "\"+12024561414\"", "required": true }, "name": { "type": "String", "doc": "New profile name. Set to empty string for no profile name", "example": "\"signald user\"", "required": true }, "avatarFile": { "type": "String", "doc": "Path to new profile avatar file, if the avatar should be updated", "example": "\"/tmp/image.jpg\"" } } }, "ResolveAddressRequest": { "fields": { "account": { "type": "String", "doc": "The signal account to use", "example": "\"+12024561414\"", "required": true }, "partial": { "type": "JsonAddress", "version": "v1", "doc": "The partial address, missing fields", "required": true } }, "doc": "Resolve a partial JsonAddress with only a number or UUID to one with both. Anywhere that signald accepts a JsonAddress will except a partial, this is a convenience function for client authors, mostly because signald doesn't resolve all the partials it returns" }, "JsonAddress": { "fields": { "number": { "type": "String", "doc": "An e164 phone number, starting with +. Currently the only available user-facing Signal identifier.", "example": "\"+13215551234\"" }, "uuid": { "type": "UUID", "doc": "A UUID, the unique identifier for a particular Signal account." }, "relay": { "type": "String" } } }, "MarkReadRequest": { "fields": { "account": { "type": "String", "doc": "The account to interact with", "example": "\"+12024561414\"", "required": true }, "to": { "type": "JsonAddress", "version": "v1", "doc": "The address that sent the message being marked as read", "required": true }, "timestamps": { "list": true, "type": "Long", "doc": "List of messages to mark as read", "example": "1611966817808", "required": true } } }, "GetProfileRequest": { "fields": { "account": { "type": "String", "doc": "the signald account to use", "required": true }, "address": { "type": "JsonAddress", "version": "v1", "doc": "the address to look up", "required": true } }, "doc": "Get all information available about a user" }, "Profile": { "fields": { "name": { "type": "String", "doc": "The user's name from local contact names if available, or if not in contact list their Signal profile name" }, "avatar": { "type": "String" }, "address": { "type": "JsonAddress", "version": "v1" }, "capabilities": { "type": "Capabilities", "version": "v1" }, "color": { "type": "String" }, "profile_name": { "type": "String", "doc": "The user's Signal profile name" }, "inbox_position": { "type": "Integer" }, "expiration_time": { "type": "int" } }, "doc": "Information about a Signal user" }, "JsonDataMessage": { "fields": { "timestamp": { "type": "long", "doc": "the timestamp that the message was sent at, according to the sender's device. This is used to uniquely identify this message for things like reactions and quotes.", "example": "1611966817808" }, "attachments": { "list": true, "type": "JsonAttachment", "version": "v0", "doc": "files attached to the incoming message" }, "body": { "type": "String", "doc": "the text body of the incoming message.", "example": "\"hello\"" }, "group": { "type": "JsonGroupInfo", "version": "v1", "doc": "if the incoming message was sent to a v1 group, information about that group will be here" }, "groupV2": { "type": "JsonGroupV2Info", "version": "v1", "doc": "is the incoming message was sent to a v2 group, basic identifying information about that group will be here. For full information, use list_groups" }, "endSession": { "type": "boolean" }, "expiresInSeconds": { "type": "int", "doc": "the expiry timer on the incoming message. Clients should delete records of the message within this number of seconds" }, "profileKeyUpdate": { "type": "boolean" }, "quote": { "type": "JsonQuote", "version": "v1", "doc": "if the incoming message is a quote or reply to another message, this will contain information about that message" }, "contacts": { "list": true, "type": "SharedContact", "version": "v0", "doc": "if the incoming message has a shared contact, the contact's information will be here" }, "previews": { "list": true, "type": "JsonPreview", "version": "v0", "doc": "if the incoming message has a link preview, information about that preview will be here" }, "sticker": { "type": "JsonSticker", "version": "v0", "doc": "if the incoming message is a sticker, information about the sicker will be here" }, "viewOnce": { "type": "boolean", "doc": "indicates the message is a view once message. View once messages typically include no body and a single image attachment. Official Signal clients will prevent the user from saving the image, and once the user has viewed the image once they will destroy the image." }, "reaction": { "type": "JsonReaction", "version": "v1", "doc": "if the message adds or removes a reaction to another message, this will indicate what change is being made" }, "remoteDelete": { "type": "RemoteDelete", "version": "v0", "doc": "if the inbound message is deleting a previously sent message, indicates which message should be deleted" }, "mentions": { "list": true, "type": "JsonMention", "version": "v1", "doc": "list of mentions in the message" } } }, "JsonSyncMessage": { "fields": { "sent": { "type": "JsonSentTranscriptMessage", "version": "v1" }, "contacts": { "type": "JsonAttachment", "version": "v0" }, "contactsComplete": { "type": "boolean" }, "groups": { "type": "JsonAttachment", "version": "v0" }, "blockedList": { "type": "JsonBlockedListMessage", "version": "v1" }, "request": { "type": "String" }, "readMessages": { "list": true, "type": "JsonReadMessage", "version": "v1" }, "viewOnceOpen": { "type": "JsonViewOnceOpenMessage", "version": "v1" }, "verified": { "type": "JsonVerifiedMessage", "version": "v1" }, "configuration": { "type": "ConfigurationMessage", "version": "v0" }, "stickerPackOperations": { "list": true, "type": "JsonStickerPackOperationMessage", "version": "v0" }, "fetchType": { "type": "String" }, "messageRequestResponse": { "type": "JsonMessageRequestResponseMessage", "version": "v1" } } }, "JsonQuote": { "fields": { "id": { "type": "long", "doc": "the client timestamp of the message being quoted", "example": "1611966817808" }, "author": { "type": "JsonAddress", "version": "v1", "doc": "the author of the message being quoted" }, "text": { "type": "String", "doc": "the body of the message being quoted", "example": "\"hey  what's up?\"" }, "attachments": { "list": true, "type": "JsonQuotedAttachment", "version": "v0", "doc": "list of files attached to the quoted message" }, "mentions": { "list": true, "type": "JsonMention", "version": "v1", "doc": "list of mentions in the quoted message" } }, "doc": "A quote is a reply to a previous message. ID is the sent time of the message being replied to" }, "JsonMention": { "fields": { "uuid": { "type": "String", "doc": "The UUID of the account being mentioned", "example": "\"aeed01f0-a234-478e-8cf7-261c283151e7\"" }, "start": { "type": "int", "doc": "The number of characters in that the mention starts at. Note that due to a quirk of how signald encodes JSON, if this value is 0 (for example if the first character in the message is the mention) the field won't show up.", "example": "4" }, "length": { "type": "int", "doc": "The length of the mention represented in the message. Seems to always be 1 but included here in case that changes.", "example": "1" } } }, "JsonSendMessageResult": { "fields": { "address": { "type": "JsonAddress", "version": "v1" }, "success": { "type": "Success", "version": "v0" }, "networkFailure": { "type": "boolean", "example": "false" }, "unregisteredFailure": { "type": "boolean", "example": "false" }, "identityFailure": { "type": "String" } } }, "JsonReaction": { "fields": { "emoji": { "type": "String", "doc": "the emoji to react with", "example": "\"👍\"" }, "remove": { "type": "boolean", "doc": "set to true to remove the reaction. requires emoji be set to previously reacted emoji" }, "targetAuthor": { "type": "JsonAddress", "version": "v1", "doc": "the author of the message being reacted to" }, "targetSentTimestamp": { "type": "long", "doc": "the client timestamp of the message being reacted to", "example": "1611966817808" } } }, "JsonGroupInfo": { "fields": { "groupId": { "type": "String" }, "members": { "list": true, "type": "JsonAddress", "version": "v1" }, "name": { "type": "String" }, "type": { "type": "String" }, "avatarId": { "type": "long" } } }, "Capabilities": { "fields": { "gv2": { "type": "boolean" }, "storage": { "type": "boolean" }, "gv1-migration": { "type": "boolean" } } }, "JsonSentTranscriptMessage": { "fields": { "destination": { "type": "JsonAddress", "version": "v1" }, "timestamp": { "type": "long", "example": "1611966817808" }, "expirationStartTimestamp": { "type": "long" }, "message": { "type": "JsonDataMessage", "version": "v1" }, "unidentifiedStatus": { "type": "Map" }, "isRecipientUpdate": { "type": "boolean" } } }, "JsonBlockedListMessage": { "fields": { "addresses": { "list": true, "type": "JsonAddress", "version": "v1" }, "groupIds": { "list": true, "type": "String" } } }, "JsonReadMessage": { "fields": { "sender": { "type": "JsonAddress", "version": "v1" }, "timestamp": { "type": "long", "example": "1611966817808" } } }, "JsonViewOnceOpenMessage": { "fields": { "sender": { "type": "JsonAddress", "version": "v1" }, "timestamp": { "type": "long", "example": "1611966817808" } } }, "JsonVerifiedMessage": { "fields": { "destination": { "type": "JsonAddress", "version": "v1" }, "identityKey": { "type": "String" }, "verified": { "type": "String" }, "timestamp": { "type": "long" } } }, "JsonMessageRequestResponseMessage": { "fields": { "person": { "type": "JsonAddress", "version": "v1" }, "groupId": { "type": "String" }, "type": { "type": "String" } } } }, "v0": { "JsonAccountList": { "fields": { "accounts": { "list": true, "type": "JsonAccount", "version": "v0" } } }, "JsonCallMessage": { "fields": { "offerMessage": { "type": "OfferMessage", "version": "v0" }, "answerMessage": { "type": "AnswerMessage", "version": "v0" }, "busyMessage": { "type": "BusyMessage", "version": "v0" }, "hangupMessage": { "type": "HangupMessage", "version": "v0" }, "iceUpdateMessages": { "list": true, "type": "IceUpdateMessage", "version": "v0" }, "destinationDeviceId": { "type": "int" }, "isMultiRing": { "type": "boolean" } } }, "JsonReceiptMessage": { "fields": { "type": { "type": "String" }, "timestamps": { "list": true, "type": "Long" }, "when": { "type": "long" } } }, "JsonTypingMessage": { "fields": { "action": { "type": "String" }, "timestamp": { "type": "long" }, "groupId": { "type": "String" } } }, "JsonAccount": { "fields": { "deviceId": { "type": "int" }, "username": { "type": "String" }, "filename": { "type": "String" }, "uuid": { "type": "String" }, "registered": { "type": "boolean" }, "has_keys": { "type": "boolean" }, "subscribed": { "type": "boolean" } } }, "JsonAttachment": { "fields": { "contentType": { "type": "String" }, "id": { "type": "String" }, "size": { "type": "int" }, "storedFilename": { "type": "String" }, "filename": { "type": "String" }, "customFilename": { "type": "String" }, "caption": { "type": "String" }, "width": { "type": "int" }, "height": { "type": "int" }, "voiceNote": { "type": "boolean" }, "key": { "type": "String" }, "digest": { "type": "String" }, "blurhash": { "type": "String" } } }, "DeviceInfo": { "fields": { "id": { "type": "long" }, "name": { "type": "String" }, "created": { "type": "long" }, "lastSeen": { "type": "long" } } }, "SharedContact": { "fields": { "name": { "type": "Name", "version": "v0" }, "avatar": { "type": "Optional", "version": "v0" }, "phone": { "type": "Optional", "version": "v0" }, "email": { "type": "Optional", "version": "v0" }, "address": { "type": "Optional", "version": "v0" }, "organization": { "type": "Optional", "version": "v0" } } }, "JsonPreview": { "fields": { "url": { "type": "String" }, "title": { "type": "String" }, "attachment": { "type": "JsonAttachment", "version": "v0" } } }, "JsonSticker": { "fields": { "packID": { "type": "String" }, "packKey": { "type": "String" }, "stickerID": { "type": "int" }, "attachment": { "type": "JsonAttachment", "version": "v0" } } }, "RemoteDelete": { "fields": { "targetSentTimestamp": { "type": "long" } } }, "ConfigurationMessage": { "fields": { "readReceipts": { "type": "Optional", "version": "v0" }, "unidentifiedDeliveryIndicators": { "type": "Optional", "version": "v0" }, "typingIndicators": { "type": "Optional", "version": "v0" }, "linkPreviews": { "type": "Optional", "version": "v0" } } }, "JsonStickerPackOperationMessage": { "fields": { "packID": { "type": "String" }, "packKey": { "type": "String" }, "type": { "type": "String" } } }, "OfferMessage": { "fields": { "id": { "type": "long" }, "sdp": { "type": "String" }, "type": { "type": "Type", "version": "v0" }, "opaque": { "type": "String" } } }, "AnswerMessage": { "fields": { "id": { "type": "long" }, "sdp": { "type": "String" }, "opaque": { "type": "String" } } }, "BusyMessage": { "fields": { "id": { "type": "long" } } }, "HangupMessage": { "fields": { "id": { "type": "long" }, "type": { "type": "Type", "version": "v0" }, "deviceId": { "type": "int" }, "legacy": { "type": "boolean" } } }, "IceUpdateMessage": { "fields": { "id": { "type": "long" }, "opaque": { "type": "String" }, "sdp": { "type": "String" } } }, "JsonQuotedAttachment": { "fields": { "contentType": { "type": "String" }, "fileName": { "type": "String" }, "thumbnail": { "type": "JsonAttachment", "version": "v0" } } }, "Success": { "fields": { "unidentified": { "type": "boolean" }, "needsSync": { "type": "boolean" }, "duration": { "type": "long" } } }, "Name": { "fields": { "display": { "type": "Optional", "version": "v0" }, "given": { "type": "Optional", "version": "v0" }, "family": { "type": "Optional", "version": "v0" }, "prefix": { "type": "Optional", "version": "v0" }, "suffix": { "type": "Optional", "version": "v0" }, "middle": { "type": "Optional", "version": "v0" } } }, "Optional": { "fields": { "present": { "type": "boolean" } } }, "Type": { "fields": {} } }, "v1alpha1": { "ProtocolRequest": { "fields": {}, "deprecated": true }, "GetLinkedDevicesRequest": { "fields": { "account": { "type": "String", "doc": "The account to interact with", "example": "\"+12024561414\"", "required": true } }, "doc": "list all linked devices on a Signal account", "deprecated": true }, "LinkedDevices": { "fields": { "devices": { "list": true, "type": "DeviceInfo", "version": "v0" } } }, "RemoveLinkedDeviceRequest": { "fields": { "account": { "type": "String", "doc": "The account to interact with", "example": "\"+12024561414\"", "required": true }, "deviceId": { "type": "long", "doc": "the ID of the device to unlink", "example": "3", "required": true } }, "doc": "Remove a linked device from the Signal account. Only allowed when the local device id is 1" }, "JoinGroupRequest": { "fields": { "account": { "type": "String", "doc": "The account to interact with", "example": "\"+12024561414\"", "required": true }, "uri": { "type": "String", "doc": "The signal.group URL", "example": "\"https://signal.group/#CjQKINH_GZhXhfifTcnBkaKTNRxW-hHKnGSq-cJNyPVqHRp8EhDUB7zjKNEl0NaULhsqJCX3\"", "required": true } }, "doc": "Join a group using the a signal.group URL. Note that you must have a profile name set to join groups.", "deprecated": true }, "JsonGroupJoinInfo": { "fields": { "groupID": { "type": "String", "example": "\"EdSqI90cS0UomDpgUXOlCoObWvQOXlH5G3Z2d3f4ayE=\"" }, "title": { "type": "String", "example": "\"Parkdale Run Club\"" }, "memberCount": { "type": "int", "example": "3" }, "addFromInviteLink": { "type": "int" }, "revision": { "type": "int", "example": "5" }, "pendingAdminApproval": { "type": "boolean" } } }, "UpdateGroupRequest": { "fields": { "account": { "type": "String", "doc": "The account to interact with", "example": "\"+12024561414\"", "required": true }, "groupID": { "type": "String", "example": "\"EdSqI90cS0UomDpgUXOlCoObWvQOXlH5G3Z2d3f4ayE=\"", "required": true }, "title": { "type": "String", "example": "\"Parkdale Run Club\"" }, "addMembers": { "list": true, "type": "JsonAddress", "version": "v1" }, "removeMembers": { "list": true, "type": "JsonAddress", "version": "v1" } }, "doc": "modify a group. only v2 groups for now", "deprecated": true }, "JsonGroupV2Info": { "fields": { "id": { "type": "String", "example": "\"EdSqI90cS0UomDpgUXOlCoObWvQOXlH5G3Z2d3f4ayE=\"" }, "revision": { "type": "int", "example": "5" }, "title": { "type": "String", "example": "\"Parkdale Run Club\"" }, "timer": { "type": "int", "example": "604800" }, "members": { "list": true, "type": "JsonAddress", "version": "v1" }, "pendingMembers": { "list": true, "type": "JsonAddress", "version": "v1" }, "requestingMembers": { "list": true, "type": "JsonAddress", "version": "v1" }, "inviteLink": { "type": "String" } } }, "AcceptInvitationRequest": { "fields": { "account": { "type": "String", "doc": "The account to interact with", "example": "\"+12024561414\"", "required": true }, "groupID": { "type": "String", "example": "\"EdSqI90cS0UomDpgUXOlCoObWvQOXlH5G3Z2d3f4ayE=\"", "required": true } }, "doc": "Accept a v2 group invitation. Note that you must have a profile name set to join groups.", "deprecated": true }, "ApproveMembershipRequest": { "fields": { "account": { "type": "String", "doc": "The account to interact with", "example": "\"+12024561414\"", "required": true }, "groupID": { "type": "String", "example": "\"EdSqI90cS0UomDpgUXOlCoObWvQOXlH5G3Z2d3f4ayE=\"", "required": true }, "members": { "list": true, "type": "JsonAddress", "version": "v1", "doc": "list of requesting members to approve", "required": true } }, "doc": "approve a request to join a group", "deprecated": true }, "GetGroupRequest": { "fields": { "account": { "type": "String", "doc": "The account to interact with", "example": "\"+12024561414\"", "required": true }, "groupID": { "type": "String", "example": "\"EdSqI90cS0UomDpgUXOlCoObWvQOXlH5G3Z2d3f4ayE=\"", "required": true }, "revision": { "type": "int", "doc": "the latest known revision, default value (-1) forces fetch from server" } }, "doc": "Query the server for the latest state of a known group", "deprecated": true } }, "v1alpha2": { "UpdateGroupRequest": { "fields": { "account": { "type": "String", "doc": "The identifier of the account to interact with", "example": "\"+12024561414\"", "required": true }, "groupID": { "type": "String", "example": "\"EdSqI90cS0UomDpgUXOlCoObWvQOXlH5G3Z2d3f4ayE=\"", "required": true }, "title": { "type": "String", "example": "\"Parkdale Run Club\"" }, "avatar": { "type": "String", "example": "\"/tmp/image.jpg\"" }, "addMembers": { "list": true, "type": "JsonAddress", "version": "v1" }, "removeMembers": { "list": true, "type": "JsonAddress", "version": "v1" } }, "doc": "modify a group", "deprecated": true }, "GroupInfo": { "fields": { "v1": { "type": "JsonGroupInfo", "version": "v1" }, "v2": { "type": "JsonGroupV2Info", "version": "v1" } }, "doc": "A generic type that is used when the group version is not known" } } }, "actions": { "v1": { "send": { "request": "SendRequest", "response": "SendResponse" }, "react": { "request": "ReactRequest", "response": "SendResponse", "doc": "react to a previous message" }, "version": { "request": "VersionRequest", "response": "JsonVersionMessage" }, "accept_invitation": { "request": "AcceptInvitationRequest", "response": "JsonGroupV2Info", "doc": "Accept a v2 group invitation. Note that you must have a profile name set to join groups." }, "approve_membership": { "request": "ApproveMembershipRequest", "response": "JsonGroupV2Info", "doc": "approve a request to join a group" }, "get_group": { "request": "GetGroupRequest", "response": "JsonGroupV2Info", "doc": "Query the server for the latest state of a known group" }, "get_linked_devices": { "request": "GetLinkedDevicesRequest", "response": "LinkedDevices", "doc": "list all linked devices on a Signal account" }, "join_group": { "request": "JoinGroupRequest", "response": "JsonGroupJoinInfo", "doc": "Join a group using the a signal.group URL. Note that you must have a profile name set to join groups." }, "protocol": { "request": "ProtocolRequest" }, "remove_linked_device": { "request": "RemoveLinkedDeviceRequest", "doc": "Remove a linked device from the Signal account. Only allowed when the local device id is 1" }, "update_group": { "request": "UpdateGroupRequest", "response": "GroupInfo", "doc": "modify a group" }, "set_profile": { "request": "SetProfile" }, "resolve_address": { "request": "ResolveAddressRequest", "response": "JsonAddress", "doc": "Resolve a partial JsonAddress with only a number or UUID to one with both. Anywhere that signald accepts a JsonAddress will except a partial, this is a convenience function for client authors, mostly because signald doesn't resolve all the partials it returns" }, "mark_read": { "request": "MarkReadRequest" }, "get_profile": { "request": "GetProfileRequest", "response": "Profile", "doc": "Get all information available about a user" } }, "v1alpha1": { "protocol": { "request": "ProtocolRequest", "deprecated": true }, "get_linked_devices": { "request": "GetLinkedDevicesRequest", "response": "LinkedDevices", "doc": "list all linked devices on a Signal account", "deprecated": true }, "remove_linked_device": { "request": "RemoveLinkedDeviceRequest", "doc": "Remove a linked device from the Signal account. Only allowed when the local device id is 1" }, "join_group": { "request": "JoinGroupRequest", "response": "JsonGroupJoinInfo", "doc": "Join a group using the a signal.group URL. Note that you must have a profile name set to join groups.", "deprecated": true }, "update_group": { "request": "UpdateGroupRequest", "response": "JsonGroupV2Info", "doc": "modify a group. only v2 groups for now", "deprecated": true }, "accept_invitation": { "request": "AcceptInvitationRequest", "response": "JsonGroupV2Info", "doc": "Accept a v2 group invitation. Note that you must have a profile name set to join groups.", "deprecated": true }, "approve_membership": { "request": "ApproveMembershipRequest", "response": "JsonGroupV2Info", "doc": "approve a request to join a group", "deprecated": true }, "get_group": { "request": "GetGroupRequest", "response": "JsonGroupV2Info", "doc": "Query the server for the latest state of a known group", "deprecated": true } }, "v1alpha2": { "update_group": { "request": "UpdateGroupRequest", "response": "GroupInfo", "doc": "modify a group", "deprecated": true } } } }