APXScheduleAPI XSD
<?xml version="1.0" encoding="utf-8"?>
<!-- Schema for APX ParameterSet.
History:
...
Feb 21, 2025 Removed reference to MISO and PJM in the <Region> enumeration >> These regions utilize ScheduleData schema.
Feb 21, 2025 Added AS-Only in the <TransactionType> enumeration
Feb 21, 2025 SASM...SASM5 are not valid. The enumerations of <DataSource> and <MarketStage> contain SASM values for backward compatibility
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:apx="http://service.apx.com/schedule" targetNamespace="http://service.apx.com/schedule" elementFormDefault="qualified" attributeFormDefault="unqualified">
<!-- Non-empty string -->
<xs:simpleType name="NonEmptyString">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:pattern value=".*[^\s].*"/>
<xs:whiteSpace value="replace"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="NonNegativeDecimal">
<xs:restriction base="xs:decimal">
<xs:minInclusive value="0.00"/>
<xs:totalDigits value="10"/>
<xs:fractionDigits value="3"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Pricedecimal">
<xs:restriction base="xs:decimal">
<xs:totalDigits value="10"/>
<xs:fractionDigits value="4"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="MWdecimal">
<xs:restriction base="xs:decimal">
<xs:totalDigits value="10"/>
<xs:fractionDigits value="3"/>
</xs:restriction>
</xs:simpleType>
<!-- ControlArea-->
<xs:simpleType name="Region">
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="MRTU"/>
<xs:enumeration value="TX"/>
<xs:enumeration value="ERCOT"/>
</xs:restriction>
</xs:simpleType>
<!--MarketType-->
<xs:simpleType name="MarketStage">
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="DA"/>
<xs:enumeration value="FMM"/>
<xs:enumeration value="HA"/>
<xs:enumeration value="RT"/>
<xs:enumeration value="DART"/>
<xs:enumeration value="SASM"/>
<xs:enumeration value="SASM2"/>
<xs:enumeration value="SASM3"/>
<xs:enumeration value="SASM4"/>
<xs:enumeration value="SASM5"/>
</xs:restriction>
</xs:simpleType>
<!-- TransactionType-->
<xs:simpleType name="TransactionType">
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="Load"/>
<xs:enumeration value="Gen"/>
<xs:enumeration value="Import"/>
<xs:enumeration value="Export"/>
<xs:enumeration value="VirtualBid"/>
<xs:enumeration value="VirtualOffer"/>
<xs:enumeration value="ParticipatingLoad"/>
<xs:enumeration value="LoadResource"/>
<xs:enumeration value="Buy"/>
<xs:enumeration value="Sell"/>
<xs:enumeration value="SourceSink"/>
<xs:enumeration value="Self-Arranged"/>
<xs:enumeration value="AS-Only"/>
</xs:restriction>
</xs:simpleType>
<!--ProductType-->
<xs:simpleType name="ProductType">
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="Energy"/>
<xs:enumeration value="NonFirmEnergy"/>
<xs:enumeration value="RegUp"/>
<xs:enumeration value="RegDn"/>
<xs:enumeration value="Spin"/>
<xs:enumeration value="NSpin"/>
<xs:enumeration value="NSPNM"/>
<xs:enumeration value="RUC"/>
<xs:enumeration value="Capacity"/>
<xs:enumeration value="OffNSpin"/>
<xs:enumeration value="UntCntg"/>
<xs:enumeration value="RegMileDn"/>
<xs:enumeration value="RegMileUp"/>
<xs:enumeration value="Dynamic"/>
<xs:enumeration value="FlexRampDn"/>
<xs:enumeration value="FlexRampUp"/>
<xs:enumeration value="IFMU"/>
<xs:enumeration value="Wheel"/>
<xs:enumeration value="RRS-PFR"/>
<xs:enumeration value="RRS-FFR"/>
<xs:enumeration value="RRS-UFR"/>
<xs:enumeration value="DynLmtMax"/>
<xs:enumeration value="DynLmtMin"/>
<xs:enumeration value="ECRS"/>
<xs:enumeration value="ECRSM"/>
<xs:enumeration value="ECRSS"/>
<xs:enumeration value="OffECRS"/>
</xs:restriction>
</xs:simpleType>
<!--ScheduleType-->
<xs:simpleType name="ScheduleType">
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="FinancialTrade"/>
<xs:enumeration value="PhysicalTrade"/>
<xs:enumeration value="UpliftCostTrade"/>
<xs:enumeration value="GrandfatheredTrade"/>
<xs:enumeration value="PseudoTieTrade"/>
<xs:enumeration value="RetailLoad"/>
<xs:enumeration value="WholesaleLoad"/>
<xs:enumeration value="Generation"/>
<xs:enumeration value="Obligation"/>
<xs:enumeration value="SelfProvision"/>
<xs:enumeration value="CntrlLoad"/>
<xs:enumeration value="AS"/>
</xs:restriction>
</xs:simpleType>
<!-- ScalarParameterType-->
<xs:complexType name="ScalarParameterType">
<xs:attribute name="FromInterval" type="xs:positiveInteger" use="optional"/>
<xs:attribute name="Name" type="apx:NonEmptyString" use="required"/>
<xs:attribute name="Value" type="apx:NonEmptyString" use="optional"/>
<xs:attribute name="Status" type="apx:NonEmptyString" use="optional">
<xs:annotation>
<xs:documentation>Used by Outbound methods only. Do not Submit</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Message" type="apx:NonEmptyString" use="optional">
<xs:annotation>
<xs:documentation>Used by Outbound methods only. Do not Submit</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!--Parameter single curve point-->
<xs:complexType name="Point">
<xs:attribute name="X" type="apx:NonEmptyString" use="optional"/>
<xs:attribute name="Y" type="apx:NonEmptyString" use="optional"/>
<xs:attribute name="Z" type="apx:NonEmptyString" use="optional"/>
</xs:complexType>
<!-- Curve Parameter Type-->
<xs:complexType name="ParameterCurveType">
<xs:sequence>
<xs:element name="Point" type="apx:Point" maxOccurs="16"/>
</xs:sequence>
<xs:attribute name="FromInterval" type="xs:positiveInteger" use="optional"/>
<xs:attribute name="Name" type="apx:NonEmptyString" use="required"/>
<xs:attribute name="Status" type="apx:NonEmptyString" use="optional">
<xs:annotation>
<xs:documentation>Used by Outbound methods only. Do not Submit</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Message" type="apx:NonEmptyString" use="optional">
<xs:annotation>
<xs:documentation>Used by Outbound methods only. Do not Submit</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!-- Resource Parameters-->
<xs:complexType name="ResourceParameters">
<xs:choice maxOccurs="unbounded">
<xs:element name="Parameter" type="apx:ScalarParameterType"/>
<xs:element name="ParameterCurve" type="apx:ParameterCurveType"/>
</xs:choice>
<xs:attribute name="IntervalLength" use="optional" default="PT1H">
<xs:simpleType>
<xs:restriction base="xs:duration">
<xs:enumeration value="P1D"/>
<xs:enumeration value="PT1H"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Location" type="apx:NonEmptyString" use="required"/>
</xs:complexType>
<!-- ==========================
Bilateral Schedule Specific parts
========================== -->
<!-- BilateralScheduleDetail -->
<xs:complexType name="BilateralScheduleDetail">
<xs:attribute name="FromInterval" type="xs:positiveInteger" use="required">
<xs:annotation>
<xs:documentation source="combined with interval length, this may span 23-25 hours. "/>
<xs:documentation source="This means i is between 23 and 25 for intervalLength=60 or between 92 and 100 for intervalLength=15"/>
</xs:annotation>
</xs:attribute>
<xs:attribute name="MW" type="apx:NonNegativeDecimal" use="optional"/>
<xs:attribute name="CounterPartyMW" type="apx:NonNegativeDecimal" use="optional">
<xs:annotation>
<xs:documentation>Used by Outbound methods only. Do not Submit</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Status" type="apx:NonEmptyString" use="optional">
<xs:annotation>
<xs:documentation>Used by Outbound methods only. Do not Submit</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Message" type="apx:NonEmptyString" use="optional">
<xs:annotation>
<xs:documentation>Used by Outbound methods only. Do not Submit</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!-- BilateralSchedule-->
<xs:complexType name="BilateralSchedule">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="BilateralScheduleDetail" type="apx:BilateralScheduleDetail"/>
</xs:sequence>
<xs:attribute name="IntervalLength" use="optional" default="PT1H">
<xs:simpleType>
<xs:annotation>
<xs:documentation>In minutes. Represents how long each interval in ScheduleDetail is.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:duration">
<xs:enumeration value="PT15M"/>
<xs:enumeration value="PT1H"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="TransactionType" type="apx:TransactionType" use="required"/>
<xs:attribute name="SourceLocation" type="apx:NonEmptyString" use="required"/>
<xs:attribute name="SinkLocation" type="apx:NonEmptyString" use="optional"/>
<xs:attribute name="CounterParty" type="apx:NonEmptyString" use="optional"/>
<xs:attribute name="TradeName" type="apx:NonEmptyString" use="optional"/>
<xs:attribute name="DependOnTradeName" type="apx:NonEmptyString" use="optional"/>
<xs:attribute name="ScheduleType" type="apx:ScheduleType" use="optional"/>
<xs:attribute name="ProductType" type="apx:ProductType" use="required"/>
<xs:attribute name="ExternalId" type="apx:NonEmptyString" use="optional"/>
</xs:complexType>
<!-- ==========================
BidOffer Specific parts
=========================== -->
<!-- CurveType -->
<xs:simpleType name="CurveType">
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="Block"/>
<xs:enumeration value="Slope"/>
<xs:enumeration value="Fixed"/>
</xs:restriction>
</xs:simpleType>
<!-- BidCurve-->
<xs:complexType name="BidCurve">
<xs:attribute name="MW" type="apx:MWdecimal" use="optional"/>
<xs:attribute name="Price" type="apx:Pricedecimal" use="optional"/>
</xs:complexType>
<!-- SelfScheduleType -->
<xs:complexType name="SelfScheduleType">
<xs:attribute name="FromInterval" type="xs:positiveInteger" use="required"/>
<xs:attribute name="MW" type="apx:MWdecimal" use="optional"/>
<xs:attribute name="Price" type="apx:Pricedecimal" use="optional">
<xs:annotation>
<xs:documentation>Used by Outbound methods only. Do not Submit</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Status" type="apx:NonEmptyString" use="optional">
<xs:annotation>
<xs:documentation>Used by Outbound methods only. Do not Submit</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Message" type="apx:NonEmptyString" use="optional">
<xs:annotation>
<xs:documentation>Used by Outbound methods only. Do not Submit</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!-- MarketScheduleType-->
<xs:complexType name="MarketScheduleType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="Curve">
<xs:complexType>
<xs:sequence>
<xs:element name="CurvePoint" type="apx:BidCurve" maxOccurs="16"/>
</xs:sequence>
<xs:attribute name="LinkedHours" type="apx:NonEmptyString" use="optional"/>
<xs:attribute name="CurveType" type="apx:CurveType" use="optional"/>
<xs:attribute name="FromInterval" type="xs:positiveInteger" use="required"/>
<xs:attribute name="Status" type="apx:NonEmptyString" use="optional">
<xs:annotation>
<xs:documentation>Used by Outbound methods only. Do not Submit</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Message" type="apx:NonEmptyString" use="optional">
<xs:annotation>
<xs:documentation>Used by Outbound methods only. Do not Submit</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="CooptimizedWithAS" type="xs:boolean" use="optional"/>
<xs:attribute name="Reason" type="apx:NonEmptyString" use="optional"/>
<xs:attribute name="ReasonText" type="apx:NonEmptyString" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<!-- SubmitBid -->
<xs:complexType name="BidsOffers">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="SelfSchedule">
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="Schedule" type="apx:SelfScheduleType"/>
</xs:sequence>
<xs:attribute name="ProductType" type="apx:ProductType" use="required"/>
<xs:attribute name="ScheduleType" type="apx:ScheduleType" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="MarketSchedule">
<xs:complexType>
<xs:complexContent>
<xs:extension base="apx:MarketScheduleType">
<xs:attribute name="ProductType" type="apx:ProductType" use="required"/>
<xs:attribute name="LinkedOfferID" type="apx:NonEmptyString" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:choice>
<xs:attribute name="IntervalLength" use="optional" default="PT1H">
<xs:simpleType>
<xs:restriction base="xs:duration">
<xs:enumeration value="PT5M"/>
<xs:enumeration value="PT15M"/>
<xs:enumeration value="PT1H"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="TransactionType" type="apx:TransactionType" use="required"/>
<xs:attribute name="Location" type="apx:NonEmptyString" use="required"/>
<xs:attribute name="SinkLocation" type="apx:NonEmptyString" use="optional"/>
<xs:attribute name="WheelId" type="apx:NonEmptyString" use="optional"/>
<xs:attribute name="ContractId" type="apx:NonEmptyString" use="optional"/>
<xs:attribute name="SupportingResource" type="apx:NonEmptyString" use="optional"/>
<xs:attribute name="NERCTag" type="apx:NonEmptyString" use="optional"/>
<xs:attribute name="ExternalId" type="apx:NonEmptyString" use="optional"/>
<xs:attribute name="ExpirationTime" type="xs:dateTime" use="optional"/>
<xs:attribute name="BidName" type="apx:NonEmptyString" use="optional"/>
</xs:complexType>
<!-- Common API parent element-->
<xs:complexType name="Header">
<xs:sequence minOccurs="0" maxOccurs="1">
<xs:element name="MarketParticipantData">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="BilateralSchedule" type="apx:BilateralSchedule"/>
<xs:element name="BidsOffers" type="apx:BidsOffers"/>
<xs:element name="ResourceParameters" type="apx:ResourceParameters"/>
</xs:choice>
<xs:attribute name="Region" type="apx:Region" use="required"/>
<xs:attribute name="MarketParticipant" type="apx:NonEmptyString" use="required"/>
<xs:attribute name="MarketStage" type="apx:MarketStage" use="required"/>
<xs:attribute name="FirstIntervalBegin" type="xs:dateTime" use="required"/>
<xs:attribute name="LastIntervalEnd" type="xs:dateTime" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Version" type="xs:decimal" use="optional" default="2.1"/>
<xs:attribute name="SourceSystem" type="apx:NonEmptyString" use="required"/>
<xs:attribute name="CreateDate" type="xs:dateTime" use="required"/>
</xs:complexType>
<!-- Entry Points:-->
<!-- Submit should not include status elements -->
<xs:element name="Submit">
<xs:complexType>
<xs:complexContent>
<xs:extension base="apx:Header">
<xs:attribute name="SubmitToISO" type="xs:boolean" use="optional" default="false"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- Result includes status elements -->
<xs:element name="Response">
<xs:complexType>
<xs:complexContent>
<xs:extension base="apx:Header">
<xs:attribute name="FileStatus" type="apx:NonEmptyString" use="optional">
<xs:annotation>
<xs:documentation>Used by Outbound GetStatus responses only. Do not Submit or expect in GetScheduleData responses</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="MarketStatus" type="apx:NonEmptyString" use="optional">
<xs:annotation>
<xs:documentation>Used by Outbound GetScheduleData responses only. Do not Submit or expect in GetStatus responses</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:schema>
APXParameterSet XSD
<?xml version="1.0" encoding="utf-8"?>
<!-- Schema for APX ParameterSet.
Author: Andrew Thornton
Revision 1.2
History:
Jul 01, 2010 Created
Aug 05, 2010 Added "SASM" and "SASM2" market stages
Oct 16, 2010 Added "DART" market stage
Oct 18, 2010 Added 'DART', 'SASM', and 'SASM2' to the <DataSource> enumeration. Source for data copied from Awards into another market offering
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:apx="http://service.apx.com/ParameterSet" targetNamespace="http://service.apx.com/ParameterSet" elementFormDefault="qualified" attributeFormDefault="unqualified">
<!-- Non-empty string -->
<xs:simpleType name="NonEmptyString">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:pattern value=".*[^\s].*"/>
<xs:whiteSpace value="replace"/>
</xs:restriction>
</xs:simpleType>
<!-- ControlArea-->
<xs:simpleType name="Region">
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="MRTU"/>
<xs:enumeration value="TX"/>
<xs:enumeration value="MISO"/>
<xs:enumeration value="PJM"/>
<xs:enumeration value="ERCOT"/>
</xs:restriction>
</xs:simpleType>
<!--MarketType-->
<xs:simpleType name="MarketStage">
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="DA"/>
<xs:enumeration value="RT"/>
<xs:enumeration value="DART"/>
<xs:enumeration value="SASM"/>
<xs:enumeration value="SASM2"/>
</xs:restriction>
</xs:simpleType>
<!--MarketStatus-->
<xs:simpleType name="MarketStatus">
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="PRE"/>
<xs:enumeration value="POST"/>
<xs:enumeration value="AWARD"/>
</xs:restriction>
</xs:simpleType>
<!--Application-->
<xs:simpleType name="Application">
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="BidsOffers"/>
<xs:enumeration value="BilateralSchedule"/>
<xs:enumeration value="ResourceParameters"/>
</xs:restriction>
</xs:simpleType>
<!--DataSource-->
<xs:simpleType name="DataSource">
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="API"/>
<xs:enumeration value="DA"/>
<xs:enumeration value="DART"/>
<xs:enumeration value="SASM"/>
<xs:enumeration value="SASM2"/>
<xs:enumeration value="ISO"/>
<xs:enumeration value="UI"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="ParameterSet">
<xs:complexType>
<xs:all>
<xs:element name="MarketParticipant" type="apx:NonEmptyString" minOccurs="1" maxOccurs="1"/>
<xs:element name="MarketStage" type="apx:MarketStage" minOccurs="1" maxOccurs="1"/>
<xs:element name="MarketStatus" type="apx:MarketStatus" minOccurs="1" maxOccurs="1"/>
<xs:element name="FirstIntervalBegin" type="xs:dateTime" minOccurs="1" maxOccurs="1"/>
<xs:element name="LastIntervalEnd" type="xs:dateTime" minOccurs="1" maxOccurs="1"/>
<xs:element name="Region" type="apx:Region" minOccurs="1" maxOccurs="1"/>
<xs:element name="Applications" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="Application" type="apx:Application" minOccurs="1" maxOccurs="3"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ExternalIds" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="ExternalId" type="apx:NonEmptyString" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="DataSources" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="DataSource" type="apx:DataSource" minOccurs="1" maxOccurs="4" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
</xs:element>
</xs:schema>
ScheduleData XSD
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:apx="http://service.apx.com/ScheduleData" targetNamespace="http://service.apx.com/ScheduleData" elementFormDefault="qualified" attributeFormDefault="unqualified">
<!-- Non-empty string -->
<xs:simpleType name="NonEmptyString">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:whiteSpace value="replace"/>
<xs:pattern value=".*[^\s].*"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="NonNegativeDecimal">
<xs:restriction base="xs:decimal">
<xs:minInclusive value="0.00"/>
<xs:totalDigits value="10"/>
<xs:fractionDigits value="3"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Pricedecimal">
<xs:restriction base="xs:decimal">
<xs:totalDigits value="10"/>
<xs:fractionDigits value="4"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="MWdecimal">
<xs:restriction base="xs:decimal">
<xs:totalDigits value="10"/>
<xs:fractionDigits value="3"/>
</xs:restriction>
</xs:simpleType>
<!-- ControlArea-->
<xs:simpleType name="Region">
<xs:restriction base="xs:string">
<xs:enumeration value="ISONE"/>
<xs:enumeration value="MISO"/>
<xs:enumeration value="NYISO"/>
<xs:enumeration value="PJM"/>
<xs:enumeration value="SPP"/>
</xs:restriction>
</xs:simpleType>
<!-- ParameterType-->
<xs:complexType name="ParameterType">
<xs:attribute name="IntervalEndGmt" type="xs:dateTime" use="optional">
<xs:annotation>
<xs:documentation source="ISO local interval ending time converted to GMT"/>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Value" type="apx:NonEmptyString" use="optional"/>
<xs:attribute name="Status" type="apx:NonEmptyString" use="optional">
<xs:annotation>
<xs:documentation>Used by Outbound methods only. Do not Submit</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Message" type="apx:NonEmptyString" use="optional">
<xs:annotation>
<xs:documentation>Used by Outbound methods only. Do not Submit</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!--Parameter Tables-->
<xs:complexType name="TableValueType">
<xs:choice>
<xs:element name="TwoColumns">
<xs:annotation>
<xs:documentation>Used in some ISOs for Bid Curves or Ramp Rate Curves</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Row" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="Id" type="xs:byte" use="required"/>
<xs:attribute name="X" type="xs:decimal" use="required"/>
<xs:attribute name="Y" type="xs:decimal" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ThreeColumns">
<xs:annotation>
<xs:documentation>Used in some ISOs for Ramp Rate Curves with three columns, e.g. SPP MW/rate/emergency rate</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Row" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="Id" type="xs:byte" use="required"/>
<xs:attribute name="X" type="xs:decimal" use="required"/>
<xs:attribute name="Y1" type="xs:decimal" use="required"/>
<xs:attribute name="Y2" type="xs:decimal" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Factors">
<xs:annotation>
<xs:documentation>Used for distribution factors or other 2-column non-curve sets</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Factor" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="Id" type="xs:byte" use="required"/>
<xs:attribute name="Name" type="xs:string" use="required"/>
<xs:attribute name="X" type="xs:decimal" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
<xs:attribute name="IntervalEndGmt" type="xs:dateTime" use="required">
<xs:annotation>
<xs:documentation source="ISO local interval ending time converted to GMT"/>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Status" type="apx:NonEmptyString" use="optional">
<xs:annotation>
<xs:documentation>Used by Outbound methods only. Do not Submit</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!-- Resource Parameters-->
<xs:complexType name="ResourceParameters">
<xs:choice maxOccurs="unbounded">
<xs:element name="Value" type="apx:ParameterType"/>
<xs:element name="TableValue" type="apx:TableValueType"/>
</xs:choice>
<xs:attribute name="MarketParticipant" type="apx:NonEmptyString" use="required"/>
<xs:attribute name="Location" type="apx:NonEmptyString" use="required"/>
<xs:attribute name="ParameterType" type="xs:string" use="required"/>
<xs:attribute name="ReferenceCode" type="apx:NonEmptyString" use="optional"/>
<xs:attribute name="IntervalLength" use="optional" default="PT1H">
<xs:simpleType>
<xs:restriction base="xs:duration">
<xs:enumeration value="P1D"/>
<xs:enumeration value="PT1H"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<!-- ==========================
Bilateral Schedule Specific parts
========================== -->
<!-- BilateralScheduleDetail -->
<xs:complexType name="BilateralScheduleDetail">
<xs:attribute name="IntervalEndGmt" type="xs:dateTime" use="required">
<xs:annotation>
<xs:documentation source="ISO local interval ending time converted to GMT"/>
</xs:annotation>
</xs:attribute>
<xs:attribute name="MW" type="apx:NonNegativeDecimal" use="optional"/>
<xs:attribute name="CounterPartyMW" type="apx:NonNegativeDecimal" use="optional">
<xs:annotation>
<xs:documentation>Used by Outbound methods only. Do not Submit</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Status" type="apx:NonEmptyString" use="optional">
<xs:annotation>
<xs:documentation>Used by Outbound methods only. Do not Submit</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Message" type="apx:NonEmptyString" use="optional">
<xs:annotation>
<xs:documentation>Used by Outbound methods only. Do not Submit</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!-- BilateralSchedule-->
<xs:complexType name="BilateralSchedules">
<xs:annotation>
<xs:documentation>In most ISOs, ReferenceCode attribute alone will identify the contract to schedule--other attributes not needed.</xs:documentation>
</xs:annotation>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="BilateralScheduleDetail" type="apx:BilateralScheduleDetail"/>
</xs:sequence>
<xs:attribute name="MarketParticipant" type="apx:NonEmptyString" use="required"/>
<xs:attribute name="IntervalLength" use="optional" default="PT1H">
<xs:simpleType>
<xs:annotation>
<xs:documentation>Represents how long each interval in ScheduleDetail is.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:duration">
<xs:enumeration value="PT15M"/>
<xs:enumeration value="PT1H"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Transaction" type="xs:string" use="optional"/>
<xs:attribute name="Location" type="apx:NonEmptyString" use="optional"/>
<xs:attribute name="SinkLocation" type="apx:NonEmptyString" use="optional"/>
<xs:attribute name="CounterParty" type="apx:NonEmptyString" use="optional"/>
<xs:attribute name="TradeName" type="apx:NonEmptyString" use="optional"/>
<xs:attribute name="ReferenceCode" type="apx:NonEmptyString" use="optional">
<xs:annotation>
<xs:documentation>This is the ISO code for the bilateral contract--if used, other attributes not needed</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="DependOnTradeName" type="apx:NonEmptyString" use="optional"/>
<xs:attribute name="ExternalId" type="apx:NonEmptyString" use="optional"/>
</xs:complexType>
<!-- ==========================
BidOffer Specific parts
=========================== -->
<!-- CurveType -->
<xs:simpleType name="CurveType">
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="Block"/>
<xs:enumeration value="Slope"/>
<xs:enumeration value="Fixed"/>
</xs:restriction>
</xs:simpleType>
<!-- BidCurve-->
<xs:complexType name="BidCurve">
<xs:attribute name="MW" type="apx:MWdecimal" use="optional"/>
<xs:attribute name="Price" type="apx:Pricedecimal" use="optional"/>
</xs:complexType>
<!-- SelfScheduleType -->
<xs:complexType name="SelfScheduleType">
<xs:attribute name="IntervalEndGmt" type="xs:dateTime" use="required">
<xs:annotation>
<xs:documentation source="ISO local interval ending time converted to GMT"/>
</xs:annotation>
</xs:attribute>
<xs:attribute name="MW" type="apx:MWdecimal" use="optional"/>
<xs:attribute name="Price" type="apx:Pricedecimal" use="optional">
<xs:annotation>
<xs:documentation>Used by Outbound methods only (post-market price). Do not Submit</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Status" type="apx:NonEmptyString" use="optional">
<xs:annotation>
<xs:documentation>Used by Outbound methods only. Do not Submit</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Message" type="apx:NonEmptyString" use="optional">
<xs:annotation>
<xs:documentation>Used by Outbound methods only. Do not Submit</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!-- MarketScheduleType-->
<xs:complexType name="MarketScheduleType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="Curve">
<xs:complexType>
<xs:sequence>
<xs:element name="CurvePoint" type="apx:BidCurve" maxOccurs="16"/>
</xs:sequence>
<xs:attribute name="LinkedHours" type="apx:NonEmptyString" use="optional"/>
<xs:attribute name="CurveType" type="apx:CurveType" use="optional"/>
<xs:attribute name="IntervalEndGmt" type="xs:dateTime" use="required">
<xs:annotation>
<xs:documentation source="ISO local interval ending time converted to GMT"/>
</xs:annotation>
</xs:attribute>
<xs:attribute name="CoOptimizedWithAS" type="xs:boolean" use="optional"/>
<xs:attribute name="Reason" type="apx:NonEmptyString" use="optional"/>
<xs:attribute name="Status" type="apx:NonEmptyString" use="optional">
<xs:annotation>
<xs:documentation>Used by Outbound methods only. Do not Submit</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Message" type="apx:NonEmptyString" use="optional">
<xs:annotation>
<xs:documentation>Used by Outbound methods only. Do not Submit</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<!-- SubmitBid -->
<xs:complexType name="BidsOffers">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="SelfSchedule">
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="Schedule" type="apx:SelfScheduleType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="MarketSchedule">
<xs:complexType>
<xs:complexContent>
<xs:extension base="apx:MarketScheduleType">
<xs:attribute name="LinkedOfferID" type="apx:NonEmptyString" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:choice>
<xs:attribute name="MarketParticipant" type="apx:NonEmptyString" use="required"/>
<xs:attribute name="IntervalLength" use="optional" default="PT1H">
<xs:simpleType>
<xs:restriction base="xs:duration">
<xs:enumeration value="PT5M"/>
<xs:enumeration value="PT15M"/>
<xs:enumeration value="PT1H"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Transaction" type="xs:string" use="required"/>
<xs:attribute name="Location" type="apx:NonEmptyString" use="required"/>
<xs:attribute name="SinkLocation" type="apx:NonEmptyString" use="optional">
<xs:annotation>
<xs:documentation>Only use for source/sink transactions</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LinkId" type="apx:NonEmptyString" use="optional"/>
<xs:attribute name="WheelId" type="apx:NonEmptyString" use="optional"/>
<xs:attribute name="ReferenceCode" type="apx:NonEmptyString" use="optional">
<xs:annotation>
<xs:documentation>Used to identify the Schedule ID in PJM and ISONE</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="SupportingResource" type="apx:NonEmptyString" use="optional"/>
<xs:attribute name="NERCTag" type="apx:NonEmptyString" use="optional"/>
<xs:attribute name="ExternalId" type="apx:NonEmptyString" use="optional"/>
<xs:attribute name="ExpirationDateTime" type="xs:dateTime" use="optional"/>
<xs:attribute name="MultiHourBlock" type="apx:NonEmptyString" use="optional"/>
<xs:attribute name="OasisId" type="apx:NonEmptyString" use="optional"/>
</xs:complexType>
<!-- Common API parent element-->
<xs:complexType name="Header">
<xs:choice minOccurs="0" maxOccurs="1">
<xs:element name="MarketBidData">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="BidsOffers" type="apx:BidsOffers"/>
<xs:element name="ResourceParameters" type="apx:ResourceParameters"/>
</xs:choice>
<xs:attribute name="Date" type="xs:date" use="required"/>
<xs:attribute name="EndDate" type="xs:date" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="MarketTradeData">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="BilateralSchedules" type="apx:BilateralSchedules"/>
</xs:choice>
<xs:attribute name="Date" type="xs:date" use="required"/>
<xs:attribute name="EndDate" type="xs:date" use="optional"/>
</xs:complexType>
</xs:element>
</xs:choice>
<xs:attribute name="Version" type="xs:decimal" use="optional" default="2.1"/>
<xs:attribute name="SourceSystem" type="apx:NonEmptyString" use="required"/>
<xs:attribute name="CreateDate" type="xs:dateTime" use="required"/>
<xs:attribute name="Region" type="apx:Region" use="required"/>
</xs:complexType>
<!-- Entry Points:-->
<!-- Submit should not include status elements -->
<xs:element name="Submit">
<xs:complexType>
<xs:complexContent>
<xs:extension base="apx:Header">
<xs:attribute name="SubmitToISO" type="xs:boolean" use="optional" default="false"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- Result includes status elements -->
<xs:element name="Response">
<xs:complexType>
<xs:complexContent>
<xs:extension base="apx:Header">
<xs:attribute name="FileStatus" type="apx:NonEmptyString" use="optional">
<xs:annotation>
<xs:documentation>Used by Outbound GetStatus responses only. Do not Submit or expect in GetScheduleData responses</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="MarketStatus" type="apx:NonEmptyString" use="optional">
<xs:annotation>
<xs:documentation>Used by Outbound GetScheduleData responses only. Do not Submit or expect in GetStatus responses</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:schema>