internetee/registry

View on GitHub
lib/schemas/domain-ee-1.2.xsd

Summary

Maintainability
Test Coverage
<?xml version="1.0" encoding="UTF-8"?>

<schema targetNamespace="https://epp.tld.ee/schema/domain-ee-1.2.xsd"
     xmlns:domain="https://epp.tld.ee/schema/domain-ee-1.2.xsd"
     xmlns:host="urn:ietf:params:xml:ns:host-1.0"
     xmlns:epp="https://epp.tld.ee/schema/epp-ee-1.0.xsd"
     xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
     xmlns="http://www.w3.org/2001/XMLSchema"
     elementFormDefault="qualified">

<!--
Import common element types.
-->
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0"/>
<import namespace="https://epp.tld.ee/schema/epp-ee-1.0.xsd"/>
<import namespace="urn:ietf:params:xml:ns:host-1.0"/>
<import namespace="urn:ietf:params:xml:ns:secDNS-1.1"/>
<import namespace="https://epp.tld.ee/schema/eis-1.0.xsd"/>

<annotation>
  <documentation>
    Extensible Provisioning Protocol v1.0
    domain provisioning schema.
  </documentation>
</annotation>

<!--
Child elements found in EPP commands.
-->
<element name="check" type="domain:mNameType"/>
<element name="create" type="domain:createType"/>
<element name="delete" type="domain:deleteType"/>
<element name="info" type="domain:infoType"/>
<element name="renew" type="domain:renewType"/>
<element name="transfer" type="domain:transferType"/>
<element name="update" type="domain:updateType"/>

<!--
Child elements of the <create> command.
-->
<complexType name="createType">
  <sequence>
    <element name="name" type="eppcom:labelType"/>
    <element name="period" type="domain:periodType"
     minOccurs="0"/>
    <element name="ns" type="domain:nsType"
     minOccurs="0"/>
    <element name="registrant" type="eppcom:clIDType"
     minOccurs="0"/>
    <element name="contact" type="domain:contactType"
     minOccurs="0" maxOccurs="unbounded"/>
    <element name="authInfo" type="domain:authInfoType" minOccurs="0"/>
  </sequence>
</complexType>

<complexType name="periodType">
  <simpleContent>
    <extension base="domain:pLimitType">
      <attribute name="unit" type="domain:pUnitType"
       use="required"/>
    </extension>
  </simpleContent>
</complexType>

<simpleType name="pLimitType">
  <restriction base="unsignedShort">
    <minInclusive value="1"/>
    <maxInclusive value="1095"/>
  </restriction>
</simpleType>

<simpleType name="pUnitType">
  <restriction base="token">
    <enumeration value="y"/>
    <enumeration value="m"/>
    <enumeration value="d"/>
  </restriction>
</simpleType>

<complexType name="nsType">
  <choice>
    <element name="hostObj" type="eppcom:labelType"
     maxOccurs="unbounded"/>
    <element name="hostAttr" type="domain:hostAttrType"
     maxOccurs="unbounded"/>
  </choice>
</complexType>
<!--
Name servers are either host objects or attributes.
-->

<complexType name="hostAttrType">
  <sequence>
    <element name="hostName" type="eppcom:labelType"/>
    <element name="hostAddr" type="host:addrType"
     minOccurs="0" maxOccurs="unbounded"/>
  </sequence>
</complexType>
<!--
If attributes, addresses are optional and follow the
structure defined in the host mapping.
-->

<complexType name="contactType">
  <simpleContent>
    <extension base="eppcom:clIDType">
      <attribute name="type" type="domain:contactAttrType"/>
    </extension>
  </simpleContent>
</complexType>

<simpleType name="contactAttrType">
  <restriction base="token">
    <enumeration value="admin"/>
    <enumeration value="billing"/>
    <enumeration value="tech"/>
  </restriction>
</simpleType>

<complexType name="authInfoType">
  <choice>
    <element name="pw" type="eppcom:pwAuthInfoType"/>
    <element name="ext" type="eppcom:extAuthInfoType"/>
  </choice>
</complexType>

<!--
Child element of commands that require a single name.
-->
<complexType name="sNameType">
  <sequence>
    <element name="name" type="eppcom:labelType"/>
  </sequence>
</complexType>
<!--
Child element of commands that accept multiple names.
-->
<complexType name="mNameType">
  <sequence>
    <element name="name" type="eppcom:labelType"
     maxOccurs="unbounded"/>
  </sequence>
</complexType>

<!--
Child element of the <delete> command - .ee specific (verified)
-->
<complexType name="deleteType">
  <sequence>
    <element name="name" type="eppcom:labelType"/>
  </sequence>
  <attribute name="verified" type="domain:verifiedType"
   use="optional"/>
