{"id":"idna-domain-diagnose","version":"1.0.0","description":"Validate each dot-separated IDNA2008 label and the 253-octet DNS wire length.","supported_operations":["diagnose an idna2008 domain","check every label in a domain name","idna domain wire octet length","trailing dot fully qualified domain check","registration profile for a whole domain","which label breaks this idna domain","אבחון שם מתחם לפי תוויות"],"unsupported_operations":["resolve DNS records for this name","convert the name with UTS 46 mapping","treat ideographic full stops as label separators"],"semantics":["The domain is split only on U+002E FULL STOP. Every other dot stays inside a label and is judged there.","One trailing U+002E is a fully-qualified marker: trailing_dot is true and it is not an empty label. A domain that is only that dot is empty_domain.","Each remaining label uses idna-label-validate rules: registration rejects a non-lowercase A-label as alabel_not_lowercase, while lookup may lowercase it. An empty label between dots is empty_label.","The first invalid label sets reason, reason_label, reason_index, and cp. wire is null when any label is invalid.","When every label is valid, wire is the ASCII alabels joined by dots, excluding a stripped trailing dot. Longer than 253 octets is dns_domain_length. wire is still returned when it fits in 4096 characters.","There is no extra whole-domain Bidi Rule. No DNS query is performed. Results are not a homograph, phishing, or authenticity verdict.","A domain over 1023 bytes, a label over 252 bytes, or more than 127 labels is limit_exceeded rather than valid:false."],"limits":{"max_domain_bytes":1023,"max_label_bytes":252,"max_labels":127,"max_output_bytes":65536},"pricing":{"status":"unpriced","charge_usd":null},"input_schema":{"type":"object","additionalProperties":false,"required":["domain","profile"],"properties":{"domain":{"type":"string","minLength":1,"maxLength":1023},"profile":{"type":"string","enum":["registration","lookup"]}}},"output_schema":{"type":"object","additionalProperties":false,"required":["valid","reason","reason_label","reason_index","cp","trailing_dot","label_count","wire","labels","data_version"],"properties":{"valid":{"type":"boolean"},"reason":{"type":["string","null"],"enum":[null,"disallowed","unassigned","contextj","contexto","not_nfc","leading_combining_mark","hyphen_position","bidi_rule","punycode_decode","punycode_roundtrip","alabel_not_lowercase","punycode_encode","ace_all_ascii","dns_label_length","not_ldh","empty_label","empty_domain","dns_domain_length"]},"reason_label":{"type":["integer","null"],"minimum":0,"maximum":126},"reason_index":{"type":["integer","null"],"minimum":0,"maximum":251},"cp":{"type":["integer","null"],"minimum":0,"maximum":1114111},"trailing_dot":{"type":"boolean"},"label_count":{"type":"integer","minimum":0,"maximum":127},"wire":{"type":["string","null"],"minLength":1,"maxLength":4096},"labels":{"type":"array","maxItems":127,"items":{"type":"object","additionalProperties":false,"required":["label","valid","reason","reason_index","cp","form","ulabel","alabel","direction","bidi_condition"],"properties":{"label":{"type":"string","maxLength":252},"valid":{"type":"boolean"},"reason":{"type":["string","null"],"enum":[null,"disallowed","unassigned","contextj","contexto","not_nfc","leading_combining_mark","hyphen_position","bidi_rule","punycode_decode","punycode_roundtrip","alabel_not_lowercase","punycode_encode","ace_all_ascii","dns_label_length","not_ldh","empty_label"]},"reason_index":{"type":["integer","null"],"minimum":0,"maximum":251},"cp":{"type":["integer","null"],"minimum":0,"maximum":1114111},"form":{"type":["string","null"],"enum":["u-label","a-label","nr-ldh",null]},"ulabel":{"type":["string","null"],"maxLength":252},"alabel":{"type":["string","null"],"minLength":1,"maxLength":63},"direction":{"type":"string","enum":["ltr","rtl","none"]},"bidi_condition":{"type":["integer","null"],"minimum":1,"maximum":6}}}},"data_version":{"type":"string","const":"idna2008-rfc5892-unicode-15.1.0"}}},"examples":[{"input":{"domain":"a.","profile":"lookup"},"output":{"valid":true,"reason":null,"reason_label":null,"reason_index":null,"cp":null,"trailing_dot":true,"label_count":1,"wire":"a","labels":[{"label":"a","valid":true,"reason":null,"reason_index":null,"cp":null,"form":"nr-ldh","ulabel":"a","alabel":"a","direction":"none","bidi_condition":null}],"data_version":"idna2008-rfc5892-unicode-15.1.0"}},{"input":{"domain":".","profile":"lookup"},"output":{"valid":false,"reason":"empty_domain","reason_label":null,"reason_index":null,"cp":null,"trailing_dot":true,"label_count":0,"wire":null,"labels":[],"data_version":"idna2008-rfc5892-unicode-15.1.0"}},{"input":{"domain":"a..b","profile":"registration"},"output":{"valid":false,"reason":"empty_label","reason_label":1,"reason_index":null,"cp":null,"trailing_dot":false,"label_count":3,"wire":null,"labels":[{"label":"a","valid":true,"reason":null,"reason_index":null,"cp":null,"form":"u-label","ulabel":"a","alabel":"a","direction":"none","bidi_condition":null},{"label":"","valid":false,"reason":"empty_label","reason_index":null,"cp":null,"form":null,"ulabel":null,"alabel":null,"direction":"none","bidi_condition":null},{"label":"b","valid":true,"reason":null,"reason_index":null,"cp":null,"form":"u-label","ulabel":"b","alabel":"b","direction":"none","bidi_condition":null}],"data_version":"idna2008-rfc5892-unicode-15.1.0"}}],"execute_url":"/v1/tools/idna-domain-diagnose/versions/1.0.0/execute"}