Skip to main content

skip to main content

developerWorks  >  Lotus  >

Introducing IBM Lotus Quickr Web services

developerWorks
Document options

Document options requiring JavaScript are not displayed

Discuss

Sample code


Rate this page

Help us improve this content


Level: Intermediate

Derek Carr (dwcarr@us.ibm.com), Advisory Software Engineer, IBM
Andreas Goelzer (andreas_goelzer@us.ibm.com), Advisory Software Engineer, IBM
Gregory Melahn (melahn@us.ibm.com), Architect and Senior Technical Staff Member, IBM 

20 Nov 2007
Updated 31 Jan 2008

Use IBM Lotus Quickr Web services to perform basic document management operations. Develop a Lotus Quickr Connector that lets you navigate a set of Lotus Quickr document libraries and invoke certain actions on individual resources within a library.

IBM Lotus Quickr makes it easy for users to share business content. An important design principle of Lotus Quickr is to build the application on open interfaces that let customers and business partners access content where and when they need it. Customers and partners need to interact with content from a variety of content repositories, using a diverse set of clients and programming models. Lotus Quickr Connectors interact with Lotus Quickr content using a set of published interfaces.

In this article, we introduce the basic operations you can perform using Lotus Quickr Web services and some of the best practices that you should follow when interacting with these services. At the end of this article, you should be familiar enough with both the layout of the services and the request-response patterns used that you can start developing your own applications that interact with Lotus Quickr content.

For information on other published interfaces for interacting with Lotus Quickr content, refer to the IBM Lotus Quickr Developer's Guide. For an introduction to Lotus Quickr REST services, refer to the companion developerWorks Lotus article, "Introducing IBM Lotus Quickr REST services."

Prerequisites

Share this...

digg Digg this story
del.icio.us Post to del.icio.us
Slashdot Slashdot it!

You should have a basic understanding of Web services programming methods to get the most out of this article. This includes an understanding of Web Service Description Language (WSDL), Simple Object Access Protocol (SOAP), HTTP, and XML-related technologies.

The sample application described in this article is a series of XML request-response messages with the server. Each request-response message shows the actual contents being transmitted across the wire and gives readers an understanding of how the XML is formatted.

Developers who want to write code using these services often use some type of SOAP tooling to generate client-side proxies to handle serialization of the request-response objects sent across the wire. To use the sample code provided, you should have some knowledge of the C# programming language. The sample code is intended to demonstrate interoperability across programming environments (for example, a .NET client invoking a Web service provided by a J2EE or IBM Lotus Domino server), but the principles and methodologies used to build the code sample are consistent with any other development environment that provides native support for Web service technologies.



Back to top


Overview

Our goal for Web services is to enable you to rapidly build collaborative document management solutions for Lotus Quickr content with as little effort as possible. Customers familiar with the Web services paradigm should be comfortable working with these services. Because the services are well defined in a machine-readable format through a WSDL document, you can use your preferred tooling environment that supports Web services to generate client-side proxy code that interacts with the service provider. In this way, you don't need to invest significant time and cost in implementing the objects required to send and receive messages across the network. Also, it gives you an object model that can be reused across your application.



Back to top


About the sample

In this article, we build a simple standalone Lotus Quickr Connector as shown in figure 1. A Lotus Quickr Connector is an extension to an existing application or framework that allows you to access content when and where you need it. Though this sample is standalone, it is representative of the approach that you can use when extending existing applications that you want to interact with Lotus Quickr content.


Figure 1. Sample Lotus Quickr Connector
Sample Lotus Quickr Connector

The connector enables the user to supply a URL and credentials to the Lotus Quickr server, and then to navigate the set of libraries on the server. A user can execute the following actions against content on the Lotus Quickr server using the connector:

  • Single-click a folder or document to see detailed properties for that resource maintained on the server
  • Double-click folders to expand navigation trees to show subfolders and documents
  • Toggle the default double-click behavior on documents either to display a summary view of the content in a Web browser or to directly download the document content to the file system
  • Rename folders and documents by editing the label of each resource in the tree
  • Move folders and documents using drag-and-drop in the tree structure
  • Delete folders and documents using a right-click context menu action


