6 Appendix A: Full WSDL
For ease of implementation, the full WSDL is provided below. After the full WSDL, a binding is included for using the Resource and ResourceFactory port types with SOAP 1.2 [SOAP1.2-1/2003] over the "net.tcp" transport [MC-NMF]. This binding is included to illustrate how the IdentityManagementOperation SOAP header is used in the SOAP messages and should not be construed to restrict servers from implementing the IMDA protocol extensions using other versions of SOAP or over other transports.
Full WSDL.
[SOAP]
-
<?xml version="1.0" encoding="utf-8"?> <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://schemas.microsoft.com/2006/11/IdentityManagement/DirectoryAccess" xmlns:da="http://schemas.microsoft.com/2006/11/IdentityManagement/DirectoryAccess" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:wxf="http://schemas.xmlsoap.org/ws/2004/09/transfer" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12" > <wsdl:types> <xsd:schema> <xsd:import namespace="http://schemas.xmlsoap.org/ws/2004/09/transfer" /> </xsd:schema> <xsd:schema elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2006/11/IdentityManagement/DirectoryAccess"> <xsd:complexType name="ExtensibleType"> <xsd:complexContent mixed="true"> <xsd:restriction base="xsd:anyType"> <xsd:sequence> <xsd:any processContents="lax" minOccurs="0" maxOccurs="unbounded" /> </xsd:sequence> </xsd:restriction> </xsd:complexContent> </xsd:complexType> <xsd:element name="AttributeType"> <xsd:complexType> <xsd:complexContent> <xsd:extension base="da:ExtensibleType" /> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:complexType name="ValueXmlType"> <xsd:complexContent> <xsd:extension base="da:ExtensibleType" /> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="PartialAttributeXmlType"> <xsd:complexContent> <xsd:extension base="da:ExtensibleType" /> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="AttributeTypeAndValueXmlType"> <xsd:sequence> <xsd:element ref="da:AttributeType" minOccurs="1" maxOccurs="1" /> <xsd:element name="AttributeValue" type="da:ValueXmlType" minOccurs="0" maxOccurs="1" /> </xsd:sequence> </xsd:complexType> <xsd:element name="AttributeTypeAndValue" type="da:AttributeTypeAndValueXmlType" /> <xsd:element name="BaseObjectSearchRequest"> <xsd:complexType> <xsd:sequence> <xsd:element ref="da:AttributeType" minOccurs="0" maxOccurs="unbounded" /> </xsd:sequence> <xsd:attribute name="Dialect" type="xsd:anyURI" /> </xsd:complexType> </xsd:element> <xsd:element name="BaseObjectSearchResponse"> <xsd:complexType> <xsd:sequence> <xsd:element name="PartialAttribute" type="da:PartialAttributeXmlType" minOccurs="1" maxOccurs="unbounded" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="AddRequest"> <xsd:complexType> <xsd:sequence> <xsd:element ref="da:AttributeTypeAndValue" minOccurs="0" maxOccurs="unbounded" /> </xsd:sequence> <xsd:attribute name="Dialect" type="xsd:anyURI" /> </xsd:complexType> </xsd:element> <xsd:simpleType name="OperationXmlType"> <xsd:restriction base="xsd:NMTOKEN"> <xsd:enumeration value="add" /> <xsd:enumeration value="delete" /> <xsd:enumeration value="replace" /> </xsd:restriction> </xsd:simpleType> <xsd:element name="Change" > <xsd:complexType> <xsd:complexContent> <xsd:extension base="da:AttributeTypeAndValueXmlType"> <xsd:attribute name="Operation" type="da:OperationXmlType" use="required" /> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:element name="ModifyRequest"> <xsd:complexType> <xsd:sequence> <xsd:element ref="da:Change" minOccurs="0" maxOccurs="unbounded" /> </xsd:sequence> <xsd:attribute name="Dialect" type="xsd:anyURI" /> </xsd:complexType> </xsd:element> <xsd:element name="IdentityManagementOperation" /> <xsd:element name="AttributeTypeOrValueAlreadyExists"> <xsd:complexType> <xsd:sequence> <xsd:element ref="da:AttributeTypeAndValue" minOccurs="0" maxOccurs="unbounded" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="AttributeTypeNotValidForDialect"> <xsd:complexType> <xsd:sequence> <xsd:element ref="da:AttributeType" minOccurs="1" maxOccurs="unbounded" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="AttributeTypeNotValidForEntry"> <xsd:complexType> <xsd:sequence> <xsd:element ref="da:AttributeType" minOccurs="1" maxOccurs="unbounded" /> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> </wsdl:types> <wsdl:message name="BaseObjectSearchRequestMessage"> <wsdl:part name="BaseObjectSearchRequestMessageBody" element="da:BaseObjectSearchRequest"/> </wsdl:message> <wsdl:message name="BaseObjectSearchResponseMessage"> <wsdl:part name="BaseObjectSearchResponseMessageBody" element="da:BaseObjectSearchResponse"/> </wsdl:message> <wsdl:message name="AddRequestMessage"> <wsdl:part name="AddRequestMessageBody" element="da:AddRequest"/> </wsdl:message> <wsdl:message name="AddResponseMessage"> <wsdl:part name="AddResponseMessageBody" element="wxf:ResourceCreated"/> </wsdl:message> <wsdl:message name="ModifyRequestMessage"> <wsdl:part name="ModifyRequestMessageBody" element="da:ModifyRequest"/> </wsdl:message> <wsdl:message name="ModifyResponseMessage" /> <wsdl:message name="DeleteRequestMessage" /> <wsdl:message name="DeleteResponseMessage" /> <wsdl:message name="IdentityOperationManagementMessage_Header"> <wsdl:part name="request_header" element="da:IdentityManagementOperation" /> </wsdl:message> <wsdl:portType name="Resource"> <wsdl:documentation> This is the port for reading, modifying and deleting an identity object. </wsdl:documentation> <wsdl:operation name="Get"> <wsdl:input message="da:BaseObjectSearchRequestMessage" wsa:Action="http://schemas.xmlsoap.org/ws/2004/09/transfer/Get" /> <wsdl:output message="da:BaseObjectSearchResponseMessage" wsa:Action="http://schemas.xmlsoap.org/ws/2004/09/transfer/GetResponse" /> </wsdl:operation> <wsdl:operation name="Put"> <wsdl:input message="da:ModifyRequestMessage" wsa:Action="http://schemas.xmlsoap.org/ws/2004/09/transfer/Put" /> <wsdl:output message="da:ModifyResponseMessage" wsa:Action="http://schemas.xmlsoap.org/ws/2004/09/transfer/PutResponse" /> </wsdl:operation> <wsdl:operation name="Delete"> <wsdl:input message="da:DeleteRequestMessage" wsa:Action="http://schemas.xmlsoap.org/ws/2004/09/transfer/Delete" /> <wsdl:output message="da:DeleteResponseMessage" wsa:Action="http://schemas.xmlsoap.org/ws/2004/09/transfer/DeleteResponse" /> </wsdl:operation> </wsdl:portType> <wsdl:portType name="ResourceFactory"> <wsdl:documentation> This is the port for creating a new identity object. </wsdl:documentation> <wsdl:operation name="Create"> <wsdl:input message="da:AddRequestMessage" wsa:Action="http://schemas.xmlsoap.org/ws/2004/09/transfer/Create" /> <wsdl:output message="da:AddResponseMessage" wsa:Action="http://schemas.xmlsoap.org/ws/2004/09/transfer/CreateResponse" /> </wsdl:operation> </wsdl:portType> </wsdl:definitions>
Binding for using the Resource and ResourceFactory port types with [SOAP1.2-1/2003] over the "net.tcp" transport [MC-NMF]:
-
<wsdl:binding name="NetTcpBinding_Resource" type="Resource"> <wsdl:documentation> Binding for the Resource port type on the net.tcp transport using SOAP 1.2. </wsdl:documentation> <soap12:binding transport="http://schemas.microsoft.com/soap/tcp" /> <wsdl:operation name="Get"> <soap12:operation soapAction="http://schemas.xmlsoap.org/ws/2004/09/transfer/Get" style="document" /> <wsdl:input> <soap12:header message="da:IdentityOperationManagementMessage_Header" part="request_header" use="literal" /> <soap12:body use="literal" /> </wsdl:input> <wsdl:output> <soap12:body use="literal" /> </wsdl:output> </wsdl:operation> <wsdl:operation name="Put"> <soap12:operation soapAction="http://schemas.xmlsoap.org/ws/2004/09/transfer/Put" style="document" /> <wsdl:input> <soap12:header message="da:IdentityOperationManagementMessage_Header" part="request_header" use="literal" /> <soap12:body use="literal" /> </wsdl:input> <wsdl:output> <soap12:body use="literal" /> </wsdl:output> </wsdl:operation> <wsdl:operation name="Delete"> <soap12:operation soapAction="http://schemas.xmlsoap.org/ws/2004/09/transfer/Delete" style="document" /> <wsdl:input> <soap12:body use="literal" /> </wsdl:input> <wsdl:output> <soap12:body use="literal" /> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:binding name="NetTcpBinding_ResourceFactory" type="ResourceFactory"> <wsdl:documentation> Binding for the ResourceFactory port type on the net.tcp transport using SOAP 1.2. </wsdl:documentation> <soap12:binding transport="http://schemas.microsoft.com/soap/tcp" /> <wsdl:operation name="Create"> <soap12:operation soapAction="http://schemas.xmlsoap.org/ws/2004/09/transfer/Create" style="document" /> <wsdl:input> <soap12:header message="da:IdentityOperationManagementMessage_Header" part="request_header" use="literal" /> <soap12:body use="literal" /> </wsdl:input> <wsdl:output> <soap12:body use="literal" /> </wsdl:output> </wsdl:operation> </wsdl:binding>