1<?xml version="1.0" encoding="UTF-8"?>
   2<!--
   3 Copyright (c) 2009 IETF Trust and the persons identified as authors
   4   of the code.  All rights reserved.
   5
   6   Redistribution and use in source and binary forms, with or without
   7   modification, are permitted provided that the following conditions
   8   are met:
   9
  10   o  Redistributions of source code must retain the above copyright
  11      notice, this list of conditions and the following disclaimer.
  12
  13   o  Redistributions in binary form must reproduce the above copyright
  14      notice, this list of conditions and the following disclaimer in
  15      the documentation and/or other materials provided with the
  16      distribution.
  17
  18   o  Neither the name of Internet Society, IETF or IETF Trust, nor the
  19      names of specific contributors, may be used to endorse or promote
  20      products derived from this software without specific prior written
  21      permission.
  22
  23   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  24   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  25   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  26   A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT
  27   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  28   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  29   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  30   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  31   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  32   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  33   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  34-->
  35<schema targetNamespace="urn:ietf:params:xml:ns:domain-1.0"
  36        xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
  37        xmlns:host="urn:ietf:params:xml:ns:host-1.0"
  38        xmlns:epp="urn:ietf:params:xml:ns:epp-1.0"
  39        xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
  40        xmlns="http://www.w3.org/2001/XMLSchema"
  41        elementFormDefault="qualified">
  42
  43    <!--
  44    Import common element types.
  45    -->
  46    <import namespace="urn:ietf:params:xml:ns:eppcom-1.0"
  47            schemaLocation="eppcom-1.0.xsd"/>
  48    <import namespace="urn:ietf:params:xml:ns:epp-1.0"
  49            schemaLocation="epp-1.0.xsd"/>
  50    <import namespace="urn:ietf:params:xml:ns:host-1.0"
  51            schemaLocation="host-1.0.xsd"/>
  52
  53    <annotation>
  54        <documentation>
  55            Extensible Provisioning Protocol v1.0
  56            domain provisioning schema.
  57        </documentation>
  58    </annotation>
  59
  60    <!--
  61    Child elements found in EPP commands.
  62    -->
  63    <element name="check" type="domain:mNameType"/>
  64    <element name="create" type="domain:createType"/>
  65    <element name="delete" type="domain:sNameType"/>
  66    <element name="info" type="domain:infoType"/>
  67    <element name="renew" type="domain:renewType"/>
  68    <element name="transfer" type="domain:transferType"/>
  69    <element name="update" type="domain:updateType"/>
  70
  71    <!--
  72    Child elements of the <create> command.
  73    -->
  74    <complexType name="createType">
  75        <sequence>
  76            <element name="name" type="eppcom:labelType"/>
  77            <element name="period" type="domain:periodType"
  78                     minOccurs="0"/>
  79            <element name="ns" type="domain:nsType"
  80                     minOccurs="0"/>
  81            <element name="registrant" type="eppcom:clIDType"
  82                     minOccurs="0"/>
  83            <element name="contact" type="domain:contactType"
  84                     minOccurs="0" maxOccurs="unbounded"/>
  85            <element name="authInfo" type="domain:authInfoType"/>
  86        </sequence>
  87    </complexType>
  88
  89    <complexType name="periodType">
  90        <simpleContent>
  91            <extension base="domain:pLimitType">
  92                <attribute name="unit" type="domain:pUnitType"
  93                           use="required"/>
  94            </extension>
  95        </simpleContent>
  96    </complexType>
  97
  98    <simpleType name="pLimitType">
  99        <restriction base="unsignedShort">
 100            <minInclusive value="1"/>
 101            <maxInclusive value="99"/>
 102        </restriction>
 103    </simpleType>
 104
 105    <simpleType name="pUnitType">
 106        <restriction base="token">
 107            <enumeration value="y"/>
 108            <enumeration value="m"/>
 109        </restriction>
 110    </simpleType>
 111
 112    <complexType name="nsType">
 113        <choice>
 114            <element name="hostObj" type="eppcom:labelType"
 115                     maxOccurs="unbounded"/>
 116            <element name="hostAttr" type="domain:hostAttrType"
 117                     maxOccurs="unbounded"/>
 118        </choice>
 119    </complexType>
 120    <!--
 121    Name servers are either host objects or attributes.
 122    -->
 123
 124    <complexType name="hostAttrType">
 125        <sequence>
 126            <element name="hostName" type="eppcom:labelType"/>
 127            <element name="hostAddr" type="host:addrType"
 128                     minOccurs="0" maxOccurs="unbounded"/>
 129        </sequence>
 130    </complexType>
 131    <!--
 132    If attributes, addresses are optional and follow the
 133    structure defined in the host mapping.
 134    -->
 135
 136    <complexType name="contactType">
 137        <simpleContent>
 138            <extension base="eppcom:clIDType">
 139                <attribute name="type" type="domain:contactAttrType"/>
 140            </extension>
 141        </simpleContent>
 142    </complexType>
 143
 144    <simpleType name="contactAttrType">
 145        <restriction base="token">
 146            <enumeration value="admin"/>
 147            <enumeration value="billing"/>
 148            <enumeration value="tech"/>
 149        </restriction>
 150    </simpleType>
 151
 152    <complexType name="authInfoType">
 153        <choice>
 154            <element name="pw" type="eppcom:pwAuthInfoType"/>
 155            <element name="ext" type="eppcom:extAuthInfoType"/>
 156        </choice>
 157    </complexType>
 158
 159    <!--
 160    Child element of commands that require a single name.
 161    -->
 162    <complexType name="sNameType">
 163        <sequence>
 164            <element name="name" type="eppcom:labelType"/>
 165        </sequence>
 166    </complexType>
 167    <!--
 168    Child element of commands that accept multiple names.
 169    -->
 170    <complexType name="mNameType">
 171        <sequence>
 172            <element name="name" type="eppcom:labelType"
 173                     maxOccurs="unbounded"/>
 174        </sequence>
 175    </complexType>
 176
 177    <!--
 178    Child elements of the <info> command.
 179    -->
 180    <complexType name="infoType">
 181        <sequence>
 182            <element name="name" type="domain:infoNameType"/>
 183            <element name="authInfo" type="domain:authInfoType"
 184                     minOccurs="0"/>
 185        </sequence>
 186    </complexType>
 187
 188    <complexType name="infoNameType">
 189        <simpleContent>
 190            <extension base = "eppcom:labelType">
 191                <attribute name="hosts" type="domain:hostsType"
 192                           default="all"/>
 193            </extension>
 194        </simpleContent>
 195    </complexType>
 196
 197    <simpleType name="hostsType">
 198        <restriction base="token">
 199            <enumeration value="all"/>
 200            <enumeration value="del"/>
 201            <enumeration value="none"/>
 202            <enumeration value="sub"/>
 203        </restriction>
 204    </simpleType>
 205
 206    <!--
 207    Child elements of the <renew> command.
 208    -->
 209    <complexType name="renewType">
 210        <sequence>
 211            <element name="name" type="eppcom:labelType"/>
 212            <element name="curExpDate" type="date"/>
 213            <element name="period" type="domain:periodType"
 214                     minOccurs="0"/>
 215        </sequence>
 216    </complexType>
 217
 218    <!--
 219    Child elements of the <transfer> command.
 220    -->
 221    <complexType name="transferType">
 222        <sequence>
 223            <element name="name" type="eppcom:labelType"/>
 224            <element name="period" type="domain:periodType"
 225                     minOccurs="0"/>
 226            <element name="authInfo" type="domain:authInfoType"
 227                     minOccurs="0"/>
 228        </sequence>
 229    </complexType>
 230
 231    <!--
 232    Child elements of the <update> command.
 233    -->
 234    <complexType name="updateType">
 235        <sequence>
 236            <element name="name" type="eppcom:labelType"/>
 237            <element name="add" type="domain:addRemType"
 238                     minOccurs="0"/>
 239            <element name="rem" type="domain:addRemType"
 240                     minOccurs="0"/>
 241            <element name="chg" type="domain:chgType"
 242                     minOccurs="0"/>
 243        </sequence>
 244    </complexType>
 245
 246    <!--
 247    Data elements that can be added or removed.
 248    -->
 249    <complexType name="addRemType">
 250        <sequence>
 251            <element name="ns" type="domain:nsType"
 252                     minOccurs="0"/>
 253            <element name="contact" type="domain:contactType"
 254                     minOccurs="0" maxOccurs="unbounded"/>
 255            <element name="status" type="domain:statusType"
 256                     minOccurs="0" maxOccurs="11"/>
 257        </sequence>
 258    </complexType>
 259
 260    <!--
 261    Data elements that can be changed.
 262    -->
 263
 264    <complexType name="chgType">
 265        <sequence>
 266            <element name="registrant" type="domain:clIDChgType"
 267                     minOccurs="0"/>
 268            <element name="authInfo" type="domain:authInfoChgType"
 269                     minOccurs="0"/>
 270        </sequence>
 271    </complexType>
 272
 273    <!--
 274    Allow the registrant value to be nullified by changing the
 275    minLength restriction to "0".
 276    -->
 277    <simpleType name="clIDChgType">
 278        <restriction base="token">
 279            <minLength value="0"/>
 280            <maxLength value="16"/>
 281        </restriction>
 282    </simpleType>
 283
 284    <!--
 285    Allow the authInfo value to be nullified by including an
 286    empty element within the choice.
 287    -->
 288    <complexType name="authInfoChgType">
 289        <choice>
 290            <element name="pw" type="eppcom:pwAuthInfoType"/>
 291            <element name="ext" type="eppcom:extAuthInfoType"/>
 292            <element name="null"/>
 293        </choice>
 294    </complexType>
 295
 296    <!--
 297    Child response elements.
 298    -->
 299    <element name="chkData" type="domain:chkDataType"/>
 300    <element name="creData" type="domain:creDataType"/>
 301    <element name="infData" type="domain:infDataType"/>
 302    <element name="panData" type="domain:panDataType"/>
 303    <element name="renData" type="domain:renDataType"/>
 304    <element name="trnData" type="domain:trnDataType"/>
 305
 306    <!--
 307    <check> response elements.
 308    -->
 309    <complexType name="chkDataType">
 310        <sequence>
 311            <element name="cd" type="domain:checkType"
 312                     maxOccurs="unbounded"/>
 313        </sequence>
 314    </complexType>
 315
 316    <complexType name="checkType">
 317        <sequence>
 318            <element name="name" type="domain:checkNameType"/>
 319            <element name="reason" type="eppcom:reasonType"
 320                     minOccurs="0"/>
 321        </sequence>
 322    </complexType>
 323
 324    <complexType name="checkNameType">
 325        <simpleContent>
 326            <extension base="eppcom:labelType">
 327                <attribute name="avail" type="boolean"
 328                           use="required"/>
 329            </extension>
 330        </simpleContent>
 331    </complexType>
 332
 333    <!--
 334    <create> response elements.
 335    -->
 336    <complexType name="creDataType">
 337        <sequence>
 338            <element name="name" type="eppcom:labelType"/>
 339            <element name="crDate" type="dateTime"/>
 340            <element name="exDate" type="dateTime"
 341                     minOccurs="0"/>
 342        </sequence>
 343    </complexType>
 344
 345    <!--
 346    <info> response elements.
 347    -->
 348    <complexType name="infDataType">
 349        <sequence>
 350            <element name="name" type="eppcom:labelType"/>
 351            <element name="roid" type="eppcom:roidType"/>
 352            <element name="status" type="domain:statusType"
 353                     minOccurs="0" maxOccurs="11"/>
 354            <element name="registrant" type="eppcom:clIDType"
 355                     minOccurs="0"/>
 356            <element name="contact" type="domain:contactType"
 357                     minOccurs="0" maxOccurs="unbounded"/>
 358            <element name="ns" type="domain:nsType"
 359                     minOccurs="0"/>
 360            <element name="host" type="eppcom:labelType" minOccurs="0" maxOccurs="unbounded"><annotation><documentation>NOT USED, all nameservers must be registered. Only "ns" element is used</documentation></annotation></element>
 361            <element name="clID" type="eppcom:clIDType"><annotation><documentation>NOT USED. Set to admin contact</documentation></annotation></element>
 362            <element name="crID" type="eppcom:clIDType"
 363                     minOccurs="0"/>
 364            <element name="crDate" type="dateTime"
 365                     minOccurs="0"/>
 366            <element name="upID" type="eppcom:clIDType"
 367                     minOccurs="0"/>
 368            <element name="upDate" type="dateTime"
 369                     minOccurs="0"/>
 370            <element name="exDate" type="dateTime"
 371                     minOccurs="0"/>
 372            <element name="trDate" type="dateTime" minOccurs="0"><annotation><documentation>NOT USED</documentation></annotation></element>
 373            <element name="authInfo" type="domain:authInfoType"
 374                     minOccurs="0"/>
 375        </sequence>
 376    </complexType>
 377
 378    <!--
 379    Status is a combination of attributes and an optional human-readable
 380    message that may be expressed in languages other than English.
 381    -->
 382    <complexType name="statusType">
 383        <simpleContent>
 384            <extension base="normalizedString">
 385                <attribute name="s" type="domain:statusValueType"
 386                           use="required"/>
 387                <attribute name="lang" type="language"
 388                           default="en"/>
 389            </extension>
 390        </simpleContent>
 391    </complexType>
 392
 393    <simpleType name="statusValueType">
 394        <restriction base="token">
 395            <enumeration value="clientDeleteProhibited"/>
 396            <enumeration value="clientHold"><annotation><documentation>ISP requested not to service domain</documentation></annotation></enumeration>
 397            <enumeration value="clientRenewProhibited"/>
 398            <enumeration value="clientTransferProhibited"/>
 399            <enumeration value="clientUpdateProhibited"/>
 400            <enumeration value="inactive"/>
 401            <enumeration value="ok"><annotation><documentation>No other status set, domain is delegated</documentation></annotation></enumeration>
 402            <enumeration value="pendingCreate"/>
 403            <enumeration value="pendingDelete"><annotation><documentation>Delete process ongoing</documentation></annotation></enumeration>
 404            <enumeration value="pendingRenew"/>
 405            <enumeration value="pendingTransfer"/>
 406            <enumeration value="pendingUpdate"><annotation><documentation>Name server update or registrant transfer ongoing</documentation></annotation></enumeration>
 407            <enumeration value="serverDeleteProhibited"><annotation><documentation>Dispute lock has been set</documentation></annotation></enumeration>
 408            <enumeration value="serverHold"><annotation><documentation>Payment missing, technical erros or registration information insufficient</documentation></annotation></enumeration>
 409            <enumeration value="serverRenewProhibited"/>
 410            <enumeration value="serverTransferProhibited"/>
 411            <enumeration value="serverUpdateProhibited"/>
 412        </restriction>
 413    </simpleType>
 414
 415    <!--
 416    Pending action notification response elements.
 417    -->
 418    <complexType name="panDataType">
 419        <sequence>
 420            <element name="name" type="domain:paNameType"/>
 421            <element name="paTRID" type="epp:trIDType"/>
 422            <element name="paDate" type="dateTime"/>
 423        </sequence>
 424    </complexType>
 425
 426    <complexType name="paNameType">
 427        <simpleContent>
 428            <extension base="eppcom:labelType">
 429                <attribute name="paResult" type="boolean"
 430                           use="required"/>
 431            </extension>
 432        </simpleContent>
 433    </complexType>
 434
 435    <!--
 436    <renew> response elements.
 437    -->
 438    <complexType name="renDataType">
 439        <sequence>
 440            <element name="name" type="eppcom:labelType"/>
 441            <element name="exDate" type="dateTime"
 442                     minOccurs="0"/>
 443        </sequence>
 444    </complexType>
 445
 446    <!--
 447    <transfer> response elements.
 448    -->
 449    <complexType name="trnDataType">
 450        <sequence>
 451            <element name="name" type="eppcom:labelType"/>
 452            <element name="trStatus" type="eppcom:trStatusType"/>
 453            <element name="reID" type="eppcom:clIDType"/>
 454            <element name="reDate" type="dateTime"/>
 455            <element name="acID" type="eppcom:clIDType"/>
 456            <element name="acDate" type="dateTime"/>
 457            <element name="exDate" type="dateTime"
 458                     minOccurs="0"/>
 459        </sequence>
 460    </complexType>
 461
 462    <!--
 463    End of schema.
 464    -->
 465</schema>
 466
 467
 468