{"openapi":"3.1.0","info":{"title":"PetvitaClub Public Catalog API","version":"1.0.0","description":"Read-only product and buying-guide discovery API. Orders, checkout and customer data are not exposed. Successful responses advertise an enforced 120-request-per-minute process-local quota using RateLimit-Policy and RateLimit headers."},"externalDocs":{"description":"Developer guide, versioning and deprecation policy","url":"https://agentic-17.petvitaclub.pt/developers/api-policy"},"servers":[{"url":"https://agentic-17.petvitaclub.pt/api/v1","description":"Current public API origin"}],"security":[],"paths":{"/products":{"get":{"security":[],"operationId":"listProducts","summary":"List or filter products","parameters":[{"name":"q","in":"query","schema":{"type":"string"}},{"name":"cursor","in":"query","description":"Opaque cursor returned as next_cursor.","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}}],"responses":{"200":{"description":"Product page","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductPage"}}}},"400":{"description":"RFC 9457 problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"RFC 9457 problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"405":{"description":"RFC 9457 problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"RFC 9457 problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"RFC 9457 problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/products/{handle}":{"get":{"security":[],"operationId":"getProduct","summary":"Get one product by canonical handle","parameters":[{"name":"handle","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Product","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Product"}}}},"400":{"description":"RFC 9457 problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"RFC 9457 problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"405":{"description":"RFC 9457 problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"RFC 9457 problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"RFC 9457 problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/search":{"get":{"security":[],"operationId":"searchProducts","summary":"Search products","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Search results"},"400":{"description":"RFC 9457 problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"RFC 9457 problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"405":{"description":"RFC 9457 problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"RFC 9457 problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"RFC 9457 problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/guides":{"get":{"security":[],"operationId":"listGuides","summary":"List or search 100 product-focused buying guides","parameters":[{"name":"q","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":100}}],"responses":{"200":{"description":"Guide results","content":{"application/json":{"schema":{"type":"object","required":["count","guides"],"properties":{"count":{"type":"integer"},"guides":{"type":"array","items":{"$ref":"#/components/schemas/Guide"}}}}}}},"400":{"description":"RFC 9457 problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"RFC 9457 problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"405":{"description":"RFC 9457 problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"RFC 9457 problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"RFC 9457 problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/guides/{slug}":{"get":{"security":[],"operationId":"getGuide","summary":"Get one buying guide by canonical slug","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Buying guide","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Guide"}}}},"400":{"description":"RFC 9457 problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"RFC 9457 problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"405":{"description":"RFC 9457 problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"RFC 9457 problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"RFC 9457 problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}}},"components":{"schemas":{"Variant":{"type":"object","required":["id","title","available","price","currency"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"sku":{"type":["string","null"]},"gtin":{"type":["string","null"]},"available":{"type":"boolean"},"price":{"type":"number"},"currency":{"type":"string"}}},"Product":{"type":"object","required":["id","title","handle","description","url","variants"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"handle":{"type":"string"},"description":{"type":"string"},"url":{"type":"string","format":"uri"},"image":{"type":["string","null"],"format":"uri"},"brand":{"type":"string"},"product_type":{"type":["string","null"]},"tags":{"type":"array","items":{"type":"string"}},"variants":{"type":"array","items":{"$ref":"#/components/schemas/Variant"}}}},"ProductPage":{"type":"object","required":["products","count","limit","next_cursor"],"properties":{"products":{"type":"array","items":{"$ref":"#/components/schemas/Product"}},"count":{"type":"integer"},"limit":{"type":"integer"},"next_cursor":{"type":["string","null"]},"next":{"type":["string","null"]}}},"Guide":{"type":"object","required":["title","slug","description","category","reviewed_at","url"],"properties":{"title":{"type":"string"},"slug":{"type":"string"},"description":{"type":"string"},"category":{"type":"string"},"reviewed_at":{"type":"string","format":"date"},"product_handles":{"type":"array","items":{"type":"string"}},"url":{"type":"string","format":"uri"},"markdown":{"type":"string"}}},"Problem":{"type":"object","required":["type","title","status","detail","code","resolution"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer"},"detail":{"type":"string"},"instance":{"type":"string"},"code":{"type":"string"},"resolution":{"type":"string"}}}},"responses":{"Problem":{"description":"RFC 9457 problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}}