- lib/services/personal-channels.ts: isValidTeamsWebhookUrl, isValidNtfyTopic, mintNtfyTopic, sendChannelTest, TEST_MESSAGE_BODY, isPersonalChannelType, PERSONAL_CHANNEL_TYPES - GET /api/me/channels: returns user's personal channels (owner_user_id scoped) - PUT /api/me/channels/[type]: WITH-CTE UPSERT + best-effort test send - DELETE /api/me/channels/[type]: removes user's channel, 404 if missing - POST /api/me/channels/[type]/test: re-sends test to existing channel - SSRF mitigation via Teams URL hostname allowlist (T-09-02-06) - Race window closed by partial unique index from Plan 01 (T-09-02-10) |
||
|---|---|---|
| .. | ||
| hooks | ||
| services | ||
| types | ||
| utils | ||
| auth-client.ts | ||
| auth-utils.ts | ||
| auth.ts | ||
| bootstrap.ts | ||
| permissions.ts | ||
| status-registry.ts | ||
| utils.ts | ||