{"openapi":"3.1.0","info":{"title":"Roliki Public Catalog and Agent Registration API","version":"1.1.0","description":"Public product and federation data, with optional anonymous agent registration and revocable read-only credentials. No customer records or orders are exposed."},"servers":[{"url":"https://roliki.md/wp-json/roliki-ai/v1"}],"security":[],"paths":{"/products":{"get":{"operationId":"search_products","summary":"Search the live Roliki shop catalog. Prices are MDL; check product details for size and color variants.","parameters":[{"name":"search","in":"query","required":false,"schema":{"type":"string","maxLength":120}},{"name":"category","in":"query","required":false,"schema":{"type":"string","maxLength":120}},{"name":"brand","in":"query","required":false,"schema":{"type":"string","maxLength":120}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20}}],"responses":{"200":{"description":"Public catalog or site data","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid parameters"},"404":{"description":"Published product not found"}}}},"/products/{id}":{"get":{"operationId":"get_product","summary":"Read a published product, current price, availability, sizes, variants and canonical purchase page.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"Public catalog or site data","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid parameters"},"404":{"description":"Published product not found"}}}},"/content":{"get":{"operationId":"search_site","summary":"Search public federation pages, news, coaches and frequently asked questions.","parameters":[{"name":"search","in":"query","required":false,"schema":{"type":"string","maxLength":120}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20}}],"responses":{"200":{"description":"Public catalog or site data","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid parameters"},"404":{"description":"Published product not found"}}}},"/categories":{"get":{"operationId":"list_categories","summary":"List product categories and brands with their public shop URLs.","parameters":[],"responses":{"200":{"description":"Public catalog or site data","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid parameters"},"404":{"description":"Published product not found"}}}},"/health":{"get":{"operationId":"health","summary":"Read service status","responses":{"200":{"description":"Service status"}}}},"/agents/register":{"post":{"operationId":"register_agent","summary":"Provision an anonymous agent credential for public catalog research. Creates an expiring registration; does not create a customer or WordPress account.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name","method"],"additionalProperties":false,"properties":{"name":{"type":"string","minLength":1,"maxLength":80},"method":{"type":"string","enum":["anonymous"]}}}}}},"responses":{"201":{"description":"Bearer credential issued once, valid for 24 hours","content":{"application/json":{"schema":{"type":"object","required":["agent_id","access_token","token_type","expires_in","scope"],"properties":{"agent_id":{"type":"string"},"access_token":{"type":"string"},"token_type":{"type":"string","const":"Bearer"},"expires_in":{"type":"integer"},"scope":{"type":"string"}}}}}},"400":{"description":"Invalid registration"},"413":{"description":"Body exceeds 8 KiB"},"429":{"description":"Registration rate limit reached"},"503":{"description":"Retry later"}}}},"/agents/me":{"get":{"operationId":"get_agent_registration","summary":"Read the registration belonging to the supplied agent token","security":[{"agentToken":[]}],"responses":{"200":{"description":"Own registration, scopes and expiry; never returns the token"},"401":{"description":"Missing, expired, revoked or invalid token"}}}},"/agents/revoke":{"post":{"operationId":"revoke_agent_registration","summary":"Revoke the supplied agent token","security":[{"agentToken":[]}],"responses":{"200":{"description":"Credential revoked"},"401":{"description":"Missing, expired, revoked or invalid token"}}}}},"components":{"securitySchemes":{"agentToken":{"type":"http","scheme":"bearer","description":"Opaque credential issued by POST /agent/auth or /agents/register. Scopes: catalog:read content:read. Not a WordPress login or customer identity."}}}}
