<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-galvin-regext-epp-variants-01" category="std" consensus="true" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.0 -->
  <front>
    <title abbrev="EPP Variants">Domain variant support for EPP</title>
    <seriesInfo name="Internet-Draft" value="draft-galvin-regext-epp-variants-01"/>
    <author initials="J." surname="Galvin" fullname="James Galvin">
      <organization>Identity Digital</organization>
      <address>
        <postal>
          <city>Bellevue</city>
          <country>US</country>
        </postal>
        <email>jgalvin@identity.digital</email>
      </address>
    </author>
    <author initials="M." surname="Bauland" fullname="Michael Bauland">
      <organization>Knipp Medien und Kommunikation GmbH</organization>
      <address>
        <postal>
          <city>Dortmund</city>
          <country>Germany</country>
        </postal>
        <email>michael.bauland@knipp.de</email>
      </address>
    </author>
    <date year="2025" month="July" day="02"/>
    <area>Applications</area>
    <workgroup>EXTRA</workgroup>
    <keyword>EPP</keyword>
    <abstract>
      <?line 41?>

<t>This document defines an EPP extension allowing clients to learn about
and manipulate variant groups of domains, ie. groups of domains whose
names are equivalent in a registry-defined way and are tied to a
single registrant.</t>
    </abstract>
  </front>
  <middle>
    <?line 48?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Spelling is not necessarily uniform. For example, an è and an e may be
regarded as equivalent in some languages, and as different in others.</t>
      <t>Some registries plan to support this explicitly, with groups of
variant domains that can only be registered by the same registrant.</t>
      <t>This document defines an EPP extension allowing clients to learn about
and manipulate variant groups. (EPP is defined in <xref target="RFC5730"/>.)</t>
      <t>Registering a domain creates a variant group and the first domain in
the group becomes the group's primary domain. Subsequent domains in
the same group can only be registered by the same registrar, which
asserts that it is acting on behalf of the same registrant. Domains in
a variant group are transferred or deleted together with the primary
domain. The remainder of this document describes the specific details.</t>
    </section>
    <section anchor="requirements-language">
      <name>Requirements Language</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="terms">
      <name>Terms</name>
      <t>Label Generation Rules (LGR): A standard way of defining IDN tables.
Among others, they define the variant relationships as well as their
disposition values (blocked or allocatable).</t>
      <t>Variant group: An implicit set of domains defined by the Label
Generation Rule (LGR) of the registry. The variant relationship is
symmetric and transitive. Hence, an arbitrary element of a variant set
defines the whole set. This set is not expressed explicitly in EPP,
because it can be impractically large. At the time of writing, a domain
is registered whose variant set would contain 10¹⁵ variants.</t>
      <t>Primary domain: The chronologically first domain in a variant group.
While the variant relationship is symmetric, its disposition value is not.
It can either be blocked or allocatable. The primary domain name therefore
partitions the variant group into allocatable variants and blocked variants.
In case of variant TLDs, there can be a primary domain per TLD.</t>
      <t>Variant domain: A domain in a variant group which is not a primary domain.</t>
      <t>Allocated variant: A domain that has been created in the registry, and
which is tied to an existing primary domain.</t>
      <t>Allocatable variant: A domain that has not been allocated but is allocatable
(according to the LGR), and which is conceptually tied to an existing
primary domain.</t>
      <t>Activated variant: An allocated domain that is in the DNS.
<strong>TODO</strong>: Do we need to differentiate between allocated and activated? Does it
make any difference, whether a variant has DNS name servers or not?</t>
      <t>Exempted domain: A preexisting domain that exists as a stand-alone domain,
but would be part of a variant group if it were allocated now. The same
entity principle does not apply to exempted domains. The exemption stops
as soon as at most 1 allocated domain remains within a variant group.</t>
      <t>Blocked domain: A domain that cannot be allocated due to its disposition
value in relation to the primary domain name.</t>
    </section>
    <section anchor="epp-commands">
      <name>EPP Commands</name>
      <section anchor="epp-ltcheckgt-command">
        <name>EPP &lt;check&gt; command</name>
        <t><strong>TODO</strong>: probably better not to have a command extension. For Registrars, it
