<?xml version="1.0" encoding="UTF-8"?>
<xs:schema version="1.0"
  
  xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="PList" type="PList"/>
  <xs:element name="searchFilter" type="searchFilter"/>
  <xs:element name="timeBoundary" type="timeBoundary"/>
<xs:complexType name="PList">
  <xs:annotation>
    <xs:documentation>
      <![CDATA[Paginated-list, for returning search results.]]>
    </xs:documentation>
  </xs:annotation>
       <xs:sequence>
              <xs:element name="list" type="xs:anyType" minOccurs="0" maxOccurs="unbounded">
              </xs:element>
              <xs:element name="startIndex" type="xs:long" minOccurs="1">
              </xs:element>
              <xs:element name="pageSize" type="xs:int" minOccurs="1">
              </xs:element>
              <xs:element name="totalCount" type="xs:long" minOccurs="1">
              </xs:element>
              <xs:element name="sortType" type="sortType" minOccurs="0">
              </xs:element>
              <xs:element name="sortBy" type="xs:string" minOccurs="0">
              </xs:element>
      </xs:sequence>
</xs:complexType>

<xs:complexType name="searchFilter">
  <xs:annotation>
    <xs:documentation>
      <![CDATA[Generic filter, to specify search criteria using name/value pairs.]]>
    </xs:documentation>
  </xs:annotation>
       <xs:sequence>
              <xs:element name="params" minOccurs="0">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="entry" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="key" minOccurs="1" type="xs:string"/>
            <xs:element name="value" minOccurs="1" type="xs:anyType"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
              </xs:element>
              <xs:element name="startIndex" type="xs:long" minOccurs="1">
              </xs:element>
              <xs:element name="maxRows" type="xs:long" minOccurs="1">
              </xs:element>
              <xs:element name="getCount" type="xs:boolean" minOccurs="1">
              </xs:element>
              <xs:element name="sortBy" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="sortType" type="sortType" minOccurs="0">
              </xs:element>
      </xs:sequence>
</xs:complexType>

<xs:simpleType name="sortType">
  <xs:annotation>
    <xs:documentation>
      <![CDATA[to specify whether the result should be sorted? If yes, whether asc or desc.]]>
    </xs:documentation>
  </xs:annotation>
  <xs:restriction base="xs:string">
     
    <xs:enumeration value="NONE"/>
 
    <xs:enumeration value="ASC"/>
 
    <xs:enumeration value="DESC"/>
  </xs:restriction>
</xs:simpleType>

<xs:complexType name="timeBoundary">
  <xs:annotation>
    <xs:documentation>
      <![CDATA[Captures time-boundary details]]>
    </xs:documentation>
  </xs:annotation>
       <xs:sequence>
              <xs:element name="startTime" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="endTime" type="xs:string" minOccurs="0">
              </xs:element>
              <xs:element name="timeZone" type="xs:string" minOccurs="0">
              </xs:element>
      </xs:sequence>
</xs:complexType>

</xs:schema>