<?xml version="1.0" encoding="UTF-8"?>
<!-- 
  Legal Disclaimer

  Copyright Notice

   (c) Copyright Computer Associates International, Inc., 
       Fujitsu Limited, Hewlett-Packard Development Company, 
       International Business Machines Corporation and 
       The University of Chicago 2003, 2004. All Rights Reserved. 
-->

<wsdl:definitions name="ServiceGroup"
  xmlns="http://schemas.xmlsoap.org/wsdl/" 
  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:wsa="http://schemas.xmlsoap.org/ws/2003/03/addressing" 
  xmlns:wsbf=
   "http://www.ibm.com/xmlns/stdwip/web-services/WS-BaseFaults"   
  xmlns:wsrp=
   "http://www.ibm.com/xmlns/stdwip/web-services/WS-ResourceProperties"
  xmlns:wsrl=
    "http://www.ibm.com/xmlns/stdwip/web-services/WS-ResourceLifetime" 
  xmlns:wssg=
    "http://www.ibm.com/xmlns/stdwip/web-services/WS-ServiceGroup"
  targetNamespace=
    "http://www.ibm.com/xmlns/stdwip/web-services/WS-ServiceGroup">

<!-- ========================== Imports =========================== --> 
   <wsdl:import 
     namespace=
"http://www.ibm.com/xmlns/stdwip/web-services/WS-ResourceProperties" 
     location=
"http://www-106.ibm.com/developerworks/webservices/library/ws-resource/WS-ResourceProperties.wsdl" />
 
   <wsdl:import 
     namespace=
 "http://www.ibm.com/xmlns/stdwip/web-services/WS-ResourceLifetime" 
     location=
"http://www-106.ibm.com/developerworks/webservices/library/ws-resource/WS-ResourceLifetime.wsdl" />
    
<!-- ===================== Types Definitions ====================== -->
   <wsdl:types>
      <xsd:schema 
        targetNamespace=
        "http://www.ibm.com/xmlns/stdwip/web-services/WS-ServiceGroup">

        <xsd:include schemaLocation=
"http://www-106.ibm.com/developerworks/webservices/library/ws-resource/WS-ServiceGroup.xsd" />

        <xsd:import 
           namespace=
  "http://www.ibm.com/xmlns/stdwip/web-services/WS-ResourceLifetime"
           schemaLocation=
  "http://www-106.ibm.com/developerworks/webservices/library/ws-resource/WS-ResourceLifetime.xsd" 
        />

       <xsd:import namespace=
"http://www.ibm.com/xmlns/stdwip/web-services/WS-ResourceProperties" 
        schemaLocation= 
"http://www-106.ibm.com/developerworks/webservices/library/ws-resource/WS-ResourceProperties.xsd" 
       />

       <xsd:import 
          namespace=
       "http://www.ibm.com/xmlns/stdwip/web-services/WS-BaseFaults"
          schemaLocation=
  "http://www-106.ibm.com/developerworks/webservices/library/ws-resource/WS-BaseFaults.xsd" 
       />
        

<!-- =============== Resource Property Related  =================== -->
<!-- ============ Resource Properties for ServiceGroup ============ -->
        <xsd:element name="ServiceGroupRP">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element ref="wssg:MembershipContentRule"
                           minOccurs="0" maxOccurs="unbounded"/>
              <xsd:element ref="wssg:Entry" 
                           minOccurs="0" maxOccurs="unbounded"/>
            </xsd:sequence>
          </xsd:complexType>
          <xsd:unique name="UniqueInterfaces">
            <xsd:selector 
               xpath="./*MembershipContentRule
              [namespace-uri()='http://www.ibm.com/xmlns/stdwip/web-services/WS-ServiceGroup']"/>
            <xsd:field xpath="@MemberInterface"/>
          </xsd:unique>
        </xsd:element>

<!-- ========== Resource Properties for ServiceGroupEntry ========= -->   
        <xsd:element name="ServiceGroupEntryRP">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element ref="wssg:ServiceGroupEPR" 
                           minOccurs="1" maxOccurs="1"/>
              <xsd:element ref="wssg:MemberEPR" 
                           minOccurs="1" maxOccurs="1"/>
              <xsd:element ref="wssg:Content" 
                           minOccurs="1" maxOccurs="1"/>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>