Back to top


Generating service code

To interact with the Lotus Quickr Web service, you typically start by pointing your IDE SOAP tooling agent to the WSDL document maintained on the Lotus Quickr server at the following URL:

http://<host>:<port>/dm/services/ContentService?wsdl.

for example:

http://localhost:10038/dm/services/ContentService?wsdl

The user should then be prompted to authenticate with the server, after which a series of code artifacts should be generated to interact with the service easily. There are three service port types exposed in the WSDL, so in an object-oriented environment, you typically interact with a service object for ContentService, DocumentService, and LibraryService.



Back to top


Retrieving server information

The ContentService in Lotus Quickr Web services is intended to provide general operations for content, meaning operations that don't apply specifically to libraries, folders, or documents. For the first version of the services, the service is limited to retrieving basic information about the server and its associated users.

It is expected that, in the future, Lotus Quickr Web services will evolve to include additional service operations that are not currently available. The client needs to know which version of the service is available so that the client does not make calls to operations that were added in a later version of the service supported on that server. To guard against making calls to a remote server that does not support a particular service operation, Web services include the concept of a service version.

To determine the version of the Web services deployed on an instance of a Lotus Quickr server, our example Lotus Quickr Connector makes the request shown in listing 1 to use the ContentService to retrieve information about the server.


Listing 1. SOAP request to retrieve service version information


POST /dm/services/ContentService HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; 
MSIE 6.0; MS Web Services Client Protocol 2.0.50727.832)
Content-Type: text/xml; 
charset=utf-8SOAPAction: ""Authorization: Basic am9obmRvZTpqb2huZG9l
Host: insertyourserver.com
Content-Length: 310
Expect: 100-continue
Connection: Keep-Alive
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:
xsd="http://www.w3.org/2001/XMLSchema">
 <soap:Body>
  <getServerInfo xmlns="http://webservices.clb.content.ibm.com" />
 </soap:Body>
</soap:Envelope>

Notice that this call leverages HTTP Basic Auth to invoke the Web service. When you work with your client applications, you should toggle your client to pre-authenticate with the backend rather than respond to a challenge for authentication when interacting with the services.

The server in the case shown in listing 2 responds with some basic information about the service level. The serverInfo element includes the version attribute that contains a string defining the current service version of the Lotus Quickr server.


Listing 2. SOAP response to retrieve service version information

HTTP/1.1 200 OKDate: Tue, 02 Oct 2007 20:42:52 GMTServer: WebSphere Application 
Server/6.0
Content-Type: text/xml; charset=utf-8
Content-Language: en-US
Content-Length: 2136
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soapenv:Header/>
   <soapenv:Body>
      <p687:getServerInfoResponse xmlns:p687="http://webservices.clb.content.ibm.com">
         <p687:getServerInfoReturn>
            <p687:error xsi:nil="true"/>
            <p687:serverInfo version="8.0.1" locale="en" utcOffset="-14400000" 
            securityEnabled="1">
               <p687:serverProperties key="supported.versions" value="8.0.0,8.0.1"/>
               <p687:serverProperties key="app.url" value="/dm/atom"/>
               <p687:serverProperties key="connectors.install.url" 
               value="/documents/desktop/qkrconn.msi"/>
            </p687:serverInfo>
         </p687:getServerInfoReturn>
      </p687:getServerInfoResponse>
   </soapenv:Body>
</soapenv:Envelope>

In addition, other information is provided that is useful as a series of serverProperties elements. In the previous example, the default locale of the server, the relative URL patterns for invoking the REST-based Atom services, and the URL to download the connectors are all provided for the convenience of the connector.



Back to top


Retrieving list of top-level libraries

Once the example Lotus Quickr Connector is aware of the service level available on the remote server, the connector attempts to retrieve the list of document libraries available on the server for interaction (see listing 3). To do this, the connector interacts with the LibraryService element, which provides operations for retrieving libraries of a specific category. In addition, it provides an operation to retrieve a library for managing shared resources that span libraries if they exist on the remote server.


Listing 3. SOAP request to retrieve list of document libraries

