{"openapi":"3.1.0","info":{"title":"HLA-Verify","version":"1.0.0","description":"Deterministic verification of HLA nomenclature and donor-recipient match claims against IPD-IMGT/HLA 3.65.0. No LLM; nothing stored.","contact":{"email":"hello@hlaverify.com","url":"https://hlaverify.com"}},"servers":[{"url":"https://api.hlaverify.com"},{"url":"https://hlaverify.com"}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","in":"header","name":"X-API-Key"}},"schemas":{"Error":{"type":"object","properties":{"detail":{"type":"string"}}},"Typing":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"},"maxItems":4},"example":{"A":["A*02:01","A*24:02"],"B":["B*07:02","B*44:02"],"C":["C*07:02","C*05:01"],"DRB1":["DRB1*15:01","DRB1*04:01"]}}}},"security":[{},{"ApiKey":[]}],"paths":{"/healthz":{"get":{"summary":"Liveness and pinned release","responses":{"200":{"description":"ok"}}}},"/v1/verify":{"post":{"summary":"Classify every allele-shaped token in free text","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["text"],"properties":{"text":{"type":"string","maxLength":200000}}}}}},"responses":{"200":{"description":"verdicts","content":{"application/json":{"schema":{"type":"object","properties":{"release":{"type":"string"},"clean":{"type":"boolean"},"counts":{"type":"object","additionalProperties":{"type":"integer"}},"tokens":{"type":"array","items":{"type":"object","properties":{"token":{"type":"string"},"status":{"type":"string","enum":["valid","group","deleted","fabricated_group","hallucinated"]},"note":{"type":"string"},"successor":{"type":"string"},"current_2field":{"type":"string"},"g_group":{"type":"string"},"flags":{"type":"array","items":{"type":"string"}}}}},"attribution":{"type":"string"}}}}}},"422":{"description":"invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/normalize":{"post":{"summary":"Normalize reported typings to the current release","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["typings"],"properties":{"typings":{"type":"array","items":{"type":"string"},"maxItems":5000}}}}}},"responses":{"200":{"description":"rows","content":{"application/json":{"schema":{"type":"object","properties":{"release":{"type":"string"},"rows":{"type":"array","items":{"type":"object","properties":{"reported":{"type":"string"},"current_name":{"type":"string"},"allele_2field":{"type":"string"},"g_group":{"type":"string"},"flags":{"type":"array","items":{"type":"string"}}}}},"attribution":{"type":"string"}}}}}}}}},"/v1/allele/{name}":{"get":{"summary":"Facts for one allele, prefix, or deleted name","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"example":"A*24:09N"}],"responses":{"200":{"description":"assigned | valid_prefix | deleted"},"404":{"description":"not in this release"}}}},"/v1/match":{"post":{"summary":"Donor-recipient match verdict (rules R1-R6)","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["recipient","donor"],"properties":{"framework":{"type":"string","enum":["6/6","8/8","10/10","12/12","antigen"],"default":"8/8"},"recipient":{"$ref":"#/components/schemas/Typing"},"donor":{"$ref":"#/components/schemas/Typing"}}}}}},"responses":{"200":{"description":"verdict","content":{"application/json":{"schema":{"type":"object","properties":{"release":{"type":"string"},"framework":{"type":"string"},"count":{"type":"string","example":"7/8"},"verdicts":{"type":"object","additionalProperties":{"type":"string","enum":["match","mismatch","potential"]}},"hvg_mismatches":{"type":"integer"},"gvh_mismatches":{"type":"integer"},"flags":{"type":"array","items":{"type":"string"}},"attribution":{"type":"string"}}}}}}}}}}}