{"service":"product-listing","status":"running","version":"0.52.0","routes":["/dashboard (gated when LISTER_PASSWORD is set)","/login","/signup (lister self-service signup; pending until admin approves)","POST /api/login (email + password — falls back to legacy LISTER_PASSWORD env)","POST /api/signup (creates a pending user account)","GET /api/auth/generate-password (random 16-char password for the signup form)","GET /api/admin/users (list all users — ADMIN_PASSWORD-gated)","POST /api/admin/users/:userId/approve","POST /api/admin/users/:userId/reject","POST /api/admin/users/:userId/promote (lister → admin)","POST /api/admin/users/:userId/demote (admin → lister; can't demote self)","GET /api/me (current user identity)","POST /api/me/change-password (verify current + set new)","/forgot-password (request reset link by email)","POST /api/auth/forgot-password (issues 1h reset token, emails link)","/reset-password?token=… (set new password from email link)","POST /api/auth/reset-password (consume token, set new password)","GET /api/logout","/admin/stats (HTML, ADMIN_PASSWORD-gated)","/health (?verbose=1 for integration auth checks)","POST /api/jobs/preview","POST /api/jobs/preflight","GET /api/jobs/recent","GET /api/jobs/:jobId/result","POST /api/jobs/capture","POST /api/jobs/classify","POST /api/jobs/translate","POST /api/jobs/apply-fix","GET /api/jobs/upgrade-section/presets","POST /api/jobs/upgrade-section (action=draft|decision)","POST /api/jobs/custom-edit (chat-driven edit on lister-picked elements)","GET /api/jobs/:jobId/preview-cache (which audit previews are pre-cached)","GET /api/jobs/cost-totals (USD spend across all jobs ever, broken down by stage)","POST /api/jobs/auto-apply","POST /api/jobs/log-feedback","POST /api/jobs/log-reject","POST /api/jobs/swap-images","POST /api/jobs/audit","POST /api/jobs/create-shopify-product (creates the product + uploads carousel images, requires Shopify config)","POST /api/jobs/publish-shopify-product (toggles status DRAFT/ACTIVE/ARCHIVED, requires Shopify config)","GET /api/admin/audit-stats (JSON, ADMIN_PASSWORD-gated)","POST /api/admin/run-cleanup (manual capture cleanup, ADMIN_PASSWORD-gated)","GET /api/admin/audit-events.jsonl (raw log download, ADMIN_PASSWORD-gated)","GET /api/shopify/health","GET /replacement-images/:driveFileId (Drive-streamed via service account)","GET /captures/:jobId/full-page.png (Bearer-gated)"]}