-
Notifications
You must be signed in to change notification settings - Fork 171
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
4 changed files
with
351 additions
and
112 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,78 +1,114 @@ | ||
# Dockerized Signal Messenger REST API | ||
|
||
This project creates a small dockerized REST API around [signal-cli](https://github.com/AsamK/signal-cli). | ||
|
||
|
||
At the moment, the following functionality is exposed via REST: | ||
|
||
* Register a number | ||
* Verify the number using the code received via SMS | ||
* Send message (+ attachment) to multiple recipients | ||
|
||
|
||
## Examples | ||
|
||
Sample `docker-compose.yml`file: | ||
|
||
``` | ||
version: "3" | ||
services: | ||
signal-cli-rest-api: | ||
image: bbernhard/signal-cli-rest-api:latest | ||
ports: | ||
- "8080:8080" #map docker port 8080 to host port 8080. | ||
network_mode: "host" | ||
volumes: | ||
- "./signal-cli-config:/home/.local/share/signal-cli" #map "signal-cli-config" folder on host system into docker container. the folder contains the password and cryptographic keys when a new number is registered | ||
``` | ||
|
||
Sample REST API calls: | ||
|
||
* Register a number (with SMS verification) | ||
|
||
```curl -X POST -H "Content-Type: application/json" 'http://127.0.0.1:8080/v1/register/<number>'``` | ||
|
||
e.g: | ||
|
||
```curl -X POST -H "Content-Type: application/json" 'http://127.0.0.1:8080/v1/register/+431212131491291'``` | ||
|
||
* Register a number (with voice verification) | ||
|
||
```curl -X POST -H "Content-Type: application/json" --data '{"use_voice": true}' 'http://127.0.0.1:8080/v1/register/<number>'``` | ||
|
||
e.g: | ||
|
||
```curl -X POST -H "Content-Type: application/json" --data '{"use_voice": true}' 'http://127.0.0.1:8080/v1/register/+431212131491291'``` | ||
|
||
* Verify the number using the code received via SMS/voice | ||
|
||
```curl -X POST -H "Content-Type: application/json" 'http://127.0.0.1:8080/v1/register/<number>/verify/<verification code>'``` | ||
|
||
e.g: | ||
|
||
```curl -X POST -H "Content-Type: application/json" 'http://127.0.0.1:8080/v1/register/+431212131491291/verify/123-456'``` | ||
|
||
* Send message to multiple recipients | ||
|
||
```curl -X POST -H "Content-Type: application/json" -d '{"message": "<message>", "number": "<number>", "recipients": ["<recipient1>", "<recipient2>"]}' 'http://127.0.0.1:8080/v1/send'``` | ||
|
||
e.g: | ||
|
||
```curl -X POST -H "Content-Type: application/json" -d '{"message": "Hello World!", "number": "+431212131491291", "recipients": ["+4354546464654", "+4912812812121"]}' 'http://127.0.0.1:8080/v1/send'``` | ||
|
||
* Send a message (+ base64 encoded attachment) to multiple recipients | ||
|
||
```curl -X POST -H "Content-Type: application/json" -d '{"message": "<message>", "base64_attachment": "<base64 encoded attachment>", "number": "<number>", "recipients": ["<recipient1>", "<recipient2>"]}' 'http://127.0.0.1:8080/v1/send'``` | ||
|
||
* Receive messages | ||
|
||
Fetch all new messages in the inbox of the specified number. | ||
|
||
```curl -X GET -H "Content-Type: application/json" 'http://127.0.0.1:8080/v1/receive/<number>'``` | ||
|
||
e.g: | ||
|
||
```curl -X GET -H "Content-Type: application/json" 'http://127.0.0.1:8080/v1/receive/+431212131491291'``` | ||
|
||
In case you need more functionality, please **file a ticket** or **create a PR** | ||
# Dockerized Signal Messenger REST API | ||
|
||
This project creates a small dockerized REST API around [signal-cli](https://github.com/AsamK/signal-cli). | ||
|
||
|
||
At the moment, the following functionality is exposed via REST: | ||
|
||
* Register a number | ||
* Verify the number using the code received via SMS | ||
* Send message (+ attachment) to multiple recipients | ||
|
||
|
||
## Examples | ||
|
||
Sample `docker-compose.yml`file: | ||
|
||
``` | ||
version: "3" | ||
services: | ||
signal-cli-rest-api: | ||
image: bbernhard/signal-cli-rest-api:latest | ||
ports: | ||
- "8080:8080" #map docker port 8080 to host port 8080. | ||
network_mode: "host" | ||
volumes: | ||
- "./signal-cli-config:/home/.local/share/signal-cli" #map "signal-cli-config" folder on host system into docker container. the folder contains the password and cryptographic keys when a new number is registered | ||
``` | ||
|
||
Sample REST API calls: | ||
|
||
* Register a number (with SMS verification) | ||
|
||
```curl -X POST -H "Content-Type: application/json" 'http://127.0.0.1:8080/v1/register/<number>'``` | ||
|
||
e.g: | ||
|
||
```curl -X POST -H "Content-Type: application/json" 'http://127.0.0.1:8080/v1/register/+431212131491291'``` | ||
|
||
* Register a number (with voice verification) | ||
|
||
```curl -X POST -H "Content-Type: application/json" --data '{"use_voice": true}' 'http://127.0.0.1:8080/v1/register/<number>'``` | ||
|
||
e.g: | ||
|
||
```curl -X POST -H "Content-Type: application/json" --data '{"use_voice": true}' 'http://127.0.0.1:8080/v1/register/+431212131491291'``` | ||
|
||
* Verify the number using the code received via SMS/voice | ||
|
||
```curl -X POST -H "Content-Type: application/json" 'http://127.0.0.1:8080/v1/register/<number>/verify/<verification code>'``` | ||
|
||
e.g: | ||
|
||
```curl -X POST -H "Content-Type: application/json" 'http://127.0.0.1:8080/v1/register/+431212131491291/verify/123-456'``` | ||
|
||
* Send message to multiple recipients | ||
|
||
```curl -X POST -H "Content-Type: application/json" -d '{"message": "<message>", "number": "<number>", "recipients": ["<recipient1>", "<recipient2>"]}' 'http://127.0.0.1:8080/v1/send'``` | ||
|
||
e.g: | ||
|
||
```curl -X POST -H "Content-Type: application/json" -d '{"message": "Hello World!", "number": "+431212131491291", "recipients": ["+4354546464654", "+4912812812121"]}' 'http://127.0.0.1:8080/v1/send'``` | ||
|
||
* Send a message (+ base64 encoded attachment) to multiple recipients | ||
|
||
```curl -X POST -H "Content-Type: application/json" -d '{"message": "<message>", "base64_attachment": "<base64 encoded attachment>", "number": "<number>", "recipients": ["<recipient1>", "<recipient2>"]}' 'http://127.0.0.1:8080/v1/send'``` | ||
|
||
* Receive messages | ||
|
||
Fetch all new messages in the inbox of the specified number. | ||
|
||
```curl -X GET -H "Content-Type: application/json" 'http://127.0.0.1:8080/v1/receive/<number>'``` | ||
|
||
e.g: | ||
|
||
```curl -X GET -H "Content-Type: application/json" 'http://127.0.0.1:8080/v1/receive/+431212131491291'``` | ||
|
||
* Create a new group | ||
|
||
Create a new group with the specified name and members. | ||
|
||
```curl -X POST -H "Content-Type: application/json" -d '{"name": "<group name>", "members": ["<member1>", "<member2>"]}' 'http://127.0.0.1:8080/v1/groups/<number>'``` | ||
|
||
e.g: | ||
|
||
```curl -X POST -H "Content-Type: application/json" -d '{"name": "my group", "members": ["+4354546464654", "+4912812812121"]}' 'http://127.0.0.1:8080/v1/groups/+431212131491291'``` | ||
|
||
* List groups | ||
|
||
```curl -X GET -H "Content-Type: application/json" 'http://127.0.0.1:8080/v1/groups/<number>'``` | ||
|
||
e.g: | ||
|
||
```curl -X GET -H "Content-Type: application/json" 'http://127.0.0.1:8080/v1/groups/+431212131491291'``` | ||
|
||
* Delete a group | ||
|
||
Delete the group with the given group id. The group id can be obtained via the "List groups" REST call. | ||
|
||
```curl -X DELETE -H "Content-Type: application/json" 'http://127.0.0.1:8080/v1/groups/<number>/<group id>'``` | ||
|
||
e.g: | ||
|
||
```curl -X DELETE -H "Content-Type: application/json" 'http://127.0.0.1:8080/v1/groups/+431212131491291/ckRzaEd4VmRzNnJaASAEsasa'``` | ||
|
||
* Send a message to a group | ||
|
||
```curl -X POST -H "Content-Type: application/json" -d '{"message": "Hello World!", "number": "<number>", "recipients": ["<group id>"], "is_group": true}' 'http://127.0.0.1:8080/v1/send'``` | ||
|
||
e.g: | ||
|
||
```curl -X POST -H "Content-Type: application/json" -d '{"message": "Hello World!", "number": "+431212131491291", "recipients": ["ckRzaEd4VmRzNnJaASAEsasa"], "is_group": true}' 'http://127.0.0.1:8080/v1/send'``` | ||
|
||
In case you need more functionality, please **file a ticket** or **create a PR** |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.