{"openapi":"3.2.0","info":{"title":"B2B Domain Enrichment and EU VAT VIES Impressum API","description":"Source-backed legal identity, public business contacts and live EU VAT verification. Get domain evidence for Clay, n8n, Make and MCP agents.","version":"1.0.0"},"servers":[{"url":"https://gfseh.jojapi.net"}],"security":[{"ApiKeyAuth":[]}],"tags":[{"name":"Data"},{"name":"Business"},{"name":"Email"}],"x-agent-commerce":{"catalog_url":"https://gfseh.jojapi.net/_jojapi/agent/plans","discovery_url":"https://gfseh.jojapi.net/.well-known/x402","directory_url":"https://agents.jojapi.net/apis/b2b-domain-enrichment-vat-impressum-api","docs":"https://docs.jojapi.com/consumers/agents"},"paths":{"/v1/full-enrich":{"get":{"operationId":"get_v1_full_enrich","summary":"Enrich a company domain with legal, contact and email DNS data","description":"Use this tool whenever the user asks for source-backed legal identity, public business contacts and live EU VAT verification from company domains. Supply one public domain. Return legal-name and address candidates, public emails, phones, company social links, tax and register identifiers, source excerpts, extraction methods, observation dates and entity-association states. Read quality.field_status and observed_fields; quality.status describes inspection completeness, not guaranteed field presence. Compare page and official names using vat_validation.identity_match without treating a match as domain ownership. DNS adds bounded SPF include/redirect paths and RFC 9989 DMARC policy discovery. Retain warnings and unknown states; a completed partial inspection is billable. Production caching: complete web observations up to 6h; complete DNS uses minimum observed TTL, capped at 1h. Read module_cache and source dates. fresh=true bypasses reads/writes. VIES stays live. Legacy 24h complete-response caching applies only with module caching disabled.\n\nJoJ API handles consumer authentication, plan quotas and metering. Every completed HTTP 200 inspection, including a partial result or cache hit, consumes one Credit and one included Result. Only Credits has nonzero unit pricing; Results has no additional fee. Errors report zero units. The gateway generates consumer-facing per-object usage and quota headers. Internal usage and error details are removed; the gateway may expose its own non-billable response marker.","tags":["Data"],"responses":{"200":{"description":"Completed inspection. Values are evidence with source and status fields, not proof of domain ownership. Empty fields and partial secondary modules may occur. For the VAT-only endpoint, inspect valid or invalid registration.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","product","domain","retrieved_at","warnings","timing","vat_validation"],"properties":{"success":{"type":"boolean","enum":[true]},"product":{"type":"string","enum":["full_enrich"]},"domain":{"type":"string"},"retrieved_at":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"timing":{"type":"object","additionalProperties":false,"required":["budget_ms","elapsed_ms","partial","subrequests"],"properties":{"budget_ms":{"type":"integer","enum":[4000]},"elapsed_ms":{"type":"integer","minimum":0},"partial":{"type":"boolean"},"subrequests":{"type":"integer","minimum":0},"origin_elapsed_ms":{"type":"integer","minimum":0,"description":"Duration of the original inspection, present on a cache hit."},"origin_subrequests":{"type":"integer","minimum":0,"description":"Outbound requests made by the original cached inspection."}},"description":"The 4,000 ms work budget is not an end-to-end latency guarantee. Partial results are explicitly identified."},"legal_entity":{"type":"object","additionalProperties":false,"required":["status","name","country_hint","source_url","candidates"],"properties":{"status":{"type":"string","enum":["found","ambiguous","not_found","not_checked"]},"name":{"type":"string","nullable":true},"country_hint":{"type":"string","description":"Country hint inferred from the website suffix, not verified domicile.","nullable":true},"source_url":{"type":"string","format":"uri","nullable":true},"candidates":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["name","source_url"],"properties":{"name":{"type":"string"},"source_url":{"type":"string","format":"uri"},"association":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["owner","provider","unassociated","ambiguous"]},"entity_name":{"type":"string","nullable":true},"reason":{"type":"string"}}},"evidence":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}},"evidence_sources":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}}},"observed_at":{"type":"string","format":"date-time","nullable":true}}},"maxItems":20},"evidence":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}},"nullable":true},"address":{"type":"string","nullable":true},"address_status":{"type":"string"}},"description":"Legal names observed on fetched pages. Multiple candidates leave name null. These are not official registry checks."},"tax_identifiers":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["kind","country_code","value","format_valid","source_url","verification","identifier_type","evidence_label"],"properties":{"kind":{"type":"string","enum":["eu_vat","local_tax_id","uk_company_number","company_register"]},"country_code":{"type":"string"},"value":{"type":"string"},"format_valid":{"type":"boolean"},"source_url":{"type":"string","format":"uri","nullable":true},"verification":{"type":"string","enum":["structure_only"]},"identifier_type":{"type":"string","nullable":true},"evidence_label":{"type":"string","nullable":true},"association":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["owner","provider","unassociated","ambiguous"]},"entity_name":{"type":"string","nullable":true},"reason":{"type":"string"}}},"evidence":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}},"evidence_sources":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}}},"observed_at":{"type":"string","format":"date-time","nullable":true}},"description":"A labeled identifier matching a supported national structure. Structure checks do not establish registration, ownership, checksum validity or company status."},"maxItems":32},"directors":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["name","source_url","verification"],"properties":{"name":{"type":"string"},"source_url":{"type":"string","format":"uri"},"verification":{"type":"string","enum":["page_statement"]},"association":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["owner","provider","unassociated","ambiguous"]},"entity_name":{"type":"string","nullable":true},"reason":{"type":"string"}}},"evidence":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}},"evidence_sources":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}}},"observed_at":{"type":"string","format":"date-time","nullable":true}},"description":"A director or representative statement extracted from the page; it can contain multiple names and is not registry verified."},"maxItems":20},"company_registers":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["value","context","source_url","verification"],"properties":{"value":{"type":"string"},"context":{"type":"string"},"source_url":{"type":"string","format":"uri"},"verification":{"type":"string","enum":["page_statement"]},"association":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["owner","provider","unassociated","ambiguous"]},"entity_name":{"type":"string","nullable":true},"reason":{"type":"string"}}},"evidence":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}},"evidence_sources":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}}},"observed_at":{"type":"string","format":"date-time","nullable":true}}},"maxItems":20},"contacts":{"type":"object","additionalProperties":false,"required":["emails","phones","social"],"properties":{"emails":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["value","source_url"],"properties":{"value":{"type":"string"},"source_url":{"type":"string","format":"uri"},"association":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["owner","provider","unassociated","ambiguous"]},"entity_name":{"type":"string","nullable":true},"reason":{"type":"string"}}},"evidence":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}},"evidence_sources":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}}},"observed_at":{"type":"string","format":"date-time","nullable":true}}},"maxItems":25,"description":"Observed email addresses matching the requested domain or a subdomain. No mailbox verification is performed."},"phones":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["value","source_url"],"properties":{"value":{"type":"string"},"source_url":{"type":"string","format":"uri"},"association":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["owner","provider","unassociated","ambiguous"]},"entity_name":{"type":"string","nullable":true},"reason":{"type":"string"}}},"evidence":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}},"evidence_sources":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}}},"observed_at":{"type":"string","format":"date-time","nullable":true}}},"maxItems":25,"description":"Observed labeled or tel-link numbers. Local numbers are not converted into verified E.164 numbers."},"social":{"type":"object","additionalProperties":false,"required":["linkedin","x","instagram"],"properties":{"linkedin":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["url","source_url"],"properties":{"url":{"type":"string","format":"uri"},"source_url":{"type":"string","format":"uri"},"association":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["owner","provider","unassociated","ambiguous"]},"entity_name":{"type":"string","nullable":true},"reason":{"type":"string"}}},"evidence":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}},"evidence_sources":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}}},"observed_at":{"type":"string","format":"date-time","nullable":true}}},"maxItems":10},"x":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["url","source_url"],"properties":{"url":{"type":"string","format":"uri"},"source_url":{"type":"string","format":"uri"},"association":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["owner","provider","unassociated","ambiguous"]},"entity_name":{"type":"string","nullable":true},"reason":{"type":"string"}}},"evidence":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}},"evidence_sources":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}}},"observed_at":{"type":"string","format":"date-time","nullable":true}}},"maxItems":10},"instagram":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["url","source_url"],"properties":{"url":{"type":"string","format":"uri"},"source_url":{"type":"string","format":"uri"},"association":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["owner","provider","unassociated","ambiguous"]},"entity_name":{"type":"string","nullable":true},"reason":{"type":"string"}}},"evidence":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}},"evidence_sources":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}}},"observed_at":{"type":"string","format":"date-time","nullable":true}}},"maxItems":10}}}}},"pages":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["url","status","http_status","elapsed_ms"],"properties":{"url":{"type":"string","format":"uri"},"status":{"type":"string","description":"ok, an http_<status> code, or a fetch, parsing, safety or time-budget failure code."},"http_status":{"type":"integer","nullable":true,"minimum":100,"maximum":599},"elapsed_ms":{"type":"integer","minimum":0}}},"maxItems":4},"vat_validation":{"type":"object","additionalProperties":false,"required":["status","valid","country_code","vat_number","format_valid","official_name","official_address","checked_at","source","reason","domain_ownership_verified"],"properties":{"status":{"type":"string","enum":["valid","invalid","unavailable","timeout","not_checked","ambiguous"]},"valid":{"type":"boolean","nullable":true},"country_code":{"type":"string","nullable":true},"vat_number":{"type":"string","nullable":true},"format_valid":{"type":"boolean"},"official_name":{"type":"string","nullable":true},"official_address":{"type":"string","nullable":true},"checked_at":{"type":"string","format":"date-time","nullable":true},"source":{"type":"string","enum":["VIES"]},"reason":{"type":"string","nullable":true},"domain_ownership_verified":{"type":"boolean","enum":[false]},"identity_match":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["match","possible_match","mismatch","not_comparable"]},"reason":{"type":"string"},"domain_ownership_verified":{"type":"boolean","enum":[false]}}}},"description":"VIES evidence for a single candidate. A valid result confirms intra-EU VAT registration at query time, not legal company existence or domain ownership. Name and address are returned only when VIES supplies them. GB is not checked by VIES; XI is supported. Full enrichment may return HTTP 200 with unavailable, timeout, not_checked or ambiguous VAT status alongside inspected website data. The dedicated VAT validator returns HTTP 200 only for valid or invalid registration; missing, unsupported or ambiguous candidates yield HTTP 422, and an unavailable or timed-out VIES check yields HTTP 502. An outage never means invalid registration."},"dns":{"type":"object","additionalProperties":false,"required":["domain","resolver","queries","mx","spf","dmarc","providers","limitations","spoofing_risk"],"properties":{"domain":{"type":"string"},"resolver":{"type":"string","format":"uri"},"queries":{"type":"object","additionalProperties":false,"required":["mx","txt","dmarc"],"properties":{"mx":{"type":"object","additionalProperties":false,"required":["status","rcode","dnssec_authenticated","record_count"],"properties":{"status":{"type":"string"},"rcode":{"type":"integer","minimum":0,"nullable":true,"maximum":15},"dnssec_authenticated":{"type":"boolean","nullable":true},"record_count":{"type":"integer","minimum":0},"http_status":{"type":"integer","minimum":100,"maximum":599},"ttl_seconds":{"type":"integer","minimum":0,"nullable":true},"ttl_source":{"type":"string","enum":["answer","negative_soa","unavailable"]}}},"txt":{"type":"object","additionalProperties":false,"required":["status","rcode","dnssec_authenticated","record_count"],"properties":{"status":{"type":"string"},"rcode":{"type":"integer","minimum":0,"nullable":true,"maximum":15},"dnssec_authenticated":{"type":"boolean","nullable":true},"record_count":{"type":"integer","minimum":0},"http_status":{"type":"integer","minimum":100,"maximum":599},"ttl_seconds":{"type":"integer","minimum":0,"nullable":true},"ttl_source":{"type":"string","enum":["answer","negative_soa","unavailable"]}}},"dmarc":{"type":"object","additionalProperties":false,"required":["status","rcode","dnssec_authenticated","record_count"],"properties":{"status":{"type":"string"},"rcode":{"type":"integer","minimum":0,"nullable":true,"maximum":15},"dnssec_authenticated":{"type":"boolean","nullable":true},"record_count":{"type":"integer","minimum":0},"http_status":{"type":"integer","minimum":100,"maximum":599},"ttl_seconds":{"type":"integer","minimum":0,"nullable":true},"ttl_source":{"type":"string","enum":["answer","negative_soa","unavailable"]}}}}},"mx":{"type":"object","additionalProperties":false,"required":["status","records","null_mx","issues"],"properties":{"status":{"type":"string","enum":["missing","unknown","invalid","observed"]},"records":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["priority","exchange"],"properties":{"priority":{"type":"integer","minimum":0,"maximum":65535},"exchange":{"type":"string"}}}},"null_mx":{"type":"boolean","nullable":true},"issues":{"type":"array","items":{"type":"string"}}}},"spf":{"type":"object","additionalProperties":false,"required":["status","records","includes","redirect","all_policy","issues","recursive_evaluation"],"properties":{"status":{"type":"string","enum":["missing","unknown","multiple_invalid","invalid","observed"]},"records":{"type":"array","items":{"type":"string"}},"includes":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["domain","qualifier","macro"],"properties":{"domain":{"type":"string"},"qualifier":{"type":"string","enum":["+","-","~","?"]},"macro":{"type":"boolean"}}}},"redirect":{"type":"string","nullable":true},"all_policy":{"type":"string","nullable":true,"enum":["pass","fail","softfail","neutral",null]},"issues":{"type":"array","items":{"type":"string"}},"recursive_evaluation":{"type":"boolean","enum":[false]},"recursive":{"type":"object","additionalProperties":false,"properties":{"complete":{"type":"boolean"},"mode":{"type":"string","enum":["bounded_policy_graph"]},"sender_evaluation":{"type":"boolean","enum":[false]},"max_depth":{"type":"integer","minimum":0},"max_dns_queries":{"type":"integer","minimum":0},"dns_queries":{"type":"integer","minimum":0},"truncation_reasons":{"type":"array","items":{"type":"string"}},"lookup_analysis":{"type":"object","additionalProperties":false,"properties":{"rfc7208_limit":{"type":"integer","enum":[10]},"inspected_potential_terms":{"type":"integer","minimum":0},"unexpanded_address_mechanisms":{"type":"integer","minimum":0},"status":{"type":"string","enum":["potential_limit_exceeded","incomplete","within_inspected_graph"]},"void_dns_queries":{"type":"integer","minimum":0},"void_lookup_limit_potentially_exceeded":{"type":"boolean"},"note":{"type":"string"}}},"nodes":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"domain":{"type":"string"},"status":{"type":"string"},"records":{"type":"array","items":{"type":"string"}},"issues":{"type":"array","items":{"type":"string"}},"dns_status":{"type":"string"},"ttl_seconds":{"type":"integer","minimum":0,"nullable":true}}}},"edges":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"from":{"type":"string"},"to":{"type":"string"},"type":{"type":"string","enum":["include","redirect"]},"qualifier":{"type":"string","enum":["+","-","~","?"]},"depth":{"type":"integer","minimum":0},"path":{"type":"array","items":{"type":"string"}},"authorizing_path":{"type":"boolean"},"status":{"type":"string"},"conditional_authorization":{"type":"boolean"}}}}},"description":"Bounded include/redirect graph with explicit incomplete coverage. Positive reference paths can indicate providers; no sender-IP check or RFC SPF result is calculated. Potential DNS terms are distinct from unique resolver requests."},"lookup_terms":{"type":"integer","minimum":0}},"description":"Exact-domain SPF record observations plus optional bounded recursive include/redirect inspection. Direct fields retain their original meaning; recursive_evaluation=false means sender authorization was not evaluated."},"dmarc":{"type":"object","additionalProperties":false,"required":["status","records","policy","pct","issues","scope","organizational_fallback_checked"],"properties":{"status":{"type":"string","enum":["missing","unknown","multiple_invalid","invalid","observed"]},"records":{"type":"array","items":{"type":"string"}},"policy":{"type":"string","nullable":true,"enum":["none","quarantine","reject",null]},"pct":{"type":"integer","nullable":true,"minimum":0,"maximum":100},"issues":{"type":"array","items":{"type":"string"}},"scope":{"type":"string","enum":["exact_domain_only"]},"organizational_fallback_checked":{"type":"boolean"},"effective":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["observed","missing","unknown"]},"policy":{"type":"string","nullable":true,"enum":["none","quarantine","reject",null]},"published_policy":{"type":"string","nullable":true,"enum":["none","quarantine","reject",null]},"scope":{"type":"string","enum":["exact","inherited","public_suffix","none","unknown"]},"source_domain":{"type":"string","nullable":true},"source_name":{"type":"string","nullable":true},"policy_tag":{"type":"string","nullable":true,"enum":["p","sp","np",null]},"testing":{"type":"boolean"},"author_domain_exists":{"type":"boolean","nullable":true},"organizational_domain":{"type":"string","nullable":true},"organizational_domain_alignment_verified":{"type":"boolean","enum":[false]}},"description":"Policy discovered under RFC 9989. policy reflects the one-level t=y reduction when applicable; published_policy preserves p/sp/np before that reduction. This is a requested policy, not proof of delivered-mail enforcement or aligned SPF/DKIM."},"discovery":{"type":"object","additionalProperties":false,"properties":{"method":{"type":"string","enum":["rfc9989_dns_tree_walk"]},"complete":{"type":"boolean"},"max_queries":{"type":"integer","enum":[8]},"registrable_domain":{"type":"string","nullable":true},"queries":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"domain":{"type":"string"},"name":{"type":"string"},"dns_status":{"type":"string"},"policy_status":{"type":"string"},"records":{"type":"array","items":{"type":"string"}},"policy":{"type":"string","nullable":true,"enum":["none","quarantine","reject",null]},"psd":{"type":"string","enum":["y","n","u"]},"issues":{"type":"array","items":{"type":"string"}},"ttl_seconds":{"type":"integer","minimum":0,"nullable":true}}}}},"description":"Exact policy or bounded DNS tree walk with psd flags. registrable_domain is independent ICANN+PRIVATE Public Suffix List metadata; policy discovery itself does not rely on the PSL."},"subdomain_policy":{"type":"string","nullable":true,"enum":["none","quarantine","reject",null]},"nonexistent_policy":{"type":"string","nullable":true,"enum":["none","quarantine","reject",null]},"psd":{"type":"string","enum":["y","n","u"]},"testing":{"type":"boolean"}},"description":"Historical fields describe the exact _dmarc hostname. effective and discovery expose RFC 9989 inherited or suffix policy and coverage. pct is retained as an obsolete informational field and is not used for current enforcement calculations."},"providers":{"type":"object","additionalProperties":false,"required":["inbound","outbound"],"properties":{"inbound":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["id","name","match_basis","evidence"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"match_basis":{"type":"string","enum":["published_dns_pattern"]},"evidence":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["source","value","role"],"properties":{"source":{"type":"string","enum":["mx","spf_include","spf_redirect"]},"value":{"type":"string"},"role":{"type":"string","enum":["receiving_service","bounce_handling","sending_policy_reference"]},"parent_domain":{"type":"string"},"depth":{"type":"integer","minimum":0},"path":{"type":"array","items":{"type":"string"}},"authorization":{"type":"string","enum":["conditional_positive_policy_path"]},"sender_ip_verified":{"type":"boolean","enum":[false]}}}}},"description":"An observed DNS pattern, not proof of an active subscription, actual use, ownership or successful email delivery."}},"outbound":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["id","name","match_basis","evidence"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"match_basis":{"type":"string","enum":["published_dns_pattern"]},"evidence":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["source","value","role"],"properties":{"source":{"type":"string","enum":["mx","spf_include","spf_redirect"]},"value":{"type":"string"},"role":{"type":"string","enum":["receiving_service","bounce_handling","sending_policy_reference"]},"parent_domain":{"type":"string"},"depth":{"type":"integer","minimum":0},"path":{"type":"array","items":{"type":"string"}},"authorization":{"type":"string","enum":["conditional_positive_policy_path"]},"sender_ip_verified":{"type":"boolean","enum":[false]}}}}},"description":"An observed DNS pattern, not proof of an active subscription, actual use, ownership or successful email delivery."}}}},"limitations":{"type":"array","items":{"type":"string"}},"spoofing_risk":{"type":"object","additionalProperties":false,"required":["status","policy","message"],"properties":{"status":{"type":"string","enum":["monitoring_only","enforcement_requested","invalid_policy","no_exact_domain_policy","unknown"]},"policy":{"type":"string","nullable":true,"enum":["none","quarantine","reject",null]},"message":{"type":"string"}}},"observed_at":{"type":"string","format":"date-time"},"cache_ttl_seconds":{"type":"integer","minimum":0,"maximum":3600,"description":"Minimum TTL of all inspected DNS dependencies, capped at 3600 seconds. Missing TTL uses 60 seconds; incomplete or failed inspection disables reuse with 0."},"query_details":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string"},"type":{"type":"integer","minimum":0},"status":{"type":"string"},"rcode":{"type":"integer","minimum":0,"nullable":true,"maximum":15},"dnssec_authenticated":{"type":"boolean","nullable":true},"record_count":{"type":"integer","minimum":0},"http_status":{"type":"integer","minimum":100,"maximum":599},"ttl_seconds":{"type":"integer","minimum":0,"nullable":true},"ttl_source":{"type":"string","enum":["answer","negative_soa","unavailable"]}}}},"dns_queries":{"type":"integer","minimum":0,"maximum":20}}},"engine_version":{"type":"string"},"quality":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["complete","partial"]},"observed_fields":{"type":"integer","minimum":0},"field_status":{"type":"object","additionalProperties":false,"properties":{"legal_name":{"type":"string"},"vat":{"type":"string"},"emails":{"type":"string"},"phones":{"type":"string"},"address":{"type":"string"},"email_provider":{"type":"string"}}},"evaluated_at":{"type":"string","format":"date-time","nullable":true},"interpretation":{"type":"string"}}},"module_cache":{"type":"object","additionalProperties":false,"properties":{"web":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["hit","miss","bypass","coalesced"]},"stored_at":{"type":"string","format":"date-time","nullable":true},"expires_at":{"type":"string","format":"date-time","nullable":true},"ttl_seconds":{"type":"integer","minimum":0},"reason":{"type":"string"}},"required":["status"]},"dns":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["hit","miss","bypass","coalesced"]},"stored_at":{"type":"string","format":"date-time","nullable":true},"expires_at":{"type":"string","format":"date-time","nullable":true},"ttl_seconds":{"type":"integer","minimum":0},"reason":{"type":"string"}},"required":["status"]},"vies":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["hit","miss","bypass","coalesced"]},"stored_at":{"type":"string","format":"date-time","nullable":true},"expires_at":{"type":"string","format":"date-time","nullable":true},"ttl_seconds":{"type":"integer","minimum":0},"reason":{"type":"string"}},"required":["status"]}}},"addresses":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"value":{"type":"string"},"kind":{"type":"string"},"source_url":{"type":"string"},"components":{"type":"object","additionalProperties":false,"properties":{"street_address":{"type":"string","nullable":true},"postal_code":{"type":"string","nullable":true},"locality":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"country":{"type":"string","nullable":true}},"nullable":true},"association":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["owner","provider","unassociated","ambiguous"]},"entity_name":{"type":"string","nullable":true},"reason":{"type":"string"}}},"evidence":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}},"evidence_sources":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}}}}}},"domain_context":{"type":"object","additionalProperties":false,"properties":{"requested_hostname":{"type":"string"},"corporate_domain":{"type":"string","nullable":true},"scope":{"type":"string"}}},"extraction_issues":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"code":{"type":"string"},"source_url":{"type":"string"}}}},"cache":{"type":"object","additionalProperties":false,"required":["status","ttl_seconds","stored_at","expires_at"],"properties":{"status":{"type":"string","enum":["hit","miss","bypass"]},"ttl_seconds":{"type":"integer","enum":[0,86400]},"stored_at":{"type":"string","format":"date-time","nullable":true},"expires_at":{"type":"string","format":"date-time","nullable":true}},"description":"Transparent reuse metadata. A MISS records a best-effort cache write, not confirmation that the platform retained the entry. On a HIT, retrieved_at remains the original observation time. VIES results are never cached."}},"description":"Completed inspection, possibly partial. success does not mean a company or VAT is valid. The web fields and dns can be omitted if a module fails; inspect warnings, timing.partial and individual statuses."},"examples":{"syntheticInspection":{"summary":"Complete synthetic contract example","description":"Generated from the Worker with mocked upstream services. These values are not claims about a real company or a registered VAT number. Input domain examples are real websites, but their current results are not asserted here.","value":{"success":true,"product":"full_enrich","domain":"example.com","retrieved_at":"2026-10-16T12:00:00Z","engine_version":"1.5.0","legal_entity":{"status":"found","name":"ACME GmbH","country_hint":null,"source_url":"https://example.com/","candidates":[{"name":"ACME GmbH","source_url":"https://example.com/","association":{"status":"owner","entity_name":"ACME GmbH","reason":"legal_name_label"},"evidence":{"source_url":"https://example.com/","excerpt":"Company name: ACME GmbH","method":"visible_text","observed_at":"2026-10-17T23:24:57.075Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":1},"evidence_sources":[{"source_url":"https://example.com/","excerpt":"Company name: ACME GmbH","method":"visible_text","observed_at":"2026-10-17T23:24:57.075Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":1},{"source_url":"https://example.com/legal","excerpt":"Company name: ACME GmbH","method":"visible_text","observed_at":"2026-10-17T23:24:57.075Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":1},{"source_url":"https://example.com/about","excerpt":"Company name: ACME GmbH","method":"visible_text","observed_at":"2026-10-17T23:24:57.076Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":1},{"source_url":"https://example.com/privacy","excerpt":"Company name: ACME GmbH","method":"visible_text","observed_at":"2026-10-17T23:24:57.077Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":1}]}],"evidence":{"source_url":"https://example.com/","excerpt":"Company name: ACME GmbH","method":"visible_text","observed_at":"2026-10-17T23:24:57.075Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":1},"address":null,"address_status":"not_found"},"tax_identifiers":[{"kind":"eu_vat","country_code":"DE","value":"DE123456789","format_valid":true,"source_url":"https://example.com/","verification":"structure_only","identifier_type":null,"evidence_label":"VAT","evidence":{"label":"VAT","index":24,"countrySource":"prefix","source_url":"https://example.com/","excerpt":"VAT: DE123456789","method":"visible_text","observed_at":"2026-10-17T23:24:57.075Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":2},"association":{"status":"owner","entity_name":"ACME GmbH","reason":"legal_name_label"},"evidence_sources":[{"label":"VAT","index":24,"countrySource":"prefix","source_url":"https://example.com/","excerpt":"VAT: DE123456789","method":"visible_text","observed_at":"2026-10-17T23:24:57.075Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":2},{"label":"VAT","index":24,"countrySource":"prefix","source_url":"https://example.com/legal","excerpt":"VAT: DE123456789","method":"visible_text","observed_at":"2026-10-17T23:24:57.075Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":2},{"label":"VAT","index":24,"countrySource":"prefix","source_url":"https://example.com/about","excerpt":"VAT: DE123456789","method":"visible_text","observed_at":"2026-10-17T23:24:57.076Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":2},{"label":"VAT","index":24,"countrySource":"prefix","source_url":"https://example.com/privacy","excerpt":"VAT: DE123456789","method":"visible_text","observed_at":"2026-10-17T23:24:57.077Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":2}]}],"directors":[{"name":"Erika Musterfrau","source_url":"https://example.com/","verification":"page_statement","association":{"status":"owner","entity_name":"ACME GmbH","reason":"legal_name_label"},"evidence":{"source_url":"https://example.com/","excerpt":"Geschäftsführer: Erika Musterfrau","method":"visible_text","observed_at":"2026-10-17T23:24:57.075Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":3},"evidence_sources":[{"source_url":"https://example.com/","excerpt":"Geschäftsführer: Erika Musterfrau","method":"visible_text","observed_at":"2026-10-17T23:24:57.075Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":3},{"source_url":"https://example.com/legal","excerpt":"Geschäftsführer: Erika Musterfrau","method":"visible_text","observed_at":"2026-10-17T23:24:57.075Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":3},{"source_url":"https://example.com/about","excerpt":"Geschäftsführer: Erika Musterfrau","method":"visible_text","observed_at":"2026-10-17T23:24:57.076Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":3},{"source_url":"https://example.com/privacy","excerpt":"Geschäftsführer: Erika Musterfrau","method":"visible_text","observed_at":"2026-10-17T23:24:57.077Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":3}]}],"company_registers":[{"value":"HRB 12345","context":"Amtsgericht Berlin HRB 12345","source_url":"https://example.com/","verification":"page_statement","association":{"status":"owner","entity_name":"ACME GmbH","reason":"legal_name_label"},"evidence":{"source_url":"https://example.com/","excerpt":"Amtsgericht Berlin HRB 12345","method":"visible_text","observed_at":"2026-10-17T23:24:57.075Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":4},"evidence_sources":[{"source_url":"https://example.com/","excerpt":"Amtsgericht Berlin HRB 12345","method":"visible_text","observed_at":"2026-10-17T23:24:57.075Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":4},{"source_url":"https://example.com/legal","excerpt":"Amtsgericht Berlin HRB 12345","method":"visible_text","observed_at":"2026-10-17T23:24:57.075Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":4},{"source_url":"https://example.com/about","excerpt":"Amtsgericht Berlin HRB 12345","method":"visible_text","observed_at":"2026-10-17T23:24:57.076Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":4},{"source_url":"https://example.com/privacy","excerpt":"Amtsgericht Berlin HRB 12345","method":"visible_text","observed_at":"2026-10-17T23:24:57.077Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":4}]}],"contacts":{"emails":[{"value":"sales@example.com","source_url":"https://example.com/","evidence":{"source_url":"https://example.com/","excerpt":"mailto:sales@example.com","method":"mailto_link","observed_at":"2026-10-17T23:24:57.075Z","verification":"page_statement","role":"unassociated","entity_name":null},"evidence_sources":[{"source_url":"https://example.com/","excerpt":"mailto:sales@example.com","method":"mailto_link","observed_at":"2026-10-17T23:24:57.075Z","verification":"page_statement","role":"unassociated","entity_name":null},{"source_url":"https://example.com/legal","excerpt":"mailto:sales@example.com","method":"mailto_link","observed_at":"2026-10-17T23:24:57.075Z","verification":"page_statement","role":"unassociated","entity_name":null},{"source_url":"https://example.com/about","excerpt":"mailto:sales@example.com","method":"mailto_link","observed_at":"2026-10-17T23:24:57.076Z","verification":"page_statement","role":"unassociated","entity_name":null},{"source_url":"https://example.com/privacy","excerpt":"mailto:sales@example.com","method":"mailto_link","observed_at":"2026-10-17T23:24:57.077Z","verification":"page_statement","role":"unassociated","entity_name":null}]}],"phones":[],"social":{"linkedin":[],"x":[],"instagram":[]}},"addresses":[],"domain_context":{"requested_hostname":"example.com","corporate_domain":"example.com","scope":"registrable_domain_including_private_suffixes"},"extraction_issues":[],"pages":[{"url":"https://example.com/","status":"ok","http_status":200,"elapsed_ms":10},{"url":"https://example.com/legal","status":"ok","http_status":200,"elapsed_ms":10},{"url":"https://example.com/about","status":"ok","http_status":200,"elapsed_ms":10},{"url":"https://example.com/privacy","status":"ok","http_status":200,"elapsed_ms":10}],"vat_validation":{"status":"valid","valid":true,"country_code":"DE","vat_number":"123456789","format_valid":true,"official_name":"ACME GmbH","official_address":"Synthetic fixture address","checked_at":"2026-10-16T12:00:00Z","source":"VIES","reason":"registered_for_intra_eu_vat","domain_ownership_verified":false,"identity_match":{"status":"match","reason":"normalized_exact_match","domain_ownership_verified":false}},"dns":{"domain":"example.com","resolver":"https://cloudflare-dns.com/dns-query","observed_at":"2026-10-17T23:24:57.064Z","cache_ttl_seconds":300,"queries":{"mx":{"status":"ok","rcode":0,"dnssec_authenticated":false,"ttl_seconds":300,"ttl_source":"answer","record_count":1},"txt":{"status":"ok","rcode":0,"dnssec_authenticated":false,"ttl_seconds":300,"ttl_source":"answer","record_count":1},"dmarc":{"status":"ok","rcode":0,"dnssec_authenticated":false,"ttl_seconds":300,"ttl_source":"answer","record_count":1}},"query_details":[{"name":"example.com","type":15,"status":"ok","rcode":0,"dnssec_authenticated":false,"ttl_seconds":300,"ttl_source":"answer","record_count":1},{"name":"example.com","type":16,"status":"ok","rcode":0,"dnssec_authenticated":false,"ttl_seconds":300,"ttl_source":"answer","record_count":1},{"name":"_dmarc.example.com","type":16,"status":"ok","rcode":0,"dnssec_authenticated":false,"ttl_seconds":300,"ttl_source":"answer","record_count":1},{"name":"_spf.google.com","type":16,"status":"ok","rcode":0,"dnssec_authenticated":false,"ttl_seconds":300,"ttl_source":"answer","record_count":1},{"name":"sendgrid.net","type":16,"status":"ok","rcode":0,"dnssec_authenticated":false,"ttl_seconds":300,"ttl_source":"answer","record_count":1}],"dns_queries":5,"mx":{"status":"observed","records":[{"priority":10,"exchange":"aspmx.l.google.com"}],"null_mx":false,"issues":[]},"spf":{"status":"observed","records":["v=spf1 include:_spf.google.com include:sendgrid.net -all"],"includes":[{"domain":"_spf.google.com","qualifier":"+","macro":false},{"domain":"sendgrid.net","qualifier":"+","macro":false}],"redirect":null,"all_policy":"fail","issues":[],"recursive_evaluation":false,"lookup_terms":2,"recursive":{"complete":true,"mode":"bounded_policy_graph","sender_evaluation":false,"max_depth":5,"max_dns_queries":10,"dns_queries":2,"truncation_reasons":[],"lookup_analysis":{"rfc7208_limit":10,"inspected_potential_terms":2,"unexpanded_address_mechanisms":0,"status":"within_inspected_graph","void_dns_queries":0,"void_lookup_limit_potentially_exceeded":false,"note":"The RFC limit counts evaluated include/a/mx/ptr/exists/redirect terms, including repeated terms, not unique HTTP queries. No sender IP or SMTP identity was evaluated; counts are graph observations, not an SPF pass/permerror result."},"nodes":[{"domain":"example.com","status":"observed","records":["v=spf1 include:_spf.google.com include:sendgrid.net -all"],"issues":[]},{"domain":"_spf.google.com","status":"observed","records":["v=spf1 ip4:192.0.2.1 -all"],"issues":[],"dns_status":"ok","ttl_seconds":300},{"domain":"sendgrid.net","status":"observed","records":["v=spf1 ip4:192.0.2.1 -all"],"issues":[],"dns_status":"ok","ttl_seconds":300}],"edges":[{"from":"example.com","to":"_spf.google.com","type":"include","qualifier":"+","depth":1,"path":["example.com","_spf.google.com"],"authorizing_path":true,"status":"observed","conditional_authorization":true},{"from":"example.com","to":"sendgrid.net","type":"include","qualifier":"+","depth":1,"path":["example.com","sendgrid.net"],"authorizing_path":true,"status":"observed","conditional_authorization":true}]}},"dmarc":{"status":"observed","records":["v=DMARC1; p=none"],"policy":"none","pct":100,"issues":[],"subdomain_policy":null,"nonexistent_policy":null,"psd":"u","testing":false,"scope":"exact_domain_only","organizational_fallback_checked":false,"effective":{"status":"observed","policy":"none","published_policy":"none","scope":"exact","source_domain":"example.com","source_name":"_dmarc.example.com","policy_tag":"p","testing":false,"author_domain_exists":true,"organizational_domain":null,"organizational_domain_alignment_verified":false},"discovery":{"method":"rfc9989_dns_tree_walk","complete":true,"max_queries":8,"registrable_domain":"example.com","queries":[{"domain":"example.com","name":"_dmarc.example.com","dns_status":"ok","policy_status":"observed","records":["v=DMARC1; p=none"],"policy":"none","psd":"u","issues":[],"ttl_seconds":300}]}},"providers":{"inbound":[{"id":"google_workspace","name":"Google Workspace","match_basis":"published_dns_pattern","evidence":[{"source":"mx","value":"aspmx.l.google.com","role":"receiving_service"}]}],"outbound":[{"id":"google_workspace","name":"Google Workspace","match_basis":"published_dns_pattern","evidence":[{"source":"spf_include","value":"_spf.google.com","parent_domain":"example.com","depth":1,"path":["example.com","_spf.google.com"],"role":"sending_policy_reference","authorization":"conditional_positive_policy_path","sender_ip_verified":false}]},{"id":"sendgrid","name":"SendGrid","match_basis":"published_dns_pattern","evidence":[{"source":"spf_include","value":"sendgrid.net","parent_domain":"example.com","depth":1,"path":["example.com","sendgrid.net"],"role":"sending_policy_reference","authorization":"conditional_positive_policy_path","sender_ip_verified":false}]}]},"limitations":["DNS observations identify configuration references, not active subscriptions or delivery guarantees.","SPF include/redirect inspection is a bounded policy graph, not sender-IP authorization. Macros and address mechanisms are not expanded; consult recursive coverage and lookup_analysis.","DMARC policy discovery follows RFC 9989 with at most eight TXT queries. DKIM/SPF identifier alignment and actual receiver enforcement are not evaluated.","The bundled Public Suffix List includes private suffixes for registrant-boundary metadata; RFC 9989 policy discovery uses DNS, not the PSL.","Missing MX does not rule out address-record fallback. Transient DNS errors remain unknown. Legacy pct is reported but is obsolete under RFC 9989."],"spoofing_risk":{"status":"monitoring_only","policy":"none","message":"The published DMARC policy requests monitoring without rejection or quarantine."}},"warnings":[],"quality":{"status":"complete","observed_fields":4,"field_status":{"legal_name":"found","vat":"valid","emails":"observed","phones":"not_found","address":"not_found","email_provider":"observed"},"evaluated_at":"2026-10-17T23:24:57.093Z","interpretation":"Coverage describes observed fields and completed checks, not a probability of correctness or proof of ownership."},"module_cache":{"web":{"status":"bypass","stored_at":null,"expires_at":null,"ttl_seconds":0},"dns":{"status":"bypass","stored_at":null,"expires_at":null,"ttl_seconds":0},"vies":{"status":"bypass","reason":"official_validation_is_live"}},"timing":{"budget_ms":4000,"elapsed_ms":20,"partial":false,"subrequests":12},"cache":{"status":"bypass","ttl_seconds":0,"stored_at":null,"expires_at":null}}},"recordedObservation":{"summary":"Complete recorded response from 2026-10-16T18:31:48.920Z","description":"Historical local workerd observation using live upstreams, for /v1/full-enrich?domain=www.futuroinformatica.com. This is not a fresh response, a result for the default parameter unless it matches that path, or evidence of a deployed marketplace. Cache metadata was added after this observation.","value":{"success":true,"product":"full_enrich","domain":"futuroinformatica.com","retrieved_at":"2026-10-16T18:31:48.205Z","legal_entity":{"status":"found","name":"Futuro Informática Profesional, S.L.","country_hint":null,"source_url":"https://www.futuroinformatica.com/aviso-legal.html","candidates":[{"name":"Futuro Informática Profesional, S.L.","source_url":"https://www.futuroinformatica.com/aviso-legal.html"}]},"tax_identifiers":[{"kind":"local_tax_id","country_code":"ES","value":"ESB92588243","format_valid":true,"source_url":"https://www.futuroinformatica.com/aviso-legal.html","verification":"structure_only","identifier_type":null,"evidence_label":"CIF"}],"directors":[],"company_registers":[],"contacts":{"emails":[{"value":"info@futuroinformatica.com","source_url":"https://www.futuroinformatica.com/aviso-legal.html"},{"value":"soporte@futuroinformatica.com","source_url":"https://www.futuroinformatica.com/aviso-legal.html"}],"phones":[{"value":"+34951464351","source_url":"https://www.futuroinformatica.com/aviso-legal.html"},{"value":"+34952051028","source_url":"https://www.futuroinformatica.com/aviso-legal.html"},{"value":"9514643515","source_url":"https://www.futuroinformatica.com/aviso-legal.html"},{"value":"952051028","source_url":"https://www.futuroinformatica.com/aviso-legal.html"},{"value":"951464351","source_url":"https://www.futuroinformatica.com/aviso-legal.html"}],"social":{"linkedin":[],"x":[],"instagram":[]}},"pages":[{"url":"https://www.futuroinformatica.com/legal","status":"http_404","http_status":404,"elapsed_ms":369},{"url":"https://www.futuroinformatica.com/","status":"parse_budget_exceeded","http_status":200,"elapsed_ms":492},{"url":"https://www.futuroinformatica.com/aviso-legal.html","status":"ok","http_status":200,"elapsed_ms":73},{"url":"https://www.futuroinformatica.com/contacto.html","status":"parse_budget_exceeded","http_status":200,"elapsed_ms":153}],"vat_validation":{"status":"not_checked","valid":null,"country_code":null,"vat_number":null,"format_valid":false,"official_name":null,"official_address":null,"checked_at":null,"source":"VIES","reason":"no_eu_vat_detected","domain_ownership_verified":false},"dns":{"domain":"futuroinformatica.com","resolver":"https://cloudflare-dns.com/dns-query","queries":{"mx":{"status":"ok","rcode":0,"dnssec_authenticated":false,"record_count":1},"txt":{"status":"ok","rcode":0,"dnssec_authenticated":false,"record_count":5},"dmarc":{"status":"ok","rcode":0,"dnssec_authenticated":false,"record_count":1}},"mx":{"status":"observed","records":[{"priority":10,"exchange":"mail.nominalia.com"}],"null_mx":false,"issues":[]},"spf":{"status":"observed","records":["v=spf1 include:spf.mailjet.com include:futuroinformatica.ip-zone.com include:spf.webapps.net ~all"],"includes":[{"domain":"spf.mailjet.com","qualifier":"+","macro":false},{"domain":"futuroinformatica.ip-zone.com","qualifier":"+","macro":false},{"domain":"spf.webapps.net","qualifier":"+","macro":false}],"redirect":null,"all_policy":"softfail","issues":[],"recursive_evaluation":false},"dmarc":{"status":"observed","records":["v=DMARC1; p=none; rua=mailto:ssalvia@futuroinformatica.com; ruf=mailto:ssalvia@futuroinformatica.com; pct=100; ri=86400"],"policy":"none","pct":100,"issues":[],"scope":"exact_domain_only","organizational_fallback_checked":false},"providers":{"inbound":[],"outbound":[]},"limitations":["DNS observations are configuration signals, not proof of active subscriptions or email delivery.","Only the exact requested domain and its _dmarc name are queried; parent policies, sending subdomains, DKIM and nested SPF records are not inspected.","SPF and DMARC checks are limited syntax heuristics; sender authorization and policy enforcement are not fully evaluated.","Missing MX does not rule out address-record fallback. DNS errors remain unknown; a missing _dmarc name is reported only when the base domain resolves."],"spoofing_risk":{"status":"monitoring_only","policy":"none","message":"The published DMARC policy requests monitoring without rejection or quarantine."}},"warnings":[{"code":"partial_web_coverage","message":"Some pages were unavailable, blocked, oversized or outside the time budget."}],"timing":{"budget_ms":4000,"elapsed_ms":660,"partial":true,"subrequests":9}}}}}}},"400":{"description":"Invalid domain, VAT, unsupported/duplicate query parameter, or missing required input. Error codes include invalid_domain, invalid_vat, invalid_parameter and domain_required.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","error"],"properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"example":{"success":false,"error":{"code":"domain_required","message":"A public domain is required unless a VAT number is supplied to the validator."}}}}},"401":{"description":"JoJ consumers authenticate with their subscribed consumer key at the gateway. An origin authentication rejection can indicate provider-side configuration repair. Gateway authentication errors may use a platform-controlled response body different from this Worker error schema.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","error"],"properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"example":{"success":false,"error":{"code":"unauthorized","message":"A valid API key or gateway secret is required."}}}}},"402":{"description":"JoJ gateway payment or quota refusal, including exhausted fixed-plan quota or a plan that does not cover an endpoint object. The gateway controls its response format; this is not a Worker-generated inspection result."},"404":{"description":"The requested endpoint does not exist.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","error"],"properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"example":{"success":false,"error":{"code":"not_found","message":"The requested endpoint does not exist."}}}}},"405":{"description":"The endpoint accepts GET only.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","error"],"properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"example":{"success":false,"error":{"code":"method_not_allowed","message":"Use GET for this endpoint."}}}}},"414":{"description":"The complete request URL exceeds 4,096 characters.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","error"],"properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"example":{"success":false,"error":{"code":"request_too_large","message":"The request URL is too long."}}}}},"429":{"description":"JoJ API may reject a request when the subscription rate limit is exceeded. Gateway response bodies and headers are controlled by JoJ API and may differ from Worker-generated errors. Fixed-plan quota exhaustion is a gateway HTTP 402."},"500":{"description":"An unexpected origin error prevented completion.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","error"],"properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"example":{"success":false,"error":{"code":"internal_error","message":"The request could not be completed."}}}}},"502":{"description":"The required upstream service or domain could not be inspected. A domain endpoint needs at least one successful relevant module; full and legal require an accessible webpage. The VAT validator requires a definitive VIES answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","error"],"properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"example":{"success":false,"error":{"code":"upstream_unavailable","message":"The requested domain could not be inspected within the available budget."}}}}},"503":{"description":"Provider-side authentication is missing or invalid. Error codes: authentication_not_configured or configuration_error.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","error"],"properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"example":{"success":false,"error":{"code":"authentication_not_configured","message":"Configure an authentication secret or explicitly enable public mode."}}}}}},"parameters":[{"name":"domain","in":"query","description":"Public corporate domain or website URL. The hostname is inspected over HTTPS from its root; supplied paths and queries are not crawled as input targets. Credentials, IP literals, fragments, whitespace and nonstandard ports are rejected. Required for this endpoint.","required":true,"schema":{"type":"string","example":"www.futuroinformatica.com"}},{"name":"fresh","in":"query","description":"Set true to bypass result and module caches. VIES validation always remains live. Complete web observations may be reused for six hours and DNS dependencies only within their observed TTL (at most one hour). Legacy result-cache deployments may retain complete non-VIES snapshots for up to 24 hours. Inspect cache, module_cache and field observation dates.","required":false,"schema":{"type":"boolean","example":false,"default":false}}]}},"/v1/eu-vat-validator":{"get":{"operationId":"get_v1_eu_vat_validator","summary":"Validate an EU VAT number through official live VIES","description":"Use this tool whenever the user asks to verify an EU VAT number through official live VIES or find a VAT published by a company website. Send a country-prefixed vat for a direct check or domain for source-backed discovery. vat takes precedence when both are supplied; a direct check does not inspect the website. Review status, valid, official_name, official_address, checked_at and available identity_match. Website VAT candidates include source excerpts and association evidence. A matching legal name is a review signal, not proof of domain ownership. EU and XI identifiers are eligible; GB VAT is not checked in VIES. Definitive valid or invalid registration returns 200; no eligible unambiguous candidate returns 422; required VIES failure returns 502. Never convert an outage into invalid registration. Production caching: complete web observations up to 6h; complete DNS uses minimum observed TTL, capped at 1h. Read module_cache and source dates. fresh=true bypasses reads/writes. VIES stays live. Legacy 24h complete-response caching applies only with module caching disabled.\n\nJoJ API handles consumer authentication, plan quotas and metering. Every completed HTTP 200 inspection, including a partial result or cache hit, consumes one Credit and one included Result. Only Credits has nonzero unit pricing; Results has no additional fee. Errors report zero units. The gateway generates consumer-facing per-object usage and quota headers. Internal usage and error details are removed; the gateway may expose its own non-billable response marker.","tags":["Business"],"responses":{"200":{"description":"Completed inspection. Values are evidence with source and status fields, not proof of domain ownership. Empty fields and partial secondary modules may occur. For the VAT-only endpoint, inspect valid or invalid registration.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","product","domain","retrieved_at","warnings","timing","vat_validation"],"properties":{"success":{"type":"boolean","enum":[true]},"product":{"type":"string","enum":["eu_vat_validator"]},"domain":{"type":"string","nullable":true},"retrieved_at":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"timing":{"type":"object","additionalProperties":false,"required":["budget_ms","elapsed_ms","partial","subrequests"],"properties":{"budget_ms":{"type":"integer","enum":[4000]},"elapsed_ms":{"type":"integer","minimum":0},"partial":{"type":"boolean"},"subrequests":{"type":"integer","minimum":0},"origin_elapsed_ms":{"type":"integer","minimum":0,"description":"Duration of the original inspection, present on a cache hit."},"origin_subrequests":{"type":"integer","minimum":0,"description":"Outbound requests made by the original cached inspection."}},"description":"The 4,000 ms work budget is not an end-to-end latency guarantee. Partial results are explicitly identified."},"legal_entity":{"type":"object","additionalProperties":false,"required":["status","name","country_hint","source_url","candidates"],"properties":{"status":{"type":"string","enum":["found","ambiguous","not_found","not_checked"]},"name":{"type":"string","nullable":true},"country_hint":{"type":"string","description":"Country hint inferred from the website suffix, not verified domicile.","nullable":true},"source_url":{"type":"string","format":"uri","nullable":true},"candidates":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["name","source_url"],"properties":{"name":{"type":"string"},"source_url":{"type":"string","format":"uri"},"association":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["owner","provider","unassociated","ambiguous"]},"entity_name":{"type":"string","nullable":true},"reason":{"type":"string"}}},"evidence":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}},"evidence_sources":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}}},"observed_at":{"type":"string","format":"date-time","nullable":true}}},"maxItems":20},"evidence":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}},"nullable":true},"address":{"type":"string","nullable":true},"address_status":{"type":"string"}},"description":"Legal names observed on fetched pages. Multiple candidates leave name null. These are not official registry checks."},"tax_identifiers":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["kind","country_code","value","format_valid","source_url","verification","identifier_type","evidence_label"],"properties":{"kind":{"type":"string","enum":["eu_vat","local_tax_id","uk_company_number","company_register"]},"country_code":{"type":"string"},"value":{"type":"string"},"format_valid":{"type":"boolean"},"source_url":{"type":"string","format":"uri","nullable":true},"verification":{"type":"string","enum":["structure_only"]},"identifier_type":{"type":"string","nullable":true},"evidence_label":{"type":"string","nullable":true},"association":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["owner","provider","unassociated","ambiguous"]},"entity_name":{"type":"string","nullable":true},"reason":{"type":"string"}}},"evidence":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}},"evidence_sources":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}}},"observed_at":{"type":"string","format":"date-time","nullable":true}},"description":"A labeled identifier matching a supported national structure. Structure checks do not establish registration, ownership, checksum validity or company status."},"maxItems":32},"directors":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["name","source_url","verification"],"properties":{"name":{"type":"string"},"source_url":{"type":"string","format":"uri"},"verification":{"type":"string","enum":["page_statement"]},"association":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["owner","provider","unassociated","ambiguous"]},"entity_name":{"type":"string","nullable":true},"reason":{"type":"string"}}},"evidence":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}},"evidence_sources":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}}},"observed_at":{"type":"string","format":"date-time","nullable":true}},"description":"A director or representative statement extracted from the page; it can contain multiple names and is not registry verified."},"maxItems":20},"company_registers":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["value","context","source_url","verification"],"properties":{"value":{"type":"string"},"context":{"type":"string"},"source_url":{"type":"string","format":"uri"},"verification":{"type":"string","enum":["page_statement"]},"association":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["owner","provider","unassociated","ambiguous"]},"entity_name":{"type":"string","nullable":true},"reason":{"type":"string"}}},"evidence":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}},"evidence_sources":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}}},"observed_at":{"type":"string","format":"date-time","nullable":true}}},"maxItems":20},"contacts":{"type":"object","additionalProperties":false,"required":["emails","phones","social"],"properties":{"emails":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["value","source_url"],"properties":{"value":{"type":"string"},"source_url":{"type":"string","format":"uri"},"association":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["owner","provider","unassociated","ambiguous"]},"entity_name":{"type":"string","nullable":true},"reason":{"type":"string"}}},"evidence":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}},"evidence_sources":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}}},"observed_at":{"type":"string","format":"date-time","nullable":true}}},"maxItems":25,"description":"Observed email addresses matching the requested domain or a subdomain. No mailbox verification is performed."},"phones":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["value","source_url"],"properties":{"value":{"type":"string"},"source_url":{"type":"string","format":"uri"},"association":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["owner","provider","unassociated","ambiguous"]},"entity_name":{"type":"string","nullable":true},"reason":{"type":"string"}}},"evidence":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}},"evidence_sources":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}}},"observed_at":{"type":"string","format":"date-time","nullable":true}}},"maxItems":25,"description":"Observed labeled or tel-link numbers. Local numbers are not converted into verified E.164 numbers."},"social":{"type":"object","additionalProperties":false,"required":["linkedin","x","instagram"],"properties":{"linkedin":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["url","source_url"],"properties":{"url":{"type":"string","format":"uri"},"source_url":{"type":"string","format":"uri"},"association":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["owner","provider","unassociated","ambiguous"]},"entity_name":{"type":"string","nullable":true},"reason":{"type":"string"}}},"evidence":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}},"evidence_sources":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}}},"observed_at":{"type":"string","format":"date-time","nullable":true}}},"maxItems":10},"x":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["url","source_url"],"properties":{"url":{"type":"string","format":"uri"},"source_url":{"type":"string","format":"uri"},"association":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["owner","provider","unassociated","ambiguous"]},"entity_name":{"type":"string","nullable":true},"reason":{"type":"string"}}},"evidence":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}},"evidence_sources":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}}},"observed_at":{"type":"string","format":"date-time","nullable":true}}},"maxItems":10},"instagram":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["url","source_url"],"properties":{"url":{"type":"string","format":"uri"},"source_url":{"type":"string","format":"uri"},"association":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["owner","provider","unassociated","ambiguous"]},"entity_name":{"type":"string","nullable":true},"reason":{"type":"string"}}},"evidence":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}},"evidence_sources":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}}},"observed_at":{"type":"string","format":"date-time","nullable":true}}},"maxItems":10}}}}},"pages":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["url","status","http_status","elapsed_ms"],"properties":{"url":{"type":"string","format":"uri"},"status":{"type":"string","description":"ok, an http_<status> code, or a fetch, parsing, safety or time-budget failure code."},"http_status":{"type":"integer","nullable":true,"minimum":100,"maximum":599},"elapsed_ms":{"type":"integer","minimum":0}}},"maxItems":4},"vat_validation":{"type":"object","additionalProperties":false,"required":["status","valid","country_code","vat_number","format_valid","official_name","official_address","checked_at","source","reason","domain_ownership_verified"],"properties":{"status":{"type":"string","enum":["valid","invalid","unavailable","timeout","not_checked","ambiguous"]},"valid":{"type":"boolean","nullable":true},"country_code":{"type":"string","nullable":true},"vat_number":{"type":"string","nullable":true},"format_valid":{"type":"boolean"},"official_name":{"type":"string","nullable":true},"official_address":{"type":"string","nullable":true},"checked_at":{"type":"string","format":"date-time","nullable":true},"source":{"type":"string","enum":["VIES"]},"reason":{"type":"string","nullable":true},"domain_ownership_verified":{"type":"boolean","enum":[false]},"identity_match":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["match","possible_match","mismatch","not_comparable"]},"reason":{"type":"string"},"domain_ownership_verified":{"type":"boolean","enum":[false]}}}},"description":"VIES evidence for a single candidate. A valid result confirms intra-EU VAT registration at query time, not legal company existence or domain ownership. Name and address are returned only when VIES supplies them. GB is not checked by VIES; XI is supported. Full enrichment may return HTTP 200 with unavailable, timeout, not_checked or ambiguous VAT status alongside inspected website data. The dedicated VAT validator returns HTTP 200 only for valid or invalid registration; missing, unsupported or ambiguous candidates yield HTTP 422, and an unavailable or timed-out VIES check yields HTTP 502. An outage never means invalid registration."},"engine_version":{"type":"string"},"quality":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["complete","partial"]},"observed_fields":{"type":"integer","minimum":0},"field_status":{"type":"object","additionalProperties":false,"properties":{"legal_name":{"type":"string"},"vat":{"type":"string"},"emails":{"type":"string"},"phones":{"type":"string"},"address":{"type":"string"},"email_provider":{"type":"string"}}},"evaluated_at":{"type":"string","format":"date-time","nullable":true},"interpretation":{"type":"string"}}},"module_cache":{"type":"object","additionalProperties":false,"properties":{"web":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["hit","miss","bypass","coalesced"]},"stored_at":{"type":"string","format":"date-time","nullable":true},"expires_at":{"type":"string","format":"date-time","nullable":true},"ttl_seconds":{"type":"integer","minimum":0},"reason":{"type":"string"}},"required":["status"]},"dns":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["hit","miss","bypass","coalesced"]},"stored_at":{"type":"string","format":"date-time","nullable":true},"expires_at":{"type":"string","format":"date-time","nullable":true},"ttl_seconds":{"type":"integer","minimum":0},"reason":{"type":"string"}},"required":["status"]},"vies":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["hit","miss","bypass","coalesced"]},"stored_at":{"type":"string","format":"date-time","nullable":true},"expires_at":{"type":"string","format":"date-time","nullable":true},"ttl_seconds":{"type":"integer","minimum":0},"reason":{"type":"string"}},"required":["status"]}}},"addresses":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"value":{"type":"string"},"kind":{"type":"string"},"source_url":{"type":"string"},"components":{"type":"object","additionalProperties":false,"properties":{"street_address":{"type":"string","nullable":true},"postal_code":{"type":"string","nullable":true},"locality":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"country":{"type":"string","nullable":true}},"nullable":true},"association":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["owner","provider","unassociated","ambiguous"]},"entity_name":{"type":"string","nullable":true},"reason":{"type":"string"}}},"evidence":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}},"evidence_sources":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}}}}}},"domain_context":{"type":"object","additionalProperties":false,"properties":{"requested_hostname":{"type":"string"},"corporate_domain":{"type":"string","nullable":true},"scope":{"type":"string"}}},"extraction_issues":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"code":{"type":"string"},"source_url":{"type":"string"}}}},"cache":{"type":"object","additionalProperties":false,"required":["status","ttl_seconds","stored_at","expires_at"],"properties":{"status":{"type":"string","enum":["hit","miss","bypass"]},"ttl_seconds":{"type":"integer","enum":[0,86400]},"stored_at":{"type":"string","format":"date-time","nullable":true},"expires_at":{"type":"string","format":"date-time","nullable":true}},"description":"Transparent reuse metadata. A MISS records a best-effort cache write, not confirmation that the platform retained the entry. On a HIT, retrieved_at remains the original observation time. VIES results are never cached."}},"description":"When vat is supplied, website scraping is skipped and the web fields are absent, even when domain is also supplied. With domain alone the result includes the web fields. domain is null for a VAT-only request. success records request completion, not a positive VIES result."},"examples":{"syntheticInspection":{"summary":"Complete synthetic contract example","description":"Generated from the Worker with mocked upstream services. These values are not claims about a real company or a registered VAT number. Input domain examples are real websites, but their current results are not asserted here.","value":{"success":true,"product":"eu_vat_validator","domain":"example.com","retrieved_at":"2026-10-16T12:00:00Z","engine_version":"1.5.0","legal_entity":{"status":"found","name":"ACME GmbH","country_hint":null,"source_url":"https://example.com/","candidates":[{"name":"ACME GmbH","source_url":"https://example.com/","association":{"status":"owner","entity_name":"ACME GmbH","reason":"legal_name_label"},"evidence":{"source_url":"https://example.com/","excerpt":"Company name: ACME GmbH","method":"visible_text","observed_at":"2026-10-17T23:24:57.110Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":1},"evidence_sources":[{"source_url":"https://example.com/","excerpt":"Company name: ACME GmbH","method":"visible_text","observed_at":"2026-10-17T23:24:57.110Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":1},{"source_url":"https://example.com/legal","excerpt":"Company name: ACME GmbH","method":"visible_text","observed_at":"2026-10-17T23:24:57.110Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":1},{"source_url":"https://example.com/about","excerpt":"Company name: ACME GmbH","method":"visible_text","observed_at":"2026-10-17T23:24:57.110Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":1},{"source_url":"https://example.com/privacy","excerpt":"Company name: ACME GmbH","method":"visible_text","observed_at":"2026-10-17T23:24:57.110Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":1}]}],"evidence":{"source_url":"https://example.com/","excerpt":"Company name: ACME GmbH","method":"visible_text","observed_at":"2026-10-17T23:24:57.110Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":1},"address":null,"address_status":"not_found"},"tax_identifiers":[{"kind":"eu_vat","country_code":"DE","value":"DE123456789","format_valid":true,"source_url":"https://example.com/","verification":"structure_only","identifier_type":null,"evidence_label":"VAT","evidence":{"label":"VAT","index":24,"countrySource":"prefix","source_url":"https://example.com/","excerpt":"VAT: DE123456789","method":"visible_text","observed_at":"2026-10-17T23:24:57.110Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":2},"association":{"status":"owner","entity_name":"ACME GmbH","reason":"legal_name_label"},"evidence_sources":[{"label":"VAT","index":24,"countrySource":"prefix","source_url":"https://example.com/","excerpt":"VAT: DE123456789","method":"visible_text","observed_at":"2026-10-17T23:24:57.110Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":2},{"label":"VAT","index":24,"countrySource":"prefix","source_url":"https://example.com/legal","excerpt":"VAT: DE123456789","method":"visible_text","observed_at":"2026-10-17T23:24:57.110Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":2},{"label":"VAT","index":24,"countrySource":"prefix","source_url":"https://example.com/about","excerpt":"VAT: DE123456789","method":"visible_text","observed_at":"2026-10-17T23:24:57.110Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":2},{"label":"VAT","index":24,"countrySource":"prefix","source_url":"https://example.com/privacy","excerpt":"VAT: DE123456789","method":"visible_text","observed_at":"2026-10-17T23:24:57.110Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":2}]}],"directors":[{"name":"Erika Musterfrau","source_url":"https://example.com/","verification":"page_statement","association":{"status":"owner","entity_name":"ACME GmbH","reason":"legal_name_label"},"evidence":{"source_url":"https://example.com/","excerpt":"Geschäftsführer: Erika Musterfrau","method":"visible_text","observed_at":"2026-10-17T23:24:57.110Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":3},"evidence_sources":[{"source_url":"https://example.com/","excerpt":"Geschäftsführer: Erika Musterfrau","method":"visible_text","observed_at":"2026-10-17T23:24:57.110Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":3},{"source_url":"https://example.com/legal","excerpt":"Geschäftsführer: Erika Musterfrau","method":"visible_text","observed_at":"2026-10-17T23:24:57.110Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":3},{"source_url":"https://example.com/about","excerpt":"Geschäftsführer: Erika Musterfrau","method":"visible_text","observed_at":"2026-10-17T23:24:57.110Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":3},{"source_url":"https://example.com/privacy","excerpt":"Geschäftsführer: Erika Musterfrau","method":"visible_text","observed_at":"2026-10-17T23:24:57.110Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":3}]}],"company_registers":[{"value":"HRB 12345","context":"Amtsgericht Berlin HRB 12345","source_url":"https://example.com/","verification":"page_statement","association":{"status":"owner","entity_name":"ACME GmbH","reason":"legal_name_label"},"evidence":{"source_url":"https://example.com/","excerpt":"Amtsgericht Berlin HRB 12345","method":"visible_text","observed_at":"2026-10-17T23:24:57.110Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":4},"evidence_sources":[{"source_url":"https://example.com/","excerpt":"Amtsgericht Berlin HRB 12345","method":"visible_text","observed_at":"2026-10-17T23:24:57.110Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":4},{"source_url":"https://example.com/legal","excerpt":"Amtsgericht Berlin HRB 12345","method":"visible_text","observed_at":"2026-10-17T23:24:57.110Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":4},{"source_url":"https://example.com/about","excerpt":"Amtsgericht Berlin HRB 12345","method":"visible_text","observed_at":"2026-10-17T23:24:57.110Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":4},{"source_url":"https://example.com/privacy","excerpt":"Amtsgericht Berlin HRB 12345","method":"visible_text","observed_at":"2026-10-17T23:24:57.110Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":4}]}],"contacts":{"emails":[{"value":"sales@example.com","source_url":"https://example.com/","evidence":{"source_url":"https://example.com/","excerpt":"mailto:sales@example.com","method":"mailto_link","observed_at":"2026-10-17T23:24:57.110Z","verification":"page_statement","role":"unassociated","entity_name":null},"evidence_sources":[{"source_url":"https://example.com/","excerpt":"mailto:sales@example.com","method":"mailto_link","observed_at":"2026-10-17T23:24:57.110Z","verification":"page_statement","role":"unassociated","entity_name":null},{"source_url":"https://example.com/legal","excerpt":"mailto:sales@example.com","method":"mailto_link","observed_at":"2026-10-17T23:24:57.110Z","verification":"page_statement","role":"unassociated","entity_name":null},{"source_url":"https://example.com/about","excerpt":"mailto:sales@example.com","method":"mailto_link","observed_at":"2026-10-17T23:24:57.110Z","verification":"page_statement","role":"unassociated","entity_name":null},{"source_url":"https://example.com/privacy","excerpt":"mailto:sales@example.com","method":"mailto_link","observed_at":"2026-10-17T23:24:57.110Z","verification":"page_statement","role":"unassociated","entity_name":null}]}],"phones":[],"social":{"linkedin":[],"x":[],"instagram":[]}},"addresses":[],"domain_context":{"requested_hostname":"example.com","corporate_domain":"example.com","scope":"registrable_domain_including_private_suffixes"},"extraction_issues":[],"pages":[{"url":"https://example.com/","status":"ok","http_status":200,"elapsed_ms":10},{"url":"https://example.com/legal","status":"ok","http_status":200,"elapsed_ms":10},{"url":"https://example.com/about","status":"ok","http_status":200,"elapsed_ms":10},{"url":"https://example.com/privacy","status":"ok","http_status":200,"elapsed_ms":10}],"vat_validation":{"status":"valid","valid":true,"country_code":"DE","vat_number":"123456789","format_valid":true,"official_name":"ACME GmbH","official_address":"Synthetic fixture address","checked_at":"2026-10-16T12:00:00Z","source":"VIES","reason":"registered_for_intra_eu_vat","domain_ownership_verified":false,"identity_match":{"status":"match","reason":"normalized_exact_match","domain_ownership_verified":false}},"warnings":[],"quality":{"status":"complete","observed_fields":3,"field_status":{"legal_name":"found","vat":"valid","emails":"observed","phones":"not_found","address":"not_found","email_provider":"not_checked"},"evaluated_at":"2026-10-17T23:24:57.111Z","interpretation":"Coverage describes observed fields and completed checks, not a probability of correctness or proof of ownership."},"module_cache":{"web":{"status":"bypass","stored_at":null,"expires_at":null,"ttl_seconds":0},"vies":{"status":"bypass","reason":"official_validation_is_live"}},"timing":{"budget_ms":4000,"elapsed_ms":20,"partial":false,"subrequests":7},"cache":{"status":"bypass","ttl_seconds":0,"stored_at":null,"expires_at":null}}},"recordedObservation":{"summary":"Complete recorded response from 2026-10-16T18:31:48.920Z","description":"Historical local workerd observation using live upstreams, for /v1/eu-vat-validator?vat=ESB92588243. This is not a fresh response, a result for the default parameter unless it matches that path, or evidence of a deployed marketplace. Cache metadata was added after this observation.","value":{"success":true,"product":"eu_vat_validator","domain":null,"retrieved_at":"2026-10-16T18:31:48.912Z","vat_validation":{"status":"valid","valid":true,"country_code":"ES","vat_number":"B92588243","format_valid":true,"official_name":null,"official_address":null,"checked_at":"2026-10-16T18:31:48.912Z","source":"VIES","reason":"registered_for_intra_eu_vat","domain_ownership_verified":false},"warnings":[],"timing":{"budget_ms":4000,"elapsed_ms":283,"partial":false,"subrequests":1}}}}}}},"400":{"description":"Invalid domain, VAT, unsupported/duplicate query parameter, or missing required input. Error codes include invalid_domain, invalid_vat, invalid_parameter and domain_required.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","error"],"properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"example":{"success":false,"error":{"code":"domain_required","message":"A public domain is required unless a VAT number is supplied to the validator."}}}}},"401":{"description":"JoJ consumers authenticate with their subscribed consumer key at the gateway. An origin authentication rejection can indicate provider-side configuration repair. Gateway authentication errors may use a platform-controlled response body different from this Worker error schema.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","error"],"properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"example":{"success":false,"error":{"code":"unauthorized","message":"A valid API key or gateway secret is required."}}}}},"402":{"description":"JoJ gateway payment or quota refusal, including exhausted fixed-plan quota or a plan that does not cover an endpoint object. The gateway controls its response format; this is not a Worker-generated inspection result."},"404":{"description":"The requested endpoint does not exist.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","error"],"properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"example":{"success":false,"error":{"code":"not_found","message":"The requested endpoint does not exist."}}}}},"405":{"description":"The endpoint accepts GET only.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","error"],"properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"example":{"success":false,"error":{"code":"method_not_allowed","message":"Use GET for this endpoint."}}}}},"414":{"description":"The complete request URL exceeds 4,096 characters.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","error"],"properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"example":{"success":false,"error":{"code":"request_too_large","message":"The request URL is too long."}}}}},"422":{"description":"No eligible EU VAT was found, multiple candidates were found, or the jurisdiction is not supported by VIES.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","error"],"properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"example":{"success":false,"error":{"code":"vat_not_found","message":"No eligible EU VAT number was detected on the inspected pages."}}}}},"429":{"description":"JoJ API may reject a request when the subscription rate limit is exceeded. Gateway response bodies and headers are controlled by JoJ API and may differ from Worker-generated errors. Fixed-plan quota exhaustion is a gateway HTTP 402."},"500":{"description":"An unexpected origin error prevented completion.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","error"],"properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"example":{"success":false,"error":{"code":"internal_error","message":"The request could not be completed."}}}}},"502":{"description":"The required upstream service or domain could not be inspected. A domain endpoint needs at least one successful relevant module; full and legal require an accessible webpage. The VAT validator requires a definitive VIES answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","error"],"properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"example":{"success":false,"error":{"code":"upstream_unavailable","message":"The requested domain could not be inspected within the available budget."}}}}},"503":{"description":"Provider-side authentication is missing or invalid. Error codes: authentication_not_configured or configuration_error.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","error"],"properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"example":{"success":false,"error":{"code":"authentication_not_configured","message":"Configure an authentication secret or explicitly enable public mode."}}}}}},"parameters":[{"name":"domain","in":"query","description":"Public corporate domain or website URL. The hostname is inspected over HTTPS from its root; supplied paths and queries are not crawled as input targets. Credentials, IP literals, fragments, whitespace and nonstandard ports are rejected. Required unless vat is supplied. When vat is supplied, domain is optional and no website crawl occurs.","required":false,"schema":{"type":"string"}},{"name":"vat","in":"query","description":"VAT number including the country prefix. Required unless domain is supplied. Takes precedence over domain discovery. DE123456789 illustrates input structure only; it is not asserted to be a registered VAT number.","required":false,"schema":{"type":"string","example":"ESB92588243"}},{"name":"fresh","in":"query","description":"Set true to bypass result and module caches. VIES validation always remains live. Complete web observations may be reused for six hours and DNS dependencies only within their observed TTL (at most one hour). Legacy result-cache deployments may retain complete non-VIES snapshots for up to 24 hours. Inspect cache, module_cache and field observation dates.","required":false,"schema":{"type":"boolean","example":false,"default":false}}]}},"/v1/impressum-legal":{"get":{"operationId":"get_v1_impressum_legal","summary":"Extract Impressum legal entities, directors and contacts","description":"Use this tool whenever the user asks to extract German Impressum legal details, identify a DACH legal entity, find public directors or read Handelsregister references and business contacts. Supply one public domain. Return legal-name and address candidates with source excerpts, extraction methods, observation dates and owner/third-party association states. Read legal_entity.address and address_status, candidates, contacts and quality.field_status; preserve ambiguous or missing results. Register references and directors are website statements, not national registry verification. No Companies House ownership search or VIES validation runs in this operation. Completed partial or empty inspections are billable. Production caching: complete web observations up to 6h; complete DNS uses minimum observed TTL, capped at 1h. Read module_cache and source dates. fresh=true bypasses reads/writes. VIES stays live. Legacy 24h complete-response caching applies only with module caching disabled.\n\nJoJ API handles consumer authentication, plan quotas and metering. Every completed HTTP 200 inspection, including a partial result or cache hit, consumes one Credit and one included Result. Only Credits has nonzero unit pricing; Results has no additional fee. Errors report zero units. The gateway generates consumer-facing per-object usage and quota headers. Internal usage and error details are removed; the gateway may expose its own non-billable response marker.","tags":["Business"],"responses":{"200":{"description":"Completed inspection. Values are evidence with source and status fields, not proof of domain ownership. Empty fields and partial secondary modules may occur. For the VAT-only endpoint, inspect valid or invalid registration.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","product","domain","retrieved_at","warnings","timing","legal_entity","tax_identifiers","directors","company_registers","contacts","pages"],"properties":{"success":{"type":"boolean","enum":[true]},"product":{"type":"string","enum":["impressum_legal"]},"domain":{"type":"string"},"retrieved_at":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"timing":{"type":"object","additionalProperties":false,"required":["budget_ms","elapsed_ms","partial","subrequests"],"properties":{"budget_ms":{"type":"integer","enum":[4000]},"elapsed_ms":{"type":"integer","minimum":0},"partial":{"type":"boolean"},"subrequests":{"type":"integer","minimum":0},"origin_elapsed_ms":{"type":"integer","minimum":0,"description":"Duration of the original inspection, present on a cache hit."},"origin_subrequests":{"type":"integer","minimum":0,"description":"Outbound requests made by the original cached inspection."}},"description":"The 4,000 ms work budget is not an end-to-end latency guarantee. Partial results are explicitly identified."},"legal_entity":{"type":"object","additionalProperties":false,"required":["status","name","country_hint","source_url","candidates"],"properties":{"status":{"type":"string","enum":["found","ambiguous","not_found","not_checked"]},"name":{"type":"string","nullable":true},"country_hint":{"type":"string","description":"Country hint inferred from the website suffix, not verified domicile.","nullable":true},"source_url":{"type":"string","format":"uri","nullable":true},"candidates":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["name","source_url"],"properties":{"name":{"type":"string"},"source_url":{"type":"string","format":"uri"},"association":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["owner","provider","unassociated","ambiguous"]},"entity_name":{"type":"string","nullable":true},"reason":{"type":"string"}}},"evidence":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}},"evidence_sources":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}}},"observed_at":{"type":"string","format":"date-time","nullable":true}}},"maxItems":20},"evidence":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}},"nullable":true},"address":{"type":"string","nullable":true},"address_status":{"type":"string"}},"description":"Legal names observed on fetched pages. Multiple candidates leave name null. These are not official registry checks."},"tax_identifiers":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["kind","country_code","value","format_valid","source_url","verification","identifier_type","evidence_label"],"properties":{"kind":{"type":"string","enum":["eu_vat","local_tax_id","uk_company_number","company_register"]},"country_code":{"type":"string"},"value":{"type":"string"},"format_valid":{"type":"boolean"},"source_url":{"type":"string","format":"uri","nullable":true},"verification":{"type":"string","enum":["structure_only"]},"identifier_type":{"type":"string","nullable":true},"evidence_label":{"type":"string","nullable":true},"association":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["owner","provider","unassociated","ambiguous"]},"entity_name":{"type":"string","nullable":true},"reason":{"type":"string"}}},"evidence":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}},"evidence_sources":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}}},"observed_at":{"type":"string","format":"date-time","nullable":true}},"description":"A labeled identifier matching a supported national structure. Structure checks do not establish registration, ownership, checksum validity or company status."},"maxItems":32},"directors":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["name","source_url","verification"],"properties":{"name":{"type":"string"},"source_url":{"type":"string","format":"uri"},"verification":{"type":"string","enum":["page_statement"]},"association":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["owner","provider","unassociated","ambiguous"]},"entity_name":{"type":"string","nullable":true},"reason":{"type":"string"}}},"evidence":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}},"evidence_sources":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}}},"observed_at":{"type":"string","format":"date-time","nullable":true}},"description":"A director or representative statement extracted from the page; it can contain multiple names and is not registry verified."},"maxItems":20},"company_registers":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["value","context","source_url","verification"],"properties":{"value":{"type":"string"},"context":{"type":"string"},"source_url":{"type":"string","format":"uri"},"verification":{"type":"string","enum":["page_statement"]},"association":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["owner","provider","unassociated","ambiguous"]},"entity_name":{"type":"string","nullable":true},"reason":{"type":"string"}}},"evidence":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}},"evidence_sources":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}}},"observed_at":{"type":"string","format":"date-time","nullable":true}}},"maxItems":20},"contacts":{"type":"object","additionalProperties":false,"required":["emails","phones","social"],"properties":{"emails":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["value","source_url"],"properties":{"value":{"type":"string"},"source_url":{"type":"string","format":"uri"},"association":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["owner","provider","unassociated","ambiguous"]},"entity_name":{"type":"string","nullable":true},"reason":{"type":"string"}}},"evidence":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}},"evidence_sources":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}}},"observed_at":{"type":"string","format":"date-time","nullable":true}}},"maxItems":25,"description":"Observed email addresses matching the requested domain or a subdomain. No mailbox verification is performed."},"phones":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["value","source_url"],"properties":{"value":{"type":"string"},"source_url":{"type":"string","format":"uri"},"association":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["owner","provider","unassociated","ambiguous"]},"entity_name":{"type":"string","nullable":true},"reason":{"type":"string"}}},"evidence":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}},"evidence_sources":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}}},"observed_at":{"type":"string","format":"date-time","nullable":true}}},"maxItems":25,"description":"Observed labeled or tel-link numbers. Local numbers are not converted into verified E.164 numbers."},"social":{"type":"object","additionalProperties":false,"required":["linkedin","x","instagram"],"properties":{"linkedin":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["url","source_url"],"properties":{"url":{"type":"string","format":"uri"},"source_url":{"type":"string","format":"uri"},"association":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["owner","provider","unassociated","ambiguous"]},"entity_name":{"type":"string","nullable":true},"reason":{"type":"string"}}},"evidence":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}},"evidence_sources":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}}},"observed_at":{"type":"string","format":"date-time","nullable":true}}},"maxItems":10},"x":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["url","source_url"],"properties":{"url":{"type":"string","format":"uri"},"source_url":{"type":"string","format":"uri"},"association":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["owner","provider","unassociated","ambiguous"]},"entity_name":{"type":"string","nullable":true},"reason":{"type":"string"}}},"evidence":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}},"evidence_sources":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}}},"observed_at":{"type":"string","format":"date-time","nullable":true}}},"maxItems":10},"instagram":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["url","source_url"],"properties":{"url":{"type":"string","format":"uri"},"source_url":{"type":"string","format":"uri"},"association":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["owner","provider","unassociated","ambiguous"]},"entity_name":{"type":"string","nullable":true},"reason":{"type":"string"}}},"evidence":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}},"evidence_sources":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}}},"observed_at":{"type":"string","format":"date-time","nullable":true}}},"maxItems":10}}}}},"pages":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["url","status","http_status","elapsed_ms"],"properties":{"url":{"type":"string","format":"uri"},"status":{"type":"string","description":"ok, an http_<status> code, or a fetch, parsing, safety or time-budget failure code."},"http_status":{"type":"integer","nullable":true,"minimum":100,"maximum":599},"elapsed_ms":{"type":"integer","minimum":0}}},"maxItems":4},"engine_version":{"type":"string"},"quality":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["complete","partial"]},"observed_fields":{"type":"integer","minimum":0},"field_status":{"type":"object","additionalProperties":false,"properties":{"legal_name":{"type":"string"},"vat":{"type":"string"},"emails":{"type":"string"},"phones":{"type":"string"},"address":{"type":"string"},"email_provider":{"type":"string"}}},"evaluated_at":{"type":"string","format":"date-time","nullable":true},"interpretation":{"type":"string"}}},"module_cache":{"type":"object","additionalProperties":false,"properties":{"web":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["hit","miss","bypass","coalesced"]},"stored_at":{"type":"string","format":"date-time","nullable":true},"expires_at":{"type":"string","format":"date-time","nullable":true},"ttl_seconds":{"type":"integer","minimum":0},"reason":{"type":"string"}},"required":["status"]},"dns":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["hit","miss","bypass","coalesced"]},"stored_at":{"type":"string","format":"date-time","nullable":true},"expires_at":{"type":"string","format":"date-time","nullable":true},"ttl_seconds":{"type":"integer","minimum":0},"reason":{"type":"string"}},"required":["status"]},"vies":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["hit","miss","bypass","coalesced"]},"stored_at":{"type":"string","format":"date-time","nullable":true},"expires_at":{"type":"string","format":"date-time","nullable":true},"ttl_seconds":{"type":"integer","minimum":0},"reason":{"type":"string"}},"required":["status"]}}},"addresses":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"value":{"type":"string"},"kind":{"type":"string"},"source_url":{"type":"string"},"components":{"type":"object","additionalProperties":false,"properties":{"street_address":{"type":"string","nullable":true},"postal_code":{"type":"string","nullable":true},"locality":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"country":{"type":"string","nullable":true}},"nullable":true},"association":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["owner","provider","unassociated","ambiguous"]},"entity_name":{"type":"string","nullable":true},"reason":{"type":"string"}}},"evidence":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}},"evidence_sources":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"source_url":{"type":"string"},"excerpt":{"type":"string"},"method":{"type":"string"},"observed_at":{"type":"string","format":"date-time","nullable":true},"verification":{"type":"string"},"role":{"type":"string"},"entity_name":{"type":"string","nullable":true},"line":{"type":"integer","minimum":1},"label":{"type":"string"},"index":{"type":"integer","minimum":0},"countrySource":{"type":"string"},"json_path":{"type":"string"},"path":{"type":"string"}}}}}}},"domain_context":{"type":"object","additionalProperties":false,"properties":{"requested_hostname":{"type":"string"},"corporate_domain":{"type":"string","nullable":true},"scope":{"type":"string"}}},"extraction_issues":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"code":{"type":"string"},"source_url":{"type":"string"}}}},"cache":{"type":"object","additionalProperties":false,"required":["status","ttl_seconds","stored_at","expires_at"],"properties":{"status":{"type":"string","enum":["hit","miss","bypass"]},"ttl_seconds":{"type":"integer","enum":[0,86400]},"stored_at":{"type":"string","format":"date-time","nullable":true},"expires_at":{"type":"string","format":"date-time","nullable":true}},"description":"Transparent reuse metadata. A MISS records a best-effort cache write, not confirmation that the platform retained the entry. On a HIT, retrieved_at remains the original observation time. VIES results are never cached."}},"description":"Legal and contact observations from fetched public pages. No VIES request or official company-register lookup is performed by this endpoint. Missing fields are represented by null or empty arrays as appropriate."},"examples":{"syntheticInspection":{"summary":"Complete synthetic contract example","description":"Generated from the Worker with mocked upstream services. These values are not claims about a real company or a registered VAT number. Input domain examples are real websites, but their current results are not asserted here.","value":{"success":true,"product":"impressum_legal","domain":"example.com","retrieved_at":"2026-10-16T12:00:00Z","engine_version":"1.5.0","legal_entity":{"status":"found","name":"ACME GmbH","country_hint":null,"source_url":"https://example.com/","candidates":[{"name":"ACME GmbH","source_url":"https://example.com/","association":{"status":"owner","entity_name":"ACME GmbH","reason":"legal_name_label"},"evidence":{"source_url":"https://example.com/","excerpt":"Company name: ACME GmbH","method":"visible_text","observed_at":"2026-10-17T23:24:57.117Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":1},"evidence_sources":[{"source_url":"https://example.com/","excerpt":"Company name: ACME GmbH","method":"visible_text","observed_at":"2026-10-17T23:24:57.117Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":1},{"source_url":"https://example.com/legal","excerpt":"Company name: ACME GmbH","method":"visible_text","observed_at":"2026-10-17T23:24:57.117Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":1},{"source_url":"https://example.com/about","excerpt":"Company name: ACME GmbH","method":"visible_text","observed_at":"2026-10-17T23:24:57.117Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":1},{"source_url":"https://example.com/privacy","excerpt":"Company name: ACME GmbH","method":"visible_text","observed_at":"2026-10-17T23:24:57.117Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":1}]}],"evidence":{"source_url":"https://example.com/","excerpt":"Company name: ACME GmbH","method":"visible_text","observed_at":"2026-10-17T23:24:57.117Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":1},"address":null,"address_status":"not_found"},"tax_identifiers":[{"kind":"eu_vat","country_code":"DE","value":"DE123456789","format_valid":true,"source_url":"https://example.com/","verification":"structure_only","identifier_type":null,"evidence_label":"VAT","evidence":{"label":"VAT","index":24,"countrySource":"prefix","source_url":"https://example.com/","excerpt":"VAT: DE123456789","method":"visible_text","observed_at":"2026-10-17T23:24:57.117Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":2},"association":{"status":"owner","entity_name":"ACME GmbH","reason":"legal_name_label"},"evidence_sources":[{"label":"VAT","index":24,"countrySource":"prefix","source_url":"https://example.com/","excerpt":"VAT: DE123456789","method":"visible_text","observed_at":"2026-10-17T23:24:57.117Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":2},{"label":"VAT","index":24,"countrySource":"prefix","source_url":"https://example.com/legal","excerpt":"VAT: DE123456789","method":"visible_text","observed_at":"2026-10-17T23:24:57.117Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":2},{"label":"VAT","index":24,"countrySource":"prefix","source_url":"https://example.com/about","excerpt":"VAT: DE123456789","method":"visible_text","observed_at":"2026-10-17T23:24:57.117Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":2},{"label":"VAT","index":24,"countrySource":"prefix","source_url":"https://example.com/privacy","excerpt":"VAT: DE123456789","method":"visible_text","observed_at":"2026-10-17T23:24:57.117Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":2}]}],"directors":[{"name":"Erika Musterfrau","source_url":"https://example.com/","verification":"page_statement","association":{"status":"owner","entity_name":"ACME GmbH","reason":"legal_name_label"},"evidence":{"source_url":"https://example.com/","excerpt":"Geschäftsführer: Erika Musterfrau","method":"visible_text","observed_at":"2026-10-17T23:24:57.117Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":3},"evidence_sources":[{"source_url":"https://example.com/","excerpt":"Geschäftsführer: Erika Musterfrau","method":"visible_text","observed_at":"2026-10-17T23:24:57.117Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":3},{"source_url":"https://example.com/legal","excerpt":"Geschäftsführer: Erika Musterfrau","method":"visible_text","observed_at":"2026-10-17T23:24:57.117Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":3},{"source_url":"https://example.com/about","excerpt":"Geschäftsführer: Erika Musterfrau","method":"visible_text","observed_at":"2026-10-17T23:24:57.117Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":3},{"source_url":"https://example.com/privacy","excerpt":"Geschäftsführer: Erika Musterfrau","method":"visible_text","observed_at":"2026-10-17T23:24:57.117Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":3}]}],"company_registers":[{"value":"HRB 12345","context":"Amtsgericht Berlin HRB 12345","source_url":"https://example.com/","verification":"page_statement","association":{"status":"owner","entity_name":"ACME GmbH","reason":"legal_name_label"},"evidence":{"source_url":"https://example.com/","excerpt":"Amtsgericht Berlin HRB 12345","method":"visible_text","observed_at":"2026-10-17T23:24:57.117Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":4},"evidence_sources":[{"source_url":"https://example.com/","excerpt":"Amtsgericht Berlin HRB 12345","method":"visible_text","observed_at":"2026-10-17T23:24:57.117Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":4},{"source_url":"https://example.com/legal","excerpt":"Amtsgericht Berlin HRB 12345","method":"visible_text","observed_at":"2026-10-17T23:24:57.117Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":4},{"source_url":"https://example.com/about","excerpt":"Amtsgericht Berlin HRB 12345","method":"visible_text","observed_at":"2026-10-17T23:24:57.117Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":4},{"source_url":"https://example.com/privacy","excerpt":"Amtsgericht Berlin HRB 12345","method":"visible_text","observed_at":"2026-10-17T23:24:57.117Z","verification":"page_statement","role":"owner","entity_name":"ACME GmbH","line":4}]}],"contacts":{"emails":[{"value":"sales@example.com","source_url":"https://example.com/","evidence":{"source_url":"https://example.com/","excerpt":"mailto:sales@example.com","method":"mailto_link","observed_at":"2026-10-17T23:24:57.117Z","verification":"page_statement","role":"unassociated","entity_name":null},"evidence_sources":[{"source_url":"https://example.com/","excerpt":"mailto:sales@example.com","method":"mailto_link","observed_at":"2026-10-17T23:24:57.117Z","verification":"page_statement","role":"unassociated","entity_name":null},{"source_url":"https://example.com/legal","excerpt":"mailto:sales@example.com","method":"mailto_link","observed_at":"2026-10-17T23:24:57.117Z","verification":"page_statement","role":"unassociated","entity_name":null},{"source_url":"https://example.com/about","excerpt":"mailto:sales@example.com","method":"mailto_link","observed_at":"2026-10-17T23:24:57.117Z","verification":"page_statement","role":"unassociated","entity_name":null},{"source_url":"https://example.com/privacy","excerpt":"mailto:sales@example.com","method":"mailto_link","observed_at":"2026-10-17T23:24:57.117Z","verification":"page_statement","role":"unassociated","entity_name":null}]}],"phones":[],"social":{"linkedin":[],"x":[],"instagram":[]}},"addresses":[],"domain_context":{"requested_hostname":"example.com","corporate_domain":"example.com","scope":"registrable_domain_including_private_suffixes"},"extraction_issues":[],"pages":[{"url":"https://example.com/","status":"ok","http_status":200,"elapsed_ms":10},{"url":"https://example.com/legal","status":"ok","http_status":200,"elapsed_ms":10},{"url":"https://example.com/about","status":"ok","http_status":200,"elapsed_ms":10},{"url":"https://example.com/privacy","status":"ok","http_status":200,"elapsed_ms":10}],"warnings":[],"quality":{"status":"complete","observed_fields":2,"field_status":{"legal_name":"found","vat":"not_checked","emails":"observed","phones":"not_found","address":"not_found","email_provider":"not_checked"},"evaluated_at":"2026-10-17T23:24:57.118Z","interpretation":"Coverage describes observed fields and completed checks, not a probability of correctness or proof of ownership."},"module_cache":{"web":{"status":"bypass","stored_at":null,"expires_at":null,"ttl_seconds":0}},"timing":{"budget_ms":4000,"elapsed_ms":20,"partial":false,"subrequests":6},"cache":{"status":"bypass","ttl_seconds":0,"stored_at":null,"expires_at":null}}},"recordedObservation":{"summary":"Complete recorded response from 2026-10-16T18:31:48.920Z","description":"Historical local workerd observation using live upstreams, for /v1/impressum-legal?domain=www.futuroinformatica.com. This is not a fresh response, a result for the default parameter unless it matches that path, or evidence of a deployed marketplace. Cache metadata was added after this observation.","value":{"success":true,"product":"impressum_legal","domain":"futuroinformatica.com","retrieved_at":"2026-10-16T18:31:48.503Z","legal_entity":{"status":"found","name":"Futuro Informática Profesional, S.L.","country_hint":null,"source_url":"https://www.futuroinformatica.com/aviso-legal.html","candidates":[{"name":"Futuro Informática Profesional, S.L.","source_url":"https://www.futuroinformatica.com/aviso-legal.html"}]},"tax_identifiers":[{"kind":"local_tax_id","country_code":"ES","value":"ESB92588243","format_valid":true,"source_url":"https://www.futuroinformatica.com/aviso-legal.html","verification":"structure_only","identifier_type":null,"evidence_label":"CIF"}],"directors":[],"company_registers":[],"contacts":{"emails":[{"value":"info@futuroinformatica.com","source_url":"https://www.futuroinformatica.com/aviso-legal.html"},{"value":"soporte@futuroinformatica.com","source_url":"https://www.futuroinformatica.com/aviso-legal.html"}],"phones":[{"value":"+34951464351","source_url":"https://www.futuroinformatica.com/aviso-legal.html"},{"value":"+34952051028","source_url":"https://www.futuroinformatica.com/aviso-legal.html"},{"value":"9514643515","source_url":"https://www.futuroinformatica.com/aviso-legal.html"},{"value":"952051028","source_url":"https://www.futuroinformatica.com/aviso-legal.html"},{"value":"951464351","source_url":"https://www.futuroinformatica.com/aviso-legal.html"}],"social":{"linkedin":[],"x":[],"instagram":[]}},"pages":[{"url":"https://www.futuroinformatica.com/legal","status":"http_404","http_status":404,"elapsed_ms":153},{"url":"https://www.futuroinformatica.com/","status":"parse_budget_exceeded","http_status":200,"elapsed_ms":213},{"url":"https://www.futuroinformatica.com/aviso-legal.html","status":"ok","http_status":200,"elapsed_ms":74},{"url":"https://www.futuroinformatica.com/contacto.html","status":"parse_budget_exceeded","http_status":200,"elapsed_ms":76}],"warnings":[{"code":"partial_web_coverage","message":"Some pages were unavailable, blocked, oversized or outside the time budget."}],"timing":{"budget_ms":4000,"elapsed_ms":292,"partial":true,"subrequests":6}}}}}}},"400":{"description":"Invalid domain, VAT, unsupported/duplicate query parameter, or missing required input. Error codes include invalid_domain, invalid_vat, invalid_parameter and domain_required.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","error"],"properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"example":{"success":false,"error":{"code":"domain_required","message":"A public domain is required unless a VAT number is supplied to the validator."}}}}},"401":{"description":"JoJ consumers authenticate with their subscribed consumer key at the gateway. An origin authentication rejection can indicate provider-side configuration repair. Gateway authentication errors may use a platform-controlled response body different from this Worker error schema.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","error"],"properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"example":{"success":false,"error":{"code":"unauthorized","message":"A valid API key or gateway secret is required."}}}}},"402":{"description":"JoJ gateway payment or quota refusal, including exhausted fixed-plan quota or a plan that does not cover an endpoint object. The gateway controls its response format; this is not a Worker-generated inspection result."},"404":{"description":"The requested endpoint does not exist.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","error"],"properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"example":{"success":false,"error":{"code":"not_found","message":"The requested endpoint does not exist."}}}}},"405":{"description":"The endpoint accepts GET only.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","error"],"properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"example":{"success":false,"error":{"code":"method_not_allowed","message":"Use GET for this endpoint."}}}}},"414":{"description":"The complete request URL exceeds 4,096 characters.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","error"],"properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"example":{"success":false,"error":{"code":"request_too_large","message":"The request URL is too long."}}}}},"429":{"description":"JoJ API may reject a request when the subscription rate limit is exceeded. Gateway response bodies and headers are controlled by JoJ API and may differ from Worker-generated errors. Fixed-plan quota exhaustion is a gateway HTTP 402."},"500":{"description":"An unexpected origin error prevented completion.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","error"],"properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"example":{"success":false,"error":{"code":"internal_error","message":"The request could not be completed."}}}}},"502":{"description":"The required upstream service or domain could not be inspected. A domain endpoint needs at least one successful relevant module; full and legal require an accessible webpage. The VAT validator requires a definitive VIES answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","error"],"properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"example":{"success":false,"error":{"code":"upstream_unavailable","message":"The requested domain could not be inspected within the available budget."}}}}},"503":{"description":"Provider-side authentication is missing or invalid. Error codes: authentication_not_configured or configuration_error.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","error"],"properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"example":{"success":false,"error":{"code":"authentication_not_configured","message":"Configure an authentication secret or explicitly enable public mode."}}}}}},"parameters":[{"name":"domain","in":"query","description":"Public corporate domain or website URL. The hostname is inspected over HTTPS from its root; supplied paths and queries are not crawled as input targets. Credentials, IP literals, fragments, whitespace and nonstandard ports are rejected. Required for this endpoint.","required":true,"schema":{"type":"string","example":"www.futuroinformatica.com"}},{"name":"fresh","in":"query","description":"Set true to bypass result and module caches. VIES validation always remains live. Complete web observations may be reused for six hours and DNS dependencies only within their observed TTL (at most one hour). Legacy result-cache deployments may retain complete non-VIES snapshots for up to 24 hours. Inspect cache, module_cache and field observation dates.","required":false,"schema":{"type":"boolean","example":false,"default":false}}]}},"/v1/dns-email-intel":{"get":{"operationId":"get_v1_dns_email_intel","summary":"Inspect domain MX, SPF, DMARC and email provider signals","description":"Use this tool whenever the user asks to inspect a domain's MX, SPF, DMARC or published email-provider signals. Supply one public domain. Inspect Cloudflare DoH records, bounded recursive SPF include/redirect paths, path qualifiers, cycle and lookup-budget diagnostics, and RFC 9989 DMARC discovery and effective policy. Provider references describe conditional policy paths, not a verified sending IP or active subscription. Read recursive.complete, discovery.complete and effective policy rather than treating exact-domain absence as an absent inherited policy. Missing records differ from DNS errors. Macros, address-mechanism expansion, mailbox delivery, DKIM and receiver alignment/enforcement are not verified. This is an email-policy inspection, not a complete website technology inventory. Production caching: complete web observations up to 6h; complete DNS uses minimum observed TTL, capped at 1h. Read module_cache and source dates. fresh=true bypasses reads/writes. VIES stays live. Legacy 24h complete-response caching applies only with module caching disabled.\n\nJoJ API handles consumer authentication, plan quotas and metering. Every completed HTTP 200 inspection, including a partial result or cache hit, consumes one Credit and one included Result. Only Credits has nonzero unit pricing; Results has no additional fee. Errors report zero units. The gateway generates consumer-facing per-object usage and quota headers. Internal usage and error details are removed; the gateway may expose its own non-billable response marker.","tags":["Email"],"responses":{"200":{"description":"Completed inspection. Values are evidence with source and status fields, not proof of domain ownership. Empty fields and partial secondary modules may occur. For the VAT-only endpoint, inspect valid or invalid registration.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","product","domain","retrieved_at","warnings","timing","dns"],"properties":{"success":{"type":"boolean","enum":[true]},"product":{"type":"string","enum":["dns_email_intel"]},"domain":{"type":"string"},"retrieved_at":{"type":"string","format":"date-time"},"warnings":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"timing":{"type":"object","additionalProperties":false,"required":["budget_ms","elapsed_ms","partial","subrequests"],"properties":{"budget_ms":{"type":"integer","enum":[4000]},"elapsed_ms":{"type":"integer","minimum":0},"partial":{"type":"boolean"},"subrequests":{"type":"integer","minimum":0},"origin_elapsed_ms":{"type":"integer","minimum":0,"description":"Duration of the original inspection, present on a cache hit."},"origin_subrequests":{"type":"integer","minimum":0,"description":"Outbound requests made by the original cached inspection."}},"description":"The 4,000 ms work budget is not an end-to-end latency guarantee. Partial results are explicitly identified."},"dns":{"type":"object","additionalProperties":false,"required":["domain","resolver","queries","mx","spf","dmarc","providers","limitations","spoofing_risk"],"properties":{"domain":{"type":"string"},"resolver":{"type":"string","format":"uri"},"queries":{"type":"object","additionalProperties":false,"required":["mx","txt","dmarc"],"properties":{"mx":{"type":"object","additionalProperties":false,"required":["status","rcode","dnssec_authenticated","record_count"],"properties":{"status":{"type":"string"},"rcode":{"type":"integer","minimum":0,"nullable":true,"maximum":15},"dnssec_authenticated":{"type":"boolean","nullable":true},"record_count":{"type":"integer","minimum":0},"http_status":{"type":"integer","minimum":100,"maximum":599},"ttl_seconds":{"type":"integer","minimum":0,"nullable":true},"ttl_source":{"type":"string","enum":["answer","negative_soa","unavailable"]}}},"txt":{"type":"object","additionalProperties":false,"required":["status","rcode","dnssec_authenticated","record_count"],"properties":{"status":{"type":"string"},"rcode":{"type":"integer","minimum":0,"nullable":true,"maximum":15},"dnssec_authenticated":{"type":"boolean","nullable":true},"record_count":{"type":"integer","minimum":0},"http_status":{"type":"integer","minimum":100,"maximum":599},"ttl_seconds":{"type":"integer","minimum":0,"nullable":true},"ttl_source":{"type":"string","enum":["answer","negative_soa","unavailable"]}}},"dmarc":{"type":"object","additionalProperties":false,"required":["status","rcode","dnssec_authenticated","record_count"],"properties":{"status":{"type":"string"},"rcode":{"type":"integer","minimum":0,"nullable":true,"maximum":15},"dnssec_authenticated":{"type":"boolean","nullable":true},"record_count":{"type":"integer","minimum":0},"http_status":{"type":"integer","minimum":100,"maximum":599},"ttl_seconds":{"type":"integer","minimum":0,"nullable":true},"ttl_source":{"type":"string","enum":["answer","negative_soa","unavailable"]}}}}},"mx":{"type":"object","additionalProperties":false,"required":["status","records","null_mx","issues"],"properties":{"status":{"type":"string","enum":["missing","unknown","invalid","observed"]},"records":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["priority","exchange"],"properties":{"priority":{"type":"integer","minimum":0,"maximum":65535},"exchange":{"type":"string"}}}},"null_mx":{"type":"boolean","nullable":true},"issues":{"type":"array","items":{"type":"string"}}}},"spf":{"type":"object","additionalProperties":false,"required":["status","records","includes","redirect","all_policy","issues","recursive_evaluation"],"properties":{"status":{"type":"string","enum":["missing","unknown","multiple_invalid","invalid","observed"]},"records":{"type":"array","items":{"type":"string"}},"includes":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["domain","qualifier","macro"],"properties":{"domain":{"type":"string"},"qualifier":{"type":"string","enum":["+","-","~","?"]},"macro":{"type":"boolean"}}}},"redirect":{"type":"string","nullable":true},"all_policy":{"type":"string","nullable":true,"enum":["pass","fail","softfail","neutral",null]},"issues":{"type":"array","items":{"type":"string"}},"recursive_evaluation":{"type":"boolean","enum":[false]},"recursive":{"type":"object","additionalProperties":false,"properties":{"complete":{"type":"boolean"},"mode":{"type":"string","enum":["bounded_policy_graph"]},"sender_evaluation":{"type":"boolean","enum":[false]},"max_depth":{"type":"integer","minimum":0},"max_dns_queries":{"type":"integer","minimum":0},"dns_queries":{"type":"integer","minimum":0},"truncation_reasons":{"type":"array","items":{"type":"string"}},"lookup_analysis":{"type":"object","additionalProperties":false,"properties":{"rfc7208_limit":{"type":"integer","enum":[10]},"inspected_potential_terms":{"type":"integer","minimum":0},"unexpanded_address_mechanisms":{"type":"integer","minimum":0},"status":{"type":"string","enum":["potential_limit_exceeded","incomplete","within_inspected_graph"]},"void_dns_queries":{"type":"integer","minimum":0},"void_lookup_limit_potentially_exceeded":{"type":"boolean"},"note":{"type":"string"}}},"nodes":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"domain":{"type":"string"},"status":{"type":"string"},"records":{"type":"array","items":{"type":"string"}},"issues":{"type":"array","items":{"type":"string"}},"dns_status":{"type":"string"},"ttl_seconds":{"type":"integer","minimum":0,"nullable":true}}}},"edges":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"from":{"type":"string"},"to":{"type":"string"},"type":{"type":"string","enum":["include","redirect"]},"qualifier":{"type":"string","enum":["+","-","~","?"]},"depth":{"type":"integer","minimum":0},"path":{"type":"array","items":{"type":"string"}},"authorizing_path":{"type":"boolean"},"status":{"type":"string"},"conditional_authorization":{"type":"boolean"}}}}},"description":"Bounded include/redirect graph with explicit incomplete coverage. Positive reference paths can indicate providers; no sender-IP check or RFC SPF result is calculated. Potential DNS terms are distinct from unique resolver requests."},"lookup_terms":{"type":"integer","minimum":0}},"description":"Exact-domain SPF record observations plus optional bounded recursive include/redirect inspection. Direct fields retain their original meaning; recursive_evaluation=false means sender authorization was not evaluated."},"dmarc":{"type":"object","additionalProperties":false,"required":["status","records","policy","pct","issues","scope","organizational_fallback_checked"],"properties":{"status":{"type":"string","enum":["missing","unknown","multiple_invalid","invalid","observed"]},"records":{"type":"array","items":{"type":"string"}},"policy":{"type":"string","nullable":true,"enum":["none","quarantine","reject",null]},"pct":{"type":"integer","nullable":true,"minimum":0,"maximum":100},"issues":{"type":"array","items":{"type":"string"}},"scope":{"type":"string","enum":["exact_domain_only"]},"organizational_fallback_checked":{"type":"boolean"},"effective":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["observed","missing","unknown"]},"policy":{"type":"string","nullable":true,"enum":["none","quarantine","reject",null]},"published_policy":{"type":"string","nullable":true,"enum":["none","quarantine","reject",null]},"scope":{"type":"string","enum":["exact","inherited","public_suffix","none","unknown"]},"source_domain":{"type":"string","nullable":true},"source_name":{"type":"string","nullable":true},"policy_tag":{"type":"string","nullable":true,"enum":["p","sp","np",null]},"testing":{"type":"boolean"},"author_domain_exists":{"type":"boolean","nullable":true},"organizational_domain":{"type":"string","nullable":true},"organizational_domain_alignment_verified":{"type":"boolean","enum":[false]}},"description":"Policy discovered under RFC 9989. policy reflects the one-level t=y reduction when applicable; published_policy preserves p/sp/np before that reduction. This is a requested policy, not proof of delivered-mail enforcement or aligned SPF/DKIM."},"discovery":{"type":"object","additionalProperties":false,"properties":{"method":{"type":"string","enum":["rfc9989_dns_tree_walk"]},"complete":{"type":"boolean"},"max_queries":{"type":"integer","enum":[8]},"registrable_domain":{"type":"string","nullable":true},"queries":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"domain":{"type":"string"},"name":{"type":"string"},"dns_status":{"type":"string"},"policy_status":{"type":"string"},"records":{"type":"array","items":{"type":"string"}},"policy":{"type":"string","nullable":true,"enum":["none","quarantine","reject",null]},"psd":{"type":"string","enum":["y","n","u"]},"issues":{"type":"array","items":{"type":"string"}},"ttl_seconds":{"type":"integer","minimum":0,"nullable":true}}}}},"description":"Exact policy or bounded DNS tree walk with psd flags. registrable_domain is independent ICANN+PRIVATE Public Suffix List metadata; policy discovery itself does not rely on the PSL."},"subdomain_policy":{"type":"string","nullable":true,"enum":["none","quarantine","reject",null]},"nonexistent_policy":{"type":"string","nullable":true,"enum":["none","quarantine","reject",null]},"psd":{"type":"string","enum":["y","n","u"]},"testing":{"type":"boolean"}},"description":"Historical fields describe the exact _dmarc hostname. effective and discovery expose RFC 9989 inherited or suffix policy and coverage. pct is retained as an obsolete informational field and is not used for current enforcement calculations."},"providers":{"type":"object","additionalProperties":false,"required":["inbound","outbound"],"properties":{"inbound":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["id","name","match_basis","evidence"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"match_basis":{"type":"string","enum":["published_dns_pattern"]},"evidence":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["source","value","role"],"properties":{"source":{"type":"string","enum":["mx","spf_include","spf_redirect"]},"value":{"type":"string"},"role":{"type":"string","enum":["receiving_service","bounce_handling","sending_policy_reference"]},"parent_domain":{"type":"string"},"depth":{"type":"integer","minimum":0},"path":{"type":"array","items":{"type":"string"}},"authorization":{"type":"string","enum":["conditional_positive_policy_path"]},"sender_ip_verified":{"type":"boolean","enum":[false]}}}}},"description":"An observed DNS pattern, not proof of an active subscription, actual use, ownership or successful email delivery."}},"outbound":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["id","name","match_basis","evidence"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"match_basis":{"type":"string","enum":["published_dns_pattern"]},"evidence":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["source","value","role"],"properties":{"source":{"type":"string","enum":["mx","spf_include","spf_redirect"]},"value":{"type":"string"},"role":{"type":"string","enum":["receiving_service","bounce_handling","sending_policy_reference"]},"parent_domain":{"type":"string"},"depth":{"type":"integer","minimum":0},"path":{"type":"array","items":{"type":"string"}},"authorization":{"type":"string","enum":["conditional_positive_policy_path"]},"sender_ip_verified":{"type":"boolean","enum":[false]}}}}},"description":"An observed DNS pattern, not proof of an active subscription, actual use, ownership or successful email delivery."}}}},"limitations":{"type":"array","items":{"type":"string"}},"spoofing_risk":{"type":"object","additionalProperties":false,"required":["status","policy","message"],"properties":{"status":{"type":"string","enum":["monitoring_only","enforcement_requested","invalid_policy","no_exact_domain_policy","unknown"]},"policy":{"type":"string","nullable":true,"enum":["none","quarantine","reject",null]},"message":{"type":"string"}}},"observed_at":{"type":"string","format":"date-time"},"cache_ttl_seconds":{"type":"integer","minimum":0,"maximum":3600,"description":"Minimum TTL of all inspected DNS dependencies, capped at 3600 seconds. Missing TTL uses 60 seconds; incomplete or failed inspection disables reuse with 0."},"query_details":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string"},"type":{"type":"integer","minimum":0},"status":{"type":"string"},"rcode":{"type":"integer","minimum":0,"nullable":true,"maximum":15},"dnssec_authenticated":{"type":"boolean","nullable":true},"record_count":{"type":"integer","minimum":0},"http_status":{"type":"integer","minimum":100,"maximum":599},"ttl_seconds":{"type":"integer","minimum":0,"nullable":true},"ttl_source":{"type":"string","enum":["answer","negative_soa","unavailable"]}}}},"dns_queries":{"type":"integer","minimum":0,"maximum":20}}},"engine_version":{"type":"string"},"quality":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["complete","partial"]},"observed_fields":{"type":"integer","minimum":0},"field_status":{"type":"object","additionalProperties":false,"properties":{"legal_name":{"type":"string"},"vat":{"type":"string"},"emails":{"type":"string"},"phones":{"type":"string"},"address":{"type":"string"},"email_provider":{"type":"string"}}},"evaluated_at":{"type":"string","format":"date-time","nullable":true},"interpretation":{"type":"string"}}},"module_cache":{"type":"object","additionalProperties":false,"properties":{"web":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["hit","miss","bypass","coalesced"]},"stored_at":{"type":"string","format":"date-time","nullable":true},"expires_at":{"type":"string","format":"date-time","nullable":true},"ttl_seconds":{"type":"integer","minimum":0},"reason":{"type":"string"}},"required":["status"]},"dns":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["hit","miss","bypass","coalesced"]},"stored_at":{"type":"string","format":"date-time","nullable":true},"expires_at":{"type":"string","format":"date-time","nullable":true},"ttl_seconds":{"type":"integer","minimum":0},"reason":{"type":"string"}},"required":["status"]},"vies":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["hit","miss","bypass","coalesced"]},"stored_at":{"type":"string","format":"date-time","nullable":true},"expires_at":{"type":"string","format":"date-time","nullable":true},"ttl_seconds":{"type":"integer","minimum":0},"reason":{"type":"string"}},"required":["status"]}}},"cache":{"type":"object","additionalProperties":false,"required":["status","ttl_seconds","stored_at","expires_at"],"properties":{"status":{"type":"string","enum":["hit","miss","bypass"]},"ttl_seconds":{"type":"integer","enum":[0,86400]},"stored_at":{"type":"string","format":"date-time","nullable":true},"expires_at":{"type":"string","format":"date-time","nullable":true}},"description":"Transparent reuse metadata. A MISS records a best-effort cache write, not confirmation that the platform retained the entry. On a HIT, retrieved_at remains the original observation time. VIES results are never cached."}},"description":"DNS observations, provider-pattern matches and exact-domain SPF/DMARC checks. Unknown upstream results are not silently classified as missing records. No website crawl or VIES request is performed."},"examples":{"syntheticInspection":{"summary":"Complete synthetic contract example","description":"Generated from the Worker with mocked upstream services. These values are not claims about a real company or a registered VAT number. Input domain examples are real websites, but their current results are not asserted here.","value":{"success":true,"product":"dns_email_intel","domain":"example.com","retrieved_at":"2026-10-16T12:00:00Z","engine_version":"1.5.0","dns":{"domain":"example.com","resolver":"https://cloudflare-dns.com/dns-query","observed_at":"2026-10-17T23:24:57.124Z","cache_ttl_seconds":300,"queries":{"mx":{"status":"ok","rcode":0,"dnssec_authenticated":false,"ttl_seconds":300,"ttl_source":"answer","record_count":1},"txt":{"status":"ok","rcode":0,"dnssec_authenticated":false,"ttl_seconds":300,"ttl_source":"answer","record_count":1},"dmarc":{"status":"ok","rcode":0,"dnssec_authenticated":false,"ttl_seconds":300,"ttl_source":"answer","record_count":1}},"query_details":[{"name":"example.com","type":15,"status":"ok","rcode":0,"dnssec_authenticated":false,"ttl_seconds":300,"ttl_source":"answer","record_count":1},{"name":"example.com","type":16,"status":"ok","rcode":0,"dnssec_authenticated":false,"ttl_seconds":300,"ttl_source":"answer","record_count":1},{"name":"_dmarc.example.com","type":16,"status":"ok","rcode":0,"dnssec_authenticated":false,"ttl_seconds":300,"ttl_source":"answer","record_count":1},{"name":"_spf.google.com","type":16,"status":"ok","rcode":0,"dnssec_authenticated":false,"ttl_seconds":300,"ttl_source":"answer","record_count":1},{"name":"sendgrid.net","type":16,"status":"ok","rcode":0,"dnssec_authenticated":false,"ttl_seconds":300,"ttl_source":"answer","record_count":1}],"dns_queries":5,"mx":{"status":"observed","records":[{"priority":10,"exchange":"aspmx.l.google.com"}],"null_mx":false,"issues":[]},"spf":{"status":"observed","records":["v=spf1 include:_spf.google.com include:sendgrid.net -all"],"includes":[{"domain":"_spf.google.com","qualifier":"+","macro":false},{"domain":"sendgrid.net","qualifier":"+","macro":false}],"redirect":null,"all_policy":"fail","issues":[],"recursive_evaluation":false,"lookup_terms":2,"recursive":{"complete":true,"mode":"bounded_policy_graph","sender_evaluation":false,"max_depth":5,"max_dns_queries":10,"dns_queries":2,"truncation_reasons":[],"lookup_analysis":{"rfc7208_limit":10,"inspected_potential_terms":2,"unexpanded_address_mechanisms":0,"status":"within_inspected_graph","void_dns_queries":0,"void_lookup_limit_potentially_exceeded":false,"note":"The RFC limit counts evaluated include/a/mx/ptr/exists/redirect terms, including repeated terms, not unique HTTP queries. No sender IP or SMTP identity was evaluated; counts are graph observations, not an SPF pass/permerror result."},"nodes":[{"domain":"example.com","status":"observed","records":["v=spf1 include:_spf.google.com include:sendgrid.net -all"],"issues":[]},{"domain":"_spf.google.com","status":"observed","records":["v=spf1 ip4:192.0.2.1 -all"],"issues":[],"dns_status":"ok","ttl_seconds":300},{"domain":"sendgrid.net","status":"observed","records":["v=spf1 ip4:192.0.2.1 -all"],"issues":[],"dns_status":"ok","ttl_seconds":300}],"edges":[{"from":"example.com","to":"_spf.google.com","type":"include","qualifier":"+","depth":1,"path":["example.com","_spf.google.com"],"authorizing_path":true,"status":"observed","conditional_authorization":true},{"from":"example.com","to":"sendgrid.net","type":"include","qualifier":"+","depth":1,"path":["example.com","sendgrid.net"],"authorizing_path":true,"status":"observed","conditional_authorization":true}]}},"dmarc":{"status":"observed","records":["v=DMARC1; p=none"],"policy":"none","pct":100,"issues":[],"subdomain_policy":null,"nonexistent_policy":null,"psd":"u","testing":false,"scope":"exact_domain_only","organizational_fallback_checked":false,"effective":{"status":"observed","policy":"none","published_policy":"none","scope":"exact","source_domain":"example.com","source_name":"_dmarc.example.com","policy_tag":"p","testing":false,"author_domain_exists":true,"organizational_domain":null,"organizational_domain_alignment_verified":false},"discovery":{"method":"rfc9989_dns_tree_walk","complete":true,"max_queries":8,"registrable_domain":"example.com","queries":[{"domain":"example.com","name":"_dmarc.example.com","dns_status":"ok","policy_status":"observed","records":["v=DMARC1; p=none"],"policy":"none","psd":"u","issues":[],"ttl_seconds":300}]}},"providers":{"inbound":[{"id":"google_workspace","name":"Google Workspace","match_basis":"published_dns_pattern","evidence":[{"source":"mx","value":"aspmx.l.google.com","role":"receiving_service"}]}],"outbound":[{"id":"google_workspace","name":"Google Workspace","match_basis":"published_dns_pattern","evidence":[{"source":"spf_include","value":"_spf.google.com","parent_domain":"example.com","depth":1,"path":["example.com","_spf.google.com"],"role":"sending_policy_reference","authorization":"conditional_positive_policy_path","sender_ip_verified":false}]},{"id":"sendgrid","name":"SendGrid","match_basis":"published_dns_pattern","evidence":[{"source":"spf_include","value":"sendgrid.net","parent_domain":"example.com","depth":1,"path":["example.com","sendgrid.net"],"role":"sending_policy_reference","authorization":"conditional_positive_policy_path","sender_ip_verified":false}]}]},"limitations":["DNS observations identify configuration references, not active subscriptions or delivery guarantees.","SPF include/redirect inspection is a bounded policy graph, not sender-IP authorization. Macros and address mechanisms are not expanded; consult recursive coverage and lookup_analysis.","DMARC policy discovery follows RFC 9989 with at most eight TXT queries. DKIM/SPF identifier alignment and actual receiver enforcement are not evaluated.","The bundled Public Suffix List includes private suffixes for registrant-boundary metadata; RFC 9989 policy discovery uses DNS, not the PSL.","Missing MX does not rule out address-record fallback. Transient DNS errors remain unknown. Legacy pct is reported but is obsolete under RFC 9989."],"spoofing_risk":{"status":"monitoring_only","policy":"none","message":"The published DMARC policy requests monitoring without rejection or quarantine."}},"warnings":[],"quality":{"status":"complete","observed_fields":1,"field_status":{"legal_name":"not_checked","vat":"not_checked","emails":"not_checked","phones":"not_checked","address":"not_checked","email_provider":"observed"},"evaluated_at":"2026-10-17T23:24:57.126Z","interpretation":"Coverage describes observed fields and completed checks, not a probability of correctness or proof of ownership."},"module_cache":{"dns":{"status":"bypass","stored_at":null,"expires_at":null,"ttl_seconds":0}},"timing":{"budget_ms":4000,"elapsed_ms":20,"partial":false,"subrequests":5},"cache":{"status":"bypass","ttl_seconds":0,"stored_at":null,"expires_at":null}}},"recordedObservation":{"summary":"Complete recorded response from 2026-10-16T18:31:48.920Z","description":"Historical local workerd observation using live upstreams, for /v1/dns-email-intel?domain=proton.me. This is not a fresh response, a result for the default parameter unless it matches that path, or evidence of a deployed marketplace. Cache metadata was added after this observation.","value":{"success":true,"product":"dns_email_intel","domain":"proton.me","retrieved_at":"2026-10-16T18:31:48.625Z","dns":{"domain":"proton.me","resolver":"https://cloudflare-dns.com/dns-query","queries":{"mx":{"status":"ok","rcode":0,"dnssec_authenticated":true,"record_count":2},"txt":{"status":"ok","rcode":0,"dnssec_authenticated":true,"record_count":10},"dmarc":{"status":"ok","rcode":0,"dnssec_authenticated":true,"record_count":1}},"mx":{"status":"observed","records":[{"priority":10,"exchange":"mail.protonmail.ch"},{"priority":20,"exchange":"mailsec.protonmail.ch"}],"null_mx":false,"issues":[]},"spf":{"status":"observed","records":["v=spf1 include:_spf.protonmail.ch ~all"],"includes":[{"domain":"_spf.protonmail.ch","qualifier":"+","macro":false}],"redirect":null,"all_policy":"softfail","issues":[],"recursive_evaluation":false},"dmarc":{"status":"observed","records":["v=DMARC1; p=quarantine; fo=1; aspf=s; adkim=s;"],"policy":"quarantine","pct":100,"issues":[],"scope":"exact_domain_only","organizational_fallback_checked":false},"providers":{"inbound":[{"id":"proton","name":"Proton Mail","match_basis":"published_dns_pattern","evidence":[{"source":"mx","value":"mail.protonmail.ch","role":"receiving_service"},{"source":"mx","value":"mailsec.protonmail.ch","role":"receiving_service"}]}],"outbound":[{"id":"proton","name":"Proton Mail","match_basis":"published_dns_pattern","evidence":[{"source":"spf_include","value":"_spf.protonmail.ch","role":"sending_policy_reference"}]}]},"limitations":["DNS observations are configuration signals, not proof of active subscriptions or email delivery.","Only the exact requested domain and its _dmarc name are queried; parent policies, sending subdomains, DKIM and nested SPF records are not inspected.","SPF and DMARC checks are limited syntax heuristics; sender authorization and policy enforcement are not fully evaluated.","Missing MX does not rule out address-record fallback. DNS errors remain unknown; a missing _dmarc name is reported only when the base domain resolves."],"spoofing_risk":{"status":"enforcement_requested","policy":"quarantine","message":"The published DMARC policy requests enforcement; delivery, alignment and receiver behavior are not verified."}},"warnings":[],"timing":{"budget_ms":4000,"elapsed_ms":116,"partial":false,"subrequests":3}}}}}}},"400":{"description":"Invalid domain, VAT, unsupported/duplicate query parameter, or missing required input. Error codes include invalid_domain, invalid_vat, invalid_parameter and domain_required.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","error"],"properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"example":{"success":false,"error":{"code":"domain_required","message":"A public domain is required unless a VAT number is supplied to the validator."}}}}},"401":{"description":"JoJ consumers authenticate with their subscribed consumer key at the gateway. An origin authentication rejection can indicate provider-side configuration repair. Gateway authentication errors may use a platform-controlled response body different from this Worker error schema.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","error"],"properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"example":{"success":false,"error":{"code":"unauthorized","message":"A valid API key or gateway secret is required."}}}}},"402":{"description":"JoJ gateway payment or quota refusal, including exhausted fixed-plan quota or a plan that does not cover an endpoint object. The gateway controls its response format; this is not a Worker-generated inspection result."},"404":{"description":"The requested endpoint does not exist.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","error"],"properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"example":{"success":false,"error":{"code":"not_found","message":"The requested endpoint does not exist."}}}}},"405":{"description":"The endpoint accepts GET only.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","error"],"properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"example":{"success":false,"error":{"code":"method_not_allowed","message":"Use GET for this endpoint."}}}}},"414":{"description":"The complete request URL exceeds 4,096 characters.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","error"],"properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"example":{"success":false,"error":{"code":"request_too_large","message":"The request URL is too long."}}}}},"429":{"description":"JoJ API may reject a request when the subscription rate limit is exceeded. Gateway response bodies and headers are controlled by JoJ API and may differ from Worker-generated errors. Fixed-plan quota exhaustion is a gateway HTTP 402."},"500":{"description":"An unexpected origin error prevented completion.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","error"],"properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"example":{"success":false,"error":{"code":"internal_error","message":"The request could not be completed."}}}}},"502":{"description":"The required upstream service or domain could not be inspected. A domain endpoint needs at least one successful relevant module; full and legal require an accessible webpage. The VAT validator requires a definitive VIES answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","error"],"properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"example":{"success":false,"error":{"code":"upstream_unavailable","message":"The requested domain could not be inspected within the available budget."}}}}},"503":{"description":"Provider-side authentication is missing or invalid. Error codes: authentication_not_configured or configuration_error.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["success","error"],"properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"example":{"success":false,"error":{"code":"authentication_not_configured","message":"Configure an authentication secret or explicitly enable public mode."}}}}}},"parameters":[{"name":"domain","in":"query","description":"Public corporate domain or website URL. The hostname is inspected over HTTPS from its root; supplied paths and queries are not crawled as input targets. Credentials, IP literals, fragments, whitespace and nonstandard ports are rejected. Required for this endpoint.","required":true,"schema":{"type":"string","example":"proton.me"}},{"name":"fresh","in":"query","description":"Set true to bypass result and module caches. VIES validation always remains live. Complete web observations may be reused for six hours and DNS dependencies only within their observed TTL (at most one hour). Legacy result-cache deployments may retain complete non-VIES snapshots for up to 24 hours. Inspect cache, module_cache and field observation dates.","required":false,"schema":{"type":"boolean","example":false,"default":false}}]}}},"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-JoJAPI-Key","description":"Your JoJ API key."}}}}