{
  "name": "Raqib (رقيب) — price intelligence API v1",
  "endpoints": [
    "POST /api/v1/products  {url, vertical?, checkIntervalMin?}  (Bearer auth)",
    "GET  /api/v1/products",
    "GET  /api/v1/products/:id/history",
    "GET  /api/v1/products/:id/verify — is the advertised discount honest?",
    "POST /api/v1/probe  {url} — fetch + extract once, nothing saved (Bearer auth)",
    "POST /api/v1/sites/onboard  {domain, start?} → 202 + job; {domain, apply: true} inserts the proposed site INACTIVE (Bearer auth)",
    "GET  /api/v1/sites/onboard/:domain — onboarding status / proposal (Bearer auth)",
    "GET  /api/v1/health — per-site success, drift, breaker state (Bearer auth)",
    "GET  /dashboard/ — ops dashboard, static assets (data: https://data.raqib.spicydonut.biz/live.json, /full.json)",
    "GET  /api/v1/search?q= — exact GTIN / model code; title similarity with Bearer auth",
    "GET  /api/v1/models/:id — every linked listing + cheapestNow (Exact/Likely, fresh, in stock) + cheapestAnyColour",
    "GET  /api/v1/products/:id/offers — the same, for a product's model",
    "GET  /api/v1/matches — pending match candidates (Bearer auth)",
    "POST /api/v1/matches/:id/decision  {decision: same|different, by?} (Bearer auth)",
    "GET  /api/v1/outliers?after=  (Bearer auth)",
    "POST /api/v1/products/:id/price-ok  {priceMinor} (Bearer auth)",
    "GET  /bot — about RaqibBot"
  ]
}