POST /dm/services/LibraryService HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client 
Protocol 2.0.50727.832)
Content-Type: text/xml; charset=utf-8
SOAPAction: ""Authorization: Basic am9obmRvZTpqb2huZG9l
Host: insertyourserver.com:9090
Content-Length: 444Expect: 100-continue
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Body>
   <getBusinessComponents xmlns="http://webservices.clb.content.ibm.com">
   <libraryId xsi:nil="true" />
   <libraryPath xsi:nil="true" />
   <categoryTypes>DocumentManager</categoryTypes>
  </getBusinessComponents>
 </soap:Body>
</soap:Envelope>

This request asks the server to return all library components that are appropriate for use in a document management application.

The response shown in listing 4 enumerates the list of library components that are available for interaction on the server. Each library resource includes metadata such as the ID (for example, d76a1880470797b28552b53e588f1125) and path (for example, /contentRoot/icm:libraries[7]/clb:libraries[2]/clb:libraries) that uniquely addresses that resource on the server. In addition, other system metadata is provided that gives basic attributes about the resource (for example, created, last modified timestamps, description, and title).


Listing 4. SOAP response to retrieve list of document libraries

HTTP/1.1 200 OKDate: Tue, 02 Oct 2007 20:42:52 GMTServer: WebSphere Application 
Server/6.0
Content-Type: text/xml; charset=utf-8
Content-Language: en-US
Content-Length: 1140
<soapenv:Envelope 
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soapenv:Header/>
   <soapenv:Body>
      <p687:getBusinessComponentsResponse 
      xmlns:p687="http://webservices.clb.content.ibm.com">
         <p687:getBusinessComponentsReturn>
            <p687:error xsi:nil="true"/>
            <p687:libraries id="d76a1880470797b28552b53e588f1125" 
            path="/contentRoot/icm:libraries[7]/clb:libraries[2]/clb:libraries" 
            locked="0" permissions="" systemCreated="2007-10-02T20:17:19.125Z" 
            systemLastModified="2007-10-02T20:17:20.484Z" hidden="0" 
            description="This is my team library for content." title="My Team Library">
               <p998:creator dn="uid=johndoe,o=default organization" 
               commonName="John Doe" xmlns:p998="http://model.xsd.content.ibm.com"/>
               <p998:lastModifier xsi:nil="true" 
               xmlns:p998="http://model.xsd.content.ibm.com"/>
               <p998:lockOwner xsi:nil="true" 
               xmlns:p998="http://model.xsd.content.ibm.com"/>
            </p687:libraries>
         </p687:getBusinessComponentsReturn>
      </p687:getBusinessComponentsResponse>
   </soapenv:Body>
</soapenv:Envelope>

Notice in the preceding response that an empty error element is included in the getBusinessComponentsReturn element. This is a common pattern used by Web services to express non-fatal or expected error conditions. Users of the service should check each response for a nested error that may have occurred. SOAP faults are reserved for serious, non-recoverable system errors. If an error was present, an error code and description is provided describing the error that was encountered on the server and allowing the connector to handle error conditions gracefully.



Back to top


Retrieving subfolders, documents, and metadata

Now that Lotus Quickr Connector has the list of libraries, you need to support further navigation of the hierarchy by enabling users to expand folders in the navigator to see subfolders and documents.

Given the ID or path to the parent resource, it is a simple operation to request the associated child resources. The navigator is interested in displaying the list of folders and published documents, so you make two requests. The first request is to retrieve the list of child folders scoped to the parent folder (see listing 5).


Listing 5. SOAP request to retrieve subfolders

POST /dm/services/DocumentService HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; 
MS Web Services Client Protocol 2.0.50727.832)
Content-Type: text/xml; charset=utf-8
SOAPAction: ""Authorization: Basic am9obmRvZTpqb2huZG9l
Host: insertyourserver.com:9090
Content-Length: 382
Expect: 100-continue
<?xml version="1.0" encoding="utf-8"?>
      <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xmlns:xsd="http://www.w3.org/2001/XMLSchema">
         <soap:Body>
            <getFolders xmlns="http://webservices.clb.content.ibm.com">
               <id>d76a1880470797b28552b53e588f1125</id>
               <path xsi:nil="true" />
            </getFolders>
         </soap:Body>
      </soap:Envelope>

