{"openapi":"3.1.0","info":{"title":"shabash public discovery API","version":"1.0.0","description":"Machine-readable discovery for shabash (shabash.club). These endpoints do not access tenant Member data. Workplace recognition runs in Slack and authenticated sessions. There is no GraphQL API and no public API keys."},"servers":[{"url":"https://shabash.club"}],"paths":{"/openapi.json":{"get":{"operationId":"getOpenApiSpec","summary":"OpenAPI specification","description":"Returns this OpenAPI 3.1 document describing public discovery endpoints.","responses":{"200":{"description":"OpenAPI JSON document","content":{"application/json":{"schema":{"type":"object"}}},"headers":{"RateLimit":{"description":"Remaining quota for the public API window","schema":{"type":"string","example":"limit=60, remaining=59, reset=1735689600"}},"RateLimit-Policy":{"description":"Quota policy for the public API","schema":{"type":"string","example":"60;w=60"}}}},"429":{"description":"Rate limit exceeded","content":{"application/problem+json":{"schema":{"type":"object","required":["type","title","status","detail","code","hint"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer"},"detail":{"type":"string"},"code":{"type":"string","enum":["NOT_FOUND","RATE_LIMITED","NOT_ACCEPTABLE","BAD_REQUEST"]},"hint":{"type":"string"}}}}},"headers":{"RateLimit":{"description":"Remaining quota for the public API window","schema":{"type":"string","example":"limit=60, remaining=59, reset=1735689600"}},"RateLimit-Policy":{"description":"Quota policy for the public API","schema":{"type":"string","example":"60;w=60"}},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds until the quota resets"}}}}}},"/llms.txt":{"get":{"operationId":"getLlmsTxt","summary":"Agent instruction index","description":"llmstxt.org v2 index with when-to-use guidance and links to shabash docs.","responses":{"200":{"description":"llms.txt markdown","content":{"text/plain":{"schema":{"type":"string"}}},"headers":{"RateLimit":{"description":"Remaining quota for the public API window","schema":{"type":"string","example":"limit=60, remaining=59, reset=1735689600"}},"RateLimit-Policy":{"description":"Quota policy for the public API","schema":{"type":"string","example":"60;w=60"}}}},"429":{"description":"Rate limit exceeded","content":{"application/problem+json":{"schema":{"type":"object","required":["type","title","status","detail","code","hint"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer"},"detail":{"type":"string"},"code":{"type":"string","enum":["NOT_FOUND","RATE_LIMITED","NOT_ACCEPTABLE","BAD_REQUEST"]},"hint":{"type":"string"}}}}}}}}},"/sitemap.xml":{"get":{"operationId":"getSitemap","summary":"XML sitemap","description":"Lists indexable public marketing and legal URLs.","responses":{"200":{"description":"Sitemap XML","content":{"application/xml":{"schema":{"type":"string"}}},"headers":{"RateLimit":{"description":"Remaining quota for the public API window","schema":{"type":"string","example":"limit=60, remaining=59, reset=1735689600"}},"RateLimit-Policy":{"description":"Quota policy for the public API","schema":{"type":"string","example":"60;w=60"}}}},"429":{"description":"Rate limit exceeded","content":{"application/problem+json":{"schema":{"type":"object","required":["type","title","status","detail","code","hint"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer"},"detail":{"type":"string"},"code":{"type":"string","enum":["NOT_FOUND","RATE_LIMITED","NOT_ACCEPTABLE","BAD_REQUEST"]},"hint":{"type":"string"}}}}}}}}},"/robots.txt":{"get":{"operationId":"getRobotsTxt","summary":"Robots directives","description":"Robots.txt allowing known AI crawlers on public paths and disallowing app routes.","responses":{"200":{"description":"Robots.txt plain text","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/api/v1/product":{"get":{"operationId":"getProduct","summary":"Product metadata","description":"JSON summary of shabash for agents: name, description, URLs, auth model, and documentation links.","responses":{"200":{"description":"Product metadata","content":{"application/json":{"schema":{"type":"object","required":["name","description","url","operator","auth","docs"],"properties":{"name":{"type":"string","example":"shabash"},"description":{"type":"string"},"url":{"type":"string","format":"uri"},"operator":{"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string","format":"email"}}},"auth":{"type":"object","properties":{"model":{"type":"string","enum":["session","slack_oauth"]},"signInUrl":{"type":"string","format":"uri"},"slackOAuthUrl":{"type":"string","format":"uri"},"apiKeys":{"type":"boolean","enum":[false]},"graphql":{"type":"boolean","enum":[false]}}},"docs":{"type":"object","properties":{"developers":{"type":"string","format":"uri"},"openapi":{"type":"string","format":"uri"},"llmsTxt":{"type":"string","format":"uri"},"sitemap":{"type":"string","format":"uri"},"privacy":{"type":"string","format":"uri"},"terms":{"type":"string","format":"uri"}}}}}}},"headers":{"RateLimit":{"description":"Remaining quota for the public API window","schema":{"type":"string","example":"limit=60, remaining=59, reset=1735689600"}},"RateLimit-Policy":{"description":"Quota policy for the public API","schema":{"type":"string","example":"60;w=60"}}}},"429":{"description":"Rate limit exceeded","content":{"application/problem+json":{"schema":{"type":"object","required":["type","title","status","detail","code","hint"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer"},"detail":{"type":"string"},"code":{"type":"string","enum":["NOT_FOUND","RATE_LIMITED","NOT_ACCEPTABLE","BAD_REQUEST"]},"hint":{"type":"string"}}}}},"headers":{"RateLimit":{"description":"Remaining quota for the public API window","schema":{"type":"string","example":"limit=60, remaining=59, reset=1735689600"}},"RateLimit-Policy":{"description":"Quota policy for the public API","schema":{"type":"string","example":"60;w=60"}},"Retry-After":{"schema":{"type":"integer"}}}}}}}}}