{"message":"Welcome to Bhupendra Chat API","version":"4.0.0","note":"All features now support Socket.IO for real-time communication","restEndpoints":{"health":"GET /health","auth":{"register":"POST /api/auth/register","login":"POST /api/auth/login","google":"POST /api/auth/google","me":"GET /api/auth/me","refreshToken":"POST /api/auth/refresh-token","users":"GET /api/auth/users (admin only)"},"chat":{"send":"POST /api/chat/send","messages":"GET /api/chat/messages/:userId","users":"GET /api/chat/users","conversations":"GET /api/chat/conversations","unreadCount":"GET /api/chat/unread-count/:roomId","markAsRead":"POST /api/chat/mark-as-read"},"call":{"initiate":"POST /api/call/initiate","accept":"POST /api/call/accept/:callId","reject":"POST /api/call/reject/:callId","end":"POST /api/call/end/:callId","history":"GET /api/call/history"}},"socketEvents":{"connection":{"authenticate":"emit: authenticate(token) -> authenticated/error"},"kundli":{"save":"emit: save_kundli({fullName, dateOfBirth, timeOfBirth, placeOfBirth, gender}) -> save_kundli_response","edit":"emit: edit_kundli({fullName?, dateOfBirth?, timeOfBirth?, placeOfBirth?, gender?}) -> edit_kundli_response (partial update)","get":"emit: get_my_kundli() -> get_my_kundli_response"},"aiChat":{"status":"emit: ai_chat_status() -> ai_chat_status_response","history":"emit: ai_chat_history() -> ai_chat_history_response","askFree":"emit: ai_ask_free({question}) -> ai_ask_free_response","createPayment":"emit: ai_create_payment() -> ai_create_payment_response","askPaid":"emit: ai_ask_paid({question, razorpayOrderId, razorpayPaymentId, razorpaySignature}) -> ai_ask_paid_response"},"payments":{"poojaCreate":"emit: create_pooja_payment({amount, poojaTitle}) -> create_pooja_payment_response","poojaVerify":"emit: verify_pooja_payment({razorpayOrderId, razorpayPaymentId, razorpaySignature}) -> verify_pooja_payment_response","shopCreate":"emit: create_shop_payment({amount, productName, quantity}) -> create_shop_payment_response","shopVerify":"emit: verify_shop_payment({razorpayOrderId, razorpayPaymentId, razorpaySignature}) -> verify_shop_payment_response","myPayments":"emit: get_my_payments({type?, page?, limit?}) -> get_my_payments_response"},"astrologerChat":{"sendMessage":"emit: send_message({receiverId, content}) -> message_sent/new_message","freeze":"emit: freeze_chat({admin, user, isFrozen, freezeAmount}) -> freeze_state_change (admin only)","unfreeze":"emit: unfreeze_after_payment({admin, user}) -> freeze_state_change"},"admin":{"allPayments":"emit: admin_get_all_payments({userId?, type?, page?}) -> admin_get_all_payments_response","userPayments":"emit: admin_get_user_payments({userId}) -> admin_get_user_payments_response","userAiChat":"emit: admin_get_user_ai_chat({userId}) -> admin_get_user_ai_chat_response","allAiChats":"emit: admin_get_all_ai_chats({page?, limit?}) -> admin_get_all_ai_chats_response"}},"wallet":{"balance":"GET /api/wallet/balance","rechargeCreate":"POST /api/wallet/recharge/create-order { amount }","rechargeVerify":"POST /api/wallet/recharge/verify { razorpayOrderId, razorpayPaymentId, razorpaySignature }","transactions":"GET /api/wallet/transactions?type=&page=&limit="},"astrologers":{"list":"GET /api/astrologers","single":"GET /api/astrologers/:key","adminToggleOnline":"PATCH /api/astrologers/admin/:key/online { isOnline }","adminUpdateRate":"PATCH /api/astrologers/admin/:key/rate { ratePerMinute }"},"astrologerChat":{"active":"GET /api/astrologer-chat/active","history":"GET /api/astrologer-chat/history","sessionMessages":"GET /api/astrologer-chat/:sessionId/messages","startSession":"POST /api/astrologer-chat/sessions/start { astrologerKey }","cancelSession":"POST /api/astrologer-chat/sessions/:id/cancel","adminTabs":"GET /api/astrologer-chat/admin/tabs","adminAccept":"POST /api/astrologer-chat/admin/sessions/:id/accept","adminReject":"POST /api/astrologer-chat/admin/sessions/:id/reject","adminEnd":"POST /api/astrologer-chat/admin/sessions/:id/end"},"newSocketEvents":{"wallet":{"balance":"emit: wallet_balance() -> wallet_balance_response","rechargeCreate":"emit: wallet_recharge_create({ amount }) -> wallet_recharge_create_response","rechargeVerify":"emit: wallet_recharge_verify({ razorpayOrderId, razorpayPaymentId, razorpaySignature }) -> wallet_recharge_verify_response","transactions":"emit: wallet_transactions({ type?, page?, limit? }) -> wallet_transactions_response","updates":"server pushes: wallet_updated({ balance, lastTransaction })"},"astrologerChat":{"request":"emit: astro_request_chat({ astrologerKey }) -> astro_request_chat_response + astro_chat_ringing (admin)","accept":"emit: astro_accept_chat({ sessionId }) (admin only) -> astro_chat_accepted","reject":"emit: astro_reject_chat({ sessionId }) (admin only)","join":"emit: astro_join_chat({ sessionId }) (both sides) -> astro_chat_started when both joined","send":"emit: astro_send_message({ sessionId, content }) -> astro_new_message","end":"emit: astro_end_chat({ sessionId }) -> astro_chat_ended","serverPushes":["astro_chat_ringing","astro_chat_ringing_placed","astro_chat_accepted","astro_join_state","astro_chat_started","astro_billing_tick","astro_low_balance_warning","astro_chat_ended"]},"aiChatWallet":{"ask":"emit: ai_ask_paid_wallet({ question }) -> ai_ask_paid_wallet_response (debits ₹21 from wallet, refunds on failure)"}},"pricing":{"aiChat":"₹21 per question (first question free) — payable via Razorpay or wallet","astrologerChat":{"bhupendra":"₹50/min","others":"₹15/min (Samta, Rashmi, Smirita, Rekha)","minBalanceToStart":"5 minutes worth (₹250 for Bhupendra, ₹75 for others)","billing":"Astrotalk-style: per-minute deduction, 30s grace period when wallet runs low","walletRecharge":"via Razorpay"},"legacy":{"astrologerFreezeUnfreeze":"Old freeze/unfreeze flow remains intact for backward compatibility"}}}