<?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 R V I C E  P A R T                 -->
<!--                                                                        -->
<!-- C A L L   N O T I F Y  S E R V I C E                                   -->
<!--                                                                        -->
<!-- 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:import namespace      = "C"
             schemaLocation = "../OCISchemaBASE.xsd"/>
  
  <xs:include schemaLocation="../OCISchemaDataTypes.xsd"/>
  
  <!-- ********************************************************************************** -->
  <!-- C A L L   N O T I F Y    R E Q U E S T S  A N D  R E S P O N S E S                 -->
  <!-- ********************************************************************************** -->
  <!--
  Requests and responses are listed here in alphabetical order.
  The non-primitive attributes inside the commands are defined in another
  section of the schema.

  Requests in this schema file:
    SystemCallNotifyGetRequest    
    SystemCallNotifyModifyRequest    
    UserCallNotifyAddCriteriaRequest16    
    UserCallNotifyGetCriteriaRequest16    
    UserCallNotifyDeleteCriteriaRequest    
    UserCallNotifyModifyCriteriaRequest    
    UserCallNotifyGetRequest    
    UserCallNotifyModifyRequest    
    
  --> 
  
  <xs:complexType name="SystemCallNotifyGetRequest">
    <xs:annotation>
      <xs:documentation>
        Request the system level data associated with Call Notify.
        The response is either a SystemCallNotifyGetResponse or an
        ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>    
    
  <xs:complexType name="SystemCallNotifyGetResponse">
    <xs:annotation>
      <xs:documentation>
        Response to SystemCallNotifyGetRequest.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:element name="defaultFromAddress" type="EmailAddress"/>
          <xs:element name="useShortSubjectLine" type="xs:boolean"/>
          <xs:element name="useDnInMailBody" type="xs:boolean"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>    
    
  <xs:complexType name="SystemCallNotifyModifyRequest">
    <xs:annotation>
      <xs:documentation>
        Modify the system level data associated with Call Notify.
        The response is either a SuccessResponse or an ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="defaultFromAddress" type="EmailAddress" minOccurs="0"/>
          <xs:element name="useShortSubjectLine" type="xs:boolean" minOccurs="0"/>
          <xs:element name="useDnInMailBody" type="xs:boolean" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>    
    
  <xs:complexType name="UserCallNotifyAddCriteriaRequest16">
    <xs:annotation>
      <xs:documentation>
        Add a criteria to the user's call notify service.
        The response is either a SuccessResponse or an ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="userId" type="UserId"/>
          <xs:element name="criteriaName" type="CriteriaName"/>
          <xs:element name="timeSchedule" type="TimeSchedule" minOccurs="0"/>
          <xs:element name="holidaySchedule" type="HolidaySchedule" minOccurs="0"/>
          <xs:element name="blacklisted" type="xs:boolean"/>
          <xs:element name="fromDnCriteria" type="CriteriaFromDn"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>    
    
  <xs:complexType name="UserCallNotifyGetCriteriaRequest16">
    <xs:annotation>
      <xs:documentation>
        Get a criteria for the user's call notify service.
        The response is either a UserCallNotifyGetCriteriaResponse16 or an ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="userId" type="UserId"/>
          <xs:element name="criteriaName" type="CriteriaName"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>    
    
  <xs:complexType name="UserCallNotifyGetCriteriaResponse16">
    <xs:annotation>
      <xs:documentation>
        Response to the UserCallNotifyGetCriteriaRequest16.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:element name="timeSchedule" type="TimeSchedule" minOccurs="0"/>
          <xs:element name="holidaySchedule" type="HolidaySchedule" minOccurs="0"/>
          <xs:element name="blacklisted" type="xs:boolean"/>
          <xs:element name="fromDnCriteria" type="CriteriaFromDn"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>    
    
  <xs:complexType name="UserCallNotifyDeleteCriteriaRequest">
    <xs:annotation>
      <xs:documentation>
        Delete a criteria from the user's call notify service.
        The response is either a SuccessResponse or an ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="userId" type="UserId"/>
          <xs:element name="criteriaName" type="CriteriaName"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>    
    
  <xs:complexType name="UserCallNotifyModifyCriteriaRequest">
    <xs:annotation>
      <xs:documentation>
        Modify a criteria for the user's call notify service.
        The response is either a SuccessResponse or an ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="userId" type="UserId"/>
          <xs:element name="criteriaName" type="CriteriaName"/>
          <xs:element name="newCriteriaName" type="CriteriaName" minOccurs="0"/>
          <xs:element name="timeSchedule" type="TimeSchedule" nillable="true" minOccurs="0"/>
          <xs:element name="fromDnCriteria" type="CriteriaFromDnModify" minOccurs="0"/>
          <xs:element name="holidaySchedule" type="HolidaySchedule" nillable="true" minOccurs="0"/>
          <xs:element name="blacklisted" type="xs:boolean" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>    
    
  <xs:complexType name="UserCallNotifyGetRequest">
    <xs:annotation>
      <xs:documentation>
        Get the user's call notify service setting.
        The response is either a UserCallNotifyGetResponse or an ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="userId" type="UserId"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>    
    
  <xs:complexType name="UserCallNotifyGetResponse">
    <xs:annotation>
      <xs:documentation>
         
        Response to the UserCallNotifyGetRequest. The criteria table's column headings are: "Is Active", 
        "Criteria Name", "Time Schedule", "Calls From", "Blacklisted" and "Holiday Schedule".
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:element name="callNotifyEmailAddress" type="EmailAddress" minOccurs="0"/>
          <xs:element name="criteriaTable" type="core:OCITable"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>    
    
  <xs:complexType name="UserCallNotifyModifyRequest">
    <xs:annotation>
      <xs:documentation>
        Modify the user's call notify service setting.
        The response is either a SuccessResponse or an ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="userId" type="UserId"/>
          <xs:element name="callNotifyEmailAddress" type="EmailAddress" minOccurs="0"/>
          <xs:element name="criteriaActivation" type="CriteriaActivation" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>    
    
</xs:schema>