This request asks the server to retrieve a list of child folders of the parent folder with the specified ID, and the response (see listing 6) includes the list of folder objects. Each folder object contains its ID and path as well as its associated metadata such as title, description, and so on.


Listing 6. SOAP response to retrieve subfolders

HTTP/1.1 200 OKDate: Wed, 03 Oct 2007 17:18:06 GMT
Server: WebSphere Application Server/6.0
Content-Type: text/xml; charset=utf-8
Content-Language: en-US
Content-Length: 6167
<soapenv:Envelope 
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soapenv:Header/>
   <soapenv:Body>
      <p687:getFoldersResponse xmlns:p687="http://webservices.clb.content.ibm.com">
         <p687:getFoldersReturn>
            <p687:error xsi:nil="true"/>
            <p687:folders id="ccec7380470798c58570b53e588f1125" 
            path="/contentRoot/icm:libraries[7]/clb:libraries[2]/clb:libraries/Drafts" 
            locked="0" permissions="" systemCreated="2007-10-02T20:19:17.219Z" 
            systemLastModified="2007-10-02T20:19:17.219Z" 
            created="2007-10-02T20:19:17.219Z" lastModified="2007-10-02T20:19:17.219Z" 
            hidden="0" label="Drafts" title="Drafts">
               <p998:creator dn="uid=johndoe,o=default organization" 
               commonName="John Doe" xmlns:p998="http://model.xsd.content.ibm.com"/>
               <p998:lastModifier dn="uid=johndoe,o=default organization" 
               commonName="John Doe" xmlns:p998="http://model.xsd.content.ibm.com"/>
               <p998:lockOwner xsi:nil="true" 
               xmlns:p998="http://model.xsd.content.ibm.com"/>
               <p998:authors dn="uid=johndoe,o=default organization" 
               commonName="John Doe" xmlns:p998="http://model.xsd.content.ibm.com"/>
               <p998:owners dn="uid=johndoe,o=default organization" 
               commonName="John Doe" xmlns:p998="http://model.xsd.content.ibm.com"/>
            </p687:folders>
         </p687:getFoldersReturn>
      </p687:getFoldersResponse>
   </soapenv:Body>
</soapenv:Envelope>

Now that the example connector has a list of child folders from a given node in the hierarchy, you need to retrieve the list of child document resources (see listing 7).


Listing 7. SOAP request to retrieve documents

POST /dm/services/DocumentService HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; 
MS Web Services Client Protocol 2.0.50727.832)
Content-Type: text/xml; charset=utf-8
SOAPAction: ""Authorization: Basic am9obmRvZTpqb2huZG9l
Host: insertyourserver.com:9090
Content-Length: 423
Expect: 100-continue
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 <soap:Body>
  <getDocuments xmlns="http://webservices.clb.content.ibm.com">
   <id>d76a1880470797b28552b53e588f1125</id>
   <path xsi:nil="true" />
   <serviceOptions>None</serviceOptions>
  </getDocuments>
 </soap:Body>
</soap:Envelope>

This request asks the server to retrieve a list of child documents of the parent folder with the specified ID, and the response (see listing 8) includes the list of document objects. Each document object contains its ID and path as well as its associated metadata such as title, description, and so on.


Listing 8. SOAP response to retrieve documents

