{"openapi":"3.1.0","info":{"title":"OneGrow ACP","version":"0.1.0","description":"Agent-to-Content Protocol v0.1 — agent-facing access layer for OneGrow's public content (creator works + reader shares). Anonymous, no token required."},"servers":[{"url":"/api/acp/v0","description":"ACP v0 base"}],"paths":{"/items":{"get":{"summary":"List public items (creator content + reader shares)","parameters":[{"name":"mode","in":"query","schema":{"type":"string","enum":["selected","all"],"default":"selected"}},{"name":"since","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"q","in":"query","schema":{"type":"string"},"description":"Title + summary ILIKE search"},{"name":"kind","in":"query","schema":{"type":"string","enum":["creator_content","reader_share"]}},{"name":"source_platform","in":"query","schema":{"type":"string"}},{"name":"content_type","in":"query","schema":{"type":"string","enum":["article","video"]}},{"name":"cursor","in":"query","schema":{"type":"string"},"description":"Opaque base64 tuple cursor returned by previous page"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["items"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Item"}},"next_cursor":{"type":"string","nullable":true}}}}}},"400":{"description":"Invalid query / cursor"},"429":{"description":"Rate limited (nginx acp_zone)"}}}},"/items/{id}":{"get":{"summary":"Get one item (full body if non-paywalled)","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^(ci|rs)_[a-z0-9]+$"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Item"}}}},"404":{"description":"Not found / invalid id prefix"}}}},"/feed.xml":{"get":{"summary":"RSS 2.0 feed (mode=selected, latest 50)","responses":{"200":{"description":"OK","content":{"application/rss+xml":{"schema":{"type":"string"}}}}}}},"/openapi.json":{"get":{"summary":"This document","responses":{"200":{"description":"OK"}}}},"/skill/SKILL.md":{"get":{"summary":"SKILL.md for any agent platform (Claude Code / Codex / Cursor / Gemini / ...)","responses":{"200":{"description":"OK","content":{"text/markdown":{"schema":{"type":"string"}}}}}}}},"components":{"schemas":{"Item":{"type":"object","required":["id","kind","title","url","published_at","content_type","source_platform"],"properties":{"id":{"type":"string","pattern":"^(ci|rs)_"},"kind":{"type":"string","enum":["creator_content","reader_share"]},"title":{"type":"string"},"summary":{"type":"string"},"url":{"type":"string","format":"uri"},"author":{"type":"object","properties":{"name":{"type":"string"},"verified":{"type":"boolean"}}},"published_at":{"type":"string","format":"date-time"},"content_type":{"type":"string","enum":["article","video"]},"source_platform":{"type":"string"},"tags":{"type":"array","items":{"type":"string"},"default":[]},"paywalled":{"type":"boolean","description":"Only meaningful on creator_content"},"price_cents":{"type":"integer","description":"Only when paywalled=true"},"shared_by":{"type":"string","nullable":true,"description":"Only on reader_share"},"saved_reason":{"type":"string","description":"Only on reader_share"},"body_excerpt":{"type":"string","description":"First 280 codepoints; omitted on paywalled"},"body_url":{"type":"string","format":"uri","description":"Detail endpoint; omitted on paywalled"}}}}}}