QuoteBids API

整理 quote_bidsquote_bidquote_activities 相關 API。

建議閱讀順序

目的文件
quote_bids 已深入調查的流程details/quote_bids/README.md
change_status 各 filterdetails/quote_bids/change_status/README.md
看正式機流量紀錄details/quote_bids/change_status/_meta/access_log.md

高優先流程

Endpoint狀態Detail
/quote_bids/change_status/{filter}/{quote_bid_id}.json部分已存在;依 filter 維護change_status/README.md
/quote_bids/want_to_contact_provider/{quote_bid_id}.json已補 action,PHPUnit + staging success / error 17 已驗證want_to_contact_provider.md
/quote_bids/switch_to_manual_quote/{quote_bid_id}.json已補 action + routing + PHPUnit;staging wallet debt path 已驗證switch_to_manual_quote.md
/quote_bids/want_to_contact_provider_for_call_jwt / /quote_bids/call_fee_jwt已補 action + call fee transaction + PHPUnit;需補 staging callback 實測call_jwt.md
/quote_bids/consumer_want_provider_quote/{quote_bid_id}.json已補 action,PHPUnit + staging 已驗證consumer_want_provider_quote.md
/quote_bids/provider_accept_narrow_match/{quote_bid_id}.json已補 action,PHPUnit 已覆蓋;narrow_status_id 由 param/body 帶入provider_accept_narrow_match.md
/quote_bids/preview_quote_fee/{quote_bid_id}/is_auto_quote:{is_auto_quote}.json已補 action + routing + PHPUnit;staging response / DB side effect 已驗證preview_quote_fee.md
/quote_bids/provider_receive_phone/{quote_bid_id}.json已補 action + routing + PHPUnit;staging response / DB side effect 已驗證provider_receive_phone.md
/quote_bids/edit/{quote_bid_id}.json已補 legacy response / provider_tag parity + PHPUnitedit.md
/quote_bids/add_consumer_survey/quote_bid_id:{quote_bid_id}.json已補 action + routing + PHPUnit;staging response / DB 對表已完成add_consumer_survey.md
/quote_bids/get_consumer_survey/quote_bid_id:{quote_bid_id}.json已在新專案正式環境長期運行;視為過去已處理完成get_consumer_survey.md

Endpoint Inventory