</complexType>

<!--
Child elements of the <info> command.
-->
<complexType name="infoType">
  <sequence>
    <element name="name" type="domain:infoNameType"/>
    <element name="authInfo" type="domain:authInfoType"
     minOccurs="0"/>
  </sequence>
</complexType>

<complexType name="infoNameType">
  <simpleContent>
    <extension base = "eppcom:labelType">
      <attribute name="hosts" type="domain:hostsType"
       default="all"/>
    </extension>
  </simpleContent>
</complexType>

<simpleType name="hostsType">
  <restriction base="token">
    <enumeration value="all"/>
    <enumeration value="del"/>
    <enumeration value="none"/>
    <enumeration value="sub"/>
  </restriction>
</simpleType>

<!--
Child elements of the <renew> command.
-->
<complexType name="renewType">
  <sequence>
    <element name="name" type="eppcom:labelType"/>
    <element name="curExpDate" type="date"/>
    <element name="period" type="domain:periodType"
     minOccurs="0"/>
  </sequence>
 </complexType>

<!--
Child elements of the <transfer> command.
-->
<complexType name="transferType">
  <sequence>
    <element name="name" type="eppcom:labelType"/>
    <element name="period" type="domain:periodType"
     minOccurs="0"/>
    <element name="authInfo" type="domain:authInfoType"
     minOccurs="0"/>
  </sequence>
</complexType>

<!--
Child elements of the <update> command.
-->
<complexType name="updateType">
  <sequence>
    <element name="name" type="eppcom:labelType"/>
    <element name="add" type="domain:addRemType"
     minOccurs="0"/>
    <element name="rem" type="domain:addRemType"
     minOccurs="0"/>
    <element name="chg" type="domain:chgType"
     minOccurs="0"/>
  </sequence>
</complexType>

<!--
Data elements that can be added or removed.
-->
<complexType name="addRemType">
  <sequence>
    <element name="ns" type="domain:nsType"
     minOccurs="0"/>
    <element name="contact" type="domain:contactType"
     minOccurs="0" maxOccurs="unbounded"/>
    <element name="status" type="domain:statusType"
     minOccurs="0" maxOccurs="11"/>
  </sequence>
</complexType>

<!--
Data elements that can be changed.
-->
<complexType name="chgType">
  <sequence>
    <element name="registrant" type="domain:clIDChgType"
     minOccurs="0"/>
    <element name="authInfo" type="domain:authInfoChgType"
     minOccurs="0"/>
  </sequence>
</complexType>

<!--
Allow the registrant value to be nullified by changing the
minLength restriction to "0".
-->

<complexType name="clIDChgType">
  <simpleContent>
    <extension base="domain:clIDChgSimpleType">
      <attribute name="verified" type="domain:verifiedType"/>
    </extension>
  </simpleContent>
</complexType>

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

<simpleType name="verifiedType">
  <restriction base="token">
    <enumeration value="yes"/>
    <enumeration value="no"/>
  </restriction>
</simpleType>

<!--
Allow the authInfo value to be nullified by including an
empty element within the choice.
-->
<complexType name="authInfoChgType">
  <choice>
    <element name="pw" type="eppcom:pwAuthInfoType"/>
    <element name="ext" type="eppcom:extAuthInfoType"/>
    <element name="null"/>
  </choice>
</complexType>

<!--
Child response elements.
-->
<element name="chkData" type="domain:chkDataType"/>
<element name="creData" type="domain:creDataType"/>
<element name="infData" type="domain:infDataType"/>
<element name="panData" type="domain:panDataType"/>
<element name="renData" type="domain:renDataType"/>
<element name="trnData" type="domain:trnDataType"/>

<!--
<check> response elements.
-->
<complexType name="chkDataType">
  <sequence>
    <element name="cd" type="domain:checkType"
     maxOccurs="unbounded"/>
  </sequence>
 </complexType>

<complexType name="checkType">
  <sequence>
    <element name="name" type="domain:checkNameType"/>
    <element name="reason" type="eppcom:reasonType"
     minOccurs="0"/>
  </sequence>
</complexType>

<complexType name="checkNameType">
  <simpleContent>
    <extension base="eppcom:labelType">
      <attribute name="avail" type="boolean"
       use="required"/>
    </extension>
  </simpleContent>
</complexType>

<!--
<create> response elements.
-->
<complexType name="creDataType">
  <sequence>
    <element name="name" type="eppcom:labelType"/>
    <element name="crDate" type="dateTime"/>
    <element name="exDate" type="dateTime"
     minOccurs="0"/>
  </sequence>
