Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
01015a2
docs: add Markdown code fences to docstrings
lukegalbraithrussell Aug 13, 2026
67812bc
docs: migrate API reference from HTML (pdoc3) to Markdown (pydoc-mark…
lukegalbraithrussell Aug 13, 2026
2266bf2
docs: serve package reference pages at folder URLs
lukegalbraithrussell Aug 13, 2026
23874b0
move to be within english
lukegalbraithrussell Aug 13, 2026
de6d47e
docs: fence App.start() example and target docs/english/reference
lukegalbraithrussell Aug 13, 2026
51128e2
docs: embed reference tree into _sidebar.json
lukegalbraithrussell Aug 13, 2026
c6960fc
go
lukegalbraithrussell Aug 14, 2026
2b95612
go
lukegalbraithrussell Aug 14, 2026
44bafeb
colliding paths fix
lukegalbraithrussell Aug 14, 2026
da71715
go
lukegalbraithrussell Aug 14, 2026
7bf50da
go
lukegalbraithrussell Aug 14, 2026
ab7e690
go
lukegalbraithrussell Aug 14, 2026
24fe29c
go
lukegalbraithrussell Aug 14, 2026
07ba452
toc
lukegalbraithrussell Aug 18, 2026
abe7dd9
docstrings
lukegalbraithrussell Aug 18, 2026
0669cbd
toggles
lukegalbraithrussell Aug 18, 2026
490dbde
griffe
lukegalbraithrussell Aug 20, 2026
ccfe23e
working
lukegalbraithrussell Aug 20, 2026
3b07a17
streamline
lukegalbraithrussell Aug 20, 2026
0e8f943
go
lukegalbraithrussell Aug 20, 2026
608fc38
cleanup
lukegalbraithrussell Aug 20, 2026
f8c6b89
fencing
lukegalbraithrussell Aug 20, 2026
9cdcc00
gen reference sidebar
lukegalbraithrussell Aug 25, 2026
6353313
go
lukegalbraithrussell Aug 26, 2026
eef36ac
Merge main: adopt Ruff + docstring formatting from #1566/#1567
lukegalbraithrussell Aug 28, 2026
4ff3e0f
Md reference griffe (#1569)
lukegalbraithrussell Sep 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
19 changes: 19 additions & 0 deletions .github/workflows/ci-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,25 @@ jobs:
- name: Type check all modules
run: mypy --config-file pyproject.toml

docs-reference:
name: Reference docs drift
runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
contents: read
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Set up Python ${{ env.LATEST_SUPPORTED_PY }}
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: ${{ env.LATEST_SUPPORTED_PY }}
- name: Generate API reference
run: ./scripts/generate_api_docs.sh
- name: Verify committed reference is up to date
run: git diff --exit-code -- docs/english/reference

unittest:
name: Unit tests
runs-on: ubuntu-22.04
Expand Down
10 changes: 8 additions & 2 deletions docs/english/_sidebar.json
Original file line number Diff line number Diff line change
Expand Up @@ -118,9 +118,15 @@
},
{ "type": "html", "value": "<hr>" },
{
"type": "link",
"type": "category",
"label": "Reference",
"href": "https://docs.slack.dev/tools/bolt-python/reference/index.html"
"link": {
"type": "doc",
"id": "tools/bolt-python/reference/index"
},
"items": [
{ "type": "autogenerated", "dirName": "tools/bolt-python/reference" }
]
},
{ "type": "html", "value": "<hr>" },
{
Expand Down
6 changes: 6 additions & 0 deletions docs/english/reference/adapter/aiohttp/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
sidebar_label: aiohttp
title: slack_bolt.adapter.aiohttp
---


35 changes: 35 additions & 0 deletions docs/english/reference/adapter/asgi/aiohttp/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
---
sidebar_label: aiohttp
title: slack_bolt.adapter.asgi.aiohttp
---

## `AsyncSlackRequestHandler`

```python
AsyncSlackRequestHandler(app, path='/slack/events')
```

Bases: SlackRequestHandler

Setup Bolt as an ASGI web framework, this will make your application compatible with ASGI web servers.

This can be used for production deployment.

With the default settings, `http://localhost:3000/slack/events`
Run Bolt with [uvicron](https://www.uvicorn.org/)

```python
app = AsyncApp()
api = SlackRequestHandler(app)
```

```bash
export SLACK_SIGNING_SECRET=***
export SLACK_BOT_TOKEN=xoxb-***
uvicorn app:api --port 3000 --log-level debug
```

**Parameters:**

- **app** (AsyncApp) – Your bolt application
- **path** (str) – The path to handle request from Slack (Default: `/slack/events`)
35 changes: 35 additions & 0 deletions docs/english/reference/adapter/asgi/async_handler.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
---
sidebar_label: async_handler
title: slack_bolt.adapter.asgi.async_handler
---

## `AsyncSlackRequestHandler`

```python
AsyncSlackRequestHandler(app, path='/slack/events')
```

Bases: SlackRequestHandler

Setup Bolt as an ASGI web framework, this will make your application compatible with ASGI web servers.

This can be used for production deployment.

With the default settings, `http://localhost:3000/slack/events`
Run Bolt with [uvicron](https://www.uvicorn.org/)

```python
app = AsyncApp()
api = SlackRequestHandler(app)
```

```bash
export SLACK_SIGNING_SECRET=***
export SLACK_BOT_TOKEN=xoxb-***
uvicorn app:api --port 3000 --log-level debug
```

**Parameters:**

- **app** (AsyncApp) – Your bolt application
- **path** (str) – The path to handle request from Slack (Default: `/slack/events`)
30 changes: 30 additions & 0 deletions docs/english/reference/adapter/asgi/base_handler.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
sidebar_label: base_handler
title: slack_bolt.adapter.asgi.base_handler
---

## `BaseSlackRequestHandler`

### `dispatch`

```python
dispatch(request)
```

Dispatches a request to the Bolt App.

### `handle_callback`

```python
handle_callback(request)
```

Handles the callback of the OAuthFlow.

### `handle_installation`

```python
handle_installation(request)
```

Handles installation of the OAuthFlow.
35 changes: 35 additions & 0 deletions docs/english/reference/adapter/asgi/builtin/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
---
sidebar_label: builtin
title: slack_bolt.adapter.asgi.builtin
---

## `SlackRequestHandler`

```python
SlackRequestHandler(app, path='/slack/events')
```

Bases: BaseSlackRequestHandler

Setup Bolt as an ASGI web framework, this will make your application compatible with ASGI web servers.

This can be used for production deployment.

With the default settings, `http://localhost:3000/slack/events`
Run Bolt with [uvicron](https://www.uvicorn.org/)

```python
app = App()
api = SlackRequestHandler(app)
```

```bash
export SLACK_SIGNING_SECRET=***
export SLACK_BOT_TOKEN=xoxb-***
uvicorn app:api --port 3000 --log-level debug
```

**Parameters:**

- **app** (App) – Your bolt application
- **path** (str) – The path to handle request from Slack (Default: `/slack/events`)
6 changes: 6 additions & 0 deletions docs/english/reference/adapter/asgi/http_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
sidebar_label: http_request
title: slack_bolt.adapter.asgi.http_request
---


6 changes: 6 additions & 0 deletions docs/english/reference/adapter/asgi/http_response.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
sidebar_label: http_response
title: slack_bolt.adapter.asgi.http_response
---


45 changes: 45 additions & 0 deletions docs/english/reference/adapter/asgi/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
---
sidebar_label: asgi
title: slack_bolt.adapter.asgi
---

## `SlackRequestHandler`

```python
SlackRequestHandler(app, path='/slack/events')
```

Bases: BaseSlackRequestHandler

Setup Bolt as an ASGI web framework, this will make your application compatible with ASGI web servers.

This can be used for production deployment.

With the default settings, `http://localhost:3000/slack/events`
Run Bolt with [uvicron](https://www.uvicorn.org/)

```python
app = App()
api = SlackRequestHandler(app)
```

```bash
export SLACK_SIGNING_SECRET=***
export SLACK_BOT_TOKEN=xoxb-***
uvicorn app:api --port 3000 --log-level debug
```

**Parameters:**

- **app** (App) – Your bolt application
- **path** (str) – The path to handle request from Slack (Default: `/slack/events`)

## Submodules

- [slack_bolt.adapter.asgi.aiohttp](/tools/bolt-python/reference/adapter/asgi/aiohttp)
- [slack_bolt.adapter.asgi.async_handler](/tools/bolt-python/reference/adapter/asgi/async_handler)
- [slack_bolt.adapter.asgi.base_handler](/tools/bolt-python/reference/adapter/asgi/base_handler)
- [slack_bolt.adapter.asgi.builtin](/tools/bolt-python/reference/adapter/asgi/builtin)
- [slack_bolt.adapter.asgi.http_request](/tools/bolt-python/reference/adapter/asgi/http_request)
- [slack_bolt.adapter.asgi.http_response](/tools/bolt-python/reference/adapter/asgi/http_response)
- [slack_bolt.adapter.asgi.utils](/tools/bolt-python/reference/adapter/asgi/utils)
6 changes: 6 additions & 0 deletions docs/english/reference/adapter/asgi/utils.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
sidebar_label: utils
title: slack_bolt.adapter.asgi.utils
---


Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
sidebar_label: chalice_handler
title: slack_bolt.adapter.aws_lambda.chalice_handler
---


Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
sidebar_label: chalice_lazy_listener_runner
title: slack_bolt.adapter.aws_lambda.chalice_lazy_listener_runner
---


6 changes: 6 additions & 0 deletions docs/english/reference/adapter/aws_lambda/handler.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
sidebar_label: handler
title: slack_bolt.adapter.aws_lambda.handler
---


14 changes: 14 additions & 0 deletions docs/english/reference/adapter/aws_lambda/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
sidebar_label: aws_lambda
title: slack_bolt.adapter.aws_lambda
---

## Submodules

- [slack_bolt.adapter.aws_lambda.chalice_handler](/tools/bolt-python/reference/adapter/aws_lambda/chalice_handler)
- [slack_bolt.adapter.aws_lambda.chalice_lazy_listener_runner](/tools/bolt-python/reference/adapter/aws_lambda/chalice_lazy_listener_runner)
- [slack_bolt.adapter.aws_lambda.handler](/tools/bolt-python/reference/adapter/aws_lambda/handler)
- [slack_bolt.adapter.aws_lambda.internals](/tools/bolt-python/reference/adapter/aws_lambda/internals)
- [slack_bolt.adapter.aws_lambda.lambda_s3_oauth_flow](/tools/bolt-python/reference/adapter/aws_lambda/lambda_s3_oauth_flow)
- [slack_bolt.adapter.aws_lambda.lazy_listener_runner](/tools/bolt-python/reference/adapter/aws_lambda/lazy_listener_runner)
- [slack_bolt.adapter.aws_lambda.local_lambda_client](/tools/bolt-python/reference/adapter/aws_lambda/local_lambda_client)
6 changes: 6 additions & 0 deletions docs/english/reference/adapter/aws_lambda/internals.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
sidebar_label: internals
title: slack_bolt.adapter.aws_lambda.internals
---


Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
sidebar_label: lambda_s3_oauth_flow
title: slack_bolt.adapter.aws_lambda.lambda_s3_oauth_flow
---


Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
sidebar_label: lazy_listener_runner
title: slack_bolt.adapter.aws_lambda.lazy_listener_runner
---


Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
sidebar_label: local_lambda_client
title: slack_bolt.adapter.aws_lambda.local_lambda_client
---

## `LocalLambdaClient`

```python
LocalLambdaClient(app, config)
```

Bases: BaseClient

Lambda client implementing `invoke` for use when running with Chalice CLI.
6 changes: 6 additions & 0 deletions docs/english/reference/adapter/bottle/handler.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
sidebar_label: handler
title: slack_bolt.adapter.bottle.handler
---


8 changes: 8 additions & 0 deletions docs/english/reference/adapter/bottle/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
sidebar_label: bottle
title: slack_bolt.adapter.bottle
---

## Submodules

- [slack_bolt.adapter.bottle.handler](/tools/bolt-python/reference/adapter/bottle/handler)
6 changes: 6 additions & 0 deletions docs/english/reference/adapter/cherrypy/handler.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
sidebar_label: handler
title: slack_bolt.adapter.cherrypy.handler
---


8 changes: 8 additions & 0 deletions docs/english/reference/adapter/cherrypy/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
sidebar_label: cherrypy
title: slack_bolt.adapter.cherrypy
---

## Submodules

- [slack_bolt.adapter.cherrypy.handler](/tools/bolt-python/reference/adapter/cherrypy/handler)
22 changes: 22 additions & 0 deletions docs/english/reference/adapter/django/handler.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
sidebar_label: handler
title: slack_bolt.adapter.django.handler
---

## `DjangoListenerCompletionHandler`

Bases: ListenerCompletionHandler

Django sets DB connections as a thread-local variable per thread.

If the thread is not managed on the Django app side, the connections won't be released by Django.
This handler releases the connections every time a ThreadListenerRunner execution completes.

## `DjangoListenerStartHandler`

Bases: ListenerStartHandler

Django sets DB connections as a thread-local variable per thread.

If the thread is not managed on the Django app side, the connections won't be released by Django.
This handler releases the connections every time a ThreadListenerRunner execution completes.
8 changes: 8 additions & 0 deletions docs/english/reference/adapter/django/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
sidebar_label: django
title: slack_bolt.adapter.django
---

## Submodules

- [slack_bolt.adapter.django.handler](/tools/bolt-python/reference/adapter/django/handler)
Loading