changedOutput schema / properties / results / items / properties / error / description
Previous value: -"Overall error message if the domain could not be queried at all."New value: +"Set only when the domain could not be queried at all — every resolver failed and none returned records. Each failing resolver is named with its own outcome (\"8.8.8.8: SERVFAIL on A; 1.1.1.1: NXDOMAIN on A\") so a split result stays visible. Null when at least one resolver answered; per-resolver failures are still in \"resolver_results\" and \"flags\"."
changedOutput schema / properties / results / items / properties / flags / description
Previous value: -"Human-readable observations: \"propagation mismatch on A records\", \"no MX records found\", \"CNAME detected — further records resolve via the CNAME target\", etc."New value: +"Human-readable observations that need attention: \"NXDOMAIN from 8.8.8.8, 1.1.1.1 on A, MX — the domain does not exist …\", \"Partial resolution on A records — 9.9.9.9 (nodata) returned nothing while 8.8.8.8 answered\", \"No MX records found\", \"CNAME detected — further records resolve via the CNAME target\". A value_variation disagreement is not flagged here — it is reported in \"propagation_discrepancies\" because it is normal for geo-steered domains."
changedOutput schema / properties / results / items / properties / propagation_discrepancies / description
Previous value: -"Record types where resolvers returned different values. Empty when all resolvers agree."New value: +"Record types where resolvers returned different answers, each labelled by \"kind\". Empty when all resolvers agree."
changedOutput schema / properties / results / items / properties / propagation_discrepancies / items / description
Previous value: -"A record type where resolvers returned different values."New value: +"A record type where resolvers returned different answers."
addedOutput schema / properties / results / items / properties / propagation_discrepancies / items / properties / kind
Added value: +{
+ "description": "What the disagreement is. \"partial_resolution\" = at least one resolver returned records and at least one returned nothing; this is the signal worth investigating (in-flight propagation, a broken resolver, or a partial delegation) — read \"status_by_resolver\" for why each empty resolver was empty. \"value_variation\" = every resolver answered but with different values; this is the expected steady state for anycast and geo-steered domains such as CDN-fronted hostnames, and is also consistent with an in-flight DNS change. Neither value asserts a cause on its own.",
+ "enum": [
+ "value_variation",
+ "partial_resolution"
+ ],
+ "type": "string"
+}
changedOutput schema / properties / results / items / properties / propagation_discrepancies / items / properties / record_type / description
Previous value: -"The DNS record type with differing values."New value: +"The DNS record type resolvers disagreed on."
changedOutput schema / properties / results / items / properties / propagation_discrepancies / items / properties / resolvers_agree / description
Previous value: -"False when resolvers returned different values."New value: +"Always false — an entry only exists when resolvers disagreed."
addedOutput schema / properties / results / items / properties / propagation_discrepancies / items / properties / status_by_resolver
Added value: +{
+ "additionalProperties": {
+ "enum": [
+ "ok",
+ "nodata",
+ "nxdomain",
+ "servfail",
+ "refused",
+ "timeout",
+ "error"
+ ],
+ "type": "string"
+ },
+ "description": "Outcome for this record type per resolver IP address — explains an empty entry in \"values_by_resolver\" as nodata, nxdomain, servfail, timeout, refused, or error.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+}
changedOutput schema / properties / results / items / properties / propagation_discrepancies / items / properties / values_by_resolver / description
Previous value: -"Values reported per resolver IP address."New value: +"Values reported per resolver IP address. An empty array means that resolver returned no records of this type."
changedOutput schema / properties / results / items / properties / propagation_discrepancies / items / required
Previous value: -[
- "record_type",
- "resolvers_agree",
- "values_by_resolver"
-]New value: +[
+ "record_type",
+ "resolvers_agree",
+ "kind",
+ "values_by_resolver",
+ "status_by_resolver"
+]
changedOutput schema / properties / results / items / properties / records / description
Previous value: -"Resolved records from the primary resolver (first in list). Keyed by record type (A, AAAA, CNAME, MX, TXT, NS)."New value: +"Resolved records from a single resolver, keyed by record type (A, AAAA, CNAME, MX, TXT, NS). Taken from the primary resolver (first in \"resolvers\"), or from the first resolver that returned records when the primary returned none. Read \"records_source\" for which resolver these came from, and \"resolver_results\" for the full per-resolver picture."
addedOutput schema / properties / results / items / properties / records_source
Added value: +{
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Resolver IP whose answers populated \"records\", or null when no resolver was queried."
+}
changedOutput schema / properties / results / items / properties / resolver_results / items / properties / error / description
Previous value: -"Error message if this resolver failed, or null on success."New value: +"Failure summary for this resolver in the form \"SERVFAIL on A, MX\", or null when every requested type either resolved or returned nodata. Nodata is never reported as an error — it is a valid DNS answer."
addedOutput schema / properties / results / items / properties / resolver_results / items / properties / status
Added value: +{
+ "description": "Headline outcome for this resolver: \"ok\" when any requested record type resolved, otherwise the most actionable failure across the requested types (servfail, timeout, refused, error, nxdomain, nodata — in that order). Read \"status_by_type\" for the per-record-type detail.",
+ "enum": [
+ "ok",
+ "nodata",
+ "nxdomain",
+ "servfail",
+ "refused",
+ "timeout",
+ "error"
+ ],
+ "type": "string"
+}
addedOutput schema / properties / results / items / properties / resolver_results / items / properties / status_by_type
Added value: +{
+ "additionalProperties": {
+ "enum": [
+ "ok",
+ "nodata",
+ "nxdomain",
+ "servfail",
+ "refused",
+ "timeout",
+ "error"
+ ],
+ "type": "string"
+ },
+ "description": "Outcome for each requested record type, keyed by type. \"ok\" = records returned; \"nodata\" = the domain exists but has no record of this type; \"nxdomain\" = the domain does not exist (check for a typo, an expired registration, or a missing delegation); \"servfail\" = the resolver could not complete the query, commonly a DNSSEC validation failure; \"refused\" = the resolver declined; \"timeout\" = no answer within timeout_ms; \"error\" = any other failure, described in \"error\".",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+}
changedOutput schema / properties / results / items / properties / resolver_results / items / required
Previous value: -[
- "resolver",
- "latency_ms",
- "records",
- "error"
-]New value: +[
+ "resolver",
+ "latency_ms",
+ "records",
+ "status",
+ "status_by_type",
+ "error"
+]
changedOutput schema / properties / results / items / required
Previous value: -[
- "domain",
- "records",
- "resolver_results",
- "propagation_discrepancies",
- "flags",
- "error"
-]New value: +[
+ "domain",
+ "records",
+ "records_source",
+ "resolver_results",
+ "propagation_discrepancies",
+ "flags",
+ "error"
+]