Async HTTP client for Mattermost API
Project description
mm-async
Async HTTP client for Mattermost API with High-Level API support.
Features
- Async/await with httpx
- High-Level API —
client.users,client.teams,client.channels,client.posts - Type-safe — Pydantic models for all responses
- Resilient — automatic retry with exponential backoff
- Rate limit aware — respects
Retry-Afterheaders - Secure —
SecretStrfor token storage, SSL verification warnings
Installation
pip install mm-async
Or with Poetry:
poetry add mm-async
Quick Start
from mm_async import AsyncMattermostClient
async def main():
async with AsyncMattermostClient(
url="https://mattermost.example.com",
token="your-bot-token",
) as client:
# Get current user
me = await client.users.get_me()
print(f"Bot: {me.username}")
# Search users
users = await client.users.search("john")
# Send message
post = await client.posts.create(
channel_id="abc123",
message="Hello from bot!"
)
# Create DM and send message
dm = await client.channels.create_direct([me.id, users[0].id])
await client.posts.create(dm.id, "Private message")
Configuration
| Parameter | Type | Default | Description |
|---|---|---|---|
url |
str | — | Mattermost server URL |
token |
str | — | Bot or User access token |
verify_ssl |
bool | True |
Verify SSL certificates |
timeout |
float | 30.0 |
Request timeout (sec) |
connect_timeout |
float | 10.0 |
Connection timeout (sec) |
High-Level API
| Namespace | Methods | Description |
|---|---|---|
client.users |
7 | User operations (search, get, update) |
client.teams |
11 | Team management (members, admins) |
client.channels |
15 | Channel operations (create, members, DMs, search, admin listing) |
client.posts |
7 | Messaging (create, thread, search) |
See API Reference for complete method documentation.
Error Handling
from mm_async import (
AsyncMattermostClient,
MattermostAuthError,
MattermostRateLimitError,
MattermostNotFoundError,
)
async with AsyncMattermostClient(url=url, token=token) as client:
try:
user = await client.users.get_by_username("john")
if user is None:
print("User not found")
except MattermostAuthError:
print("Invalid token")
except MattermostRateLimitError as e:
print(f"Rate limited, retry after {e.retry_after}s")
Retry Logic
- GET, DELETE — automatic retry with exponential backoff
- POST, PUT — no retry (to avoid duplicates)
- Retries on:
500,502,503,504,429status codes - Respects
Retry-Afterheader for rate limits
Exceptions
| Exception | HTTP Code | Description |
|---|---|---|
MattermostError |
— | Base exception |
MattermostAuthError |
401 | Invalid or expired token |
MattermostForbiddenError |
403 | Insufficient permissions |
MattermostNotFoundError |
404 | Resource not found |
MattermostRateLimitError |
429 | Rate limit exceeded |
MattermostServerError |
5xx | Server error |
MattermostConnectionError |
— | Connection failed |
MattermostValidationError |
— | Invalid input parameters |
Documentation
- API Reference — Complete API documentation
- Examples — Practical usage examples
Requirements
- Python 3.11+
- httpx >= 0.28.0
- pydantic >= 2.0.0
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
mm_async-0.4.2.tar.gz
(31.0 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
mm_async-0.4.2-py3-none-any.whl
(16.9 kB
view details)
File details
Details for the file mm_async-0.4.2.tar.gz.
File metadata
- Download URL: mm_async-0.4.2.tar.gz
- Upload date:
- Size: 31.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aeffb139d8e2786915e0ac0dc5088b5f9268cac0ed0fb01b956ba348e4618f3b
|
|
| MD5 |
73893715f6eed4d4fad43946950ecde7
|
|
| BLAKE2b-256 |
4324ff476c61b7d4b7453974284d9ee4fa048e1de8231d3c772adeda655e6b1d
|
File details
Details for the file mm_async-0.4.2-py3-none-any.whl.
File metadata
- Download URL: mm_async-0.4.2-py3-none-any.whl
- Upload date:
- Size: 16.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
30c416b502a3af2e6c8fb8de3710924af8063c33d165be0b720571b0e8d39917
|
|
| MD5 |
22ec4666a0447954683315a90a1ee1f3
|
|
| BLAKE2b-256 |
ccfd84009f9007f7c989739f19195f05cbd38090102ee861177864ac4a415082
|