{"message":"RadarCX AI Backend","status":"healthy","version":"1.0.0","firebase_enabled":true,"endpoints":{"/docs":"Interactive API documentation (Swagger UI)","/redoc":"Alternative API documentation (ReDoc)","/openapi.json":"OpenAPI specification (JSON)","/api/v1/auth":"Get Google OAuth URL (GET)","/api/v1/auth/callback":"Google OAuth callback (GET)","/api/v1/auth/password-reset":"Request Firebase password reset email (POST)","/api/v1/auth/logout":"Revoke Google Calendar access (POST)","/api/v1/health/connection":"Register or refresh a native health connection (POST, GET)","/api/v1/health/batch":"Upload daily summaries, hourly, and minute samples in one payload (POST)","/api/v1/health/raw-captures":"Store one diagnostics-only raw native health capture (POST)","/api/v1/health/minute-samples":"Read minute-resolution samples for a user/source/range (GET)","/api/v1/health/timeseries":"Scope-driven health time-series for the dashboard charts (GET)","/api/v1/health/charts":"Fetch native health chart series for the Overview Health page (GET)","/api/v1/health/disconnect":"Disconnect a native health connection (POST)","/api/v1/user/profile":"Get user profile and auth status (GET)","/api/v1/user/trial/start":"Start a self-serve trial (POST)","/api/v1/user/onboarding/complete":"Complete step 2 of onboarding (POST)","/api/v1/user/app-walkthrough":"Update product walkthrough progress (PATCH)","/api/v1/user/set-assistant-email":"Set AI assistant email (one-time only) (POST)","/api/v1/user":"Get current user information (GET, DELETE, PATCH)","/api/v1/user/api-key":"Get API key metadata (GET, POST, DELETE)","/api/v1/user/api-key/revoke":"Revoke API key (DELETE)","/api/v1/user/memory":"Get user memory (GET, PUT)","/api/v1/calendar/auth/google/callback":"Calendar Google Callback (GET)","/api/v1/calendar/auth/outlook/callback":"Calendar Outlook Callback (GET)","/api/v1/calendar/webhooks/google":"Google Webhook (POST)","/api/v1/calendar/webhooks/outlook":"Outlook Webhook (POST)","/api/v1/calendar/auth/google":"Get Google Calendar OAuth URL (GET)","/api/v1/calendar/auth/outlook":"Get Outlook Calendar OAuth URL (GET)","/api/v1/calendar/connections/{provider}":"Disconnect a calendar provider (DELETE)","/api/v1/calendar/connections":"List connected calendar providers (GET)","/api/v1/admin/calendar/sync-status":"List per-user external calendar sync health (GET)","/api/v1/calendar/calendars":"List a provider's calendars available to sync (GET)","/api/v1/calendar/calendars/selection":"Save which calendars to sync for a provider (POST, GET)","/api/v1/calendar/events/google":"Publish a RadarCX task to Google Calendar (POST)","/api/v1/assistant/memories":"List active assistant memory previews (GET, DELETE)","/api/v1/assistant/memories/search":"Search active assistant memories without URL logging (POST)","/api/v1/assistant/memories/{memory_id}":"Read one active assistant memory (GET, PATCH, DELETE)","/api/v1/assistant/llm-preference":"Read the current user's assistant LLM provider preference (GET, PUT)","/api/v1/assistant/approvals/{proposal_id}":"Read authoritative approval state (GET)","/api/v1/assistant/approvals/{proposal_id}/decision":"Decide one exact tool-call approval (POST)","/api/v1/assistant/runs/{run_id}/cancel":"Request cancellation and read authoritative run state (POST)","/api/v1/assistant/tool-permissions":"List effective assistant tool permissions (GET)","/api/v1/assistant/tool-permissions/{tool_name}/{channel}":"Set one assistant tool permission override (PUT, DELETE)","/api/v1/chat":"Chat Stream (POST)","/api/v1/chat/conversations":"Get all conversations (GET, POST)","/api/v1/chat/conversations/{conversation_id}":"Get conversation by ID (GET, PATCH, DELETE)","/api/v1/chat/conversations/{conversation_id}/messages":"Add a message to a conversation (POST)","/api/v1/chat/conversations/{conversation_id}/messages/{message_id}":"Update a message (PATCH, DELETE)","/api/v1/billing/history":"Get billing history (GET)","/api/v1/billing/upcoming":"Get upcoming invoice (GET)","/api/v1/subscriptions/plans":"Get subscription plans (GET)","/api/v1/subscriptions/current":"Get current subscription (GET)","/api/v1/dashboards":"Get user dashboards (GET, POST)","/api/v1/dashboards/{dashboard_id}":"Delete a dashboard (DELETE, PATCH)","/api/v1/contacts":"Get contacts (GET, POST)","/api/v1/contacts/{contact_id}":"Get one contact (GET, PATCH, DELETE)","/communications/api/v1/mail/inbound":"Receive Mailgun webhook (POST)","/communications/api/v1/mail/storage-info":"Get mail storage information (GET)","/communications/api/v1/mail/health":"Health check for mail service (GET)","/communications/api/v1/mail/inbox":"Get paginated inbox listing (GET)","/communications/api/v1/mail/message/{message_id}":"Get single message details (GET)","/communications/api/v1/mail/mark-read":"Mark messages as read/unread (PATCH)","/communications/api/v1/mail/star":"Star/unstar messages (PATCH)","/communications/api/v1/mail/send":"Send emails (POST)","/communications/api/v1/mail/delete":"Delete messages (DELETE)","/communications/api/v1/mail/thread/{thread_id}":"Get thread conversation (GET)","/communications/api/v1/mail/search":"Advanced search (POST)","/communications/api/v1/mail/sent":"Get sent mailbox listing (GET)","/communications/api/v1/mail/{email_id}":"Get email details (GET, DELETE)","/api/v1/tasks":"Create a new task (POST, GET)","/api/v1/tasks/{task_id}":"Update a task (PUT, PATCH, DELETE)","/api/v1/tasks/{task_id}/calendar-sync/retry":"Retry a failed external-calendar delivery (POST)","/api/v1/tasks/filtered":"Get filtered tasks (GET)","/api/v1/reminders":"Create a new reminder (POST, GET)","/api/v1/reminders/{reminder_id}":"Get one reminder (GET, PATCH, DELETE)","/api/v1/reminders/{reminder_id}/deactivate":"Deactivate a reminder (POST)","/api/v1/reminders/{reminder_id}/activate":"Activate a reminder (POST)","/api/v1/notifications":"Get notifications (GET)","/api/v1/notifications/unread-count":"Get unread notification count (GET)","/api/v1/notifications/{notification_id}/read":"Mark notification as read (POST)","/api/v1/notifications/{notification_id}/dismiss":"Dismiss a notification (POST)","/api/v1/notifications/{notification_id}/complete":"Complete a notification (POST)","/api/v1/device-tokens":"Register (upsert) a device push token (POST)","/api/v1/device-tokens/{token}":"Remove a device push token (DELETE)","/knowledge/api/v1/priorities/":"Get all priority labels (GET)","/knowledge/api/v1/priorities/{priority_id}":"Get priority by ID (GET)","/knowledge/api/v1/tags/":"Get user's tags (GET, POST)","/knowledge/api/v1/tags/{tag_id}":"Get tag by ID (GET, PUT, DELETE)","/knowledge/api/v1/tags/{tag_id}/archive":"Archive or unarchive a tag (POST)","/api/v1/payment/checkout-sessions":"Checkout Plan (POST)","/api/v1/payment/create-checkout-session":"Create Checkout Session (POST)","/api/v1/payment/create-subscription":"Create Subscription Checkout (POST)","/api/v1/payment/session/{session_id}":"Get Payment Session (GET)","/api/v1/payment/webhook":"Stripe Webhook (POST)","/api/v1/payment/config":"Get Stripe Config (GET)","/":"Root (GET)","/cors-debug":"Cors Debug (GET)","/health":"Health Check (GET)","/model-info":"Get Model Info (GET)"}}