{"openapi":"3.1.0","info":{"title":"a2™ Nutrition public API","version":"1.0.0","description":"Read-only HTTP endpoints published by a2™ Nutrition. No authentication is required and no personal data is accepted. Every HTML page on this site also serves Markdown. Send `Accept: text/markdown` to any page URL to get a clean text version of it (`Vary: Accept` is set, so caches keep the two apart)."},"servers":[{"url":"https://a2nutrition.com.au"}],"paths":{"/api/search":{"put":{"operationId":"searchSite","summary":"Full-text search across every indexed page.","description":"Uses PUT rather than POST because the operation is idempotent and carries a JSON body.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"searchTerm":{"type":"string"},"page":{"type":"integer","minimum":0,"default":0},"limit":{"type":"integer","minimum":1,"default":10},"filters":{"type":"string","description":"Algolia filter expression."},"sortBy":{"type":"string","enum":["alphabetical"]}}}}}},"responses":{"200":{"description":"Matching pages.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","additionalProperties":true}},"totalResults":{"type":"integer"},"totalPages":{"type":"integer"}},"required":["items","totalResults","totalPages"]}},"required":["success"]}}}}}}},"/api/article-listing":{"post":{"operationId":"listArticles","summary":"Search and filter articles.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"searchTerm":{"type":"string","description":"Free-text query. Empty string returns everything."},"page":{"type":"integer","minimum":0,"default":0,"description":"Zero-based page index."},"limit":{"type":"integer","minimum":1,"default":10,"description":"Results per page."},"filters":{"type":"array","items":{"type":"string"},"description":"Taxonomy category codenames to filter by."},"sort":{"type":"string","description":"Element codename to sort on."},"sortDirection":{"type":"string","enum":["asc","desc"]}}}}}},"responses":{"200":{"description":"Matching articles.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","additionalProperties":true}},"totalResults":{"type":"integer"},"totalPages":{"type":"integer"}},"required":["items","totalResults","totalPages"]}},"required":["success"]}}}}}}},"/api/recipe-listing":{"post":{"operationId":"listRecipes","summary":"Search and filter recipes.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"searchTerm":{"type":"string","description":"Free-text query. Empty string returns everything."},"page":{"type":"integer","minimum":0,"default":0,"description":"Zero-based page index."},"limit":{"type":"integer","minimum":1,"default":10,"description":"Results per page."},"filters":{"type":"array","items":{"type":"string"},"description":"Taxonomy category codenames to filter by."},"sort":{"type":"string","description":"Element codename to sort on."},"sortDirection":{"type":"string","enum":["asc","desc"]}}}}}},"responses":{"200":{"description":"Matching recipes.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","additionalProperties":true}},"totalResults":{"type":"integer"},"totalPages":{"type":"integer"}},"required":["items","totalResults","totalPages"]}},"required":["success"]}}}}}}},"/llms.txt":{"get":{"operationId":"getLlmsIndex","summary":"Site index for language models (llmstxt.org).","responses":{"200":{"description":"Markdown index.","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/llms-full.txt":{"get":{"operationId":"getLlmsFull","summary":"Full site knowledge as one plain-text document.","responses":{"200":{"description":"Markdown document.","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/sitemap.xml":{"get":{"operationId":"getSitemap","summary":"XML sitemap of every indexable URL.","responses":{"200":{"description":"URL set.","content":{"application/xml":{"schema":{"type":"string"}}}}}}},"/health":{"get":{"operationId":"getHealth","summary":"Liveness probe.","responses":{"200":{"description":"Service status.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}}}}