Skip to main content

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 APIclient.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-After headers
  • SecureSecretStr for 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, 429 status codes
  • Respects Retry-After header 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

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.0.tar.gz (31.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mm_async-0.4.0-py3-none-any.whl (16.9 kB view details)

Uploaded Python 3

File details

Details for the file mm_async-0.4.0.tar.gz.

File metadata

  • Download URL: mm_async-0.4.0.tar.gz
  • Upload date:
  • Size: 31.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for mm_async-0.4.0.tar.gz
Algorithm Hash digest
SHA256 80b5279a52abcc678e9321646206943b4d19d88a79134526f076c2c9faba359b
MD5 9b627f3078da5297a01a308a02aeacf5
BLAKE2b-256 df74514553da4a7d164aa09d6999ff38eaae4e74b7963eba35108ceb955a160f

See more details on using hashes here.

File details

Details for the file mm_async-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: mm_async-0.4.0-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

Hashes for mm_async-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 64a8926c2f4622b001254b6a422b8b82227b07bfa0c2befbe9b28c3d259cf88a
MD5 e8309186acd078c79446beba11f18fb7
BLAKE2b-256 525a13b1c285a47e57d7e3ace3e90efac2941ab4175101d1b373a9593b3e89e1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page