<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="urn:ws.tracker.collabnet.com"
xmlns:tns="urn:ws.tracker.collabnet.com">
  <xs:element name="getArtifactList" type="tns:getArtifactListType"/>
  <xs:complexType name="getArtifactListType">
    <xs:choice>
      <xs:element name="adhocQuery" type="tns:adhocQueryType"/>
      <xs:element name="namedQuery" type="tns:namespaceTagName"/>
    </xs:choice>
  </xs:complexType>
  
  <xs:complexType name="adhocQueryType">
    <xs:sequence>
      <xs:element name="artifactTypes" type="tns:artifactTypesType"/>
      <xs:element name="attributes" type="tns:attributesType" minOccurs="0"/>
      <xs:element name="idRange" type="tns:idRangeType" minOccurs="0"/>
      <xs:element name="modifiedOn" type="tns:dateRangeType" minOccurs="0"/>
      <xs:element name="createdOn" type="tns:dateRangeType" minOccurs="0"/>
      <xs:element name="userConditions" type="tns:userConditionType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:complexType name="artifactTypesType">
    <xs:sequence>
      <xs:element name="artifactType" minOccurs="1" maxOccurs="unbounded" type="tns:namespaceTagName"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:complexType name="attributesType">
    <xs:sequence>
      <xs:element name="attribute" minOccurs="0" maxOccurs="unbounded" type="tns:attributeType"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:complexType name="attributeType">
    <xs:complexContent>
      <xs:extension base="tns:namespaceTagName">
      <xs:sequence>
        <xs:element name="condition" type="tns:conditionType"/>
      </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  
  <xs:complexType name="conditionType">
    <xs:choice>
      <xs:element name="dateCondition" type="tns:dateConditionType"/>
      <xs:element name="intCondition" type="tns:intConditionType"/>
      <xs:element name="textCondition" type="tns:textConditionType"/>
      <xs:element name="listCondition" type="tns:listConditionType"/>
      <xs:element name="stateTransitionConditon" type="tns:stateTransitionConditionType"/>
    </xs:choice>
  </xs:complexType>
  
  <xs:complexType name="dateConditionType">
    <xs:all>
      <xs:element name="min" type="xs:long"/>
      <xs:element name="max" type="xs:long"/>
      <xs:element name="comparator">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="BETWEEN"/>
            <xs:enumeration value="ON"/>
            <xs:enumeration value="ON_OR_BEFORE"/>
            <xs:enumeration value="ON_OR_AFTER"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:all>
  </xs:complexType>
  
  <xs:complexType name="intConditionType">
    <xs:sequence>
      <xs:element name="value" type="xs:int"/>
    </xs:sequence>
  </xs:complexType>  

  <xs:complexType name="textConditionType">
    <xs:sequence>
      <xs:element name="value" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:complexType name="listConditionType">
    <xs:sequence>
      <xs:element name="value" type="xs:string" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>  

  <xs:complexType name="stateTransitionConditionType">
    <xs:sequence>
      <xs:element name="from" type="tns:namespaceTagName"/>
      <xs:element name="to" type="tns:namespaceTagName"/>
      <xs:choice>
        <xs:element name="range" type="tns:rangeType"/>
        <xs:element name="relative" type="tns:relativeType"/>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>  
  
  <xs:complexType name="rangeType">
    <xs:sequence>
      <xs:element name="min" type="xs:long" minOccurs="0" nillable="true"/>
      <xs:element name="max" type="xs:long" minOccurs="0" nillable="true"/>
    </xs:sequence>
  </xs:complexType>
 
  <xs:complexType name="relativeType">
    <xs:sequence>
      <xs:element name="floatType" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="lastx"/>
            <xs:enumeration value="wtd"/>
            <xs:enumeration value="mtd"/>
            <xs:enumeration value="ytd"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="interval" type="xs:int"/>
      <xs:element name="intervalType">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="year"/>
            <xs:enumeration value="month"/>
            <xs:enumeration value="day"/>
            <xs:enumeration value="weekOfMonth"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="relativeType" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="le"/>
            <xs:enumeration value="ge"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
 
   <xs:complexType name="idRangeType">
    <xs:sequence>
      <xs:element name="minId"/>
      <xs:element name="maxId"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:complexType name="dateRangeType">
    <xs:choice>
      <xs:element name="rangeCondition" type="tns:rangeType"/>
      <xs:element name="relativeCondition" type="tns:relativeType"/>
    </xs:choice>
  </xs:complexType>
  
  <xs:complexType name="userConditionType">
    <xs:sequence>
      <xs:element name="userAttrMap" type="tns:userAttrMapType" minOccurs="0"/>
      <xs:element name="unassociated" type="tns:unassociated" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:complexType name="userAttrMapType">
    <xs:sequence>
      <xs:element name="entry">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="user"/>
            <xs:element name="attribute" minOccurs="0" maxOccurs="unbounded" type="tns:namespaceTagName"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  
  <xs:complexType name="unassociated">
    <xs:sequence>
      <xs:element name="attribute" minOccurs="0" maxOccurs="unbounded" type="tns:namespaceTagName"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:complexType name="namespaceTagName">
    <xs:sequence>
      <xs:element name="tagName"/>
      <xs:element name="namespace"/>
    </xs:sequence>
  </xs:complexType>

</xs:schema>

