{"openapi":"3.1.0","info":{"title":"Research Working Papers API","version":"1.0.0","description":"Public, read-only API of the Simon-Pierre Boucher Research Observatory (wp.spboucher.ai).","contact":{"url":"https://wp.spboucher.ai/about"}},"servers":[{"url":"https://wp.spboucher.ai/api/v1"}],"paths":{"/papers":{"get":{"summary":"List published working papers","description":"Filters are multi-valued (repeat the parameter or separate values with commas). Paginated.","parameters":[{"name":"q","in":"query","description":"Typo-tolerant query over titles, abstracts, keywords, authors, identifiers","schema":{"type":"string"}},{"name":"year","in":"query","description":"Publication year(s)","schema":{"type":"string"}},{"name":"domain","in":"query","description":"Research domain slug(s)","schema":{"type":"string"}},{"name":"topic","in":"query","description":"Topic slug(s)","schema":{"type":"string"}},{"name":"author","in":"query","description":"Author slug(s)","schema":{"type":"string"}},{"name":"keyword","in":"query","description":"Keyword(s)","schema":{"type":"string"}},{"name":"method","in":"query","description":"Method slug(s)","schema":{"type":"string"}},{"name":"dataset","in":"query","description":"Dataset slug(s)","schema":{"type":"string"}},{"name":"series","in":"query","description":"Series code (WP, FIRC)","schema":{"type":"string"}},{"name":"pub","in":"query","description":"Publication status","schema":{"type":"string","enum":["working_paper","under_review","forthcoming","published"]}},{"name":"pdf","in":"query","description":"1 = only papers with a downloadable manuscript","schema":{"type":"string"}},{"name":"sort","in":"query","description":"Sort order","schema":{"type":"string","enum":["recent","revised","number","title","year","views","downloads"]}},{"name":"page","in":"query","description":"Page number","schema":{"type":"integer"}},{"name":"per_page","in":"query","description":"Items per page (max 100)","schema":{"type":"integer"}}]}},"/papers/{id}":{"get":{"summary":"Get one working paper","description":"Full record: metadata, authors, topics, methods, datasets, versions, related papers (with explanations and an `inferred` flag).","parameters":[{"name":"id","in":"path","description":"Identifier or slug (wp38, WP38, firc2)","schema":{"type":"string"}}]}},"/papers/{id}/citation.{format}":{"get":{"summary":"Citation export","parameters":[{"name":"id","in":"path","schema":{"type":"string"}},{"name":"format","in":"path","schema":{"type":"string","enum":["bib","ris","json"]}}]}},"/search":{"get":{"summary":"Hybrid search","description":"Lexical (metadata + full text, typo-tolerant) fused with semantic retrieval when embeddings are available; results carry the signals that matched and a highlighted passage.","parameters":[{"name":"q","in":"query","description":"Query","schema":{"type":"string"}},{"name":"mode","in":"query","description":"Retrieval mode","schema":{"type":"string","enum":["hybrid","lexical","semantic"]}},{"name":"limit","in":"query","description":"Max results (≤ 50)","schema":{"type":"integer"}}]}},"/stats":{"get":{"summary":"Collection statistics","description":"Computed live from the publication database."}},"/topics":{"get":{"summary":"Domains and topics with paper counts"}},"/methods":{"get":{"summary":"Methods with paper counts"}},"/datasets":{"get":{"summary":"Research data catalog"}},"/authors":{"get":{"summary":"Authors with paper counts"}},"/series":{"get":{"summary":"Research series"}},"/graph":{"get":{"summary":"Research knowledge graph","description":"Nodes = published papers; edges = relations (topic, method, dataset, author, semantic, lexical, curated). Inferred edges are flagged.","parameters":[{"name":"kinds","in":"query","description":"Comma-separated relation kinds to include","schema":{"type":"string"}}]}},"/timeline":{"get":{"summary":"Releases and revisions by date"}}}}