{"openapi":"3.1.0","info":{"title":"PepTok public catalog API","version":"0.1.0","description":"Read-only JSON endpoints for peptide and protocol template discovery."},"servers":[{"url":"https://www.peptokapp.com/api/public"}],"paths":{"/health":{"get":{"summary":"Health check","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"time":{"type":"string","format":"date-time"},"version":{"type":"string"}}}}}}}}},"/categories":{"get":{"summary":"List peptide category options","responses":{"200":{"description":"Category rows","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}}}}}}}}}},"/peptides":{"get":{"summary":"List published peptides (paginated)","parameters":[{"name":"q","in":"query","schema":{"type":"string"}},{"name":"category","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":30}},{"name":"cursor","in":"query","description":"Opaque cursor JSON (base64url): {\"priority\":number,\"views\":number,\"id\":string}","schema":{"type":"string"}}],"responses":{"200":{"description":"Page of peptides","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/peptides/{slug}":{"get":{"summary":"Get peptide by slug","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Peptide detail","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Not found"}}}},"/protocols":{"get":{"summary":"List published protocol templates (paginated)","parameters":[{"name":"q","in":"query","schema":{"type":"string"}},{"name":"category","in":"query","description":"Comma-separated peptide category ids or slugs","schema":{"type":"string"}},{"name":"levels","in":"query","description":"Comma-separated level values","schema":{"type":"string"}},{"name":"peptideIds","in":"query","description":"Comma-separated peptide product ids","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":30}},{"name":"cursor","in":"query","description":"Opaque cursor JSON (base64url): {\"title\":string,\"id\":string}","schema":{"type":"string"}}],"responses":{"200":{"description":"Page of protocol templates","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/protocols/{id}":{"get":{"summary":"Get protocol template by id","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Protocol template detail","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Not found"}}}}}}