{"openapi":"3.1.0","info":{"title":"NeedRadar Read-only API","version":"1.0.0","description":"Free, anonymous, read-only access to published AI need cards, evidence links and source policy summaries."},"servers":[{"url":"/"}],"paths":{"/api/v1/opportunities":{"get":{"summary":"List published opportunities","parameters":[{"name":"q","in":"query","schema":{"type":"string"}},{"name":"domain","in":"query","schema":{"type":"string"}},{"name":"risk","in":"query","schema":{"type":"string"}},{"name":"aiFit","in":"query","schema":{"type":"string"}},{"name":"minValidation","in":"query","schema":{"type":"integer","minimum":0,"maximum":8}},{"name":"maxValidation","in":"query","schema":{"type":"integer","minimum":0,"maximum":8}},{"name":"sort","in":"query","schema":{"type":"string","enum":["validation","newest","evidence"]}},{"name":"page","in":"query","schema":{"type":"integer","minimum":1}},{"name":"pageSize","in":"query","schema":{"type":"integer","minimum":1,"maximum":50}}],"responses":{"200":{"description":"Paginated opportunity summaries."},"400":{"description":"Invalid query parameter."},"429":{"description":"Rate limit exceeded."}}}},"/api/v1/opportunities/{slug}":{"get":{"summary":"Get a published opportunity and its evidence chain","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Opportunity detail."},"404":{"description":"Not found or under review."},"429":{"description":"Rate limit exceeded."}}}},"/api/v1/sources":{"get":{"summary":"List source policy and health summaries","responses":{"200":{"description":"Source summaries."},"429":{"description":"Rate limit exceeded."}}}},"/api/v1/social-signals":{"get":{"summary":"List supported social platforms and privacy-safe submission aggregates","responses":{"200":{"description":"Platform access states, intake modes, and aggregate counts. No submitted content or user data."},"429":{"description":"Rate limit exceeded."}}}},"/api/v1/meta":{"get":{"summary":"Get API metadata and public coverage","responses":{"200":{"description":"API and coverage metadata."},"429":{"description":"Rate limit exceeded."}}}},"/api/v1/openapi.json":{"get":{"summary":"Get this OpenAPI document","responses":{"200":{"description":"OpenAPI 3.1 document."}}}}}}