<?xml version="1.0" encoding="UTF-8" ?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:ipb="http://java.sun.com/products/oss/xml/IPBilling" xmlns:co="http://java.sun.com/products/oss/xml/Common" xmlns:cfi="http://java.sun.com/products/oss/xml/CommonFramework" elementFormDefault="qualified" targetNamespace="http://java.sun.com/products/oss/xml/IPBilling">
   <annotation>
      <documentation>This Schema defines the XML Interface for the OSS IP Billing API (JSR 130) of the OSS Through Java (tm) Initiative. This Schema was generated by the OSS Through Java XML Toolkit Doclet 1-26-2004 7:5</documentation>
   </annotation>
   <import namespace="http://java.sun.com/products/oss/xml/Common" schemaLocation="XmlCommonSchema.xsd" />
   <import namespace="http://java.sun.com/products/oss/xml/CommonFramework" schemaLocation="XmlCommonFrameworkSchema.xsd" />
   <annotation>
      <documentation>This interface models a UsageDataAvailableEvent, which
 is an event that will be sent by the &lt;CODE&gt;Producer&lt;/CODE&gt; to
 the client for informing the availability
 of new data.</documentation>
   </annotation>
   <element name="usageDataAvailableEvent">
      <complexType>
         <sequence>
            <element name="event" type="ipb:UsageDataAvailableEventType" />
         </sequence>
      </complexType>
   </element>
   <complexType name="UsageDataAvailableEventType">
      <complexContent>
         <extension base="cfi:ActivityReportAvailableEventType">
            <sequence>
               <element name="availableSince" minOccurs="0" nillable="true" type="dateTime" />
            </sequence>
         </extension>
      </complexContent>
   </complexType>
   <annotation>
      <documentation>This interface models a MediationCapabilityChangeEvent, which
 is an event that will be sent by the &lt;CODE&gt;Producer&lt;/CODE&gt; to
 the clients to inform the introduction of new data &lt;CODE&gt;formats&lt;/CODE&gt;.</documentation>
   </annotation>
   <element name="mediationCapabilityChangeEvent">
      <complexType>
         <sequence>
            <element name="event" type="ipb:MediationCapabilityChangeEventType" />
         </sequence>
      </complexType>
   </element>
   <complexType name="MediationCapabilityChangeEventType">
      <complexContent>
         <extension base="co:BaseEventType">
            <sequence>
               <element name="description" minOccurs="0" nillable="true" type="string" />
               <element name="newMediationCapability" minOccurs="0" nillable="true" type="ipb:MediationCapability" />
               <element name="oldMediationCapability" minOccurs="0" nillable="true" type="ipb:MediationCapability" />
               <element name="producerKey" minOccurs="0" nillable="true" type="ipb:ProducerKey" />
            </sequence>
         </extension>
      </complexContent>
   </complexType>
   <complexType name="UsageDataAvailableEventPropertyDescriptor">
      <annotation>
         <documentation>This interface models the PropertyDescriptor
 of the UsageDataAvailableEvent.
 This interface documents and specifies the filterable prooperties of
 a UsageDataAvailableEvent notification.
 &lt;p&gt;
 An implementation must provide the makeEvent method to return an
 empty manufactured event instance to the invoker.</documentation>
      </annotation>
      <complexContent>
         <extension base="cfi:ActivityReportAvailableEventPropertyDescriptor">
            <sequence />
         </extension>
      </complexContent>
   </complexType>
   <complexType name="MediationCapabilityChangeEventPropertyDescriptor">
      <annotation>
         <documentation>This interface models the PropertyDescriptor
 of the MediationCapabilityChangeEvent.
 This interface documents and specifies the filterable properties of
 a MediationCapability notification.</documentation>
      </annotation>
      <complexContent>
         <extension base="co:EventPropertyDescriptor">
            <sequence />
         </extension>
      </complexContent>
   </complexType>
   <complexType name="MediationCapabilityChangeEventDecoder">
      <annotation>
         <documentation>This interface supports the low-level detailing
 of a MediationCapabilityChangeEvent emitted by a Producer entity.
 This interface provides many helpful methods to clients interested
 in decoding such an event, received by them.</documentation>
      </annotation>
      <sequence>
         <element name="mediationCapabilityChangeEvent" minOccurs="0" nillable="true" type="ipb:MediationCapabilityChangeEventType" />
      </sequence>
   </complexType>
   <complexType name="UsageDataSchema">
      <annotation>
         <documentation>This represents a base interface to define a Schema definition
 to describe a collection format or output format of a Usage Data Record.
 The Schema descriptions are set and returned as {@link java.lang.Object}.
 This allows the API to let a specific implementation to support the
 passing of a schema definition to a client. Details of the schema
 definition construction and details of schema definition
 deciphering are left up to the individual implementations and the
 API clients.</documentation>
      </annotation>
      <sequence>
         <element name="name" minOccurs="0" nillable="true" type="string" />
         <element name="baseType" minOccurs="0" nillable="true" type="string" />
         <element name="schemaDefinition" minOccurs="0" nillable="true" type="anyType" />
      </sequence>
   </complexType>
   <complexType name="UsageRecFilterValue">
      <annotation>
         <documentation>This interface models the behavior for all types of Usage Record
 Filter interfaces in the IP Billing API.
 &lt;p&gt;
 A Usage Record Filter instance supports setting of the various queryable
 attributes, by a which Usage Data Records can be filtered for retrieval.
 Some common querying parameters for a Usage Data Record supported by
 this interface are:
 &lt;UL&gt;
 &lt;li&gt; Usage Data Category: Usage Data Application type: VoD, IM, M-COMMERCE, Voice
 &lt;li&gt; Usage Data Format: IPDR, (X)-CDR, ...
 &lt;li&gt; Usage Data Format Version - String value of version (1.0, 2.5, etc.).
 &lt;li&gt; Usage Data Encoding - XML, XDR, ASCII, ASN.1/BER, CSV, OSS/J Usage Record.
 &lt;li&gt; Usage Data Timestamp - Records with this timestamp of collection time.
 &lt;li&gt; Usage Attribute field values  - These can be added to this filter
 instance at any time by utilizing the base interface method
 {@link #setAttributeValue}.
 collection time.
 &lt;li&gt; Usage Data Collection Period - Records collected between
 these timestamps.
 &lt;/UL&gt;
 It is also possible that new interfaces could be derived from this
 interface to represent specific filterable attributes for the
 querying the Usage Data Records in question.
 &lt;p&gt;
 All the attributes set in this Fitler instances are cancatenated
 using logical AND expression for query filter purposes.</documentation>
      </annotation>
      <complexContent>
         <extension base="co:QueryValue">
            <sequence>
               <element name="usageDataCategory" minOccurs="0" nillable="true" type="string" />
               <element name="usageDataFormat" minOccurs="0" nillable="true" type="string" />
               <element name="usageDataFormatVersion" minOccurs="0" nillable="true" type="string" />
               <element name="usageDataEncoding" minOccurs="0" nillable="true" type="string" />
               <element name="usageDataTimestamp" minOccurs="0" nillable="true" type="dateTime" />
               <element name="collectionTimePeriod" minOccurs="0" nillable="true" type="co:ArrayOfCalendar" />
            </sequence>
         </extension>
      </complexContent>
   </complexType>
   <complexType name="UsageRecValue">
      <annotation>
         <documentation>This is the base interface for all types of OSS/J Usage Records.
 Any OSS/J Usage Record must implement this interface.
 &lt;p&gt;
 The OSS/J Usage Record is NOT a Managed Entity type. There is
 no &lt;CODE&gt;primaryKey&lt;/CODE&gt; for this &lt;CODE&gt;UsageRecValue&lt;/CODE&gt;.

 &lt;p&gt;
 A Usage Record value is just a data record. It can be decoded with
 the {@link javax.oss.cfi.activity.RecordDescriptor} type information.
 This Type Description is provided by a
 &lt;CODE&gt;UsageRecValueIterator&lt;/CODE&gt; instance.
 &lt;p&gt;
 &lt;p&gt; This interface also provides standardized get and set methods to
 primitive type attributes (fields) and composite type attributes (by
 means of &lt;CODE&gt;Object&lt;/CODE&gt; ). This helps in standardizing access to
 member attributes of a Usage Record.</documentation>
      </annotation>
      <complexContent>
         <extension base="cfi:ReportRecord">
            <sequence>
               <element name="objectValue" minOccurs="0" maxOccurs="unbounded" nillable="true" type="anyType" />
               <element name="booleanValue" minOccurs="0" maxOccurs="unbounded" nillable="true" type="boolean" />
               <element name="byteValue" minOccurs="0" maxOccurs="unbounded" nillable="true" type="byte" />
               <element name="shortValue" minOccurs="0" maxOccurs="unbounded" nillable="true" type="short" />
               <element name="charValue" minOccurs="0" maxOccurs="unbounded" nillable="true" type="co:CharValue" />
               <element name="intValue" minOccurs="0" maxOccurs="unbounded" nillable="true" type="int" />
               <element name="longValue" minOccurs="0" maxOccurs="unbounded" nillable="true" type="long" />
               <element name="floatValue" minOccurs="0" maxOccurs="unbounded" nillable="true" type="float" />
               <element name="doubleValue" minOccurs="0" maxOccurs="unbounded" nillable="true" type="double" />
               <element name="stringValue" minOccurs="0" maxOccurs="unbounded" nillable="true" type="string" />
               <element name="timestampValue" minOccurs="0" maxOccurs="unbounded" nillable="true" type="dateTime" />
               <element name="booleanArrayValue" minOccurs="0" maxOccurs="unbounded" nillable="true" type="co:ArrayOfBoolean" />
               <element name="byteArrayValue" minOccurs="0" maxOccurs="unbounded" nillable="true" type="co:ArrayOfByte" />
               <element name="shortArrayValue" minOccurs="0" maxOccurs="unbounded" nillable="true" type="co:ArrayOfShort" />
               <element name="charArrayValue" minOccurs="0" maxOccurs="unbounded" nillable="true" type="co:ArrayOfChar" />
               <element name="intArrayValue" minOccurs="0" maxOccurs="unbounded" nillable="true" type="co:ArrayOfInt" />
               <element name="longArrayValue" minOccurs="0" maxOccurs="unbounded" nillable="true" type="co:ArrayOfLong" />
               <element name="floatArrayValue" minOccurs="0" maxOccurs="unbounded" nillable="true" type="co:ArrayOfFloat" />
               <element name="doubleArrayValue" minOccurs="0" maxOccurs="unbounded" nillable="true" type="co:ArrayOfDouble" />
               <element name="stringArrayValue" minOccurs="0" maxOccurs="unbounded" nillable="true" type="co:ArrayOfString" />
               <element name="timestampArrayValue" minOccurs="0" maxOccurs="unbounded" nillable="true" type="co:ArrayOfDate" />
               <element name="objectArrayValue" minOccurs="0" maxOccurs="unbounded" nillable="true" type="co:ArrayOfSerializable" />
            </sequence>
         </extension>
      </complexContent>
   </complexType>
   <complexType name="QueryTransferStatusValue">
      <annotation>
         <documentation>This interface represents a Query Value that allows clients to
 query a &lt;CODE&gt;Producer&lt;/CODE&gt; for a subset of its collected Usage Records using
 one or more Usage Data Record attributes as part of the filter's
 attributes.
 &lt;p&gt;
 The Query for Usage Records may consist of specifying
 multiple &lt;CODE&gt;UsageRecFilterValue&lt;/CODE&gt;
 objects, which are used as templates for building the query expression.
 All the Filter Objects in the array are concatenated, using
 logical OR operation.
 &lt;p&gt;
 Each individual &lt;CODE&gt;UsageRecFilterValue&lt;/CODE&gt; object may consist of multiple
 filterable attribute specification. These attributes are concatenated
 together using a logical AND operation.</documentation>
      </annotation>
      <complexContent>
         <extension base="co:QueryValue">
            <sequence>
               <element name="transferStatus" minOccurs="0" nillable="true" type="int" />
               <element name="producerKey" minOccurs="0" nillable="true" type="ipb:ProducerKey" />
            </sequence>
         </extension>
      </complexContent>
   </complexType>
   <complexType name="QueryByUsageRecFilter">
      <annotation>
         <documentation>This interface represents a Query Value that allows clients to
 query a &lt;CODE&gt;Producer&lt;/CODE&gt; for a subset of its collected Usage Records using
 one or more Usage Data Record attributes as part of the filter's
 attributes.
 &lt;p&gt;
 The Query for Usage Records uses a &lt;CODE&gt;UsageRecFilterValue&lt;/CODE&gt;
 to specify the criteria for limiting the data. Also, a &lt;CODE&gt;ProducerKey/CODE&gt;
 can be provided to specify whether the data query is associated with a 
 specific Producer or whether all data should be considered in the query.</documentation>
      </annotation>
      <complexContent>
         <extension base="cfi:QueryActivityReportData">
            <sequence>
               <element name="usageRecFilterValue" minOccurs="0" nillable="true" type="ipb:UsageRecFilterValue" />
               <element name="producerKey" minOccurs="0" nillable="true" type="ipb:ProducerKey" />
            </sequence>
         </extension>
      </complexContent>
   </complexType>
   <complexType name="QueryProducersByMediationCapability">
      <annotation>
         <documentation>This interface is a Query Value that allows a &lt;CODE&gt;Producer&lt;/CODE&gt; Entity to be
 retrieved by its attributes or capabilities.
 &lt;p&gt;
 A Query operation using such a query may result in zero, one or multiple
 &lt;CODE&gt;Producer&lt;/CODE&gt; Entities to be returned.
 &lt;p&gt;
 For Query expression purposes
 all attributes of &lt;CODE&gt;MeidationCapability&lt;/CODE&gt; instnace are
 concatenated, using logical AND operation.
 &lt;p&gt;</documentation>
      </annotation>
      <complexContent>
         <extension base="co:QueryValue">
            <sequence>
               <element name="mediationCapabilityValues" minOccurs="0" nillable="true" type="ipb:ArrayOfMediationCapability" />
               <element name="joinOperand" minOccurs="0" nillable="true" type="int" />
            </sequence>
         </extension>
      </complexContent>
   </complexType>
   <complexType name="TransferStatusPrimaryKey">
      <annotation>
         <documentation>This interface encapsulates the &lt;CODE&gt;PrimaryKey&lt;/CODE&gt;
 of a &lt;CODE&gt;TransferStatus&lt;/CODE&gt; entity.

 &lt;p&gt;
 The &lt;CODE&gt;PrimaryKey&lt;/CODE&gt; encapsulation allows a &lt;CODE&gt;TransferStatus&lt;/CODE&gt;
 entity to be
 uniquely identified with just one or
 a combination of two or more attributes and their values.
 This insulates the API as well as the implementations from having to 
 change each time a new attribute must be included to the definition of
 its &lt;CODE&gt;PrimaryKey&lt;/CODE&gt;.
 &lt;p&gt;
 This is the base interface for all &lt;CODE&gt;TransferStatus&lt;/CODE&gt; primary key interfaces,
 with just the DN being defined as the key attribute for now.
 Any derived interfaces are free to add their own attributes.
 &lt;p&gt;
 The primary key for a transfer session consists of a unique
 session id within the operating domain, plus &lt;CODE&gt;ProducerKey&lt;/CODE&gt;,
 which are involved in the data transfer.</documentation>
      </annotation>
      <sequence>
         <element name="sessionId" minOccurs="0" nillable="true" type="long" />
         <element name="producerKey" minOccurs="0" nillable="true" type="ipb:ProducerKey" />
      </sequence>
   </complexType>
   <complexType name="TransferStatusValue">
      <annotation>
         <documentation>This interface represents the attributes of all types of
 Data Transfer Status Entities in IP Billing API.
 &lt;p&gt;
 This is a base Value Object interface to the &lt;CODE&gt;TransferStatusValue&lt;/CODE&gt; Entity.
 This interface and its sub interfaces (if any) provide several ways
 to access the attributes:
 &lt;p&gt;
 &lt;UL&gt;
 &lt;LI&gt;Attributes can be accessed through standard JavaBeans get/set (isSet)
 methods.
 &lt;LI&gt;Attributes can be accessed through the generic methods defined 
     in &lt;CODE&gt;AttributeAccess&lt;/CODE&gt;
 &lt;UL&gt;
 &lt;LI&gt;&lt;CODE&gt;Object getAttributeValue(String attributeName)&lt;/CODE&gt;
 &lt;LI&gt;&lt;CODE&gt;void setAttributeValue(String attributeName, Object newValue)&lt;/CODE&gt;
 &lt;/UL&gt;
 &lt;/UL&gt;

 &lt;p&gt;
 A &lt;CODE&gt;TransferStatusValue&lt;/CODE&gt; entity is used to persistently represent information
 regarding the transfer of Usage Records from a &lt;CODE&gt;Producer&lt;/CODE&gt; to a client.
 This base interface only provides the ability to store
 retrieve the status of the data transfer and the Usage Record Subscription
 value object associated with this transfer. More specific interfaces can
 be developed by means of derivation to provide more useful behavior
 for a specific type of transfer. For example, if a &lt;CODE&gt;Producer&lt;/CODE&gt; Entity
 capable of re-transmissions, a specialized &lt;CODE&gt;TransferStatusValue&lt;/CODE&gt; Entity can
 save the information about failed Usage Record transfers, so that, they
 may be retried or re-conciled at a later time. 

 &lt;p&gt;
 An entity of &lt;CODE&gt;TransferStatusValue&lt;/CODE&gt; is created by the
 &lt;CODE&gt;Producer&lt;/CODE&gt;, whenever a transfer
 record needs to be kept.
 The reporting parameters are preserved in the optional
 &lt;CODE&gt;reportingParams&lt;/CODE&gt; attribute for understanding the reporting
 schemes involved.
 &lt;p&gt;
 The &lt;CODE&gt;TransferStatusValue&lt;/CODE&gt; entity is not removed by the &lt;CODE&gt;Producer&lt;/CODE&gt; entity after
 the Data Transfer is complete. Instead, it is left to persistently
 log the Data Transfer information, for auditing purposes. In order to
 avoid creation of large number of Data Transfer Status Entities in the
 &lt;CODE&gt;Producer&lt;/CODE&gt;'s storage, there must be an aging policy for retiring the
 unused Usage Data Transfer Status entities. Currently this is left
 unspecified by this API.</documentation>
      </annotation>
      <complexContent>
         <extension base="co:ManagedEntityValue">
            <sequence>
               <element name="transferStatusKey" minOccurs="0" nillable="true" type="ipb:TransferStatusKey" />
               <element name="transferStatusCode" minOccurs="0" nillable="true" type="int" />
               <element name="transferFailureReason" minOccurs="0" nillable="true" type="string" />
               <element name="reportingParams" minOccurs="0" nillable="true" type="cfi:ActivityReportParams" />
            </sequence>
         </extension>
      </complexContent>
   </complexType>
   <complexType name="TransferStatusKey">
      <annotation>
         <documentation>A &lt;CODE&gt;TransferStatusKey&lt;/CODE&gt; is a unique identifier attribute,
 present for each
 &lt;CODE&gt;TransferStatus&lt;/CODE&gt; entity represented by
 &lt;CODE&gt;TransferStatusValue&lt;/CODE&gt; object.
 It is used to identify a single &lt;CODE&gt;TransferStatus&lt;/CODE&gt; entity.
 &lt;p&gt;
 A &lt;CODE&gt;TransferStatusKey&lt;/CODE&gt; value object is returned to the client during
 setting up of Data Transfer Session between a client and &lt;CODE&gt;Producer&lt;/CODE&gt;.

 &lt;p&gt;
 The Type, ApplicationDN and ApplicationContext
 are included in super interface &lt;CODE&gt;ManagedEntityKey&lt;/CODE&gt;, because
 a &lt;CODE&gt;primaryKey&lt;/CODE&gt; is only unique within an
 application instance as given by the ApplicationDN running
 in a given naming system as given by the ApplicationContext::URL

 &lt;p&gt;
 The &lt;CODE&gt;TransferStatusPrimaryKey&lt;/CODE&gt; is the &lt;CODE&gt;primaryKey&lt;/CODE&gt;
 representation of the &lt;CODE&gt;TransferStatusKey&lt;/CODE&gt;. This interface is also
 the factory for creating the instances of &lt;CODE&gt;TransferStatusPrimaryKey&lt;/CODE&gt;.</documentation>
      </annotation>
      <complexContent>
         <extension base="co:ManagedEntityKey">
            <sequence>
               <element name="transferStatusPrimaryKey" minOccurs="0" nillable="true" type="ipb:TransferStatusPrimaryKey" />
            </sequence>
         </extension>
      </complexContent>
   </complexType>
   <complexType name="IPBAPIException">
      <annotation>
         <documentation>This is base class for all IP Billing API Exceptions.
 This inherits from Exception, not RuntimeException.
 &lt;p&gt;
 This exception is thrown for Billing API functionality specific problems.
 &lt;p&gt;
 This new class is required because J2EE containers deal with
 RuntimeException in a special way, see EJB specification.</documentation>
      </annotation>
      <complexContent>
         <extension base="co:BaseException">
            <sequence />
         </extension>
      </complexContent>
   </complexType>
   <complexType name="IPBDataFormatException">
      <annotation>
         <documentation>This class represents exceptions related to Data Format errors.
 It could be thrown by IP Billing API to indiate problems such
 as encountering unsupported data format,
 non-conformant data formats, etc.</documentation>
      </annotation>
      <complexContent>
         <extension base="ipb:IPBAPIException">
            <sequence />
         </extension>
      </complexContent>
   </complexType>
   <complexType name="ProducerValue">
      <annotation>
         <documentation>This is base interface, representing the attribute values of
 any type of &lt;CODE&gt;Producer&lt;/CODE&gt; Entity in the IP Billing API.
 The Producer in the IP Billing API is an &lt;CODE&gt;Activity&lt;/CODE&gt;
 (see {@link javax.oss.cfi.activity.ActivityValue}),
 which knows how and
 what type of data to collect and how to report it to the client.
 &lt;p&gt;
 This is a base Value Object interface to the &lt;CODE&gt;Producer&lt;/CODE&gt; entity.
 This interface and its sub interfaces (if any) provide several ways
 to access the attributes:
 &lt;p&gt;
 &lt;UL&gt;
 &lt;LI&gt;Attributes can be accessed through standard JavaBeans get/set (isSet)
 methods.
 &lt;LI&gt;Attributes can be accessed through the generic methods defined 
     in &lt;CODE&gt;AttributeAccess&lt;/CODE&gt;
 &lt;UL&gt;
 &lt;LI&gt;&lt;CODE&gt; Object getAttributeValue(String attributeName)&lt;/CODE&gt;
 &lt;LI&gt;&lt;CODE&gt; void setAttributeValue(String attributeName, Object newValue)&lt;/CODE&gt;
 &lt;/UL&gt;
 &lt;/UL&gt;</documentation>
      </annotation>
      <complexContent>
         <extension base="cfi:ActivityValue">
            <sequence>
               <element name="producerKey" minOccurs="0" nillable="true" type="ipb:ProducerKey" />
               <element name="mediationCapabilityValues" minOccurs="0" nillable="true" type="ipb:ArrayOfMediationCapability" />
               <element name="transferStatusSupported" minOccurs="0" nillable="true" type="boolean" />
            </sequence>
         </extension>
      </complexContent>
   </complexType>
   <annotation>
      <documentation>Lists the known ProducerValue sub types in the Producer System.
 &lt;p&gt;
 This method can be invoked by the clients of the API to know
 the various supported Producer Entity types of a given system.</documentation>
   </annotation>
   <element name="getProducerValueTypesRequest">
      <complexType>
         <sequence />
      </complexType>
   </element>
   <element name="getProducerValueTypesResponse">
      <complexType>
         <sequence>
            <element name="strings" type="co:ArrayOfString" />
         </sequence>
      </complexType>
   </element>
   <element name="getProducerValueTypesException">
      <complexType>
         <choice>
            <element name="remoteException" type="co:RemoteException" />
         </choice>
      </complexType>
   </element>
   <annotation>
      <documentation>Lists the known ProducerKey sub types in the Producer System.
 &lt;p&gt;
 This method can be invoked by the clients of the API to know
 the Key instances of various supported Producer Entity types
 of a given system.</documentation>
   </annotation>
   <element name="getProducerKeyTypesRequest">
      <complexType>
         <sequence />
      </complexType>
   </element>
   <element name="getProducerKeyTypesResponse">
      <complexType>
         <sequence>
            <element name="strings" type="co:ArrayOfString" />
         </sequence>
      </complexType>
   </element>
   <element name="getProducerKeyTypesException">
      <complexType>
         <choice>
            <element name="remoteException" type="co:RemoteException" />
         </choice>
      </complexType>
   </element>
   <annotation>
      <documentation>Lists the known UsageRecFilterTypes sub types in the Producer System.
 &lt;p&gt;
 This method can be invoked by the clients of the API to know
 the various supported Usage Record Filter types of a given system.</documentation>
   </annotation>
   <element name="getUsageRecFilterTypesRequest">
      <complexType>
         <sequence />
      </complexType>
   </element>
   <element name="getUsageRecFilterTypesResponse">
      <complexType>
         <sequence>
            <element name="strings" type="co:ArrayOfString" />
         </sequence>
      </complexType>
   </element>
   <element name="getUsageRecFilterTypesException">
      <complexType>
         <choice>
            <element name="remoteException" type="co:RemoteException" />
         </choice>
      </complexType>
   </element>
   <annotation>
      <documentation>Lists the known MediationCapability sub types in the Producer System.
 &lt;p&gt;
 This method can be invoked by the clients of the API to know
 the various supported mediation capability types of a given system.</documentation>
   </annotation>
   <element name="getMediationCapabilityTypesRequest">
      <complexType>
         <sequence />
      </complexType>
   </element>
   <element name="getMediationCapabilityTypesResponse">
      <complexType>
         <sequence>
            <element name="strings" type="co:ArrayOfString" />
         </sequence>
      </complexType>
   </element>
   <element name="getMediationCapabilityTypesException">
      <complexType>
         <choice>
            <element name="remoteException" type="co:RemoteException" />
         </choice>
      </complexType>
   </element>
   <annotation>
      <documentation>Create a new &lt;CODE&gt;Producer&lt;/CODE&gt; Entity. 

 &lt;p&gt;
 On creation of the &lt;CODE&gt;Producer&lt;/CODE&gt;, minimally necessary information must be
 supplied in order to identify the &lt;CODE&gt;Producer&lt;/CODE&gt;. This includes the
 supplying the information on &lt;CODE&gt;Producer&lt;/CODE&gt;'s key attributes,
 its name and DN.
 
 &lt;p&gt;
 If a &lt;CODE&gt;ProducerKey&lt;/CODE&gt; attribute is specified in the &lt;CODE&gt;ProducerValue&lt;/CODE&gt;
 value object during the create operation, an IllegalArgumentException
 is raised.
 &lt;p&gt;
 The name of a &lt;CODE&gt;Producer&lt;/CODE&gt; must be unique within a given system
 deploying the IP Billing API.

 &lt;p&gt;
 The capability descriptor of the created &lt;CODE&gt;Producer&lt;/CODE&gt;'s entity, namely
 attribute that is the instance of &lt;CODE&gt;MediationCapability&lt;/CODE&gt;, may be
 left empty (unset) at the creation time, implying that a &lt;CODE&gt;Producer&lt;/CODE&gt;
 is not ready to be discovered. &lt;p&gt;
 The &lt;CODE&gt;MediationCapability&lt;/CODE&gt; attribute of the &lt;CODE&gt;Producer&lt;/CODE&gt; may be set
 to different values during its lifetime. Each time, this value is changed,
 the Producer Entity emits a
 {@link javax.oss.ipb.event.MediationCapabilityChangeEvent}
 Notification
 to the common JVTEventTopic, which then will be received by the
 registered clients. However, a &lt;CODE&gt;Producer&lt;/CODE&gt; that
 does not support setting this attribute, may throw
 an UnsupportedOperationException.
 Also, a &lt;CODE&gt;Producer&lt;/CODE&gt; Entity may throw a IllegalArgumentException
 for a Set operation on this attribute, if it indicates a arising of
 a potential conflict with on-going operations.
 &lt;p&gt;
 Similar rules apply to other Value objects, such as Usage Record
 Descriptors, that are associated with a &lt;CODE&gt;Producer&lt;/CODE&gt; Entity.</documentation>
   </annotation>
   <element name="createProducerByValueRequest">
      <complexType>
         <sequence>
            <element name="value" type="ipb:ProducerValue" />
         </sequence>
      </complexType>
   </element>
   <element name="createProducerByValueResponse">
      <complexType>
         <sequence>
            <element name="producerKey" type="ipb:ProducerKey" />
         </sequence>
      </complexType>
   </element>
   <element name="createProducerByValueException">
      <complexType>
         <choice>
            <element name="illegalArgumentException" type="co:IllegalArgumentException" />
            <element name="createException" type="co:CreateException" />
            <element name="remoteException" type="co:RemoteException" />
            <element name="unsupportedOperationException" type="co:UnsupportedOperationException" />
            <element name="duplicateKeyException" type="co:DuplicateKeyException" />
            <element name="namingException" type="co:BaseException" />
         </choice>
      </complexType>
   </element>
   <annotation>
      <documentation>Create multiple &lt;CODE&gt;Producer&lt;/CODE&gt; entities with the specified value templates.
 &lt;p&gt;
  A Standard OSS/J bulk create entity operation, with best effort semantics.</documentation>
   </annotation>
   <element name="tryCreateProducersByValuesRequest">
      <complexType>
         <sequence>
            <element name="values" type="ipb:ArrayOfProducerValue" />
         </sequence>
      </complexType>
   </element>
   <element name="tryCreateProducersByValuesResponse">
      <complexType>
         <sequence>
            <element name="producerKeyResults" type="ipb:ArrayOfProducerKeyResult" />
         </sequence>
      </complexType>
   </element>
   <element name="tryCreateProducersByValuesException">
      <complexType>
         <choice>
            <element name="illegalArgumentException" type="co:IllegalArgumentException" />
            <element name="createException" type="co:CreateException" />
            <element name="remoteException" type="co:RemoteException" />
            <element name="unsupportedOperationException" type="co:UnsupportedOperationException" />
            <element name="duplicateKeyException" type="co:DuplicateKeyException" />
         </choice>
      </complexType>
   </element>
   <annotation>
      <documentation>Remove a single &lt;CODE&gt;Producer&lt;/CODE&gt; entity.
 &lt;p&gt;
 A Standard OSS/J atomic remove operation to remove
 a single &lt;CODE&gt;Producer&lt;/CODE&gt; Enitty.</documentation>
   </annotation>
   <element name="removeProducerByKeyRequest">
      <complexType>
         <sequence>
            <element name="key" type="ipb:ProducerKey" />
         </sequence>
      </complexType>
   </element>
   <element name="removeProducerByKeyResponse">
      <complexType>
         <sequence />
      </complexType>
   </element>
   <element name="removeProducerByKeyException">
      <complexType>
         <choice>
            <element name="illegalArgumentException" type="co:IllegalArgumentException" />
            <element name="unsupportedOperationException" type="co:UnsupportedOperationException" />
            <element name="objectNotFoundException" type="co:ObjectNotFoundException" />
            <element name="removeException" type="co:RemoveException" />
            <element name="remoteException" type="co:RemoteException" />
         </choice>
      </complexType>
   </element>
   <annotation>
      <documentation>Remove multiple &lt;CODE&gt;Producers&lt;/CODE&gt; by keys, using best effort.
 &lt;p&gt;
 A Standard OSS/J bulk remove operation to remove
 multiple &lt;CODE&gt;Producer&lt;/CODE&gt; Enitties, using best effort semantics.</documentation>
   </annotation>
   <element name="tryRemoveProducersByKeysRequest">
      <complexType>
         <sequence>
            <element name="keys" type="ipb:ArrayOfProducerKey" />
         </sequence>
      </complexType>
   </element>
   <element name="tryRemoveProducersByKeysResponse">
      <complexType>
         <sequence>
            <element name="producerKeyResults" type="ipb:ArrayOfProducerKeyResult" minOccurs="0" nillable="true" />
         </sequence>
      </complexType>
   </element>
   <element name="tryRemoveProducersByKeysException">
      <complexType>
         <choice>
            <element name="illegalArgumentException" type="co:IllegalArgumentException" />
            <element name="unsupportedOperationException" type="co:UnsupportedOperationException" />
            <element name="finderException" type="co:FinderException" />
            <element name="removeException" type="co:RemoveException" />
            <element name="remoteException" type="co:RemoteException" />
         </choice>
      </complexType>
   </element>
   <annotation>
      <documentation>Remove multiple &lt;CODE&gt;Producers&lt;/CODE&gt; by value template,
 using best effort.</documentation>
   </annotation>
   <element name="tryRemoveProducersByTemplateRequest">
      <complexType>
         <complexContent>
            <extension base="co:IteratorRequest">
               <sequence>
                  <element name="template" type="ipb:ProducerValue" />
                  <element name="failuresOnly" type="boolean" />
               </sequence>
            </extension>
         </complexContent>
      </complexType>
   </element>
   <element name="tryRemoveProducersByTemplateResponse">
      <complexType>
         <complexContent>
            <extension base="co:IteratorResponse">
               <sequence>
                  <element type="ipb:ArrayOfProducerKeyResult" name="results" />
               </sequence>
            </extension>
         </complexContent>
      </complexType>
   </element>
   <element name="tryRemoveProducersByTemplateException">
      <complexType>
         <choice>
            <element name="illegalArgumentException" type="co:IllegalArgumentException" />
            <element name="unsupportedOperationException" type="co:UnsupportedOperationException" />
            <element name="finderException" type="co:FinderException" />
            <element name="removeException" type="co:RemoveException" />
            <element name="remoteException" type="co:RemoteException" />
         </choice>
      </complexType>
   </element>
   <annotation>
      <documentation>Get attributes of a single &lt;CODE&gt;Producer&lt;/CODE&gt; entity</documentation>
   </annotation>
   <element name="getProducerByKeyRequest">
      <complexType>
         <sequence>
            <element name="key" type="ipb:ProducerKey" />
            <element name="attrNames" type="co:ArrayOfString" nillable="true" minOccurs="0" />
         </sequence>
      </complexType>
   </element>
   <element name="getProducerByKeyResponse">
      <complexType>
         <sequence>
            <element name="producerValue" type="ipb:ProducerValue" />
         </sequence>
      </complexType>
   </element>
   <element name="getProducerByKeyException">
      <complexType>
         <choice>
            <element name="illegalArgumentException" type="co:IllegalArgumentException" />
            <element name="objectNotFoundException" type="co:ObjectNotFoundException" />
            <element name="remoteException" type="co:RemoteException" />
            <element name="unsupportedOperationException" type="co:UnsupportedOperationException" />
            <element name="namingException" type="co:BaseException" />
            <element name="finderException" type="co:FinderException" />
         </choice>
      </complexType>
   </element>
   <annotation>
      <documentation>Get attributes of multiple &lt;CODE&gt;Producer&lt;/CODE&gt; entities by keys.</documentation>
   </annotation>
   <element name="getProducersByKeysRequest">
      <complexType>
         <sequence>
            <element name="keys" type="ipb:ArrayOfProducerKey" />
            <element name="attrNames" type="co:ArrayOfString" nillable="true" minOccurs="0" />
         </sequence>
      </complexType>
   </element>
   <element name="getProducersByKeysResponse">
      <complexType>
         <sequence>
            <element name="producerValues" type="ipb:ArrayOfProducerValue" />
         </sequence>
      </complexType>
   </element>
   <element name="getProducersByKeysException">
      <complexType>
         <choice>
            <element name="illegalArgumentException" type="co:IllegalArgumentException" />
            <element name="remoteException" type="co:RemoteException" />
            <element name="unsupportedOperationException" type="co:UnsupportedOperationException" />
            <element name="namingException" type="co:BaseException" />
            <element name="finderException" type="co:FinderException" />
         </choice>
      </complexType>
   </element>
   <annotation>
      <documentation>Get attributes of multiple &lt;CODE&gt;Producer&lt;/CODE&gt; entities by template</documentation>
   </annotation>
   <element name="getProducersByTemplateRequest">
      <complexType>
         <complexContent>
            <extension base="co:IteratorRequest">
               <sequence>
                  <element name="template" type="ipb:ProducerValue" />
                  <element name="attrNames" type="co:ArrayOfString" nillable="true" minOccurs="0" />
               </sequence>
            </extension>
         </complexContent>
      </complexType>
   </element>
   <element name="getProducersByTemplateResponse">
      <complexType>
         <complexContent>
            <extension base="co:IteratorResponse">
               <sequence>
                  <element type="ipb:ArrayOfProducerValue" name="results" />
               </sequence>
            </extension>
         </complexContent>
      </complexType>
   </element>
   <element name="getProducersByTemplateException">
      <complexType>
         <choice>
            <element name="illegalArgumentException" type="co:IllegalArgumentException" />
            <element name="finderException" type="co:FinderException" />
            <element name="remoteException" type="co:RemoteException" />
            <element name="unsupportedOperationException" type="co:UnsupportedOperationException" />
         </choice>
      </complexType>
   </element>
   <annotation>
      <documentation>Set attributes of a single managed object, by its key</documentation>
   </annotation>
   <element name="setProducerByValueRequest">
      <complexType>
         <sequence>
            <element name="value" type="ipb:ProducerValue" />
            <element name="resyncRequired" type="boolean" />
         </sequence>
      </complexType>
   </element>
   <element name="setProducerByValueResponse">
      <complexType>
         <sequence />
      </complexType>
   </element>
   <element name="setProducerByValueException">
      <complexType>
         <choice>
            <element name="unsupportedOperationException" type="co:UnsupportedOperationException" />
            <element name="illegalArgumentException" type="co:IllegalArgumentException" />
            <element name="setException" type="co:SetException" />
            <element name="objectNotFoundException" type="co:ObjectNotFoundException" />
            <element name="remoteException" type="co:RemoteException" />
            <element name="resyncRequiredException" type="co:ResyncRequiredException" />
         </choice>
      </complexType>
   </element>
   <annotation>
      <documentation>Set attributes of multiple managed objects by their keys - best effort.</documentation>
   </annotation>
   <element name="trySetProducersByKeysRequest">
      <complexType>
         <sequence>
            <element name="keys" type="ipb:ArrayOfProducerKey" />
            <element name="value" type="ipb:ProducerValue" />
         </sequence>
      </complexType>
   </element>
   <element name="trySetProducersByKeysResponse">
      <complexType>
         <sequence>
            <element name="producerKeyResults" type="ipb:ArrayOfProducerKeyResult" />
         </sequence>
      </complexType>
   </element>
   <element name="trySetProducersByKeysException">
      <complexType>
         <choice>
            <element name="unsupportedOperationException" type="co:UnsupportedOperationException" />
            <element name="illegalArgumentException" type="co:IllegalArgumentException" />
            <element name="setException" type="co:SetException" />
            <element name="finderException" type="co:FinderException" />
            <element name="remoteException" type="co:RemoteException" />
         </choice>
      </complexType>
   </element>
   <annotation>
      <documentation>Set attributes of multiple managed objects by template - best effort.</documentation>
   </annotation>
   <element name="trySetProducersByTemplateRequest">
      <complexType>
         <complexContent>
            <extension base="co:IteratorRequest">
               <sequence>
                  <element name="template" type="ipb:ProducerValue" />
                  <element name="value" type="ipb:ProducerValue" />
                  <element name="failuresOnly" type="boolean" />
               </sequence>
            </extension>
         </complexContent>
      </complexType>
   </element>
   <element name="trySetProducersByTemplateResponse">
      <complexType>
         <complexContent>
            <extension base="co:IteratorResponse">
               <sequence>
                  <element type="ipb:ArrayOfProducerKeyResult" name="results" />
               </sequence>
            </extension>
         </complexContent>
      </complexType>
   </element>
   <element name="trySetProducersByTemplateException">
      <complexType>
         <choice>
            <element name="unsupportedOperationException" type="co:UnsupportedOperationException" />
            <element name="illegalArgumentException" type="co:IllegalArgumentException" />
            <element name="setException" type="co:SetException" />
            <element name="finderException" type="co:FinderException" />
            <element name="remoteException" type="co:RemoteException" />
         </choice>
      </complexType>
   </element>
   <annotation>
      <documentation>Query the &lt;CODE&gt;Producer&lt;/CODE&gt; by its capability attributes.
 This method can use &lt;CODE&gt;QueryProducersByMediationCapability&lt;/CODE&gt;
 named query.</documentation>
   </annotation>
   <element name="queryProducersRequest">
      <complexType>
         <complexContent>
            <extension base="co:IteratorRequest">
               <sequence>
                  <element name="query" type="co:QueryValue" minOccurs="0" />
                  <element name="attrNames" type="co:ArrayOfString" nillable="true" minOccurs="0" />
               </sequence>
            </extension>
         </complexContent>
      </complexType>
   </element>
   <element name="queryProducersResponse">
      <complexType>
         <complexContent>
            <extension base="co:IteratorResponse">
               <sequence>
                  <element type="ipb:ArrayOfProducerValue" name="results" />
               </sequence>
            </extension>
         </complexContent>
      </complexType>
   </element>
   <element name="queryProducersException">
      <complexType>
         <choice>
            <element name="illegalArgumentException" type="co:IllegalArgumentException" />
            <element name="remoteException" type="co:RemoteException" />
            <element name="namingException" type="co:BaseException" />
            <element name="finderException" type="co:FinderException" />
            <element name="createException" type="co:CreateException" />
         </choice>
      </complexType>
   </element>
   <annotation>
      <documentation>Returns the list of all Mediation (Conversion) possibilities
 supported by IP Billing System.
 &lt;p&gt;
 This method is primarily invoked by the clients to find out the
 current system's mediation capabilities.
 Once the desired set of mediation capability values are
 located in the results, the client typically extracts these
 and uses them to create an instance of ProducerValue with
 additional attributes.
 &lt;p&gt;
 The client may then locate an existing
 Producer by the created value template (see
 {@link #getProducersByTemplate}),
 or query the producer
 by the mediation capability values
 (see {@link javax.oss.ipb.query.QueryProducersByMediationCapability}).
 &lt;p&gt;
 Alternatively, the client may also create a new Producer Entity by
 using any one of the createProducer... type methods.</documentation>
   </annotation>
   <element name="getSupportedMediationCapabilitiesRequest">
      <complexType>
         <sequence>
            <element name="value" type="ipb:ProducerValue" nillable="true" minOccurs="0" />
         </sequence>
      </complexType>
   </element>
   <element name="getSupportedMediationCapabilitiesResponse">
      <complexType>
         <sequence>
            <element name="mediationCapabilitys" type="ipb:ArrayOfMediationCapability" />
         </sequence>
      </complexType>
   </element>
   <element name="getSupportedMediationCapabilitiesException">
      <complexType>
         <choice>
            <element name="illegalArgumentException" type="co:IllegalArgumentException" />
            <element name="objectNotFoundException" type="co:ObjectNotFoundException" />
            <element name="remoteException" type="co:RemoteException" />
            <element name="unsupportedOperationException" type="co:UnsupportedOperationException" />
         </choice>
      </complexType>
   </element>
   <annotation>
      <documentation>Returns a MediationCapability instance that is a subset of
 value array returned by {@link #getSupportedMediationCapabilities},
 for the specified &lt;CODE&gt;desiredCapability&lt;/CODE&gt; parameter.
 &lt;p&gt;
 This is the negotiation method for the client to request
 Mediation capabilities from a Producer.
 The client builds a desired mediation capability value and then
 passes it along to the producer session to negotiate this capability
 from a specific producer. If the &lt;CODE&gt;producerKey&lt;/CODE&gt; is omitted,
 then all the &lt;CODE&gt;Producer&lt;/CODE&gt;s for this session will be
 considered.
 &lt;p&gt;
 If not acceptable, the &lt;CODE&gt;Producer&lt;/CODE&gt; will throw
 an IPBAPIException. Otherwise, it returns a new
 &lt;CODE&gt;MediationCapability&lt;/CODE&gt;
 value that contains the commonly agreeable set of capabilities.</documentation>
   </annotation>
   <element name="matchMediationCapabilityRequest">
      <complexType>
         <sequence>
            <element name="pKey" type="ipb:ProducerKey" nillable="true" minOccurs="0" />
            <element name="desiredCapability" type="ipb:MediationCapability" />
         </sequence>
      </complexType>
   </element>
   <element name="matchMediationCapabilityResponse">
      <complexType>
         <sequence>
            <element name="mediationCapability" type="ipb:MediationCapability" />
         </sequence>
      </complexType>
   </element>
   <element name="matchMediationCapabilityException">
      <complexType>
         <choice>
            <element name="illegalArgumentException" type="co:IllegalArgumentException" />
            <element name="objectNotFoundException" type="co:ObjectNotFoundException" />
            <element name="remoteException" type="co:RemoteException" />
            <element name="unsupportedOperationException" type="co:UnsupportedOperationException" />
            <element name="iPBAPIException" type="ipb:IPBAPIException" />
         </choice>
      </complexType>
   </element>
   <annotation>
      <documentation>This method indicates whether Usage Data Transfers can be monitored
 for the Producer in question,
 by creating the TransferStatusValue audit record by the implementation.
 &lt;p&gt;
 If an implementation doesn't support audit trailing of the usage data
 transfers, it should return &lt;CODE&gt;false&lt;/CODE&gt; value.</documentation>
   </annotation>
   <element name="supportsTransferMonitoringRequest">
      <complexType>
         <sequence>
            <element name="value" type="ipb:ProducerValue" />
         </sequence>
      </complexType>
   </element>
   <element name="supportsTransferMonitoringResponse">
      <complexType>
         <sequence>
            <element name="boolean" type="boolean" />
         </sequence>
      </complexType>
   </element>
   <element name="supportsTransferMonitoringException">
      <complexType>
         <choice>
            <element name="illegalArgumentException" type="co:IllegalArgumentException" />
            <element name="objectNotFoundException" type="co:ObjectNotFoundException" />
            <element name="remoteException" type="co:RemoteException" />
            <element name="unsupportedOperationException" type="co:UnsupportedOperationException" />
         </choice>
      </complexType>
   </element>
   <annotation>
      <documentation>Query the Usage Records by its filterable attribues.
 This is a one time query method which returns a bunch of
 matching usage reocrds as a iterator. However, no record of
 any querying is kept. After the iterator is removed,
 this query and its results are completely forgotten.
 &lt;p&gt;
 This is a client initiated ad-hoc querying of usage data in a
 System. An implementation that supports this method, will
 be able to service real-time queries from the client
 for usage data for both current (snap-shot) as well historical data.
 &lt;p&gt;
 This operations returns the Iterator to the UsageRecValue resutls.
 This operation can be invoked by the client at any time.
 &lt;p&gt;
 If an implementation cannot support returning the Usage Data
 as an Iterator, it will throw a UnsupportedOperationException.
 &lt;p&gt;
 The difference between this operation and
 {@link #queryUsageDataInformation}
 is that the latter returns an iterator to the multiple ReportInfo values.
 Each of the ReportInfo value can then be inspected by the client
 to discover the URL or stream connection information to the actual Usage
 Data on the System. Such approach can be used by the implementations
 that do not support Iterator based retrieval of Usage Record Data,
 but still want to allow the clients to query for the indirect
 Report Information.</documentation>
   </annotation>
   <element name="queryUsageRecordsRequest">
      <complexType>
         <complexContent>
            <extension base="co:IteratorRequest">
               <sequence>
                  <element name="query" type="co:QueryValue" minOccurs="0" />
                  <element name="attrNames" type="co:ArrayOfString" nillable="true" minOccurs="0" />
               </sequence>
            </extension>
         </complexContent>
      </complexType>
   </element>
   <element name="queryUsageRecordsResponse">
      <complexType>
         <complexContent>
            <extension base="co:IteratorResponse">
               <sequence>
                  <element type="ipb:ArrayOfUsageRecValue" name="results" />
                  <element name="recordDescriptor" type="cfi:RecordDescriptor" />
               </sequence>
            </extension>
         </complexContent>
      </complexType>
   </element>
   <element name="queryUsageRecordsException">
      <complexType>
         <choice>
            <element name="illegalArgumentException" type="co:IllegalArgumentException" />
            <element name="remoteException" type="co:RemoteException" />
            <element name="createException" type="co:CreateException" />
            <element name="unsupportedOperationException" type="co:UnsupportedOperationException" />
            <element name="namingException" type="co:BaseException" />
         </choice>
      </complexType>
   </element>
   <annotation>
      <documentation>Query the on-going or completed or failed
 Transfers by queryable attribues.</documentation>
   </annotation>
   <element name="queryTransferStatusValuesRequest">
      <complexType>
         <complexContent>
            <extension base="co:IteratorRequest">
               <sequence>
                  <element name="query" type="co:QueryValue" minOccurs="0" />
                  <element name="attrNames" type="co:ArrayOfString" nillable="true" minOccurs="0" />
               </sequence>
            </extension>
         </complexContent>
      </complexType>
   </element>
   <element name="queryTransferStatusValuesResponse">
      <complexType>
         <complexContent>
            <extension base="co:IteratorResponse">
               <sequence>
                  <element type="ipb:ArrayOfTransferStatusValue" name="results" />
               </sequence>
            </extension>
         </complexContent>
      </complexType>
   </element>
   <element name="queryTransferStatusValuesException">
      <complexType>
         <choice>
            <element name="illegalArgumentException" type="co:IllegalArgumentException" />
            <element name="remoteException" type="co:RemoteException" />
            <element name="createException" type="co:CreateException" />
            <element name="unsupportedOperationException" type="co:UnsupportedOperationException" />
            <element name="namingException" type="co:BaseException" />
         </choice>
      </complexType>
   </element>
   <annotation>
      <documentation>Get the Iterator to the Usage Data Records collected by the Producer
 This is called by the client after it receives a
 UsageDataAvailableEvent notification from the Producer.
 The client passes the same notfication value back to the
 Producer with additional parameters identifying
 date constraints for the results, to aid in possibly
 retrieving only newer information.
 &lt;p&gt;
 This operation is used by the client to retrieve the results using
 OSS/J Iterator approach. If the Iterator Report Mode is not one of the
 Report Modes supported by this Session, an UnsupportedOperationException
 is thrown. Please see {@link #getSupportedReportModes}.
 &lt;p&gt;
 If beginTime parameter is not null, all the reports created
 beginning from this date are returned by the iterator.
 If it is null, all the reports by this Activity are retrieved until
 the endDate is reached.
 &lt;p&gt;
 If the endDate is specified, only Report Data collected until
 this endDate is returned. If it is null, all Report Data from
 the beginDate is returned.</documentation>
   </annotation>
   <element name="getUsageRecordsByIteratorRequest">
      <complexType>
         <complexContent>
            <extension base="co:IteratorRequest">
               <sequence>
                  <element name="usageDataAvailableEvent" type="ipb:UsageDataAvailableEventType" />
                  <element name="filterValue" type="ipb:UsageRecFilterValue" />
                  <element name="createTransferStatus" type="boolean" />
                  <element name="attrNames" type="co:ArrayOfString" nillable="true" minOccurs="0" />
                  <element name="beginDate" type="dateTime" nillable="true" minOccurs="0" />
                  <element name="endDate" type="dateTime" nillable="true" minOccurs="0" />
               </sequence>
            </extension>
         </complexContent>
      </complexType>
   </element>
   <element name="getUsageRecordsByIteratorResponse">
      <complexType>
         <complexContent>
            <extension base="co:IteratorResponse">
               <sequence>
                  <element type="ipb:ArrayOfUsageRecValue" name="results" />
                  <element name="recordDescriptor" type="cfi:RecordDescriptor" />
               </sequence>
            </extension>
         </complexContent>
      </complexType>
   </element>
   <element name="getUsageRecordsByIteratorException">
      <complexType>
         <choice>
            <element name="illegalArgumentException" type="co:IllegalArgumentException" />
            <element name="objectNotFoundException" type="co:ObjectNotFoundException" />
            <element name="unsupportedOperationException" type="co:UnsupportedOperationException" />
            <element name="remoteException" type="co:RemoteException" />
         </choice>
      </complexType>
   </element>
   <annotation>
      <documentation>Get the Iterator to the Usage Data Record Results Information.
 This introduces an extra level of indirection over the
 method {@link #getUsageRecordsByIterator}.
 
 This can be called by the client after it receives a
 UsageDataAvailableEvent notification or at anytime to
 retrieve a list of ReportInfo about the Usage Records in a Producer.
 The client passes the Producer Key to the
 Producer Session with additional parameters identifying
 date constraints for the results, to aid in possibly
 retrieving only newer information.
 &lt;p&gt;
 If beginTime parameter is not null, information for
 all the reports accumulated
 beginning from this date are returned by the iterator.
 If it is null, information for all the reports by this Activity 
 accumulated until the endDate is reached are returned.
 &lt;p&gt;
 If the endDate is specified, only Report Data collected until
 this endDate is returned. If it is null, all Report Data accumulated
 from the beginDate is returned.</documentation>
   </annotation>
   <element name="getUsageDataInformationRequest">
      <complexType>
         <complexContent>
            <extension base="co:IteratorRequest">
               <sequence>
                  <element name="producerKey" type="ipb:ProducerKey" nillable="true" minOccurs="0" />
                  <element name="filterValue" type="ipb:UsageRecFilterValue" minOccurs="0" />
                  <element name="beginDate" type="dateTime" nillable="true" minOccurs="0" />
                  <element name="endDate" type="dateTime" nillable="true" minOccurs="0" />
               </sequence>
            </extension>
         </complexContent>
      </complexType>
   </element>
   <element name="getUsageDataInformationResponse">
      <complexType>
         <complexContent>
            <extension base="co:IteratorResponse">
               <sequence>
                  <element type="cfi:ArrayOfReportInfo" name="results" />
               </sequence>
            </extension>
         </complexContent>
      </complexType>
   </element>
   <element name="getUsageDataInformationException">
      <complexType>
         <choice>
            <element name="illegalArgumentException" type="co:IllegalArgumentException" />
            <element name="objectNotFoundException" type="co:ObjectNotFoundException" />
            <element name="remoteException" type="co:RemoteException" />
         </choice>
      </complexType>
   </element>
   <annotation>
      <documentation>Get the Iterator to the Usage Data Results Information.
 This introduces an extra level of indirection over the
 method {@link #queryUsageRecords}.
 &lt;p&gt;
 This operations returns the Iterator to the ReportInfo values.
 This operation can be invoked by the client at any time
 during its life-time.
 &lt;p&gt;
 This operation returns an iterator to the multiple ReportInfo values.
 Each of the ReportInfo value can then be inspected by the client
 to discover the URL or stream information to the actual Usage Record
 Data on the System. Such approach can be used by the implementations
 that do not support Iterator based retrieval for direct Usage Record Data,
 but still want to allow the clients to query for the indirect
 Report Information about the Usage Data Records.</documentation>
   </annotation>
   <element name="queryUsageDataInformationRequest">
      <complexType>
         <complexContent>
            <extension base="co:IteratorRequest">
               <sequence>
                  <element name="queryValue" type="co:QueryValue" minOccurs="0" />
                  <element name="attributeNames" type="co:ArrayOfString" nillable="true" minOccurs="0" />
               </sequence>
            </extension>
         </complexContent>
      </complexType>
   </element>
   <element name="queryUsageDataInformationResponse">
      <complexType>
         <complexContent>
            <extension base="co:IteratorResponse">
               <sequence>
                  <element type="cfi:ArrayOfReportInfo" name="results" />
               </sequence>
            </extension>
         </complexContent>
      </complexType>
   </element>
   <element name="queryUsageDataInformationException">
      <complexType>
         <choice>
            <element name="illegalArgumentException" type="co:IllegalArgumentException" />
            <element name="objectNotFoundException" type="co:ObjectNotFoundException" />
            <element name="unsupportedOperationException" type="co:UnsupportedOperationException" />
            <element name="remoteException" type="co:RemoteException" />
         </choice>
      </complexType>
   </element>
   <complexType name="ProducerPrimaryKey">
      <annotation>
         <documentation>This interface encapsulates the &lt;CODE&gt;PrimaryKey&lt;/CODE&gt;
 of a &lt;CODE&gt;Producer&lt;/CODE&gt; entity.

 &lt;p&gt;
 The &lt;CODE&gt;PrimaryKey&lt;/CODE&gt; encapsulation  allows a &lt;CODE&gt;Producer&lt;/CODE&gt; entity to be
 uniquely identified with just one or
 a combination of two or more attributes and their values.
 This insulates the API as well as the implementations from having to 
 change each time a new attribute must be included to the definition of
 its &lt;CODE&gt;PrimaryKey&lt;/CODE&gt;.
 &lt;p&gt;
 This is the base interface for all &lt;CODE&gt;Producer&lt;/CODE&gt; primary key interfaces,
 with just the DN being defined as the key attribute for now.
 Any derived interfaces are free to add their own attributes.</documentation>
      </annotation>
      <complexContent>
         <extension base="cfi:ActivityPrimaryKey">
            <sequence>
               <element name="producerType" minOccurs="0" nillable="true" type="string" />
            </sequence>
         </extension>
      </complexContent>
   </complexType>
   <complexType name="MediationCapability">
      <annotation>
         <documentation>This defines the base descriptor interface for expressing of Mediation
 Capabilitties of a &lt;CODE&gt;Producer&lt;/CODE&gt; Entity.

 &lt;p&gt;
 More specialized sub interfaces can be implemented to add more capabilities.
 Also, by following OSS/J Value object pattern, each capability
 attribute has JavaBeans like get and set methods
 for access by client of this interface.

 &lt;p&gt;
 This interface is used by the &lt;CODE&gt;ProducerValue&lt;/CODE&gt; and
 &lt;CODE&gt;JVTProducerSession&lt;/CODE&gt; interfaces to
 return the mediation capabilities of a &lt;CODE&gt;Producer&lt;/CODE&gt; Entity.</documentation>
      </annotation>
      <sequence>
         <element name="name" minOccurs="0" nillable="true" type="string" />
         <element name="collectionCategories" minOccurs="0" nillable="true" type="co:ArrayOfString" />
         <element name="collectionFormat" minOccurs="0" nillable="true" type="string" />
         <element name="collectionFormatVersion" minOccurs="0" nillable="true" type="string" />
         <element name="collectionEncoding" minOccurs="0" nillable="true" type="string" />
         <element name="collectionSchema" minOccurs="0" nillable="true" type="ipb:UsageDataSchema" />
         <element name="outputFormats" minOccurs="0" nillable="true" type="co:ArrayOfString" />
         <element name="outputFormatVersions" minOccurs="0" nillable="true" type="co:ArrayOfObject" />
         <element name="outputEncodings" minOccurs="0" nillable="true" type="co:ArrayOfString" />
         <element name="outputSchemas" minOccurs="0" nillable="true" type="ipb:ArrayOfUsageDataSchema" />
         <element name="changeEventDecoder" minOccurs="0" nillable="true" type="ipb:MediationCapabilityChangeEventDecoder" />
      </sequence>
   </complexType>
   <complexType name="ProducerKeyResult">
      <annotation>
         <documentation>This interface encapsulates all the information necessary to indicate the
 result of a BEST EFFORT operations on a &lt;CODE&gt;Producer&lt;/CODE&gt; Managed Entity.

 &lt;p&gt;
 The &lt;CODE&gt;ProducerKeyResult&lt;/CODE&gt; is used in operations involving multiple
 &lt;CODE&gt;JVTProducerSession&lt;/CODE&gt; entities, for example, in the deletion or creation
 of multiple &lt;CODE&gt;Producer&lt;/CODE&gt; entities.

 &lt;p&gt;
 This interface defines additional type-safe methods specific
 to getting and setting of
 &lt;CODE&gt;ProducerKey&lt;/CODE&gt; attribute value, specific to this
 instances of this interface.</documentation>
      </annotation>
      <complexContent>
         <extension base="cfi:ActivityKeyResult">
            <sequence>
               <element name="producerKey" minOccurs="0" nillable="true" type="ipb:ProducerKey" />
            </sequence>
         </extension>
      </complexContent>
   </complexType>
   <complexType name="ProducerKey">
      <annotation>
         <documentation>A &lt;CODE&gt;ProducerKey&lt;/CODE&gt; is a unique identifier attribute, present for each
 &lt;CODE&gt;ProducerValue&lt;/CODE&gt; entity. It is used to identify a single
 &lt;CODE&gt;Producer&lt;/CODE&gt; entity.

 &lt;p&gt;
 The Type, ApplicationDN and ApplicationContext
 are included in super interface &lt;CODE&gt;ManagedEntityKey&lt;/CODE&gt;, because
 a &lt;CODE&gt;primaryKey&lt;/CODE&gt; is only unique within an
 application instance as given by the ApplicationDN running
 in a given naming system as given by the ApplicationContext::URL
 &lt;p&gt;
 The &lt;CODE&gt;ProducerPrimaryKey&lt;/CODE&gt; is the &lt;CODE&gt;primaryKey&lt;/CODE&gt;
 representation of the &lt;CODE&gt;ProducerKey&lt;/CODE&gt;. This interface is also
 the factory for creating the instances of &lt;CODE&gt;ProducerPrimaryKey&lt;/CODE&gt;.</documentation>
      </annotation>
      <complexContent>
         <extension base="cfi:ActivityKey">
            <sequence>
               <element name="producerPrimaryKey" minOccurs="0" nillable="true" type="ipb:ProducerPrimaryKey" />
            </sequence>
         </extension>
      </complexContent>
   </complexType>
   <complexType name="ArrayOfMediationCapability">
      <sequence>
         <element name="item" type="ipb:MediationCapability" nillable="true" minOccurs="0" maxOccurs="unbounded" />
      </sequence>
   </complexType>
   <complexType name="ArrayOfProducerKeyResult">
      <sequence>
         <element name="item" type="ipb:ProducerKeyResult" nillable="true" minOccurs="0" maxOccurs="unbounded" />
      </sequence>
   </complexType>
   <complexType name="ArrayOfProducerValue">
      <sequence>
         <element name="item" type="ipb:ProducerValue" nillable="true" minOccurs="0" maxOccurs="unbounded" />
      </sequence>
   </complexType>
   <complexType name="ArrayOfProducerKey">
      <sequence>
         <element name="item" type="ipb:ProducerKey" nillable="true" minOccurs="0" maxOccurs="unbounded" />
      </sequence>
   </complexType>
   <complexType name="ArrayOfUsageRecValue">
      <sequence>
         <element name="item" type="ipb:UsageRecValue" nillable="true" minOccurs="0" maxOccurs="unbounded" />
      </sequence>
   </complexType>
   <complexType name="ArrayOfTransferStatusValue">
      <sequence>
         <element name="item" type="ipb:TransferStatusValue" nillable="true" minOccurs="0" maxOccurs="unbounded" />
      </sequence>
   </complexType>
   <complexType name="ArrayOfUsageDataSchema">
      <sequence>
         <element name="item" type="ipb:UsageDataSchema" nillable="true" minOccurs="0" maxOccurs="unbounded" />
      </sequence>
   </complexType>
</schema>
