<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt"?>
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="4"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc iprnotified="no"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" consensus="true" docName="draft-loffredo-regext-rdap-verified-contacts-02" ipr="trust200902" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" tocDepth="4" sortRefs="true" symRefs="true" version="3">
  <front>
    <title abbrev="Verifying Contacts in RDAP">Registration Data Access Protocol (RDAP) Extension for Verified Contact Information</title>
    <seriesInfo name="Internet-Draft" value="draft-loffredo-regext-rdap-verified-contacts-02"/>
    <author fullname="Mario Loffredo" initials="M." surname="Loffredo">
      <organization>IIT-CNR/Registro.it</organization>
      <address>
        <postal>
          <street>Via Moruzzi,1</street>
          <city>Pisa</city>
          <country>IT</country>
          <code>56124</code>
        </postal>
        <email>mario.loffredo@iit.cnr.it</email>
        <uri>http://www.iit.cnr.it</uri>
      </address>
    </author>
    <author fullname="Maurizio Martinelli" initials="M." surname="Martinelli">
      <organization>IIT-CNR/Registro.it</organization>
      <address>
        <postal>
          <street>Via Moruzzi,1</street>
          <city>Pisa</city>
          <country>IT</country>
          <code>56124</code>
        </postal>
        <email>maurizio.martinelli@iit.cnr.it</email>
        <uri>http://www.iit.cnr.it</uri>
      </address>
    </author>
    <author fullname="James Gould" initials="J.G" surname="Gould">
      <organization>VeriSign, Inc.</organization>
      <address>
        <postal>
          <street>12061 Bluemont Way</street>
          <city>Reston</city>
          <region>VA</region>
          <code>20190</code>
          <country>US</country>
        </postal>
        <email>jgould@verisign.com</email>
        <uri>http://www.verisigninc.com</uri>
      </address>
    </author>
    <author initials="P" surname="Kowalik">
      <organization>DENIC eG</organization>
      <address>
        <postal>
          <street ascii="Theodor-Stern-Kai 1">Theodor-Stern-Kai 1</street>
          <city ascii="Frankfurt am Main">Frankfurt am Main</city>
          <country ascii="DE">DE</country>
        </postal>
        <email>pawel.kowalik@denic.de</email>
        <uri>https://denic.de</uri>
      </address>
    </author>

    <keyword>Verified</keyword>
    <keyword>Contacts</keyword>
    <keyword>Extension</keyword>
    <abstract>
      <t>This document describes an extension to the Registration Data Access Protocol (RDAP) that allows the inclusion of verification status information for contact fields such as email addresses and phone numbers. The goal is to improve data quality and trustworthiness of RDAP responses by indicating which pieces of contact data have been verified and how.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t>The Registration Data Access Protocol (RDAP) provides access to registration data for domain names, IP addresses, and autonomous system numbers. However, RDAP responses do not currently include explicit information about whether contact information such as email addresses or phone numbers has been verified.</t>
      <t>This document defines a simple extension that enables RDAP providers to include verification status for contact fields. This is useful in contexts where contact verification may be legally required or strongly recommended.</t>
      <t>In particular, Article 28 of Directive (EU) 2022/2555 (<xref target="NIS2" format="default"/>) requires top-level domain (TLD) name registries and domain name registrars to collect and maintain accurate and complete domain name registration data.  It also mandates them to verify, to the extent possible, the accuracy of such data. The extension defined in this document can support compliance with this obligation by enabling the inclusion of verification status for contact fields in RDAP responses.</t>
    </section>
    <section anchor="conventions" numbered="true" toc="default">
      <name>Conventions Used in This Document</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
      NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
      "MAY", and "OPTIONAL" in this document are to be interpreted as
      described in BCP 14 <xref target="RFC2119" format="default"/> <xref target="RFC8174" format="default"/>
      when, and only when, they
      appear in all capitals, as shown here.</t>
    </section>
    <section anchor="rdap-conformance" numbered="true" toc="default">
      <name>RDAP Conformance</name>
      <t>Servers implementing this extension MUST include the string &quot;verifiedContacts&quot; in the &quot;rdapConformance&quot; (<xref target="RFC9083" format="default"/>) array of all relevant RDAP responses.
              The registration of the &quot;verifiedContacts&quot; extension identifier is described in <xref target="iana-considerations" format="default"/>.</t>
    </section>
    <section anchor="json-structure" numbered="true" toc="default">
      <name>JSON Structure</name>
      <t>The verification information is conveyed via a new top-level object member named &quot;verifiedContacts_data&quot; within the entity objects.</t>
      <figure anchor="verifiedContacts-response" align="left" suppress-title="false">
        <name>Entity object including the &quot;verifiedContacts_data&quot; member</name>
        <sourcecode type="json" markers="false">
      {
        "objectClassName": "entity",
        "handle": "ABC123-EXAMPLE",
        "rdapConformance": ["rdap_level_0", "verifiedContacts"],
        ...
        "verifiedContacts_data": {
          "email": {
            "verificationDate": "2025-03-15T12:00:00Z",
            "method": "email verification"
          }
          ...
        }
      }
        </sourcecode>
      </figure>
    </section>
    <section anchor="verifiedContacts_data-structure" numbered="true" toc="default">
    <name>verifiedContacts_data Structure</name>
      <t>The &quot;verifiedContacts_data&quot; member is an object whose keys are contact details, using one of the RDAP JSON Values Registry "verified contact detail" type values (e.g., &quot;all&quot;, &quot;email&quot;, &quot;voice&quot;, &quot;fax&quot;, &quot;addr&quot;). Each value is an object containing:</t>
      <dl newline="false" indent="4">
      <dt>"verificationDate":</dt>
        <dd>(REQUIRED) Date and time of verification, as defined in <xref target="RFC3339" format="default"/>.</dd>
      <dt>"method":</dt>
        <dd>
         <t>(OPTIONAL) Verification method, using one of the RDAP JSON Values Registry “verified contact method” type values.  
         The initial set of “verified contact method” values are:</t>
          <dl newline="false" indent="4">
            <dt>"email verification":</dt>
            <dd>Sending a confirmation link to the specified email address and requiring user interaction (e.g., clicking the link) to confirm ownership.</dd>
            <dt>"sms token":</dt>
            <dd>Sending a one-time token (OTP) via SMS to the provided phone number and requiring the user to submit the token to confirm ownership.</dd>
            <dt>"manual review":</dt>
            <dd>Manual review of contact data by a human operator (e.g., calling the phone number, making a live video call, inspecting submitted documentation).</dd>
            <dt>"eid validation":</dt>
            <dd>Validation of contact data using a digital identity service, either before or after registration (e.g., eIDAS-compliant identity providers).</dd>
            <dt>"address verification":</dt>
            <dd>Verification of the postal address using a geolocation or address validation service (e.g., Google Maps API, OpenStreetMap, postal databases).</dd>
            <dt>"cross validation":</dt>
            <dd>Cross-checking of contact details (e.g., name, VAT number, postal address) against trusted third-party repositories (e.g., EU VIES).</dd>
            <dt>"third party assertion":</dt>
            <dd>Relying on a trusted third party (e.g., registrar, CSP, certification authority) to assert that contact data has been verified externally.</dd>
          </dl>
        </dd>
      <dt>"verifierId":</dt>
        <dd>(OPTIONAL) Verifier identifier, that is a server unique number or a delimited string using a '-' as a separator character to support a regional or globally unique identifier.  
        The minimum length is 1 character and the maximum length is 40 characters.  The set of verifiers and verifier identifiers is up to server policy.</dd>
      <dt>"verifierName":</dt>
        <dd>(OPTIONAL) Verifier name of the verifier that is a simple character string, with a minimum length of 1 character and a maximum length of 40 characters.  The set of verifiers and verifier identifiers is up to server policy.</dd>
      <dt>"verificationId":</dt>
        <dd>(OPTIONAL) Verification identifier that is unique for the verification performed by the verifier, that is represented as a number with the option of a '-' separator for grouping verifications by region or verifier.  The minimum length is 1 character and the maximum length is 40 characters.  
        For example, the "verificationId" could follow the <xref target="RFC5234">Augmented Backus-Naur Form (ABNF) grammar</xref> scheme verifierId "-" verificationNumber, where the "verificationNumber" is unique to the "verifierId", making the "verificationId" unique across many verifiers supported by the server.</dd>
      </dl>
    </section>
    <section anchor="extension-version-identifier" title="Extension Version Identifier">
      <t>This extension supports the following versioning types as defined in <xref target="I-D.ietf-regext-rdap-versioning"/>:</t>
      <ul>
        <li>Opaque Versioning: The Opaque Extension Version Identifier is &quot;verifiedContacts&quot;.</li>
        <li>Semantic Versioning: The Semantic Extension Version Identifier is &quot;verifiedContacts-0.3&quot;.  
        The Semantic Extension Version Identifier is &quot;verifiedContacts-0.2&quot; for draft-loffredo-regext-rdap-verified-contacts-02 and &quot;verifiedContacts-0.1&quot; for draft-loffredo-regext-rdap-verified-contacts-01.  
        When there are interface changes to the extension, the Semantic Extension Version Identifier will be incremented, which may not match the draft version number.  When the draft becomes a working group document and passes Working Group Last Call (WGLC), the Semantic Extension Version Identifier will be changed to &quot;verifiedContacts-1.0&quot;.</li>
      </ul>
    </section>
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <section anchor="rdap-extensions-registry" numbered="true" toc="default">
        <name>RDAP Extensions Registry</name>
        <t>IANA is requested to register the following value in the RDAP
           Extensions Registry:</t>
        <dl newline="false" spacing="compact">
          <dt>Extension identifier:</dt>
          <dd>verifiedContacts</dd>
          <dt>Registry operator:</dt>
          <dd>Any</dd>
          <dt>Published specification:</dt>
          <dd>This document.</dd>
          <dt>Contact:</dt>
      	  <dd>IETF &lt;iesg@ietf.org&gt;</dd>
          <dt>Intended usage:</dt>
      	  <dd>This extension identifies RDAP extension for verified contact information.</dd>
        </dl>
      </section>
      <section anchor="json-values-registry" numbered="true" toc="default">
        <name>RDAP JSON Values Registry</name>
        <t>Section 10.2 of <xref target="RFC9083" format="default"/> defines the
        RDAP JSON Values Registry with pre-defined Type field values and the use of the
        "Expert Review" policy defined in <xref target="RFC8126" format="default"/>.
        This specification defines two new RDAP JSON Values Registry Type field
        values that can be used to register pre-defined "verified contact detail" and "verified contact method" values.
        IANA is requested to update the RDAP JSON Values
        Registry to accept these additional type field values as follows:</t>
        <dl newline="false" indent="4">
          <dt>"verified contact detail":</dt>
          <dd>Verified contact detail being registered.  The registered "verified contact detail" 
          is referenced using a sub-field of the verified contacts "verifiedContacts_data" field.</dd>
          <dt>"verified contact method":</dt>
          <dd>Verified contact method being registered.  The "verified contact method"
          is referenced using the "method" field of the verified contacts detail 
          (e.g., "email", "voice", "fax", "addr") field.</dd>
        </dl>
        <t>IANA is requested to register the following in the RDAP JSON Values Registry, described in <xref target="RFC9083"/>:</t>
        <dl newline="false" indent="4">
          <dt>Value:</dt>
          <dd>all</dd>
          <dt>Type:</dt>
          <dd>verified contact detail</dd>
          <dt>Description:</dt>
          <dd>All contact data has been verified.</dd>
          <dt>Registrant Name:</dt>
          <dd>IETF</dd>
          <dt>Registrant Contact Information:</dt>
          <dd>iesg@ietf.org</dd>
        </dl>
        <t><br/></t>
        <dl newline="false" indent="4">
          <dt>Value:</dt>
          <dd>email</dd>
          <dt>Type:</dt>
          <dd>verified contact detail</dd>
          <dt>Description:</dt>
          <dd>Email contact verification detail.</dd>
          <dt>Registrant Name:</dt>
          <dd>IETF</dd>
          <dt>Registrant Contact Information:</dt>
          <dd>iesg@ietf.org</dd>
        </dl>
        <t><br/></t>
        <dl newline="false" indent="4">
          <dt>Value:</dt>
          <dd>voice</dd>
          <dt>Type:</dt>
          <dd>verified contact detail</dd>
          <dt>Description:</dt>
          <dd>Voice telephone number contact verification detail.</dd>
          <dt>Registrant Name:</dt>
          <dd>IETF</dd>
          <dt>Registrant Contact Information:</dt>
          <dd>iesg@ietf.org</dd>
        </dl>
        <t><br/></t>
        <dl newline="false" indent="4">
          <dt>Value:</dt>
          <dd>fax</dd>
          <dt>Type:</dt>
          <dd>verified contact detail</dd>
          <dt>Description:</dt>
          <dd>Facsimile telephone number contact verification detail.</dd>
          <dt>Registrant Name:</dt>
          <dd>IETF</dd>
          <dt>Registrant Contact Information:</dt>
          <dd>iesg@ietf.org</dd>
        </dl>
        <t><br/></t>
        <dl newline="false" indent="4">
          <dt>Value:</dt>
          <dd>addr</dd>
          <dt>Type:</dt>
          <dd>verified contact detail</dd>
          <dt>Description:</dt>
          <dd>Address contact verification detail.</dd>
          <dt>Registrant Name:</dt>
          <dd>IETF</dd>
          <dt>Registrant Contact Information:</dt>
          <dd>iesg@ietf.org</dd>
        </dl>
       <t><br/></t>
        <dl newline="false" indent="4">
          <dt>Value:</dt>
          <dd>email verification</dd>
          <dt>Type:</dt>
          <dd>verified contact method</dd>
          <dt>Description:</dt>
          <dd>Sending a confirmation link to the specified email address and requiring user interaction (e.g., clicking the link) to confirm ownership.</dd>
          <dt>Registrant Name:</dt>
          <dd>IETF</dd>
          <dt>Registrant Contact Information:</dt>
          <dd>iesg@ietf.org</dd>
        </dl>
        <t><br/></t>
        <dl newline="false" indent="4">
          <dt>Value:</dt>
          <dd>sms token</dd>
          <dt>Type:</dt>
          <dd>verified contact method</dd>
          <dt>Description:</dt>
          <dd>Sending a one-time token (OTP) via SMS to the provided phone number and requiring the user to submit the token to confirm ownership.</dd>
          <dt>Registrant Name:</dt>
          <dd>IETF</dd>
          <dt>Registrant Contact Information:</dt>
          <dd>iesg@ietf.org</dd>
        </dl>
        <t><br/></t>
        <dl newline="false" indent="4">
          <dt>Value:</dt>
          <dd>manual review</dd>
          <dt>Type:</dt>
          <dd>verified contact method</dd>
          <dt>Description:</dt>
          <dd>Manual review of contact data by a human operator (e.g., calling the phone number, making a live video call, inspecting submitted documentation).</dd>
          <dt>Registrant Name:</dt>
          <dd>IETF</dd>
          <dt>Registrant Contact Information:</dt>
          <dd>iesg@ietf.org</dd>
        </dl>
        <t><br/></t>
        <dl newline="false" indent="4">
          <dt>Value:</dt>
          <dd>eid validation</dd>
          <dt>Type:</dt>
          <dd>verified contact method</dd>
          <dt>Description:</dt>
          <dd>Validation of contact data using a digital identity service, either before or after registration (e.g., eIDAS-compliant identity providers).</dd>
          <dt>Registrant Name:</dt>
          <dd>IETF</dd>
          <dt>Registrant Contact Information:</dt>
          <dd>iesg@ietf.org</dd>
        </dl>
        <t><br/></t>
        <dl newline="false" indent="4">
          <dt>Value:</dt>
          <dd>address verification</dd>
          <dt>Type:</dt>
          <dd>verified contact method</dd>
          <dt>Description:</dt>
          <dd>Verification of the postal address using a geolocation or address validation service (e.g., Google Maps API, OpenStreetMap, postal databases).</dd>
          <dt>Registrant Name:</dt>
          <dd>IETF</dd>
          <dt>Registrant Contact Information:</dt>
          <dd>iesg@ietf.org</dd>
        </dl>
        <t><br/></t>
        <dl newline="false" indent="4">
          <dt>Value:</dt>
          <dd>cross validation</dd>
          <dt>Type:</dt>
          <dd>verified contact method</dd>
          <dt>Description:</dt>
          <dd>Cross-checking of contact details (e.g., name, VAT number, postal address) against trusted third-party repositories (e.g., EU VIES).</dd>
          <dt>Registrant Name:</dt>
          <dd>IETF</dd>
          <dt>Registrant Contact Information:</dt>
          <dd>iesg@ietf.org</dd>
        </dl>
        <t><br/></t>
        <dl newline="false" indent="4">
          <dt>Value:</dt>
          <dd>third party assertion</dd>
          <dt>Type:</dt>
          <dd>verified contact method</dd>
          <dt>Description:</dt>
          <dd>Relying on a trusted third party (e.g., registrar, CSP, certification authority) to assert that contact data has been verified externally.</dd>
          <dt>Registrant Name:</dt>
          <dd>IETF</dd>
          <dt>Registrant Contact Information:</dt>
          <dd>iesg@ietf.org</dd>
        </dl>
      </section>
    </section>
    <section anchor="security-considerations" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>Contact verification data may have privacy implications. Servers MUST ensure that disclosure of this information complies with applicable data protection laws and policies.</t>
    </section>
    <section title="Acknowledgements" anchor="Acknowledgements">
      <t>The authors wish to thank the following persons for their feedback
            and suggestions: <contact fullname="Scott Hollenbeck"/>.</t>    
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
          <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
          <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3339.xml"/>
          <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5234.xml"/>
          <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml"/>
          <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
          <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.9083.xml"/>
          <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-regext-rdap-versioning.xml"/>
      </references>
      <references title="Informative References">
        <reference anchor='NIS2'
                   target='https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:02022L2555-20221227'>
          <front>
            <title>Directive (EU) 2022/2555 of the European Parliament and of the Council of 14 December 2022 on measures for a high common level of cybersecurity across the Union, amending Regulation (EU) No 910/2014 and Directive (EU) 2018/1972, and repealing Directive (EU) 2016/1148 (NIS 2 Directive)</title>
            <author>
              <organization>European Parliament and Council</organization>
            </author>
            <date year='2022' month='December' />
          </front>
        </reference>
      </references>
    </references>
    <section numbered="true" toc="default">
    <name>Change History</name>
      <section anchor="change-00-to-01" numbered="true" toc="default">
        <name>Change from 00 to 01</name>
        <ol spacing="compact" type="1">
          <li>Made The &quot;verifiedContacts_data&quot; keys consistent with those defined in draft-ietf-regext-rdap-jscontact.</li>
          <li>Further specified the verification methods and changed their format to CamelCase.</li>
        </ol>
      </section>
      <section anchor="change-01-to-02" numbered="true" toc="default">
        <name>Change from 01 to 02</name>
        <ol spacing="compact" type="1">
          <li>Added definition of the "verified contact detail" and "verified contact method" RDAP JSON Values types and added a set of RDAP JSON Values registrations.</li>
          <li>Updated the "method" values to be lowercase with a space word separator to match the requirement for registered RDAP JSON Values.</li>
          <li>Added support for semantic versioning using the versioning extension and included the semantic versions for the prior draft versions.</li>
          <li>Added the "all", "email", "voice", "fax", and "addr" verified contact detail registration.</li>
          <li>Added the "verifierId" optional field to reference who performed the verification.</li>
          <li>Added the "verificationId" optional field to reference the unique verification performed by the verification provider.</li>
       </ol>
      </section>
    </section>
  </back>
</rfc>
