{"openapi":"3.1.0","info":{"title":"CarVector API","version":"1.0.0","summary":"Vehicle specs, federal recalls, complaints, service-bulletin index, investigations and OBD-II DTC reference.","description":"Read-only vehicle data for developers and AI agents. Every operation is a `GET` that returns JSON.\n\n**Authentication.** Send your key as `Authorization: Bearer cv_…` or `X-API-Key: cv_…`. Get a free key (500 calls/month, no card) at https://carvector.io/pricing.\n\n**Keyless pay-per-call (x402).** A request with *no* key to a non-premium data endpoint returns `402 Payment Required` with x402 payment terms (USDC on Base, $0.01 per call). Retry the same request with the signed payment in an `X-PAYMENT` header and it returns data, with the settlement receipt in `X-PAYMENT-RESPONSE`. Paid calls return at most 10 results per page (the free-tier page cap). Premium endpoints (complaints, TSBs, investigations) are not sold this way and answer `401` without a key. A wrong or revoked key always answers `401`, never `402`.\n\n**Rate limits.** Keyed responses carry `X-RateLimit-Limit`, `X-RateLimit-Remaining` and `X-RateLimit-Reset` (omitted on Enterprise). The window is a rolling month counted across every key on the account.\n\n**Forward compatibility.** New optional fields are added without notice; ignore keys you do not recognise. Existing v1 fields are never removed, renamed or retyped.","termsOfService":"https://carvector.io/legal/terms","contact":{"name":"CarVector","url":"https://carvector.io/docs"}},"externalDocs":{"description":"CarVector API documentation","url":"https://carvector.io/docs/api"},"servers":[{"url":"https://api.carvector.io","description":"Production"}],"security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"tags":[{"name":"Vehicles","description":"Catalog search and vehicle specs."},{"name":"Safety","description":"Recalls, complaints, service bulletins and investigations for one vehicle."},{"name":"DTC","description":"OBD-II diagnostic trouble code reference."},{"name":"Meta","description":"Service health and this description."}],"paths":{"/v1/vehicles":{"get":{"operationId":"searchVehicles","tags":["Vehicles"],"summary":"Search vehicles","description":"Find vehicles by year, make and/or model. Use this first to get a vehicle `id`. `make` is an exact case-insensitive match; `model` is a case-insensitive prefix match (`Tacoma` matches `Tacoma Access Cab`). Without any filter, non-Business plans cannot use an `offset` above 200; past that the response is empty and carries a `note`.","parameters":[{"name":"year","in":"query","required":false,"description":"Model year, e.g. 2020.","schema":{"type":"integer"},"example":2020},{"name":"make","in":"query","required":false,"description":"Manufacturer, case-insensitive exact match, e.g. `Jeep`.","schema":{"type":"string"},"example":"Jeep"},{"name":"model","in":"query","required":false,"description":"Model, case-insensitive prefix match, e.g. `Wrangler`.","schema":{"type":"string"},"example":"Wrangler"},{"name":"limit","in":"query","required":false,"description":"Results per page (default 25; `0` or a non-number also means 25). Capped by plan, not rejected: Free and pay-per-call 10, Developer 50, Pro and above 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"offset","in":"query","required":false,"description":"Pagination offset (default 0).","schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"Matching vehicles, newest model year first.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-PAYMENT-RESPONSE":{"$ref":"#/components/headers/X-PAYMENT-RESPONSE"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VehicleSearchResponse"}}}},"400":{"$ref":"#/components/responses/PaymentUnidentifiable"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}},"/v1/vehicles/{id}":{"get":{"operationId":"getVehicle","tags":["Vehicles"],"summary":"Get one vehicle","description":"Full specs for one vehicle: engine, drivetrain, body, a representative illustration, and recall / complaint / bulletin / investigation counts.","parameters":[{"name":"id","in":"path","required":true,"description":"Opaque vehicle id returned by `GET /v1/vehicles`, e.g. `1laqdklflb3hfav`.","schema":{"type":"string"},"example":"1laqdklflb3hfav"}],"responses":{"200":{"description":"The vehicle.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-PAYMENT-RESPONSE":{"$ref":"#/components/headers/X-PAYMENT-RESPONSE"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Vehicle"}}}},"400":{"$ref":"#/components/responses/PaymentUnidentifiable"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}},"/v1/vehicles/{id}/recalls":{"get":{"operationId":"getVehicleRecalls","tags":["Safety"],"summary":"Recalls for a vehicle","description":"Federal recall campaigns for the vehicle's year/make/model. Read `results`; `recalls` is a deprecated alias carrying the same array.","parameters":[{"name":"id","in":"path","required":true,"description":"Opaque vehicle id returned by `GET /v1/vehicles`, e.g. `1laqdklflb3hfav`.","schema":{"type":"string"},"example":"1laqdklflb3hfav"}],"responses":{"200":{"description":"Recall campaigns.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-PAYMENT-RESPONSE":{"$ref":"#/components/headers/X-PAYMENT-RESPONSE"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecallsResponse"}}}},"400":{"$ref":"#/components/responses/PaymentUnidentifiable"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}},"/v1/vehicles/{id}/complaints":{"get":{"operationId":"getVehicleComplaints","tags":["Safety"],"summary":"Owner complaints for a vehicle (Pro plan and up)","description":"Aggregate owner-complaint signal plus the most recent individual complaints, newest first. Requires a Pro plan or higher; not available by pay-per-call.","parameters":[{"name":"id","in":"path","required":true,"description":"Opaque vehicle id returned by `GET /v1/vehicles`, e.g. `1laqdklflb3hfav`.","schema":{"type":"string"},"example":"1laqdklflb3hfav"},{"name":"limit","in":"query","required":false,"description":"Recent complaints to return, 1–10 (default 10). Out-of-range values are clamped, not rejected. The response echoes the value you sent.","schema":{"type":"integer","minimum":1,"maximum":10,"default":10}},{"name":"since","in":"query","required":false,"description":"Only complaints with `received_date` on or after this ISO date (`YYYY-MM-DD`). Compared as text against the stored ISO date.","schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"example":"2020-01-01"}],"responses":{"200":{"description":"Complaint aggregate and recent complaints.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComplaintsResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/UpgradeRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}},"/v1/vehicles/{id}/tsbs":{"get":{"operationId":"getVehicleTsbs","tags":["Safety"],"summary":"Technical service bulletin index for a vehicle (Business plan and up)","description":"Manufacturer service-bulletin metadata (not the documents), newest first. Requires a Business plan or higher; not available by pay-per-call.","parameters":[{"name":"id","in":"path","required":true,"description":"Opaque vehicle id returned by `GET /v1/vehicles`, e.g. `1laqdklflb3hfav`.","schema":{"type":"string"},"example":"1laqdklflb3hfav"},{"name":"limit","in":"query","required":false,"description":"Bulletins to return, 1–50 (default 50). Out-of-range values are clamped, not rejected. The response echoes the value you sent.","schema":{"type":"integer","minimum":1,"maximum":50,"default":50}},{"name":"since","in":"query","required":false,"description":"Only bulletins with `communication_date` on or after this ISO date (`YYYY-MM-DD`). Compared as text against the stored ISO date.","schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"example":"2020-01-01"}],"responses":{"200":{"description":"Service-bulletin index.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TsbsResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/UpgradeRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}},"/v1/vehicles/{id}/investigations":{"get":{"operationId":"getVehicleInvestigations","tags":["Safety"],"summary":"Federal defect investigations for a vehicle (Business plan and up)","description":"NHTSA defect investigations mapped to the vehicle, newest first. Requires a Business plan or higher; not available by pay-per-call.","parameters":[{"name":"id","in":"path","required":true,"description":"Opaque vehicle id returned by `GET /v1/vehicles`, e.g. `1laqdklflb3hfav`.","schema":{"type":"string"},"example":"1laqdklflb3hfav"},{"name":"limit","in":"query","required":false,"description":"Investigations to return, 1–100 (default 100). Out-of-range values are clamped, not rejected. The response echoes the value you sent.","schema":{"type":"integer","minimum":1,"maximum":100,"default":100}},{"name":"since","in":"query","required":false,"description":"Only investigations with `open_date` on or after this ISO date (`YYYY-MM-DD`). Compared as text against the stored ISO date.","schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"example":"2020-01-01"}],"responses":{"200":{"description":"Defect investigations.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvestigationsResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/UpgradeRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}},"/v1/dtc/{code}":{"get":{"operationId":"lookupDtc","tags":["DTC"],"summary":"Look up an OBD-II trouble code","description":"Reference data for one diagnostic trouble code: title, category, severity and safety / emissions flags. No repair cost or labor estimates.","parameters":[{"name":"code","in":"path","required":true,"description":"OBD-II code, case-insensitive, e.g. `P0420`.","schema":{"type":"string"},"example":"P0420"}],"responses":{"200":{"description":"The code's reference entry.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-PAYMENT-RESPONSE":{"$ref":"#/components/headers/X-PAYMENT-RESPONSE"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dtc"}}}},"400":{"$ref":"#/components/responses/PaymentUnidentifiable"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}},"/v1/status":{"get":{"operationId":"getStatus","tags":["Meta"],"summary":"Service health and data freshness","description":"No key required.","security":[],"responses":{"200":{"description":"Healthy.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Status"},"example":{"status":"ok","data_updated":"2026-10-13T04:05:40.258445+00:00","schema_version":2}}}},"503":{"description":"The data snapshot could not be read.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Status"},"example":{"status":"degraded"}}}}}}},"/v1/openapi.json":{"get":{"operationId":"getOpenApi","tags":["Meta"],"summary":"This OpenAPI description","description":"No key required.","security":[],"responses":{"200":{"description":"The OpenAPI 3.1 document.","content":{"application/json":{"schema":{"type":"object"}}}}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Your CarVector key: `Authorization: Bearer cv_…`."},"apiKeyHeader":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Your CarVector key: `X-API-Key: cv_…` (for gateways that reserve `Authorization`)."}},"headers":{"X-RateLimit-Limit":{"description":"Calls allowed in the current rolling month (keyed calls; omitted on Enterprise and pay-per-call).","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Calls left in the current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix time (seconds) one full window from now.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}},"X-PAYMENT-RESPONSE":{"description":"Pay-per-call only: base64 JSON settlement receipt `{success, transaction, network, payer}` on the first use of a payment.","schema":{"type":"string"}}},"responses":{"Unauthorized":{"description":"No key (on a premium endpoint, or when pay-per-call is off) or an invalid / revoked key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"missing_api_key","message":"Send your key as: Authorization: Bearer cv_… (or X-API-Key: cv_…)"}}}},"PaymentRequired":{"description":"No key was sent: x402 payment terms for this exact request. Pay and retry with the `X-PAYMENT` header. Also returned, with `error` and `detail` set, when a submitted payment is rejected, already used, or never settled.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"},"example":{"x402Version":1,"accepts":[{"scheme":"exact","network":"base","maxAmountRequired":"10000","resource":"https://api.carvector.io/v1/vehicles","description":"CarVector vehicle data — single API call","mimeType":"application/json","payTo":"0x05923704d566764A6989605a7a89c3fb7D08F102","maxTimeoutSeconds":60,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"name":"USD Coin","version":"2"}}],"error":"payment_required"}}}},"PaymentUnidentifiable":{"description":"Pay-per-call only: the `X-PAYMENT` payload carries no id that can be de-duplicated. Nothing was charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"payment_unidentifiable","message":"The payment carries no id we can de-duplicate. It was NOT charged."}}}},"UpgradeRequired":{"description":"Your plan does not include this endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpgradeRequired"},"example":{"error":"upgrade_required","required_plan":"business","message":"This endpoint requires the business plan or higher. See https://carvector.io/pricing."}}}},"NotFound":{"description":"Unknown vehicle id or DTC code.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"not_found"}}}},"RateLimited":{"description":"Monthly call limit reached for the account.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}}},"ServiceUnavailable":{"description":"Temporary failure. `dataset_unavailable` means the dataset is missing from the current snapshot: it is NOT a statement that the vehicle has none — do not treat it as zero. Pay-per-call failures (`payment_verification_failed`, `payment_not_recorded`, `settlement_failed`) mean no data was served; do not pay again.","headers":{"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/DatasetUnavailable"},{"$ref":"#/components/schemas/Error"}]}}}}},"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Machine-readable code, e.g. `missing_api_key`, `invalid_api_key`, `not_found`, `service_unavailable`."},"message":{"type":"string"},"code":{"type":"string"}}},"UpgradeRequired":{"type":"object","required":["error","required_plan","message"],"properties":{"error":{"const":"upgrade_required"},"required_plan":{"type":"string","enum":["developer","pro","business","enterprise"]},"message":{"type":"string"}}},"RateLimitError":{"type":"object","required":["error","limit","window"],"description":"RFC 9457 problem-details members on an `application/json` body.","properties":{"error":{"const":"rate_limit_exceeded"},"limit":{"type":"integer"},"window":{"type":"string","example":"month"},"type":{"type":"string","format":"uri"},"title":{"type":"string"},"detail":{"type":"string"},"upgrade_url":{"type":"string","format":"uri"}}},"DatasetUnavailable":{"type":"object","required":["error","dataset"],"properties":{"error":{"const":"dataset_unavailable"},"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer"},"detail":{"type":"string"},"dataset":{"type":"string","example":"complaints"}}},"PaymentRequired":{"type":"object","required":["x402Version","accepts","error"],"properties":{"x402Version":{"type":"integer","const":1},"accepts":{"type":"array","minItems":1,"items":{"$ref":"#/components/schemas/PaymentRequirement"}},"error":{"type":"string","description":"`payment_required` on a first request; otherwise why the submitted payment was refused."},"detail":{"type":"string"}}},"PaymentRequirement":{"type":"object","required":["scheme","network","maxAmountRequired","resource","payTo","asset","maxTimeoutSeconds"],"properties":{"scheme":{"type":"string","example":"exact"},"network":{"type":"string","example":"base"},"maxAmountRequired":{"type":"string","description":"Price in the asset's atomic units (USDC has 6 decimals: `10000` = $0.01).","example":"10000"},"resource":{"type":"string","format":"uri"},"description":{"type":"string"},"mimeType":{"type":"string"},"payTo":{"type":"string"},"maxTimeoutSeconds":{"type":"integer"},"asset":{"type":"string","description":"ERC-20 contract of the settlement asset (USDC on Base).","example":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"extra":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"}}},"outputSchema":{"type":"object","description":"x402 discovery: example input and output for this endpoint."},"extensions":{"type":"object","description":"x402 discovery extensions (bazaar)."}}},"Vehicle":{"type":"object","required":["id","year","make","model","recall_count"],"properties":{"id":{"type":"string","example":"1laqdklflb3hfav"},"year":{"type":"integer","example":2018},"make":{"type":"string","example":"Toyota"},"model":{"type":"string","example":"Tacoma Access Cab"},"trim":{"type":["string","null"]},"submodel":{"type":["string","null"]},"horsepower":{"type":["integer","null"]},"cylinders":{"type":["integer","null"]},"displacement_l":{"type":["number","null"]},"transmission":{"type":["string","null"]},"drive_type":{"type":["string","null"]},"fuel_type":{"type":["string","null"]},"body_class":{"type":["string","null"]},"doors":{"type":["integer","null"]},"image_url":{"type":["string","null"],"format":"uri","description":"A representative illustration of the year/make/model, not a photo."},"image_type":{"enum":["illustration",null]},"recall_count":{"type":"integer"},"complaint_count":{"type":["integer","null"]},"tsb_count":{"type":["integer","null"]},"investigation_count":{"type":["integer","null"]}}},"VehicleSearchResponse":{"type":"object","required":["count","limit","offset","results"],"properties":{"count":{"type":"integer","description":"Length of `results` (not a catalog total)."},"limit":{"type":"integer","description":"The page size actually applied after plan capping."},"offset":{"type":"integer"},"results":{"type":"array","items":{"$ref":"#/components/schemas/Vehicle"}},"note":{"type":"string","description":"Present only when an unfiltered request pages past the window your plan may enumerate."}}},"Recall":{"type":"object","required":["campaign_id"],"properties":{"campaign_id":{"type":"string","example":"19V123000"},"component":{"type":["string","null"]},"summary":{"type":["string","null"]},"consequence":{"type":["string","null"]},"remedy":{"type":["string","null"]},"report_received":{"type":["string","null"],"description":"DD/MM/YYYY (a frozen legacy format; other dates in the API are ISO).","example":"14/03/2019"},"potentially_affected":{"type":["integer","null"]},"completion_rate":{"type":["number","null"],"description":"Recall completion rate when published, otherwise null."}}},"RecallsResponse":{"type":"object","required":["vehicle_id","count","results"],"properties":{"vehicle_id":{"type":"string"},"count":{"type":"integer","description":"Length of `results`."},"results":{"type":"array","items":{"$ref":"#/components/schemas/Recall"}},"recalls":{"type":"array","items":{"$ref":"#/components/schemas/Recall"},"deprecated":true,"description":"Deprecated alias of `results` (same array). Read `results`."},"deprecated_fields":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"use_instead":{"type":"string"},"reason":{"type":"string"}}}}}},"Complaint":{"type":"object","properties":{"received_date":{"type":["string","null"],"description":"ISO date."},"fail_date":{"type":["string","null"],"description":"ISO date."},"component":{"type":["string","null"]},"complaint_type":{"type":["string","null"]},"crash":{"type":"boolean"},"fire":{"type":"boolean"},"injured":{"type":"integer"},"deaths":{"type":"integer"},"summary":{"type":["string","null"],"description":"Owner narrative, clipped; see `summary_truncated`."},"summary_truncated":{"type":"boolean"}}},"ComplaintAggregate":{"type":"object","required":["total","by_component","by_year"],"properties":{"total":{"type":"integer"},"by_component":{"type":"object","additionalProperties":{"type":"integer"}},"by_year":{"type":"object","additionalProperties":{"type":"integer"},"description":"Keyed by the calendar year the complaint was received (not the model year), as a string."},"crash_count":{"type":"integer"},"fire_count":{"type":"integer"},"injured_count":{"type":"integer"},"deaths_count":{"type":"integer"},"trend_90d_count":{"type":"integer"}}},"ComplaintsResponse":{"type":"object","required":["vehicle_id","aggregate","count","results","limit","since"],"properties":{"vehicle_id":{"type":"string"},"aggregate":{"$ref":"#/components/schemas/ComplaintAggregate"},"count":{"type":"integer","description":"Length of `results`."},"results":{"type":"array","items":{"$ref":"#/components/schemas/Complaint"}},"limit":{"type":["number","null"],"description":"Echo of the `limit` query parameter as sent (default 10). Not clamped."},"since":{"type":["string","null"]}}},"Tsb":{"type":"object","properties":{"tsb_id":{"type":["string","null"]},"communication_date":{"type":["string","null"],"description":"ISO date; null for some source records."},"communication_type":{"type":["string","null"]},"component":{"type":["string","null"]},"component_system":{"type":["string","null"]},"component_subsystem":{"type":["string","null"]},"summary":{"type":["string","null"]},"summary_truncated":{"type":"boolean"}}},"TsbsResponse":{"type":"object","required":["vehicle_id","count","results","limit","since"],"properties":{"vehicle_id":{"type":"string"},"count":{"type":"integer","description":"Length of `results`."},"results":{"type":"array","items":{"$ref":"#/components/schemas/Tsb"}},"limit":{"type":["number","null"],"description":"Echo of the `limit` query parameter as sent (default 50). Not clamped."},"since":{"type":["string","null"],"description":"Echo of the `since` query parameter, or null."}}},"Investigation":{"type":"object","properties":{"action_number":{"type":["string","null"]},"component":{"type":["string","null"]},"subject":{"type":["string","null"]},"open_date":{"type":["string","null"],"description":"ISO date."},"close_date":{"type":["string","null"],"description":"ISO date; null while the investigation is open."},"campaign_id":{"type":["string","null"],"description":"Linked recall campaign; null if none."},"summary":{"type":["string","null"]},"summary_truncated":{"type":"boolean"}}},"InvestigationsResponse":{"type":"object","required":["vehicle_id","count","results","limit","since"],"properties":{"vehicle_id":{"type":"string"},"count":{"type":"integer","description":"Length of `results`."},"results":{"type":"array","items":{"$ref":"#/components/schemas/Investigation"}},"limit":{"type":["number","null"],"description":"Echo of the `limit` query parameter as sent (default 100). Not clamped."},"since":{"type":["string","null"],"description":"Echo of the `since` query parameter, or null."}}},"Dtc":{"type":"object","required":["code","safety_risk","emissions_related"],"properties":{"code":{"type":"string","example":"P0420"},"title":{"type":["string","null"]},"category":{"type":["string","null"],"example":"Powertrain"},"system":{"type":["string","null"],"example":"P"},"severity":{"type":["string","null"],"description":"e.g. Low, Medium, High, Critical."},"safety_risk":{"type":"boolean"},"emissions_related":{"type":"boolean"},"related_codes":{"type":"array","items":{"type":"string"}},"symptoms":{"type":"array","items":{"type":"string"}}}},"Status":{"type":"object","required":["status"],"properties":{"status":{"type":"string","enum":["ok","degraded"]},"data_updated":{"type":["string","null"],"description":"When the data snapshot was exported (ISO 8601)."},"schema_version":{"type":"integer"}}}}}}