basePath: / definitions: api.AddDeviceRequest: properties: uri: type: string type: object api.AddStickerPackRequest: properties: pack_id: example: 9a32eda01a7a28574f2eb48668ae0dc4 type: string pack_key: example: 19546e18eba0ff69dea78eb591465289d39e16f35e58389ae779d4f9455aff3a type: string type: object api.ChangeGroupAdminsRequest: properties: admins: items: type: string type: array type: object api.ChangeGroupMembersRequest: properties: members: items: type: string type: array type: object api.Configuration: properties: logging: $ref: '#/definitions/api.LoggingConfiguration' type: object api.CreateGroupRequest: properties: description: type: string expiration_time: type: integer group_link: enum: - disabled - enabled - enabled-with-approval type: string members: items: type: string type: array name: type: string permissions: $ref: '#/definitions/api.GroupPermissions' type: object api.CreateGroupResponse: properties: id: type: string type: object api.Error: properties: error: type: string type: object api.GroupPermissions: properties: add_members: enum: - only-admins - every-member type: string edit_group: enum: - only-admins - every-member type: string type: object api.LoggingConfiguration: properties: Level: type: string type: object api.RateLimitChallengeRequest: properties: captcha: example: signalcaptcha://{captcha value} type: string challenge_token: example: type: string type: object api.Reaction: properties: reaction: type: string recipient: type: string target_author: type: string timestamp: type: integer type: object api.Receipt: properties: receipt_type: enum: - read - viewed type: string recipient: type: string timestamp: type: integer type: object api.RegisterNumberRequest: properties: captcha: type: string use_voice: type: boolean type: object api.SearchResponse: properties: number: type: string registered: type: boolean type: object api.SendMessageError: properties: account: type: string challenge_tokens: items: type: string type: array error: type: string type: object api.SendMessageResponse: properties: timestamp: type: string type: object api.SendMessageV1: properties: base64_attachment: example: ''''' OR ''data:;base64,'' OR ''data:;filename=;base64,''' type: string is_group: type: boolean message: type: string number: type: string recipients: items: type: string type: array type: object api.SendMessageV2: type: object api.SetUsernameRequest: properties: username: example: test type: string type: object api.TrustIdentityRequest: properties: trust_all_known_keys: example: false type: boolean verified_safety_number: type: string type: object api.TrustModeRequest: properties: trust_mode: type: string type: object api.TrustModeResponse: properties: trust_mode: type: string type: object api.TypingIndicatorRequest: properties: recipient: type: string type: object api.UnregisterNumberRequest: properties: delete_account: example: false type: boolean delete_local_data: example: false type: boolean type: object api.UpdateAccountSettingsRequest: properties: discoverable_by_number: type: boolean share_number: type: boolean type: object api.UpdateContactRequest: properties: expiration_in_seconds: type: integer name: type: string recipient: type: string type: object api.UpdateGroupRequest: properties: base64_avatar: type: string description: type: string name: type: string type: object api.UpdateProfileRequest: properties: about: type: string base64_avatar: type: string name: type: string type: object api.VerifyNumberSettings: properties: pin: type: string type: object client.About: properties: build: type: integer capabilities: additionalProperties: items: type: string type: array type: object mode: type: string version: type: string versions: items: type: string type: array type: object client.GroupEntry: properties: admins: items: type: string type: array blocked: type: boolean id: type: string internal_id: type: string invite_link: type: string members: items: type: string type: array name: type: string pending_invites: items: type: string type: array pending_requests: items: type: string type: array type: object client.IdentityEntry: properties: added: type: string fingerprint: type: string number: type: string safety_number: type: string status: type: string type: object client.ListContactsResponse: properties: blocked: type: boolean color: type: string message_expiration: type: string name: type: string number: type: string profile_name: type: string username: type: string uuid: type: string type: object client.ListInstalledStickerPacksResponse: properties: author: type: string installed: type: boolean pack_id: type: string title: type: string url: type: string type: object client.SetUsernameResponse: properties: username: type: string username_link: type: string type: object host: localhost:8080 info: contact: {} description: This is the Signal Cli REST API documentation. title: Signal Cli REST API version: "1.0" paths: /v1/about: get: description: Returns the supported API versions and the internal build nr produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/client.About' summary: Lists general information about the API tags: - General /v1/accounts: get: description: Lists all of the accounts linked or registered produces: - application/json responses: "200": description: OK schema: items: type: string type: array "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: List all accounts tags: - Accounts /v1/accounts/{number}/rate-limit-challenge: post: consumes: - application/json description: 'When running into rate limits, sometimes the limit can be lifted, by solving a CAPTCHA. To get the captcha token, go to https://signalcaptchas.org/challenge/generate.html For the staging environment, use: https://signalcaptchas.org/staging/registration/generate.html. The "challenge_token" is the token from the failed send attempt. The "captcha" is the captcha result, starting with signalcaptcha://' parameters: - description: Registered Phone Number in: path name: number required: true type: string - description: Request in: body name: data required: true schema: $ref: '#/definitions/api.RateLimitChallengeRequest' produces: - application/json responses: "204": description: No Content "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: Lift rate limit restrictions by solving a captcha. tags: - Accounts /v1/accounts/{number}/settings: put: consumes: - application/json description: Update the account attributes on the signal server. parameters: - description: Registered Phone Number in: path name: number required: true type: string - description: Request in: body name: data required: true schema: $ref: '#/definitions/api.UpdateAccountSettingsRequest' produces: - application/json responses: "204": description: No Content "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: Update the account settings. tags: - Accounts /v1/accounts/{number}/username: delete: consumes: - application/json description: Delete the username associated with this account. parameters: - description: Registered Phone Number in: path name: number required: true type: string produces: - application/json responses: "204": description: No Content "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: Remove a username. tags: - Accounts post: consumes: - application/json description: Allows to set the username that should be used for this account. This can either be just the nickname (e.g. test) or the complete username with discriminator (e.g. test.123). Returns the new username with discriminator and the username link. parameters: - description: Registered Phone Number in: path name: number required: true type: string - description: Request in: body name: data required: true schema: $ref: '#/definitions/api.SetUsernameRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/client.SetUsernameResponse' "204": description: No Content "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: Set a username. tags: - Accounts /v1/attachments: get: description: List all downloaded attachments produces: - application/json responses: "200": description: OK schema: items: type: string type: array "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: List all attachments. tags: - Attachments /v1/attachments/{attachment}: delete: description: Remove the attachment with the given id from filesystem. parameters: - description: Attachment ID in: path name: attachment required: true type: string produces: - application/json responses: "204": description: No Content schema: type: string "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: Remove attachment. tags: - Attachments get: description: Serve the attachment with the given id parameters: - description: Attachment ID in: path name: attachment required: true type: string produces: - application/json responses: "200": description: OK schema: type: string "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: Serve Attachment. tags: - Attachments /v1/configuration: get: consumes: - application/json description: List the REST API configuration. produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/api.Configuration' "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: List the REST API configuration. tags: - General post: consumes: - application/json description: Set the REST API configuration. parameters: - description: Configuration in: body name: data required: true schema: $ref: '#/definitions/api.Configuration' produces: - application/json responses: "204": description: OK schema: type: string "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: Set the REST API configuration. tags: - General /v1/configuration/{number}/settings: get: consumes: - application/json description: List account specific settings. parameters: - description: Registered Phone Number in: path name: number required: true type: string - description: Request in: body name: data required: true schema: $ref: '#/definitions/api.TrustModeResponse' produces: - application/json responses: "200": description: OK "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: List account specific settings. tags: - General post: consumes: - application/json description: Set account specific settings. parameters: - description: Registered Phone Number in: path name: number required: true type: string - description: Request in: body name: data required: true schema: $ref: '#/definitions/api.TrustModeRequest' produces: - application/json responses: "204": description: No Content "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: Set account specific settings. tags: - General /v1/contacts/{number}: get: description: List all contacts for the given number. parameters: - description: Registered Phone Number in: path name: number required: true type: string produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/client.ListContactsResponse' type: array summary: List Contacts tags: - Contacts put: consumes: - application/json description: Updates the info associated to a number on the contact list. parameters: - description: Registered Phone Number in: path name: number required: true type: string - description: Contact in: body name: data required: true schema: $ref: '#/definitions/api.UpdateContactRequest' produces: - application/json responses: "204": description: No Content "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: Updates the info associated to a number on the contact list. If the contact doesn’t exist yet, it will be added. tags: - Contacts /v1/contacts/{number}/sync: post: consumes: - application/json description: Send a synchronization message with the local contacts list to all linked devices. This command should only be used if this is the primary device. parameters: - description: Registered Phone Number in: path name: number required: true type: string produces: - application/json responses: "204": description: No Content "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: Send a synchronization message with the local contacts list to all linked devices. tags: - Contacts /v1/devices/{number}: post: consumes: - application/json description: Links another device to this device. Only works, if this is the master device. parameters: - description: Registered Phone Number in: path name: number required: true type: string - description: Request in: body name: data required: true schema: $ref: '#/definitions/api.AddDeviceRequest' produces: - application/json responses: "204": description: No Content "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: Links another device to this device. tags: - Devices /v1/groups/{number}: get: consumes: - application/json description: List all Signal Groups. parameters: - description: Registered Phone Number in: path name: number required: true type: string produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/client.GroupEntry' type: array "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: List all Signal Groups. tags: - Groups post: consumes: - application/json description: Create a new Signal Group with the specified members. parameters: - description: Input Data in: body name: data required: true schema: $ref: '#/definitions/api.CreateGroupRequest' - description: Registered Phone Number in: path name: number required: true type: string produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/api.CreateGroupResponse' "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: Create a new Signal Group. tags: - Groups /v1/groups/{number}/{groupid}: delete: consumes: - application/json description: Delete the specified Signal Group. parameters: - description: Registered Phone Number in: path name: number required: true type: string - description: Group Id in: path name: groupid required: true type: string produces: - application/json responses: "200": description: OK schema: type: string "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: Delete a Signal Group. tags: - Groups get: consumes: - application/json description: List a specific Signal Group. parameters: - description: Registered Phone Number in: path name: number required: true type: string - description: Group ID in: path name: groupid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/client.GroupEntry' "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: List a Signal Group. tags: - Groups put: consumes: - application/json description: Update the state of a Signal Group. parameters: - description: Registered Phone Number in: path name: number required: true type: string - description: Group ID in: path name: groupid required: true type: string - description: Input Data in: body name: data required: true schema: $ref: '#/definitions/api.UpdateGroupRequest' produces: - application/json responses: "204": description: No Content schema: type: string "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: Update the state of a Signal Group. tags: - Groups /v1/groups/{number}/{groupid}/admins: delete: consumes: - application/json description: Remove one or more admins from an existing Signal Group. parameters: - description: Admins in: body name: data required: true schema: $ref: '#/definitions/api.ChangeGroupAdminsRequest' - description: Registered Phone Number in: path name: number required: true type: string - description: Group ID in: path name: groupid required: true type: string produces: - application/json responses: "204": description: No Content schema: type: string "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: Remove one or more admins from an existing Signal Group. tags: - Groups post: consumes: - application/json description: Add one or more admins to an existing Signal Group. parameters: - description: Admins in: body name: data required: true schema: $ref: '#/definitions/api.ChangeGroupAdminsRequest' - description: Registered Phone Number in: path name: number required: true type: string - description: Group ID in: path name: groupid required: true type: string produces: - application/json responses: "204": description: No Content schema: type: string "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: Add one or more admins to an existing Signal Group. tags: - Groups /v1/groups/{number}/{groupid}/block: post: consumes: - application/json description: Block the specified Signal Group. parameters: - description: Registered Phone Number in: path name: number required: true type: string - description: Group ID in: path name: groupid required: true type: string produces: - application/json responses: "204": description: No Content schema: type: string "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: Block a Signal Group. tags: - Groups /v1/groups/{number}/{groupid}/join: post: consumes: - application/json description: Join the specified Signal Group. parameters: - description: Registered Phone Number in: path name: number required: true type: string - description: Group ID in: path name: groupid required: true type: string produces: - application/json responses: "204": description: No Content schema: type: string "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: Join a Signal Group. tags: - Groups /v1/groups/{number}/{groupid}/members: delete: consumes: - application/json description: Remove one or more members from an existing Signal Group. parameters: - description: Members in: body name: data required: true schema: $ref: '#/definitions/api.ChangeGroupMembersRequest' - description: Registered Phone Number in: path name: number required: true type: string - description: Group ID in: path name: groupid required: true type: string produces: - application/json responses: "204": description: No Content schema: type: string "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: Remove one or more members from an existing Signal Group. tags: - Groups post: consumes: - application/json description: Add one or more members to an existing Signal Group. parameters: - description: Members in: body name: data required: true schema: $ref: '#/definitions/api.ChangeGroupMembersRequest' - description: Registered Phone Number in: path name: number required: true type: string - description: Group ID in: path name: groupid required: true type: string produces: - application/json responses: "204": description: No Content schema: type: string "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: Add one or more members to an existing Signal Group. tags: - Groups /v1/groups/{number}/{groupid}/quit: post: consumes: - application/json description: Quit the specified Signal Group. parameters: - description: Registered Phone Number in: path name: number required: true type: string - description: Group ID in: path name: groupid required: true type: string produces: - application/json responses: "204": description: No Content schema: type: string "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: Quit a Signal Group. tags: - Groups /v1/health: get: description: Internally used by the docker container to perform the health check. produces: - application/json responses: "204": description: No Content schema: type: string summary: API Health Check tags: - General /v1/identities/{number}: get: description: List all identities for the given number. parameters: - description: Registered Phone Number in: path name: number required: true type: string produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/client.IdentityEntry' type: array summary: List Identities tags: - Identities /v1/identities/{number}/trust/{numberToTrust}: put: description: Trust an identity. When 'trust_all_known_keys' is set to' true', all known keys of this user are trusted. **This is only recommended for testing.** parameters: - description: Input Data in: body name: data required: true schema: $ref: '#/definitions/api.TrustIdentityRequest' - description: Registered Phone Number in: path name: number required: true type: string - description: Number To Trust in: path name: numberToTrust required: true type: string produces: - application/json responses: "204": description: No Content schema: type: string summary: Trust Identity tags: - Identities /v1/profiles/{number}: put: description: Set your name and optional an avatar. parameters: - description: Profile Data in: body name: data required: true schema: $ref: '#/definitions/api.UpdateProfileRequest' - description: Registered Phone Number in: path name: number required: true type: string produces: - application/json responses: "204": description: No Content schema: type: string "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: Update Profile. tags: - Profiles /v1/qrcodelink: get: description: Link device and generate QR code parameters: - description: Device Name in: query name: device_name required: true type: string - description: QRCode Version (defaults to 10) in: query name: qrcode_version type: integer produces: - application/json responses: "200": description: Image schema: type: string "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: Link device and generate QR code. tags: - Devices /v1/reactions/{number}: delete: consumes: - application/json description: Remove a reaction parameters: - description: Reaction in: body name: data required: true schema: $ref: '#/definitions/api.Reaction' - description: Registered phone number in: path name: number required: true type: string produces: - application/json responses: "204": description: No Content schema: type: string "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: Remove a reaction. tags: - Reactions post: consumes: - application/json description: React to a message parameters: - description: Reaction in: body name: data required: true schema: $ref: '#/definitions/api.Reaction' - description: Registered phone number in: path name: number required: true type: string produces: - application/json responses: "204": description: No Content schema: type: string "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: Send a reaction. tags: - Reactions /v1/receipts/{number}: post: consumes: - application/json description: Send a read or viewed receipt parameters: - description: Receipt in: body name: data required: true schema: $ref: '#/definitions/api.Receipt' - description: Registered phone number in: path name: number required: true type: string produces: - application/json responses: "204": description: No Content schema: type: string "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: Send a receipt. tags: - Receipts /v1/receive/{number}: get: consumes: - application/json description: Receives Signal Messages from the Signal Network. If you are running the docker container in normal/native mode, this is a GET endpoint. In json-rpc mode this is a websocket endpoint. parameters: - description: Registered Phone Number in: path name: number required: true type: string - description: 'Receive timeout in seconds (default: 1)' in: query name: timeout type: string - description: Specify whether the attachments of the received message should be ignored in: query name: ignore_attachments type: string - description: Specify whether stories should be ignored when receiving messages in: query name: ignore_stories type: string - description: 'Specify the maximum number of messages to receive (default: unlimited)' in: query name: max_messages type: string - description: Specify whether read receipts should be sent when receiving messages in: query name: send_read_receipts type: string produces: - application/json responses: "200": description: OK schema: items: type: string type: array "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: Receive Signal Messages. tags: - Messages /v1/register/{number}: post: consumes: - application/json description: Register a phone number with the signal network. parameters: - description: Registered Phone Number in: path name: number required: true type: string - description: Additional Settings in: body name: data schema: $ref: '#/definitions/api.RegisterNumberRequest' produces: - application/json responses: "201": description: Created "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: Register a phone number. tags: - Devices /v1/register/{number}/verify/{token}: post: consumes: - application/json description: Verify a registered phone number with the signal network. parameters: - description: Registered Phone Number in: path name: number required: true type: string - description: Additional Settings in: body name: data schema: $ref: '#/definitions/api.VerifyNumberSettings' - description: Verification Code in: path name: token required: true type: string produces: - application/json responses: "201": description: OK schema: type: string "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: Verify a registered phone number. tags: - Devices /v1/search: get: consumes: - application/json description: Check if one or more phone numbers are registered with the Signal Service. parameters: - description: Registered Phone Number in: path name: number type: string - collectionFormat: multi description: Numbers to check in: query items: type: string name: numbers required: true type: array produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/api.SearchResponse' type: array "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: Check if one or more phone numbers are registered with the Signal Service. tags: - Search /v1/send: post: consumes: - application/json deprecated: true description: Send a signal message parameters: - description: Input Data in: body name: data required: true schema: $ref: '#/definitions/api.SendMessageV1' produces: - application/json responses: "201": description: OK schema: type: string "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: Send a signal message. tags: - Messages /v1/sticker-packs/{number}: get: consumes: - application/json description: List Installed Sticker Packs. parameters: - description: Registered Phone Number in: path name: number required: true type: string produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/client.ListInstalledStickerPacksResponse' type: array "204": description: No Content "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: List Installed Sticker Packs. tags: - Sticker Packs post: consumes: - application/json description: 'In order to add a sticker pack, browse to https://signalstickers.org/ and select the sticker pack you want to add. Then, press the "Add to Signal" button. If you look at the address bar in your browser you should see an URL in this format: https://signal.art/addstickers/#pack_id=XXX&pack_key=YYY, where XXX is the pack_id and YYY is the pack_key.' parameters: - description: Registered Phone Number in: path name: number required: true type: string - description: Request in: body name: data required: true schema: $ref: '#/definitions/api.AddStickerPackRequest' produces: - application/json responses: "204": description: No Content "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: Add Sticker Pack. tags: - Sticker Packs /v1/typing-indicator/{number}: delete: consumes: - application/json description: Hide Typing Indicator. parameters: - description: Registered Phone Number in: path name: number required: true type: string - description: Type in: body name: data required: true schema: $ref: '#/definitions/api.TypingIndicatorRequest' produces: - application/json responses: "204": description: No Content schema: type: string "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: Hide Typing Indicator. tags: - Messages put: consumes: - application/json description: Show Typing Indicator. parameters: - description: Registered Phone Number in: path name: number required: true type: string - description: Type in: body name: data required: true schema: $ref: '#/definitions/api.TypingIndicatorRequest' produces: - application/json responses: "204": description: No Content schema: type: string "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: Show Typing Indicator. tags: - Messages /v1/unregister/{number}: post: consumes: - application/json description: Disables push support for this device. **WARNING:** If *delete_account* is set to *true*, the account will be deleted from the Signal Server. This cannot be undone without loss. parameters: - description: Registered Phone Number in: path name: number required: true type: string - description: Additional Settings in: body name: data schema: $ref: '#/definitions/api.UnregisterNumberRequest' produces: - application/json responses: "204": description: No Content "400": description: Bad Request schema: $ref: '#/definitions/api.Error' summary: Unregister a phone number. tags: - Devices /v2/send: post: consumes: - application/json description: 'Send a signal message. Set the text_mode to ''styled'' in case you want to add formatting to your text message. Styling Options: *italic text*, **bold text**, ~strikethrough text~.' parameters: - description: Input Data in: body name: data required: true schema: $ref: '#/definitions/api.SendMessageV2' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/api.SendMessageResponse' "400": description: Bad Request schema: $ref: '#/definitions/api.SendMessageError' summary: Send a signal message. tags: - Messages schemes: - http swagger: "2.0" tags: - description: Some general endpoints. name: General - description: Register and link Devices. name: Devices - description: List registered and linked accounts name: Accounts - description: Create, List and Delete Signal Groups. name: Groups - description: Send and Receive Signal Messages. name: Messages - description: List and Delete Attachments. name: Attachments - description: Update Profile. name: Profiles - description: List and Trust Identities. name: Identities - description: React to messages. name: Reactions - description: Send receipts for messages. name: Receipts - description: Search the Signal Service. name: Search - description: List and Install Sticker Packs name: Sticker Packs