{"id":"figi-validate","version":"1.0.0","description":"Validate a 12-character FIGI's structure, forbidden-prefix rule and Modulus 10 Double Add Double check digit.","supported_operations":["validate a figi","check figi check digit","is this figi valid","figi checksum validator","parse figi provider prefix","verify bloomberg global identifier","which prefixes are banned in a figi"],"unsupported_operations":["looking up which instrument a FIGI actually identifies","validating a CUSIP (a different 8-character byte-level Double Add Double, see cusip-validate)","accepting vowels anywhere in the FIGI body"],"semantics":["figi must be exactly 12 characters: no case folding, no trimming. Any other length is reason wrong_length, checked first.","prefix (characters 1-2) and check_digit (character 12) are the raw positional substrings whenever figi is exactly 12 characters, regardless of charset, forbidden-prefix or check-digit validity; both are null only when length already failed.","Position 3 must be exactly \"G\". Characters 1-2 must each be an uppercase consonant (never a vowel, never a digit). Characters 4-11 must each be a digit or an uppercase consonant. Character 12 must be a digit, else reason invalid_character.","prefix must not be one of BS, BM, GG, GB, GH, KY, VG (reserved to avoid confusion with country codes), else reason forbidden_prefix, checked once charset passes.","Check digit (Modulus 10 Double Add Double over characters 1-11): a digit is itself, a letter is 10-35; double the value at even 1-based positions (2,4,6,8,10); reduce by summing its own two digits; sum the 11 results; expected check digit is (10 - sum mod 10) mod 10. A mismatch is reason check_digit_mismatch.","valid is true only when length, charset, the forbidden-prefix rule and the check digit all pass, in that order; only one reason is ever returned."],"limits":{"max_figi_bytes":12},"pricing":{"status":"unpriced","charge_usd":null},"input_schema":{"type":"object","additionalProperties":false,"required":["figi"],"properties":{"figi":{"type":"string","minLength":1,"maxLength":12}}},"output_schema":{"type":"object","additionalProperties":false,"required":["valid","reason","prefix","check_digit"],"properties":{"valid":{"type":"boolean"},"reason":{"type":["string","null"],"enum":[null,"wrong_length","invalid_character","forbidden_prefix","check_digit_mismatch"]},"prefix":{"type":["string","null"],"minLength":2,"maxLength":2},"check_digit":{"type":["string","null"],"minLength":1,"maxLength":1}}},"examples":[{"input":{"figi":"BBG000BLNNH6"},"output":{"valid":true,"reason":null,"prefix":"BB","check_digit":"6"}},{"input":{"figi":"GBG000BLNNH1"},"output":{"valid":false,"reason":"forbidden_prefix","prefix":"GB","check_digit":"1"}}],"execute_url":"/v1/tools/figi-validate/versions/1.0.0/execute"}