{"id":"vin-validate","version":"1.0.0","description":"Validate a 17-char VIN's mod-11 check digit, split WMI/VDS/VIS, and give the model-year candidates for the year code.","supported_operations":["validate a vehicle identification number","check a vin check digit","is this vin number valid","split a vin into wmi vds vis","what years could this vin's model year code mean","verify vin position 9 checksum"],"unsupported_operations":["decoding make, model or trim (needs licensed manufacturer data)","resolving model year to a single year without a reference window","VINs shorter than 17 characters (pre-1981 formats)"],"semantics":["vin is taken exactly as given: no trimming, no case folding. Wrong length (!= 17) returns reason wrong_length; right length with a lowercase letter or a banned I/O/Q returns reason invalid_character; both return every other field null/empty.","wmi = vin[0:3], vds = vin[3:9], vis = vin[9:17], check_digit = vin[8] (position 9, the raw character, any VIN character), populated once length and charset pass, regardless of check-digit validity.","Transliteration: A-H=1-8 (skipping I), J-N=1-5 (skipping O), P=7, R=9, S-Z=2-9 (skipping Q, T continues 3..9); digits map to themselves. Position weights 1-17: 8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2 (position 9 excluded from the sum via weight 0).","check_digit_valid compares vin[8] to (weighted sum mod 11), mapped to X for a remainder of 10.","check_digit_policy (default 'required'): 'required' makes a check-digit mismatch set valid:false with reason check_digit_mismatch; 'ignore' (non-North-American VINs) makes valid depend only on length/charset, reason staying null even when check_digit_valid is false.","model_year_candidates: vin[9] looked up in the fixed 30-code cycle A,B,C,D,E,F,G,H,J,K,L,M,N,P,R,S,T,V,W,X,Y,1..9; found at index i gives [1980+i, 2010+i]; not found ('0','U','Z') gives an empty array, not an error.","region is a fixed ISO 3780 first-character allocation: A-H africa, J-R asia, S-Z europe, 1-5 north_america, 6-7 oceania, 8-9/0 south_america."],"limits":{"max_vin_bytes":17},"pricing":{"status":"unpriced","charge_usd":null},"input_schema":{"type":"object","additionalProperties":false,"required":["vin"],"properties":{"vin":{"type":"string","minLength":1,"maxLength":17},"check_digit_policy":{"type":"string","enum":["required","ignore"]}}},"output_schema":{"type":"object","additionalProperties":false,"required":["valid","reason","wmi","vds","vis","check_digit","check_digit_valid","model_year_candidates","region"],"properties":{"valid":{"type":"boolean"},"reason":{"type":["string","null"],"enum":[null,"wrong_length","invalid_character","check_digit_mismatch"]},"wmi":{"type":["string","null"],"pattern":"^[A-HJ-NPR-Z0-9]{3}$"},"vds":{"type":["string","null"],"pattern":"^[A-HJ-NPR-Z0-9]{6}$"},"vis":{"type":["string","null"],"pattern":"^[A-HJ-NPR-Z0-9]{8}$"},"check_digit":{"type":["string","null"],"pattern":"^[A-HJ-NPR-Z0-9]$"},"check_digit_valid":{"type":["boolean","null"]},"model_year_candidates":{"type":"array","items":{"type":"integer","minimum":1980,"maximum":2039},"maxItems":2},"region":{"type":["string","null"],"enum":[null,"africa","asia","europe","oceania","north_america","south_america"]}}},"examples":[{"input":{"vin":"5YJ3E1EAXHF000316"},"output":{"valid":true,"reason":null,"wmi":"5YJ","vds":"3E1EAX","vis":"HF000316","check_digit":"X","check_digit_valid":true,"model_year_candidates":[1987,2017],"region":"north_america"}},{"input":{"vin":"1HGCM82633A00435"},"output":{"valid":false,"reason":"wrong_length","wmi":null,"vds":null,"vis":null,"check_digit":null,"check_digit_valid":null,"model_year_candidates":[],"region":null}}],"execute_url":"/v1/tools/vin-validate/versions/1.0.0/execute"}