{"openapi":"3.1.0","info":{"title":"Group Coaching Weekly Public API","version":"1.0.0","summary":"Read-only access to publicly available Group Coaching Weekly content.","description":"Unauthenticated, read-only endpoints returning the same content published on the public website: blog posts, press releases, and the current programs and free tools. No personal data, purchases, or member content is exposed, and no endpoint mutates state.\n\nContent Signals for this site: ai-train=no, search=yes, ai-input=yes. You are welcome to read and cite this content in generated answers; please do not use it as model training data.\n\nThis content is education and personal development. It is not therapy, medical, legal, or financial advice, and no specific outcome is guaranteed.","contact":{"email":"support@groupcoachingweekly.com","url":"https://www.groupcoachingweekly.com"},"license":{"name":"All rights reserved","url":"https://www.groupcoachingweekly.com/terms-and-conditions"}},"servers":[{"url":"https://www.groupcoachingweekly.com/api/public/v1","description":"Production"}],"paths":{"/health":{"get":{"operationId":"getHealth","summary":"Service health","responses":{"200":{"description":"Service is up","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","const":"ok"},"version":{"type":"string"},"service":{"type":"string"}},"required":["status","version"]}}}}}}},"/site":{"get":{"operationId":"getSiteInfo","summary":"Site, founder, and usage-policy information","responses":{"200":{"description":"Site metadata","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/offerings":{"get":{"operationId":"listOfferings","summary":"Programs and free tools, with explicit availability","description":"Each item carries an `available` boolean. Do not present an item with `available: false` as purchasable.","responses":{"200":{"description":"Offerings","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Offering"}}}}}}}}}},"/posts":{"get":{"operationId":"listPosts","summary":"Published blog posts","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Posts","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Post"}},"count":{"type":"integer"}}}}}}}}},"/posts/{slug}":{"get":{"operationId":"getPost","summary":"A single published blog post, including its markdown body","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Post","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Post"}}}},"404":{"description":"No published post with that slug"}}}},"/press":{"get":{"operationId":"listPress","summary":"Press releases and the outlets that carried them","responses":{"200":{"description":"Press releases","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/search":{"get":{"operationId":"search","summary":"Substring search across posts, press releases, and offerings","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Matches","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Missing q parameter"}}}}},"components":{"schemas":{"Post":{"type":"object","properties":{"slug":{"type":"string"},"title":{"type":"string"},"excerpt":{"type":"string"},"category":{"type":"string"},"publishedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"url":{"type":"string","format":"uri"},"content":{"type":"string","description":"Markdown body (single-post responses only)"}},"required":["slug","title","url"]},"Offering":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string","enum":["free-resource","free-assessment","free-booking","paid-program","membership"]},"available":{"type":"boolean","description":"False means not currently purchasable or joinable."},"price":{"type":["object","null"],"properties":{"amount":{"type":"number"},"currency":{"type":"string"},"note":{"type":"string"}}},"description":{"type":"string"},"url":{"type":"string","format":"uri"}},"required":["id","name","kind","available","url"]}}}}