<?xml version="1.0" encoding="UTF-8"?>
<!--
   Copyright (C) The Internet Society (2004).

   This document is subject to the rights, licenses and restrictions
   contained in BCP 78, and except as set forth therein, the authors
   retain all their rights.

   This document and the information contained herein are provided on an
   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/S HE
   REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE
   INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR
   IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
   THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-->
<schema targetNamespace="urn:ietf:params:xml:ns:rgp-1.0"
        xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0"
        xmlns="http://www.w3.org/2001/XMLSchema"
        elementFormDefault="qualified">
    <annotation>
        <documentation>
            Extensible Provisioning Protocol v1.0
            domain name extension schema for registry grace period
            processing.
        </documentation>
    </annotation>

    <!--
    Child elements found in EPP commands.
    -->
    <element name="update" type="rgp:updateType"/>

    <!--
    Child elements of the <update> command for the
    redemption grace period.
    -->
    <complexType name="updateType">
        <sequence>
            <element name="restore" type="rgp:restoreType"/>
        </sequence>
    </complexType>

    <complexType name="restoreType">
        <sequence>
            <element name="report" type="rgp:reportType"
                     minOccurs="0"/>
        </sequence>
        <attribute name="op" type="rgp:rgpOpType" use="required"/>
    </complexType>

    <!--
    New redemption grace period operations can be defined
    by adding to this enumeration.
    -->
    <simpleType name="rgpOpType">
        <restriction base="token">
            <enumeration value="request"/>
            <enumeration value="report"/>
        </restriction>
    </simpleType>

    <complexType name="reportType">
        <sequence>
            <element name="preData" type="rgp:mixedType"/>
            <element name="postData" type="rgp:mixedType"/>
            <element name="delTime" type="dateTime"/>
            <element name="resTime" type="dateTime"/>
            <element name="resReason" type="rgp:reportTextType"/>
            <element name="statement" type="rgp:reportTextType"
                     maxOccurs="2"/>
            <element name="other" type="rgp:mixedType"
                     minOccurs="0"/>
        </sequence>
    </complexType>

    <complexType name="mixedType">
        <complexContent mixed="true">
            <restriction base="anyType">
                <sequence>
                    <any processContents="lax"
                         minOccurs="0" maxOccurs="unbounded"/>
                </sequence>
            </restriction>
        </complexContent>
    </complexType>

    <complexType name="reportTextType">
        <complexContent mixed="true">
            <restriction base="anyType">
                <sequence>
                    <any processContents="lax"
                         minOccurs="0" maxOccurs="unbounded"/>
                </sequence>
                <attribute name="lang" type="language" default="en"/>
            </restriction>
        </complexContent>
    </complexType>

    <!--
    Child response elements.
    -->
    <element name="infData" type="rgp:respDataType"/>
    <element name="upData" type="rgp:respDataType"/>

    <!--
    Response elements.
    -->
    <complexType name="respDataType">
        <sequence>
            <element name="rgpStatus" type="rgp:statusType"
                     maxOccurs="unbounded"/>
        </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="rgp:statusValueType"
                           use="required"/>
                <attribute name="lang" type="language" default="en"/>
            </extension>
        </simpleContent>
    </complexType>

    <simpleType name="statusValueType">
        <restriction base="token">
            <enumeration value="addPeriod"/>
            <enumeration value="autoRenewPeriod"/>
            <enumeration value="renewPeriod"/>
            <enumeration value="transferPeriod"/>
            <enumeration value="pendingDelete"/>
            <enumeration value="pendingRestore"/>
            <enumeration value="redemptionPeriod"/>
        </restriction>
    </simpleType>

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