{"openapi":"3.1.0","info":{"title":"IntentSite Public Agent API","version":"1.0.0"},"servers":[{"url":"https://api.intentsite.com","description":"Public agent endpoint"}],"paths":{"/api/v1/ask":{"get":{"tags":["public-api"],"summary":"Public Intents","description":"Discovery endpoint (no arguments).\n\nA plain `GET /api/v1/ask` returns the IntentMap: the list of questions this\nassistant can answer, each tagged with its category (cluster) and language.\nIntended for AI platforms / crawlers to discover capabilities. To actually\nask a question, POST to this same path.","operationId":"public_intents_api_v1_ask_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntentsResponse"}}}}}},"post":{"tags":["public-api"],"summary":"Public Ask","description":"Public agent-facing endpoint. See module docstring.","operationId":"public_ask_api_v1_ask_post","parameters":[{"name":"stream","in":"query","required":false,"schema":{"type":"boolean","description":"Set to true for SSE streaming.","default":false,"title":"Stream"},"description":"Set to true for SSE streaming."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AskRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AskRequest":{"properties":{"question":{"type":"string","maxLength":100,"title":"Question","description":"The user question, max 100 characters."},"thread_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thread Id","description":"Optional signed thread id from a previous response. Pass it back to continue a multi-turn conversation. Omit for a one-shot question."}},"type":"object","required":["question"],"title":"AskRequest","description":"Public agent-facing chat endpoint request.\n\nDesigned to be minimal and stable. Language is auto-detected by the agent\nand echoed back in the response; callers don't need to supply it."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"IntentItem":{"properties":{"question":{"type":"string","title":"Question","description":"A question this assistant can answer."},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category","description":"The prompt category (cluster) this intent belongs to."},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language","description":"Language of this intent."}},"type":"object","required":["question"],"title":"IntentItem","description":"A single discoverable intent (curated question) from the IntentMap."},"IntentsResponse":{"properties":{"version":{"type":"string","title":"Version","description":"Public API version."},"count":{"type":"integer","title":"Count","description":"Number of intents returned."},"intents":{"items":{"$ref":"#/components/schemas/IntentItem"},"type":"array","title":"Intents","description":"The IntentMap: questions, each with its category and language."}},"type":"object","required":["version","count"],"title":"IntentsResponse","description":"Discovery response for `GET /api/v1/ask`.\n\nA no-argument GET returns the IntentMap: the questions this assistant can\nanswer, each tagged with its category (cluster) and language. Intended for\nAI platforms / crawlers to discover capabilities. To ask a question, POST\nto the same path."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}