{"service":"AI Dental Appointment Backend","version":"0.1.0","environment":"development","api_prefix":"/api/v1","redis":{"configured":true,"status":"ok","ping":true,"set_get_match":true},"docs":{"swagger_ui":"/docs","openapi_json":"/openapi.json","redoc":"/redoc"},"auth":{"access_token":"JWT bearer token via Authorization header","refresh_token":"Rotating refresh token via /auth/refresh","forgot_password":"SMS OTP via /auth/forgot-password","reset_password":"Verify SMS OTP and update password via /auth/reset-password","header_example":"Authorization: Bearer <access_token>"},"security_defaults":{"twilio_signature_validation_enabled_by_default":true},"flow":["POST /auth/signup or POST /auth/login","POST /auth/forgot-password","POST /auth/reset-password","Use Bearer access token on protected endpoints","GET /clinics/{clinic_id}/reminders/checkup-sms/settings","PATCH /clinics/{clinic_id}/reminders/checkup-sms/settings","GET /clinics/{clinic_id}/aftercare/procedures","PUT /clinics/{clinic_id}/aftercare/procedures","POST /clinics/{clinic_id}/appointments/{appointment_id}/no-show","GET /clinics/{clinic_id}/patients/{patient_id}/appointments","GET /clinics/{clinic_id}/calendar/google/connect-url","GET /calendar/google/callback","GET /clinics/{clinic_id}/calendar/google/calendars","PATCH /clinics/{clinic_id}/calendar/google/default-calendar","GET /clinics/{clinic_id}/calendar/google/account","POST /clinics/{clinic_id}/calendar/google/events","GET /clinics/{clinic_id}/calendar/google/events","GET /clinics/{clinic_id}/calendar/google/events/{event_id}","PATCH /clinics/{clinic_id}/calendar/google/events/{event_id}","DELETE /clinics/{clinic_id}/calendar/google/events/{event_id}","POST /clinics/{clinic_id}/calendar/google/disconnect","POST /telephony/twilio/available-numbers (public read-only lookup)","POST /admin/clinics/{clinic_id}/telephony/provision","PATCH /admin/clinics/{clinic_id}/telephony/voice-webhook (optional fix/update)","POST /admin/clinics/{clinic_id}/telephony/livekit","POST /telephony/twilio/voice/inbound (Twilio webhook)","POST /telephony/twilio/sms/inbound (Twilio webhook)","POST /internal/livekit/bootstrap (internal service auth)","GET /internal/livekit/bootstrap/ref/{bootstrap_ref} (internal service auth)","POST /internal/livekit/clinics/{clinic_id}/appointments/{appointment_id}/transcript (internal service auth)","GET /internal/livekit/clinics/{clinic_id}/appointments/{appointment_id}/transcript (internal service auth)","POST /internal/livekit/outbound/followup-call-events (internal service auth)","POST /internal/livekit/reprovision-bulk (maintenance secret auth)","POST /internal/reminders/checkup-sms/run (internal service auth)","POST /internal/reminders/appointment-sms/run (internal service auth)","POST /internal/reminders/aftercare-sms/run (internal service auth)","POST /internal/reminders/followup-sms/run (internal service auth)","POST /internal/reminders/followup-call/run (internal service auth)"],"endpoints":[{"method":"POST","path":"/api/v1/auth/signup","auth_required":false},{"method":"POST","path":"/api/v1/auth/login","auth_required":false},{"method":"POST","path":"/api/v1/auth/forgot-password","auth_required":false},{"method":"POST","path":"/api/v1/auth/reset-password","auth_required":false},{"method":"POST","path":"/api/v1/auth/refresh","auth_required":false},{"method":"POST","path":"/api/v1/auth/logout","auth_required":false},{"method":"POST","path":"/api/v1/auth/logout-all","auth_required":true},{"method":"GET","path":"/api/v1/clinics/{clinic_id}","auth_required":true},{"method":"GET","path":"/api/v1/clinics/{clinic_id}/reminders/checkup-sms/settings","auth_required":true},{"method":"PATCH","path":"/api/v1/clinics/{clinic_id}/reminders/checkup-sms/settings","auth_required":true},{"method":"GET","path":"/api/v1/clinics/{clinic_id}/aftercare/procedures","auth_required":true},{"method":"PUT","path":"/api/v1/clinics/{clinic_id}/aftercare/procedures","auth_required":true},{"method":"POST","path":"/api/v1/clinics/{clinic_id}/appointments/{appointment_id}/no-show","auth_required":true},{"method":"GET","path":"/api/v1/clinics/{clinic_id}/patients/{patient_id}/appointments","auth_required":true},{"method":"GET","path":"/api/v1/clinics/{clinic_id}/calendar/google/connect-url","auth_required":true},{"method":"GET","path":"/api/v1/calendar/google/callback","auth_required":false},{"method":"GET","path":"/api/v1/clinics/{clinic_id}/calendar/google/account","auth_required":true},{"method":"GET","path":"/api/v1/clinics/{clinic_id}/calendar/google/calendars","auth_required":true},{"method":"PATCH","path":"/api/v1/clinics/{clinic_id}/calendar/google/default-calendar","auth_required":true},{"method":"POST","path":"/api/v1/clinics/{clinic_id}/calendar/google/events","auth_required":true},{"method":"GET","path":"/api/v1/clinics/{clinic_id}/calendar/google/events","auth_required":true},{"method":"GET","path":"/api/v1/clinics/{clinic_id}/calendar/google/events/{event_id}","auth_required":true},{"method":"PATCH","path":"/api/v1/clinics/{clinic_id}/calendar/google/events/{event_id}","auth_required":true},{"method":"DELETE","path":"/api/v1/clinics/{clinic_id}/calendar/google/events/{event_id}","auth_required":true},{"method":"POST","path":"/api/v1/clinics/{clinic_id}/calendar/google/disconnect","auth_required":true},{"method":"POST","path":"/api/v1/admin/clinics/{clinic_id}/telephony/provision","auth_required":true},{"method":"PATCH","path":"/api/v1/admin/clinics/{clinic_id}/telephony/voice-webhook","auth_required":true},{"method":"POST","path":"/api/v1/admin/clinics/{clinic_id}/telephony/livekit","auth_required":true},{"method":"POST","path":"/api/v1/telephony/twilio/available-numbers","auth_required":false},{"method":"POST","path":"/api/v1/telephony/twilio/voice/inbound","auth_required":false},{"method":"POST","path":"/api/v1/telephony/twilio/sms/inbound","auth_required":false},{"method":"POST","path":"/api/v1/internal/livekit/bootstrap","auth_required":"internal"},{"method":"GET","path":"/api/v1/internal/livekit/bootstrap/ref/{bootstrap_ref}","auth_required":"internal"},{"method":"POST","path":"/api/v1/internal/livekit/clinics/{clinic_id}/appointments/{appointment_id}/transcript","auth_required":"internal"},{"method":"GET","path":"/api/v1/internal/livekit/clinics/{clinic_id}/appointments/{appointment_id}/transcript","auth_required":"internal"},{"method":"POST","path":"/api/v1/internal/livekit/outbound/followup-call-events","auth_required":"internal"},{"method":"POST","path":"/api/v1/internal/livekit/reprovision-bulk","auth_required":"maintenance"},{"method":"POST","path":"/api/v1/internal/reminders/checkup-sms/run","auth_required":"internal"},{"method":"POST","path":"/api/v1/internal/reminders/appointment-sms/run","auth_required":"internal"},{"method":"POST","path":"/api/v1/internal/reminders/aftercare-sms/run","auth_required":"internal"},{"method":"POST","path":"/api/v1/internal/reminders/followup-sms/run","auth_required":"internal"},{"method":"POST","path":"/api/v1/internal/reminders/followup-call/run","auth_required":"internal"}]}