Endpoint方法認證來源說明新專案對應狀態備註
/quote_activities/activities.json待確認全域 API keyapp/Plugin/Quotes/Controller/QuoteActivitiesController.php:360quote activity未找到未找到新專案有 Endpoint/V1/QuoteActivities.php,但沒有 activities()
/quote_bids/index.json待確認使用者 sessionapp/Plugin/Quotes/Controller/QuoteBidsController.php:35quote bid 清單未找到未找到新專案有 Endpoint/V1/QuoteBids.php,但沒有 index()
/quote_bids/provider_request_review/{quote_bid_id}.jsonPOST使用者 sessionapp/Plugin/Quotes/Controller/QuoteBidsController.php:1579pro 要求 reviewQuoteBids::provider_request_review()已補 action + routing + PHPUnit;staging response / DB side effect 已驗證正式機有 961POST 200;會更新 review_requested_at、建立 ProviderInviteReview activity、寫 Request_Review event,調查見 details/quote_bids/provider_request_review.md
/quote_bids/switch_to_manual_quote/{quote_bid_id}.jsonPOST使用者 sessionapp/Plugin/Quotes/Controller/QuoteBidsController.php:1777切換 manual quoteQuoteBids::switch_to_manual_quote()已補 action + PHPUnit;staging wallet debt path 已驗證2026-05-27 正式機 access log 查到 934 筆;legacy / web-app 實際 path 帶 quote_bid_id,新版另保留 body quote_bid_id fallback。staging 已驗證 wallet 不足、有卡、debt 未達刷卡門檻 path;多卡 fallback 仍需補測。調查見 details/quote_bids/switch_to_manual_quote.md
/quote_bids/want_to_contact_provider/{quote_bid_id}.jsonPOST使用者 sessionapp/Plugin/Quotes/Controller/QuoteBidsController.php:1830想聯絡 proQuoteBids::want_to_contact_provider()已補 action,PHPUnit + staging 已驗證正式機有流量;核心 domain method 使用 QuoteBid::processWantToContactProvider(),success 與 error=17 insignificant 已完成 staging DB 對表;調查見 details/quote_bids/want_to_contact_provider.md
/quote_bids/want_to_contact_provider_for_call_jwtPOSTJWT API keyapp/Plugin/Quotes/Controller/QuoteBidsController.php:2032電話聯絡成功後進聯絡 provider 主線QuoteBids::want_to_contact_provider_for_call_jwt()已補 action + PHPUnit guard;待 staging callback 實測call_fee_jwt 成組處理;Twilio / Infobip callback 使用 JWT 呼叫,調查見 details/quote_bids/call_jwt.md
/quote_bids/call_fee_jwtPOSTJWT API keyapp/Plugin/Quotes/Controller/QuoteBidsController.php:2144電話接通服務費QuoteBids::call_fee_jwt()已補 action + transactions.class = Call + PHPUnittransactions.class = Call,不可和一般 QuoteBid fee 混判;調查見 details/quote_bids/call_jwt.md
/quote_bids/consumer_want_to_see_more_quote/{quote_request_id}/page:{page}/limit:{limit}.jsonGET使用者 sessionapp/Plugin/Quotes/Controller/QuoteBidsController.php:2230consumer 想看更多 narrow match quoteQuoteBids::consumer_want_to_see_more_quote()已補 action + routing + PHPUnit;staging response 對表已完成正式機有 1688GET 200;只讀取可邀請 narrow match 清單,不寫 DB / queue / transaction,調查見 details/quote_bids/consumer_want_to_see_more_quote.md
/quote_bids/consumer_want_provider_quote/{quote_bid_id}.jsonPOST使用者 sessionapp/Plugin/Quotes/Controller/QuoteBidsController.php:2258consumer 指定 pro quoteQuoteBids::consumer_want_provider_quote()已補 action,PHPUnit + staging 已驗證正式機有流量;成功、request closed / hired guard、duplicate invitation guard 已完成 staging DB 對表;調查見 details/quote_bids/consumer_want_provider_quote.md
/quote_bids/provider_accept_narrow_match/{quote_bid_id}.jsonPOST使用者 session + API keyapp/Plugin/Quotes/Controller/QuoteBidsController.php:2314pro 接受 / 拒絕 narrow matchQuoteBids::provider_accept_narrow_match()已補 action,PHPUnit 已覆蓋narrow_status_id 由 param/body 帶入;accept / reject / guard / consumer notification event 已有 PHPUnit;調查見 details/quote_bids/provider_accept_narrow_match.md
/quote_bids/rating.json待確認使用者 sessionapp/Plugin/Quotes/Controller/QuoteBidsController.php:2377評分未找到未找到新專案有 Endpoint/V1/QuoteBids.php,但沒有 rating()
/quote_bids/change_status/{filter}/{quote_bid_id}.json待確認使用者 sessionapp/Plugin/Quotes/Controller/QuoteBidsController.php:2410改 quote bid 狀態拆分到多個 QuoteBids::change_status_*()部分已存在新專案用 Mapping.php 將 read / interest / archive / unarchive / reviews / hired / reject / undo_reject / rating 拆到不同 action;rating 已補手動報價、wallet/card/prime、contact charge、Receive_Quote 通知與主要 side effect,規則見 details/quote_bids/change_status/README.md
/quote_bids/recent_quotes.json待確認使用者 sessionapp/Plugin/Quotes/Controller/QuoteBidsController.php:5205recent quotes未找到未找到新專案有 Endpoint/V1/QuoteBids.php,但沒有 recent_quotes()
/quote_bids/save_review.json待確認全域 API keyapp/Plugin/Quotes/Controller/QuoteBidsController.php:5231儲存 review未找到未找到新專案有 Endpoint/V1/QuoteBids.php,但沒有 save_review()
/quote_bids/process_after_hired.json待確認全域 API keyapp/Plugin/Quotes/Controller/QuoteBidsController.php:5505hired 後續流程未找到未找到新專案有 Endpoint/V1/QuoteBids.php,但沒有 process_after_hired()
/quote_bids/add_consumer_survey/quote_bid_id:{quote_bid_id}.jsonPOST使用者 sessionapp/Plugin/Quotes/Controller/QuoteBidsController.php:6097新增 / 覆蓋 consumer surveyQuoteBids::add_consumer_survey()已補 action + routing + PHPUnit;staging response / DB 對表已完成正式機有 598POST 200;只 upsert quote_consumer_surveys,不寫 bid / activity / queue / transaction,調查見 details/quote_bids/add_consumer_survey.md
/quote_bids/provider_receive_phone/{quote_bid_id}.jsonPOST使用者 sessionapp/Plugin/Quotes/Controller/QuoteBidsController.php:6229pro receive phoneQuoteBids::provider_receive_phone()已補 action + PHPUnit;staging response / DB side effect 已驗證2026-05-28 正式機 access log 查到 6246 筆,全部 status 200;web-app 與正式流量都使用 path id。staging 已驗證 success response、is_provider_received_phoneProReceivePhone activity。調查見 details/quote_bids/provider_receive_phone.md
/quote_bids/preview_quote_fee/{quote_bid_id}/is_auto_quote:{is_auto_quote}.jsonGET使用者 sessionapp/Plugin/Quotes/Controller/QuoteBidsController.php:6299quote fee 預覽QuoteBids::preview_quote_fee()已補 action + routing + PHPUnit;staging response / DB side effect 已驗證正式機 gzip access log 有 41144 筆;樣本包含 iOS app、Android okhttp、Web,調查見 details/quote_bids/preview_quote_fee.md
/quote_activities/quote_bid.json待確認使用者 sessionapp/Plugin/Quotes/Controller/QuoteActivitiesController.php:32quote activityQuoteActivities::quote_bid()同路徑已存在新專案 Endpoint/V1/QuoteActivities.php 有同名 action。
/quote_activities/inbox.json待確認使用者 sessionapp/Plugin/Quotes/Controller/QuoteActivitiesController.php:1800inboxQuoteActivities::inbox()同路徑已存在新專案 Endpoint/V1/QuoteActivities.php 有同名 action。
/quote_bids/work_requirement.json待確認使用者 sessionapp/Plugin/Quotes/Controller/QuoteBidsController.php:1029工作需求QuoteBids::work_requirement()同路徑已存在新專案 Endpoint/V1/QuoteBids.php 有同名 action。
/quote_bids/view.json待確認使用者 session + API keyapp/Plugin/Quotes/Controller/QuoteBidsController.php:4358quote bid detailQuoteBids::view()同路徑已存在新專案 Endpoint/V1/QuoteBids.php 有同名 action;另有 /quote_bid/{id}.json mapping。
/quote_bids/quote_feedbacks.json待確認全域 API keyapp/Plugin/Quotes/Controller/QuoteBidsController.php:4650quote feedbackQuoteBids::quote_feedbacks()同路徑已存在新專案 Endpoint/V1/QuoteBids.php 有同名 action。
/quote_bids/edit/{quote_bid_id}.jsonPOST使用者 sessionapp/Plugin/Quotes/Controller/QuoteBidsController.php:5083編輯 quote bid provider tagQuoteBids::edit()已補 legacy response / provider_tag parity + PHPUnit2026-05-28 正式機 access log 查到 POST 200 合計 16569 筆;web-app 只送 provider_tag=favorite 或空字串,且依賴 response message=Success。調查見 details/quote_bids/edit.md
/quote_bids/auto_quote_charge_list.json待確認使用者 sessionapp/Plugin/Quotes/Controller/QuoteBidsController.php:5973auto quote charge 清單QuoteBids::auto_quote_charge_list()同路徑已存在新專案 Endpoint/V1/QuoteBids.php 有同名 action。
/quote_bids/get_consumer_survey/quote_bid_id:{quote_bid_id}.jsonGET使用者 sessionapp/Plugin/Quotes/Controller/QuoteBidsController.php:6030consumer surveyQuoteBids::get_consumer_survey()已在新專案正式環境長期運行;視為完成2026-06-03 查 legacy 正式機 access log 無命中,判斷流量已不在 legacy 專案。後續以現行 new production 行為為準;若與 legacy 有差異,不直接列為 migration 待修正項。調查見 details/quote_bids/get_consumer_survey.md
/quote_bids/unread_count.json待確認使用者 sessionapp/Plugin/Quotes/Controller/QuoteBidsController.php:6142未讀數QuoteBids::unread_count()同路徑已存在新專案 Endpoint/V1/QuoteBids.php 有同名 action。