<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:tns="https://api.cybersource.com/reporting/v3/xsds/DecisionManagerDetailReport"
           xmlns:dmt="https://api.cybersource.com/reporting/v3/xsds/DecisionManagerTypes"
           elementFormDefault="unqualified"
           targetNamespace="https://api.cybersource.com/reporting/v3/xsds/DecisionManagerDetailReport">

    <xs:import
            schemaLocation="https://api.cybersource.com/reporting/v3/xsds/DecisionManagerTypes"
            namespace="https://api.cybersource.com/reporting/v3/xsds/DecisionManagerTypes"/>

    <xs:element type="tns:DecisionManagerDetailReport" name="Report"/>

    <xs:complexType name="DecisionManagerDetailReport">
        <xs:sequence>
            <xs:element type="tns:TransactionType" name="Transaction" minOccurs="0" maxOccurs="20000000"/>
        </xs:sequence>
        <xs:attribute type="xs:string" use="required" name="Name"/>
        <xs:attribute type="xs:string" use="required" name="Type"/>
        <xs:attribute type="xs:string" use="required" name="Version"/>
        <xs:attribute type="xs:string" use="required" name="OrganizationID"/>
        <xs:attribute type="xs:dateTime" use="required" name="ReportStartDate"/>
        <xs:attribute type="xs:dateTime" use="required" name="ReportEndDate"/>
    </xs:complexType>
    <xs:complexType name="TransactionType">
        <xs:sequence>
            <xs:element type="tns:Order" name="Order" minOccurs="0"/>
            <xs:element type="dmt:Customer" name="Customer" minOccurs="0"/>
            <xs:element type="tns:Payment" name="Payment" minOccurs="0"/>
            <xs:element type="tns:AFSInformation" name="AFSInformation" minOccurs="0"/>
            <xs:element type="dmt:MarkedSuspect" name="MarkedSuspect" minOccurs="0"/>
            <xs:element type="tns:TravelData" name="TravelData" minOccurs="0"/>
            <xs:element type="dmt:MerchantDefinedData" name="MerchantDefinedData" minOccurs="0"/>
            <xs:element type="tns:CaseManagement" name="CaseManagement" minOccurs="0"/>
            <xs:element type="dmt:Providers" name="Providers" minOccurs="0"/>
            <xs:element type="dmt:MorphingElements" name="MorphingElements" minOccurs="0"/>
            <xs:element type="tns:MerchantAuxiliaryFields" name="MerchantAuxiliaryFields" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="Order">
        <xs:complexContent>
            <xs:extension base="dmt:Order">
                <xs:sequence>
                    <xs:element type="xs:string" name="GiftWrap" minOccurs="0"/>
                    <xs:element type="xs:string" name="ReturnsAccepted" minOccurs="0"/>
                    <xs:element type="tns:LineItem" name="LineItem" minOccurs="0" maxOccurs="unbounded"/>
                    <xs:element type="dmt:Reply" name="Reply" minOccurs="0"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="LineItem">
        <xs:sequence>
            <xs:element type="xs:string" name="ProductSKU" minOccurs="0"/>
            <xs:element type="xs:string" name="ProductName" minOccurs="0"/>
            <xs:element type="xs:string" name="ProductCode" minOccurs="0"/>
            <xs:element type="xs:decimal" name="Price" minOccurs="0"/>
            <xs:element type="xs:int" name="Quantity" minOccurs="0"/>
            <xs:element type="xs:decimal" name="Tax" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="Payment">
        <xs:complexContent>
            <xs:extension base="dmt:Payment">
                <xs:sequence>
                    <xs:element type="xs:decimal" name="OrderAmount" minOccurs="0"/>
                    <xs:element type="xs:string" name="CurrencyCode" minOccurs="0"/>
                    <xs:element type="xs:decimal" name="LocalOrderAmount" minOccurs="0"/>
                    <xs:element type="xs:string" name="LocalCurrencyCode" minOccurs="0"/>
                    <xs:element type="xs:string" name="AVSResult" minOccurs="0"/>
                    <xs:element type="xs:string" name="eCommerceIndicator" minOccurs="0"/>
                    <xs:element type="tns:AuthEV" name="AuthEV" minOccurs="0"/>
                    <xs:element type="xs:string" name="IssuerBIN" minOccurs="0"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="AuthEV">
        <xs:sequence>
            <xs:element type="xs:string" name="Email" minOccurs="0"/>
            <xs:element type="xs:string" name="Address1" minOccurs="0"/>
            <xs:element type="xs:string" name="LastName" minOccurs="0"/>
            <xs:element type="xs:string" name="PostalCode" minOccurs="0"/>
            <xs:element type="xs:string" name="Phone" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="AFSInformation">
        <xs:sequence>
            <xs:element type="xs:int" name="Score" minOccurs="0"/>
            <xs:element type="xs:string" name="Model" minOccurs="0"/>
            <xs:element type="xs:string" name="Factors" minOccurs="0"/>
            <xs:element type="xs:int" name="HostSeverity" minOccurs="0"/>
            <xs:element type="tns:IPInformation" name="IPInformation" minOccurs="0"/>
            <xs:element type="xs:string" name="InfoCodeString" minOccurs="0"/>
            <xs:element type="xs:string" name="BypassedFields" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="IPInformation">
        <xs:complexContent>
            <xs:extension base="dmt:IPInformation">
                <xs:sequence>
                    <xs:element type="xs:string" name="IPCity" minOccurs="0"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="TravelData">
        <xs:complexContent>
            <xs:extension base="dmt:TravelData">
                <xs:sequence>
                    <xs:element type="xs:string" name="CompleteRoute" minOccurs="0"/>
                    <xs:element type="xs:string" name="JourneyType" minOccurs="0"/>
                    <xs:element type="xs:int" name="NumberofPassengers" minOccurs="0"/>
                    <xs:element type="tns:Passenger" name="Passenger" minOccurs="0" maxOccurs="1000"/>
                    <xs:element type="tns:TravelRoutes" name="TravelRoutes" minOccurs="0" maxOccurs="1000"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="Passenger">
        <xs:sequence>
            <xs:element type="xs:string" name="FirstName" minOccurs="0"/>
            <xs:element type="xs:string" name="LastName" minOccurs="0"/>
            <xs:element type="xs:string" name="Phone" minOccurs="0"/>
            <xs:element type="xs:string" name="Email" minOccurs="0"/>
            <xs:element type="xs:string" name="PassengerID" minOccurs="0"/>
            <xs:element type="xs:string" name="Type" minOccurs="0"/>
            <xs:element type="xs:string" name="Status" minOccurs="0"/>
            <xs:element type="xs:string" name="Nationality" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="TravelRoutes">
        <xs:sequence>
            <xs:element type="xs:string" name="SourceAirportCode" minOccurs="0"/>
            <xs:element type="xs:string" name="DestinationAirportCode" minOccurs="0"/>
            <xs:element type="xs:string" name="SourceAirportCity" minOccurs="0"/>
            <xs:element type="xs:string" name="DestinationAirportCity" minOccurs="0"/>
            <xs:element type="xs:string" name="SourceAirportCountry" minOccurs="0"/>
            <xs:element type="xs:string" name="DestinationAirportCountry" minOccurs="0"/>
            <xs:element type="xs:string" name="SourceAirportLatitude" minOccurs="0"/>
            <xs:element type="xs:string" name="DestinationAirportLatitude" minOccurs="0"/>
            <xs:element type="xs:string" name="SourceAirportLongitude" minOccurs="0"/>
            <xs:element type="xs:string" name="DestinationAirportLongitude" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="CaseManagement">
        <xs:all>
            <xs:element type="tns:Profile" name="Profile" minOccurs="0"/>
            <xs:element type="tns:Owner" name="Owner" minOccurs="0"/>
            <xs:element type="xs:int" name="Priority" minOccurs="0"/>
            <xs:element type="xs:string" name="QueueName" minOccurs="0"/>
            <xs:element type="tns:ReviewResult" name="ReviewResult" minOccurs="0"/>
        </xs:all>
    </xs:complexType>
    <xs:complexType name="Profile">
        <xs:sequence>
            <xs:element type="tns:ProfileData" name="Active" minOccurs="0"/>
            <xs:element type="tns:ProfileData" name="Passive" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ProfileData">
        <xs:sequence>
            <xs:element type="xs:string" name="Name" minOccurs="0"/>
            <xs:element type="xs:string" name="Decision" minOccurs="0"/>
            <xs:element type="xs:int" name="Score" minOccurs="0"/>
            <xs:element type="xs:int" name="NumberofRules" minOccurs="0"/>
            <xs:element type="xs:string" name="Action" minOccurs="0"/>
            <xs:element type="xs:string" name="EarlyDecision" minOccurs="0"/>
            <xs:element type="xs:string" name="AppliedOrderModifications" minOccurs="0"/>
            <xs:element type="xs:string" name="ApplicableOrderModifications" minOccurs="0"/>
            <xs:element type="tns:OrderModificationRule" name="OrderModificationRule" minOccurs="0" maxOccurs="1000"/>
            <xs:element type="tns:Rule" name="Rule" minOccurs="0" maxOccurs="1000"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="Rule">
        <xs:sequence>
            <xs:element type="xs:string" name="Name" minOccurs="0"/>
            <xs:element type="xs:string" name="Decision" minOccurs="0"/>
            <xs:element type="xs:int" name="Score" minOccurs="0"/>
            <xs:element type="xs:string" name="RuleType" minOccurs="0"/>
            <xs:element type="xs:string" name="RuleSubtype" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="OrderModificationRule">
        <xs:sequence>
            <xs:element type="xs:string" name="Name" minOccurs="0"/>
            <xs:element type="xs:string" name="Action" minOccurs="0"/>
            <xs:element type="xs:string" name="OrderModification" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="Owner">
        <xs:sequence>
            <xs:element type="xs:string" name="Organization" minOccurs="0"/>
            <xs:element type="xs:string" name="Username" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ReviewResult">
        <xs:sequence>
            <xs:element type="xs:string" name="Decision" minOccurs="0"/>
            <xs:element type="xs:string" name="ReviewComment" minOccurs="0"/>
            <xs:element type="xs:dateTime" name="Date" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="MerchantAuxiliaryFields">
        <xs:sequence>
            <xs:element type="tns:AUXField" name="Field" minOccurs="0" maxOccurs="900"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="AUXField">
        <xs:sequence>
            <xs:element type="xs:int" name="Index" minOccurs="1"/>
            <xs:element type="xs:string" name="Value" minOccurs="1"/>
        </xs:sequence>
    </xs:complexType>
</xs:schema>