Slack API Types in Python
Project description
slack-types
Pydantic v2 type definitions for the Slack APIs:
- Web API (
slack_types.web_api) - Events API (
slack_types.events_api) - Real Time Messaging API (
slack_types.rtm_api) - App backend payloads (
slack_types.app_backend.{dialogs,interactive_components,slash_commands,views}) - Audit Logs API (
slack_types.audit_api.v1) - SCIM API (
slack_types.scim_api.{v1,v2})
PyPI: https://pypi.org/project/slack-types
Install
uv add slack-types
# or
pip install slack-types
Use
from typing import Callable
from slack_bolt.async_app import AsyncApp
from slack_sdk.web.async_client import AsyncWebClient
from slack_types.events_api.app_mention_payload import Event as AppMentionEvent
app = AsyncApp()
@app.event("app_mention")
async def handle_mentions(event: dict, client: AsyncWebClient, say: Callable):
mention = AppMentionEvent.model_validate(event)
await client.reactions_add(
channel=mention.channel,
timestamp=mention.ts,
name="eyes",
)
await say("What's up?")
if __name__ == "__main__":
app.start(3000)
Web API responses use the same Pydantic interface:
from slack_types.web_api.conversations_history_response import ConversationsHistoryResponse
response = await client.conversations_history(channel="C123")
history = ConversationsHistoryResponse.model_validate(response.data)
for message in history.messages or []:
print(message.ts, message.text)
All fields are Optional with defaults of None because Slack does not
guarantee any field on any response. Validate at the boundary; don't rely on
required-ness.
How types are generated
Input samples come from java-slack-sdk (recorded JSON responses). Each sample is converted to a JSON Schema with genson, then handed to datamodel-code-generator to emit a Pydantic v2 module.
Coverage may not be 100% and some properties may be incorrect. File issues at https://github.com/warrenseine/slack-types/issues.
To re-generate:
uv sync --group dev
uv run python scripts/build.py # clones java-slack-sdk/ on first run
uv run pytest # smoke + round-trip tests
To publish:
uv build
uv publish
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
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
File details
Details for the file slack_types-1.1.0.tar.gz.
File metadata
- Download URL: slack_types-1.1.0.tar.gz
- Upload date:
- Size: 177.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dfa8723d5e66e3963ebc653079e78b94128e1105b00643afc9c8fabda5d299b7
|
|
| MD5 |
63f67b95fa3a28f2bf421fab6f89c7ce
|
|
| BLAKE2b-256 |
39c628fe74b40e4816e1056ae9b5d5573e5bd182115987c55ca2a3a0a0e0adbb
|
File details
Details for the file slack_types-1.1.0-py3-none-any.whl.
File metadata
- Download URL: slack_types-1.1.0-py3-none-any.whl
- Upload date:
- Size: 463.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7144ebc607580467696520564b31df137338927e38f0f4f045cc4f07809e5937
|
|
| MD5 |
e3447236840caa2c1315da424764c864
|
|
| BLAKE2b-256 |
0db59a403e5f782a77c1831a899b5f84410d47e5b7471d68af361d13dbd50de5
|