<!-- ================= Message Specific Types  ==================== -->      
<!-- ======== Message Types for ServiceGroupRegistration  ========= -->
        <xsd:element name="Add">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="MemberEPR" 
                           type="wsa:EndpointReferenceType" />
              <xsd:element name="Content" 
                           type="xsd:anyType" />
              <xsd:element name="InitialTerminationTime" 
                           type="xsd:dateTime"
                           minOccurs="0" maxOccurs="1" />
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>

        <xsd:element name="AddResponse" 
                     type="wsa:EndpointReferenceType" />
                     
        <xsd:complexType name="ContentCreationFailedFaultType">
          <xsd:complexContent>
            <xsd:extension base="wsbf:BaseFaultType"/>
          </xsd:complexContent>
        </xsd:complexType>
        <xsd:element name="ContentCreationFailedFault" 
                     type="wssg:ContentCreationFailedFaultType"/>

        <xsd:complexType name="UnsupportedMemberInterfaceFaultType">
          <xsd:complexContent>
            <xsd:extension base="wsbf:BaseFaultType"/>
          </xsd:complexContent>
        </xsd:complexType>
        <xsd:element name="UnsupportedMemberInterfaceFault" 
                     type="wssg:UnsupportedMemberInterfaceFaultType"/>

        <xsd:complexType name="AddRefusedFaultType">
          <xsd:complexContent>
            <xsd:extension base="wsbf:BaseFaultType"/>
          </xsd:complexContent>
        </xsd:complexType>
        <xsd:element name="AddRefusedFault" 
                     type="wssg:AddRefusedFaultType"/>
                     
    </xsd:schema>
  </wsdl:types>

<!-- ==================== Message Definitions ===================== -->
<!-- =============== ServiceGroupRegistration::Add ================ 
  Add(MemberEPR, Content, [InitialTerminationTime])
  returns: EPR to ServiceGroupEntry
-->
  <wsdl:message name="AddRequest">
    <wsdl:part name="AddRequest" element="wssg:Add"/>
  </wsdl:message>
  
  <wsdl:message name="AddResponse">
    <wsdl:part name="AddResponse" element="wssg:AddResponse"/>
  </wsdl:message>
 
  <wsdl:message name="ContentCreationFailedFault">
    <wsdl:part name="ContentCreationFailedFault" 
               element="wssg:ContentCreationFailedFault" />
  </wsdl:message>

  <wsdl:message name="UnsupportedMemberInterfaceFault">
    <wsdl:part name="UnsupportedMemberInterfaceFault" 
               element="wssg:UnsupportedMemberInterfaceFault" />
  </wsdl:message>

  <wsdl:message name="AddRefusedFault">
    <wsdl:part name="AddRefusedFault" 
               element="wssg:AddRefusedFault" />
  </wsdl:message>

<!-- =================== PortType Definitions ===================== -->  
  <wsdl:portType name="ServiceGroup"
            wsrp:ResourceProperties="wssg:ServiceGroupRP">
  <!-- ========== extends wsrp:ResourceProperties ============= -->
    <wsdl:operation name="GetResourceProperty">
      <wsdl:input name="GetResourcePropertyRequest" 
            message="wsrp:GetResourcePropertyRequest" />
      <wsdl:output name="GetResourcePropertyResponse" 
            message="wsrp:GetResourcePropertyResponse" />
      <wsdl:fault name="ResourceUnknownFault" 
            message="wsrp:ResourceUnknownFault" />
      <wsdl:fault name="InvalidResourcePropertyQNameFault" 
            message="wsrp:InvalidResourcePropertyQNameFault" />   
    </wsdl:operation>
  </wsdl:portType>

  <wsdl:portType name="ServiceGroupEntry"
                 wsrp:ResourceProperties="wssg:ServiceGroupEntryRP">
    <!-- ========== extends wsrp:ResourceProperties ============= -->
    <wsdl:operation name="GetResourceProperty">
      <wsdl:input name="GetResourcePropertyRequest" 
                  message="wsrp:GetResourcePropertyRequest" />
      <wsdl:output name="GetResourcePropertyResponse" 
                   message="wsrp:GetResourcePropertyResponse" />
      <wsdl:fault name="ResourceUnknownFault" 
                  message="wsrp:ResourceUnknownFault" />
      <wsdl:fault name="InvalidResourcePropertyQNameFault" 
                  message="wsrp:InvalidResourcePropertyQNameFault" />   
    </wsdl:operation>
  </wsdl:portType>

  <wsdl:portType name="ServiceGroupRegistration"
                 wsrp:ResourceProperties="wssg:ServiceGroupRP">
    <!-- ========== extends wsrp:ResourceProperties ============= -->
    <wsdl:operation name="GetResourceProperty">
      <wsdl:input name="GetResourcePropertyRequest" 
                  message="wsrp:GetResourcePropertyRequest" />
      <wsdl:output name="GetResourcePropertyResponse" 
                  message="wsrp:GetResourcePropertyResponse" />
      <wsdl:fault name="ResourceUnknownFault" 
                  message="wsrp:ResourceUnknownFault" />
      <wsdl:fault name="InvalidResourcePropertyQNameFault" 
                  message="wsrp:InvalidResourcePropertyQNameFault" />       
        </wsdl:operation>
    <wsdl:operation name="Add">
      <wsdl:input name="AddRequest" message="wssg:AddRequest"/>
      <wsdl:output name="AddResponse" message="wssg:AddResponse"/>
      <wsdl:fault name="ContentCreationFailedFault" 
                  message="wssg:ContentCreationFailedFault"/>
      <wsdl:fault name="UnsupportedMemberInterfaceFault" 
                  message="wssg:UnsupportedMemberInterfaceFault"/>      
      <wsdl:fault name="AddRefusedFault" 
                  message="wssg:AddRefusedFault"/>      
    </wsdl:operation>
  </wsdl:portType>

</wsdl:definitions>
