"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."
"doc":"return results from local store immediately, refreshing from server if needed. If false (default), block until all pending profiles have been retrieved."
"doc":"return results from local store immediately, refreshing from server afterward if needed. If false (default), block until all pending profiles have been retrieved."
"doc":"Generate a linking URI. Typically this is QR encoded and scanned by the primary device. Submit the returned session_id with a finish_link request."
"doc":"The Signal device ID. Official Signal mobile clients (iPhone and Android) have device ID = 1, while linked devices such as Signal Desktop or Signal iPad have higher device IDs."
},
"account_id":{
"type":"String",
"doc":"The primary identifier on the account, included with all requests to signald for this account. Previously called 'username'"
"doc":"begin the account registration process by requesting a phone number verification code. when the code is received, submit it with a verify request"
},
"VerifyRequest":{
"fields":{
"account":{
"type":"String",
"doc":"the e164 phone number being verified",
"example":"\"+12024561414\"",
"required":true
},
"code":{
"type":"String",
"doc":"the verification code, dash (-) optional",
"example":"\"555555\"",
"required":true
}
},
"doc":"verify an account's phone number with a code after registering, completing the account creation process"
},
"GetIdentitiesRequest":{
"fields":{
"account":{
"type":"String",
"doc":"The account to interact with",
"example":"\"+12024561414\"",
"required":true
},
"address":{
"type":"JsonAddress",
"version":"v1",
"doc":"address to get keys for",
"required":true
}
},
"doc":"Get information about a known keys for a particular address"
},
"IdentityKeyList":{
"fields":{
"address":{
"type":"JsonAddress",
"version":"v1"
},
"identities":{
"list":true,
"type":"IdentityKey",
"version":"v1"
}
},
"doc":"a list of identity keys associated with a particular address"
},
"TrustRequest":{
"fields":{
"account":{
"type":"String",
"doc":"The account to interact with",
"example":"\"+12024561414\"",
"required":true
},
"address":{
"type":"JsonAddress",
"version":"v1",
"doc":"The user to query identity keys for",
"required":true
},
"safety_number":{
"type":"String",
"doc":"required if qr_code_data is absent"
},
"qr_code_data":{
"type":"String",
"doc":"base64-encoded QR code data. required if safety_number is absent"
},
"trust_level":{
"type":"String",
"doc":"One of TRUSTED_UNVERIFIED, TRUSTED_VERIFIED or UNTRUSTED",
"example":"\"TRUSTED_VERIFIED\"",
"required":true
}
},
"doc":"Trust another user's safety number using either the QR code data or the safety number text"
},
"DeleteAccountRequest":{
"fields":{
"account":{
"type":"String",
"doc":"The account to delete",
"example":"\"+12024561414\"",
"required":true
}
},
"doc":"delete all account data signald has on disk, and optionally delete the account from the server as well. Note that this is not \"unlink\" and will delete the entire account, even from a linked device."
"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.",
"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",
"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",
"doc":"UNSATISFIABLE when the group link is disabled, ADMINISTRATOR when the group link is enabled but an administrator must approve new members, ANY when the group link is enabled and no approval is required",
"example":"\"ANY\""
},
"attributes":{
"type":"String",
"doc":"who can edit group info"
},
"members":{
"type":"String",
"doc":"who can add members"
}
},
"doc":"group access control settings. Options for each controlled action are: UNKNOWN, ANY, MEMBER, ADMINISTRATOR, UNSATISFIABLE and UNRECOGNIZED"
"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"
"doc":"Generate a linking URI. Typically this is QR encoded and scanned by the primary device. Submit the returned session_id with a finish_link request."
"doc":"Link a new device to a local Signal account"
},
"register":{
"request":"RegisterRequest",
"response":"Account",
"doc":"begin the account registration process by requesting a phone number verification code. when the code is received, submit it with a verify request"
},
"verify":{
"request":"VerifyRequest",
"response":"Account",
"doc":"verify an account's phone number with a code after registering, completing the account creation process"
},
"get_identities":{
"request":"GetIdentitiesRequest",
"response":"IdentityKeyList",
"doc":"Get information about a known keys for a particular address"
},
"trust":{
"request":"TrustRequest",
"doc":"Trust another user's safety number using either the QR code data or the safety number text"
},
"delete_account":{
"request":"DeleteAccountRequest",
"doc":"delete all account data signald has on disk, and optionally delete the account from the server as well. Note that this is not \"unlink\" and will delete the entire account, even from a linked device."