<?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 R O V I D E R   P A R T -->
<!--                                                                           -->
<!-- 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="OCISchemaSearchCriteria.xsd"/>
  <xs:include schemaLocation="OCISchemaDataTypes.xsd"/>

  <!-- ***************************************************************************** -->
  <!-- S E R V I C E   P R O V I D E R   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:
    ServiceProviderAccessDeviceAddRequest14
    ServiceProviderAccessDeviceCustomTagAddRequest
    ServiceProviderAccessDeviceCustomTagDeleteListRequest
    ServiceProviderAccessDeviceCustomTagGetListRequest 
    ServiceProviderAccessDeviceCustomTagModifyRequest
    ServiceProviderAccessDeviceDeleteRequest
    ServiceProviderAccessDeviceFileGetListRequest14sp8
    ServiceProviderAccessDeviceFileGetRequest14sp8
    ServiceProviderAccessDeviceFileModifyRequest14sp8
    ServiceProviderAccessDeviceGetListRequest
    ServiceProviderAccessDeviceGetRequest16
    ServiceProviderAccessDeviceGetUserListRequest
    ServiceProviderAccessDeviceModifyRequest14
    ServiceProviderAccessDeviceModifyUserRequest
    ServiceProviderAddRequest13mp2
    ServiceProviderAdminAddRequest14
    ServiceProviderAdminDeleteRequest
    ServiceProviderAdminGetListRequest14
    ServiceProviderAdminGetPolicyRequest14
    ServiceProviderAdminGetRequest14
    ServiceProviderAdminModifyPolicyRequest14
    ServiceProviderAdminModifyRequest
    ServiceProviderAnswerConfirmationGetRequest16
    ServiceProviderAnswerConfirmationModifyRequest16
    ServiceProviderCallProcessingGetPolicyRequest16
    ServiceProviderCallProcessingModifyPolicyRequest15
    ServiceProviderCPEConfigRebuildDeviceConfigFileRequest
    ServiceProviderCPEConfigResetDeviceRequest
    ServiceProviderDeleteRequest
    ServiceProviderDialPlanPolicyGetRequest
    ServiceProviderDialPlanPolicyModifyRequest
    ServiceProviderDialPlanPolicyGetAccessCodeListRequest
    ServiceProviderDialPlanPolicyGetAccessCodeRequest
    ServiceProviderDialPlanPolicyAddAccessCodeRequest
    ServiceProviderDialPlanPolicyDeleteAccessCodeRequest
    ServiceProviderDialPlanPolicyModifyAccessCodeRequest
    ServiceProviderDigitCollectionGetRequest13mp4
    ServiceProviderDigitCollectionModifyRequest
    ServiceProviderDnAddListRequest
    ServiceProviderDnDeleteListRequest
    ServiceProviderDnGetAvailableListRequest
    ServiceProviderDnGetSummaryListRequest
    ServiceProviderDomainAssignListRequest
    ServiceProviderDomainGetAssignedGroupListRequest
    ServiceProviderDomainGetAssignedListRequest
    ServiceProviderDomainUnassignListRequest
    ServiceProviderFeatureAccessCodeGetListRequest
    ServiceProviderFeatureAccessCodeModifyListRequest
    ServiceProviderFileRepositoryDeviceUserAddRequest
    ServiceProviderFileRepositoryDeviceUserDeleteRequest
    ServiceProviderFileRepositoryDeviceUserGetListRequest
    ServiceProviderFileRepositoryDeviceUserModifyRequest
    ServiceProviderGetDefaultRequest
    ServiceProviderGetListRequest
    ServiceProviderGetRequest13mp2
    ServiceProviderModifyRequest
    ServiceProviderNetworkClassOfServiceAssignListRequest
    ServiceProviderNetworkClassOfServiceAssignListToAllGroupsRequest
    ServiceProviderNetworkClassOfServiceAssignToAllUsersRequest
    ServiceProviderNetworkClassOfServiceGetAssignedListRequest
    ServiceProviderNetworkClassOfServiceGetAssignedGroupListRequest
    ServiceProviderNetworkClassOfServiceUnassignListRequest
    ServiceProviderPasswordRulesGetRequest16
    ServiceProviderPasswordRulesModifyRequest14sp3
    ServiceProviderPortalPasscodeRulesGetRequest
    ServiceProviderPortalPasscodeRulesModifyRequest
    ServiceProviderRoutingProfileGetRequest
    ServiceProviderRoutingProfileModifyRequest
    ServiceProviderServiceGetAuthorizationListRequest
    ServiceProviderServiceGetUserAssignableListRequest
    ServiceProviderServiceModifyAuthorizationListRequest
    ServiceProviderServicePackAddRequest
    ServiceProviderServicePackAddServiceListRequest
    ServiceProviderServicePackDeleteRequest
    ServiceProviderServicePackGetDetailListRequest
    ServiceProviderServicePackGetListRequest
    ServiceProviderServicePackGetServiceUsageListRequest
    ServiceProviderServicePackGetUtilizationListRequest
    ServiceProviderServicePackMigrationTaskAddRequest
    ServiceProviderServicePackMigrationTaskCopyRequest
    ServiceProviderServicePackMigrationTaskDeleteRequest
    ServiceProviderServicePackMigrationTaskGetAvailableGroupListRequest
    ServiceProviderServicePackMigrationTaskGetListRequest
    ServiceProviderServicePackMigrationTaskGetRequest14sp4
    ServiceProviderServicePackMigrationTaskModifyAssignmentListRequest
    ServiceProviderServicePackMigrationTaskModifyGroupListRequest
    ServiceProviderServicePackMigrationTaskModifyRemovalListRequest
    ServiceProviderServicePackMigrationTaskModifyRequest
    ServiceProviderServicePackMigrationTaskModifyUserSelectionRequest
    ServiceProviderServicePackMigrationTaskTerminateRequest
    ServiceProviderServicePackModifyRequest
  -->

  <xs:complexType name="ServiceProviderAccessDeviceAddRequest14">
    <xs:annotation>
      <xs:documentation>
        Request to add a service provider access device.
        The response is either SuccessResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="deviceName" type="AccessDeviceName"/>
          <xs:element name="deviceType" type="AccessDeviceType"/>
          <xs:element name="protocol" type="AccessDeviceProtocol" minOccurs="0"/>
          <xs:element name="netAddress" type="NetAddress" minOccurs="0"/>
          <xs:element name="port" type="Port1025" minOccurs="0"/>
          <xs:element name="outboundProxyServerNetAddress" type="NetAddress" minOccurs="0"/>
          <xs:element name="stunServerNetAddress" type="NetAddress" minOccurs="0"/>
          <xs:element name="macAddress" type="AccessDeviceMACAddress" minOccurs="0"/>
          <xs:element name="serialNumber" type="AccessDeviceSerialNumber" minOccurs="0"/>
          <xs:element name="description" type="AccessDeviceDescription" minOccurs="0"/>
          <xs:element name="physicalLocation" type="AccessDevicePhysicalLocation" minOccurs="0"/>
          <xs:element name="transportProtocol" type="TransportProtocol" minOccurs="0"/>
          <xs:element name="mobilityManagerProvisioningURL" type="URL" minOccurs="0"/>
          <xs:element name="mobilityManagerProvisioningUserName" type="MobilityManagerProvisioningUserName" minOccurs="0"/>
          <xs:element name="mobilityManagerProvisioningPassword" type="MobilityManagerProvisioningPassword" minOccurs="0"/>
          <xs:element name="mobilityManagerDefaultOriginatingServiceKey" type="MobilityManagerServiceKey" minOccurs="0"/>
          <xs:element name="mobilityManagerDefaultTerminatingServiceKey" type="MobilityManagerServiceKey" minOccurs="0"/>
          <xs:element name="useCustomUserNamePassword" type="xs:boolean" minOccurs="0"/>
          <xs:element name="accessDeviceCredentials" type="DeviceManagementUserNamePassword16" minOccurs="0"/>
       </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderAccessDeviceCustomTagAddRequest">
    <xs:annotation>
      <xs:documentation>
        Request to add a static configuration tag for a service provider access device.
        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="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="deviceName" type="AccessDeviceName"/>
          <xs:element name="tagName" type="DeviceManagementTagName"/>
          <xs:element name="tagValue" type="DeviceManagementTagValue" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderAccessDeviceCustomTagDeleteListRequest">
    <xs:annotation>
      <xs:documentation>
        Request to delete static configuration tags for a service provider access device.
        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="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="deviceName" type="AccessDeviceName"/>
          <xs:element name="tagName" type="DeviceManagementTagName" minOccurs="1" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderAccessDeviceCustomTagGetListRequest">
    <xs:annotation>
      <xs:documentation>
        Request to get the list of custom configuration tags managed by the Device Management System, on a per-device profile basis.
        The response is either ServiceProviderAccessDeviceCustomTagGetListResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="deviceName" type="AccessDeviceName"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderAccessDeviceCustomTagGetListResponse">
    <xs:annotation>
      <xs:documentation>
        Response to ServiceProviderAccessDeviceCustomTagGetListRequest.
        Contains a table of custom configuration tags managed by the Device Management System on a per-device profile basis.
        The column headings are: "Tag Name", "Tag Value"
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIResponse">
        <xs:sequence>
          <xs:element name="deviceCustomTagsTable" type="core:OCITable"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderAccessDeviceCustomTagModifyRequest">
    <xs:annotation>
      <xs:documentation>
        Request to modify a static configuration tag for a service provider access device.
        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="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="deviceName" type="AccessDeviceName"/>
          <xs:element name="tagName" type="DeviceManagementTagName"/>
          <xs:element name="tagValue" type="DeviceManagementTagValue" nillable="true" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderAccessDeviceDeleteRequest">
    <xs:annotation>
      <xs:documentation>
        Request to delete a specified service provider access device.
        The response is either SuccessResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="deviceName" type="AccessDeviceName"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderAccessDeviceFileModifyRequest14sp8">
    <xs:annotation>
      <xs:documentation>
        Request to modify a specified service provider/enterprise access device file.
        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="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="deviceName" type="AccessDeviceName"/>
          <xs:element name="fileFormat" type="DeviceManagementFileFormat"/>
          <xs:element name="fileSource" type="AccessDeviceEnhancedConfigurationMode" minOccurs="0"/>
          <xs:element name="uploadFile" type="FileResource" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderAccessDeviceFileGetListRequest14sp8">
    <xs:annotation>
      <xs:documentation>
        Request to get the list of device files managed by the Device Management System, on a per-device profile basis.
        The response is either ServiceProviderAccessDeviceFileGetListResponse14sp8 or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="deviceName" type="AccessDeviceName"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderAccessDeviceFileGetListResponse14sp8">
    <xs:annotation>
      <xs:documentation>
        Response to ServiceProviderAccessDeviceFileGetListRequest14sp8.
        Contains a table of device files managed by the Device Management System on a per-device profile basis.
        The column headings are: "File Format", "Is Authenticated".
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIResponse">
        <xs:sequence>
          <xs:element name="deviceFilesTable" type="core:OCITable"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderAccessDeviceFileGetRequest14sp8">
    <xs:annotation>
      <xs:documentation>
        Request to get a service provider device profile file.
        The response is either ServiceProviderAccessDeviceFileGetResponse14sp8 or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="deviceName" type="AccessDeviceName"/>
          <xs:element name="fileFormat" type="DeviceManagementFileFormat"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderAccessDeviceFileGetResponse14sp8">
    <xs:annotation>
      <xs:documentation>
        Response to ServiceProviderAccessDeviceFileGetRequest14sp8.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIResponse">
        <xs:sequence>
          <xs:element name="fileSource" type="AccessDeviceEnhancedConfigurationMode"/>
          <xs:element name="configurationFileName" type="AccessDeviceEnhancedConfigurationFileName" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderAccessDeviceGetListRequest">
    <xs:annotation>
      <xs:documentation>
        Requests the list of access devices in a service provider.
        The response is either ServiceProviderAccessDeviceGetListResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="responseSizeLimit" type="ResponseSizeLimit" minOccurs="0"/>
          <xs:element name="searchCriteriaDeviceName" type="SearchCriteriaDeviceName" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="searchCriteriaDeviceMACAddress" type="SearchCriteriaDeviceMACAddress" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="searchCriteriaDeviceNetAddress" type="SearchCriteriaDeviceNetAddress" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="searchCriteriaExactDeviceType" type="SearchCriteriaExactDeviceType" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderAccessDeviceGetListResponse">
    <xs:annotation>
      <xs:documentation>
        Response to ServiceProviderAccessDeviceGetListRequest.
        Contains a table of devices configured in the service provider.
        The column headings are: "Device Name", "Device Type", "Available Ports",
        "Net Address", "MAC Address", and "Status".
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:element name="accessDeviceTable" type="core:OCITable"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>


  <xs:complexType name="ServiceProviderAccessDeviceGetRequest16">
    <xs:annotation>
      <xs:documentation>
        Requests the configuration of a specified service provider access device.
        The response is either ServiceProviderAccessDeviceGetResponse16 or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="deviceName" type="AccessDeviceName"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderAccessDeviceGetResponse16">
    <xs:annotation>
      <xs:documentation>
        Response to ServiceProviderAccessDeviceGetRequest16.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:element name="deviceType" type="AccessDeviceType"/>
          <xs:element name="protocol" type="AccessDeviceProtocol"/>
          <xs:element name="netAddress" type="NetAddress" minOccurs="0"/>
          <xs:element name="port" type="Port1025" minOccurs="0"/>
          <xs:element name="outboundProxyServerNetAddress" type="NetAddress" minOccurs="0"/>
          <xs:element name="stunServerNetAddress" type="NetAddress" minOccurs="0"/>
          <xs:element name="macAddress" type="AccessDeviceMACAddress" minOccurs="0"/>
          <xs:element name="serialNumber" type="AccessDeviceSerialNumber" minOccurs="0"/>
          <xs:element name="description" type="AccessDeviceDescription" minOccurs="0"/>
          <xs:element name="numberOfPorts" type="UnboundedPositiveInt"/>
          <xs:element name="numberOfAssignedPorts" type="xs:int"/>
          <xs:element name="status" type="AccessDeviceStatus"/>
          <xs:element name="physicalLocation" type="AccessDevicePhysicalLocation" minOccurs="0"/>
          <xs:element name="transportProtocol" type="TransportProtocol" minOccurs="0"/>
          <xs:element name="mobilityManagerProvisioningURL" type="URL" minOccurs="0"/>
          <xs:element name="mobilityManagerProvisioningUserName" type="MobilityManagerProvisioningUserName" minOccurs="0"/>
          <xs:element name="mobilityManagerDefaultOriginatingServiceKey" type="MobilityManagerServiceKey" minOccurs="0"/>
          <xs:element name="mobilityManagerDefaultTerminatingServiceKey" type="MobilityManagerServiceKey" minOccurs="0"/>
          <xs:element name="useCustomUserNamePassword" type="xs:boolean" minOccurs="0"/>
          <xs:element name="userName" type="UserId" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderAccessDeviceGetUserListRequest">
    <xs:annotation>
      <xs:documentation>
        Requests the list of users on a specified device.
        The response is either ServiceProviderAccessDeviceGetResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="deviceName" type="AccessDeviceName"/>
          <xs:element name="responseSizeLimit" type="ResponseSizeLimit" minOccurs="0"/>
          <xs:element name="searchCriteriaLinePortUserPart" type="SearchCriteriaLinePortUserPart" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="searchCriteriaLinePortDomain" type="SearchCriteriaLinePortDomain" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="searchCriteriaUserLastName" type="SearchCriteriaUserLastName" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="searchCriteriaUserFirstName" type="SearchCriteriaUserFirstName" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="searchCriteriaDn" type="SearchCriteriaDn" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="searchCriteriaUserId" type="SearchCriteriaUserId" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="searchCriteriaGroupId" type="SearchCriteriaGroupId" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="searchCriteriaExactEndpointType" type="SearchCriteriaExactEndpointType" minOccurs="0"/>
          <xs:element name="searchCriteriaExactUserType" type="SearchCriteriaExactUserType" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderAccessDeviceGetUserListResponse">
    <xs:annotation>
      <xs:documentation>
        Response to ServiceProviderAccessDeviceGetUserListRequest.
        The column headings for the deviceUserTable are: "Line/Port", "Last Name",
        "First Name", "Phone Number", "Group Id", "User Id",
        "User Type", "Endpoint Type", "Primary Line/Port".
        In IMS mode, the table will contain a row for each TEL-URI in the Phone Number column.
        In standalone mode, rows for the alternate numbers are not included.
        The User Type column contains one of the enumerated UserType values.
        The Endpoint Type column contains one of the enumerated EndpointType values.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:element name="deviceUserTable" type="core:OCITable"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderAccessDeviceModifyRequest14">
    <xs:annotation>
      <xs:documentation>
        Request to modify a specified service provider access device.
        The response is either SuccessResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="deviceName" type="AccessDeviceName"/>
          <xs:element name="protocol" type="AccessDeviceProtocol" minOccurs="0"/>
          <xs:element name="netAddress" type="NetAddress" nillable="true" minOccurs="0"/>
          <xs:element name="port" type="Port1025" nillable="true" minOccurs="0"/>
          <xs:element name="outboundProxyServerNetAddress" type="NetAddress" nillable="true" minOccurs="0"/>
          <xs:element name="stunServerNetAddress" type="NetAddress" nillable="true" minOccurs="0"/>
          <xs:element name="macAddress" type="AccessDeviceMACAddress" nillable="true" minOccurs="0"/>
          <xs:element name="serialNumber" type="AccessDeviceSerialNumber" nillable="true" minOccurs="0"/>
          <xs:element name="description" type="AccessDeviceDescription" nillable="true" minOccurs="0"/>
          <xs:element name="physicalLocation" type="AccessDevicePhysicalLocation" nillable="true" minOccurs="0"/>
          <xs:element name="transportProtocol" type="TransportProtocol" minOccurs="0"/>
          <xs:element name="mobilityManagerProvisioningURL" type="URL" minOccurs="0"/>
          <xs:element name="mobilityManagerProvisioningUserName" type="MobilityManagerProvisioningUserName" minOccurs="0"/>
          <xs:element name="mobilityManagerProvisioningPassword" type="MobilityManagerProvisioningPassword" minOccurs="0"/>
          <xs:element name="mobilityManagerDefaultOriginatingServiceKey" type="MobilityManagerServiceKey" nillable="true" minOccurs="0"/>
          <xs:element name="mobilityManagerDefaultTerminatingServiceKey" type="MobilityManagerServiceKey" nillable="true" minOccurs="0"/>
          <xs:element name="useCustomUserNamePassword" type="xs:boolean" minOccurs="0"/>
          <xs:element name="accessDeviceCredentials" type="DeviceManagementUserNamePassword16" minOccurs="0" nillable="true"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderAccessDeviceModifyUserRequest">
    <xs:annotation>
      <xs:documentation>
        Request to modify attributes for line/ports assigned on the service provider device profile.
        The response is either SuccessResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="deviceName" type="AccessDeviceName"/>
          <xs:element name="linePort" type="AccessDeviceEndpointLinePort"/>
          <xs:element name="isPrimaryLinePort" type="xs:boolean" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderAddRequest13mp2">
    <xs:annotation>
      <xs:documentation>
        Add a service provider or enterprise.
        The response is either a SuccessResponse or an ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:choice>
            <xs:element name="isEnterprise" type="xs:boolean" fixed="true"/>
            <xs:element name="useCustomRoutingProfile" type="xs:boolean"/>
          </xs:choice>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="defaultDomain" type="NetAddress"/>
          <xs:element name="serviceProviderName" type="ServiceProviderName" minOccurs="0"/>
          <xs:element name="supportEmail" type="EmailAddress" minOccurs="0"/>
          <xs:element name="contact" type="Contact" minOccurs="0"/>
          <xs:element name="address" type="StreetAddress" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderAdminAddRequest14">
    <xs:annotation>
      <xs:documentation>
        Add a service provider administrator.
        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="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="userId" type="UserId"/>
          <xs:element name="firstName" type="FirstName" minOccurs="0"/>
          <xs:element name="lastName" type="LastName" minOccurs="0"/>
          <xs:element name="password" type="Password" minOccurs="0"/>
          <xs:element name="language" type="Language" minOccurs="0"/>
          <xs:element name="administratorType" type="ServiceProviderAdminType"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderAdminDeleteRequest">
    <xs:annotation>
      <xs:documentation>
        Delete a service provider administrator.
        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:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderAdminGetListRequest14">
    <xs:annotation>
      <xs:documentation>
        Get a list of service provider administrators.
        The response is either a ServiceProviderAdminGetListResponse14 or an ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderAdminGetListResponse14">
    <xs:annotation>
      <xs:documentation>
        Response to ServiceProviderAdminGetListRequest14.
        Contains a 5 column table with column headings "Administrator ID",
        "Last Name", "First Name", "Administrator Type", "Language".
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:element name="serviceProviderAdminTable" type="core:OCITable"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderAdminGetPolicyRequest14">
    <xs:annotation>
      <xs:documentation>
        Requests the service provider administrator's policy settings.
        The response is either ServiceProviderAdminGetPolicyResponse14 or 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="ServiceProviderAdminGetPolicyResponse14">
    <xs:annotation>
      <xs:documentation>
        Response to ServiceProviderAdminGetPolicyRequest14.
        Contains the policy settings for the service provider administrator.
        The networkPolicyAccess is returned only for the enterprise administrator.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIResponse">
        <xs:sequence>
          <xs:element name="profileAccess" type="ServiceProviderAdminProfileAccess"/>
          <xs:element name="groupAccess" type="ServiceProviderAdminGroupAccess"/>
          <xs:element name="userAccess" type="ServiceProviderAdminUserAccess"/>
          <xs:element name="adminAccess" type="ServiceProviderAdminAdminAccess"/>
          <xs:element name="departmentAccess" type="ServiceProviderAdminDepartmentAccess"/>
          <xs:element name="accessDeviceAccess" type="ServiceProviderAdminAccessDeviceAccess"/>
          <xs:element name="phoneNumberExtensionAccess" type="ServiceProviderAdminPhoneNumberExtensionAccess"/>
          <xs:element name="serviceAccess" type="ServiceProviderAdminServiceAccess"/>
          <xs:element name="servicePackAccess" type="ServiceProviderAdminServicePackAccess"/>
          <xs:element name="webBrandingAccess" type="ServiceProviderAdminWebBrandingAccess"/>
          <xs:element name="networkPolicyAccess" type="EnterpriseAdminNetworkPolicyAccess" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderAdminGetRequest14">
    <xs:annotation>
      <xs:documentation>
        Get a service provider administrators profile.
        The response is either a ServiceProviderAdminGetResponse14 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="ServiceProviderAdminGetResponse14">
    <xs:annotation>
      <xs:documentation>
        Response to the ServiceProviderAdminGetRequest14.
        The response contains the service provider administrators profile information.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="firstName" type="FirstName" minOccurs="0"/>
          <xs:element name="lastName" type="LastName" minOccurs="0"/>
          <xs:element name="language" type="Language"/>
          <xs:element name="administratorType" type="ServiceProviderAdminType"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderAdminModifyPolicyRequest14">
    <xs:annotation>
      <xs:documentation>
        Request to modify the service provider administrator's policy settings.
        The response is either SuccessResponse or ErrorResponse.
        The networkPolicyAccess is only modified for the enterprise administrator.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="userId" type="UserId"/>
          <xs:element name="profileAccess" type="ServiceProviderAdminProfileAccess" minOccurs="0"/>
          <xs:element name="groupAccess" type="ServiceProviderAdminGroupAccess" minOccurs="0"/>
          <xs:element name="userAccess" type="ServiceProviderAdminUserAccess" minOccurs="0"/>
          <xs:element name="adminAccess" type="ServiceProviderAdminAdminAccess" minOccurs="0"/>
          <xs:element name="departmentAccess" type="ServiceProviderAdminDepartmentAccess" minOccurs="0"/>
          <xs:element name="accessDeviceAccess" type="ServiceProviderAdminAccessDeviceAccess" minOccurs="0"/>
          <xs:element name="phoneNumberExtensionAccess" type="ServiceProviderAdminPhoneNumberExtensionAccess" minOccurs="0"/>
          <xs:element name="serviceAccess" type="ServiceProviderAdminServiceAccess" minOccurs="0"/>
          <xs:element name="servicePackAccess" type="ServiceProviderAdminServicePackAccess" minOccurs="0"/>
          <xs:element name="webBrandingAccess" type="ServiceProviderAdminWebBrandingAccess" minOccurs="0"/>
          <xs:element name="networkPolicyAccess" type="EnterpriseAdminNetworkPolicyAccess" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderAdminModifyRequest">
    <xs:annotation>
      <xs:documentation>
        Modify a service provider administrator.
        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="firstName" type="FirstName" nillable="true" minOccurs="0"/>
          <xs:element name="lastName" type="LastName" nillable="true" minOccurs="0"/>
          <xs:element name="password" type="Password" nillable="true" minOccurs="0"/>
          <xs:element name="language" type="Language" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderAnswerConfirmationGetRequest16">
    <xs:annotation>
      <xs:documentation>
        Get a service provider or enterprise's answer confirmation settings.
        The response is either a ServiceProviderAnswerConfirmationGetResponse16 or an ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderAnswerConfirmationGetResponse16">
    <xs:annotation>
      <xs:documentation>
        Response to the ServiceProviderAnswerConfirmationGetRequest16.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:element name="announcementMessageSelection" type="AnswerConfirmationAnnouncementSelection"/>
          <xs:element name="confirmationMessageAudioFileDescription" type="FileDescription" minOccurs="0"/>
          <xs:element name="confirmationMessageMediaType" type="MediaFileType" minOccurs="0"/>
          <xs:element name="confirmationTimoutSeconds" type="AnswerConfirmationTimeoutSeconds"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  
  <xs:complexType name="ServiceProviderAnswerConfirmationModifyRequest16">
    <xs:annotation>
      <xs:documentation>
        Modify a service provider or enterprise's answer confirmation settings.
        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="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="announcementMessageSelection" type="AnswerConfirmationAnnouncementSelection" minOccurs="0"/>
          <xs:element name="confirmationMessageAudioFile" type="LabeledMediaFileResource" minOccurs="0"/>
          <xs:element name="confirmationTimoutSeconds" type="AnswerConfirmationTimeoutSeconds" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderCallProcessingGetPolicyRequest16">
    <xs:annotation>
      <xs:documentation>
        Request the service provider level data associated with Call Processing
        Policy. The response is either a
        ServiceProviderCallProcessingGetPolicyResponse16 or an ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>


  <xs:complexType name="ServiceProviderCallProcessingGetPolicyResponse16">
    <xs:annotation>
      <xs:documentation>
        Response to ServiceProviderCallProcessingGetPolicyRequest16.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
         <xs:element name="useMaxSimultaneousCalls" type="xs:boolean"/>
         <xs:element name="maxSimultaneousCalls" type="CallProcessingMaxSimultaneousCalls"/>
         <xs:element name="useMaxSimultaneousVideoCalls" type="xs:boolean"/>
         <xs:element name="maxSimultaneousVideoCalls" type="CallProcessingMaxSimultaneousCalls"/>
         <xs:element name="useMaxCallTimeForAnsweredCalls" type="xs:boolean"/>
         <xs:element name="maxCallTimeForAnsweredCallsMinutes" type="CallProcessingMaxCallTimeForAnsweredCallsMinutes16"/>
         <xs:element name="useMaxCallTimeForUnansweredCalls" type="xs:boolean"/>
         <xs:element name="maxCallTimeForUnansweredCallsMinutes" type="CallProcessingMaxCallTimeForUnansweredCallsMinutes"/>
         <xs:element name="mediaPolicySelection" type="MediaPolicySelection"/>
         <xs:element name="supportedMediaSetName" type="MediaSetName" minOccurs="0"/>
         <xs:element name="networkUsageSelection" type="NetworkUsageSelection"/>
         <xs:element name="enforceGroupCallingLineIdentityRestriction" type="xs:boolean"/>
         <xs:element name="allowEnterpriseGroupCallTypingForPrivateDialingPlan" type="xs:boolean"/>
         <xs:element name="allowEnterpriseGroupCallTypingForPublicDialingPlan" type="xs:boolean"/>
         <xs:element name="overrideCLIDRestrictionForPrivateCallCategory" type="xs:boolean"/>
         <xs:element name="useEnterpriseCLIDForPrivateCallCategory" type="xs:boolean"/>
         <xs:element name="enableEnterpriseExtensionDialing" type="xs:boolean"/>
         <xs:element name="enforceEnterpriseCallingLineIdentityRestriction" type="xs:boolean"/>
         <xs:element name="useSettingLevel" type="ServiceProviderConferenceURISettingLevel"/>
         <xs:element name="conferenceURI" type="SIPURI" minOccurs="0"/>
         <xs:element name="useMaxConcurrentRedirectedCalls" type="xs:boolean"/>
         <xs:element name="maxConcurrentRedirectedCalls" type="CallProcessingMaxConcurrentRedirectedCalls"/>
         <xs:element name="useMaxFindMeFollowMeDepth" type="xs:boolean"/>
         <xs:element name="maxFindMeFollowMeDepth" type="CallProcessingMaxFindMeFollowMeDepth"/>
         <xs:element name="maxRedirectionDepth" type="CallProcessingMaxRedirectionDepth"/>
         <xs:element name="useMaxConcurrentFindMeFollowMeInvocations" type="xs:boolean"/>
         <xs:element name="maxConcurrentFindMeFollowMeInvocations" type="CallProcessingMaxConcurrentFindMeFollowMeInvocations"/>
         <xs:element name="clidPolicy" type="CLIDPolicy" />
          <xs:element name="emergencyClidPolicy" type="CLIDPolicy" />
          <xs:element name="allowAlternateNumbersForRedirectingIdentity" type="xs:boolean" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderCallProcessingModifyPolicyRequest15">
    <xs:annotation>
      <xs:documentation>
        Modify the service provider level data associated with Call Procesing
        Policy. 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="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="useMaxSimultaneousCalls" type="xs:boolean" minOccurs="0"/>
          <xs:element name="maxSimultaneousCalls" type="CallProcessingMaxSimultaneousCalls" minOccurs="0"/>
          <xs:element name="useMaxSimultaneousVideoCalls" type="xs:boolean" minOccurs="0"/>
          <xs:element name="maxSimultaneousVideoCalls" type="CallProcessingMaxSimultaneousCalls" minOccurs="0"/>
          <xs:element name="useMaxCallTimeForAnsweredCalls" type="xs:boolean" minOccurs="0"/>
          <xs:element name="maxCallTimeForAnsweredCallsMinutes" type="CallProcessingMaxCallTimeForAnsweredCallsMinutes16" minOccurs="0"/>
          <xs:element name="useMaxCallTimeForUnansweredCalls" type="xs:boolean" minOccurs="0"/>
          <xs:element name="maxCallTimeForUnansweredCallsMinutes" type="CallProcessingMaxCallTimeForUnansweredCallsMinutes" minOccurs="0"/>
          <xs:element name="mediaPolicySelection" type="MediaPolicySelection" minOccurs="0"/>
          <xs:element name="supportedMediaSetName" type="MediaSetName" nillable="true" minOccurs="0"/>
          <xs:element name="networkUsageSelection" type="NetworkUsageSelection" minOccurs="0"/>
          <xs:element name="enforceGroupCallingLineIdentityRestriction" type="xs:boolean" minOccurs="0"/>
          <xs:element name="allowEnterpriseGroupCallTypingForPrivateDialingPlan" type="xs:boolean" minOccurs="0"/>
          <xs:element name="allowEnterpriseGroupCallTypingForPublicDialingPlan" type="xs:boolean" minOccurs="0"/>
          <xs:element name="overrideCLIDRestrictionForPrivateCallCategory" type="xs:boolean" minOccurs="0"/>
          <xs:element name="useEnterpriseCLIDForPrivateCallCategory" type="xs:boolean" minOccurs="0"/>
          <xs:element name="enableEnterpriseExtensionDialing" type="xs:boolean" minOccurs="0"/>
          <xs:element name="enforceEnterpriseCallingLineIdentityRestriction" type="xs:boolean" minOccurs="0"/>
          <xs:element name="useSettingLevel" type="ServiceProviderConferenceURISettingLevel" minOccurs="0"/>
          <xs:element name="conferenceURI" type="SIPURI" nillable="true" minOccurs="0"/>
          <xs:element name="useMaxConcurrentRedirectedCalls" type="xs:boolean" minOccurs="0"/>
          <xs:element name="maxConcurrentRedirectedCalls" type="CallProcessingMaxConcurrentRedirectedCalls" minOccurs="0"/>
          <xs:element name="useMaxFindMeFollowMeDepth" type="xs:boolean" minOccurs="0"/>
          <xs:element name="maxFindMeFollowMeDepth" type="CallProcessingMaxFindMeFollowMeDepth" minOccurs="0"/>
          <xs:element name="maxRedirectionDepth" type="CallProcessingMaxRedirectionDepth" minOccurs="0"/>
          <xs:element name="useMaxConcurrentFindMeFollowMeInvocations" type="xs:boolean" minOccurs="0"/>
          <xs:element name="maxConcurrentFindMeFollowMeInvocations" type="CallProcessingMaxConcurrentFindMeFollowMeInvocations" minOccurs="0"/>
          <xs:element name="clidPolicy" type="CLIDPolicy" minOccurs="0"/>
          <xs:element name="emergencyClidPolicy" type="CLIDPolicy" minOccurs="0"/>
          <xs:element name="allowAlternateNumbersForRedirectingIdentity" type="xs:boolean" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderCPEConfigRebuildDeviceConfigFileRequest">
    <xs:annotation>
      <xs:documentation>
        Rebuild the config file for a specified device.
        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="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="deviceName" type="AccessDeviceName"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderCPEConfigResetDeviceRequest">
    <xs:annotation>
      <xs:documentation>
        Reset a specific service provider or enterprise device.
        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="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="deviceName" type="AccessDeviceName"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  
  <xs:complexType name="ServiceProviderDeleteRequest">
    <xs:annotation>
      <xs:documentation>
        Delete a service provider or enterprise.
        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="serviceProviderId" type="ServiceProviderId"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>


  <xs:complexType name="ServiceProviderDialPlanPolicyGetRequest">
    <xs:annotation>
      <xs:documentation>
        Request the Service Provider level data associated with Dial Plan Policy.
        The response is either a ServiceProviderDialPlanPolicyGetResponse
        or an ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderDialPlanPolicyGetResponse">
    <xs:annotation>
      <xs:documentation>
        Response to ServiceProviderDialPlanPolicyGetRequest
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:element name="requiresAccessCodeForPublicCalls" type="xs:boolean"/>
          <xs:element name="allowE164PublicCalls" type="xs:boolean"/>
          <xs:element name="publicDigitMap" type="DigitMap" minOccurs="0"/>
          <xs:element name="privateDigitMap" type="DigitMap" minOccurs="0"/>
       </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderDialPlanPolicyModifyRequest">
    <xs:annotation>
      <xs:documentation>
        Modify the Service Provider level data associated with Dial Plan Policy.
        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="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="requiresAccessCodeForPublicCalls" type="xs:boolean" minOccurs="0"/>
          <xs:element name="allowE164PublicCalls" type="xs:boolean" minOccurs="0"/>
          <xs:element name="publicDigitMap" type="DigitMap" nillable="true" minOccurs="0"/>
          <xs:element name="privateDigitMap" type="DigitMap" nillable="true" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderDialPlanPolicyGetAccessCodeListRequest">
    <xs:annotation>
      <xs:documentation>
        Request the Service Provider level data associated with Dial Plan Policy.
        The response is either a ServiceProviderDialPlanPolicyGetAccessCodeListResponse
        or an ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderDialPlanPolicyGetAccessCodeListResponse">
    <xs:annotation>
      <xs:documentation>
        Response to ServiceProviderDialPlanPolicyGetAccessCodeListRequest.
        Contains a table with column headings: "Access Code",
        "Enable Secondary Dial Tone", "Description".
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:element name="accessCodeTable" type="core:OCITable"/>
       </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderDialPlanPolicyGetAccessCodeRequest">
    <xs:annotation>
      <xs:documentation>
        Request access code data associated with Service Provider level Dial Plan Policy access codes.
        The response is either a ServiceProviderDialPlanPolicyGetAccessCodeResponse or an ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="accessCode" type="DialPlanAccessCode"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderDialPlanPolicyGetAccessCodeResponse">
    <xs:annotation>
      <xs:documentation>
        Response to ServiceProviderDialPlanPolicyGetAccessCodeRequest
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:element name="includeCodeForNetworkTranslationsAndRouting" type="xs:boolean"/>
          <xs:element name="includeCodeForScreeningServices" type="xs:boolean"/>
          <xs:element name="enableSecondaryDialTone" type="xs:boolean"/>
          <xs:element name="description" type="DialPlanAccessCodeDescription" minOccurs="0"/>
       </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderDialPlanPolicyAddAccessCodeRequest">
    <xs:annotation>
      <xs:documentation>
        Request to add a Service Provider level Dial Plan Access Code and its all attribues.
        The response is either SuccessResponse or ErrorResponse.  
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="accessCode" type="DialPlanAccessCode"/>
          <xs:element name="includeCodeForNetworkTranslationsAndRouting" type="xs:boolean"/>
          <xs:element name="includeCodeForScreeningServices" type="xs:boolean"/>
          <xs:element name="enableSecondaryDialTone" type="xs:boolean"/>
          <xs:element name="description" type="DialPlanAccessCodeDescription" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderDialPlanPolicyDeleteAccessCodeRequest">
    <xs:annotation>
      <xs:documentation>
        Request to delete a Service Provider level Dial Plan Access Code and its all attribues.
        The response is either SuccessResponse or ErrorResponse.      
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="accessCode" type="DialPlanAccessCode"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderDialPlanPolicyModifyAccessCodeRequest">
    <xs:annotation>
      <xs:documentation>
        Request to modify a Service Provider level Dial Plan Access Code and its attribues.
        The response is either SuccessResponse or ErrorResponse.      
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="accessCode" type="DialPlanAccessCode"/>
          <xs:element name="includeCodeForNetworkTranslationsAndRouting" type="xs:boolean" minOccurs="0"/>
          <xs:element name="includeCodeForScreeningServices" type="xs:boolean" minOccurs="0"/>
          <xs:element name="enableSecondaryDialTone" type="xs:boolean" minOccurs="0"/>
          <xs:element name="description" type="DialPlanAccessCodeDescription" nillable="true" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderDigitCollectionGetRequest13mp4">
    <xs:annotation>
      <xs:documentation>
        Request the service provider's digit collection attributes.
        The response is either a ServiceProviderDigitCollectionGetResponse13mp4 or an ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderDigitCollectionGetResponse13mp4">
    <xs:annotation>
      <xs:documentation>
        Response to ServiceProviderDigitCollectionGetRequest13mp4.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:element name="accessCode" type="AccessCode" minOccurs="0"/>
          <xs:element name="publicDigitMap" type="DigitMap" minOccurs="0"/>
          <xs:element name="privateDigitMap" type="DigitMap" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderDigitCollectionModifyRequest">
    <xs:annotation>
      <xs:documentation>
        Modifies the service provider's digit collection attributes.
        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="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="accessCode" type="AccessCode" nillable="true" minOccurs="0"/>
          <xs:element name="publicDigitMap" type="DigitMap" nillable="true" minOccurs="0"/>
          <xs:element name="privateDigitMap" type="DigitMap" nillable="true" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderDnAddListRequest">
    <xs:annotation>
      <xs:documentation>
        Adds DNs to a service provider. It is possible to add either: a single DN,
        or a list of DNs, or a range of DNs, or any combination thereof.
        The response is either SuccessResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="phoneNumber" type="DN" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="dnRange" type="DNRange" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderDnDeleteListRequest">
    <xs:annotation>
      <xs:documentation>
        Deletes DNs from a service provider. It is possible to delete either: a single DN,
        or a list of DNs, or a range of DNs, or any combination thereof.
        The response is either SuccessResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="phoneNumber" type="DN" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="dnRange" type="DNRange" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderDnGetAvailableListRequest">
    <xs:annotation>
      <xs:documentation>
        Request a list of available DNs not yet assigned to any group.
        The response is either ServiceProviderDnGetAvailableListResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderDnGetAvailableListResponse">
    <xs:annotation>
      <xs:documentation>
        Response to ServiceProviderDnGetAvailableListRequest.
        Contains a list of available DNs not yet assigned to any group.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:element name="availableDn" type="xs:token" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderDnGetSummaryListRequest">
    <xs:annotation>
      <xs:documentation>
        Request a summary table of all DNs in a service provider.
        The response is either ServiceProviderDnGetSummaryListResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderDnGetSummaryListResponse">
    <xs:annotation>
      <xs:documentation>
        Response to ServiceProviderDnGetSummaryListRequest.
        The column headings are "Phone Numbers, "Group Id" and "Can Delete"
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:element name="dnSummaryTable" type="core:OCITable"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderDomainAssignListRequest">
    <xs:annotation>
      <xs:documentation>
        Assign a list of domains to a service provider.
        The response is either SuccessResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="domain" type="NetAddress" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderDomainGetAssignedGroupListRequest">
    <xs:annotation>
      <xs:documentation>
        Requests a list of groups within a service provider that have a given domain assigned.
        It is possible to search by various criteria to restrict the number of rows returned.
        Multiple search criteria are logically ANDed together.
        The response is either a ServiceProviderDomainGetAssignedGroupListResponse or an ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="domain" type="NetAddress"/>
          <xs:element name="responseSizeLimit" type="ResponseSizeLimit" minOccurs="0"/>
          <xs:element name="searchCriteriaGroupId"   type="SearchCriteriaGroupId" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="searchCriteriaGroupName" type="SearchCriteriaGroupName" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderDomainGetAssignedGroupListResponse">
    <xs:annotation>
      <xs:documentation>
        Response to ServiceProviderDomainGetAssignedGroupListRequest.
        Contains a table with column headings: "Group Id", "Group Name"
        and a row for each group.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:element name="groupTable" type="core:OCITable"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderDomainGetAssignedListRequest">
    <xs:annotation>
      <xs:documentation>
        Requests the list of all domains assigned to a service provider.
        The response is either ServiceProviderDomainGetAssignedListResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderDomainGetAssignedListResponse">
    <xs:annotation>
      <xs:documentation>
        Contains a simple list of all service provider domain names.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:element name="serviceProviderDefaultDomain" type="NetAddress"/>
          <xs:element name="domain" type="NetAddress" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderDomainUnassignListRequest">
    <xs:annotation>
      <xs:documentation>
        Unassign a list of domains from a service provider.
        The response is either SuccessResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="domain" type="NetAddress" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderFeatureAccessCodeGetListRequest">
    <xs:annotation>
      <xs:documentation>
        Get the list of feature access codes for a service provider or enterprise.
        The response is either a ServiceProviderFeatureAccessCodeGetListResponse or an ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderFeatureAccessCodeGetListResponse">
    <xs:annotation>
      <xs:documentation>
        Response to the ServiceProviderFeatureAccessCodeGetListRequest.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:element name="featureAccessCode" type="FeatureAccessCodeEntry" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>


  <xs:complexType name="ServiceProviderFeatureAccessCodeModifyListRequest">
    <xs:annotation>
      <xs:documentation>
        Modify a list of feature access codes for a service provider or enterprise.
        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="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="featureAccessCode" type="FeatureAccessCodeEntry" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderFileRepositoryDeviceUserAddRequest">
    <xs:annotation>
      <xs:documentation>
        Add a new service provider file repository user.
        The response is either SuccessResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="fileRepositoryName" type="FileRepositoryName"/>
          <xs:element name="userName" type="FileRepositoryUserName"/>
          <xs:element name="password" type="FileRepositoryUserPassword"/>
          <xs:element name="allowPut" type="xs:boolean"/>
          <xs:element name="allowDelete" type="xs:boolean"/>
          <xs:element name="allowGet" type="xs:boolean"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderFileRepositoryDeviceUserDeleteRequest">
    <xs:annotation>
      <xs:documentation>
        Delete a service provider file repository user.
        The response is either SuccessResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="fileRepositoryName" type="FileRepositoryName"/>
          <xs:element name="userName" type="FileRepositoryUserName"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderFileRepositoryDeviceUserModifyRequest">
    <xs:annotation>
      <xs:documentation>
        Modify a service provider file repository user.
        The response is either SuccessResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="fileRepositoryName" type="FileRepositoryName"/>
          <xs:element name="userName" type="FileRepositoryUserName"/>
          <xs:element name="password" minOccurs="0" type="FileRepositoryUserPassword"/>
          <xs:element name="allowPut" type="xs:boolean" minOccurs="0"/>
          <xs:element name="allowDelete" type="xs:boolean" minOccurs="0"/>
          <xs:element name="allowGet" type="xs:boolean" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderFileRepositoryDeviceUserGetListRequest">
    <xs:annotation>
      <xs:documentation>
        Request the list of service provider users for a file repository in the system.
        The response is either a ServiceProviderFileRepositoryDeviceUserGetListResponse or an ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="fileRepositoryName" type="FileRepositoryName"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderFileRepositoryDeviceUserGetListResponse">
    <xs:annotation>
      <xs:documentation>
        Response to ServiceProviderFileRepositoryDeviceUserGetListRequest.
        Contains a table with column headings : "User Name","Allow Delete","Allow Get","Allow Put" in a row for each file repository service provider user.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:element name="fileRepositoryUserTable" type="core:OCITable"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderGetDefaultRequest">
    <xs:annotation>
      <xs:documentation>
        Request the default profile for a service provider or enterprise.
        The response is either a ServiceProviderGetDefaultResponse or an ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderGetDefaultResponse">
    <xs:annotation>
      <xs:documentation>
        Response to the ServiceProviderGetDefaultRequest. All values are default values for
        a service provider or enterprise's profile.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:element name="isEnterprise" type="xs:boolean"/>
          <xs:element name="defaultDomain" type="NetAddress"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderGetListRequest">
    <xs:annotation>
      <xs:documentation>
        Request a list of service providers and/or enterprises in the system.
        It is possible to search by various criteria to restrict the number of rows returned.
        Multiple search criteria are logically ANDed together.
        The response is either a ServiceProviderGetListResponse or an ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="isEnterprise" type="xs:boolean" minOccurs="0"/>
          <xs:element name="responseSizeLimit" type="ResponseSizeLimit" minOccurs="0"/>
          <xs:element name="searchCriteriaServiceProviderId"   type="SearchCriteriaServiceProviderId" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="searchCriteriaServiceProviderName" type="SearchCriteriaServiceProviderName" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>


  <xs:complexType name="ServiceProviderGetListResponse">
    <xs:annotation>
      <xs:documentation>
        Response to ServiceProviderGetListRequest.
        Contains a 3 column table with column headings 'Service Provider Id', 'Service Provider Name'
        and 'Is Enterprise' and a row for each service provider or enterprise.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:element name="serviceProviderTable" type="core:OCITable"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderGetRequest13mp2">
    <xs:annotation>
      <xs:documentation>
        Get the profile for a service provider or enterprise.
        The response is either a ServiceProviderGetResponse13mp2 or an ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderGetResponse13mp2">
    <xs:annotation>
      <xs:documentation>
        Response to the ServiceProviderGetRequest13mp2.
        The response contains the service provider or enterprise's profile information.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:choice>
            <xs:element name="isEnterprise" type="xs:boolean" fixed="true"/>
            <xs:element name="useCustomRoutingProfile" type="xs:boolean"/>
          </xs:choice>
          <xs:element name="defaultDomain" type="NetAddress"/>
          <xs:element name="serviceProviderName" type="ServiceProviderName" minOccurs="0"/>
          <xs:element name="supportEmail" type="EmailAddress" minOccurs="0"/>
          <xs:element name="contact" type="Contact" minOccurs="0"/>
          <xs:element name="address" type="StreetAddress" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderModifyRequest">
    <xs:annotation>
      <xs:documentation>
        Modify the profile for a service provider or enterprise.
        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="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="defaultDomain" type="NetAddress" minOccurs="0"/>
          <xs:element name="serviceProviderName" type="ServiceProviderName" nillable="true" minOccurs="0"/>
          <xs:element name="supportEmail" type="EmailAddress" nillable="true" minOccurs="0"/>
          <xs:element name="contact" type="Contact" minOccurs="0"/>
          <xs:element name="address" type="StreetAddress" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  
  <xs:complexType name="ServiceProviderNetworkClassOfServiceAssignListRequest">
    <xs:annotation>
      <xs:documentation>
        Assign a list of Network Classes of Service to a service provider.
        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="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="networkClassOfService" type="NetworkClassOfServiceName" minOccurs="1" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  
  <xs:complexType name="ServiceProviderNetworkClassOfServiceAssignListToAllGroupsRequest">
    <xs:annotation>
      <xs:documentation>
        Assign a list of Network Classes of Service to all groups with in a 
        service provider. The Network Classes of Service must be currently
        assigned to the service provider. 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="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="networkClassOfService" type="NetworkClassOfServiceName" minOccurs="1" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  
  <xs:complexType name="ServiceProviderNetworkClassOfServiceAssignToAllUsersRequest">
    <xs:annotation>
      <xs:documentation>
        Assign a Network Classes of Service to all users with in a 
        service provider. This will also assign the Network Class of Service
        to all the groups in the service provider if it is not assigned yet.
        However, the Network Classes of Service must be currently assigned to 
        the service provider. 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="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="networkClassOfService" type="NetworkClassOfServiceName"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  
  <xs:complexType name="ServiceProviderNetworkClassOfServiceGetAssignedListRequest">
    <xs:annotation>
      <xs:documentation>
        Get a list of Network Classes of Service assigned to a service provider.
        The response is either a ServiceProviderNetworkClassOfServiceGetAssignedListResponse 
        or an ErorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  
  <xs:complexType name="ServiceProviderNetworkClassOfServiceGetAssignedListResponse">
    <xs:annotation>
  <xs:documentation>
        Response to ServiceProviderNetworkClassOfServiceGetAssignedListRequest.
        Contains a table of all Network Classes of Service assigned to the
        service provider. The column headings are: "Name" and "Description".
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:element name="networkClassOfServiceTable" type="core:OCITable"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  
  <xs:complexType name="ServiceProviderNetworkClassOfServiceGetAssignedGroupListRequest">
    <xs:annotation>
      <xs:documentation>
        Get a list of groups within a service provider that have a given
        Network Class of Service assigned.
        The response is either a ServiceProviderNetworkClassOfServiceGetAssignedGroupListResponse 
        or an ErorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="networkClassOfService" type="NetworkClassOfServiceName"/>
          <xs:element name="responseSizeLimit" type="ResponseSizeLimit" minOccurs="0"/>
          <xs:element name="searchCriteriaGroupId"   type="SearchCriteriaGroupId" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="searchCriteriaGroupName" type="SearchCriteriaGroupName" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  
  <xs:complexType name="ServiceProviderNetworkClassOfServiceGetAssignedGroupListResponse">
    <xs:annotation>
      <xs:documentation>
        Response to ServiceProviderNetworkClassOfServiceGetAssignedGroupListRequest.
        Contains a table of groups that have the Network Class of Service 
        assigned. The column headings are: "Group Id" and "Group Name".
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:element name="groupTable" type="core:OCITable"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  
  <xs:complexType name="ServiceProviderNetworkClassOfServiceUnassignListRequest">
    <xs:annotation>
      <xs:documentation>
        Unassign a list of Network Classes of Service from a service provider.
        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="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="networkClassOfService" type="NetworkClassOfServiceName" minOccurs="1" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderPortalPasscodeRulesGetRequest">
    <xs:annotation>
      <xs:documentation>
        Requests the service provider's passcode rules setting.
        The response is either ServiceProviderPortalPasscodeRulesGetResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderPortalPasscodeRulesGetResponse">
    <xs:annotation>
      <xs:documentation>
        Response to ServiceProviderPortalPasscodeRulesGetRequest.
        Contains the service provider's passcode rules setting.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:element name="disallowRepeatedDigits" type="xs:boolean"/>
          <xs:element name="disallowUserNumber" type="xs:boolean"/>
          <xs:element name="disallowReversedUserNumber" type="xs:boolean"/>
          <xs:element name="disallowOldPasscode" type="xs:boolean"/>
          <xs:element name="disallowReversedOldPasscode" type="xs:boolean"/>
          <xs:element name="minCodeLength" type="PasscodeMinLength"/>
          <xs:element name="maxCodeLength" type="PasscodeMaxLength"/>
          <xs:element name="disableLoginAfterMaxFailedLoginAttempts" type="xs:boolean"/>
          <xs:element name="maxFailedLoginAttempts" type="PortalMaxFailedLoginAttempts" minOccurs="0"/>
          <xs:element name="expirePassword" type="xs:boolean"/>
          <xs:element name="passcodeExpiresDays" type="PasscodeExpiresDays" minOccurs="0"/>
          <xs:element name="sendLoginDisabledNotifyEmail" type="xs:boolean"/>
          <xs:element name="loginDisabledNotifyEmailAddress" type="EmailAddress" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderPortalPasscodeRulesModifyRequest">
    <xs:annotation>
      <xs:documentation>
        Request to modify the service provider's passcode rules setting.
        The response is either SuccessResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="disallowRepeatedDigits" type="xs:boolean" minOccurs="0"/>
          <xs:element name="disallowUserNumber" type="xs:boolean" minOccurs="0"/>
          <xs:element name="disallowReversedUserNumber" type="xs:boolean" minOccurs="0"/>
          <xs:element name="disallowOldPasscode" type="xs:boolean" minOccurs="0"/>
          <xs:element name="disallowReversedOldPasscode" type="xs:boolean" minOccurs="0"/>
          <xs:element name="minCodeLength" type="PasscodeMinLength" minOccurs="0"/>
          <xs:element name="maxCodeLength" type="PasscodeMaxLength" minOccurs="0"/>
          <xs:element name="disableLoginAfterMaxFailedLoginAttempts" type="xs:boolean" minOccurs="0"/>
          <xs:element name="maxFailedLoginAttempts" type="PortalMaxFailedLoginAttempts" minOccurs="0"/>
          <xs:element name="expirePassword" type="xs:boolean" minOccurs="0"/>
          <xs:element name="passcodeExpiresDays" type="PasscodeExpiresDays" minOccurs="0"/>
          <xs:element name="sendLoginDisabledNotifyEmail" type="xs:boolean" minOccurs="0"/>
          <xs:element name="loginDisabledNotifyEmailAddress" type="EmailAddress" nillable="true" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderPasswordRulesGetRequest16">
    <xs:annotation>
      <xs:documentation>
        Requests the service provider's password rules setting applicable to
        Administrators (Group and Department) and Users.
        The response is either ServiceProviderPasswordRulesGetResponse16 or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderPasswordRulesGetResponse16">
    <xs:annotation>
      <xs:documentation>
        Response to ServiceProviderPasswordRulesGetRequest16.
        Contains the group, department administrator and/or user password
        rules setting.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:element name="rulesApplyTo" type="ServiceProviderPasswordRulesApplyTo"/>
          <xs:element name="allowWebAddExternalAuthenticationUsers" type="xs:boolean"/>
          <xs:element name="disallowUserId" type="xs:boolean"/>
          <xs:element name="disallowOldPassword" type="xs:boolean"/>
          <xs:element name="disallowReversedOldPassword" type="xs:boolean"/>
          <xs:element name="restrictMinDigits" type="xs:boolean"/>
          <xs:element name="minDigits" type="PasswordMinDigits"/>
          <xs:element name="restrictMinUpperCaseLetters" type="xs:boolean"/>
          <xs:element name="minUpperCaseLetters" type="PasswordMinUpperCaseLetters"/>
          <xs:element name="restrictMinLowerCaseLetters" type="xs:boolean"/>
          <xs:element name="minLowerCaseLetters" type="PasswordMinLowerCaseLetters"/>
          <xs:element name="restrictMinNonAlphanumericCharacters" type="xs:boolean"/>
          <xs:element name="minNonAlphanumericCharacters" type="PasswordMinNonAlphanumericCharacters"/>
          <xs:element name="minLength" type="PasswordMinLength"/>
          <xs:element name="maxFailedLoginAttempts" type="MaxFailedLoginAttempts"/>
          <xs:element name="passwordExpiresDays" type="PasswordExpiresDays"/>
          <xs:element name="sendLoginDisabledNotifyEmail" type="xs:boolean"/>
          <xs:element name="loginDisabledNotifyEmailAddress" type="EmailAddress" minOccurs="0"/>
          <xs:element name="disallowRulesModification" type="xs:boolean"/>
          <xs:element name="disallowPreviousPasswords" type="xs:boolean"/>
          <xs:element name="numberOfPreviousPasswords" type="PasswordHistoryCount"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderPasswordRulesModifyRequest14sp3">
    <xs:annotation>
      <xs:documentation>
        Request to modify the service provider's password rules settings
        setting applicable to Administrators (Group and Department) and Users.
        The response is either SuccessResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="rulesApplyTo" type="ServiceProviderPasswordRulesApplyTo" minOccurs="0"/>
          <xs:element name="allowWebAddExternalAuthenticationUsers" type="xs:boolean" minOccurs="0"/>
          <xs:element name="disallowUserId" type="xs:boolean" minOccurs="0"/>
          <xs:element name="disallowOldPassword" type="xs:boolean" minOccurs="0"/>
          <xs:element name="disallowReversedOldPassword" type="xs:boolean" minOccurs="0"/>
          <xs:element name="restrictMinDigits" type="xs:boolean" minOccurs="0"/>
          <xs:element name="minDigits" type="PasswordMinDigits" minOccurs="0"/>
          <xs:element name="restrictMinUpperCaseLetters" type="xs:boolean" minOccurs="0"/>
          <xs:element name="minUpperCaseLetters" type="PasswordMinUpperCaseLetters" minOccurs="0"/>
          <xs:element name="restrictMinLowerCaseLetters" type="xs:boolean" minOccurs="0"/>
          <xs:element name="minLowerCaseLetters" type="PasswordMinLowerCaseLetters" minOccurs="0"/>
          <xs:element name="restrictMinNonAlphanumericCharacters" type="xs:boolean" minOccurs="0"/>
          <xs:element name="minNonAlphanumericCharacters" type="PasswordMinNonAlphanumericCharacters" minOccurs="0"/>
          <xs:element name="minLength" type="PasswordMinLength" minOccurs="0"/>
          <xs:element name="maxFailedLoginAttempts" type="MaxFailedLoginAttempts" minOccurs="0"/>
          <xs:element name="passwordExpiresDays" type="PasswordExpiresDays" minOccurs="0"/>
          <xs:element name="sendLoginDisabledNotifyEmail" type="xs:boolean" minOccurs="0"/>
          <xs:element name="loginDisabledNotifyEmailAddress" type="EmailAddress" nillable="true" minOccurs="0"/>
          <xs:element name="disallowPreviousPasswords" type="xs:boolean" minOccurs="0"/>
          <xs:element name="numberOfPreviousPasswords" type="PasswordHistoryCount" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  
  <xs:complexType name="ServiceProviderRoutingProfileGetRequest">
    <xs:annotation>
      <xs:documentation>
        Request the routing profile for the service provider/enterprise.
        The response is either a ServiceProviderRoutingProfileGetResponse or an ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
   		  <xs:element name="serviceProviderId" type="ServiceProviderId"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  
   <xs:complexType name="ServiceProviderRoutingProfileGetResponse">
    <xs:annotation>
      <xs:documentation>
        Response to ServiceProviderRoutingProfileGetRequest.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:element name="routingProfile" type="RoutingProfile" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  
  <xs:complexType name="ServiceProviderRoutingProfileModifyRequest">
    <xs:annotation>
      <xs:documentation>
        Requests to modify the routing profile for a service provider.
        The response is either SuccessResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="routingProfile" type="RoutingProfile" nillable="true" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderServiceGetAuthorizationListRequest">
    <xs:annotation>
      <xs:documentation>
        Requests the service provider's service authorization status.
        The response is either ServiceProviderServiceGetAuthorizationListResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderServiceGetAuthorizationListResponse">
    <xs:annotation>
      <xs:documentation>
        Response to ServiceProviderServiceGetAuthorizationListRequest.
        Contains two tables, one for the group services and one for the user services.
        The Group Service table has column headings:
        "Service Name", "Authorized", "Assigned", "Limited", "Quantity", "Allocated", "Licensed", "Service Pack Allocation"
        The User Service table has column headings:
        "Service Name", "Authorized", "Assigned", "Limited", "Quantity", "Allocated", "Licensed", "Service Pack Allocation", "User Assignable".
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:element name="groupServicesAuthorizationTable" type="core:OCITable"/>
          <xs:element name="userServicesAuthorizationTable" type="core:OCITable"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderServiceGetUserAssignableListRequest">
    <xs:annotation>
      <xs:documentation>
        Requests the list of all user services assignable to users in the specified service provider.
        The response is either ServiceProviderServiceGetUserAssignableListResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderServiceGetUserAssignableListResponse">
    <xs:annotation>
      <xs:documentation>
        Response to ServiceProviderServiceGetUserAssignableListRequest.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:element name="serviceName" type="UserService" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderServiceModifyAuthorizationListRequest">
    <xs:annotation>
      <xs:documentation>
        Requests to change the service provider's service authorization status.
        The boolean flags are used to authorize or unauthorize services.
        The response is either SuccessResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="groupServiceAuthorization" type="GroupServiceAuthorization" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="userServiceAuthorization" type="UserServiceAuthorization" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderServicePackAddRequest">
    <xs:annotation>
      <xs:documentation>
        Request to add a service pack to a service provider.
        The response is either SuccessResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="servicePackName" type="ServicePackName"/>
          <xs:element name="servicePackDescription" type="ServicePackDescription" minOccurs="0"/>
          <xs:element name="isAvailableForUse" type="xs:boolean"/>
          <xs:element name="servicePackQuantity" type="UnboundedPositiveInt" />
          <xs:element name="serviceName" type="UserService" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderServicePackAddServiceListRequest">
    <xs:annotation>
      <xs:documentation>
        Request to add services to a service pack if the pack has not been authorized to a group.
        The response is either SuccessResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="servicePackName" type="ServicePackName"/>
          <xs:element name="serviceName" type="UserService" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderServicePackDeleteRequest">
    <xs:annotation>
      <xs:documentation>
        Request to delete a service pack from a service provider.
        The response is either SuccessResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="servicePackName" type="ServicePackName"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderServicePackGetDetailListRequest">
    <xs:annotation>
      <xs:documentation>
        Request to get a service pack details.
        The response is either ServiceProviderServicePackGetDetailListResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="servicePackName" type="ServicePackName"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderServicePackGetDetailListResponse">
    <xs:annotation>
      <xs:documentation>
        Response to ServiceProviderServicePackGetDetailListRequest. It contains the service pack details
        and the list of services in a table format. The column headings are "Service", "Authorized"
        "Allocated" and "Available".
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:element name="servicePackName" type="ServicePackName"/>
          <xs:element name="servicePackDescription" type="ServicePackDescription" minOccurs="0"/>
          <xs:element name="isAvailableForUse" type="xs:boolean"/>
          <xs:element name="servicePackQuantity" type="UnboundedPositiveInt"/>
          <xs:element name="assignedQuantity" type="UnboundedNonNegativeInt"/>
          <xs:element name="allowedQuantity" type="UnboundedPositiveInt"/>
          <xs:element name="userServiceTable" type="core:OCITable"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderServicePackGetListRequest">
    <xs:annotation>
      <xs:documentation>
        Request to get a list of defined service packs for a service provider.
        The response is either ServiceProviderServicePackGetListResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderServicePackGetListResponse">
    <xs:annotation>
      <xs:documentation>
        Response to ServiceProviderServicePackGetListRequest.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:element name="servicePackName" type="ServicePackName" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderServicePackGetServiceUsageListRequest">
    <xs:annotation>
      <xs:documentation>
        Request to get the list of service packs containing a specified service.
        The response is either ServiceProviderServicePackGetServiceUsageListResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="serviceName" type="UserService"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderServicePackGetServiceUsageListResponse">
    <xs:annotation>
      <xs:documentation>
        Response to ServiceProviderServicePackGetServiceUsageListRequest.
        The column headings are "Service Pack Name", "Total Packs" and "Allocated to Groups"
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:element name="serviceUsageTable" type="core:OCITable" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderServicePackGetUtilizationListRequest">
    <xs:annotation>
      <xs:documentation>
        Request to get the service pack utilization for a service provider.
        For each service pack, a table of groups utilizing the pack is returned.
        The response is either ServiceProviderServicePackGetUtilizationListResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderServicePackGetUtilizationListResponse">
    <xs:annotation>
      <xs:documentation>
        Response to ServiceProviderServicePackGetUtilizationListRequest.
        For each service pack, a table of groups utilizing the pack is returned.
        The utilization table column headings are "Group", "Total Packs" and "Assigned".
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:element name="servicePackName" type="ServicePackName" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="serviceUtilizationTable" type="core:OCITable" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderServicePackMigrationTaskAddRequest">
    <xs:annotation>
      <xs:documentation>
        Modify the properties of a specified service pack migration task.
        The response is either SuccessResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="taskName" type="ServicePackMigrationTaskName"/>
          <xs:element name="startTimestamp" type="xs:dateTime"/>
          <xs:element name="maxDurationHours" type="ServicePackMigrationMaxDurationHours"/>
          <xs:element name="sendReportEmail" type="xs:boolean"/>
          <xs:element name="reportDeliveryEmailAddress" type="EmailAddress" minOccurs="0"/>
          <xs:element name="abortOnError" type="xs:boolean"/>
          <xs:element name="abortErrorThreshold" type="ServicePackMigrationAbortErrorThreshold" minOccurs="0"/>
          <xs:element name="reportAllUsers" type="xs:boolean"/>
          <xs:element name="automaticallyIncrementServiceQuantity" type="xs:boolean"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderServicePackMigrationTaskCopyRequest">
    <xs:annotation>
      <xs:documentation>
        Makes a copy of one or more existing service pack migration tasks. A copied task
        can be edited with other commands and scheduled for future execution. The
        name of the new task is chosen automatically. The name will
        be "Copy (number) of taskName".
        The response is either SuccessResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="taskName" type="ServicePackMigrationTaskName" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderServicePackMigrationTaskDeleteRequest">
    <xs:annotation>
      <xs:documentation>
        Deletes a service pack migration task. It is not possible to delete a task while it is
        currently executing.
        The response is either SuccessResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="taskName" type="ServicePackMigrationTaskName"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderServicePackMigrationTaskGetAvailableGroupListRequest">
    <xs:annotation>
      <xs:documentation>
        Requests a list of groups to migrate.
        The response is either ServiceProviderServicePackMigrationTaskGetAvailabeGroupListResponse
        or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="responseSizeLimit" type="ResponseSizeLimit" minOccurs="0"/>
          <xs:element name="searchCriteriaGroupId"   type="SearchCriteriaGroupId" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="searchCriteriaGroupName" type="SearchCriteriaGroupName" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderServicePackMigrationTaskGetAvailableGroupListResponse">
    <xs:annotation>
      <xs:documentation>
        Response to ServiceProviderServicePackMigrationTaskGetAvailableGroupListRequest.
        The groupTable column headings are: "Group Id", "Group Name", "User Count".
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:element name="groupTable" type="core:OCITable"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderServicePackMigrationTaskGetListRequest">
    <xs:annotation>
      <xs:documentation>
        Requests a list of all service pack migration task for a service provider.
        The response is either ServiceProviderServicePackMigrationTaskGetListResponse
        or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderServicePackMigrationTaskGetListResponse">
    <xs:annotation>
      <xs:documentation>
        Response to ServiceProviderServicePackMigrationTaskGetListRequest.
        Contains a table with  a row for each service pack migration task and column headings :
        "Start Timestamp Milliseconds", "Name", "Status", "Error Count", "Users Processed", "Users Total".
        The start timestamp column is the number of milliseconds since the standard base time known as "the epoch",
        namely January 1, 1970, 00:00:00 GMT.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:element name="taskTable" type="core:OCITable"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderServicePackMigrationTaskGetRequest14sp4">
    <xs:annotation>
      <xs:documentation>
        Requests the details of a specified service pack migration task.
        The response is either ServiceProviderServicePackMigrationTaskGetResponse14sp4
        or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="taskName" type="ServicePackMigrationTaskName"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderServicePackMigrationTaskGetResponse14sp4">
    <xs:annotation>
      <xs:documentation>
        Response to ServiceProviderServicePackMigrationTaskGetRequest14sp4.
        The groupTable column headings are: "Group Id", "Group Name", "User Count".
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIDataResponse">
        <xs:sequence>
          <xs:element name="taskName" type="ServicePackMigrationTaskName"/>
          <xs:element name="startTimestamp" type="xs:dateTime" minOccurs="0"/>
          <xs:element name="maxDurationHours" type="ServicePackMigrationMaxDurationHours"/>
          <xs:element name="sendReportEmail" type="xs:boolean"/>
          <xs:element name="reportDeliveryEmailAddress" type="EmailAddress" minOccurs="0"/>
          <xs:element name="abortOnError" type="xs:boolean"/>
          <xs:element name="abortErrorThreshold" type="ServicePackMigrationAbortErrorThreshold" minOccurs="0"/>
          <xs:element name="reportAllUsers" type="xs:boolean"/>
          <xs:element name="automaticallyIncrementServiceQuantity" type="xs:boolean"/>
          <xs:element name="errorCount" type="xs:int"/>
          <xs:element name="status" type="ServicePackMigrationTaskStatus"/>
          <xs:element name="groupsProcessed" type="xs:int"/>
          <xs:element name="groupsTotal" type="xs:int"/>
          <xs:element name="usersProcessed" type="xs:int"/>
          <xs:element name="usersTotal" type="xs:int"/>
          <xs:element name="userSelectionType" type="ServicePackMigrationTaskUserSelectionType"/>
          <xs:element name="reportFilePathName" type="FileName"/>
          <xs:choice>
            <xs:element name="migrateAllGroups" type="xs:boolean" fixed="true"/>
            <xs:element name="groupTable" type="core:OCITable"/>
          </xs:choice>
          <xs:element name="userSelectionServicePackName" type="ServicePackName" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="userSelectionServiceName" type="UserService" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="removeServicePackName" type="ServicePackName" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="removeServiceName" type="UserService" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="assignServicePackName" type="ServicePackName" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="assignServiceName" type="UserService" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderServicePackMigrationTaskModifyAssignmentListRequest">
    <xs:annotation>
      <xs:documentation>
        Replace the list of services and packs to be assigned to users during the service pack migration.
        Modification is only allowed prior to task execution.
        The response is either SuccessResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="taskName" type="ServicePackMigrationTaskName"/>
          <xs:element name="userServiceNameList" type="ReplacementUserServiceList" nillable="true" minOccurs="0"/>
          <xs:element name="servicePackNameList" type="ReplacementServicePackNameList" nillable="true" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderServicePackMigrationTaskModifyGroupListRequest">
    <xs:annotation>
      <xs:documentation>
        Replace the list of groups to be migrated for a specified service pack migration task.
        Modification is only allowed prior to task execution.
        The response is either SuccessResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="taskName" type="ServicePackMigrationTaskName"/>
          <xs:choice>
            <xs:element name="migrateAllGroups" type="xs:boolean" fixed="true"/>
            <xs:element name="groupIdList" nillable="true" minOccurs="0">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="groupId" type="GroupId" minOccurs="1" maxOccurs="unbounded"/>
              </xs:sequence>
            </xs:complexType>
            </xs:element>
           </xs:choice>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderServicePackMigrationTaskModifyRemovalListRequest">
    <xs:annotation>
      <xs:documentation>
        Replace the list of services and packs to be removed from users during the service pack migration.
        Modification is only allowed prior to task execution.
        The response is either SuccessResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="taskName" type="ServicePackMigrationTaskName"/>
          <xs:element name="userServiceNameList" type="ReplacementUserServiceList" nillable="true" minOccurs="0"/>
          <xs:element name="servicePackNameList" type="ReplacementServicePackNameList" nillable="true" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderServicePackMigrationTaskModifyRequest">
    <xs:annotation>
      <xs:documentation>
        Modify the properties of a specified service pack migration task.
        Modification is only allowed prior to task execution.
        The response is either SuccessResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="taskName" type="ServicePackMigrationTaskName"/>
          <xs:element name="newTaskName" type="ServicePackMigrationTaskName" minOccurs="0"/>
          <xs:element name="startTimestamp" type="xs:dateTime" minOccurs="0"/>
          <xs:element name="maxDurationHours" type="ServicePackMigrationMaxDurationHours" minOccurs="0"/>
          <xs:element name="sendReportEmail" type="xs:boolean" minOccurs="0"/>
          <xs:element name="reportDeliveryEmailAddress" type="EmailAddress" nillable="true" minOccurs="0"/>
          <xs:element name="abortOnError" type="xs:boolean" minOccurs="0"/>
          <xs:element name="abortErrorThreshold" type="ServicePackMigrationAbortErrorThreshold" nillable="true" minOccurs="0"/>
          <xs:element name="reportAllUsers" type="xs:boolean" minOccurs="0"/>
          <xs:element name="automaticallyIncrementServiceQuantity" type="xs:boolean" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderServicePackMigrationTaskModifyUserSelectionRequest">
    <xs:annotation>
      <xs:documentation>
        Replace the list of services and packs used to select which users will be migrated.
        Modification is only allowed prior to task execution.
        The response is either SuccessResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="taskName" type="ServicePackMigrationTaskName"/>
          <xs:element name="userSelectionType" type="ServicePackMigrationTaskUserSelectionType" minOccurs="0"/>
          <xs:element name="userServiceNameList" type="ReplacementUserServiceList" nillable="true" minOccurs="0"/>
          <xs:element name="servicePackNameList" type="ReplacementServicePackNameList" nillable="true" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderServicePackMigrationTaskTerminateRequest">
    <xs:annotation>
      <xs:documentation>
        Terminates a service pack migration task that is currently executing.
        Modification is only allowed prior to task execution.
        The response is either SuccessResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="taskName" type="ServicePackMigrationTaskName"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ServiceProviderServicePackModifyRequest">
    <xs:annotation>
      <xs:documentation>
        Requests to modify a service pack for a service provider.
        The response is either SuccessResponse or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="serviceProviderId" type="ServiceProviderId"/>
          <xs:element name="servicePackName" type="ServicePackName"/>
          <xs:element name="newServicePackName" type="ServicePackName" minOccurs="0"/>
          <xs:element name="servicePackDescription" type="ServicePackDescription" nillable="true" minOccurs="0"/>
          <xs:element name="isAvailableForUse" type="xs:boolean" minOccurs="0"/>
          <xs:element name="servicePackQuantity" type="UnboundedPositiveInt" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>  

  <!-- ******************************************************************** -->
  <!-- M E S S A G E   P A R A M E T E R S                                  -->
  <!-- ******************************************************************** -->
  <!--
  The service provider specific non-primitive attributes are listed here in alphabetical order.
  -->

  <xs:simpleType name="ServicePackMigrationAbortErrorThreshold">
    <xs:annotation>
      <xs:documentation>
        The service pack migration task will be aborted if this many errors occurs.
      </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:int">
      <xs:minInclusive value="1"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="ServicePackMigrationMaxDurationHours">
    <xs:annotation>
      <xs:documentation>
        The maximum duration of a service pack migration task.
      </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:int">
      <xs:minInclusive value="1"/>
      <xs:maxInclusive value="9"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="ServicePackMigrationTaskName">
    <xs:annotation>
      <xs:documentation>Service pack migration task name.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:token">
      <xs:minLength value="1"/>
      <xs:maxLength value="80"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="ServicePackMigrationTaskStatus">
    <xs:annotation>
      <xs:documentation>
        Possible status values of a service pack migration task.
      </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:token">
      <xs:enumeration value="Awaiting Edits"/>
      <xs:enumeration value="Pending"/>
      <xs:enumeration value="Processing"/>
      <xs:enumeration value="Terminating"/>
      <xs:enumeration value="Terminated"/>
      <xs:enumeration value="Stopped By System"/>
      <xs:enumeration value="Completed"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="ServicePackMigrationTaskUserSelectionType">
    <xs:annotation>
      <xs:documentation>
        Possible status values of a service pack migration task.
      </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:NMTOKEN">
      <xs:enumeration value="All"/>
      <xs:enumeration value="Any"/>
      <xs:enumeration value="None"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="AnswerConfirmationAnnouncementSelection">
    <xs:annotation>
      <xs:documentation>
        Anser Confirmation Announcement Selection.
      </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:token">
      <xs:enumeration value="System"/>
      <xs:enumeration value="Custom"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="ServiceProviderName">
    <xs:annotation>
      <xs:documentation>Service Provider display name.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:token">
      <xs:minLength value="1"/>
      <xs:maxLength value="80"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="ServiceProviderPasswordRulesApplyTo">
    <xs:annotation>
      <xs:documentation>
        User types for which the Service Provider Password Rules apply.
        The rules could apply to the Administrators (Group and Department) or
        Administrators (Group and Department) and Users.
      </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:token">
      <xs:enumeration value="Administrator"/>
      <xs:enumeration value="Administrator and User"/>
      <xs:enumeration value="Group Administrator and User External Authentication"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="AnswerConfirmationTimeoutSeconds">
    <xs:annotation>
      <xs:documentation>
         The timer determines how long the system will wait for the confirmation.
      </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:int">
      <xs:minInclusive value="2"/>
      <xs:maxInclusive value="30"/>
    </xs:restriction>
  </xs:simpleType>

</xs:schema>