HTTP/1.1 200 OKDate: Wed, 03 Oct 2007 17:18:06 GMT
Server: WebSphere Application Server/6.0
Content-Type: text/xml; charset=utf-8
Content-Language: en-US
Content-Length: 7321
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <soapenv:Header/>
 <soapenv:Body>
  <p687:getDocumentsResponse xmlns:p687="http://webservices.clb.content.ibm.com">
   <p687:getDocumentsReturn>
    <p687:error xsi:nil="true"/>
    <p687:documents id="7cbce380470798bc855eb53e588f1125" 
    path="/contentRoot/icm:libraries[7]/clb:libraries[2]/clb:libraries/New Idea.doc" 
    locked="0" permissions="" systemCreated="2007-10-02T20:19:13.219Z" 
    systemLastModified="2007-10-02T20:19:13.219Z" created="2007-03-14T18:21:56.000Z" 
    lastModified="2007-03-18T17:44:39.000Z" hidden="0" language="en" 
    label="New Idea.doc" description="" title="New Idea.doc" 
    effectiveDate="2007-10-02T20:19:13.203Z" dataLength="249856" 
    dataLastModified="2007-10-02T20:19:13.219Z" dataMimeType="application/msword">
     <p998:creator dn="uid=johndoe,o=default organization" commonName="John Doe" 
     xmlns:p998="http://model.xsd.content.ibm.com"/>
     <p998:lastModifier dn="uid=johndoe,o=default organization" 
     commonName="John Doe" xmlns:p998="http://model.xsd.content.ibm.com"/>
     <p998:lockOwner xsi:nil="true" xmlns:p998="http://model.xsd.content.ibm.com"/>
     <p791:documentType xsi:nil="true" 
     xmlns:p791="http://model.xsd.clb.content.ibm.com"/>
    </p687:documents>
   </p687:getDocumentsReturn>
  </p687:getDocumentsResponse>
 </soapenv:Body>
</soapenv:Envelope>

Because the example connection builds only a simple navigation tree, the connector does not need to retrieve all the detailed information about the resource. For the sake of efficiency, the example connector retrieves only the minimal information it needs. If the connector needs associated information about a document, it can specify that the associated metadata be retrieved in a single call by using a list of service options.

Service options enable clients of the service to specify optional behavior for a call. For a list of each option supported by a particular call, it is best to reference the WSDL; however, for convenience, table 1 provides a list of each defined option and its effect on the data retrieved.


Table 1. Service options
OptionBehavior
NoneThe default behavior of the call is requested.
IncludeDraftsEach document retrieved includes its associated draft, if it exists.
IncludeApproveDraftsEach document retrieved includes its associated draft, if the user whose credentials are provided on the service is an approver on the draft.
IncludeSubmittedDraftsEach document retrieved includes its associated draft, if the user whose credentials are provided on the service has submitted the draft for approval.
IncludeReferencesEach object that is retrieved includes its associated reference type. Reference types are currently limited to document type and property sheet type.
IncludePermissionsRetrieves the permissions for a piece of content for the given user.
IncludePropertySheetsRetrieves a list of any custom property sheets associated with the document.
ResolveLockOwnerPopulates the ID of the user who has the document locked.
RetrieveDownloadURLPopulates the URL attribute for a resource for retrieving the binary contents of the document.
RetrieveViewURLPopulates the URL attribute for a resource for viewing a summary of the resource.
IncludeFolderChildrenRetrieves child documents and folders in a single request when retrieving a folder object. Not recommended for large numbers of child folders and documents.

For example, let's demonstrate how the service options can be used to manipulate the metadata retrieved on a single document request (see listing 9).


Listing 9. SOAP request for document metadata

POST /dm/services/DocumentService HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; 
MS Web Services Client Protocol 2.0.50727.832)
Content-Type: text/xml; charset=utf-8
SOAPAction: ""Authorization: Basic cXVpa3JhZG06cXVpa3JhZG0=Host: 
insertyourserver.comContent-Length: 527
Expect: 100-continue
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 <soap:Body>
  <getDocument xmlns="http://webservices.clb.content.ibm.com">
   <id>a8959480470798cf8587b53e588f1125</id>
   <path xsi:nil="true" />
   <downloadOption>None</downloadOption>
   <serviceOptions>IncludePropertySheets</serviceOptions>
   <serviceOptions>RetrieveDownloadURL</serviceOptions>
  </getDocument>
 </soap:Body>
</soap:Envelope>

This request passes two options to the server requesting that the server return custom attributes, if they exist on the document and are supported by the server (see IncludePropertySheets) as well as a URL that can be used for direct download of the document binary contents (see RetrieveDownloadURL).

Notice that the response (see listing 10) includes a list of dynamic maps for each custom attribute in the document. In addition, the url attribute on the document resource contains a link to download the binary contents of the resource.


Listing 10. SOAP response for document metadata

HTTP/1.1 200 OKDate: Mon, 08 Oct 2007 18:10:38 GMT
Server: WebSphere Application Server/6.0
Content-Type: text/xml; charset=utf-8
Content-Language: en-US
Content-Length: 4243
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <soapenv:Header/>
 <soapenv:Body>
  <p687:getDocumentResponse xmlns:p687="http://webservices.clb.content.ibm.com">
   <p687:getDocumentReturn>
    <p687:error xsi:nil="true"/>
    <p687:document id="a8959480470798cf8587b53e588f1125" 
    path="/contentRoot/icm:libraries[7]/clb:libraries[2]/clb:
    libraries/Help UX Mockup.jpg" 
    locked="0" permissions="" systemCreated="2007-10-02T20:19:21.453Z" 
    systemLastModified="2007-10-08T18:09:44.375Z" created="2007-03-27T00:51:29.000Z" 
    lastModified="2007-10-08T18:09:44.375Z" hidden="0" language="en" 
    label="Help UX Mockup.jpg" description="" title="Help UX Mockup.jpg" 
    effectiveDate="2007-10-08T18:09:44.344Z" url="http://insertyourserver.com:
    10038/lotus/mypoc?uri=
    dm:a8959480470798cf8587b53e588f1125&verb=download" 
    dataLength="117516" dataLastModified="2007-10-02T20:19:21.453Z" 
    dataMimeType="image/jpeg">
     <p998:creator dn="uid=johndoe,o=default organization" commonName="John Doe" 
     xmlns:p998="http://model.xsd.content.ibm.com"/>
     <p998:lastModifier dn="uid=johndoe,o=default organization" commonName="John Doe" 
     xmlns:p998="http://model.xsd.content.ibm.com"/>
     <p998:lockOwner xsi:nil="true" xmlns:p998="http://model.xsd.content.ibm.com"/>
     <p998:authors dn="uid=johndoe,o=default organization" commonName="John Doe" 
     xmlns:p998="http://model.xsd.content.ibm.com"/>
     <p998:owners dn="uid=johndoe,o=default organization" commonName="John Doe" 
     xmlns:p998="http://model.xsd.content.ibm.com"/>
     <p791:propertySheets propertySheetTypeId="49cc3e004719baea98f99be57ed4c640" 
     extracted="0" label="propSheet49cc3e004719baea98f99be57ed4c640" title="Custom PS" 
     xmlns:p791="http://model.xsd.clb.content.ibm.com">
      <p791:dynamicLongs 
      key="clb:p_1191866765906a1b675004719bae9a53abf471f54238f_0">
      <p791:values>46800</p791:values>
      </p791:dynamicLongs>
      <p791:dynamicDates 
      key="clb:p_119186676589198c5a3804719bae9a539bf471f54238f_0">
      <p791:values>2007-10-08T18:08:59.093Z</p791:values>
      </p791:dynamicDates>
      <p791:dynamicDates 
      key="clb:p_1191866765906a1b675004719bae9a53bbf471f54238f_0">
      <p791:values>2007-10-08T13:00:00.000Z</p791:values>
      </p791:dynamicDates>
      <p791:dynamicDoubles 
      key="clb:p_11918667658758f3c3b804719bae9a535bf471f54238f_0">
      <p791:values>1234.0</p791:values>
      </p791:dynamicDoubles>
      <p791:dynamicStrings 
      key="clb:p_119186676582885b2d3804719bae9a533bf471f54238f_0">
      <p791:values>sample text</p791:values>
      </p791:dynamicStrings>
      <p791:dynamicStrings 
      key="clb:p_11918667658758f3c3b804719bae9a537bf471f54238f_0">
      <p791:values>0</p791:values>
      </p791:dynamicStrings>
      <p791:dynamicStrings 
      key="clb:p_1191866765906a1b675004719bae9a53cbf471f54238f_0">
      <p791:values>http://www.ibm.com</p791:values>
      </p791:dynamicStrings>
      <p791:dynamicStrings 
      key="clb:p_11918667658758f3c3b804719bae9a534bf471f54238f_0">
      <p791:values>sample multi-line text</p791:values>
                  </p791:dynamicStrings>
                  <p791:dynamicStrings 
                  key="clb:p_11918667658758f3c3b804719bae9a536bf471f54238f_0">
      <p791:values>uid=johndoe,o=default organization</p791:values>
      </p791:dynamicStrings>
      <p791:dynamicStrings 
      key="clb:p_119186676589198c5a3804719bae9a538bf471f54238f_0">
      <p791:values>1</p791:values>
      <p791:values/>
      </p791:dynamicStrings>
     </p791:propertySheets>
     <p791:propertySheetTypes id="49cc3e004719baea98f99be57ed4c640" title="Custom PS" 
     extracted="0" xmlns:p791="http://model.xsd.clb.content.ibm.com">
     <p791:templateXml xsi:nil="true"/>
     </p791:propertySheetTypes>
     <p791:documentType versioning="NONE" approvalEnabled="0" defaultExtension="" 
     id="a5f38a004719bb0b98fa9be57ed4c640" 
     path="/contentRoot/icm:libraries[7]/clb:libraries[2]/clb:libraries/
     clb:documentTypeContainer/
     Custom DT" locked="0" systemCreated="2007-10-08T18:06:20.516Z" 
     systemLastModified="2007-10-08T18:06:20.516Z" hidden="0" description="" 
     title="Custom DT" xmlns:p791="http://model.xsd.clb.content.ibm.com">
     <p791:propertySheetTypes id="49cc3e004719baea98f99be57ed4c640" title="Custom PS"
     extracted="0">
     <p791:templateXml xsi:nil="true"/>
     </p791:propertySheetTypes>
     <p791:template xsi:nil="true"/>
    </p791:documentType>
   </p687:document>
  </p687:getDocumentReturn>
 </p687:getDocumentResponse>
