{"message":"Quinors Server","status":"running","port":"1359","mongodb":{"status":"connected","database":"quinors_main","host":"localhost"},"websocket":"enabled","endpoints":{"auth":{"register":"POST /api/auth/register","login":"POST /api/auth/login","logout":"POST /api/auth/logout","verify":"GET /api/auth/verify","me":"GET /api/auth/me"},"orders":{"list":"GET /api/orders","today":"GET /api/orders/today","detail":"GET /api/orders/:serialNumber","stats":"GET /api/orders/stats/summary","sync":"POST /api/orders/sync"},"orderRegist":{"register":"POST /api/order_regist","history":"GET /api/order_regist/history","detail":"GET /api/order_regist/:id","test":"GET /api/order_regist/test"},"zeiss":{"auth":"POST /api/zeiss/auth/login","notices":"GET /api/zeiss/notices","inquiries":"GET /api/zeiss/inquiries","orderlist":{"fetch":"GET /api/zeiss/orderlist/fetch","sync":"POST /api/zeiss/orderlist/sync","list":"GET /api/zeiss/orderlist"},"contacts":{"list":"GET /api/zeiss/contacts","add":"POST /api/zeiss/contacts","update":"PUT /api/zeiss/contacts/:id","delete":"DELETE /api/zeiss/contacts/:id"},"frequentLocations":{"list":"GET /api/zeiss/frequent-locations","detail":"GET /api/zeiss/frequent-locations/:id","add":"POST /api/zeiss/frequent-locations","update":"PUT /api/zeiss/frequent-locations/:id","delete":"DELETE /api/zeiss/frequent-locations/:id"},"orderDetail":"GET /api/zeiss/order-detail/:serial","costRequest":{"submit":"POST /api/zeiss/cost-request","count":"GET /api/zeiss/cost-request/count/:serial_number","history":"GET /api/zeiss/cost-request/history/:serial_number","all":"GET /api/zeiss/cost-request/all"}},"bolttech":{"auth":{"login":"POST /api/bolttech/auth/login","me":"GET /api/bolttech/auth/me","users":"GET /api/bolttech/auth/users","createUser":"POST /api/bolttech/auth/create-user","deleteUser":"DELETE /api/bolttech/auth/users/:userId","updateUser":"PATCH /api/bolttech/auth/users/:userId","updateUserRole":"PATCH /api/bolttech/auth/users/:userId/role","createSuperAdmin":"POST /api/bolttech/auth/create-super-admin"},"notices":{"list":"GET /api/bolttech/notices","detail":"GET /api/bolttech/notices/:id","create":"POST /api/bolttech/notices","update":"PUT /api/bolttech/notices/:id","delete":"DELETE /api/bolttech/notices/:id"},"orderlist":{"fetch":"GET /api/bolttech/orderlist/fetch","sync":"POST /api/bolttech/orderlist/sync","detail":"GET /api/bolttech/orderlist/detail/:serialNumber","list":"GET /api/bolttech/orderlist"},"orderDetail":"GET /api/bolttech/order-detail/:serial","analytics":{"stats":"GET /api/bolttech/analytics/stats","daily":"GET /api/bolttech/analytics/daily?days=7","weekly":"GET /api/bolttech/analytics/weekly?weeks=4","statusDistribution":"GET /api/bolttech/analytics/status-distribution","byWeekday":"GET /api/bolttech/analytics/by-weekday","costStats":"GET /api/bolttech/analytics/cost-stats","byHour":"GET /api/bolttech/analytics/by-hour","byRegion":"GET /api/bolttech/analytics/by-region","recentOrders":"GET /api/bolttech/analytics/recent-orders?page=1&limit=20"},"push":{"vapidKey":"GET /api/bolttech/push/vapid-public-key","subscribe":"POST /api/bolttech/push/subscribe","unsubscribe":"POST /api/bolttech/push/unsubscribe"},"scheduler":{"deliveryStatus":"GET /api/bolttech/rider/admin/scheduler/delivery-status","runDeliveryStatus":"POST /api/bolttech/rider/admin/scheduler/delivery-status/run"}},"louis":{"auth":{"register":"POST /api/louis/auth/register","login":"POST /api/louis/auth/login","logout":"POST /api/louis/auth/logout","verify":"GET /api/louis/auth/verify","me":"GET /api/louis/auth/me","pending":"GET /api/louis/auth/pending","approve":"POST /api/louis/auth/approve/:userId","reject":"POST /api/louis/auth/reject/:userId","users":"GET /api/louis/auth/users","updateRole":"PUT /api/louis/auth/users/:userId/role","createUser":"POST /api/louis/auth/admin/create-user","assignStore":"PUT /api/louis/auth/users/:userId/assign-store","stores":"GET /api/louis/auth/stores","updateUser":"PUT /api/louis/auth/users/:userId","deleteUser":"DELETE /api/louis/auth/users/:userId","userHistory":"GET /api/louis/auth/users/:userId/history","recentHistory":"GET /api/louis/auth/history/recent","markRead":"POST /api/louis/auth/users/:userId/history/mark-read","unreadCount":"GET /api/louis/auth/users/:userId/history/unread-count"},"stores":{"list":"GET /api/louis/stores","detail":"GET /api/louis/stores/:storeId","create":"POST /api/louis/stores","update":"PUT /api/louis/stores/:storeId","delete":"DELETE /api/louis/stores/:storeId","search":"GET /api/louis/stores/search/:storeCode"},"dashboard":{"overview":"GET    /api/louis/dashboard/overview","createStore":"POST   /api/louis/dashboard/stores","createStaff":"POST   /api/louis/dashboard/staff","bulkCreateStaff":"POST   /api/louis/dashboard/staff/bulk","updateStaff":"PUT    /api/louis/dashboard/staff/:staffId","deleteStaff":"DELETE /api/louis/dashboard/staff/:staffId","moveStaff":"POST   /api/louis/dashboard/staff/:staffId/move","swapStaff":"POST   /api/louis/dashboard/staff/swap","reorderStaff":"PATCH  /api/louis/dashboard/stores/:storeId/staff/reorder","staffHistory":"GET    /api/louis/dashboard/staff/:staffId/history","recentHistory":"GET    /api/louis/dashboard/history/recent"},"orderRegist":{"register":"POST /api/louis/order_regist","history":"GET /api/louis/order_regist/history","detail":"GET /api/louis/order_regist/:id","test":"GET /api/louis/order_regist/test"},"orders":{"fetch":"GET /api/louis/orders/fetch","sync":"POST /api/louis/orders/sync","list":"GET /api/louis/orders","detail":"GET /api/louis/orders/detail/:serialNumber"},"orderDetail":{"detail":"GET /api/louis/order-detail/:serial"},"ocr":{"scan":"POST /api/louis/ocr"},"partners":{"list":"GET    /api/louis/partners","create":"POST   /api/louis/partners","delete":"DELETE /api/louis/partners/:id"},"bookmarks":{"list":"GET    /api/louis/bookmarks","add":"POST   /api/louis/bookmarks/:storeId","remove":"DELETE /api/louis/bookmarks/:storeId","reorder":"PATCH  /api/louis/bookmarks/reorder"},"alimtalk":{"logs":"GET    /api/louis/alimtalk/logs","logDetail":"GET    /api/louis/alimtalk/logs/:logId","resend":"POST   /api/louis/alimtalk/logs/:logId/resend","stats":"GET    /api/louis/alimtalk/stats"}},"lotteHome":{"auth":{"register":"POST /api/lotteHome/auth/register","login":"POST /api/lotteHome/auth/login","logout":"POST /api/lotteHome/auth/logout","verify":"GET /api/lotteHome/auth/verify","me":"GET /api/lotteHome/auth/me","verifyContact":"POST /api/lotteHome/auth/verify-contact","pending":"GET /api/lotteHome/auth/pending","approve":"POST /api/lotteHome/auth/approve/:userId","reject":"POST /api/lotteHome/auth/reject/:userId","users":"GET /api/lotteHome/auth/users","createUser":"POST /api/lotteHome/auth/users","updateUser":"PUT /api/lotteHome/auth/users/:userId","deleteUser":"DELETE /api/lotteHome/auth/users/:userId","updateRole":"PUT /api/lotteHome/auth/users/:userId/role","userHistory":"GET /api/lotteHome/auth/users/:userId/history","recentHistory":"GET /api/lotteHome/auth/history/recent","markRead":"POST /api/lotteHome/auth/users/:userId/history/mark-read","unreadCount":"GET /api/lotteHome/auth/users/:userId/history/unread-count"},"staff":{"list":"GET /api/lotteHome/staff","search":"GET /api/lotteHome/staff/search?phone=010-1234-5678","create":"POST /api/lotteHome/staff","update":"PUT /api/lotteHome/staff/:staffId","delete":"DELETE /api/lotteHome/staff/:staffId"},"frequentDestinations":{"analyze":"POST /api/lotteHome/frequent-destinations/analyze","list":"GET /api/lotteHome/frequent-destinations?type=start","listAll":"GET /api/lotteHome/frequent-destinations/all","create":"POST /api/lotteHome/frequent-destinations","update":"PUT /api/lotteHome/frequent-destinations/:id","delete":"DELETE /api/lotteHome/frequent-destinations/:id","incrementUsage":"PATCH /api/lotteHome/frequent-destinations/:id/use"},"deliveryPresets":{"list":"GET /api/lotteHome/delivery-presets","create":"POST /api/lotteHome/delivery-presets","delete":"DELETE /api/lotteHome/delivery-presets/:id"},"orderRegist":{"register":"POST /api/lotteHome/order_regist","history":"GET /api/lotteHome/order_regist/history","detail":"GET /api/lotteHome/order_regist/:id","test":"GET /api/lotteHome/order_regist/test"},"orders":{"fetch":"GET /api/lotteHome/orders/fetch","sync":"POST /api/lotteHome/orders/sync","list":"GET /api/lotteHome/orders","detail":"GET /api/lotteHome/orders/detail/:serialNumber","uploadImages":"POST /api/lotteHome/orders/:serialNumber/product-images"},"orderDetail":{"detail":"GET /api/lotteHome/order-detail/:serial"},"ocr":{"scan":"POST /api/lotteHome/ocr"},"notices":{"list":"GET    /api/lotteHome/notices","detail":"GET    /api/lotteHome/notices/:id","create":"POST   /api/lotteHome/notices","update":"PUT    /api/lotteHome/notices/:id","pin":"PATCH  /api/lotteHome/notices/:id/pin","delete":"DELETE /api/lotteHome/notices/:id"}},"pungsan":{"auth":{"register":"POST /api/pungsan/auth/register","login":"POST /api/pungsan/auth/login","logout":"POST /api/pungsan/auth/logout","verify":"GET /api/pungsan/auth/verify","me":"GET /api/pungsan/auth/me","pending":"GET /api/pungsan/auth/pending","approve":"POST /api/pungsan/auth/approve/:userId","reject":"POST /api/pungsan/auth/reject/:userId","users":"GET /api/pungsan/auth/users","createUser":"POST /api/pungsan/auth/users","updateUser":"PUT /api/pungsan/auth/users/:userId","deleteUser":"DELETE /api/pungsan/auth/users/:userId","updateRole":"PUT /api/pungsan/auth/users/:userId/role"},"frequentDestinations":{"analyze":"POST /api/pungsan/frequent-destinations/analyze","list":"GET /api/pungsan/frequent-destinations?type=start","create":"POST /api/pungsan/frequent-destinations","update":"PUT /api/pungsan/frequent-destinations/:id","delete":"DELETE /api/pungsan/frequent-destinations/:id","incrementUsage":"PATCH /api/pungsan/frequent-destinations/:id/use","toggleFavorite":"PATCH /api/pungsan/frequent-destinations/:id/favorite"},"orderRegist":{"register":"POST /api/pungsan/order_regist","history":"GET /api/pungsan/order_regist/history","detail":"GET /api/pungsan/order_regist/:id","test":"GET /api/pungsan/order_regist/test","recentLocations":"GET /api/pungsan/order_regist/recent-locations"},"orders":{"fetch":"GET /api/pungsan/orders/fetch","sync":"POST /api/pungsan/orders/sync","list":"GET /api/pungsan/orders","detail":"GET /api/pungsan/orders/detail/:serialNumber","uploadImages":"POST /api/pungsan/orders/:serialNumber/product-images","registImages":"GET /api/pungsan/orders/regist-images/:serialNumber","uploadRegistImages":"POST /api/pungsan/orders/regist-images/:serialNumber","searchUsers":"GET /api/pungsan/orders/search-users?query=xxx","testNotification":"POST /api/pungsan/orders/test-new-order-notification"},"orderDetail":{"detail":"GET /api/pungsan/order-detail/:serial"},"ocr":{"scan":"POST /api/pungsan/ocr"},"pushy":{"register":"POST /api/pungsan/pushy/register","subscribeTopic":"POST /api/pungsan/pushy/subscribe-topic","test":"POST /api/pungsan/pushy/test","status":"GET /api/pungsan/pushy/status"},"admin":{"registrations":"GET /api/pungsan/admin/registrations","registrationDetail":"GET /api/pungsan/admin/registrations/:serialNumber","userRegistrations":"GET /api/pungsan/admin/registrations/user/:userId","stats":"GET /api/pungsan/admin/registrations/stats/summary"},"preferences":{"locations":"GET /api/pungsan/preferences/locations?userId=xxx&type=departure","createLocation":"POST /api/pungsan/preferences/locations","updateLocation":"PUT /api/pungsan/preferences/locations/:locationId","deleteLocation":"DELETE /api/pungsan/preferences/locations/:locationId?userId=xxx"}},"sample":{"auth":{"register":"POST /api/sample/auth/register","login":"POST /api/sample/auth/login","logout":"POST /api/sample/auth/logout","verify":"GET /api/sample/auth/verify","me":"GET /api/sample/auth/me","pending":"GET /api/sample/auth/pending","approve":"POST /api/sample/auth/approve/:userId","reject":"POST /api/sample/auth/reject/:userId","users":"GET /api/sample/auth/users","createUser":"POST /api/sample/auth/users","updateUser":"PUT /api/sample/auth/users/:userId","deleteUser":"DELETE /api/sample/auth/users/:userId","updateRole":"PUT /api/sample/auth/users/:userId/role"},"frequentDestinations":{"analyze":"POST /api/sample/frequent-destinations/analyze","list":"GET /api/sample/frequent-destinations?type=start","create":"POST /api/sample/frequent-destinations","update":"PUT /api/sample/frequent-destinations/:id","delete":"DELETE /api/sample/frequent-destinations/:id","incrementUsage":"PATCH /api/sample/frequent-destinations/:id/use","toggleFavorite":"PATCH /api/sample/frequent-destinations/:id/favorite"},"orderRegist":{"register":"POST /api/sample/order_regist","history":"GET /api/sample/order_regist/history","detail":"GET /api/sample/order_regist/:id","test":"GET /api/sample/order_regist/test","recentLocations":"GET /api/sample/order_regist/recent-locations"},"orders":{"fetch":"GET /api/sample/orders/fetch","sync":"POST /api/sample/orders/sync","list":"GET /api/sample/orders","detail":"GET /api/sample/orders/detail/:serialNumber","uploadImages":"POST /api/sample/orders/:serialNumber/product-images","registImages":"GET /api/sample/orders/regist-images/:serialNumber","uploadRegistImages":"POST /api/sample/orders/regist-images/:serialNumber","searchUsers":"GET /api/sample/orders/search-users?query=xxx","testNotification":"POST /api/sample/orders/test-new-order-notification"},"orderDetail":{"detail":"GET /api/sample/order-detail/:serial"},"ocr":{"scan":"POST /api/sample/ocr"},"pushy":{"register":"POST /api/sample/pushy/register","subscribeTopic":"POST /api/sample/pushy/subscribe-topic","test":"POST /api/sample/pushy/test","status":"GET /api/sample/pushy/status"},"admin":{"registrations":"GET /api/sample/admin/registrations","registrationDetail":"GET /api/sample/admin/registrations/:serialNumber","userRegistrations":"GET /api/sample/admin/registrations/user/:userId","stats":"GET /api/sample/admin/registrations/stats/summary"},"preferences":{"locations":"GET /api/sample/preferences/locations?userId=xxx&type=departure","createLocation":"POST /api/sample/preferences/locations","updateLocation":"PUT /api/sample/preferences/locations/:locationId","deleteLocation":"DELETE /api/sample/preferences/locations/:locationId?userId=xxx"}},"styleChosun":{"auth":{"register":"POST /api/styleChosun/auth/register","login":"POST /api/styleChosun/auth/login","logout":"POST /api/styleChosun/auth/logout","verify":"GET /api/styleChosun/auth/verify","me":"GET /api/styleChosun/auth/me","pending":"GET /api/styleChosun/auth/pending","approve":"POST /api/styleChosun/auth/approve/:userId","reject":"POST /api/styleChosun/auth/reject/:userId","users":"GET /api/styleChosun/auth/users","createUser":"POST /api/styleChosun/auth/users","updateUser":"PUT /api/styleChosun/auth/users/:userId","deleteUser":"DELETE /api/styleChosun/auth/users/:userId","updateRole":"PUT /api/styleChosun/auth/users/:userId/role","userHistory":"GET /api/styleChosun/auth/users/:userId/history","recentHistory":"GET /api/styleChosun/auth/history/recent","markRead":"POST /api/styleChosun/auth/users/:userId/history/mark-read","unreadCount":"GET /api/styleChosun/auth/users/:userId/history/unread-count"},"places":{"list":"GET /api/styleChosun/places","listByCategory":"GET /api/styleChosun/places?category=studio","listFavorites":"GET /api/styleChosun/places?category=favorite","search":"GET /api/styleChosun/places?search=검색어","create":"POST /api/styleChosun/places","update":"PUT /api/styleChosun/places/:placeId","delete":"DELETE /api/styleChosun/places/:placeId","toggleFavorite":"PATCH /api/styleChosun/places/:placeId/favorite"},"orderRegist":{"register":"POST /api/styleChosun/order_regist","history":"GET /api/styleChosun/order_regist/history","detail":"GET /api/styleChosun/order_regist/:id","test":"GET /api/styleChosun/order_regist/test"},"orders":{"fetch":"GET /api/styleChosun/orders/fetch","sync":"POST /api/styleChosun/orders/sync","list":"GET /api/styleChosun/orders","detail":"GET /api/styleChosun/orders/detail/:serialNumber","uploadImages":"POST /api/styleChosun/orders/:serialNumber/product-images"},"orderDetail":{"detail":"GET /api/styleChosun/order-detail/:serial"},"ocr":{"scan":"POST /api/styleChosun/ocr"}},"kakao":{"addressSearch":"GET /api/kakao/address/search?query=검색어","coordToAddress":"GET /api/kakao/address/coord?x=경도&y=위도","directions":"GET /api/kakao/directions/route?origin_lon=127.1&origin_lat=37.5&dest_lon=127.0&dest_lat=37.5"},"quinors":{"recentOrders":"GET /api/quinors/recent_orders","orderRegist":"POST /api/quinors/order_regist","ai":{"parse":"POST /api/ai/parse","parseImage":"POST /api/ai/parse-image"},"ocr":{"extract":"POST /api/ocr/extract"},"onecall":{"test":"GET /api/quinors/onecall/test","register":"POST /api/quinors/onecall/register","history":"GET /api/quinors/onecall/history","detail":"GET /api/quinors/onecall/:id","insungLink":"GET /api/quinors/onecall/insung/:serial_number","stats":"GET /api/quinors/onecall/stats/summary"},"orderTemplates":{"list":"GET /api/quinors/order-template","detail":"GET /api/quinors/order-template/:user_id","create":"POST /api/quinors/order-template","update":"PUT /api/quinors/order-template/:user_id","delete":"DELETE /api/quinors/order-template/:user_id","favorite":"PATCH /api/quinors/order-template/:user_id/favorite","addContact":"POST /api/quinors/order-template/:user_id/contact","updateContact":"PUT /api/quinors/order-template/:user_id/contact/:index","deleteContact":"DELETE /api/quinors/order-template/:user_id/contact/:index","createDeliveryList":"POST /api/quinors/order-template/:user_id/favorite-delivery-list","updateDeliveryList":"PUT /api/quinors/order-template/:user_id/favorite-delivery-list/:listIndex","deleteDeliveryList":"DELETE /api/quinors/order-template/:user_id/favorite-delivery-list/:listIndex","addDeliveryItem":"POST /api/quinors/order-template/:user_id/favorite-delivery-list/:listIndex/item","updateDeliveryItem":"PUT /api/quinors/order-template/:user_id/favorite-delivery-list/:listIndex/item/:itemIndex","deleteDeliveryItem":"DELETE /api/quinors/order-template/:user_id/favorite-delivery-list/:listIndex/item/:itemIndex","copyDeliveryList":"POST /api/quinors/order-template/:target_user_id/favorite-delivery-list/copy","bulkUploadDeliveryList":"POST /api/quinors/order-template/:user_id/favorite-delivery-list/bulk"},"freightRate":{"uploadMatrix":"POST /api/quinors/freight-rate/matrix/upload","activeMatrix":"GET /api/quinors/freight-rate/matrix/active","matrixList":"GET /api/quinors/freight-rate/matrix/list","template":"GET /api/quinors/freight-rate/matrix/template","calculate":"POST /api/quinors/freight-rate/calculate","setClientRate":"POST /api/quinors/freight-rate/client","getClientRate":"GET /api/quinors/freight-rate/client/:user_id","addOrUpdateRate":"POST /api/quinors/freight-rate/client/rate","deleteRate":"DELETE /api/quinors/freight-rate/client/rate"},"specialFreight":{"listClients":"GET /api/quinors/special-freight/clients","createClient":"POST /api/quinors/special-freight/clients","getClient":"GET /api/quinors/special-freight/clients/:user_id","updateClient":"PUT /api/quinors/special-freight/clients/:user_id","deleteClient":"DELETE /api/quinors/special-freight/clients/:user_id","upsertRate":"POST /api/quinors/special-freight/clients/:user_id/rates","getRates":"GET /api/quinors/special-freight/clients/:user_id/rates","deleteRate":"DELETE /api/quinors/special-freight/clients/:user_id/rates/:rate_id"},"publicRateCalculator":{"listClients":"GET /api/quinors/public/special-freight/clients","calculate":"POST /api/quinors/public/special-freight/calculate"},"notices":{"getPublic":"GET /api/quinors/notices/public/:user_id?","getAll":"GET /api/quinors/notices","create":"POST /api/quinors/notices","update":"PUT /api/quinors/notices/:id","delete":"DELETE /api/quinors/notices/:id","autoCreate":"POST /api/quinors/notices/auto-create"},"memberlist":{"fetch":"POST /api/quinors/memberlist/fetch","fetchExcel":"POST /api/quinors/memberlist/fetch-excel"},"orderCancel":{"cancel":"POST /api/quinors/order-cancel/cancel","list":"GET /api/quinors/order-cancel/list","detail":"GET /api/quinors/order-cancel/:serial_number"}},"updates":{"list":"GET /updates/","version":"GET /updates/version.txt"},"centriqs":{"webhook":"GET /www/ring.html","config":"GET /api/centriqs/config","makeCall":"POST /api/centriqs/call/make"},"push":{"subscribe":"POST /api/push/subscribe","unsubscribe":"POST /api/push/unsubscribe","test":"POST /api/push/test","subscriptions":"GET /api/push/subscriptions?userId=xxx"}}}