Subject: [regext] Validate Extension (draft-carney-regext-validate-00)

From: Roger D Carney <[email-masked]>
Date: Tue, 11 Oct 2016 20:20:18 +0000

Good Afternoon,

During our process of creating this draft we iterated through several possible solutions and the solution we eventually published<https://datatracker.ietf.org/doc/draft-carney-regext-validate/> was mostly to mitigate any concerns of "over loading" the <check> command with more processing.

After several discussions with Registries over the past couple months we have confirmed that there is no or very little concern over the use of the <check> command for the Validate extension.

So prior to updating the Validate draft I wanted to get some feedback from the group on which proposed solution is more desirable, the currently published draft<https://datatracker.ietf.org/doc/draft-carney-regext-validate/> or using the <check> command with the Validate extension like below.

Thanks
Roger

Validate Check Command:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
  xmlns:validate="urn:ietf:params:xml:ns:validate-0.1"
  xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
  <command>
    <check>
      <validate:check>
        <validate:contact contactType="registrant" tld="COM">
          <validate:cd>
            <validate:id>sh8013</validate:id>
            <validate:postalInfo type="int">
              <contact:name>John Doe</contact:name>
              <contact:org>Example Inc.</contact:org>
              <contact:addr>
                <contact:street>123 Example Dr.</contact:street>
                <contact:street>Suite 100</contact:street>
                <contact:city>Dulles</contact:city>
                <contact:sp>VA</contact:sp>
                <contact:pc>20166-6503</contact:pc>
                <contact:cc>US</contact:cc>
              </contact:addr>
            </validate:postalInfo>
            <validate:voice>+1.7035555555</validate:voice>
            <validate:fax>+1.7035555556</validate:fax>
            <validate:email>[email-masked]</validate:email>
            <validate:authInfo>
              <contact:pw>2fooBAR</contact:pw>
            </validate:authInfo>
            <validate:disclose flag="0">
              <contact:voice/>
              <contact:email/>
            </validate:disclose>
          </validate:cd>
          <validate:kv key="VAT" value="1234567890"/>
        </validate:contact>
        <validate:contact contactType="tech" tld="COM">
          <validate:cd>
            <validate:id>sh8013</validate:id>
          </validate:cd>
        </validate:contact>
        <validate:contact contactType="admin" tld="COM">
          <validate:cd>
            <validate:id>sh8014</validate:id>
            <validate:postalInfo type="int">
              <contact:name>John Doe</contact:name>
              <contact:org>Example Inc.</contact:org>
              <contact:addr>
                <contact:street>123 Example Dr.</contact:street>
                <contact:street>Suite 100</contact:street>
                <contact:city>Dulles</contact:city>
                <contact:sp>VA</contact:sp>
                <contact:pc>20166-6503</contact:pc>
                <contact:cc>US</contact:cc>
              </contact:addr>
            </validate:postalInfo>
            <validate:voice>+1.7035555555</validate:voice>
            <validate:fax>+1.7035555556</validate:fax>
            <validate:email>[email-masked]</validate:email>
            <validate:authInfo>
              <contact:pw>2fooBAR</contact:pw>
            </validate:authInfo>
            <validate:disclose flag="0">
              <contact:voice/>
              <contact:email/>
            </validate:disclose>
          </validate:cd>
        </validate:contact>
        <validate:contact contactType="billing" tld="COM">
          <validate:cd>
            <validate:id>sh8014</validate:id>
          </validate:cd>
        </validate:contact>
      </validate:check>
    </check>
    <clTRID>ABC-12345</clTRID>
  </command>
</epp>

Validate Check Response:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <resData>
      <validate:chkData
        xmlns:validate="urn:ietf:params:xml:ns:validate-0.1">
        <validate:cd>
          <validate:id>sh8013</validate:id>
          <validate:response>1000</validate:response>
        </validate:cd>
        <validate:cd>
          <validate:id>sh8014</validate:id>
          <validate:response>2306</validate:response>
          <validate:kv key="contact:city" value="City not valid
            for state."/>
          <validate:kv contactType="Admin" key="contact:cc"
            value="Invalid country code for admin, must be mx."/>
          <validate:kv contactType="Billing" key="VAT" value="VAT
            required for Billing contact."/>
        </validate:cd>
      </validate:chkData>
    </resData>
    <trID>
      <clTRID>ABC-12345</clTRID>
      <svTRID>54321-ZYX</svTRID>
    </trID>
  </response>
</epp>