</soapenv:Body>
</soapenv:Envelope>

The example Lotus Quickr Connector is read only with respect to document resource metadata. It is also possible to create new documents and update existing documents using Lotus Quickr Web services. To do this, the user must first lock the document, create a draft of the resource, make the modifications to the draft resource (metadata or binary contents), and then publish the draft as the current document. Refer to the WSDL (as described in the "Generating service code" section earlier) for detailed documentation on the enumerated options.



Back to top


Renaming and deleting resources

Rename, move, and delete operations are scoped to a resource type; in other words, these are operations specific to folder and document resources. Each of the requested operations is subject to access control constraints enforced by the Lotus Quickr server.

When attempting to rename a resource, the caller must specify the ID or the absolute path of the resource to be modified. The new name must conform to a file system mapping scheme as enforced by the server.

When attempting to delete a resource, the caller must specify the ID or the absolute path of the resource to be deleted. Folder and document resources may be deleted, but the root folder of a library may not be deleted through Lotus Quickr Web services.



Back to top


Conclusion

Lotus Quickr Web services offer a simple way to work with documents. Because the operations are described using a WSDL document, you can use your programming language of choice and the associated tooling support to quickly generate code for interacting with the remote server (the C# language in this example). This article demonstrated how to use the service to perform basic operations on documents while explaining the basic pattern for each request and response message.




Back to top


Download

NameSizeDownload method
QuickrNavigator.zip730KBHTTP
Information about download methods


Resources

Learn

Discuss


About the authors

Derek Carr is an Advisory Software Engineer at IBM working with the Lotus Quickr team in Research Triangle Park, NC. You can reach Derek at dwcarr@us.ibm.com.


Andreas Goelzer is an Advisory Software Engineer at IBM working with the IBM Lotus Quickr team in Westford, MA. You can reach Andreas at andreas_goelzer@us.ibm.com.


Greg Melahn is an Architect and Senior Technical Staff Member in the Lotus division of IBM Software Group. You can reach Greg at melahn@us.ibm.com.




Rate this page


Please take a moment to complete this form to help us better serve you.



YesNoDon't know
 


 


12345
Not
useful
Extremely
useful
 


Back to top