<?xml version="1.0" encoding="UTF-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://gateway.ixopay.com/Schema/V2/ScheduleResult" targetNamespace="http://gateway.ixopay.com/Schema/V2/ScheduleResult">
    <!-- ROOT ELEMENT -->
    <xs:element name="scheduleResult" type="scheduleResultType">

    </xs:element>

    <!-- ROOT TYPE -->
    <xs:complexType name="scheduleResultType">
        <xs:sequence>
            <xs:element type="xs:boolean" name="operationSuccess" minOccurs="1" maxOccurs="1" />
            <xs:element type="xs:string" name="scheduleId" minOccurs="0" maxOccurs="1" />
            <xs:element type="xs:string" name="registrationId" minOccurs="0" maxOccurs="1" />
            <xs:element type="scheduleStatusType" name="oldStatus" minOccurs="0" maxOccurs="1" />
            <xs:element type="scheduleStatusType" name="newStatus" minOccurs="0" maxOccurs="1" />
            <xs:element type="scheduleDateTime" name="scheduledAt" minOccurs="0" maxOccurs="1" />
            <xs:element type="errorsType" name="errors" minOccurs="0" maxOccurs="1" />
            <xs:element type="xs:string" name="merchantMetaData" minOccurs="0" maxOccurs="1" />
        </xs:sequence>
    </xs:complexType>

    <xs:simpleType name="scheduleStatusType">
        <xs:restriction base="xs:string">
            <xs:enumeration value="ACTIVE" />
            <xs:enumeration value="PAUSED" />
            <xs:enumeration value="CANCELLED" />
            <xs:enumeration value="ERROR" />
            <xs:enumeration value="CREATE-PENDING" /> <!-- create process of schedule is not finished yet -->
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="scheduleDateTime">
        <xs:restriction base="xs:string">
            <xs:pattern value="\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} [A-Z]{1,5}" /> <!-- YYYY-MM-DD HH:mm:ss T, eg. "2019-12-30 23:59:59 UTC" -->
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="errorsType">
        <xs:sequence>
            <xs:element type="errorType" name="error" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="errorType">
        <xs:sequence>
            <xs:element type="xs:string" name="message" minOccurs="1" maxOccurs="1" />
            <xs:element type="xs:positiveInteger" name="code" minOccurs="1" maxOccurs="1" />
        </xs:sequence>
    </xs:complexType>

</xs:schema>