<?xml version="1.0" encoding="UTF-8"?>
<schema
   targetNamespace="urn:ietf:params:xml:ns:validate-0.1"
   xmlns:validate="urn:ietf:params:xml:ns:validate-0.1"
   xmlns:epp="urn:ietf:params:xml:ns:epp-1.0"
   xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
   xmlns:contact="urn:ietf:params:xml:ns:contact-1.0"
   xmlns="http://www.w3.org/2001/XMLSchema"
   elementFormDefault="qualified">

   <annotation>
     <documentation>
       Extensible Provisioning Protocol v1.0
       Validate Object Extension
     </documentation>
   </annotation>

   <!-- Import common element types. -->
   <import namespace="urn:ietf:params:xml:ns:eppcom-1.0"
     schemaLocation="eppcom-1.0.xsd"/>
   <import namespace="urn:ietf:params:xml:ns:epp-1.0"
     schemaLocation="epp-1.0.xsd"/>
   <import namespace="urn:ietf:params:xml:ns:contact-1.0"
     schemaLocation="contact-1.0.xsd"/>

<!--
Child elements of the <check> command.
-->
   <element name="check" type="validate:checkType"/>

   <complexType name="checkType">
     <sequence>
       <element name="contact"
         type="validate:validateContactType"
         maxOccurs="unbounded" />
     </sequence>
   </complexType>

   <complexType name="validateContactType">
     <sequence>
       <element name="cd"
         type="validate:checkDataType"/>
       <element name="kv"
         type="validate:kvType" minOccurs="0"
         maxOccurs="unbounded" />
     </sequence>
     <attribute name="contactType" type="eppcom:labelType"
       use="required"/>
     <attribute name="tld"
       type="eppcom:labelType" use="required"/>
   </complexType>

   <complexType name="checkDataType">
     <sequence>
       <element name="id"
         type="eppcom:clIDType" />
       <element name="postalInfo"
         type="contact:postalInfoType"
         minOccurs="0" maxOccurs="2" />
       <element name="voice"
         type="contact:e164Type" minOccurs="0" />
       <element name="fax"
         type="contact:e164Type" minOccurs="0" />
       <element name="email"
         type="eppcom:minTokenType" minOccurs="0"/>
       <element name="authInfo"
         type="contact:authInfoType"
         minOccurs="0"/>
       <element name="disclose"
         type="contact:discloseType"
         minOccurs="0" />
     </sequence>
   </complexType>

   <complexType name="kvType">
     <attribute name="contactType"
       type="eppcom:labelType" use="optional" />
     <attribute name="key"
       type="validate:keyType" use="required" />
    <attribute name="value"
       type="validate:valueType" use="required" />
   </complexType>

   <simpleType name="keyType">
     <restriction base="token">
       <minLength value="1" />
     </restriction>
   </simpleType>

   <simpleType name="valueType">
     <restriction base="token">
       <minLength value="0" />
     </restriction>
   </simpleType>

<!--
Child elements of the <check> response.
-->
   <element name="chkData" type="validate:chkDataType" />

   <complexType name="chkDataType">
     <sequence>
       <element name="cd"
         type="validate:resCreateDataType" maxOccurs="unbounded" />
     </sequence>
   </complexType>

   <complexType name="resCreateDataType">
     <sequence>
       <element name="id"
         type="eppcom:clIDType" />
       <element name="response"
         type="epp:resultCodeType" />
       <element name="kv"
         type="validate:kvType"
         minOccurs="0" maxOccurs="unbounded" />
     </sequence>
   </complexType>

</schema>

---

From: "Gould, James" <[email-masked]>
Date: Wed, 12 Oct 2016 12:43:04 +0000

Roger, 

I support your updated proposal of creating a Validate object extension with support for the check command and response.  
  
—

JG

James Gould
Distinguished Engineer
[email-masked] <applewebdata://9FE0D0A9-5C51-4443-9C67-A571030C6CC6/[email-masked]>

703-948-3271
12061 Bluemont Way
Reston, VA 20190

VerisignInc.com <http://verisigninc.com/>
> On Oct 11, 2016, at 4:20 PM, Roger D Carney <[email-masked]> wrote:
> 
> Good Afternoon,
>  
> During our process of creating this draft we iterated through several possible solutions and the solution we eventually published <https://datatracker.ietf.org/doc/draft-carney-regext-validate/> was mostly to mitigate any concerns of “over loading” the <check> command with more processing.
>  
> So prior to updating the Validate draft I wanted to get some feedback from the group on which proposed solution is more desirable, the currently published draft <https://datatracker.ietf.org/doc/draft-carney-regext-validate/> or using the <check> command with the Validate extension like below.
>  
>  
> Thanks
> Roger
>  
>  
> Validate Check Command:
>             <validate:email>[email-masked] <mailto:[email-masked]></validate:email>
>             <validate:authInfo>
>             <validate:email>[email-masked] <mailto:[email-masked]></validate:email>
>             <validate:authInfo>
>    xmlns="http://www.w3.org/2001/XMLSchema <http://www.w3.org/2001/XMLSchema>"
> _______________________________________________
> regext mailing list
> [email-masked] <mailto:[email-masked]>
> https://www.ietf.org/mailman/listinfo/regext <https://www.ietf.org/mailman/listinfo/regext>