{"openapi":"3.1.0","info":{"title":"ProductMetrics API","version":"1.0.0","description":"Read-only JSON API for 44 product & growth metrics and 4 measurement frameworks. The same static data that drives productmetrics.org, served with open CORS, no auth, and no rate limits. Built to be cited: company-specific claims and benchmark figures carry source citations."},"servers":[{"url":"https://productmetrics.org"}],"components":{"schemas":{"Source":{"type":"object","description":"A linkable, authoritative source backing a specific claim or benchmark figure.","required":["label","url"],"additionalProperties":false,"properties":{"label":{"type":"string"},"url":{"type":"string","format":"uri"}}},"Metric":{"type":"object","required":["name","slug","tags","definition","formula","whatItMeasures","whatToWatch","inPractice","relatedMetrics","sources"],"additionalProperties":false,"properties":{"name":{"type":"string"},"slug":{"type":"string"},"abbreviation":{"type":"string"},"tags":{"type":"array","items":{"type":"string","enum":["acquisition","activation","retention","revenue","referral","leading","health"]}},"kind":{"type":"string","enum":["composite"],"description":"Marks an emerging, tool-defined analytics score — not an industry-standard metric."},"definition":{"type":"string"},"formula":{"type":"string"},"whatItMeasures":{"type":"string"},"benchmarks":{"type":"array","items":{"type":"string"}},"calculationMethods":{"type":"array","items":{"type":"string"}},"whatToWatch":{"type":"array","items":{"type":"object","required":["label","text"],"additionalProperties":false,"properties":{"label":{"type":"string"},"text":{"type":"string"}}}},"whenNotToUse":{"type":"string"},"findingMetric":{"type":"string"},"inPractice":{"type":"string"},"tools":{"type":"string"},"relatedMetrics":{"type":"array","items":{"type":"object","required":["slug","text"],"additionalProperties":false,"properties":{"slug":{"type":"string","description":"Slug of a related metric."},"text":{"type":"string"}}}},"vanityRisk":{"type":"string"},"sources":{"type":"array","items":{"type":"object","description":"A linkable, authoritative source backing a specific claim or benchmark figure.","required":["label","url"],"additionalProperties":false,"properties":{"label":{"type":"string"},"url":{"type":"string","format":"uri"}}}}}},"Framework":{"type":"object","required":["name","slug","origin","summary","components","bestFor","limitations","howItWorks","implementation","examples","whenToAvoid","pairsWith","sources"],"additionalProperties":false,"properties":{"name":{"type":"string"},"slug":{"type":"string"},"origin":{"type":"string"},"summary":{"type":"string"},"components":{"type":"array","items":{"type":"object","required":["name","description","metricSlugs"],"additionalProperties":false,"properties":{"name":{"type":"string"},"description":{"type":"string"},"metricSlugs":{"type":"array","items":{"type":"string"}}}}},"bestFor":{"type":"string"},"limitations":{"type":"string"},"howItWorks":{"type":"string"},"implementation":{"type":"array","items":{"type":"string"}},"examples":{"type":"array","items":{"type":"object","required":["company","detail"],"additionalProperties":false,"properties":{"company":{"type":"string"},"detail":{"type":"string"},"source":{"type":"object","description":"A linkable, authoritative source backing a specific claim or benchmark figure.","required":["label","url"],"additionalProperties":false,"properties":{"label":{"type":"string"},"url":{"type":"string","format":"uri"}}}}}},"whenToAvoid":{"type":"string"},"pairsWith":{"type":"array","items":{"type":"object","required":["slug","reason"],"additionalProperties":false,"properties":{"slug":{"type":"string","description":"Slug of a framework this one pairs with."},"reason":{"type":"string"}}}},"sources":{"type":"array","items":{"type":"object","description":"A linkable, authoritative source backing a specific claim or benchmark figure.","required":["label","url"],"additionalProperties":false,"properties":{"label":{"type":"string"},"url":{"type":"string","format":"uri"}}}}}},"FrameworkComponent":{"type":"object","required":["name","description","metricSlugs"],"additionalProperties":false,"properties":{"name":{"type":"string"},"description":{"type":"string"},"metricSlugs":{"type":"array","items":{"type":"string"}}}},"NotFound":{"type":"object","required":["error"],"additionalProperties":false,"properties":{"error":{"type":"string"}}}}},"paths":{"/api/metrics":{"get":{"operationId":"listMetrics","summary":"List all metrics","description":"Returns all 44 metrics. Every metric includes a sources array (empty when uncited).","responses":{"200":{"description":"An array of every metric.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Metric"}}}}}}}},"/api/metrics/{slug}":{"get":{"operationId":"getMetric","summary":"Get a single metric by slug","parameters":[{"name":"slug","in":"path","required":true,"description":"Record slug. Matches the page URL slug (e.g. dau, nrr, aarrr).","schema":{"type":"string"}}],"responses":{"200":{"description":"The requested metric.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Metric"}}}},"404":{"description":"No metric with that slug.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/api/frameworks":{"get":{"operationId":"listFrameworks","summary":"List all frameworks","description":"Returns all 4 measurement frameworks. Every framework includes a sources array.","responses":{"200":{"description":"An array of every framework.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Framework"}}}}}}}},"/api/frameworks/{slug}":{"get":{"operationId":"getFramework","summary":"Get a single framework by slug","parameters":[{"name":"slug","in":"path","required":true,"description":"Record slug. Matches the page URL slug (e.g. dau, nrr, aarrr).","schema":{"type":"string"}}],"responses":{"200":{"description":"The requested framework.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Framework"}}}},"404":{"description":"No framework with that slug.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}}}}