{"openapi":"3.1.0","info":{"title":"Build Something Agents Want API","version":"1.0.0","license":{"name":"CC BY 4.0"},"description":"Read-only Twin Score catalog. Errors use RFC 9457 application/problem+json with code, detail, and status."},"servers":[{"url":"https://buildsomethingagentswant.com/"}],"paths":{"/api/v1":{"get":{"operationId":"getApiIndex","summary":"API discovery","description":"Lists public JSON resources and the OpenAPI document.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"405":{"description":"Problem JSON","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/api/v1/products":{"get":{"operationId":"listProducts","summary":"List products","description":"All published catalog products with Twin Scores and capability matrices.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Product"}}}}}}},"405":{"description":"Problem JSON","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/api/v1/products/{slug}":{"get":{"operationId":"getProduct","summary":"Get product","description":"One catalog product by slug. Unknown slugs return RFC 9457 problem+json.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Product"}}}}}},"400":{"description":"Problem JSON","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"404":{"description":"Problem JSON","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"405":{"description":"Problem JSON","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/api/v1/reviews":{"get":{"operationId":"listReviews","summary":"List reviews","description":"Editorial reviews. Filter with ?product={slug}. Invalid slugs return 400; unknown products return 404.","parameters":[{"name":"product","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array"}}}}}},"400":{"description":"Problem JSON","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"404":{"description":"Problem JSON","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"405":{"description":"Problem JSON","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}}},"components":{"schemas":{"Product":{"type":"object","additionalProperties":true,"properties":{"slug":{"type":"string"},"name":{"type":"string"},"vendor":{"type":"string"},"twin":{"type":"object","additionalProperties":true}}},"ProblemDetails":{"type":"object","additionalProperties":true,"required":["type","title","status","detail","code"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"instance":{"type":"string"},"code":{"type":"string"},"resolution":{"type":"string"}}}}}}