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
Metadata
Release files for slack-types 1.2.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| slack_types-1.2.6.tar.gz | 177.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| slack_types-1.2.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 641.8 kB
Release files / slack_types-1.2.6.tar.gz
| Download URL | slack_types-1.2.6.tar.gz |
|---|---|
| Size | 177.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6340276edb8ccf264e4ddf89f784ec2f5172e78b40123fd5735d9d192f874898
|
|
BLAKE2b-256 checksum How to use checksums |
d744fc775aaed27728d6f3d8e4535612930d0d04a6885a3fc589093e36a873d5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.31 {"installer":{"name":"uv","version":"0.11.31","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}
|
Release files / slack_types-1.2.6-py3-none-any.whl
| Download URL | slack_types-1.2.6-py3-none-any.whl |
|---|---|
| Size | 464.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9c2dcde627188770bb801d2cbf703d27d5f16300a6f29dccfc61042ea0630fa9
|
|
BLAKE2b-256 checksum How to use checksums |
1b70f082f0fb7bf00025d87d8b881916d3df176be908cacee4d3bc4161c3832f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.31 {"installer":{"name":"uv","version":"0.11.31","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}
|