diff --git a/packages/gateway/gateway/main.py b/packages/gateway/gateway/main.py index 22eb3da..3e81a7e 100644 --- a/packages/gateway/gateway/main.py +++ b/packages/gateway/gateway/main.py @@ -3,14 +3,21 @@ Channel Gateway — FastAPI application. Mounts the slack-bolt AsyncApp as a sub-application at /slack/events. Registers the WhatsApp webhook router at /whatsapp/webhook. +Serves all Phase 3 portal API routes under /api/portal/* and /api/webhooks/*. Port: 8001 Endpoints: - POST /slack/events — Slack Events API webhook (handled by slack-bolt) - GET /whatsapp/webhook — WhatsApp hub challenge verification - POST /whatsapp/webhook — WhatsApp inbound message webhook - GET /health — Health check + POST /slack/events — Slack Events API webhook (handled by slack-bolt) + GET /whatsapp/webhook — WhatsApp hub challenge verification + POST /whatsapp/webhook — WhatsApp inbound message webhook + GET /api/portal/* — Portal management API (tenants, agents, billing, etc.) + GET /api/portal/billing/* — Stripe billing endpoints + GET /api/portal/channels/* — Channel connection endpoints (Slack OAuth, WhatsApp) + GET /api/portal/tenants/{id}/llm-keys — BYO LLM key management + GET /api/portal/usage/* — Usage and cost analytics + POST /api/webhooks/* — Stripe webhook receiver + GET /health — Health check Startup sequence: 1. Create Redis connection @@ -18,7 +25,8 @@ Startup sequence: 3. Register Slack event handlers 4. Mount slack-bolt request handler at /slack/events 5. Include WhatsApp router - 6. Expose /health + 6. Include Phase 3 portal API routers + 7. Expose /health """ from __future__ import annotations @@ -32,6 +40,14 @@ from slack_bolt.async_app import AsyncApp from gateway.channels.slack import register_slack_handlers from gateway.channels.whatsapp import whatsapp_router +from shared.api import ( + billing_router, + channels_router, + llm_keys_router, + portal_router, + usage_router, + webhook_router, +) from shared.config import settings from shared.db import async_session_factory @@ -88,6 +104,16 @@ slack_handler = AsyncSlackRequestHandler(slack_app) # --------------------------------------------------------------------------- app.include_router(whatsapp_router) +# --------------------------------------------------------------------------- +# Register Phase 3 portal API routers +# --------------------------------------------------------------------------- +app.include_router(portal_router) +app.include_router(billing_router) +app.include_router(channels_router) +app.include_router(llm_keys_router) +app.include_router(usage_router) +app.include_router(webhook_router) + # --------------------------------------------------------------------------- # Routes