{"openapi":"3.1.0","info":{"title":"classicsdata API","description":"Computed market answers for collector cars at make / model / generation / variant resolution. Every response is an aggregate or a bounded answer — never a row export. Skeleton build: lookups + /stats. Comps, vehicle history and valuation follow.","contact":{"name":"classicsdata","url":"https://classicsdata.com/"},"version":"0.1.0-skeleton"},"paths":{"/health":{"get":{"tags":["meta"],"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/makes":{"get":{"tags":["lookup"],"summary":"Makes","description":"Canonical makes with sold-sale counts and generation coverage (P6 A4: generation-level surfaces\nare offered only where `generation_resolution` is true for the make).","operationId":"makes_makes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/models":{"get":{"tags":["lookup"],"summary":"Models","operationId":"models_models_get","parameters":[{"name":"make","in":"query","required":true,"schema":{"type":"string","description":"canonical make, e.g. Porsche","title":"Make"},"description":"canonical make, e.g. Porsche"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/generations":{"get":{"tags":["lookup"],"summary":"Generations","operationId":"generations_generations_get","parameters":[{"name":"make","in":"query","required":true,"schema":{"type":"string","title":"Make"}},{"name":"model","in":"query","required":true,"schema":{"type":"string","title":"Model"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/variants":{"get":{"tags":["lookup"],"summary":"Variants","operationId":"variants_variants_get","parameters":[{"name":"make","in":"query","required":true,"schema":{"type":"string","title":"Make"}},{"name":"model","in":"query","required":true,"schema":{"type":"string","title":"Model"}},{"name":"generation","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Generation"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/stats":{"get":{"tags":["market"],"summary":"Stats","description":"Sold-sale statistics for a make/model[/generation[/variant]] cell, per currency (Ruling #48:\nno converted numbers). Cells with n < 5 return count only. Unmetered on every tier.\n`variant` matches a canonical value exactly — never a prefix (Ruling #104); use `variant_family`\nfor the labelled pool, or `/variants` to discover canonical names.","operationId":"stats_stats_get","parameters":[{"name":"make","in":"query","required":true,"schema":{"type":"string","title":"Make"}},{"name":"model","in":"query","required":true,"schema":{"type":"string","title":"Model"}},{"name":"generation","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Generation"}},{"name":"variant","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Variant"}},{"name":"variant_family","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Ruling #104: labelled pool of variants (e.g. Turbo = Turbo 3.3 + Turbo 3.6 + Turbo S …). Mutually exclusive with `variant`.","title":"Variant Family"},"description":"Ruling #104: labelled pool of variants (e.g. Turbo = Turbo 3.3 + Turbo 3.6 + Turbo S …). Mutually exclusive with `variant`."},{"name":"year_from","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1886},{"type":"null"}],"title":"Year From"}},{"name":"year_to","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":2100},{"type":"null"}],"title":"Year To"}},{"name":"currency","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":3,"maxLength":3},{"type":"null"}],"title":"Currency"}},{"name":"window","in":"query","required":false,"schema":{"enum":["12m","36m","all"],"type":"string","default":"12m","title":"Window"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}