<?xml version="1.0" encoding="UTF-8"?>

<!-- ********************************************************************** -->
<!-- Copyright (c) 2004-2005 Broadsoft, Inc.  All rights reserved.          -->
<!-- ********************************************************************** -->
<!--       O C I   X M L   S C H E M A  :  S E A R C H   C R I T E R I A    -->
<!--                                                                        -->
<!-- This file defines the XML Schema for the BroadSoft Application Server  -->
<!-- Open Client Interface (OCI).                                           -->
<!-- ********************************************************************** -->

<xs:schema xmlns:xs             = "http://www.w3.org/2001/XMLSchema"
           xmlns:core           = "C"
           xmlns                = ""
           attributeFormDefault = "qualified"
           elementFormDefault   = "qualified">


  <xs:include schemaLocation="OCISchemaDataTypes.xsd"/>

  <xs:simpleType name="ResponseSizeLimit">
    <xs:annotation>
      <xs:documentation>
        Maximum number of rows to return in response to a search.
        By convention, elements of this type can be omitted to allow an
        unlimited number or rows in the search result.
      </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:int">
      <xs:minInclusive value="1"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="SearchCriteria" abstract="true">
    <xs:annotation>
      <xs:documentation>
        Abstract base type for specifing search criteria. A search criteria is an optional element
        used to restrict the number of rows returned when requesting a potentially large set of
        data from the provisioning server.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="SearchCriteriaString" abstract="true">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for a string. It is possible to search for matching columns that start with
        the value, or contain the value, or equal the value. By default, string searches are case insensitive,
        but clients may request a case-sensitive search.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteria">
        <xs:sequence>
          <xs:element name="mode" type="SearchMode"/>
          <xs:element name="value">
            <xs:simpleType>
              <xs:restriction base="xs:token">
                <xs:minLength value="1"/>
              </xs:restriction>
            </xs:simpleType>
          </xs:element>
          <xs:element name="isCaseInsensitive" type="xs:boolean" default="true"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SearchCriteriaLinePortDomain">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for device line/port, or SIPURI domain part.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteriaString"></xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SearchCriteriaLinePortUserPart">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for device line/port, or SIPURI user part.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteriaString"></xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SearchCriteriaDeviceMACAddress">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for device MAC address.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteriaString"></xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SearchCriteriaDeviceName">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for device name.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteriaString"></xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SearchCriteriaDeviceNetAddress">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for device network address.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteriaString"></xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SearchCriteriaDeviceSerialNumber">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for device serial number.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteriaString"></xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SearchCriteriaDeviceType">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for device type.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteriaString"></xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SearchCriteriaDn">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for a DN.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteriaString"></xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SearchCriteriaServiceCode">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for a Service Code.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteriaString"></xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SearchCriteriaServiceCodeDescription">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for a Service Code description.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteriaString"></xs:extension>
    </xs:complexContent>
  </xs:complexType>

 <xs:complexType name="SearchCriteriaSystemServiceDn">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for a system service DN.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteriaString"></xs:extension>
    </xs:complexContent>
 </xs:complexType>

  <xs:complexType name="SearchCriteriaEmailAddress">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for a email address.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteriaString"></xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SearchCriteriaAlternateTrunkIdentity">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for a particular fully specified alternate trunk identity
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteriaString"></xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SearchCriteriaExactCustomContactDirectory">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for a particular fully specified custom contact directory.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteria">
        <xs:sequence>
          <xs:element name="customContactDirectoryName" type="CustomContactDirectoryName"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SearchCriteriaExactDeviceServiceProvider">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for a particular fully specified service provider associated with a device.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteria">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SearchCriteriaExactDeviceType">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for a particular fully specified device type.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteria">
        <xs:sequence>
          <xs:element name="deviceType" type="AccessDeviceType"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SearchCriteriaExactDnActivation">
      <xs:annotation>
        <xs:documentation>
          Criteria for searching for a particular Dn activation state.
        </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
        <xs:extension base="SearchCriteria">
          <xs:sequence>
            <xs:element name="activated" type="xs:boolean"/>
          </xs:sequence>
        </xs:extension>
      </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SearchCriteriaExactDnDepartment">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for a particular fully specified DN's department.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteria">
        <xs:sequence>
          <xs:element name="departmentKey" type="DepartmentKey"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SearchCriteriaExactEndpointType">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for a particular endpoint type.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteria">
        <xs:sequence>
          <xs:element name="endpointType" type="EndpointType"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

    <xs:complexType name="SearchCriteriaExactPolicySelection">
      <xs:annotation>
        <xs:documentation>
          Criteria for searching for a particular Voice VPN policy selection.
        </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
        <xs:extension base="SearchCriteria">
          <xs:sequence>
            <xs:element name="policySelection" type="EnterpriseVoiceVPNPolicySelection"/>
          </xs:sequence>
        </xs:extension>
      </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SearchCriteriaExactServiceProvider">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for a particular fully specified service provider.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteria">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SearchCriteriaExactSignalingAddressType">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for a particular fully specified SignalingAddressType.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteria">
        <xs:sequence>
          <xs:element name="profile" type="SignalingAddressType"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SearchCriteriaExactUserDepartment">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for a particular fully specified user's department.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteria">
        <xs:sequence>
          <xs:element name="departmentKey" type="DepartmentKey"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SearchCriteriaExactUserGroup">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for a particular fully specified user's group.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteria">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="groupId" type="GroupId"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  
  <xs:complexType name="SearchCriteriaExactUserNetworkClassOfService">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for users with a specified network class of service.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteria">
        <xs:sequence>
          <xs:element name="networkClassOfService" type="NetworkClassOfServiceName"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SearchCriteriaExactUserType">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for a particular User Type.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteria">
        <xs:sequence>
          <xs:element name="userType" type="UserType"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>


  <xs:complexType name="SearchCriteriaExactUserInTrunkGroup">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for user in/not in a trunk group.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteria">
        <xs:sequence>
          <xs:element name="userInTrunkGroup" type="xs:boolean"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>


  <xs:complexType name="SearchCriteriaExtension">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for an extension.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteriaString"></xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SearchCriteriaGroupId">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for a group ID.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteriaString"></xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SearchCriteriaGroupLocationCode">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for a group location dialing code.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteriaString"></xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SearchCriteriaGroupName">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for a group name.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteriaString"></xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SearchCriteriaMobilePhoneNumber">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for a user's mobile phone number.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteriaString"></xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SearchCriteriaServiceProviderId">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for a service provider ID.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteriaString"></xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SearchCriteriaServiceProviderName">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for a service provider name.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteriaString"></xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SearchCriteriaTrunkGroupName">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for a trunk group
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteriaString"></xs:extension>
    </xs:complexContent>
  </xs:complexType>

   <xs:complexType name="SearchCriteriaUserFirstName">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for a user's first name.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteriaString"></xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SearchCriteriaUserId">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for a user's userId.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteriaString"></xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SearchCriteriaUserLastName">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for a user's last name.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteriaString"></xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SearchCriteriaYahooId">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for a user's yahoo id.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteriaString"></xs:extension>
    </xs:complexContent>
  </xs:complexType>
  
  <xs:complexType name="SearchCriteriaZoneIPAddress">
    <xs:annotation>
      <xs:documentation>
        Criteria for searching for a system zone's IP Address.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SearchCriteriaString"></xs:extension>
    </xs:complexContent>
  </xs:complexType>  

  <xs:simpleType name="SearchMode">
    <xs:annotation>
      <xs:documentation>Search mode when searching for string data.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:token">
      <xs:enumeration value="Starts With"/>
      <xs:enumeration value="Contains"/>
      <xs:enumeration value="Equal To"/>
    </xs:restriction>
  </xs:simpleType>

</xs:schema>

