{"openapi":"3.1.0","info":{"title":"Hardware Hunter Price Intelligence","version":"1.0.0","description":"Trusted hardware price intelligence: cohort medians (p25/median/p75) over distinct listings, rolling 90-day window, gated on provider-established currency and condition evidence. Benchmarks are per exact SKU (model plus capacity where applicable), carried in the response name and capacity fields. Insufficient components are served free; queries are charged only when trusted data is returned.","x-guidance":"Read GET /api/x402/pricing/catalog first to find a trusted component UUID. Then request GET /api/x402/pricing/component/{component_id}. Trusted benchmarks cost $0.01 over x402; unknown or insufficient components are never charged.","x-versioning":{"strategy":"header-and-url","current_version":"v1","header":"X-API-Version","supported_versions":["v1"],"deprecation_policy":{"notice_period_days":90,"sunset_header":"Sunset","deprecation_header":"Deprecation","documentation":"https://hardwarehunter.io/docs/api-reference"}}},"servers":[{"url":"https://hardwarehunter.io"}],"paths":{"/api/x402/pricing/catalog":{"get":{"operationId":"listHardwarePriceBenchmarks","summary":"List benchmark availability and live pricing","description":"Free catalog; no payment or account required.","parameters":[{"name":"X-API-Version","in":"header","required":false,"description":"API version. Current version: 'v1'. Deprecations are signaled via Sunset (RFC 8594) and Deprecation headers with minimum 90-day notice.","schema":{"type":"string","default":"v1","enum":["v1"]}}],"responses":{"200":{"description":"Current benchmark catalog","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"surface":{"type":"string"},"query_price_usd":{"type":"string"},"payment_network":{"type":"string"},"stratified_cohorts_ready":{"type":"boolean"},"data_contract":{"type":"string"},"components":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"trusted":{"type":"boolean"},"mixed_condition_median":{"type":["number","null"]},"strata":{"type":"array","items":{"type":"string"}},"policy_versions":{"type":"array","items":{"type":"string"}}},"required":["id","name","trusted","strata"]}}},"required":["status","query_price_usd","payment_network","components"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/api/x402/pricing/component/{component_id}":{"get":{"operationId":"getHardwarePriceBenchmark","summary":"Buy one trusted hardware price benchmark","description":"Trusted hardware price intelligence: cohort medians (p25/median/p75) over distinct listings, rolling 90-day window, gated on provider-established currency and condition evidence. Benchmarks are per exact SKU (model plus capacity where applicable), carried in the response name and capacity fields. Insufficient components are served free; queries are charged only when trusted data is returned.","parameters":[{"name":"component_id","in":"path","required":true,"description":"Component UUID from the free catalog.","schema":{"type":"string","format":"uuid"},"example":"242957af-a870-4f47-912b-d04c1dd6f464"},{"name":"X-API-Version","in":"header","required":false,"description":"API version. Current version: 'v1'. Deprecations are signaled via Sunset (RFC 8594) and Deprecation headers with minimum 90-day notice.","schema":{"type":"string","default":"v1","enum":["v1"]}}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}},{"mpp":{"method":"tempo","intent":"charge","network":"4217","currency":"0x20C000000000000000000000b9537d11c60E8b50","recipient":"0x1dd440863e99761823347603D22D5D992DCD3831"}}]},"responses":{"200":{"description":"Trusted benchmark after payment, or a free truthful insufficient-evidence response.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["ok"]},"component_id":{"type":"string","format":"uuid"},"name":{"type":"string"},"benchmark_trust":{"type":"object","properties":{"status":{"type":"string","enum":["trusted"]},"reason_code":{"type":"string"}},"required":["status","reason_code"]},"query_price_usd":{"type":"string"},"cohort":{"type":["object","null"]},"strata":{"type":"array","items":{"type":"object"}}},"required":["status","component_id","name","benchmark_trust","query_price_usd"]}}}},"400":{"description":"Bad Request — invalid parameters or query syntax","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"402":{"description":"Payment Required","content":{"application/json":{"schema":{"type":"object","properties":{"x402Version":{"type":"integer"},"resource":{"type":"object"},"accepts":{"type":"array","items":{"type":"object"}},"extensions":{"type":"object"}},"required":["x402Version","resource","accepts"]}}}},"404":{"description":"Component not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}}},"components":{"schemas":{"ErrorResponse":{"type":"object","description":"Standard error response object.","properties":{"detail":{"type":"string","description":"Human-readable explanation of the error."},"code":{"type":"string","description":"Machine-readable error code."}},"required":["detail"]},"ProblemDetails":{"type":"object","description":"RFC 9457 Problem Details object.","properties":{"type":{"type":"string","format":"uri","description":"A URI reference identifying the problem type."},"title":{"type":"string","description":"Short, human-readable summary of the problem type."},"status":{"type":"integer","description":"The HTTP status code."},"detail":{"type":"string","description":"Human-readable explanation specific to this occurrence."},"instance":{"type":"string","format":"uri","description":"A URI reference identifying the specific occurrence."}},"required":["title","status"]}}}}