would be difficult to determine the suitable primary domain. Therefore,
it is better to not ask them to send it, but rather return the appropriate
primary domain name in the response.</t>
        <t>`This extension defines a new command called the Variant Check Command
that defines an additional primary domain name element for the EPP
&lt;check&gt; command.</t>
        <t>The command <bcp14>MAY</bcp14> contain an &lt;extension&gt; element, which <bcp14>MUST</bcp14> contain a
&lt;var:check&gt; element. The &lt;var:check&gt; element <bcp14>MUST</bcp14> contain one
&lt;var:primary&gt; element containing the intended primary domain.</t>
        <artwork><![CDATA[
C: <?xml version="1.0" encoding="utf-8" standalone="no"?>
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
C:   <command>
C:     <check>
C:       <domain:check
C:         xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
C:         <domain:name>examplev1.com</domain:name>
C:         <domain:name>examplev1.net</domain:name>
C:         <domain:name>examplev1.xyz</domain:name>
C:       </domain:check>
C:     </check>
C:     <extension>
C:       <var:check xmlns:var="urn:ietf:params:xml:ns:epp:variants-1.0">
C:         <var:primary>example.com<var:primary>
C:       </var:check>
C:     </extension>
C:     <clTRID>ABC-12345</clTRID>
C:   </command>
C: </epp>`
]]></artwork>
        <t>For the response, there is a distinction between variant-aware
clients (having supplied this extension durin the EPP &lt;login&gt;)
and clients that are agnostic of variants.</t>
        <t>When the server receives a &lt;check&gt; command from a
variant-agnostic client and any domain within the checked domain's
variant group is allocated (or at least one exempted
domain within the variant group exists) the server <bcp14>MUST NOT</bcp14> include
an &lt;extension&gt; element. Instead, its response <bcp14>MUST</bcp14>
be available = "false". The optional reason <bcp14>MAY</bcp14> be
"Unavailable (except as variant)" to tell the registrar it
might be available as a variant.</t>
        <t>When the server receives a &lt;check&gt; command from a variant-aware
client and the checked domain is part of a variant group with at least one
allocated variant (or exempted domain),
its response <bcp14>MUST</bcp14> contain an &lt;extension&gt; element, which <bcp14>MUST</bcp14>
contain a child &lt;var:chkData&gt; element. The &lt;fee:chkData&gt;
element <bcp14>MUST</bcp14> contain a &lt;var:cd&gt; element for each object referenced in
the client &lt;check&gt; command.</t>
        <t>Each &lt;var:cd&gt; (check data) element <bcp14>MUST</bcp14> contain the following child
elements:</t>
        <ul spacing="normal">
          <li>
            <t>A &lt;var:objID&gt; element, which <bcp14>MUST</bcp14> match an element referenced in
the client &lt;check&gt; command.</t>
          </li>
          <li>
            <t>An <bcp14>OPTIONAL</bcp14> &lt;var:primary&gt; element.</t>
          </li>
          <li>
            <t>A &lt;var:status&gt; element, which explains in more detail the availability