</complexType>

<!--
<info> response elements.
-->

<complexType name="infDataType">
  <sequence>
    <element name="name" type="eppcom:labelType"/>
    <element name="roid" type="eppcom:roidType"/>
    <element name="status" type="domain:statusType"
     minOccurs="0" maxOccurs="11"/>
    <element name="registrant" type="eppcom:clIDType"
     minOccurs="0"/>
    <element name="contact" type="domain:contactType"
     minOccurs="0" maxOccurs="unbounded"/>
    <element name="ns" type="domain:nsType"
     minOccurs="0"/>
    <element name="host" type="eppcom:labelType"
     minOccurs="0" maxOccurs="unbounded"/>
    <element name="clID" type="eppcom:clIDType"/>
    <element name="crID" type="eppcom:clIDType"
     minOccurs="0"/>
    <element name="crDate" type="dateTime"
     minOccurs="0"/>
    <element name="upID" type="eppcom:clIDType"
     minOccurs="0"/>
    <element name="upDate" type="dateTime"
     minOccurs="0"/>
    <element name="exDate" type="dateTime"
     minOccurs="0"/>
    <element name="trDate" type="dateTime"
     minOccurs="0"/>
    <element name="authInfo" type="domain:authInfoType"
     minOccurs="0"/>
  </sequence>
</complexType>

<!--
Status is a combination of attributes and an optional
human-readable message that may be expressed in languages other
than English.
-->
<complexType name="statusType">
  <simpleContent>
    <extension base="normalizedString">
      <attribute name="s" type="domain:statusValueType"
       use="required"/>
      <attribute name="lang" type="language"
       default="en"/>
    </extension>
  </simpleContent>
</complexType>

<simpleType name="statusValueType">
  <restriction base="token">
    <enumeration value="clientDeleteProhibited"/>
    <enumeration value="clientHold"/>
    <enumeration value="clientRenewProhibited"/>
    <enumeration value="clientTransferProhibited"/>
    <enumeration value="clientUpdateProhibited"/>
    <enumeration value="inactive"/>
    <enumeration value="ok"/>
    <enumeration value="expired"/>
    <enumeration value="pendingCreate"/>
    <enumeration value="pendingDelete"/>
    <enumeration value="pendingRenew"/>
    <enumeration value="pendingTransfer"/>
    <enumeration value="pendingUpdate"/>
    <enumeration value="pendingDeleteConfirmation"/>
    <enumeration value="serverDeleteProhibited"/>
    <enumeration value="serverHold"/>
    <enumeration value="serverRenewProhibited"/>
    <enumeration value="serverTransferProhibited"/>
    <enumeration value="serverUpdateProhibited"/>
    <enumeration value="serverForceDelete"/>
    <enumeration value="serverManualInzone"/>
    <enumeration value="serverRegistrantChangeProhibited"/>
    <enumeration value="serverAdminChangeProhibited"/>
    <enumeration value="serverTechChangeProhibited"/>
    <enumeration value="deleteCandidate"/>
    <enumeration value="disputed"/>
    <enumeration value="serverReleaseProhibited"/>
    <enumeration value="serverExtensionUpdateProhibited"/>
    <enumeration value="serverObjUpdateProhibited"/>
  </restriction>
</simpleType>

<!--
Pending action notification response elements.
-->
<complexType name="panDataType">
  <sequence>
    <element name="name" type="domain:paNameType"/>
    <element name="paTRID" type="epp:trIDType"/>
    <element name="paDate" type="dateTime"/>
  </sequence>
</complexType>

<complexType name="paNameType">
  <simpleContent>
    <extension base="eppcom:labelType">
      <attribute name="paResult" type="boolean"
       use="required"/>
    </extension>
  </simpleContent>
</complexType>

<!--
<renew> response elements.
-->
<complexType name="renDataType">
  <sequence>
    <element name="name" type="eppcom:labelType"/>
    <element name="exDate" type="dateTime"
     minOccurs="0"/>
  </sequence>
</complexType>

<!--
<transfer> response elements.
-->
<complexType name="trnDataType">
  <sequence>
    <element name="name" type="eppcom:labelType"/>
    <element name="trStatus" type="eppcom:trStatusType"/>
    <element name="reID" type="eppcom:clIDType"/>
    <element name="reDate" type="dateTime"/>
    <element name="acID" type="eppcom:clIDType"/>
    <element name="acDate" type="dateTime"/>
    <element name="exDate" type="dateTime"
     minOccurs="0"/>
  </sequence>
</complexType>

<!--
End of schema.
 -->
</schema>