Skip to main content

threema-gateway is a Python 3 module for the Threema gateway service. This API can be used to send and receive text messages to and from any Threema user.

Note

On machines where Python 3 is not the default Python runtime, you should use pip3 instead of pip.

Prerequisites

$ sudo apt-get install python3 python3-pip

We recommend using venv to create an isolated Python environment:

$ pyvenv venv

You can switch into the created virtual environment venv by running this command:

$ source venv/bin/activate

While the virtual environment is active, all packages installed using pip will be installed into this environment.

To deactivate the virtual environment, just run:

$ deactivate

If you want easier handling of your virtualenvs, you might also want to take a look at virtualenvwrapper.

Installation

If you are using a virtual environment, activate it first.

Install the module by running:

$ pip install threema.gateway

The dependency libnacl will be installed automatically. However, you may need to install libsodium for libnacl to work.

Command Line Usage

The script threema-gateway provides a command line interface for the Threema gateway. Run the following command to see usage information:

$ threema-gateway --help

Gateway API Endpoint

The default Gateway API Endpoint URL used is https://msgapi.threema.ch/.

If you are a Threema OnPrem customer or have another reason to use a different Gateway API Endpoint, you may override the URL as follows:

$ export GATEWAY_API_URL=https://onprem.myinstance.tld/msgapi

Any following calls to threema-gateway will then use the supplied Gateway API Endpoint URL.

Examples

You can find a few example scripts in the examples/ directory.

Note that most of them need to be adjusted to at least add your gateway ID credentials before they run successfully.

Feature Levels

Level

Text

Capabilities

Image

File

Credits

1

X

2

X

X

X

X

3

X

X

X

X

X

You can see the implemented feature level by invoking the following command:

$ threema-gateway version

Contributing

If you want to contribute to this project, you should install the optional dev requirements of the project in an editable environment:

$ git clone https://github.com/threema-ch/threema-msgapi-sdk-python.git
$ cd threema-msgapi-sdk-python
$ pip install -e .[dev]

Before creating a pull request, it is recommended to run the following commands to check for code style violations (flake8), optimise imports (isort) and run the project’s tests:

$ flake8 .
$ isort .
$ py.test

You should also run the type checker that might catch some additional bugs:

$ mypy setup.py tests examples threema

Changelog

8.0.0 (2024-08-21)

  • Add support for Python 3.10/3.11/3.12

  • Drop support for Python versions below 3.8

  • Bump dependencies

  • Add caption to file message and to the CLI

  • Add an optional parameter to the CLI for send-simple and send-e2e to allow passing the text as an argument instead from stdin.

  • Make the random padding spec compliant

  • Add an optional environment variable GATEWAY_API_URL to override the Gateway API Endpoint URL

7.0.1 (2023-02-21)

  • Fix parsing of unknown reception capabilities

  • Add new ReceptionCapability items

  • Remove ReceptionCapabilitiesError (breaking)

6.0.0 (2022-06-13)

General:

  • Add support for Python 3.10

  • Drop support for Python versions below 3.7

  • Major dependencies bump to increase compatibility with other packages

  • Updated all tests to work with the newest dependencies

  • Changed CLI syntax: All commands are now dash-case instead of snake_case, e.g. the send_e2e command is now called send-e2e.

5.0.0 (2021-05-17)

  • Add custom session and session arguments to Connection (#55, #56)

  • Remove the fingerprint and verify_fingerprint arguments, see #55 for a detailed explanation and how to achieve pinning

4.0.0 (2021-01-23)

General:

  • Drop support for Python versions below 3.6.1.

  • Remove ReceiptType.user_ack after deprecation. Use ReceiptType.user_acknowledge instead.

  • Simplify util.aio_run. It does not allow for passing a specific event loop or closing the event loop on completion any longer.

  • Rename util.aio_run_proxy_decorator to aio_run_proxy. It now always creates the class instance within a running event loop.

Client:

  • In async mode, creation of the Connection instance must now be done within an async function.

  • If you have used a with context manager block in async mode before, you must now do this within an async with asynchronous context manager. No change is required in blocking mode.

  • Connection.close is now an async function.

Server:

  • The callback server has been refactored and the AbstractCallback class has been removed for more flexibility and control of the underlying aiohttp server. Take a look at examples/callback.py on how to use it.

  • The callback server CLI has been removed because it was redundant. The example provides the same functionality.

3.1.0 (2020-04-21)

  • Add video message

  • Fix slightly off calculation of image byte length

3.0.6 (2017-09-22)

  • Migrate to aiohttp2

3.0.5 (2017-07-25)

  • Fix to handle new libnacl exceptions.

3.0.4 (2017-05-23)

  • Fix CLI

3.0.2 (2017-05-12)

  • Initial publication on PyPI

Release files for threema.gateway 8.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for threema.gateway 8.0.0
File Size Uploaded
threema_gateway-8.0.0.tar.gz 438.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for threema.gateway 8.0.0
File Interpreter ABI Platform
threema.gateway-8.0.0-py38.py39.py310.py311.py312-none-any.whl Python 3.12, Python 3.10, Python 3.11, Python 3.8, Python 3.9 none any Details

Total release size:470.7 kB

Release files / threema_gateway-8.0.0.tar.gz

Download URL threema_gateway-8.0.0.tar.gz
Size 438.9 kB
Tags Source
SHA-256 checksum
How to use checksums
9a9e0852531752208dd3508a8063b4400b1f451eebceb82387ad23be422b238a
BLAKE2b-256 checksum
How to use checksums
7ded3566a018210cebc1676755eb039367ca3298cd57a93adcd3491251b81f54
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.4

Release files / threema.gateway-8.0.0-py38.py39.py310.py311.py312-none-any.whl

Download URL threema.gateway-8.0.0-py38.py39.py310.py311.py312-none-any.whl
Size 31.8 kB
Tags Python 3.10 Python 3.11 Python 3.12 Python 3.8 Python 3.9
SHA-256 checksum
How to use checksums
31459eb3bb7f6434e90d4d06e00bd007a84e27200a1176b4b0f27e6d8a1a0db2
BLAKE2b-256 checksum
How to use checksums
050b86ede946c75ae7040fa1e3f4c86f304f4c091f12896d97ea0fe3de498663
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.4

Release history Release notifications | RSS feed

This release

8.0.0 This release

2 release files

7.0.1

2 release files

6.0.0

2 release files

5.0.0

2 release files

4.0.0

2 release files

3.1.0

2 release files

3.0.6

2 release files

3.0.5

2 release files

3.0.4

2 release files

3.0.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page