mirror of
https://github.com/ReCloudStudio/WebHooker.git
synced 2026-09-22 16:11:29 +00:00
docs: sync documentation with current codebase
- Update event formatter count 23 -> 28 (add ping, workflow_job, status, deployment, check_suite) - Document Telegram support end-to-end (routes, /gh commands, richheader, secrets) - Fix route schema to use targets array and group fields (owners, emoji) - Correct KV/D1 storage layout (msg:*, i18n:*, D1 links/send_logs) - Note GITHUB_APP_ID/GITHUB_PRIVATE_KEY are unused; drop legacy DISCORD_CHANNEL_ID/PORT/CONFIG_PATH - Remove stale Docker deployment section - Update color table, branch filter compatibility, admin API endpoints - AGENTS.md: add Documentation section requiring doc updates after functional changes
This commit is contained in:
parent
68cda9f178
commit
afe19795b1
25 changed files with 621 additions and 398 deletions
|
|
@ -47,6 +47,7 @@ GitHub redirects here after authorization. Exchanges the code for an access toke
|
|||
- **Browser flow** (`Accept: text/html`): sets an admin session cookie, then redirects to the `redirect` target. Users without admin access are redirected to `/admin?error=forbidden`.
|
||||
- **JSON flow**: returns `{ "userId": "...", "login": "...", "redirectTo": "..." }`.
|
||||
- **Discord link flow** (started with a pending `discordUserId`): links the Discord user to this GitHub account, returning `{ "ok": true, "discordUserId": "...", "login": "..." }` — or a success page in the browser.
|
||||
- **Telegram link flow** (started with a pending `telegramUserId`): links the Telegram user to this GitHub account, returns `{ "ok": true, "telegramUserId": "...", "login": "..." }`, and sends a confirmation message to the pending `telegramChatId`.
|
||||
|
||||
### Revoke Token
|
||||
|
||||
|
|
@ -77,7 +78,7 @@ Tokens are stored in KV with key pattern `token:{userId}`:
|
|||
}
|
||||
```
|
||||
|
||||
`expiresAt` is a Unix timestamp in milliseconds. KV entries expire at 90% of the token's lifetime (minimum 60 seconds). A reverse index `token-reverse:{sha256 of token}` maps the access token back to its user id so Bearer-authenticated endpoints can resolve the caller. Discord users linked to a GitHub account are stored in the D1 `discord_links` table.
|
||||
`expiresAt` is a Unix timestamp in milliseconds. KV entries expire at 90% of the token's lifetime (minimum 60 seconds). A reverse index `token-reverse:{sha256 of token}` maps the access token back to its user id so Bearer-authenticated endpoints can resolve the caller. Discord users linked to a GitHub account are stored in the D1 `discord_links` table; Telegram users in the D1 `telegram_links` table.
|
||||
|
||||
## Using Tokens
|
||||
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ https://your-worker.workers.dev
|
|||
| `PUT` | `/admin/api/groups/:id/routes` | Admin session | Replace a group's routes |
|
||||
| `GET` | `/admin/api/me` | Admin session | Current session info |
|
||||
| `GET` | `/admin/api/logs` | Admin session | Send logs (scoped) |
|
||||
| `GET` | `/admin/api/logs/:id` | Admin session | Single send-log entry (scoped) |
|
||||
|
||||
## Admin Console
|
||||
|
||||
|
|
@ -40,7 +41,7 @@ See [Configuration → Web UI](../guide/configuration.md#web-ui) for setup. Admi
|
|||
|
||||
- `GET /admin` — Serves the config console HTML
|
||||
- `GET /admin/api/routes` — Returns `{ "routes": Route[] }`
|
||||
- `PUT /admin/api/routes` — Body `{ "routes": Route[] }`; validates each route (id pattern, unique id, name, enabled, `groupId`, filters — empty only allowed for `fallback` routes — and platform-aware target: `target.channelId` for Discord, `target.chatId` for Telegram) and persists to KV `config:routes`. Returns `200 { ok, count }` or `400 { error }` / `401 { error }`.
|
||||
- `PUT /admin/api/routes` — Body `{ "routes": Route[] }`; validates each route (id pattern, unique id, name, enabled, `groupId`, filters — empty only allowed for `fallback` routes — and platform-aware targets: `target.channelId` for Discord, `target.chatId` for Telegram) and persists to KV `config:routes`. Returns `200 { ok, count }` or `400 { error }` / `401 { error }` / `403 { error }`.
|
||||
|
||||
## Health Check
|
||||
|
||||
|
|
@ -66,11 +67,11 @@ Accepts GitHub webhook payloads. Requires valid `X-Hub-Signature-256` header.
|
|||
|
||||
**Headers:**
|
||||
|
||||
| Header | Required | Description |
|
||||
| --------------------- | -------- | --------------------- |
|
||||
| `X-Hub-Signature-256` | Yes | HMAC-SHA256 signature |
|
||||
| `X-GitHub-Event` | Yes | Event type name |
|
||||
| `X-GitHub-Delivery` | Yes | Unique delivery ID |
|
||||
| Header | Required | Description |
|
||||
| --------------------- | -------- | ------------------------------------------------ |
|
||||
| `X-Hub-Signature-256` | Yes | HMAC-SHA256 signature |
|
||||
| `X-GitHub-Event` | Yes | Event type name |
|
||||
| `X-GitHub-Delivery` | No | Unique delivery ID (used for dedup when present) |
|
||||
|
||||
**Request Body:** GitHub webhook JSON payload (max 1MB).
|
||||
|
||||
|
|
@ -82,6 +83,8 @@ Accepts GitHub webhook payloads. Requires valid `X-Hub-Signature-256` header.
|
|||
}
|
||||
```
|
||||
|
||||
When `X-GitHub-Delivery` is present and the same delivery was already processed within the last 5 minutes, the worker responds `200 { "ok": true, "duplicate": true }` without re-dispatching.
|
||||
|
||||
**Error Responses:**
|
||||
|
||||
| Status | Body | Cause |
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue