Download





Operation Definitions and Payloads

This section defines all the operations in the Publishing API in terms of their WSDL portType and message definitions and SOAP payloads (the XML schema document complex types referred to by the message definitions.)

Listings in this section show the complex types of most payloads, but a few types were defined in Chapters 6 and 7 and are not redefined here. These include the five primary data structures (businessEntity, bindingTemplate, and so on) defined in Chapter 6, as well as the xxxInfos types addressed in Section 7.2.1.3.1. You'll also see definitions of three element types that are reused in many of the messages: dispositionReport, result, and authInfo.[1] The dispositionReport and result types are used for response messages to delete operations as well as for error messages. The authInfo type, which contains the authentication token, is included in every publisher request message except get_authToken. These elements and their corresponding complex types are defined in Listing 8-1. You don't need to examine this listing now; just refer to it as needed.

[1] There is also an element called uploadRegister, but this isn't used in UDDI version 2.0 or its successors.

-1 Common XML Schema Elements and Complex Types
<schema targetNamespace="urn:uddi-org:api_v2"
            xmlns="http://www.w3.org/2001/XMLSchema"
            xmlns:uddi="urn:uddi-org:api_v2"
            version="2.03" id="uddi">
  ...
  <xsd:element name="authInfo" type="string"/>

  <xsd:element name="dispositionReport" type="uddi:dispositionReport"/>
  <xsd:complexType name="dispositionReport">
    <xsd:sequence>
      <xsd:element ref="uddi:result" maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="generic" type="string" use="required"/>
    <xsd:attribute name="operator" type="string" use="required"/>
    <xsd:attribute name="truncated" type="uddi:truncated" use="optional"/>
  </xsd:complexType>

  <xsd:element name="result" type="uddi:result"/>
  <xsd:complexType name="result">
    <xsd:sequence>
      <xsd:element ref="uddi:errInfo" minOccurs="0"/>
    </xsd:sequence>
    <xsd:attribute name="keyType" type="uddi:keyType" use="optional"/>
    <xsd:attribute name="errno" type="int" use="required"/>
  </xsd:complexType>
  ...
</schema>

1 Authorization Operations

Before you can publish anything to a UDDI registry, you have to enroll with a specific UDDI operator. Enrolling with a private UDDI registry may involve some red tape within the organization that runs it. Enrolling with one of the Universal Business Registry (UBR) operators (IBM, Microsoft, SAP, or NTT) requires that you go to one of the operators' Web sites, fill out a form about your organization, and choose a user-id and password.

Once you've enrolled, you can use your user-id and password to log in, then use the Publishing APIs to add, modify, and delete data in the UDDI registry. Actually, the type of credential used may not be a user-id and password; it could be based on a public-key certificate or Kerberos ticket or whatever the operator prefers. All four of the UBR operators are currently using user-ids and passwords to authenticate—when combined with Secure Sockets Layer it's a pretty secure way to authenticate a client. There are two authorization operations:

  1. get_authToken logs you into the registry.

  2. discard_authToken logs you out of the registry.

Response messages will include the operator attribute, which provides the URI of the UDDI operator you are querying.

Only the authenticated party that created a data structure in a UDDI registry is permitted to modify or delete that data structure using the Publishing API.

8.1.1.1 The get_authToken Operation

UDDI operators are not required to support the get_authToken operation; a token or certificate can be issued using other mechanisms. Where operators do support get_authToken, as the UBR operators do, the client must invoke it before starting a publishing session. To start a publishing session with a UDDI operator, you first establish an HTTPS connection with the UDDI registry and then send it a get_authToken SOAP message containing your login credentials (usually user-id and password). If your credentials pass authentication, then the reply message will contain an authorization token, which you must send back to the UDDI registry in all subsequent SOAP messages for the duration of your connection.

Type Definitions
<schema targetNamespace="urn:uddi-org:api_v2"
            xmlns="http://www.w3.org/2001/XMLSchema"
            xmlns:uddi="urn:uddi-org:api_v2"
            version="2.03" id="uddi">
  ...

  <!-- Request Structure -->
  <xsd:element name="get_authToken" type="uddi:get_authToken"/>
  <xsd:complexType name="get_authToken">
    <xsd:attribute name="generic" type="string" use="required"/>
    <xsd:attribute name="userID" type="string" use="required"/>
    <xsd:attribute name="cred" type="string" use="required"/>
  </xsd:complexType>

  <!-- Response Structure -->
  <xsd:element name="authToken" type="uddi:authToken"/>
  <xsd:complexType name="authToken">
    <xsd:sequence>
      <xsd:element ref="uddi:authInfo"/>
    </xsd:sequence>
    <xsd:attribute name="generic" type="string" use="required"/>
    <xsd:attribute name="operator" type="string" use="required"/>
  </xsd:complexType>
...
</schema>
WSDL message and portType Definitions
<definitions ...
  xmlns="http://schemas.xmlsoap.org/wsdl/"
  xmlns:uddi="urn:uddi-org:api_v2">
  ...
  <message name="get_authToken">
    <part name="body" element="uddi:get_authToken"/>
  </message>
  <message name="authToken">
    <part name="body" element="uddi:authToken"/>
  </message>

  ...
  <portType name="Publish">
    ...
    <operation name="get_authToken">
      <input message="tns:get_authToken" />
      <output message="tns:authToken" />
      <fault name="error" message="tns:dispositionReport" />
    </operation>
    ...
  </portType>
  ...
</definitions>
8.1.1.2 The discard_authToken Operation

When you are finished accessing the UDDI Publishing endpoint, you can terminate your session by sending a discard_authToken message. The registry will then invalidate your authorization token. Further access with that token will cause an error, so your session is effectively ended. If the discard_authToken is never sent, the session will simply time out, which also invalidates the authorization token.

Type Definitions
<schema targetNamespace="urn:uddi-org:api_v2"
            xmlns="http://www.w3.org/2001/XMLSchema"
            xmlns:uddi="urn:uddi-org:api_v2"
            version="2.03" id="uddi">
  ...

  <!-- Request Structure -->
  <xsd:element name="discard_authToken" type="uddi:discard_authToken"/>
  <xsd:complexType name="discard_authToken">
    <xsd:sequence>
      <xsd:element ref="uddi:authInfo"/>
    </xsd:sequence>
    <xsd:attribute name="generic" type="string" use="required"/>
  </xsd:complexType>
...
</schema>
WSDL message and portType Definitions
<definitions ...
  xmlns="http://schemas.xmlsoap.org/wsdl/"
  xmlns:uddi="urn:uddi-org:api_v2">
  ...
  <message name="discard_authToken">
    <part name="body" element="uddi:discard_authToken"/>
  </message>
  <message name="dispositionReport">
    <part name="body" element="uddi:dispositionReport"/>
  </message>

  ...
  <portType name="Publish">
    ...
    <operation name="discard_authToken">
      <input message="tns:discard_authToken" />
      <output message="tns:dispositionReport" />
      <fault name="error" message="tns:dispositionReport" />
    </operation>
    ...
  </portType>
  ...
</definitions>

2 Save Operations

The save operations allow you to add or update information in the UDDI registry. Each of the five primary data structures has a corresponding save operation except publisherAssertion, which has special add and set operations:

  • save_business adds or updates one or more businessEntity entries.

  • save_service adds or updates one or more businessService entries.

  • save_binding adds or updates one or more bindingTemplate entries.

  • save_tModel adds or updates one or more tModel entries.

  • add_publisherAssertions adds one or more publisherAssertion entries.

  • set_publisherAssertions updates one or more publisherAssertion entries.

The SOAP request and response messages used for the save operations all take the same basic form: The request message carries one or more primary data structures to be added or updated, while the response returns the data structures that were successfully updated or added. To update any part of a data structure, you have to submit the whole thing; you cannot update a single field. SOAP request messages for save operations all look much the same:

<?xml version="1.0" encoding="UTF-8" ?>
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
  <Body>
    <save_something generic="2.0" xmlns="urn:uddi-org:api_v2">
      <authInfo>...</authInfo>
      <some-data-structure>...<some-data-structure>
      <some-data-structure>...<some-data-structure>
      ...
    </save_something>
  </Body>
</Envelope>

The response message, provided it's not a SOAP fault, returns the data structures that were updated, as shown in the following listing.

<?xml version="1.0" encoding="UTF-8" ?>
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
  <Body>
    <somethingDetail generic="2.0" operator="operatorURI"
                     xmlns="urn:uddi-org:api_v2">
      <some-data-structure>...<some-data-structure>
      <some-data-structure>...<some-data-structure>
      ...
    </somethingDetail>
  </Body>
</Envelope>

Response messages include the operator attribute, which provides the URI of the UDDI operator you are querying, and possibly a truncation attribute, which indicates that the data returned was too large and was truncated.

The rest of this section provides more details on each of the save operations, and on the add_publisherAssertions and set_publisherAssertions operations. For each, you'll see the schema of the operation's XML payload and the relevant WSDL definitions. The schemas have been edited to remove the uploadRegister element, because it's no longer used.

8.1.2.1 The save_business Operation

The save_business operation adds or updates one or more businessEntity data structures in a UDDI registry.

Type Definitions
<schema targetNamespace="urn:uddi-org:api_v2"
            xmlns="http://www.w3.org/2001/XMLSchema"
            xmlns:uddi="urn:uddi-org:api_v2"
            version="2.03" id="uddi">
  ...

  <!-- Request Structure -->
  <xsd:element name="save_business" type="uddi:save_business"/>
  <xsd:complexType name="save_business">
    <xsd:sequence>
      <xsd:element ref="uddi:authInfo"/>
      <xsd:element ref="uddi:businessEntity" minOccurs="0"
                   maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="generic" type="string" use="required"/>
  </xsd:complexType>

  <!-- Response Structure -->
  <xsd:element name="businessDetail" type="uddi:businessDetail"/>
  <xsd:complexType name="businessDetail">
    <xsd:sequence>
      <xsd:element ref="uddi:businessEntity" minOccurs="0"
                   maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="generic" type="string" use="required"/>
    <xsd:attribute name="operator" type="string" use="required"/>
    <xsd:attribute name="truncated" type="uddi:truncated" use="optional"/>
  </xsd:complexType>
...
</schema>
WSDL message and portType Definitions
<definitions ...
  xmlns="http://schemas.xmlsoap.org/wsdl/"
  xmlns:uddi="urn:uddi-org:api_v2">
  ...
  <message name="save_business">
    <part name="body" element="uddi:save_business"/>
  </message>
  <message name="">
    <part name="body" element="uddi:businessDetail"/>
  </message>

  ...
  <portType name="Publish">
    ...
     <operation name="save_business">
      <input message="tns:save_business" />
      <output message="tns:businessDetail" />
      <fault name="error" message="tns:dispositionReport" />
    </operation>
    ...
  </portType>
  ...
</definitions>
8.1.2.2 The save_service Operation

The save_service operation adds or updates one or more businessService data structures in a UDDI registry.

Type Definitions
<schema targetNamespace="urn:uddi-org:api_v2"
            xmlns="http://www.w3.org/2001/XMLSchema"
            xmlns:uddi="urn:uddi-org:api_v2"
            version="2.03" id="uddi">
  ...

  <!-- Request Structure -->
  <xsd:element name="save_service" type="uddi:save_service"/>
  <xsd:complexType name="save_service">
    <xsd:sequence>
      <xsd:element ref="uddi:authInfo"/>
      <xsd:element ref="uddi:businessService" maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="generic" type="string" use="required"/>
  </xsd:complexType>

  <!-- Response Structure -->
  <xsd:element name="serviceDetail" type="uddi:serviceDetail"/>
  <xsd:complexType name="serviceDetail">
    <xsd:sequence>
      <xsd:element ref="uddi:businessService" minOccurs="0"
                   maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="generic" type="string" use="required"/>
    <xsd:attribute name="operator" type="string" use="required"/>
    <xsd:attribute name="truncated" type="uddi:truncated" use="optional"/>
  </xsd:complexType>
...
</schema>
WSDL message and portType Definitions
<definitions ...
  xmlns="http://schemas.xmlsoap.org/wsdl/"
  xmlns:uddi="urn:uddi-org:api_v2">
  ...
  <message name="save_service">
    <part name="body" element="uddi:save_service"/>
  </message>
  <message name="serviceDetail">
    <part name="body" element="uddi:serviceDetail"/>
  </message>

  ...
  <portType name="Publish">
    ...
    <operation name="save_service">
      <input message="tns:save_service" />
      <output message="tns:serviceDetail" />
      <fault name="error" message="tns:dispositionReport" />
    </operation>
    ...
  </portType>
  ...
</definitions>
8.1.2.3 The save_binding Operation

The save_binding operation adds or updates one or more bindingTemplate data structures in a UDDI registry.

Type Definitions
<schema targetNamespace="urn:uddi-org:api_v2"
            xmlns="http://www.w3.org/2001/XMLSchema"
            xmlns:uddi="urn:uddi-org:api_v2"
            version="2.03" id="uddi">
  ...

  <!-- Request Structure -->
  <xsd:element name="save_binding" type="uddi:save_binding"/>
  <xsd:complexType name="save_binding">
    <xsd:sequence>
      <xsd:element ref="uddi:authInfo"/>
      <xsd:element ref="uddi:bindingTemplate" maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="generic" type="string" use="required"/>
  </xsd:complexType>

  <!-- Response Structure -->
  <xsd:element name="bindingDetail" type="uddi:bindingDetail"/>
  <xsd:complexType name="bindingDetail">
    <xsd:sequence>
      <xsd:element ref="uddi:bindingTemplate" minOccurs="0"
                   maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="generic" type="string" use="required"/>
    <xsd:attribute name="operator" type="string" use="required"/>
    <xsd:attribute name="truncated" type="uddi:truncated" use="optional"/>
  </xsd:complexType>
...
</schema>
WSDL message and portType Definitions
<definitions ...
  xmlns="http://schemas.xmlsoap.org/wsdl/"
  xmlns:uddi="urn:uddi-org:api_v2">
  ...
  <message name="save_binding">
    <part name="body" element="uddi:save_binding"/>
  </message>
  <message name="bindingDetail">
    <part name="body" element="uddi:bindingDetail"/>
  </message>

  ...
  <portType name="Publish">
    ...
    <operation name="save_binding">
      <input message="tns:save_binding" />
      <output message="tns:bindingDetail" />
      <fault name="error" message="tns:dispositionReport" />
    </operation>
    ...
  </portType>
  ...
</definitions>
8.1.2.4 The save_tModel Operation

The save_tModel operation adds or updates one or more tModel data structures in a UDDI registry.

Type Definitions
<schema targetNamespace="urn:uddi-org:api_v2"
            xmlns="http://www.w3.org/2001/XMLSchema"
            xmlns:uddi="urn:uddi-org:api_v2"
            version="2.03" id="uddi">
  ...

  <!-- Request Structure -->
  <xsd:element name="save_tModel" type="uddi:save_tModel"/>
  <xsd:complexType name="save_tModel">
    <xsd:sequence>
      <xsd:element ref="uddi:authInfo"/>
      <xsd:element ref="uddi:tModel" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="generic" type="string" use="required"/>
  </xsd:complexType>

  <!-- Response Structure -->
  <xsd:element name="tModelDetail" type="uddi:tModelDetail"/>
  <xsd:complexType name="tModelDetail">
    <xsd:sequence>
      <xsd:element ref="uddi:tModel" maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="generic" type="string" use="required"/>
    <xsd:attribute name="operator" type="string" use="required"/>
    <xsd:attribute name="truncated" type="uddi:truncated" use="optional"/>
  </xsd:complexType>
...
</schema>
WSDL message and portType Definitions
<definitions ...
  xmlns="http://schemas.xmlsoap.org/wsdl/"
  xmlns:uddi="urn:uddi-org:api_v2">
  ...
  <message name="save_tModel">
    <part name="body" element="uddi:save_tModel"/>
  </message>
  <message name="tModelDetail">
    <part name="body" element="uddi:tModelDetail"/>
  </message>

  ...
  <portType name="Publish">
    ...
    <operation name="save_tModel">
      <input message="tns:save_tModel" />
      <output message="tns:tModelDetail" />
      <fault name="error" message="tns:dispositionReport" />
    </operation>
    ...
  </portType>
  ...
</definitions>
8.1.2.5 The add_publisherAssertions Operation

The add_publisherAssertions operation adds one or more publisherAssertion data structures to a UDDI registry. Recall from Section 6.4 that a publisherAssertion is not valid and visible until both parties submit assertions with the same data.

Type Definitions
<schema targetNamespace="urn:uddi-org:api_v2"
            xmlns="http://www.w3.org/2001/XMLSchema"
            xmlns:uddi="urn:uddi-org:api_v2"
            version="2.03" id="uddi">
  ...

  <!-- Request Structure -->
  <xsd:element name="add_publisherAssertions"
               type="uddi:add_publisherAssertions"/>
  <xsd:complexType name="add_publisherAssertions">
    <xsd:sequence>
      <xsd:element ref="uddi:authInfo"/>
      <xsd:element ref="uddi:publisherAssertion" maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="generic" type="string" use="required"/>
  </xsd:complexType>

...
</schema>
WSDL message and portType Definitions
<definitions ...
  xmlns="http://schemas.xmlsoap.org/wsdl/"
  xmlns:uddi="urn:uddi-org:api_v2">
  ...
  <message name="add_publisherAssertions">
    <part name="body" element="uddi:add_publisherAssertions"/>
  </message>
  <message name="dispositionReport">
    <part name="body" element="uddi:dispositionReport"/>
  </message>
  ...
  <portType name="Publish">
    ...
    <operation name="add_publisherAssertions">
      <input message="tns:add_publisherAssertions" />
      <output message="tns:dispositionReport" />
      <fault name="error" message="tns:dispositionReport" />
    </operation>
    ...
  </portType>
  ...
</definitions>
8.1.2.6 The set_publisherAssertions Operation

The set_publisherAssertions operation updates one or more existing publisherAssertion data structures to a UDDI registry. Because a publisherAssertion is not valid unless both parties assert the same relationship, they must perform complementary updates in order to keep the publisherAssertion visible.

Type Definitions
<schema targetNamespace="urn:uddi-org:api_v2"
            xmlns="http://www.w3.org/2001/XMLSchema"
            xmlns:uddi="urn:uddi-org:api_v2"
            version="2.03" id="uddi">
  ...

  <!-- Request Structure -->
  <xsd:element name="set_publisherAssertions"
               type="uddi:set_publisherAssertions"/>
  <xsd:complexType name="set_publisherAssertions">
    <xsd:sequence>
      <xsd:element ref="uddi:authInfo"/>
      <xsd:element ref="uddi:publisherAssertion" minOccurs="0"
                   maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="generic" type="string" use="required"/>
  </xsd:complexType>

  <!-- Response Structure -->
  <xsd:element name="publisherAssertions" type="uddi:publisherAssertions"/>
  <xsd:complexType name="publisherAssertions">
    <xsd:sequence>
      <xsd:element ref="uddi:publisherAssertion" minOccurs="0"
                   maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="generic" type="string" use="required"/>
    <xsd:attribute name="operator" type="string" use="required"/>
    <xsd:attribute name="authorizedName" type="string" use="required"/>
  </xsd:complexType>
...
</schema>
WSDL message and portType Definitions
<definitions ...
  xmlns="http://schemas.xmlsoap.org/wsdl/"
  xmlns:uddi="urn:uddi-org:api_v2">
  ...
  <message name="set_publisherAssertions">
    <part name="body" element="uddi:set_publisherAssertions"/>
  </message>
  <message name="publisherAssertions">
    <part name="body" element="uddi:publisherAssertions"/>
  </message>

  ...
  <portType name="Publish">
    ...
    <operation name="set_publisherAssertions">
      <input message="tns:set_publisherAssertions" />
      <output message="tns:publisherAssertions" />
      <fault name="error" message="tns:dispositionReport" />
    </operation>
    ...
  </portType>
  ...
</definitions>

3 Delete Operations

The delete operations allow you to remove information from the UDDI registry. Each delete operation corresponds with a primary data structure:

  • delete_business deletes one or more businessEntity entries.

  • delete_service deletes one or more businessService entries.

  • delete_binding deletes one or more bindingTemplate entries.

  • delete_tModel deletes (or rather, hides) one or more tModel entries.

  • delete_publisherAssertions deletes one or more publisherAssertion entries.

The SOAP request and response messages used for the delete operations all take the same basic form: The request message carries keys to one or more primary data structures to be deleted, as shown in the following example.

<?xml version="1.0" encoding="UTF-8" ?>
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
  <Body>
    <delete_something generic="2.0" xmlns="urn:uddi-org:api_v2">
      <authInfo>...</authInfo>
      <data-structure-Key>...<data-structure-Key>
      <data-structure-Key>...<data-structure-Key>
      ...
    </delete_something>
  </Body>
</Envelope>

Unlike the response message of a save operation, the delete operation's response doesn't contain the data in question. Unless it's reporting a fault, the response message contains a dispositionReport element. Listing 8-2 shows a standard dispositionReport reply message.

Listing 8-2 Standard dispositionReport for Successful Delete Operations
<?xml version="1.0" encoding="UTF-8" ?>
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
  <Body>
    <dispositionReport generic="2.0" operator="operatorURI"
                     xmlns="urn:uddi-org:api_v2">
      <result errno="0" >
         <errInfo errCode="E_success" />
      </result>
    </dispositionReport>
  </Body>
</Envelope>

If the operation is a success, the reply message for all delete operations will look exactly like the one in Listing 8-2, with an errCode equal to "E_success". The dispositionReport element is also used to report errors, as you'll see in Section 8.2: Fault Messages. The rest of this section provides a detailed definition of each of the delete operations.

8.1.3.1 The delete_business Operation

The delete_business operation deletes one or more businessEntity entries from a UDDI registry. In addition, all businessServices, bindingTemplates, and publisherAssertions owned by any deleted businessEntity will be permanently removed from the UDDI registry. The only exceptions are

  • bindingTemplates that other bindingTemplates refer to as hosting redirectors (see Section 6.2.2.2)

  • projected references, data types referred to by the businessEntity being deleted, but owned by some other businessEntity

  • tModels, which must be deleted explicitly using the delete_tModel operation

Type Definitions
<schema targetNamespace="urn:uddi-org:api_v2"
            xmlns="http://www.w3.org/2001/XMLSchema"
            xmlns:uddi="urn:uddi-org:api_v2"
            version="2.03" id="uddi">
  ...

  <!-- Request Structure -->
  <xsd:element name="delete_business" type="uddi:delete_business"/>
  <xsd:complexType name="delete_business">
    <xsd:sequence>
      <xsd:element ref="uddi:authInfo"/>
      <xsd:element ref="uddi:businessKey" maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="generic" type="string" use="required"/>
  </xsd:complexType>
...
</schema>
WSDL message and portType Definitions
<definitions ...
  xmlns="http://schemas.xmlsoap.org/wsdl/"
  xmlns:uddi="urn:uddi-org:api_v2">
  ...
  <message name="delete_business">
    <part name="body" element="uddi:delete_business"/>
  </message>
  <message name="dispositionReport">
    <part name="body" element="uddi:dispositionReport"/>
  </message>


  ...
  <portType name="Publish">
    ...
    <operation name="delete_business">
      <input message="tns:delete_business" />
      <output message="tns:dispositionReport" />
      <fault name="error" message="tns:dispositionReport" />
    </operation>
    ...
  </portType>
  ...
</definitions>
8.1.3.2 The delete_service Operation

The delete_service operation deletes one or more businessService data structures from a UDDI registry. All bindingTemplates owned by the deleted businessService will also be permanently removed from the UDDI registry. The exceptions are the same as for delete_business: projected references, hosting redirectors, and tModels.

Type Definitions
<schema targetNamespace="urn:uddi-org:api_v2"
            xmlns="http://www.w3.org/2001/XMLSchema"
            xmlns:uddi="urn:uddi-org:api_v2"
            version="2.03" id="uddi">
  ...

  <!-- Request Structure -->
  <xsd:element name="delete_service" type="uddi:delete_service"/>
  <xsd:complexType name="delete_service">
    <xsd:sequence>
      <xsd:element ref="uddi:authInfo"/>
      <xsd:element ref="uddi:serviceKey" maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="generic" type="string" use="required"/>
  </xsd:complexType>
...
</schema>
WSDL message and portType Definitions
<definitions ...
  xmlns="http://schemas.xmlsoap.org/wsdl/"
  xmlns:uddi="urn:uddi-org:api_v2">
  ...
  <message name="delete_service">
    <part name="body" element="uddi:delete_service"/>
  </message>
  <message name="dispositionReport">
    <part name="body" element="uddi:dispositionReport"/>
  </message>


  ...
  <portType name="Publish">
    ...
    <operation name="delete_service">
      <input message="tns:delete_service" />
      <output message="tns:dispositionReport" />
      <fault name="error" message="tns:dispositionReport" />
    </operation>
    ...
  </portType>
  ...
</definitions>
8.1.3.3 The delete_binding Operation

The delete_binding operation deletes one or more bindingTemplate data structures from a UDDI registry. tModels referred to by bindingTemplates being deleted are not affected. They must be deleted explicitly using the delete_tModel operation.

Type Definitions
<schema targetNamespace="urn:uddi-org:api_v2"
            xmlns="http://www.w3.org/2001/XMLSchema"
            xmlns:uddi="urn:uddi-org:api_v2"
            version="2.03" id="uddi">
  ...

  <!-- Request Structure -->
  <xsd:element name="delete_binding" type="uddi:delete_binding"/>
  <xsd:complexType name="delete_binding">
    <xsd:sequence>
      <xsd:element ref="uddi:authInfo"/>
      <xsd:element ref="uddi:bindingKey" maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="generic" type="string" use="required"/>
  </xsd:complexType>
...
</schema>
WSDL message and portType Definitions
<definitions ...
  xmlns="http://schemas.xmlsoap.org/wsdl/"
  xmlns:uddi="urn:uddi-org:api_v2">
  ...
  <message name="delete_binding">
    <part name="body" element="uddi:delete_binding"/>
  </message>
  <message name="dispositionReport">
    <part name="body" element="uddi:dispositionReport"/>
  </message>

  ...
  <portType name="Publish">
    ...
    <operation name="delete_binding">
      <input message="tns:delete_binding" />
      <output message="tns:dispositionReport" />
      <fault name="error" message="tns:dispositionReport" />
    </operation>
    ...
  </portType>
  ...
</definitions>
8.1.3.4 The delete_tModel Operation

The delete_tModel operation does not actually delete tModel data structures from a UDDI registry. Instead the tModels are made invisible to find operations—although you can still retrieve them using a get_tModelDetail message. To remove a tModel from a UDDI registry permanently, you must petition the UDDI operator to delete it.

Type Definitions
<schema targetNamespace="urn:uddi-org:api_v2"
            xmlns="http://www.w3.org/2001/XMLSchema"
            xmlns:uddi="urn:uddi-org:api_v2"
            version="2.03" id="uddi">
  ...

  <!-- Request Structure -->
  <xsd:element name="delete_tModel" type="uddi:delete_tModel"/>
  <xsd:complexType name="delete_tModel">
    <xsd:sequence>
      <xsd:element ref="uddi:authInfo"/>
      <xsd:element ref="uddi:tModelKey" maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="generic" type="string" use="required"/>
  </xsd:complexType>
...
</schema>
WSDL message and portType Definitions
<definitions ...
  xmlns="http://schemas.xmlsoap.org/wsdl/"
  xmlns:uddi="urn:uddi-org:api_v2">
  ...
  <message name="delete_tModel">
    <part name="body" element="uddi:delete_tModel"/>
  </message>
  <message name="dispositionReport">
    <part name="body" element="uddi:dispositionReport"/>
  </message>

  ...
  <portType name="Publish">
    ...
    <operation name="delete_tModel">
      <input message="tns:delete_tModel" />
      <output message="tns:dispositionReport" />
      <fault name="error" message="tns:dispositionReport" />
    </operation>
    ...
  </portType>
  ...
</definitions>
8.1.3.5 The delete_publisherAssertions Operation

The delete_publisherAssertions operation deletes one or more publisherAssertion data structures from a UDDI registry. This delete operation is different from others because a publisherAssociation doesn't have a UUID key; you delete a publisherAssociation using its to and from keys as a compound key.

Type Definitions
<schema targetNamespace="urn:uddi-org:api_v2"
            xmlns="http://www.w3.org/2001/XMLSchema"
            xmlns:uddi="urn:uddi-org:api_v2"
            version="2.03" id="uddi">
  ...

  <!-- Request Structure -->
  <xsd:element name="delete_publisherAssertions"
               type="uddi:delete_publisherAssertions"/>
  <xsd:complexType name="delete_publisherAssertions">
    <xsd:sequence>
      <xsd:element ref="uddi:authInfo"/>
      <xsd:element ref="uddi:publisherAssertion" maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="generic" type="string" use="required"/>
  </xsd:complexType>
...
</schema>
WSDL message and portType Definitions
<definitions ...
  xmlns="http://schemas.xmlsoap.org/wsdl/"
  xmlns:uddi="urn:uddi-org:api_v2">
  ...
  <message name="delete_publisherAssertions">
    <part name="body" element="uddi:delete_publisherAssertions"/>
  </message>
  <message name="dispositionReport">
    <part name="body" element="uddi:dispositionReport"/>
  </message>

  ...
  <portType name="Publish">
    ...
    <operation name="delete_publisherAssertions">
      <input message="tns:delete_publisherAssertions" />
      <output message="tns:dispositionReport" />
      <fault name="error" message="tns:dispositionReport" />
    </operation>
    ...
  </portType>
  ...
</definitions>

4 Get Operations

The get operations are used to obtain summary data about data structures published by the client. There are two publisherAssertion operations and one general operation for getting all businessEntity and tModel data structures controlled by an authenticated user:

  1. get_assertionStatusReport gets a summary of publisherAssertion entries.

  2. get_publisherAssertions gets a list of publisherAssertion entries.

  3. get_registeredInfo gets an abbreviated list of businessEntity and tModel entries.

8.1.4.1 The get_assertionStatusReport Operation

The get_assertionStatusReport operation allows you to see the status of any assertions that you have made, or that have been made about businessEntity entries that you control. You specify the assertion status you want to view using a code in the request message. For example, the SOAP message in Listing 8-3 requests a list of all publisherAssertion entries that are complete—that is, visible.

Listing 8-3 The get_assertionStatusReport Request Message
<?xml version="1.0" encoding="UTF-8" ?>
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
  <Body>
    <get_assertionStatusReport generic="2.0" xmlns="urn:uddi-org:api_v2">
      <authInfo>...</authInfo>
      <completionStatus>status:complete</completionStatus>
    </get_assertionStatusReport>
  </Body>
</Envelope>

The three completionStatus codes you can use are summarized in Figure.

Figure Completion Status Codes for the get_assertionStatusReport Operation[2]

completionStatus Value

Description

status:complete

This value indicates that you want to see a list of all the publisherAssertions that refer to any businessEntity that you have added (that you are authorized to update and delete). In order to be considered "complete," or visible, both parties must have submitted equivalent publisherAssertions.

status:toKey_incomplete

This value indicates that you want to see all publisherAssertions in which a businessEntity you control is referred to by the publisherAssertion toKey element. These can be assertions that you added, but have not been confirmed by the other party, or assertions that someone else has added, but you have not confirmed.

status:fromKey_incomplete

This value indicates that you want to see all publisherAssertions in which a businessEntity you control is referred to by the publisherAssertion fromKey element. These can be assertions that you added, but have not been confirmed by the other party, or assertions that someone else has added, but you have not confirmed.

[2] Organization for the Advancement of Structured Information Standards, UDDI Version 2.04 API Specification (2002). The descriptions are based on those in the UDDI specification, available at http://uddi.org/pubs/ProgrammersAPI-V2.04-Published-20020719.htm.

The reply SOAP message will contain a list of zero or more assertion StatusItem elements. Each of these provides the same data as a publisherAssertion entry but also includes a keysOwned element. The keysOwned element indicates which of the keys (toKey or fromKey) is owned by the person making the request—which makes it a little easier to figure out who is making the assertion, you or the other party. Listing 8-4 shows a get_assertionStatusReport reply message.

Listing 8-4 The get_assertionStatusReport Response Message
<?xml version="1.0" encoding="UTF-8" ?>
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
  <Body>
    <assertionStatusReport generic="2.0" operator="operatorURI"
                           xmlns="urn:uddi-org:api_v2" >

      <assertionStatusItem completionStatus="status:complete" >
        <fromKey>0207DE98-9C61-4138-A121-4B9E636B7649</fromKey>
        <toKey>1EE48BF0-9357-11D5-8838-002035229C64</toKey>
        <keyedReference
           keyName="corporate division"
           keyValue="parent-child"
           tModelKey="uuid:807A2C6A-EE22-470D-ADC7-E0424A337C03"  />
        <keysOwned>
           <toKey>1EE48BF0-9357-11D5-8838-002035229C64</toKey>
        </keysOwned>
      </assertionStatusItem>
    </assertionStatusReport>
  </Body>
</Envelope>

Response messages will include the operator attribute, which provides the URI of the UDDI operator you are querying.

Type Definitions
<schema targetNamespace="urn:uddi-org:api_v2"
            xmlns="http://www.w3.org/2001/XMLSchema"
            xmlns:uddi="urn:uddi-org:api_v2"
            version="2.03" id="uddi">
  ...

  <!-- Request Structure -->
  <xsd:element name="get_assertionStatusReport"
               type="uddi:get_assertionStatusReport"/>
  <xsd:complexType name="get_assertionStatusReport">
    <xsd:sequence>
      <xsd:element ref="uddi:authInfo"/>
      <xsd:element ref="uddi:completionStatus" minOccurs="0"/>
    </xsd:sequence>
    <xsd:attribute name="generic" type="string" use="required"/>
  </xsd:complexType>

  <xsd:element name="completionStatus" type="string"/>

  <!-- Response Structures -->
  <xsd:element name="assertionStatusReport"
               type="uddi:assertionStatusReport"/>
  <xsd:complexType name="assertionStatusReport">
    <xsd:sequence>
      <xsd:element ref="uddi:assertionStatusItem" minOccurs="0"
                   maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="generic" type="string" use="required"/>
    <xsd:attribute name="operator" type="string" use="required"/>
  </xsd:complexType>

  <xsd:element name="assertionStatusItem" type="uddi:assertionStatusItem"/>
  <xsd:complexType name="assertionStatusItem">
    <xsd:sequence>
      <xsd:element ref="uddi:fromKey"/>
      <xsd:element ref="uddi:toKey"/>
      <xsd:element ref="uddi:keyedReference"/>
      <xsd:element ref="uddi:keysOwned"/>
    </xsd:sequence>
    <xsd:attribute name="completionStatus" type="string" use="required"/>
  </xsd:complexType>

  <xsd:element name="keysOwned" type="uddi:keysOwned"/>
  <xsd:complexType name="keysOwned">
    <xsd:sequence>
      <xsd:element ref="uddi:fromKey" minOccurs="0"/>
      <xsd:element ref="uddi:toKey" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>
...
</schema>
WSDL message and portType Definitions
<definitions ...
  xmlns="http://schemas.xmlsoap.org/wsdl/"
  xmlns:uddi="urn:uddi-org:api_v2">
  ...
  <message name="get_assertionStatusReport">
    <part name="body" element="uddi:get_assertionStatusReport"/>
  </message>
  <message name="assertionStatusReport">
    <part name="body" element="uddi:assertionStatusReport"/>
  </message>

  ...
  <portType name="Publish">
    ...
    <operation name="get_assertionStatusReport">
      <input message="tns:get_assertionStatusReport" />
      <output message="tns:assertionStatusReport" />
      <fault name="error" message="tns:dispositionReport" />
    </operation>
    ...
  </portType>
  ...
</definitions>
8.1.4.2 The get_publisherAssertions Operation

The get_publisherAssertions operation returns all the publisherAssertion entries you have submitted to the UDDI registry, both visible and invisible. The SOAP request message is very simple: It contains only the authInfo element. The UDDI registry will look up all the publisherAssertion entries made by the party associated with the authInfo value. Listing 8-5 shows an example of the get_publisherAssertions SOAP request message.

Listing 8-5 The get_publisherAssertions Request Message
<?xml version="1.0" encoding="UTF-8" ?>
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
  <Body>
    <get_publisherAssertions generic="2.0" xmlns="urn:uddi-org:api_v2">
      <authInfo>...</authInfo>
    </get_publisherAssertions>
  </Body>
</Envelope>

The SOAP response message will contain zero or more publisherAssertion data structures that you have submitted in the past, both visible (confirmed by the other party) and invisible (not confirmed by the other party). Listing 8-6 illustrates.

Listing 8-6 The get_publisherAssertions Response Message
<?xml version="1.0" encoding="UTF-8" ?>
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
  <Body>
    <publisherAssertions generic="2.0" authorName="yourName"
        operator="OperatorURL" xmlns="urn:uddi-org:api_v2" >

      <publisherAssertion>
        <fromKey>0207DE98-9C61-4138-A121-4B9E636B7649</fromKey>
        <toKey>1EE48BF0-9357-11D5-8838-002035229C64</toKey>
        <keyedReference
           keyName="Corporation"
           keyValue="corporation-has-division"
           tModelKey="uuid:807A2C6A-EE22-470D-ADC7-E0424A337C03"  />
      </publisherAssertion>
      ...
    </publisherAssertions>
  </Body>
</Envelope>

Response messages will include the operator attribute, which provides the URI of the UDDI operator you are querying, and the authorizedName attribute, which is the name of the authorized party.

Type Definitions
<schema targetNamespace="urn:uddi-org:api_v2"
            xmlns="http://www.w3.org/2001/XMLSchema"
            xmlns:uddi="urn:uddi-org:api_v2"
            version="2.03" id="uddi">
  ...

  <!-- Request Structure -->
  <xsd:element name="get_publisherAssertions"
               type="uddi:get_publisherAssertions"/>
  <xsd:complexType name="get_publisherAssertions">
    <xsd:sequence>
      <xsd:element ref="uddi:authInfo"/>
    </xsd:sequence>
    <xsd:attribute name="generic" type="string" use="required"/>
  </xsd:complexType>

  <!-- Response Structure -->
  <xsd:element name="publisherAssertions" type="uddi:publisherAssertions"/>
  <xsd:complexType name="publisherAssertions">
    <xsd:sequence>
      <xsd:element ref="uddi:publisherAssertion" minOccurs="0"
                   maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="generic" type="string" use="required"/>
    <xsd:attribute name="operator" type="string" use="required"/>
    <xsd:attribute name="authorizedName" type="string" use="required"/>
  </xsd:complexType>
...
</schema>
WSDL message and portType Definitions
<definitions ...
  xmlns="http://schemas.xmlsoap.org/wsdl/"
  xmlns:uddi="urn:uddi-org:api_v2">
  ...
  <message name="get_publisherAssertions">
    <part name="body" element="uddi:get_publisherAssertions"/>
  </message>
  <message name="publisherAssertions">
    <part name="body" element="uddi:publisherAssertions"/>
  </message>

  ...
  <portType name="Publish">
    ...
    <operation name="get_publisherAssertions">
      <input message="tns:get_publisherAssertions" />
      <output message="tns:publisherAssertions" />
      <fault name="error" message="tns:dispositionReport" />
    </operation>
    ...
  </portType>
  ...
</definitions>
8.1.4.3 The get_registeredInfo Operation

The get_registeredInfo operation returns an abbreviated list of all the businessEntity and tModel structures controlled by the individual who made the request. Listing 8-7 shows an example of the SOAP request message, which contains only the authInfo element.

Listing 8-7 The get_registeredInfo Request Message
<?xml version="1.0" encoding="UTF-8" ?>
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
  <Body>
    <get_registeredInfo generic="2.0" xmlns="urn:uddi-org:api_v2">
      <authInfo>...</authInfo>
    </get_registeredInfo >
  </Body>
</Envelope>

The response SOAP message contains a summary of the data controlled by the requester in the form of businessInfos and tModelInfos elements, which are described in Section 7.2.1.3.1. Listing 8-8 shows a typical SOAP response message.

Listing 8-8 The get_registeredInfo Response Message
<?xml version="1.0" encoding="UTF-8" ?>
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
  <Body>
    <registeredInfo generic="2.0" xmlns="urn:uddi-org:api_v2"
                    operator="OperatorURL">
      <businessInfos>
         <businessInfo businessKey="01B1FA80-2A15-11D7-9B58-000629DC0A53">
           <name>Monson-Haefel, Inc.</name>
           <serviceInfos>
             <serviceInfo businessKey="01B1FA80-2A15-11D7-9B58-000629DC0A53"
                          serviceKey="807A2C6A-EE22-470D-ADC7-E0424A337C03">
              <name>BookQuoteService</name>
             </serviceInfo>
           </serviceInfos>
         </businessInfo>
         ...
      </businessInfos>
      <tModelInfos>
        <tModelInfo tModelKey="UUID:4C9D3FE0-2A16-11D7-9B58-000629DC0A53">
           <name>Monson-Haefel:BookQuote</name>
        </tModelInfo>
        ...
      </tModelInfos>
    </registeredInfo>
  </Body>
</Envelope>

Response messages will include the operator attribute, which provides the URI of the UDDI operator you are querying, and possibly a truncation attribute, which indicates that the data returned was too large and was truncated.

Type Definitions
<schema targetNamespace="urn:uddi-org:api_v2"
            xmlns="http://www.w3.org/2001/XMLSchema"
            xmlns:uddi="urn:uddi-org:api_v2"
            version="2.03" id="uddi">
  ...

  <!-- Request Structure -->
  <xsd:element name="get_registeredInfo" type="uddi:get_registeredInfo"/>
  <xsd:complexType name="get_registeredInfo">
    <xsd:sequence>
      <xsd:element ref="uddi:authInfo"/>
    </xsd:sequence>
    <xsd:attribute name="generic" type="string" use="required"/>
  </xsd:complexType>

  <!-- Response Structure -->
  <xsd:element name="registeredInfo" type="uddi:registeredInfo"/>
  <xsd:complexType name="registeredInfo">
    <xsd:sequence>
      <xsd:element ref="uddi:businessInfos"/>
      <xsd:element ref="uddi:tModelInfos"/>
    </xsd:sequence>
    <xsd:attribute name="generic" type="string" use="required"/>
    <xsd:attribute name="operator" type="string" use="required"/>
    <xsd:attribute name="truncated" type="uddi:truncated" use="optional"/>
  </xsd:complexType>
...
</schema>
WSDL message and portType Definitions
<definitions ...
  xmlns="http://schemas.xmlsoap.org/wsdl/"
  xmlns:uddi="urn:uddi-org:api_v2">
  ...
  <message name="get_registeredInfo">
    <part name="body" element="uddi:get_registeredInfo"/>
  </message>
  <message name="registeredInfo">
    <part name="body" element="uddi:registeredInfo"/>
  </message>

  ...
  <portType name="Publish">
    ...
    <operation name="get_registeredInfo">
      <input message="tns:get_registeredInfo" />
      <output message="tns:registeredInfo" />
      <fault name="error" message="tns:dispositionReport" />
    </operation>
    ...
  </portType>
  ...
</definitions>

     Python   SQL   Java   php   Perl 
     game development   web development   internet   *nix   graphics   hardware 
     telecommunications   C++ 
     Flash   Active Directory   Windows