status of the queried domain.</t>
          </li>
        </ul>
        <t>Example &lt;check&gt; response:</t>
        <artwork><![CDATA[
S: <?xml version="1.0" encoding="utf-8" standalone="no"?>
S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
S:   <response>
S:     <result code="1000">
S:       <msg>Command completed successfully</msg>
S:     </result>
S:     <resData>
S:       <domain:chkData
S:         xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
S:         <domain:cd>
S:           <domain:name avail="1">examplev1.com</domain:name>
S:         </domain:cd>
S:         <domain:cd>
S:           <domain:name avail="0">examplev1.net</domain:name>
S:         </domain:cd>
S:         <domain:cd>
S:           <domain:name avail="0">examplev1.tel</domain:name>
S:         </domain:cd>
S:         <domain:cd>
S:           <domain:name avail="0">examplev1.swiss</domain:name>
S:         </domain:cd>
S:       </domain:chkData>
S:     </resData>
S:     <extension>
S:       <var:chkData
S:           xmlns:var="urn:ietf:params:xml:ns:epp:variants-1.0">
S:         <var:cd avail="1">
S:           <var:objID>example.com</var:objID>
S:           <var:primary>example.com</var:primary>
S:           <var:status>AllocatableVariant</var:status>
S:         </var:cd>
S:         <var:cd avail="0">
S:           <var:objID>example.net</var:objID>
S:           <var:status>NotSameEntity</var:status>
S:         </var:cd>
S:         <var:cd avail="0">
S:           <var:objID>example.tel</var:objID>
S:           <var:status>Blocked</var:status>
S:         </var:cd>
S:         <var:cd avail="0">
S:           <var:objID>example.swiss</var:objID>
S:           <var:status>PendingTransfer</var:status>
S:         </var:cd>
S:       </var:chkData>
S:     </extension>
S:     <trID>
S:       <clTRID>ABC-12345</clTRID>
S:       <svTRID>54322-XYZ</svTRID>
S:     </trID>
S:   </response>
S: </epp>
]]></artwork>
        <t>The EPP &lt;check&gt; command may return five new results:</t>
        <ul spacing="normal">
          <li>
            <t>The domain cannot be provisioned because it is a variant of a
primary domain, and the primary domain belongs to a different client<br/>
=&gt; NotSameEntity</t>
          </li>
          <li>
            <t>The domain cannot be provisioned because its disposition value is blocked.<br/>
=&gt; Blocked</t>
          </li>
          <li>
            <t>The domain cannot be provisioned because it is a variant of at
least one exempted domain.<br/>
=&gt; Exempted</t>
          </li>
          <li>
            <t>The domain cannot be provisioned because it is a variant in a group
that is currently being transferred to a different registrar.<br/>
=&gt; PendingTransfer</t>
          </li>
          <li>
            <t>Additional custom value that may be used for server peculiarities.<br/>
=&gt; Custom</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="epp-ltinfogt-command">
      <name>EPP &lt;info&gt; command</name>
      <t>Just like with the &lt;check&gt; there needs to be a distinction between
variant-aware and variant-agnostic clients. For variant-agnostic clients
there is no change to the standard behaviour. The response contains the
actual data of the domain, independent of the fact whether it is a variant
or not.</t>
      <t>For variant-aware clients, the EPP &lt;info&gt; command is not extended,
but its response is extended
if the &lt;info&gt; command concerns a variant domain, i.e., at least two
domains within a variant gruop have been activated. The response then always
<bcp14>MUST</bcp14> include all primary domain names across any variant TLDs. Optionally
the response may include the list of all activated variants (across
all variant TLDs).</t>
      <t>In case a primary domain name is queried in the &lt;info&gt; command,
the list of activated variants within the same TLD <bcp14>MUST</bcp14> be returned.</t>
      <t>In other words:
* If you ask about a primary domain name
  * you must return all existing primaries
  * you must return all activated variants in that TLD
  * you may return all activated variants in all variant TLDs</t>
      <ul spacing="normal">
        <li>
          <t>if you ask about a variant
          </t>
          <ul spacing="normal">
            <li>
              <t>you must return the primary label for that variant</t>
            </li>
            <li>
              <t>you must return all primary labels in all variant TLDs</t>
            </li>
            <li>
              <t>you may return all activated variants in that TLDs</t>
            </li>
            <li>
              <t>you may return all activated variants in all variant TLDs</t>
            </li>
          </ul>
        </li>
      </ul>
      <t>The main part of the response <bcp14>MUST</bcp14> contain the actual data of the queried
