Proposal: A method in EPP for registry policy discovery

Keith Gaughan <[email protected]>
Newsgroups gmane.ietf.provreg
Organization Blacknight Internet Solutions
Message-ID <[email protected]>
This proposal comes out of the comments Jothan has been making recently, which
I agree wholeheartedly with.

As a registrar, one of our great problems registry policy discovery. This is
of particular importance with it comes to ccTLDs, whose policies can vary
drastically. For instance:

 * what commands does the registry support with particular objects,
 * what is the lifecycle of a domain in a particular zone,
 * does removing a domain from redemption incur a cost to the registrar,
 * how long after registration, transfer, and renewal must it be before a
   domain can be transferred or renewed,
 * what periods does a registry support for registrations, transfers, and
   renewals,
 * does the registry support the poll command,
 * for contacts, which types does the <postalInfo> element support (this is a
   crapshoot and registries, in my experience, never document this),
 * does the registry support registrant modification,
 * are there per-command limits.

These are just the ones I could think of off the top of my head.

For this, I'd propose a command, possibly called <policy>, which would work
along the following lines. This would take a single child element, either
<objURI> or <extURI>, which would contain the URI of the object or extension
whose policy is being queried. For example, here are some rough sketches of
response:

REQ:
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <policy>
    <objURI>urn:ietf:params:xml:ns:epp-1.0</objURI>
  </policy>
</epp>

RES:
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <polData>
      <policy>
        <supports>
          <hello/>
          <login/>
          <logout/>
          <poll/>
        </supports>
      </policy>
    </polData>
  </response>
</epp>

REQ:
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <policy>
    <objURI>urn:ietf:params:xml:ns:domain-1.0</objURI>
  </policy>
</epp>

RES:
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <polData>
      <domain:policy xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
        <domain:supports>
          <!-- No support for <domain:check> as the registry expects
               registrars to use an external DAC service -->
          <domain:info/>
          <domain:create/>
          <domain:transfer/>
          <!-- This registry supports autorenewal, but not renewal,
               thus <domain:renew> is omitted. -->
          <!-- Omitting <domain:delete> would be like declaring that
               registry requires explicit renewal -->
          <domain:delete/>
          <domain:update/>
        </domain:supports>
        <!-- One or more of these, one for each supported zone -->
        <domain:zone name="gy">
          <!-- Information on the lifecycle such as, supported extension
               periods, maximum period a domain may be renewed up to, &c.
               -->
          <domain:create>
            <domain:period unit="y" default="yes">1</domain:period>
          </domain:create>
          <domain:transfer>
            <!-- Registry supports free transfers only -->
            <domain:period default="yes">0</domain:period>
          </domain:transfer>
          <!-- &c. -->
        </domain:zone>
      </domain:policy>
    </polData>
  </response>
</epp>

REQ:
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <policy>
    <extURI>urn:ietf:params:xml:ns:rgp-1.0</extURI>
  </policy>
</epp>

RES:
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <polData>
      <rgp:policy xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0">
        <!-- One or more of these, one for each supported zone -->
        <rgp:zone name="gy">
          <!-- Subset of statusValueType - I'm riffing off of CoCCA's
               Pricing and Policy pages here -->
          <rgp:period s="addPeriod" length="1" refund="14"/>
          <rgp:period s="renewPeriod" length="1" refund="14"/>
          <rgp:period s="autoRenewPeriod" length="0" refund="0"/>
          <rgp:period s="transferPeriod" length="0" refund="0"/>
          <rgp:period s="redemptionPeriod" length="28" refund="0"
                      hasRestoreFee="yes"/>
        </rgp:zone>
      </rgp:policy>
    </polData>
  </response>
</epp>

As I said, this is just a rough sketch and needs a lot of work, but I believe
the basic idea to be sound. I'm very much open to any input.

If this is too invasive to the protocol, an alternative would be to have a
standard machine-readable format for registries to publish this information.

-- 
Keith Gaughan, Software Developer
PGP/GPG key ID: 3E896381
Blacknight Internet Solutions Ltd. <http://blacknight.com/>
12A Barrowside Business Park, Carlow, Ireland
Registered in Ireland, Company No.: 370845
_______________________________________________
provreg mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/provreg
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.