<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:m="http://ucaiug.org/2022/GetUsagePointGroups#"
           xmlns:sawsdl="http://www.w3.org/ns/sawsdl"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://ucaiug.org/2022/GetUsagePointGroups#"
           elementFormDefault="qualified"
           attributeFormDefault="unqualified">
   <xs:annotation>
      <xs:documentation xml:lang="en">
	Copyright 2026 UCAIug

	Licensed under the Apache License, Version 2.0 (the "License");
	you may not use this file except in compliance with the License.
	You may obtain a copy of the License at

	https://www.apache.org/licenses/LICENSE-2.0

	Unless required by applicable law or agreed to in writing, software
	distributed under the License is distributed on an "AS IS" BASIS,
	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
	
	See the License for the specific language governing permissions and
	limitations under the License.
</xs:documentation>
   </xs:annotation>
   <xs:annotation/>
   <xs:element name="GetUsagePointGroups" type="m:GetUsagePointGroups"/>
   <xs:complexType name="GetUsagePointGroups">
      <xs:sequence>
         <xs:element name="DemandResponseProgram"
                     type="m:DemandResponseProgram"
                     minOccurs="0"
                     maxOccurs="unbounded"/>
         <xs:element name="UsagePoint"
                     type="m:UsagePoint"
                     minOccurs="0"
                     maxOccurs="unbounded"/>
         <xs:element name="UsagePointGroup"
                     type="m:UsagePointGroup"
                     minOccurs="0"
                     maxOccurs="unbounded"/>
      </xs:sequence>
   </xs:complexType>
   <xs:complexType name="DemandResponseProgram"
                   sawsdl:modelReference="http://iec.ch/TC57/CIM-generic#DemandResponseProgram">
      <xs:annotation>
         <xs:documentation>Demand response program.</xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="mRID"
                     minOccurs="0"
                     maxOccurs="1"
                     type="xs:string"
                     sawsdl:modelReference="http://iec.ch/TC57/CIM-generic#IdentifiedObject.mRID">
            <xs:annotation>
               <xs:documentation>Master resource identifier issued by a model authority. The mRID is unique within an exchange context. Global uniqueness is easily achieved by using a UUID, as specified in RFC 4122, for the mRID. The use of UUID is strongly recommended.</xs:documentation>
               <xs:documentation>For CIMXML data files in RDF syntax conforming to IEC 61970-552, the mRID is mapped to rdf:ID or rdf:about attributes that identify CIM object elements.</xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="type"
                     minOccurs="0"
                     maxOccurs="1"
                     type="xs:string"
                     sawsdl:modelReference="http://iec.ch/TC57/CIM-generic#DemandResponseProgram.type">
            <xs:annotation>
               <xs:documentation>Type of demand response program; examples are CPP (critical-peak pricing), RTP (real-time pricing), DLC (direct load control), DBP (demand bidding program), BIP (base interruptible program). Note that possible types change a lot and it would be impossible to enumerate them all.</xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Names"
                     minOccurs="0"
                     maxOccurs="unbounded"
                     type="m:Name"
                     sawsdl:modelReference="http://iec.ch/TC57/CIM-generic#IdentifiedObject.Names">
            <xs:annotation>
               <xs:documentation>All names of this identified object.</xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
   </xs:complexType>
   <xs:complexType name="Name" sawsdl:modelReference="http://iec.ch/TC57/CIM-generic#Name">
      <xs:annotation>
         <xs:documentation>The Name class provides the means to define any number of human readable  names for an object. A name is &lt;b&gt;not&lt;/b&gt; to be used for defining inter-object relationships. For inter-object relationships instead use the object identification 'mRID'.</xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="name"
                     minOccurs="1"
                     maxOccurs="1"
                     type="xs:string"
                     sawsdl:modelReference="http://iec.ch/TC57/CIM-generic#Name.name">
            <xs:annotation>
               <xs:documentation>Any free text that name the object.</xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="NameType"
                     minOccurs="0"
                     maxOccurs="1"
                     type="m:NameType"
                     sawsdl:modelReference="http://iec.ch/TC57/CIM-generic#Name.NameType">
            <xs:annotation>
               <xs:documentation>Type of this name.</xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
   </xs:complexType>
   <xs:complexType name="NameType"
                   sawsdl:modelReference="http://iec.ch/TC57/CIM-generic#NameType">
      <xs:annotation>
         <xs:documentation>Type of name. Possible values for attribute 'name' are implementation dependent but standard profiles may specify types. An enterprise may have multiple IT systems each having its own local name for the same object, e.g. a planning system may have different names from an EMS. An object may also have different names within the same IT system, e.g. localName as defined in CIM version 14. The definition from CIM14 is:</xs:documentation>
         <xs:documentation>The localName is a human readable name of the object. It is a free text name local to a node in a naming hierarchy similar to a file directory structure. A power system related naming hierarchy may be: Substation, VoltageLevel, Equipment etc. Children of the same parent in such a hierarchy have names that typically are unique among them.</xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="description"
                     minOccurs="0"
                     maxOccurs="1"
                     type="xs:string"
                     sawsdl:modelReference="http://iec.ch/TC57/CIM-generic#NameType.description">
            <xs:annotation>
               <xs:documentation>Description of the name type.</xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="name"
                     minOccurs="1"
                     maxOccurs="1"
                     type="xs:string"
                     sawsdl:modelReference="http://iec.ch/TC57/CIM-generic#NameType.name">
            <xs:annotation>
               <xs:documentation>Name of the name type.</xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="NameTypeAuthority"
                     minOccurs="0"
                     maxOccurs="1"
                     type="m:NameTypeAuthority"
                     sawsdl:modelReference="http://iec.ch/TC57/CIM-generic#NameType.NameTypeAuthority">
            <xs:annotation>
               <xs:documentation>Authority responsible for managing names of this type.</xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
   </xs:complexType>
   <xs:complexType name="NameTypeAuthority"
                   sawsdl:modelReference="http://iec.ch/TC57/CIM-generic#NameTypeAuthority">
      <xs:annotation>
         <xs:documentation>Authority responsible for creation and management of names of a given type; typically an organization or an enterprise system.</xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="description"
                     minOccurs="0"
                     maxOccurs="1"
                     type="xs:string"
                     sawsdl:modelReference="http://iec.ch/TC57/CIM-generic#NameTypeAuthority.description">
            <xs:annotation>
               <xs:documentation>Description of the name type authority.</xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="name"
                     minOccurs="1"
                     maxOccurs="1"
                     type="xs:string"
                     sawsdl:modelReference="http://iec.ch/TC57/CIM-generic#NameTypeAuthority.name">
            <xs:annotation>
               <xs:documentation>Name of the name type authority.</xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
   </xs:complexType>
   <xs:complexType name="UsagePoint"
                   sawsdl:modelReference="http://iec.ch/TC57/CIM-generic#UsagePoint">
      <xs:annotation>
         <xs:documentation>Logical or physical point in the network to which readings or events may be attributed. Used at the place where a physical or virtual meter may be located; however, it is not required that a meter be present.</xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="mRID"
                     minOccurs="0"
                     maxOccurs="1"
                     type="xs:string"
                     sawsdl:modelReference="http://iec.ch/TC57/CIM-generic#IdentifiedObject.mRID">
            <xs:annotation>
               <xs:documentation>Master resource identifier issued by a model authority. The mRID is unique within an exchange context. Global uniqueness is easily achieved by using a UUID, as specified in RFC 4122, for the mRID. The use of UUID is strongly recommended.</xs:documentation>
               <xs:documentation>For CIMXML data files in RDF syntax conforming to IEC 61970-552, the mRID is mapped to rdf:ID or rdf:about attributes that identify CIM object elements.</xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Names"
                     minOccurs="0"
                     maxOccurs="unbounded"
                     type="m:Name"
                     sawsdl:modelReference="http://iec.ch/TC57/CIM-generic#IdentifiedObject.Names">
            <xs:annotation>
               <xs:documentation>All names of this identified object.</xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
   </xs:complexType>
   <xs:complexType name="UsagePointGroup"
                   sawsdl:modelReference="http://iec.ch/TC57/CIM-generic#UsagePointGroup">
      <xs:annotation>
         <xs:documentation>Abstraction for management of group communications within a two-way AMR system or the data for a group of related usage points. Commands can be issued to all of the usage points that belong to a usage point group using a defined group address and the underlying AMR communication infrastructure.</xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="mRID"
                     minOccurs="0"
                     maxOccurs="1"
                     type="xs:string"
                     sawsdl:modelReference="http://iec.ch/TC57/CIM-generic#IdentifiedObject.mRID">
            <xs:annotation>
               <xs:documentation>Master resource identifier issued by a model authority. The mRID is unique within an exchange context. Global uniqueness is easily achieved by using a UUID, as specified in RFC 4122, for the mRID. The use of UUID is strongly recommended.</xs:documentation>
               <xs:documentation>For CIMXML data files in RDF syntax conforming to IEC 61970-552, the mRID is mapped to rdf:ID or rdf:about attributes that identify CIM object elements.</xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Names"
                     minOccurs="0"
                     maxOccurs="unbounded"
                     type="m:Name"
                     sawsdl:modelReference="http://iec.ch/TC57/CIM-generic#IdentifiedObject.Names">
            <xs:annotation>
               <xs:documentation>All names of this identified object.</xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
   </xs:complexType>
</xs:schema>