domain name
(contacts, hosts, status values, etc.)`</t>
      <t>TODO: check whether EPP spec says anything about the alignment of check and info.</t>
      <t>For registrars not supporting variants:
inquiring about a non-allocated variant should have the similar result as
inquiring about a reserved name.
If you don't have a policy, suggest a policy.</t>
      <t>TODO XML example of response</t>
    </section>
    <section anchor="epp-lttransfergt-command">
      <name>EPP &lt;transfer&gt; command</name>
      <t>In order to have a safeguard for variant-agnostic clients to not
accidentally transfer a bundle of domains when initiating a transfer-in,
the EPP &lt;transfer&gt; command is extended to include a flag
"include-all-variants". If the flag is set to true, the server knows that
the client is aware of variants and willing to include them within the
requested transfer. In case the flag is set to false (or the extension
is missing), the client is expecting to just transfer the single domain.</t>
      <t>The &lt;transfer&gt; is extended to include the full list of activated
variants accross all TLDs that are transferred together with the main
domain. This allows the gaining client to prepare those variant domains
in its local database.</t>
      <t>It is up to the server policy to define whether a variant group can
only be transferred in case the (a?) primary domain is used in the
request.</t>
    </section>
    <section anchor="epp-ltcreategt-command">
      <name>EPP &lt;create&gt; command</name>
      <t>The EPP &lt;create&gt; command may have three new errors, as described
in the &lt;check&gt; section above.</t>
      <t>The EPP &lt;create&gt; command's task is to provision a new normal
domain. The task of converting an allocatable domain into an allocated
domain is instead performed using the update command.</t>
    </section>
    <section anchor="epp-ltupdategt-command">
      <name>EPP &lt;update&gt; command</name>
      <t>The EPP &lt;update&gt; command is extended to cover two new major
tasks:</t>
      <t>When an EPP client wishes to provision a new domain in a variant
group, it uses the &lt;update&gt; command rather than the
&lt;create&gt; command. This informs the EPP server that the client
understands that the task is to provision a variant domain rather than
a new normal domain, and asserts that the two domains belong to the
same registrant.</t>
      <t>Note that depending on registry policy, the variant domain may
e.g. share name servers with the primary domain. This implies that the
set of elements required/permitted for a variant domain may differ
from that of a primary domain or a normal domain.</t>
      <t>TODO update XML that shows the primary domain specified</t>
      <t>When an EPP client wishes to turn an exempted domain into a
primary domain, it issues an &lt;update&gt; command including the list
of variant domains, which the EPP client thereby asserts belong to the
same registrant.</t>
      <t>TODO update XML that shows the list of variant domains specified</t>
    </section>
    <section anchor="epp-ltdeletegt-command">
      <name>EPP &lt;delete&gt; command</name>
      <t>The EPP &lt;delete&gt; command is extended with one new task: Deleting the
primary domain deletes all allocated variant groups along with the
primary domain.</t>
      <t>Deleting a variant group other than the primary deletes just that
domain.</t>
    </section>
    <section anchor="epp-renew-command">
      <name>EPP renew command</name>
      <t>The EPP renew command is not extended.</t>
      <t>The server <bcp14>MAY</bcp14> reject renewals while a variant group is being
transferred.</t>
    </section>
    <section anchor="epp-lttransfergt-query-command">
      <name>EPP &lt;transfer&gt; query command</name>
      <t>The EPP &lt;transfer&gt; query command is not extended.</t>
      <t>Note that because variant groups are transferred as a group, the
result of the a &lt;transfer&gt; query command is necessarily the same
for all domains in a group. Therefore, the result of &lt;transfer&gt;
query command for any domain in a variant group applies to all domains
in the group.</t>
    </section>
    <section anchor="result-codes">
      <name>Result codes</name>
      <t>The following additional result codes are defined:</t>
      <t>23x1: Change impossible because of a transfer in progress.</t>
      <t>23x2: Change impossible because something is not a variant.</t>
      <t>This error code is used when a change presupposes that two domains
belong to the same variant group, but the EPP server's implementation
disagrees.</t>
      <t>23x3: Change impossible due to invalid primary domain</t>
      <t>This error code is used when the primary domain specified in the
command is not registered, or is not registered via this registrar.</t>
      <t>23x4: Change impossible due to unspecified primary domain</t>
      <t>This error code is used when a command needs to specify a primary
domain, and does not.</t>
      <t>23x5: Specified domain is exempted</t>
      <t>This error code is used when a domain specifies a primary domain, and
the change is impossible because the specified domain is exempted
instead.</t>
      <t>23x6: Specified domain is allocatable, but not by you.</t>
      <t>This result code is used when a domain is a member of a variant set,
and the command did not refer to the primary domain.</t>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The design of this extension is almost completely based on work done
by and decisions made by the <xref target="EPDP"/> committee, chaired by James
Galvin. This text (in RFC format) was initially written by Arnt
Gulbrandsen based on a conference presentation by James Galvin.</t>
      <t>Edmon Chung, [YOUR NAME HERE] have reviewed it, provided helpful
comments or contributed in other ways.</t>
    </section>
    <section anchor="Security">
      <name>Security Considerations</name>
      <t>If two domains are different according to the DNS rules and identical
in the eyes of the intended audience, then the audience may be
confused. Confusion can always have security-related effects.</t>
      <t>This extension expresses the relationships between variants clearly,
making it a little more difficult for a would-be impersonator to
register a variant of another registrant's existing domain.</t>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC5730">
          <front>
            <title>Extensible Provisioning Protocol (EPP)</title>
            <author fullname="S. Hollenbeck" initials="S." surname="Hollenbeck"/>
            <date month="August" year="2009"/>
            <abstract>
              <t>This document describes an application-layer client-server protocol for the provisioning and management of objects stored in a shared central repository. Specified in XML, the protocol defines generic object management operations and an extensible framework that maps protocol operations to objects. This document includes a protocol specification, an object mapping template, and an XML media type registration. This document obsoletes RFC 4930. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="69"/>
          <seriesInfo name="RFC" value="5730"/>
          <seriesInfo name="DOI" value="10.17487/RFC5730"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC7940">
          <front>
            <title>Representing Label Generation Rulesets Using XML</title>
            <author fullname="K. Davies" initials="K." surname="Davies"/>
            <author fullname="A. Freytag" initials="A." surname="Freytag"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>This document describes a method of representing rules for validating identifier labels and alternate representations of those labels using Extensible Markup Language (XML). These policies, known as "Label Generation Rulesets" (LGRs), are used for the implementation of Internationalized Domain Names (IDNs), for example. The rulesets are used to implement and share that aspect of policy defining which labels and Unicode code points are permitted for registrations, which alternative code points are considered variants, and what actions may be performed on labels containing those variants.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7940"/>
          <seriesInfo name="DOI" value="10.17487/RFC7940"/>
        </reference>
        <reference anchor="EPDP" target="https://www.icann.org/en/public-comment/proceeding/phase-2-initial-report-of-the-epdp-on-internationalized-domain-names-11-04-2024">
          <front>
            <title>Phase 2 Initial Report of the EPDP on Internationalized Domain Names</title>
            <author initials="" surname="ICANN" fullname="ICANN">
              <organization/>
            </author>
            <date year="2024"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 461?>

<section anchor="open-issues">
      <name>Open issues</name>
      <t>Open issue: Assign numbers to the error codes, properly.</t>
      <t>Open issue: Not clear that there are any security considerations here
— the relationships between the domains may have some, but those exist
outside EPP, EPP merely describes them. In Italian, caffe and caffè
are variants of the same thing, it's not clear that linking them in a
protocol affects security in any way.</t>
      <t>Open issue: Check how to insert a DS record in a variant domain.</t>
      <t>Open issue: Can a unicode upgrade cause domains to become
exempted?  Yes, I think, and the terminology covers it, but as of
now, it's difficult for the EPP client to understand the situation.
Extending the &lt;info&gt; command would help here, perhaps.</t>
      <t>Open issue: Creating a primary domain now consists of a two-step
process, &lt;create&gt; and then &lt;update&gt;. The first step turns
all variants into blocked domains, the second makes them
allocatable. It's not clear to me why the two-step process is
desirable, compared to a one-step process where a &lt;create&gt;
command creates a primary domain if the variant group contains other
domains than that one. That needs a couple of sentences of
explanation, or else a change.</t>
      <t>Open issue: &lt;Delete&gt; now cascades and deletes many domains.
Should it instead turn any variant domains into exempted domains?</t>
      <t>Open issue: Should the &lt;info&gt; of the primary domain also return
the list of allocated variants? Probably not — at the moment, this
extension has the client send a set that the server checks, and the
server may need to generate a set for checking, but the server does
not need to generate a list for returning.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
ut+s8K+YYPlY/D+gVT3yFUcAAA==

-->

</rfc>
