new functions for adding debugging of the SOAP messages.
authorRodrigo Moya <rodrigo@ximian.com>
Fri, 12 Dec 2003 15:49:20 +0000 (15:49 +0000)
committerRodrigo Moya <rodrigo@src.gnome.org>
Fri, 12 Dec 2003 15:49:20 +0000 (15:49 +0000)
2003-12-12  Rodrigo Moya <rodrigo@ximian.com>

* backends/groupwise/e-gw-message.c (setup_debug, print_header,
debug_handler): new functions for adding debugging of the SOAP messages.
(e_gw_message_new_with_header): if G_ENABLE_DEBUG is defined, setup
debugging for the message. Also, use POST to send the messages.

* doc/gw-soap-methods.xsd:
* doc/gw-soap-types.xsd: added new versions of SOAP interfaces.

calendar/ChangeLog
calendar/backends/groupwise/TODO
calendar/backends/groupwise/doc/gw-soap-methods.xsd
calendar/backends/groupwise/doc/gw-soap-types.xsd
calendar/backends/groupwise/e-gw-message.c
servers/groupwise/doc/gw-soap-methods.xsd
servers/groupwise/doc/gw-soap-types.xsd
servers/groupwise/e-gw-message.c

index c03d2cb..e7f1575 100644 (file)
@@ -1,3 +1,13 @@
+2003-12-12  Rodrigo Moya <rodrigo@ximian.com>
+
+       * backends/groupwise/e-gw-message.c (setup_debug, print_header,
+       debug_handler): new functions for adding debugging of the SOAP messages.
+       (e_gw_message_new_with_header): if G_ENABLE_DEBUG is defined, setup
+       debugging for the message. Also, use POST to send the messages.
+
+       * doc/gw-soap-methods.xsd:
+       * doc/gw-soap-types.xsd: added new versions of SOAP interfaces.
+
 2003-12-11  Rodrigo Moya <rodrigo@ximian.com>
 
        Fixes #52013
index c039af5..573e2bf 100644 (file)
@@ -89,7 +89,7 @@ Step 2 - Basic functionality
           - Implement e_cal_backend_groupwise_send_objects, which lets the
             server send a meeting invitation in whatever means it's got.
      When sending modifications to the server, only deltas (the fields that have
-     been modified) are sent, so we shoould compare the objects with the cache
+     been modified) are sent, so we should compare the objects with the cache
      and get the deltas out of that. When a successful update is made to the
      server, the cache must be updated.
 
index c92b817..1b09e99 100644 (file)
        xmlns="http://schemas.novell.com/2003/10/NCSP/methods.xsd" \r
        xmlns:tns="http://schemas.novell.com/2003/10/NCSP/methods.xsd"\r
        xmlns:types="http://schemas.novell.com/2003/10/NCSP/types.xsd"\r
+       xmlns:enums="http://schemas.novell.com/2003/10/NCSP/enums.xsd"\r
        xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
 \r
-       <!-- Method: login (Request) -->\r
-       <xs:element name="loginRequest">\r
+       <!-- Method accept (Request) -->\r
+       <xs:element name="acceptRequest">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="username" type="xs:string" />\r
-                               <xs:element name="password" type="xs:string" />\r
-                               <xs:element name="language" type="xs:language" />\r
+                               <xs:element name="items" type="types:ItemRefList"/>\r
+                               <xs:element name="comment" type="xs:string"/>\r
+                               <xs:element name="acceptLevel" type="types:AcceptLevel"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method: login (Response) -->\r
-       <xs:element name="loginResponse">\r
+\r
+       <!-- Method accept (Response) -->\r
+       <xs:element name="acceptResponse">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="status" type="types:Status" />\r
-                               <xs:element name="session" type="xs:string" />\r
-                               <xs:element name="userinfo" type="types:UserInfo" />\r
+                               <xs:element name="status" type="types:Status"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method: logout (Request) -->\r
-       <xs:element name="logoutRequest">\r
+\r
+       <!-- Method closeFreeBusySession (Request) -->\r
+       <xs:element name="closeFreeBusySessionRequest">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="session" type="xs:string" />\r
+                               <xs:element name="session" type="xs:string"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method: logout (Response) -->\r
-       <xs:element name="logoutResponse">\r
+\r
+       <!-- Method closeFreeBusySession (Response) -->\r
+       <xs:element name="closeFreeBusySessionResponse">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="status" type="types:Status" />\r
+                               <xs:element name="status" type="types:Status"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method: getFolderList (Request) -->\r
-       <xs:element name="getFolderListRequest">\r
+\r
+       <!-- Method complete (Request) -->\r
+       <xs:element name="completeRequest">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="parent" type="types:uid" />\r
-                               <xs:element name="view" type="types:View" />\r
-                               <xs:element name="recurse" type="xs:boolean" />\r
+                               <xs:element name="items" type="types:ItemRefList"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method: getFolderList (Response) -->\r
-       <xs:element name="getFolderListResponse">\r
+\r
+       <!-- Method complete (Response) -->\r
+       <xs:element name="completeResponse">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="status" type="types:Status" />\r
-                               <xs:element name="folders" type="types:FolderList" />\r
+                               <xs:element name="status" type="types:Status"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method: getFolder (Request) -->\r
-       <xs:element name="getFolderRequest">\r
+\r
+       <!-- Method createCursor (Request) -->\r
+       <xs:element name="createCursorRequest">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="id" type="types:uid"/>\r
+                               <xs:element name="container" type="types:uid"/>\r
                                <xs:element name="view" type="types:View"/>\r
+                               <xs:element name="filter" type="types:Filter"/>\r
+                               <xs:element name="sort" type="types:Sort"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
 \r
-       <!-- Method getFolder (Response) -->\r
-       <xs:element name="getFolderResponse">\r
+       <!-- Method createCursor (Response) -->\r
+       <xs:element name="createCursorResponse">\r
                <xs:complexType>\r
                        <xs:sequence>\r
+                               <xs:element name="cursor" type="xs:int"/>\r
                                <xs:element name="status" type="types:Status"/>\r
-                               <xs:element name="folder" type="types:Folder"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method getItems (Request) -->\r
-       <xs:element name="getItemsRequest">\r
+\r
+       <!-- Method createFolder (Request) -->\r
+       <xs:element name="createFolderRequest">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="container" type="types:uid"/>\r
-                               <xs:element name="view" type="types:View"/>\r
-                               <xs:element name="filter" type="types:Filter"/>\r
-                               <xs:element name="sort" type="types:Sort"/>\r
-                               <xs:element name="count" type="xs:int" default="-1"/>\r
+                               <xs:element name="folder" type="types:Folder"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
 \r
-       <!-- Method getItems (Response) -->\r
-       <xs:element name="getItemsResponse">\r
+       <!-- Method createFolder (Response) -->\r
+       <xs:element name="createFolderResponse">\r
                <xs:complexType>\r
                        <xs:sequence>\r
+                               <xs:element name="id" type="types:uid"/>\r
                                <xs:element name="status" type="types:Status"/>\r
-                               <xs:element name="items" type="types:ItemList"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
 \r
-       <!-- Method createCursor (Request) -->\r
-       <xs:element name="createCursorRequest">\r
+       <!-- Method createItem (Request) -->\r
+       <xs:element name="createItemRequest">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="container" type="types:uid"/>\r
-                               <xs:element name="view" type="types:View"/>\r
-                               <xs:element name="filter" type="types:Filter"/>\r
-                               <xs:element name="sort" type="types:Sort"/>\r
+                               <xs:element name="item" type="types:Item"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
 \r
-       <!-- Method createCursor (Response) -->\r
-       <xs:element name="createCursorResponse">\r
+       <!-- Method createItem (Response) -->\r
+       <xs:element name="createItemResponse">\r
                <xs:complexType>\r
                        <xs:sequence>\r
+                               <xs:element name="id" type="types:uid"/>\r
                                <xs:element name="status" type="types:Status"/>\r
-                               <xs:element name="cursor" type="xs:int"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
 \r
-       <!-- Method positionCursor (Request) -->\r
-       <xs:element name="positionCursorRequest">\r
+       <!-- Method decline (Request) -->\r
+       <xs:element name="declineRequest">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="cursor" type="xs:int"/>\r
-                               <xs:element name="seek" type="types:CursorSeek"/>\r
-                               <xs:element name="offset" type="xs:int"/>\r
+                               <xs:element name="items" type="types:ItemRefList"/>\r
+                               <xs:element name="comment" type="xs:string"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
 \r
-       <!-- Method positionCursor (Response) -->\r
-       <xs:element name="positionCursorResponse">\r
+       <!-- Method decline (Response) -->\r
+       <xs:element name="declineResponse">\r
                <xs:complexType>\r
                        <xs:sequence>\r
                                <xs:element name="status" type="types:Status"/>\r
                </xs:complexType>\r
        </xs:element>\r
 \r
-       <!-- Method readCursor (Request) -->\r
-       <xs:element name="readCursorRequest">\r
+       <!-- Method delegate (Request) -->\r
+       <xs:element name="delegateRequest">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="cursor" type="xs:int"/>\r
-                               <xs:element name="forward" type="xs:boolean"/>\r
-                               <xs:element name="count" type="xs:int"/>\r
+                               <xs:element name="items" type="types:ItemRefList"/>\r
+                               <xs:element name="commentToOrganizer" type="xs:string"/>\r
+                               <xs:element name="commentToDelegatee" type="xs:string"/>\r
+                               <xs:element name="distribution" type="types:Distribution"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
 \r
-       <!-- Method readCursor (Response) -->\r
-       <xs:element name="readCursorResponse">\r
+       <!-- Method delegate (Response) -->\r
+       <xs:element name="delegateResponse">\r
                <xs:complexType>\r
                        <xs:sequence>\r
                                <xs:element name="status" type="types:Status"/>\r
-                               <xs:element name="items" type="types:ItemList"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
                </xs:complexType>\r
        </xs:element>\r
 \r
+       <!-- Method getAttachment (Request) -->\r
+       <xs:element name="getAttachmentRequest">\r
+               <xs:documentation>\r
+                       This work only for file attachments.\r
+                       If you try to specify an embedded item, you will get an error.\r
+                       If you specify offset = 0 and length = -1,\r
+                               you will receive the whole attachment.\r
+                       You can supply other values for offset and length to receive\r
+                               a part of the attachment.\r
+               </xs:documentation>\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:element name="id" type="types:uid"/>\r
+                               <xs:element name="offset" type="xs:int"/>\r
+                               <xs:element name="length" type="xs:int"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
+       <!-- Method getAttachment (Response) -->\r
+       <xs:element name="getAttachmentResponse">\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:element name="part" type="types:MessagePart"/>\r
+                               <xs:element name="status" type="types:Status"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
+       <xs:element name="getContainerListRequest">\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:element name="parent" type="types:uid"/>\r
+                               <xs:element name="view" type="types:View"/>\r
+                               <xs:element name="recurse" type="xs:boolean"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
+       <!-- Method: getContainerList (Response) -->\r
+       <xs:element name="getContainerListResponse">\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:choice>\r
+                                       <xs:element name="acl" type="types:AccessControlList"/>\r
+                                       <xs:element name="books" type="types:AddressBookList"/>\r
+                                       <xs:element name="categories" type="types:CategoryList"/>\r
+                                       <xs:element name="folders" type="types:FolderList"/>\r
+                                       <xs:element name="proxies" type="types:ProxyList"/>\r
+                                       <!-- <xs:element name="rules" type="types:RuleList"/> -->\r
+                               </xs:choice>\r
+                               <xs:element name="status" type="types:Status"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
+       <!-- Method: getFolder (Request) -->\r
+       <xs:element name="getFolderRequest">\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:element name="id" type="types:uid"/>\r
+                               <xs:element name="view" type="types:View"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
+       <!-- Method getFolder (Response) -->\r
+       <xs:element name="getFolderResponse">\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:element name="folder" type="types:Folder"/>\r
+                               <xs:element name="status" type="types:Status"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
+       <!-- Method getFreeBusy (Request) -->\r
+       <xs:element name="getFreeBusyRequest">\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:element name="session" type="xs:string"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
+       <!-- Method getFreeBusy (Response) -->\r
+       <xs:element name="getFreeBusyResponse">\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:element name="freeBusyInfo" type="types:FreeBusyInfoList"/>\r
+                               <xs:element name="status" type="types:Status"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
        <!-- Method getItem (Request) -->\r
        <xs:element name="getItemRequest">\r
                <xs:complexType>\r
        <xs:element name="getItemResponse">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="status" type="types:Status"/>\r
                                <xs:element name="item" type="types:Item"/>\r
+                               <xs:element name="status" type="types:Status"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
 \r
-       <!-- Method createItem (Request) -->\r
-       <xs:element name="createItemRequest">\r
+       <!-- Method getItems (Request) -->\r
+       <xs:element name="getItemsRequest">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="item" type="types:Item"/>\r
+                               <xs:element name="container" type="types:uid"/>\r
+                               <xs:element name="view" type="types:View"/>\r
+                               <xs:element name="filter" type="types:Filter"/>\r
+                               <xs:element name="sort" type="types:Sort"/>\r
+                               <xs:element name="count" type="xs:int" default="-1"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
 \r
-       <!-- Method createItem (Response) -->\r
-       <xs:element name="createItemResponse">\r
+       <!-- Method getItems (Response) -->\r
+       <xs:element name="getItemsResponse">\r
                <xs:complexType>\r
                        <xs:sequence>\r
+                               <xs:element name="items" type="types:ItemList"/>\r
                                <xs:element name="status" type="types:Status"/>\r
-                               <xs:element name="id" type="types:uid"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method removeItem (Request) -->\r
-       <xs:element name="removeItemRequest">\r
-               <xs:annotation>\r
-                       <xs:documentation>\r
-                               If the container is not specified then the item is \r
-                                  removed from all of the containers that it is linked\r
-                                  to and is stored in the "Trash".\r
-                               If the container is specified then the item is only\r
-                                  removed from that specific container and it's link\r
-                                  is stored in the "Trash".\r
-                       </xs:documentation>\r
-               </xs:annotation>\r
+\r
+       <!-- Method: login (Request) -->\r
+       <xs:element name="loginRequest">\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:element name="auth" type="types;Authentication"/>\r
+                               <xs:element name="language" type="xs:language"/>\r
+                               <xs:element name="version" type="xs:decimal"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
+       <!-- Method: login (Response) -->\r
+       <xs:element name="loginResponse">\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:element name="session" type="xs:string"/>\r
+                               <xs:element name="userinfo" type="types:UserInfo"/>\r
+                               <xs:element name="status" type="types:Status"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
+       <!-- Method: logout (Request) -->\r
+       <xs:element name="logoutRequest">\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:element name="session" type="xs:string"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
+       <!-- Method: logout (Response) -->\r
+       <xs:element name="logoutResponse">\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:element name="status" type="types:Status"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
+       <!-- Method markRead (Request) -->\r
+       <xs:element name="markReadRequest">\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:element name="items" type="types:ItemRefList"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
+       <!-- Method markRead (Response) -->\r
+       <xs:element name="markReadResponse">\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:element name="status" type="types:Status"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
+       <!-- Method markUnRead (Request) -->\r
+       <xs:element name="markUnReadRequest">\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:element name="items" type="types:ItemRefList"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
+       <!-- Method markUnRead (Response) -->\r
+       <xs:element name="markUnReadResponse">\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:element name="status" type="types:Status"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
+       <!-- Method modifyFolder (Request) -->\r
+       <xs:element name="modifyFolderRequest">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="container" type="types:uid"/>\r
                                <xs:element name="id" type="types:uid"/>\r
+                               <xs:element name="updates" type="types:UpdateList"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method removeItem (Response) -->\r
-       <xs:element name="removeItemResponse">\r
+\r
+       <!-- Method modifyFolder (Response) -->\r
+       <xs:element name="modifyFolderResponse">\r
                <xs:complexType>\r
                        <xs:sequence>\r
                                <xs:element name="status" type="types:Status"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method purgeItem (Request) -->\r
-       <xs:element name="purgeItemRequest">\r
-               <xs:annotation>\r
-                       <xs:documentation>\r
-                               If the container is not specified then all of the item\r
-                                  links are removed and the item is permanently deleted.\r
-                               If the container is specified then only the specific link\r
-                                  to the container is deleted. If the last remaining link\r
-                                  is deleted then the item will be deleted.\r
-                       </xs:documentation>\r
-               </xs:annotation>\r
+\r
+       <!-- Method modifyItem (Request) -->\r
+       <xs:element name="modifyItemRequest">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="container" type="types:uid"/>\r
                                <xs:element name="id" type="types:uid"/>\r
+                               <xs:element name="updates" type="types:UpdateList"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method purgeItem (Response) -->\r
-       <xs:element name="purgeItemResponse">\r
+\r
+       <!-- Method modifyItem (Response) -->\r
+       <xs:element name="modifyItemResponse">\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:element name="status" type="types:Status"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
+       <!-- Method positionCursor (Request) -->\r
+       <xs:element name="positionCursorRequest">\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:element name="cursor" type="xs:int"/>\r
+                               <xs:element name="seek" type="types:CursorSeek"/>\r
+                               <xs:element name="offset" type="xs:int"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
+       <!-- Method positionCursor (Response) -->\r
+       <xs:element name="positionCursorResponse">\r
                <xs:complexType>\r
                        <xs:sequence>\r
                                <xs:element name="status" type="types:Status"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
+\r
        <!-- Method purgeDeletedItems (Request) -->\r
        <xs:element name="purgeDeletedItemsRequest">\r
                <xs:annotation>\r
                        <xs:sequence/>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
+\r
        <!-- Method purgeDeletedItems (Response) -->\r
        <xs:element name="purgeDeletedItemsResponse">\r
                <xs:complexType>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method modifyItem (Request) -->\r
-       <xs:element name="modifyItemRequest">\r
+\r
+       <!-- Method purgeItem (Request) -->\r
+       <xs:element name="purgeItemRequest">\r
+               <xs:annotation>\r
+                       <xs:documentation>\r
+                               If the container is not specified then all of the item\r
+                                  links are removed and the item is permanently deleted.\r
+                               If the container is specified then only the specific link\r
+                                  to the container is deleted. If the last remaining link\r
+                                  is deleted then the item will be deleted.\r
+                       </xs:documentation>\r
+               </xs:annotation>\r
                <xs:complexType>\r
                        <xs:sequence>\r
+                               <xs:element name="container" type="types:uid"/>\r
                                <xs:element name="id" type="types:uid"/>\r
-                               <xs:element name="updates" type="types:UpdateList"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method modifyItem (Response) -->\r
-       <xs:element name="modifyItemResponse">\r
+\r
+       <!-- Method purgeItem (Response) -->\r
+       <xs:element name="purgeItemResponse">\r
                <xs:complexType>\r
                        <xs:sequence>\r
                                <xs:element name="status" type="types:Status"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method createFolder (Request) -->\r
-       <xs:element name="createFolderRequest">\r
+\r
+       <!-- Method readCursor (Request) -->\r
+       <xs:element name="readCursorRequest">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="folder" type="types:Folder"/>\r
+                               <xs:element name="cursor" type="xs:int"/>\r
+                               <xs:element name="forward" type="xs:boolean"/>\r
+                               <xs:element name="count" type="xs:int"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method createFolder (Response) -->\r
-       <xs:element name="createFolderResponse">\r
+\r
+       <!-- Method readCursor (Response) -->\r
+       <xs:element name="readCursorResponse">\r
                <xs:complexType>\r
                        <xs:sequence>\r
+                               <xs:element name="items" type="types:ItemList"/>\r
                                <xs:element name="status" type="types:Status"/>\r
-                               <xs:element name="id" type="types:uid"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
+\r
        <!-- Method removeFolder (Request) -->\r
        <xs:element name="removeFolderRequest">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="container" type="types:uid"/>\r
                                <xs:element name="id" type="types:uid"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
+\r
        <!-- Method removeFolder (Response) -->\r
        <xs:element name="removeFolderResponse">\r
                <xs:complexType>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method modifyFolder (Request) -->\r
-       <xs:element name="modifyFolderRequest">\r
+\r
+       <!-- Method removeItem (Request) -->\r
+       <xs:element name="removeItemRequest">\r
+               <xs:annotation>\r
+                       <xs:documentation>\r
+                               If the container is not specified then the item is \r
+                                  removed from all of the containers that it is linked\r
+                                  to and is stored in the "Trash".\r
+                               If the container is specified then the item is only\r
+                                  removed from that specific container and it's link\r
+                                  is stored in the "Trash".\r
+                       </xs:documentation>\r
+               </xs:annotation>\r
                <xs:complexType>\r
                        <xs:sequence>\r
+                               <xs:element name="container" type="types:uid"/>\r
                                <xs:element name="id" type="types:uid"/>\r
-                               <xs:element name="updates" type="types:UpdateList"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method modifyFolder (Response) -->\r
-       <xs:element name="modifyFolderResponse">\r
+\r
+       <!-- Method removeItem (Response) -->\r
+       <xs:element name="removeItemResponse">\r
                <xs:complexType>\r
                        <xs:sequence>\r
                                <xs:element name="status" type="types:Status"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method startFreeBusySession (Request) -->\r
-       <xs:element name="startFreeBusySessionRequest">\r
+\r
+       <!-- Method sendItem (Request) -->\r
+       <xs:element name="sendItemRequest">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="users" type="types:FreeBusyUserList"/>\r
-                               <xs:element name="startDate" type="xs:dateTime"/>\r
-                               <xs:element name="endDate" type="xs:dateTime"/>\r
-                               <xs:element name="timeout" type="xs:int"/>\r
+                               <xs:element name="item" type="types:Item"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method startFreeBusySession (Response) -->\r
-       <xs:element name="startFreeBusySessionResponse">\r
+\r
+       <!-- Method sendItem (Response) -->\r
+       <xs:element name="sendItemResponse">\r
                <xs:complexType>\r
                        <xs:sequence>\r
+                               <xs:element name="id" type="types:uid"/>\r
                                <xs:element name="status" type="types:Status"/>\r
-                               <xs:element name="session" type="xs:string"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method getFreeBusy (Request) -->\r
-       <xs:element name="getFreeBusyRequest">\r
-               <xs:complexType>\r
-                       <xs:sequence>\r
-                               <xs:element name="session" type="xs:string"/>\r
-                       </xs:sequence>\r
-               </xs:complexType>\r
-       </xs:element>\r
-       \r
-       <!-- Method getFreeBusy (Response) -->\r
-       <xs:element name="getFreeBusyResponse">\r
+\r
+       <!-- Method startFreeBusySession (Request) -->\r
+       <xs:element name="startFreeBusySessionRequest">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="status" type="types:Status"/>\r
-                               <xs:element name="freeBusyInfo" type="types:FreeBusyInfoList"/>\r
+                               <xs:element name="users" type="types:FreeBusyUserList"/>\r
+                               <xs:element name="startDate" type="xs:dateTime"/>\r
+                               <xs:element name="endDate" type="xs:dateTime"/>\r
+                               <xs:element name="timeout" type="xs:int"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method closeFreeBusySession (Request) -->\r
-       <xs:element name="closeFreeBusySession">\r
+\r
+       <!-- Method startFreeBusySession (Response) -->\r
+       <xs:element name="startFreeBusySessionResponse">\r
                <xs:complexType>\r
                        <xs:sequence>\r
                                <xs:element name="session" type="xs:string"/>\r
-                       </xs:sequence>\r
-               </xs:complexType>\r
-       </xs:element>\r
-       \r
-       <!-- Method closeFreeBusySession (Response) -->\r
-       <xs:element name="closeFreeBusySessionResponse">\r
-               <xs:complexType>\r
-                       <xs:sequence>\r
                                <xs:element name="status" type="types:Status"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
+\r
 </xs:schema>\r
index d8bfbaa..9020296 100644 (file)
 <?xml version="1.0" ?>\r
-<xs:schema \r
+<xs:schema\r
        targetNamespace="http://schemas.novell.com/2003/10/NCSP/types.xsd"\r
        xmlns:xs="http://www.w3.org/2001/XMLSchema"\r
        xmlns:tns="http://schemas.novell.com/2003/10/NCSP/types.xsd"\r
        xmlns:enums="http://schemas.novell.com/2003/10/NCSP/enums.xsd">\r
 \r
-       <!-- Unique ID -->\r
-       <xs:simpleType name="uid">\r
-               <xs:annotation>\r
-                       <xs:documentation>\r
-                               The unique identifier is a application defined\r
-                               string to uniquely identify an item. The string\r
-                               can optionally consist of two parts. The first\r
-                               part identifies a unique existence of an item. \r
-                               The second part of the string optionally specifies\r
-                               instance information. The first and second part of \r
-                               the ID are separated by an '@'. For this reason \r
-                               neither the first nor second part can contain an \r
-                               '@' symbol.\r
-                               \r
-                               To determine whether or not two items are the \r
-                               same item, the consumer of this API should \r
-                               compare the first part of the ids of the two\r
-                               items (i.e. all of the id up to the @ symbol).\r
-                       </xs:documentation>\r
-               </xs:annotation>\r
+       <xs:element name="acceptLevel" type="tns:AcceptLevel"/>\r
+       <xs:element name="code" type="xs:int"/>\r
+       <xs:element name="description" type="xs:string"/>\r
+       <xs:element name="displayName" type="xs:string"/>\r
+       <xs:element name="email" type="xs:string"/>\r
+       <xs:element name="endDate" type="xs:dateTime"/>\r
+       <xs:element name="id" type="tns:uid"/>\r
+       <xs:element name="modified" type="xs:dateTime"/>\r
+       <xs:element name="name" type="xs:string"/>\r
+       <xs:element name="rights" type="tns:Rights"/>\r
+       <xs:element name="startDate" type="xs:dateTime"/>\r
+       <xs:element name="subject" type="xs:string"/>\r
+       <xs:element name="uuid" type="tns:UUID"/>\r
+       <xs:element name="version" type="xs:unsignedInt"/>\r
+\r
+       <xs:simpleType name="AcceptLevel">\r
                <xs:restriction base="xs:string">\r
-                       <xs:pattern value="[^@]+(@[^@]*)?"/>\r
+                       <xs:enumeration value="Free"/>\r
+                       <xs:enumeration value="Tentative"/>\r
+                       <xs:enumeration value="Busy"/>\r
+                       <xs:enumeration value="OutOfOffice"/>\r
                </xs:restriction>\r
        </xs:simpleType>\r
-       \r
-       <!-- Unique User ID -->\r
-       <xs:simpleType name="uuid">\r
-               <xs:annotation>\r
-                       <xs:documentation>\r
-                               The UUID is the unique user ID on a given \r
-                               email system. This is used in various \r
-                               places to indicate that a sender or recipient\r
-                               is an user internal to the collaboration\r
-                               system instead of an external user (i.e. \r
-                               internet address).\r
-                       </xs:documentation>\r
-               </xs:annotation>\r
-               <xs:restriction base="xs:string" />\r
-       </xs:simpleType>\r
 \r
-       <!-- Return Status -->\r
-       <xs:complexType name="Status">\r
+       <xs:complexType name="AccessControlListEntry">\r
                <xs:sequence>\r
-                       <xs:element name="code" type="xs:int"/>\r
-                       <xs:element name="desc" type="xs:string"/>\r
-                       <xs:element name="info" type="xs:string"/>\r
-                       <xs:element name="problems" type="tns:ProblemList"/>\r
+                       <xs:element ref="tns:uuid"/>\r
+                       <xs:element ref="tns:name"/>\r
+                       <xs:element ref="tns:rights"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
 \r
-       <!-- UserInfo Structure -->\r
-       <xs:complexType name="UserInfo">\r
+       <!-- Access Control List -->\r
+       <xs:complexType name="AccessControlList">\r
                <xs:sequence>\r
-                       <xs:element name="name" type="xs:string" />\r
-                       <xs:element name="email" type="xs:string" />\r
-                       <xs:element name="uuid" type="tns:uuid" />\r
-                       <xs:any />\r
+                       <xs:element name="entry" type="tns:AccessControlListEntry" minOccurs="0" maxOccurs="unbounded"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
 \r
-       <!-- Folder List -->\r
-       <xs:complexType name="FolderList">\r
-               <xs:sequence>\r
-                       <xs:element name="folder" type="tns:Folder" minOccurs="0" maxOccurs="unbounded" />\r
-               </xs:sequence>\r
-       </xs:complexType>\r
-       \r
-       <!-- View (list of fields) -->\r
-       <xs:simpleType name="View">\r
-               <xs:list itemType="xs:string"/>\r
-       </xs:simpleType>\r
-       \r
-       <!-- Folder Structure -->\r
-       <xs:complexType name="Folder">\r
+       <xs:complexType name="AddressBook">\r
                <xs:sequence>\r
-                       <xs:element name="id" type="tns:uid"/>\r
-                       <xs:element name="name" type="xs:string" minOccurs="0" />\r
-                       <xs:element name="parent" type="tns:uid" />\r
-                       <xs:element name="description" type="xs:string" minOccurs="0" />\r
-                       <xs:element name="type" type="enums:FolderType" />\r
-                       <xs:element name="rights" type="tns:Rights" minOccurs="0" />\r
-                       <xs:element name="acl" type="tns:FolderACL" minOccurs="0" />\r
-                       <xs:element name="version" type="xs:unsignedInt" minOccurs="0" />\r
-                       <xs:element name="lastModified" type="xs:dateTime" minOccurs="0"/>\r
-                       <xs:element name="count" type="xs:int" minOccurs="0"/>\r
-                       <xs:element name="hasUnread" type="xs:boolean" minOccurs="0" />\r
-                       <xs:element name="unreadCount" type="xs:int" minOccurs="0" />\r
-                       <xs:element name="sequence" type="xs:unsignedInt" minOccurs="0" />\r
-                       <xs:element name="settings" type="tns:uid" minOccurs="0" />\r
-                       <xs:element name="hasSubfolders" type="xs:boolean" minOccurs="0" />\r
-                       <xs:element name="owner" type="tns:uuid" minOccurs="0"/>\r
-                       \r
-                       <!-- Folder Flags -->\r
-                       <xs:element name="isSystemFolder" type="xs:boolean" minOccurs="0" />\r
-                       <xs:element name="isSharedByMe" type="xs:boolean" minOccurs="0" />\r
-                       <xs:element name="isSharedToMe" type="xs:boolean" minOccurs="0" />\r
-                       \r
-                       <!-- Query Folder Properties -->\r
-                       <xs:element name="query" type="tns:Query" minOccurs="0"/>\r
-                       \r
-                       <!-- Contacts Folder Properties -->\r
-                       <xs:element name="addressBook" type="tns:uid" minOccurs="0"/>\r
-                       \r
+                       <xs:element ref="tns:id" minOccurs="0"/>\r
+                       <xs:element ref="tns:name" minOccurs="0"/>\r
+                       <xs:element ref="tns:version" minOccurs="0"/>\r
+                       <xs:element ref="tns:modified" minOccurs="0"/>\r
+                       <xs:element name="isPersonal" type="xs:boolean" minOccurs="0"/>\r
+                       <xs:element name="isFrequentContacts" type="xs:boolean" minOccurs="0"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
-       \r
-       <!-- Rights -->\r
-       <xs:complexType name="Rights">\r
-               <xs:all>\r
-                       <xs:element name="read" type="xs:boolean" minOccurs="0"/>\r
-                       <xs:element name="add" type="xs:boolean" minOccurs="0"/>\r
-                       <xs:element name="edit" type="xs:boolean" minOccurs="0"/>\r
-                       <xs:element name="delete" type="xs:boolean" minOccurs="0"/>\r
-                       <xs:element name="share" type="xs:boolean" minOccurs="0"/>\r
-                       <xs:element name="manage" type="xs:boolean" minOccurs="0"/>\r
-               </xs:all>\r
-       </xs:complexType>\r
-       \r
-       <xs:complexType name="AccessControlListEntry">\r
-               <xs:sequence>\r
-                       <xs:element name="uuid" type="tns:uuid" />\r
-                       <xs:element name="name" type="xs:string" />\r
-                       <xs:element name="rights" type="tns:Rights" />\r
-               </xs:sequence>\r
+\r
+       <xs:complexType name="AddressBookItem">\r
+               <xs:complexContent>\r
+                       <xs:extension base="tns:Item">\r
+                               <xs:sequence>\r
+                                       <xs:element ref="tns:uuid" minOccurs="0"/>\r
+                                       <xs:element name="comment" type="xs:string" minOccurs="0"/>\r
+                               </xs:sequence>\r
+                       </xs:extension>\r
+               </xs:complexContent>\r
        </xs:complexType>\r
-       \r
-       <!-- Access Control List -->\r
-       <xs:complexType name="AccessControlList">\r
+\r
+       <xs:complexType name="AddressBookList">\r
                <xs:sequence>\r
-                       <xs:element name="entry" type="tns:AccessControlListEntry" minOccurs="0" maxOccurs="unbounded"/>\r
+                       <xs:element name="book" type="tns:AddressBook" minOccurs="0" maxOccurs="unbounded"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
 \r
-       <xs:simpleType name="FolderACLStatus">\r
-               <xs:restriction base="xs:string">\r
-                       <xs:enumeration value="pending"/>\r
-                       <xs:enumeration value="accepted"/>\r
-                       <xs:enumeration value="deleted"/>\r
-               </xs:restriction>\r
-       </xs:simpleType>\r
-\r
-       <xs:complexType name="FolderACLEntry">\r
+       <xs:complexType name="Appointment">\r
                <xs:complexContent>\r
-                       <xs:extension base="tns:AccessControlListEntry">\r
+                       <xs:extension base="tns:CalendarItem">\r
                                <xs:sequence>\r
-                                       <xs:element name="status" type="tns:FolderACLStatus"/>\r
+                                       <xs:element ref="tns:endDate"/>\r
+                                       <xs:element ref="tns:acceptLevel"/>\r
+                                       <xs:element name="allDayEvent" type="xs:boolean"/>\r
+                                       <xs:element name="place" type="xs:string"/>\r
                                </xs:sequence>\r
                        </xs:extension>\r
                </xs:complexContent>\r
        </xs:complexType>\r
 \r
-       <xs:complexType name="FolderACL">\r
-               <xs:sequence>\r
-                       <xs:element name="entry" type="tns:FolderACLEntry" minOccurs="0" maxOccurs="unbounded"/>\r
-               </xs:sequence>\r
+       <xs:complexType name="AttachmentID">\r
+               <xs:simpleContent>\r
+                       <xs:extension base="tns:uid">\r
+                               <xs:attribute name="itemReference" type="xs:boolean"/>\r
+                       </xs:extension>\r
+               </xs:simpleContent>\r
        </xs:complexType>\r
-       \r
-       <!-- Item List -->\r
-       <xs:complexType name="ItemList">\r
+\r
+       <xs:complexType name="AttachmentInfo">\r
                <xs:sequence>\r
-                       <xs:element name="item" type="tns:Item" minOccurs="0" maxOccurs="unbounded"/>\r
+                       <xs:element name="attachment" type="tns:AttachmentItemInfo" maxOccurs="unbounded"/>\r
                </xs:sequence>\r
-               <xs:attribute name="offset" type="xs:int"/>\r
-               <xs:attribute name="count" type="xs:int"/>\r
        </xs:complexType>\r
 \r
-       <!-- Item -->\r
-       <xs:complexType name="Item">\r
+       <xs:complexType name="AttachmentItemInfo">\r
                <xs:sequence>\r
-                       <xs:element name="id" type="tns:uid"/>\r
-                       <xs:element name="container" type="tns:ContainerRef" minOccurs="1" maxOccurs="unbounded"/>\r
-                       <xs:element name="name" type="xs:string" minOccurs="0"/>\r
-                       <xs:element name="created" type="xs:dateTime" minOccurs="0"/>\r
-                       <xs:element name="categories" type="tns:CategoryRefList" minOccurs="0"/>\r
-                       <xs:element name="version" type="xs:unsignedInt" minOccurs="0"/>\r
-                       <xs:element name="modified" type="xs:dateTime" minOccurs="0"/>\r
+                       <xs:element name="id" type="tns:AttachmentID" minOccurs="0"/>\r
+                       <xs:element ref="tns:name"/>\r
+                       <xs:element name="contentId" type="xs:string" minOccurs="0"/>\r
+                       <xs:element name="contentType" type="xs:string" minOccurs="0"/>\r
+                       <xs:element name="size" type="xs:unsignedInt"/>\r
+                       <xs:element name="date" type="xs:dateTime" minOccurs="0"/>\r
+                       <xs:element name="data" type="xs:base64Binary" minOccurs="0"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
 \r
+       <xs:complexType name="Authentication">\r
+       </xs:complexType>\r
+\r
        <xs:complexType name="BoxEntry">\r
                <xs:complexContent>\r
                        <xs:extension base="tns:Item">\r
                                        <xs:element name="msgid" type="xs:string" minOccurs="0"/>\r
                                        <xs:element name="source" type="enums:ItemSource" minOccurs="0"/>\r
                                        <xs:element name="delivered" type="xs:dateTime"/>\r
-                               </xs:sequence>\r
-                       </xs:extension>\r
-               </xs:complexContent>\r
-       </xs:complexType>\r
-\r
-       <xs:complexType name="Distribution">\r
-               <xs:sequence>\r
-                       <xs:element name="from" type="tns:From" />\r
-                       <xs:element name="to" type="xs:string"/>\r
-                       <xs:element name="cc" type="xs:string"/>\r
-                       <xs:element name="bc" type="xs:string"/>\r
-                       <xs:element name="recipients" type="tns:RecipientList" />\r
-                       <xs:element name="sendoptions" type="tns:SendOptions" />\r
-               </xs:sequence>\r
-       </xs:complexType>\r
-\r
-       <xs:complexType name="Mail">\r
-               <xs:complexContent>\r
-                       <xs:extension base="tns:BoxEntry">\r
-                               <xs:sequence>\r
-                                       <xs:element name="subject" type="xs:string" />\r
-                                       <xs:element name="distribution" type="tns:Distribution" />\r
-                                       <xs:element name="message" type="tns:MessageBody" />\r
-                                       <xs:element name="attachments" type="tns:AttachmentInfo" />\r
-                                       <xs:element name="options" type="tns:ItemOptions" minOccurs="0"/>\r
+                                       <xs:element name="class" type="enums:ItemClass" minOccurs="0"/>\r
                                </xs:sequence>\r
                        </xs:extension>\r
                </xs:complexContent>\r
                <xs:complexContent>\r
                        <xs:extension base="tns:Mail">\r
                                <xs:sequence>\r
-                                       <xs:element name="startDate" type="xs:dateTime" minOccurs="0"/>\r
+                                       <xs:element ref="tns:startDate" minOccurs="0"/>\r
                                        <xs:element name="recurrance" type="xs:string" minOccurs="0"/>\r
+                                       <xs:element name="iCalId" type="xs:string" minOccurs="0"/>\r
                                </xs:sequence>\r
                        </xs:extension>\r
                </xs:complexContent>\r
        </xs:complexType>\r
 \r
-       <xs:complexType name="Appointment">\r
-               <xs:complexContent>\r
-                       <xs:extension base="tns:CalendarItem">\r
-                               <xs:sequence>\r
-                                       <xs:element name="endDate" type="xs:dateTime"/>\r
-                                       <xs:element name="acceptLevel" type="tns:AcceptLevel"/>\r
-                                       <xs:element name="allDayEvent" type="xs:boolean"/>\r
-                                       <xs:element name="place" type="xs:string"/>\r
-                               </xs:sequence>\r
-                       </xs:extension>\r
-               </xs:complexContent>\r
+       <xs:group name="CalendarReturnNotification">\r
+               <xs:sequence>\r
+                       <xs:element name="accepted" type="tns:ReturnNotificationOptions"/>\r
+                       <xs:element name="declined" type="tns:ReturnNotificationOptions"/>\r
+               </xs:sequence>\r
+       </xs:group>\r
+\r
+       <xs:complexType name="Category">\r
+               <xs:sequence>\r
+                       <xs:element ref="tns:id"/>\r
+                       <xs:element ref="tns:name" minOccurs="0"/>\r
+                       <xs:element name="type" type="enums:CategoryType"/>\r
+                       <xs:element name="color" type="xs:unsignedInt" minOccurs="0"/>\r
+                       <xs:element ref="tns:version" minOccurs="0"/>\r
+                       <xs:element ref="tns:modified" minOccurs="0"/>\r
+               </xs:sequence>\r
        </xs:complexType>\r
 \r
-       <xs:complexType name="Task">\r
+       <xs:complexType name="CategoryList">\r
+               <xs:sequence>\r
+                       <xs:element name="category" type="tns:Category" minOccurs="0" maxOccurs="unbounded"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <!-- List of category references -->\r
+       <xs:complexType name="CategoryRefList">\r
+               <xs:sequence>\r
+                       <xs:element name="category" type="tns:uid" minOccurs="0" maxOccurs="unbounded"/>\r
+               </xs:sequence>\r
+               <xs:attribute name="primary" type="tns:uid"/>\r
+       </xs:complexType>\r
+\r
+       <xs:complexType name="Contact">\r
                <xs:complexContent>\r
-                       <xs:extension base="tns:CalendarItem">\r
+                       <xs:extension base="tns:AddressBookItem">\r
                                <xs:sequence>\r
-                                       <xs:element name="dueDate" type="xs:date"/>\r
-                                       <xs:element name="priority" type="xs:string"/>\r
-                                       <xs:element name="completed" type="xs:boolean"/>\r
+                                       <xs:element name="fullName" type="tns:FullName"/>\r
+                                       <xs:element name="emailList" type="tns:EmailAddressList"/>\r
+                                       <xs:element name="imList" type="tns:ImAddressList"/>\r
+                                       <xs:element name="phoneList" type="tns:PhoneList"/>\r
+                                       <xs:element name="addressList" type="tns:PostalAddressList"/>\r
+                                       <xs:element name="officeInfo" type="tns:OfficeInfo"/>\r
+                                       <xs:element name="personalInfo" type="tns:PersonalInfo"/>\r
                                </xs:sequence>\r
                        </xs:extension>\r
                </xs:complexContent>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="Note">\r
-               <xs:complexContent>\r
-                       <xs:extension base="tns:CalendarItem"/>\r
-               </xs:complexContent>\r
+\r
+       <!-- Reference to Container (folder, address book, etc.) -->\r
+       <xs:complexType name="ContainerRef">\r
+               <xs:simpleContent>\r
+                       <xs:extension base="xs:string">\r
+                               <xs:attribute name="deleted" type="xs:dateTime"/>\r
+                       </xs:extension>\r
+               </xs:simpleContent>\r
        </xs:complexType>\r
 \r
-       <xs:complexType name="PhoneMessage">\r
+       <xs:complexType name="ContactFolder">\r
                <xs:complexContent>\r
-                       <xs:extension base="tns:Mail">\r
+                       <xs:extension base="tns:SystemFolder">\r
                                <xs:sequence>\r
-                                       <xs:element name="caller" type="xs:string"/>\r
-                                       <xs:element name="company" type="xs:string"/>\r
-                                       <xs:element name="phone" type="xs:string"/>\r
-                                       <xs:element name="flags" type="tns:PhoneFlags"/>\r
+                                       <xs:element name="addressBook" type="tns:uid" minOccurs="0"/>\r
                                </xs:sequence>\r
                        </xs:extension>\r
                </xs:complexContent>\r
        </xs:complexType>\r
 \r
+       <xs:simpleType name="ContactType">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:enumeration value="Contact"/>\r
+                       <xs:enumeration value="Group"/>\r
+                       <xs:enumeration value="Resource"/>\r
+                       <xs:enumeration value="Organization"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+\r
+       <xs:simpleType name="CursorSeek">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:enumeration value="current"/>\r
+                       <xs:enumeration value="start"/>\r
+                       <xs:enumeration value="end"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+\r
+       <xs:complexType name="Distribution">\r
+               <xs:sequence>\r
+                       <xs:element name="from" type="tns:From"/>\r
+                       <xs:element name="to" type="xs:string"/>\r
+                       <xs:element name="cc" type="xs:string"/>\r
+                       <xs:element name="bc" type="xs:string"/>\r
+                       <xs:element name="recipients" type="tns:RecipientList"/>\r
+                       <xs:element name="sendoptions" type="tns:SendOptions"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <xs:simpleType name="DistributionType">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:enumeration value="TO"/>\r
+                       <xs:enumeration value="CC"/>\r
+                       <xs:enumeration value="BC"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+\r
        <xs:complexType name="DocumentRef">\r
                <xs:complexContent>\r
                        <xs:extension base="tns:BoxEntry">\r
                        </xs:extension>\r
                </xs:complexContent>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="AddressBookItem">\r
-               <xs:complexContent>\r
-                       <xs:extension base="tns:Item">\r
-                               <xs:sequence>\r
-                                       <xs:element name="comment" type="xs:string" minOccurs="0"/>\r
-                               </xs:sequence>\r
-                       </xs:extension>\r
-               </xs:complexContent>\r
+\r
+       <xs:complexType name="EmailAddressList">\r
+               <xs:sequence>\r
+                       <xs:element ref="tns:email" minOccurs="0" maxOccurs="unbounded"/>\r
+               </xs:sequence>\r
+               <xs:attribute name="primary" type="xs:string"/>\r
        </xs:complexType>\r
 \r
-       <xs:complexType name="Contact">\r
-               <xs:complexContent>\r
-                       <xs:extension base="tns:AddressBookItem">\r
-                               <xs:sequence>\r
-                                       <xs:element name="fullname" type="tns:FullName"/>\r
-                                       <xs:element name="emailList" type="tns:EmailAddressList"/>\r
-                                       <xs:element name="imList" type="tns:ImAddressList"/>\r
-                                       <xs:element name="phoneList" type="tns:PhoneList"/>\r
-                                       <xs:element name="addressList" type="tns:PostalAddressList"/>\r
-                                       <xs:element name="officeInfo" type="tns:OfficeInfo"/>\r
-                                       <xs:element name="personalInfo" type="tns:PersonalInfo"/>\r
+       <xs:complexType name="Filter">\r
+               <xs:sequence>\r
+                       <xs:group ref="tns:FilterElements" minOccurs="0" maxOccurs="1"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <xs:group name="FilterElements">\r
+               <xs:choice>\r
+                       <xs:element name="and" type="tns:FilterGroup"/>\r
+                       <xs:element name="or" type="tns:FilterGroup"/>\r
+                       <xs:element name="not" type="tns:FilterGroup"/>\r
+                       <xs:element name="eq" type="tns:FilterEntry"/>\r
+                       <xs:element name="ne" type="tns:FilterEntry"/>\r
+                       <xs:element name="gt" type="tns:FilterEntry"/>\r
+                       <xs:element name="lt" type="tns:FilterEntry"/>\r
+                       <xs:element name="gte" type="tns:FilterEntry"/>\r
+                       <xs:element name="lte" type="tns:FilterEntry"/>\r
+                       <xs:element name="contains" type="tns:FilterEntry"/>\r
+                       <xs:element name="containsWord" type="tns:FilterEntry"/>\r
+                       <xs:element name="begins" type="tns:FilterEntry"/>\r
+                       <xs:element name="exists" type="tns:FilterEntry"/>\r
+                       <xs:element name="notExist" type="tns:FilterEntry"/>\r
+               </xs:choice>\r
+       </xs:group>\r
+\r
+       <xs:complexType name="FilterEntry">\r
+               <xs:sequence>\r
+                       <xs:element name="field" type="xs:string"/>\r
+                       <xs:element name="value" type="xs:anyType"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <xs:complexType name="FilterGroup">\r
+               <xs:sequence>\r
+                       <xs:group ref="tns:FilterElements" minOccurs="1" maxOccurs="unbounded"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <!-- Folder Structure -->\r
+       <xs:complexType name="Folder">\r
+               <xs:sequence>\r
+                       <xs:element ref="tns:id"/>\r
+                       <xs:element ref="tns:name" minOccurs="0"/>\r
+                       <xs:element name="parent" type="tns:uid"/>\r
+                       <xs:element ref="tns:description" minOccurs="0"/>\r
+                       <xs:element ref="tns:version" minOccurs="0"/>\r
+                       <xs:element ref="tns:modified" minOccurs="0"/>\r
+                       <xs:element name="count" type="xs:int" minOccurs="0"/>\r
+                       <xs:element name="hasUnread" type="xs:boolean" minOccurs="0"/>\r
+                       <xs:element name="unreadCount" type="xs:int" minOccurs="0"/>\r
+                       <xs:element name="sequence" type="xs:unsignedInt" minOccurs="0"/>\r
+                       <xs:element name="settings" type="tns:uid" minOccurs="0"/>\r
+                       <xs:element name="hasSubfolders" type="xs:boolean" minOccurs="0"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <xs:complexType name="FolderACL">\r
+               <xs:sequence>\r
+                       <xs:element name="entry" type="tns:FolderACLEntry" minOccurs="0" maxOccurs="unbounded"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <xs:complexType name="FolderACLEntry">\r
+               <xs:complexContent>\r
+                       <xs:extension base="tns:AccessControlListEntry">\r
+                               <xs:sequence>\r
+                                       <xs:element name="status" type="tns:FolderACLStatus"/>\r
                                </xs:sequence>\r
                        </xs:extension>\r
                </xs:complexContent>\r
        </xs:complexType>\r
 \r
-       <xs:complexType name="Group">\r
+       <xs:simpleType name="FolderACLStatus">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:enumeration value="pending"/>\r
+                       <xs:enumeration value="accepted"/>\r
+                       <xs:enumeration value="deleted"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+\r
+       <!-- Folder List -->\r
+       <xs:complexType name="FolderList">\r
+               <xs:sequence>\r
+                       <xs:element name="folder" type="tns:Folder" minOccurs="0" maxOccurs="unbounded"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <xs:complexType name="FreeBusyBlockList">\r
+               <xs:sequence>\r
+                       <xs:element name="block" type="tns:FreeBusyBlock" minOccurs="0" maxOccurs="unbounded"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+       \r
+       <xs:complexType name="FreeBusyBlock">\r
+               <xs:sequence>\r
+                       <xs:element ref="tns:startDate"/>\r
+                       <xs:element ref="tns:endDate"/>\r
+                       <xs:element ref="tns:acceptLevel"/>\r
+                       <xs:element ref="tns:subject"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <xs:complexType name="FreeBusyInfo">\r
                <xs:complexContent>\r
-                       <xs:extension base="tns:AddressBookItem">\r
+                       <xs:extension base="tns:FreeBusyUser">\r
                                <xs:sequence>\r
-                                       <xs:element name="members" type="tns:GroupMemberList"/>\r
+                                       <xs:element name="blocks" type="tns:FreeBusyBlockList"/>\r
                                </xs:sequence>\r
                        </xs:extension>\r
                </xs:complexContent>\r
        </xs:complexType>\r
 \r
-       <xs:complexType name="Resource">\r
+       <xs:complexType name="FreeBusyUserList">\r
+               <xs:sequence>\r
+                       <xs:element name="user" type="tns:FreeBusyUser" minOccurs="0" maxOccurs="unbounded"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <xs:complexType name="FreeBusyInfoList">\r
+               <xs:sequence>\r
+                       <xs:element name="user" type="tns:FreeBusyInfo" minOccurs="0" maxOccurs="unbounded"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <xs:complexType name="FreeBusyUser">\r
                <xs:complexContent>\r
-                       <xs:extension base="tns:AddressBookItem">\r
+                       <xs:extension base="tns:NameAndEmail"/>\r
+               </xs:complexContent>\r
+       </xs:complexType>\r
+\r
+       <xs:complexType name="From">\r
+               <xs:complexContent>\r
+                       <xs:extension base="tns:NameAndEmail">\r
                                <xs:sequence>\r
-                                       <xs:element name="phone" type="xs:string"/>\r
-                                       <xs:element name="resourceType" type="xs:string"/>\r
-                                       <xs:element name="email" type="xs:string"/>\r
-                                       <xs:element name="owner" type="tns:ItemRef"/>\r
+                                       <xs:element name="replyTo" type="xs:string"/>\r
                                </xs:sequence>\r
                        </xs:extension>\r
                </xs:complexContent>\r
        </xs:complexType>\r
 \r
-       <xs:complexType name="Organization">\r
+       <xs:complexType name="FullName">\r
+               <xs:sequence>\r
+                       <xs:element ref="tns:displayName"/>\r
+                       <xs:element name="namePrefix" type="xs:string"/>\r
+                       <xs:element name="firstName" type="xs:string"/>\r
+                       <xs:element name="middleName" type="xs:string"/>\r
+                       <xs:element name="lastName" type="xs:string"/>\r
+                       <xs:element name="nameSuffix" type="xs:string"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <xs:complexType name="Group">\r
                <xs:complexContent>\r
                        <xs:extension base="tns:AddressBookItem">\r
                                <xs:sequence>\r
-                                       <xs:element name="contact" type="tns:ItemRef"/>\r
-                                       <xs:element name="phone" type="xs:string"/>\r
-                                       <xs:element name="fax" type="xs:string"/>\r
-                                       <xs:element name="address" type="tns:PostalAddress"/>\r
-                                       <xs:element name="website" type="xs:anyURI"/>\r
+                                       <xs:element name="members" type="tns:GroupMemberList"/>\r
                                </xs:sequence>\r
                        </xs:extension>\r
                </xs:complexContent>\r
        </xs:complexType>\r
 \r
-       <!-- Reference to Container (folder, address book, etc.) -->\r
-       <xs:complexType name="ContainerRef">\r
+       <xs:complexType name="GroupMember">\r
+               <xs:sequence>\r
+                       <xs:element name="uid" type="tns:uid"/>\r
+                       <xs:element ref="tns:name"/>\r
+                       <xs:element ref="tns:email"/>\r
+                       <xs:element name="distType" type="tns:DistributionType" default="TO"/>\r
+                       <xs:element name="itemType" type="tns:ContactType" default="Contact"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <xs:complexType name="GroupMemberList">\r
+               <xs:sequence>\r
+                       <xs:element name="member" type="tns:GroupMember" minOccurs="0" maxOccurs="unbounded"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <xs:complexType name="ImAddress">\r
+               <xs:sequence>\r
+                       <xs:element name="service" type="xs:string"/>\r
+                       <xs:element name="address" type="xs:string"/>\r
+                       <!-- type = work, home, etc. -->\r
+                       <xs:element name="type" type="xs:string"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <xs:complexType name="ImAddressList">\r
+               <xs:sequence>\r
+                       <xs:element name="im" type="tns:ImAddress" minOccurs="0" maxOccurs="unbounded"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <!-- Item -->\r
+       <xs:complexType name="Item">\r
+               <xs:sequence>\r
+                       <xs:element ref="tns:id"/>\r
+                       <xs:element name="container" type="tns:ContainerRef" minOccurs="1" maxOccurs="unbounded"/>\r
+                       <xs:element ref="tns:name" minOccurs="0"/>\r
+                       <xs:element name="created" type="xs:dateTime" minOccurs="0"/>\r
+                       <xs:element name="categories" type="tns:CategoryRefList" minOccurs="0"/>\r
+                       <xs:element ref="tns:version" minOccurs="0"/>\r
+                       <xs:element ref="tns:modified" minOccurs="0"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <!-- Item List -->\r
+       <xs:complexType name="ItemList">\r
+               <xs:sequence>\r
+                       <xs:element name="item" type="tns:Item" minOccurs="0" maxOccurs="unbounded"/>\r
+               </xs:sequence>\r
+               <xs:attribute name="offset" type="xs:int"/>\r
+               <xs:attribute name="count" type="xs:int"/>\r
+       </xs:complexType>\r
+\r
+       <!-- "Send Options" that apply to any item create -->\r
+       <xs:complexType name="ItemOptions">\r
+               <xs:sequence>\r
+                       <xs:element name="priority" type="tns:ItemOptionsPriority" minOccurs="0" default="Standard"/>\r
+                       <xs:element name="expires" type="xs:dateTime" minOccurs="0"/>\r
+                       <xs:element name="delayDeliveryUntil" type="xs:dateTime" minOccurs="0"/>\r
+                       <xs:element name="concealSubject" type="xs:boolean" minOccurs="0"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <xs:simpleType name="ItemOptionsPriority">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:enumeration value="High"/>\r
+                       <xs:enumeration value="Standard"/>\r
+                       <xs:enumeration value="Low"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+\r
+       <xs:complexType name="ItemRef">\r
                <xs:simpleContent>\r
                        <xs:extension base="xs:string">\r
-                               <xs:attribute name="deleted" type="xs:dateTime" />\r
+                               <xs:attribute name="uid" type="tns:uid" use="optional"/>\r
                        </xs:extension>\r
                </xs:simpleContent>\r
        </xs:complexType>\r
 \r
+       <xs:complexType name="ItemRefList">\r
+               <xs:sequence>\r
+                       <xs:element name="item" type="tns:uid" minOccurs="1" maxOccurs="unbounded"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
        <!-- Item Status Flags -->\r
        <xs:complexType name="ItemStatus">\r
                <xs:sequence>\r
                </xs:sequence>\r
        </xs:complexType>\r
 \r
-       <!-- List of category references -->\r
-       <xs:complexType name="CategoryRefList">\r
-               <xs:sequence>\r
-                       <xs:element name="category" type="tns:uid" minOccurs="0" maxOccurs="unbounded" />\r
-               </xs:sequence>\r
-               <xs:attribute name="primary" type="tns:uid" />\r
+       <xs:complexType name="Mail">\r
+               <xs:complexContent>\r
+                       <xs:extension base="tns:BoxEntry">\r
+                               <xs:sequence>\r
+                                       <xs:element ref="tns:subject"/>\r
+                                       <xs:element name="distribution" type="tns:Distribution"/>\r
+                                       <xs:element name="message" type="tns:MessageBody"/>\r
+                                       <xs:element name="attachments" type="tns:AttachmentInfo"/>\r
+                                       <xs:element name="options" type="tns:ItemOptions" minOccurs="0"/>\r
+                               </xs:sequence>\r
+                       </xs:extension>\r
+               </xs:complexContent>\r
        </xs:complexType>\r
 \r
        <xs:complexType name="MessageBody">\r
                <xs:sequence>\r
-                       <xs:element name="part" type="tns:MessagePart" maxOccurs="unbounded" />\r
+                       <xs:element name="part" type="tns:MessagePart" maxOccurs="unbounded"/>\r
                </xs:sequence>\r
-               <xs:attribute name="defaultPart" type="xs:string" />\r
+               <xs:attribute name="defaultPart" type="xs:string"/>\r
        </xs:complexType>\r
 \r
        <xs:complexType name="MessagePart">\r
                <xs:simpleContent>\r
                        <xs:extension base="xs:base64Binary">\r
-                               <xs:attribute name="contentId" type="xs:int" />\r
-                               <xs:attribute name="contentType" type="xs:string" />\r
+                               <xs:attribute name="contentId" type="xs:string"/>\r
+                               <xs:attribute name="contentType" type="xs:string"/>\r
+                               <xs:attribute name="length" type="xs:int"/>\r
                        </xs:extension>\r
                </xs:simpleContent>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="AttachmentInfo">\r
-               <xs:sequence>\r
-                       <xs:element name="attachment" type="tns:AttachmentItemInfo" maxOccurs="unbounded" />\r
-               </xs:sequence>\r
-       </xs:complexType>\r
 \r
-       <xs:complexType name="AttachmentItemInfo">\r
+       <xs:complexType name="NameAndEmail">\r
                <xs:sequence>\r
-                       <xs:element name="id" type="tns:AttachmentID"/>\r
-                       <xs:element name="name" type="xs:string" />\r
-                       <xs:element name="contentId" type="xs:string" />\r
-                       <xs:element name="contentType" type="xs:string" />\r
-                       <xs:element name="size" type="xs:unsignedInt" />\r
-                       <xs:element name="date" type="xs:dateTime" />\r
+                       <xs:element ref="tns:displayName"/>\r
+                       <xs:element ref="tns:email"/>\r
+                       <xs:element ref="tns:uuid"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
 \r
-       <xs:complexType name="AttachmentID">\r
-               <xs:simpleContent>\r
-                       <xs:extension base="tns:uid">\r
-                               <xs:attribute name="itemReference" type="xs:boolean"/>\r
-                       </xs:extension>\r
-               </xs:simpleContent>\r
+       <xs:complexType name="Note">\r
+               <xs:complexContent>\r
+                       <xs:extension base="tns:CalendarItem"/>\r
+               </xs:complexContent>\r
        </xs:complexType>\r
-       \r
-       <!-- "Send Options" that apply to any item create -->\r
-       <xs:complexType name="ItemOptions">\r
+\r
+       <xs:complexType name="OfficeInfo">\r
                <xs:sequence>\r
-                       <xs:element name="priority" type="tns:ItemOptionsPriority" minOccurs="0" default="Standard" />\r
-                       <xs:element name="expires" type="xs:dateTime" minOccurs="0" />\r
-                       <xs:element name="delayDeliveryUntil" type="xs:dateTime" minOccurs="0" />\r
-                       <xs:element name="concealSubject" type="xs:boolean" minOccurs="0" />\r
+                       <xs:element name="organization" type="tns:ItemRef"/>\r
+                       <xs:element name="department" type="xs:string"/>\r
+                       <xs:element name="title" type="xs:string"/>\r
+                       <xs:element name="website" type="xs:anyURI"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
 \r
-       <xs:simpleType name="ItemOptionsPriority">\r
-               <xs:restriction base="xs:string">\r
-                       <xs:enumeration value="High" />\r
-                       <xs:enumeration value="Standard" />\r
-                       <xs:enumeration value="Low" />\r
-               </xs:restriction>\r
-       </xs:simpleType>\r
-\r
-       <xs:complexType name="From">\r
+       <xs:complexType name="Organization">\r
                <xs:complexContent>\r
-                       <xs:extension base="tns:NameAndEmail">\r
+                       <xs:extension base="tns:AddressBookItem">\r
                                <xs:sequence>\r
-                                       <xs:element name="replyTo" type="xs:string"/>\r
+                                       <xs:element name="contact" type="tns:ItemRef"/>\r
+                                       <xs:element name="phone" type="xs:string"/>\r
+                                       <xs:element name="fax" type="xs:string"/>\r
+                                       <xs:element name="address" type="tns:PostalAddress"/>\r
+                                       <xs:element name="website" type="xs:anyURI"/>\r
                                </xs:sequence>\r
                        </xs:extension>\r
                </xs:complexContent>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="NameAndEmail">\r
-               <xs:sequence>\r
-                       <xs:element name="displayName" type="xs:string" />\r
-                       <xs:element name="email" type="xs:string" />\r
-                       <xs:element name="uuid" type="tns:uuid" />\r
-               </xs:sequence>\r
-       </xs:complexType>\r
-       \r
-       <xs:simpleType name="DistributionType">\r
-               <xs:restriction base="xs:string">\r
-                       <xs:enumeration value="TO" />\r
-                       <xs:enumeration value="CC" />\r
-                       <xs:enumeration value="BC" />\r
-               </xs:restriction>\r
-       </xs:simpleType>\r
-       \r
-       <xs:simpleType name="RecipientType">\r
-               <xs:restriction base="xs:string">\r
-                       <xs:enumeration value="User"/>\r
-                       <xs:enumeration value="PersonalGroup"/>\r
-                       <xs:enumeration value="SystemGroup"/>\r
-                       <xs:enumeration value="PersonalGroupMember"/>\r
-                       <xs:enumeration value="SystemGroupMember"/>\r
-               </xs:restriction>\r
-       </xs:simpleType>\r
-       \r
-       <xs:complexType name="Recipient">\r
-               <xs:complexContent>\r
-                       <xs:extension base="tns:NameAndEmail">\r
-                               <xs:sequence>\r
-                                       <xs:element name="distType" type="tns:DistributionType" />\r
-                                       <xs:element name="recipType" type="tns:RecipientType" />\r
-                               </xs:sequence>\r
-                       </xs:extension>\r
-               </xs:complexContent>\r
-       </xs:complexType>\r
-       \r
-       <xs:complexType name="RecipientList">\r
-               <xs:sequence>\r
-                       <xs:element name="recipient" type="tns:Recipient" minOccurs="0" maxOccurs="unbounded" />\r
-               </xs:sequence>\r
-       </xs:complexType>\r
-       \r
-       <xs:complexType name="SendOptionsRequestReply">\r
-               <xs:attribute name="withinNDays" type="xs:unsignedInt" />\r
-       </xs:complexType>\r
-       \r
-       <xs:complexType name="SendOptions">\r
-               <xs:sequence>\r
-                       <xs:element name="requestReply" type="tns:SendOptionsRequestReply" minOccurs="0" />\r
-                       <xs:element name="mimeEncoding" type="xs:string" minOccurs="0"/>\r
-                       <xs:element name="statusTracking" type="tns:StatusTracking" minOccurs="0"/>\r
-                       <xs:element name="notification" type="tns:ReturnNotification" minOccurs="0"/>\r
-               </xs:sequence>\r
-       </xs:complexType>\r
-\r
-       <xs:complexType name="StatusTracking">\r
-               <xs:simpleContent>\r
-                       <xs:extension base="tns:StatusTrackingOptions">\r
-                               <xs:attribute name="autoDelete" type="xs:boolean" default="false"/>\r
-                       </xs:extension>\r
-               </xs:simpleContent>\r
-       </xs:complexType>\r
-\r
-       <xs:simpleType name="StatusTrackingOptions">\r
-               <xs:restriction base="xs:string">\r
-                       <xs:enumeration value="None"/>\r
-                       <xs:enumeration value="Delivered"/>\r
-                       <xs:enumeration value="DeliveredAndOpened"/>\r
-                       <xs:enumeration value="All"/>\r
-               </xs:restriction>\r
-       </xs:simpleType>\r
-\r
-       <xs:complexType name="ReturnNotification">\r
-               <xs:sequence>\r
-                       <xs:element name="opened" type="tns:ReturnNotificationOptions"/>\r
-                       <xs:choice>\r
-                               <xs:element name="deleted" type="tns:ReturnNotificationOptions"/>\r
-                               <xs:group ref="tns:CalendarReturnNotification"/>\r
-                       </xs:choice>\r
-               </xs:sequence>\r
-       </xs:complexType>\r
 \r
-       <xs:group name="CalendarReturnNotification">\r
-               <xs:sequence>\r
-                       <xs:element name="accepted" type="tns:ReturnNotificationOptions"/>\r
-                       <xs:element name="declined" type="tns:ReturnNotificationOptions"/>\r
-               </xs:sequence>\r
-       </xs:group>\r
-\r
-       <xs:complexType name="ReturnNotificationOptions">\r
+       <xs:complexType name="PersonalInfo">\r
                <xs:sequence>\r
-                       <xs:element name="mail" type="xs:boolean" default="false"/>\r
-                       <xs:element name="notify" type="xs:boolean" default="false"/>\r
+                       <xs:element name="birthday" type="xs:date" nillable="true"/>\r
+                       <xs:element name="website" type="xs:anyURI"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
 \r
-       <xs:simpleType name="AcceptLevel">\r
-               <xs:restriction base="xs:string">\r
-                       <xs:enumeration value="Free"/>\r
-                       <xs:enumeration value="Tentative"/>\r
-                       <xs:enumeration value="Busy"/>\r
-                       <xs:enumeration value="OutOfOffice"/>\r
-               </xs:restriction>\r
-       </xs:simpleType>\r
-       \r
        <xs:complexType name="PhoneFlags">\r
                <xs:sequence>\r
                        <xs:element name="called" type="xs:boolean" minOccurs="0"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
 \r
-       <xs:complexType name="FullName">\r
+       <xs:complexType name="PhoneList">\r
                <xs:sequence>\r
-                       <xs:element name="displayName" type="xs:string"/>\r
-                       <xs:element name="namePrefix" type="xs:string"/>\r
-                       <xs:element name="firstName" type="xs:string"/>\r
-                       <xs:element name="middleName" type="xs:string"/>\r
-                       <xs:element name="lastName" type="xs:string"/>\r
-                       <xs:element name="nameSuffix" type="xs:string"/>\r
+                       <xs:element name="phone" type="tns:PhoneNumber" minOccurs="0" maxOccurs="unbounded"/>\r
                </xs:sequence>\r
+               <xs:attribute name="default" type="xs:string"/>\r
        </xs:complexType>\r
-       \r
+\r
+       <xs:complexType name="PhoneMessage">\r
+               <xs:complexContent>\r
+                       <xs:extension base="tns:Mail">\r
+                               <xs:sequence>\r
+                                       <xs:element name="caller" type="xs:string"/>\r
+                                       <xs:element name="company" type="xs:string"/>\r
+                                       <xs:element name="phone" type="xs:string"/>\r
+                                       <xs:element name="flags" type="tns:PhoneFlags"/>\r
+                               </xs:sequence>\r
+                       </xs:extension>\r
+               </xs:complexContent>\r
+       </xs:complexType>\r
+\r
        <xs:complexType name="PhoneNumber">\r
                <xs:simpleContent>\r
                        <xs:extension base="xs:string">\r
                        </xs:extension>\r
                </xs:simpleContent>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="PhoneList">\r
-               <xs:sequence>\r
-                       <xs:element name="phone" type="tns:PhoneNumber" minOccurs="0" maxOccurs="unbounded"/>\r
-               </xs:sequence>\r
-               <xs:attribute name="default" type="xs:string"/>\r
+\r
+       <xs:complexType name="PlainText">\r
+               <xs:complexContent>\r
+                       <xs:extension base="tns:Authentication">\r
+                               <xs:sequence>\r
+                                       <xs:element name="username" type="xs:string"/>\r
+                                       <xs:element name="password" type="xs:string" minOccurs="0"/>\r
+                               </xs:sequence>\r
+                       </xs:extension>\r
+               </xs:complexContent>\r
        </xs:complexType>\r
-       \r
+\r
        <xs:complexType name="PostalAddress">\r
                <xs:sequence>\r
-                       <xs:element name="description" type="xs:string"/>\r
+                       <xs:element ref="tns:description"/>\r
                        <xs:element name="streetAddress" type="xs:string"/>\r
                        <xs:element name="location" type="xs:string"/>\r
                        <xs:element name="city" type="xs:string"/>\r
                </xs:sequence>\r
                <xs:attribute name="type" type="xs:string" use="required"/>\r
        </xs:complexType>\r
-       \r
+\r
        <xs:complexType name="PostalAddressList">\r
                <xs:sequence>\r
                        <xs:element name="address" type="tns:PostalAddress" minOccurs="0" maxOccurs="unbounded"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="EmailAddressList">\r
+\r
+       <xs:complexType name="ProblemEntry">\r
                <xs:sequence>\r
-                       <xs:element name="email" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>\r
+                       <xs:element name="element" type="xs:string"/>\r
+                       <xs:element ref="tns:code"/>\r
+                       <xs:element ref="tns:description"/>\r
                </xs:sequence>\r
-               <xs:attribute name="primary" type="xs:string"/>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="ImAddress">\r
+\r
+       <xs:complexType name="ProblemList">\r
                <xs:sequence>\r
-                       <xs:element name="service" type="xs:string"/>\r
-                       <xs:element name="address" type="xs:string"/>\r
-                       <!-- type = work, home, etc. -->\r
-                       <xs:element name="type" type="xs:string"/>\r
+                       <xs:element name="entry" type="tns:ProblemEntry" minOccurs="0" maxOccurs="unbounded"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="ImAddressList">\r
-               <xs:sequence>\r
-                       <xs:element name="im" type="tns:ImAddress" minOccurs="0" maxOccurs="unbounded"/>\r
-               </xs:sequence>\r
+\r
+       <xs:complexType name="Proxy">\r
+               <xs:complexContent>\r
+                       <xs:extension base="tns:NameAndEmail">\r
+                               <xs:sequence>\r
+                                       <xs:element ref="tns:id"/>\r
+                                       <xs:element ref="tns:version" minOccurs="0"/>\r
+                                       <xs:element ref="tns:modified" minOccurs="0"/>\r
+                               </xs:sequence>\r
+                       </xs:extension>\r
+               </xs:complexContent>\r
        </xs:complexType>\r
 \r
-       <xs:complexType name="OfficeInfo">\r
+       <xs:complexType name="ProxyList">\r
                <xs:sequence>\r
-                       <xs:element name="organization" type="tns:ItemRef"/>\r
-                       <xs:element name="department" type="xs:string"/>\r
-                       <xs:element name="title" type="xs:string"/>\r
-                       <xs:element name="website" type="xs:anyURI"/>\r
+                       <xs:element name="proxy" type="tns:Proxy" minOccurs="0" maxOccurs="unbounded"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="PersonalInfo">\r
+\r
+       <xs:complexType name="Query">\r
                <xs:sequence>\r
-                       <xs:element name="birthday" type="xs:date" nillable="true"/>\r
-                       <xs:element name="website" type="xs:anyURI"/>\r
+                       <xs:element name="target" type="tns:QueryTarget"/>\r
+                       <xs:element name="filter" type="tns:Filter"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
-       \r
-       <xs:simpleType name="ContactType">\r
-               <xs:restriction base="xs:string">\r
-                       <xs:enumeration value="Contact"/>\r
-                       <xs:enumeration value="Group"/>\r
-                       <xs:enumeration value="Resource"/>\r
-                       <xs:enumeration value="Organization"/>\r
-               </xs:restriction>\r
-       </xs:simpleType>\r
 \r
-       <xs:complexType name="GroupMember">\r
-               <xs:sequence>\r
-                       <xs:element name="uid" type="tns:uid"/>\r
-                       <xs:element name="name" type="xs:string"/>\r
-                       <xs:element name="email" type="xs:string"/>\r
-                       <xs:element name="distType" type="tns:DistributionType" default="TO"/>\r
-                       <xs:element name="itemType" type="tns:ContactType" default="Contact"/>\r
-               </xs:sequence>\r
+       <xs:complexType name="QueryFolder">\r
+               <xs:complexContent>\r
+                       <xs:extension base="tns:Folder">\r
+                               <xs:sequence>\r
+                                       <xs:element name="query" type="tns:Query" minOccurs="0"/>\r
+                               </xs:sequence>\r
+                       </xs:extension>\r
+               </xs:complexContent>\r
        </xs:complexType>\r
 \r
-       <xs:complexType name="GroupMemberList">\r
+       <xs:complexType name="QueryTarget">\r
                <xs:sequence>\r
-                       <xs:element name="member" type="tns:GroupMember" minOccurs="0" maxOccurs="unbounded"/>\r
+                       <xs:element name="source" type="tns:uid" minOccurs="0" maxOccurs="1"/>\r
+                       <xs:element name="container" type="tns:uid" minOccurs="0" maxOccurs="unbounded"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
 \r
-       <xs:complexType name="ItemRef">\r
-               <xs:simpleContent>\r
-                       <xs:extension base="xs:string">\r
-                               <xs:attribute name="uid" type="tns:uid" use="optional"/>\r
+       <xs:complexType name="Recipient">\r
+               <xs:complexContent>\r
+                       <xs:extension base="tns:NameAndEmail">\r
+                               <xs:sequence>\r
+                                       <xs:element name="distType" type="tns:DistributionType"/>\r
+                                       <xs:element name="recipType" type="tns:RecipientType"/>\r
+                               </xs:sequence>\r
                        </xs:extension>\r
-               </xs:simpleContent>\r
+               </xs:complexContent>\r
        </xs:complexType>\r
-       \r
-       <!-- List of updates -->\r
-       <xs:complexType name="UpdateList">\r
+\r
+       <xs:complexType name="RecipientList">\r
                <xs:sequence>\r
-                       <xs:choice minOccurs="0" maxOccurs="unbounded">\r
-                               <xs:element name="add" type="tns:UpdateEntry"/>\r
-                               <xs:element name="delete" type="tns:UpdateEntry"/>\r
-                               <xs:element name="update" type="tns:UpdateEntry"/>\r
-                       </xs:choice>\r
+                       <xs:element name="recipient" type="tns:Recipient" minOccurs="0" maxOccurs="unbounded"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
-       \r
-       <!-- Individual Update Entry -->\r
-       <xs:complexType name="UpdateEntry">\r
-               <xs:sequence>\r
-                       <xs:element name="field" type="xs:string"/>\r
-                       <xs:element name="value" type="xs:anyType"/>\r
-               </xs:sequence>\r
+\r
+       <xs:simpleType name="RecipientType">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:enumeration value="User"/>\r
+                       <xs:enumeration value="PersonalGroup"/>\r
+                       <xs:enumeration value="SystemGroup"/>\r
+                       <xs:enumeration value="PersonalGroupMember"/>\r
+                       <xs:enumeration value="SystemGroupMember"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+\r
+       <xs:complexType name="Resource">\r
+               <xs:complexContent>\r
+                       <xs:extension base="tns:AddressBookItem">\r
+                               <xs:sequence>\r
+                                       <xs:element name="phone" type="xs:string"/>\r
+                                       <xs:element name="resourceType" type="xs:string"/>\r
+                                       <xs:element ref="tns:email"/>\r
+                                       <xs:element name="owner" type="tns:ItemRef"/>\r
+                               </xs:sequence>\r
+                       </xs:extension>\r
+               </xs:complexContent>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="FilterEntry">\r
+\r
+       <xs:complexType name="ReturnNotification">\r
                <xs:sequence>\r
-                       <xs:element name="field" type="xs:string"/>\r
-                       <xs:element name="value" type="xs:anyType"/>\r
+                       <xs:element name="opened" type="tns:ReturnNotificationOptions"/>\r
+                       <xs:choice>\r
+                               <xs:element name="deleted" type="tns:ReturnNotificationOptions"/>\r
+                               <xs:group ref="tns:CalendarReturnNotification"/>\r
+                       </xs:choice>\r
                </xs:sequence>\r
        </xs:complexType>\r
-       \r
-       <xs:group name="FilterElements">\r
-               <xs:choice>\r
-                       <xs:element name="and" type="tns:FilterGroup"/>\r
-                       <xs:element name="or" type="tns:FilterGroup"/>\r
-                       <xs:element name="not" type="tns:FilterGroup"/>\r
-                       <xs:element name="eq" type="tns:FilterEntry"/>\r
-                       <xs:element name="ne" type="tns:FilterEntry"/>\r
-                       <xs:element name="gt" type="tns:FilterEntry"/>\r
-                       <xs:element name="lt" type="tns:FilterEntry"/>\r
-                       <xs:element name="gte" type="tns:FilterEntry"/>\r
-                       <xs:element name="lte" type="tns:FilterEntry"/>\r
-                       <xs:element name="contains" type="tns:FilterEntry"/>\r
-                       <xs:element name="containsWord" type="tns:FilterEntry"/>\r
-                       <xs:element name="begins" type="tns:FilterEntry"/>\r
-                       <xs:element name="exists" type="tns:FilterEntry"/>\r
-                       <xs:element name="notExist" type="tns:FilterEntry"/>\r
-               </xs:choice>\r
-       </xs:group>\r
-       \r
-       <xs:complexType name="FilterGroup">\r
+\r
+       <xs:complexType name="ReturnNotificationOptions">\r
                <xs:sequence>\r
-                       <xs:group ref="tns:FilterElements" minOccurs="1" maxOccurs="unbounded"/>\r
+                       <xs:element name="mail" type="xs:boolean" default="false"/>\r
+                       <xs:element name="notify" type="xs:boolean" default="false"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="Filter">\r
-               <xs:sequence>\r
-                       <xs:group ref="tns:FilterElements" minOccurs="0" maxOccurs="1"/>\r
-               </xs:sequence>\r
+\r
+       <!-- Rights -->\r
+       <xs:complexType name="Rights">\r
+               <xs:all>\r
+                       <xs:element name="read" type="xs:boolean" minOccurs="0"/>\r
+                       <xs:element name="add" type="xs:boolean" minOccurs="0"/>\r
+                       <xs:element name="edit" type="xs:boolean" minOccurs="0"/>\r
+                       <xs:element name="delete" type="xs:boolean" minOccurs="0"/>\r
+                       <xs:element name="share" type="xs:boolean" minOccurs="0"/>\r
+                       <xs:element name="manage" type="xs:boolean" minOccurs="0"/>\r
+               </xs:all>\r
        </xs:complexType>\r
-       \r
-       <xs:simpleType name="CursorSeek">\r
-               <xs:restriction base="xs:string">\r
-                       <xs:enumeration value="current"/>\r
-                       <xs:enumeration value="start"/>\r
-                       <xs:enumeration value="end"/>\r
-               </xs:restriction>\r
-       </xs:simpleType>\r
-       \r
-       <xs:complexType name="QueryTarget">\r
-               <xs:sequence>\r
-                       <xs:element name="source" type="tns:uid" minOccurs="0" maxOccurs="1"/>\r
-                       <xs:element name="container" type="tns:uid" minOccurs="0" maxOccurs="unbounded"/>\r
-               </xs:sequence>\r
+\r
+       <xs:complexType name="SendOptionsRequestReply">\r
+               <xs:attribute name="withinNDays" type="xs:unsignedInt"/>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="Query">\r
+\r
+       <xs:complexType name="SendOptions">\r
                <xs:sequence>\r
-                       <xs:element name="target" type="tns:QueryTarget"/>\r
-                       <xs:element name="filter" type="tns:Filter"/>\r
+                       <xs:element name="requestReply" type="tns:SendOptionsRequestReply" minOccurs="0"/>\r
+                       <xs:element name="mimeEncoding" type="xs:string" minOccurs="0"/>\r
+                       <xs:element name="statusTracking" type="tns:StatusTracking" minOccurs="0"/>\r
+                       <xs:element name="notification" type="tns:ReturnNotification" minOccurs="0"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="ProblemEntry">\r
-               <xs:sequence>\r
-                       <xs:element name="element" type="xs:string"/>\r
-                       <xs:element name="code" type="xs:int"/>\r
-                       <xs:element name="description" type="xs:int"/>\r
-               </xs:sequence>\r
+\r
+       <xs:complexType name="SharedFolder">\r
+               <xs:complexContent>\r
+                       <xs:extension base="tns:Folder">\r
+                               <xs:sequence>\r
+                                       <xs:element ref="tns:rights" minOccurs="0"/>\r
+                                       <xs:element name="acl" type="tns:FolderACL" minOccurs="0"/>\r
+                                       <xs:element name="owner" type="tns:UUID" minOccurs="0"/>\r
+                                       <xs:element name="isSharedByMe" type="xs:boolean" minOccurs="0"/>\r
+                                       <xs:element name="isSharedToMe" type="xs:boolean" minOccurs="0"/>\r
+                               </xs:sequence>\r
+                       </xs:extension>\r
+               </xs:complexContent>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="ProblemList">\r
+\r
+       <!-- Return Status -->\r
+       <xs:complexType name="Status">\r
                <xs:sequence>\r
-                       <xs:element name="entry" type="tns:ProblemEntry" minOccurs="0" maxOccurs="unbounded"/>\r
+                       <xs:element ref="tns:code"/>\r
+                       <xs:element ref="tns:description" minOccurs="0"/>\r
+                       <xs:element name="info" type="xs:string" minOccurs="0"/>\r
+                       <xs:element name="problems" type="tns:ProblemList" minOccurs="0"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="FreeBusyUserList">\r
-               <xs:sequence>\r
-                       <xs:element name="user" type="tns:FreeBusyUser" minOccurs="0" maxOccurs="unbounded"/>\r
-               </xs:sequence>\r
+\r
+       <xs:complexType name="StatusTracking">\r
+               <xs:simpleContent>\r
+                       <xs:extension base="tns:StatusTrackingOptions">\r
+                               <xs:attribute name="autoDelete" type="xs:boolean" default="false"/>\r
+                       </xs:extension>\r
+               </xs:simpleContent>\r
        </xs:complexType>\r
 \r
-       <xs:complexType name="FreeBusyUser">\r
+       <xs:simpleType name="StatusTrackingOptions">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:enumeration value="None"/>\r
+                       <xs:enumeration value="Delivered"/>\r
+                       <xs:enumeration value="DeliveredAndOpened"/>\r
+                       <xs:enumeration value="All"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+\r
+       <xs:complexType name="SystemFolder">\r
                <xs:complexContent>\r
-                       <xs:extension base="tns:NameAndEmail"/>\r
+                       <xs:extension base="tns:Folder">\r
+                               <xs:sequence>\r
+                                       <xs:element name="isSystemFolder" type="xs:boolean" minOccurs="0"/>\r
+                                       <xs:element name="type" type="enums:FolderType"/>\r
+                               </xs:sequence>\r
+                       </xs:extension>\r
                </xs:complexContent>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="FreeBusyInfoList">\r
-               <xs:sequence>\r
-                       <xs:element name="user" type="tns:FreeBusyInfo" minOccurs="0" maxOccurs="unbounded"/>\r
-               </xs:sequence>\r
+\r
+       <xs:complexType name="Task">\r
+               <xs:complexContent>\r
+                       <xs:extension base="tns:CalendarItem">\r
+                               <xs:sequence>\r
+                                       <xs:element name="dueDate" type="xs:date"/>\r
+                                       <xs:element name="taskPriority" type="xs:string"/>\r
+                                       <xs:element name="completed" type="xs:boolean"/>\r
+                               </xs:sequence>\r
+                       </xs:extension>\r
+               </xs:complexContent>\r
        </xs:complexType>\r
 \r
-       <xs:complexType name="FreeBusyInfo">\r
+       <xs:complexType name="TrustedApplication">\r
                <xs:complexContent>\r
-                       <xs:extension base="tns:FreeBusyUser">\r
+                       <xs:extension base="tns:Authentication">\r
                                <xs:sequence>\r
-                                       <xs:element name="blocks" type="tns:FreeBusyBlockList"/>\r
+                                       <xs:element name="name" type="xs:string"/>\r
+                                       <xs:element name="key" type="xs:string"/>\r
                                </xs:sequence>\r
                        </xs:extension>\r
                </xs:complexContent>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="FreeBusyBlockList">\r
+\r
+       <!-- Unique ID -->\r
+       <xs:simpleType name="uid">\r
+               <xs:annotation>\r
+                       <xs:documentation>\r
+                               The unique identifier is a application defined\r
+                               string to uniquely identify an item. The string\r
+                               can optionally consist of two parts. The first\r
+                               part identifies a unique existence of an item. \r
+                               The second part of the string optionally specifies\r
+                               instance information. The first and second part of \r
+                               the ID are separated by an '@'. For this reason \r
+                               neither the first nor second part can contain an \r
+                               '@' symbol.\r
+                               \r
+                               To determine whether or not two items are the \r
+                               same item, the consumer of this API should \r
+                               compare the first part of the ids of the two\r
+                               items (i.e. all of the id up to the @ symbol).\r
+                       </xs:documentation>\r
+               </xs:annotation>\r
+               <xs:restriction base="xs:string">\r
+                       <xs:pattern value="[^@]+(@*)?"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+\r
+       <!-- Individual Update Entry -->\r
+       <xs:complexType name="UpdateEntry">\r
                <xs:sequence>\r
-                       <xs:element name="block" type="tns:FreeBusyBlock" minOccurs="0" maxOccurs="unbounded"/>\r
+                       <xs:element name="field" type="xs:string"/>\r
+                       <xs:element name="value" type="xs:anyType"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="FreeBusyBlock">\r
+\r
+       <!-- List of updates -->\r
+       <xs:complexType name="UpdateList">\r
+               <xs:sequence>\r
+                       <xs:choice minOccurs="0" maxOccurs="unbounded">\r
+                               <xs:element name="add" type="tns:UpdateEntry"/>\r
+                               <xs:element name="delete" type="tns:UpdateEntry"/>\r
+                               <xs:element name="update" type="tns:UpdateEntry"/>\r
+                       </xs:choice>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <!-- UserInfo Structure -->\r
+       <xs:complexType name="UserInfo">\r
                <xs:sequence>\r
-                       <xs:element name="startDate" type="xs:dateTime"/>\r
-                       <xs:element name="endDate" type="xs:dateTime"/>\r
-                       <xs:element name="acceptLevel" type="tns:AcceptLevel"/>\r
-                       <xs:element name="subject" type="xs:string"/>\r
+                       <xs:element ref="tns:name"/>\r
+                       <xs:element ref="tns:email"/>\r
+                       <xs:element ref="tns:uuid"/>\r
+                       <xs:any/>\r
                </xs:sequence>\r
        </xs:complexType>\r
-</xs:schema>
+\r
+       <!-- Unique User ID -->\r
+       <xs:simpleType name="UUID">\r
+               <xs:annotation>\r
+                       <xs:documentation>\r
+                               The UUID is the unique user ID on a given \r
+                               email system. This is used in various \r
+                               places to indicate that a sender or recipient\r
+                               is an user internal to the collaboration\r
+                               system instead of an external user (i.e. \r
+                               internet address).\r
+                       </xs:documentation>\r
+               </xs:annotation>\r
+               <xs:restriction base="xs:string"/>\r
+       </xs:simpleType>\r
+\r
+       <!-- View (list of fields) -->\r
+       <xs:simpleType name="View">\r
+               <xs:list itemType="xs:string"/>\r
+       </xs:simpleType>\r
+</xs:schema>\r
index 2982cc9..3e32c07 100644 (file)
  * USA
  */
 
+#include <config.h>
 #include "e-gw-message.h"
 
+#ifdef G_ENABLE_DEBUG
+
+static void
+print_header (gpointer name, gpointer value, gpointer data)
+{
+       g_print ("%s: %s\n", (char *) name, (char *) value);
+}
+
+static void
+debug_handler (SoupMessage *msg, gpointer user_data)
+{
+       g_print ("%d %s\nE2k-Debug: %p @ %lu\n",
+                msg->status_code, msg->reason_phrase,
+                msg, time (0));
+
+       /* print headers */
+       soup_message_foreach_header (msg, print_header, NULL);
+
+       /* print response */
+       if (msg->response.length) {
+               fputc ('\n', stdout);
+               fwrite (msg->response.body, 1, msg->response.length, stdout);
+               fputc ('\n', stdout);
+       }
+}
+
+static void
+setup_debug (SoupSoapMessage *msg)
+{
+       const SoupUri *suri;
+
+       uri = soup_message_get_uri (SOUP_MESSAGE (msg));
+       g_print ("%s %s%s%s HTTP/1.1\nSOAP-Debug: %p @ %lu\n",
+                SOUP_MESSAGE (msg)->method, uri->path,
+                uri->query ? "?" : "",
+                uri->query ? uri->query : "",
+                msg, (unsigned long) time (0));
+
+       /* print message headers */
+       print_header ("Host", uri->host, NULL);
+       soup_message_foreach_header (SOUP_MESSAGE (msg)->request_headers, print_header, NULL);
+
+       /* print request's body */
+       fputc ('\n', stdout);
+       fwrite (SOUP_MESSAGE (msg)->request.body, 1, SOUP_MESSAGE (msg)->request.length, stdout);
+       fputc ('\n', stdout);
+
+       soup_message_handler (SOUP_MESSAGE (msg), SOUP_HANDLER_POST_BODY, debug_handler, NULL);
+}
+
+#endif
+
 SoupSoapMessage *
 e_gw_message_new_with_header (const char *uri, const char *method_name)
 {
        SoupSoapMessage *msg;
 
-       msg = soup_soap_message_new (SOUP_METHOD_GET, uri, FALSE, NULL, NULL, NULL);
+       msg = soup_soap_message_new (SOUP_METHOD_POST, uri, FALSE, NULL, NULL, NULL);
        if (!msg) {
                g_warning (G_STRLOC ": Could not build SOAP message");
                return NULL;
        }
 
+#ifdef G_ENABLE_DEBUG
+       setup_debug (
+#endif
+
+       soup_message_add_header (SOUP_MESSAGE (msg)->request_headers, "User-Agent",
+                                "Evolution/" VERSION);
+
        soup_soap_message_start_envelope (msg);
        soup_soap_message_start_body (msg);
+       soup_soap_message_add_attribute (msg, "encodingStyle", "", "SOAP-ENV", NULL);
+
        soup_soap_message_start_element (msg, method_name, NULL, NULL);
 
        return msg;
index c92b817..1b09e99 100644 (file)
        xmlns="http://schemas.novell.com/2003/10/NCSP/methods.xsd" \r
        xmlns:tns="http://schemas.novell.com/2003/10/NCSP/methods.xsd"\r
        xmlns:types="http://schemas.novell.com/2003/10/NCSP/types.xsd"\r
+       xmlns:enums="http://schemas.novell.com/2003/10/NCSP/enums.xsd"\r
        xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
 \r
-       <!-- Method: login (Request) -->\r
-       <xs:element name="loginRequest">\r
+       <!-- Method accept (Request) -->\r
+       <xs:element name="acceptRequest">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="username" type="xs:string" />\r
-                               <xs:element name="password" type="xs:string" />\r
-                               <xs:element name="language" type="xs:language" />\r
+                               <xs:element name="items" type="types:ItemRefList"/>\r
+                               <xs:element name="comment" type="xs:string"/>\r
+                               <xs:element name="acceptLevel" type="types:AcceptLevel"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method: login (Response) -->\r
-       <xs:element name="loginResponse">\r
+\r
+       <!-- Method accept (Response) -->\r
+       <xs:element name="acceptResponse">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="status" type="types:Status" />\r
-                               <xs:element name="session" type="xs:string" />\r
-                               <xs:element name="userinfo" type="types:UserInfo" />\r
+                               <xs:element name="status" type="types:Status"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method: logout (Request) -->\r
-       <xs:element name="logoutRequest">\r
+\r
+       <!-- Method closeFreeBusySession (Request) -->\r
+       <xs:element name="closeFreeBusySessionRequest">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="session" type="xs:string" />\r
+                               <xs:element name="session" type="xs:string"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method: logout (Response) -->\r
-       <xs:element name="logoutResponse">\r
+\r
+       <!-- Method closeFreeBusySession (Response) -->\r
+       <xs:element name="closeFreeBusySessionResponse">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="status" type="types:Status" />\r
+                               <xs:element name="status" type="types:Status"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method: getFolderList (Request) -->\r
-       <xs:element name="getFolderListRequest">\r
+\r
+       <!-- Method complete (Request) -->\r
+       <xs:element name="completeRequest">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="parent" type="types:uid" />\r
-                               <xs:element name="view" type="types:View" />\r
-                               <xs:element name="recurse" type="xs:boolean" />\r
+                               <xs:element name="items" type="types:ItemRefList"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method: getFolderList (Response) -->\r
-       <xs:element name="getFolderListResponse">\r
+\r
+       <!-- Method complete (Response) -->\r
+       <xs:element name="completeResponse">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="status" type="types:Status" />\r
-                               <xs:element name="folders" type="types:FolderList" />\r
+                               <xs:element name="status" type="types:Status"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method: getFolder (Request) -->\r
-       <xs:element name="getFolderRequest">\r
+\r
+       <!-- Method createCursor (Request) -->\r
+       <xs:element name="createCursorRequest">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="id" type="types:uid"/>\r
+                               <xs:element name="container" type="types:uid"/>\r
                                <xs:element name="view" type="types:View"/>\r
+                               <xs:element name="filter" type="types:Filter"/>\r
+                               <xs:element name="sort" type="types:Sort"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
 \r
-       <!-- Method getFolder (Response) -->\r
-       <xs:element name="getFolderResponse">\r
+       <!-- Method createCursor (Response) -->\r
+       <xs:element name="createCursorResponse">\r
                <xs:complexType>\r
                        <xs:sequence>\r
+                               <xs:element name="cursor" type="xs:int"/>\r
                                <xs:element name="status" type="types:Status"/>\r
-                               <xs:element name="folder" type="types:Folder"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method getItems (Request) -->\r
-       <xs:element name="getItemsRequest">\r
+\r
+       <!-- Method createFolder (Request) -->\r
+       <xs:element name="createFolderRequest">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="container" type="types:uid"/>\r
-                               <xs:element name="view" type="types:View"/>\r
-                               <xs:element name="filter" type="types:Filter"/>\r
-                               <xs:element name="sort" type="types:Sort"/>\r
-                               <xs:element name="count" type="xs:int" default="-1"/>\r
+                               <xs:element name="folder" type="types:Folder"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
 \r
-       <!-- Method getItems (Response) -->\r
-       <xs:element name="getItemsResponse">\r
+       <!-- Method createFolder (Response) -->\r
+       <xs:element name="createFolderResponse">\r
                <xs:complexType>\r
                        <xs:sequence>\r
+                               <xs:element name="id" type="types:uid"/>\r
                                <xs:element name="status" type="types:Status"/>\r
-                               <xs:element name="items" type="types:ItemList"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
 \r
-       <!-- Method createCursor (Request) -->\r
-       <xs:element name="createCursorRequest">\r
+       <!-- Method createItem (Request) -->\r
+       <xs:element name="createItemRequest">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="container" type="types:uid"/>\r
-                               <xs:element name="view" type="types:View"/>\r
-                               <xs:element name="filter" type="types:Filter"/>\r
-                               <xs:element name="sort" type="types:Sort"/>\r
+                               <xs:element name="item" type="types:Item"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
 \r
-       <!-- Method createCursor (Response) -->\r
-       <xs:element name="createCursorResponse">\r
+       <!-- Method createItem (Response) -->\r
+       <xs:element name="createItemResponse">\r
                <xs:complexType>\r
                        <xs:sequence>\r
+                               <xs:element name="id" type="types:uid"/>\r
                                <xs:element name="status" type="types:Status"/>\r
-                               <xs:element name="cursor" type="xs:int"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
 \r
-       <!-- Method positionCursor (Request) -->\r
-       <xs:element name="positionCursorRequest">\r
+       <!-- Method decline (Request) -->\r
+       <xs:element name="declineRequest">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="cursor" type="xs:int"/>\r
-                               <xs:element name="seek" type="types:CursorSeek"/>\r
-                               <xs:element name="offset" type="xs:int"/>\r
+                               <xs:element name="items" type="types:ItemRefList"/>\r
+                               <xs:element name="comment" type="xs:string"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
 \r
-       <!-- Method positionCursor (Response) -->\r
-       <xs:element name="positionCursorResponse">\r
+       <!-- Method decline (Response) -->\r
+       <xs:element name="declineResponse">\r
                <xs:complexType>\r
                        <xs:sequence>\r
                                <xs:element name="status" type="types:Status"/>\r
                </xs:complexType>\r
        </xs:element>\r
 \r
-       <!-- Method readCursor (Request) -->\r
-       <xs:element name="readCursorRequest">\r
+       <!-- Method delegate (Request) -->\r
+       <xs:element name="delegateRequest">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="cursor" type="xs:int"/>\r
-                               <xs:element name="forward" type="xs:boolean"/>\r
-                               <xs:element name="count" type="xs:int"/>\r
+                               <xs:element name="items" type="types:ItemRefList"/>\r
+                               <xs:element name="commentToOrganizer" type="xs:string"/>\r
+                               <xs:element name="commentToDelegatee" type="xs:string"/>\r
+                               <xs:element name="distribution" type="types:Distribution"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
 \r
-       <!-- Method readCursor (Response) -->\r
-       <xs:element name="readCursorResponse">\r
+       <!-- Method delegate (Response) -->\r
+       <xs:element name="delegateResponse">\r
                <xs:complexType>\r
                        <xs:sequence>\r
                                <xs:element name="status" type="types:Status"/>\r
-                               <xs:element name="items" type="types:ItemList"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
                </xs:complexType>\r
        </xs:element>\r
 \r
+       <!-- Method getAttachment (Request) -->\r
+       <xs:element name="getAttachmentRequest">\r
+               <xs:documentation>\r
+                       This work only for file attachments.\r
+                       If you try to specify an embedded item, you will get an error.\r
+                       If you specify offset = 0 and length = -1,\r
+                               you will receive the whole attachment.\r
+                       You can supply other values for offset and length to receive\r
+                               a part of the attachment.\r
+               </xs:documentation>\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:element name="id" type="types:uid"/>\r
+                               <xs:element name="offset" type="xs:int"/>\r
+                               <xs:element name="length" type="xs:int"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
+       <!-- Method getAttachment (Response) -->\r
+       <xs:element name="getAttachmentResponse">\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:element name="part" type="types:MessagePart"/>\r
+                               <xs:element name="status" type="types:Status"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
+       <xs:element name="getContainerListRequest">\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:element name="parent" type="types:uid"/>\r
+                               <xs:element name="view" type="types:View"/>\r
+                               <xs:element name="recurse" type="xs:boolean"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
+       <!-- Method: getContainerList (Response) -->\r
+       <xs:element name="getContainerListResponse">\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:choice>\r
+                                       <xs:element name="acl" type="types:AccessControlList"/>\r
+                                       <xs:element name="books" type="types:AddressBookList"/>\r
+                                       <xs:element name="categories" type="types:CategoryList"/>\r
+                                       <xs:element name="folders" type="types:FolderList"/>\r
+                                       <xs:element name="proxies" type="types:ProxyList"/>\r
+                                       <!-- <xs:element name="rules" type="types:RuleList"/> -->\r
+                               </xs:choice>\r
+                               <xs:element name="status" type="types:Status"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
+       <!-- Method: getFolder (Request) -->\r
+       <xs:element name="getFolderRequest">\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:element name="id" type="types:uid"/>\r
+                               <xs:element name="view" type="types:View"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
+       <!-- Method getFolder (Response) -->\r
+       <xs:element name="getFolderResponse">\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:element name="folder" type="types:Folder"/>\r
+                               <xs:element name="status" type="types:Status"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
+       <!-- Method getFreeBusy (Request) -->\r
+       <xs:element name="getFreeBusyRequest">\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:element name="session" type="xs:string"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
+       <!-- Method getFreeBusy (Response) -->\r
+       <xs:element name="getFreeBusyResponse">\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:element name="freeBusyInfo" type="types:FreeBusyInfoList"/>\r
+                               <xs:element name="status" type="types:Status"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
        <!-- Method getItem (Request) -->\r
        <xs:element name="getItemRequest">\r
                <xs:complexType>\r
        <xs:element name="getItemResponse">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="status" type="types:Status"/>\r
                                <xs:element name="item" type="types:Item"/>\r
+                               <xs:element name="status" type="types:Status"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
 \r
-       <!-- Method createItem (Request) -->\r
-       <xs:element name="createItemRequest">\r
+       <!-- Method getItems (Request) -->\r
+       <xs:element name="getItemsRequest">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="item" type="types:Item"/>\r
+                               <xs:element name="container" type="types:uid"/>\r
+                               <xs:element name="view" type="types:View"/>\r
+                               <xs:element name="filter" type="types:Filter"/>\r
+                               <xs:element name="sort" type="types:Sort"/>\r
+                               <xs:element name="count" type="xs:int" default="-1"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
 \r
-       <!-- Method createItem (Response) -->\r
-       <xs:element name="createItemResponse">\r
+       <!-- Method getItems (Response) -->\r
+       <xs:element name="getItemsResponse">\r
                <xs:complexType>\r
                        <xs:sequence>\r
+                               <xs:element name="items" type="types:ItemList"/>\r
                                <xs:element name="status" type="types:Status"/>\r
-                               <xs:element name="id" type="types:uid"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method removeItem (Request) -->\r
-       <xs:element name="removeItemRequest">\r
-               <xs:annotation>\r
-                       <xs:documentation>\r
-                               If the container is not specified then the item is \r
-                                  removed from all of the containers that it is linked\r
-                                  to and is stored in the "Trash".\r
-                               If the container is specified then the item is only\r
-                                  removed from that specific container and it's link\r
-                                  is stored in the "Trash".\r
-                       </xs:documentation>\r
-               </xs:annotation>\r
+\r
+       <!-- Method: login (Request) -->\r
+       <xs:element name="loginRequest">\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:element name="auth" type="types;Authentication"/>\r
+                               <xs:element name="language" type="xs:language"/>\r
+                               <xs:element name="version" type="xs:decimal"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
+       <!-- Method: login (Response) -->\r
+       <xs:element name="loginResponse">\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:element name="session" type="xs:string"/>\r
+                               <xs:element name="userinfo" type="types:UserInfo"/>\r
+                               <xs:element name="status" type="types:Status"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
+       <!-- Method: logout (Request) -->\r
+       <xs:element name="logoutRequest">\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:element name="session" type="xs:string"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
+       <!-- Method: logout (Response) -->\r
+       <xs:element name="logoutResponse">\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:element name="status" type="types:Status"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
+       <!-- Method markRead (Request) -->\r
+       <xs:element name="markReadRequest">\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:element name="items" type="types:ItemRefList"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
+       <!-- Method markRead (Response) -->\r
+       <xs:element name="markReadResponse">\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:element name="status" type="types:Status"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
+       <!-- Method markUnRead (Request) -->\r
+       <xs:element name="markUnReadRequest">\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:element name="items" type="types:ItemRefList"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
+       <!-- Method markUnRead (Response) -->\r
+       <xs:element name="markUnReadResponse">\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:element name="status" type="types:Status"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
+       <!-- Method modifyFolder (Request) -->\r
+       <xs:element name="modifyFolderRequest">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="container" type="types:uid"/>\r
                                <xs:element name="id" type="types:uid"/>\r
+                               <xs:element name="updates" type="types:UpdateList"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method removeItem (Response) -->\r
-       <xs:element name="removeItemResponse">\r
+\r
+       <!-- Method modifyFolder (Response) -->\r
+       <xs:element name="modifyFolderResponse">\r
                <xs:complexType>\r
                        <xs:sequence>\r
                                <xs:element name="status" type="types:Status"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method purgeItem (Request) -->\r
-       <xs:element name="purgeItemRequest">\r
-               <xs:annotation>\r
-                       <xs:documentation>\r
-                               If the container is not specified then all of the item\r
-                                  links are removed and the item is permanently deleted.\r
-                               If the container is specified then only the specific link\r
-                                  to the container is deleted. If the last remaining link\r
-                                  is deleted then the item will be deleted.\r
-                       </xs:documentation>\r
-               </xs:annotation>\r
+\r
+       <!-- Method modifyItem (Request) -->\r
+       <xs:element name="modifyItemRequest">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="container" type="types:uid"/>\r
                                <xs:element name="id" type="types:uid"/>\r
+                               <xs:element name="updates" type="types:UpdateList"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method purgeItem (Response) -->\r
-       <xs:element name="purgeItemResponse">\r
+\r
+       <!-- Method modifyItem (Response) -->\r
+       <xs:element name="modifyItemResponse">\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:element name="status" type="types:Status"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
+       <!-- Method positionCursor (Request) -->\r
+       <xs:element name="positionCursorRequest">\r
+               <xs:complexType>\r
+                       <xs:sequence>\r
+                               <xs:element name="cursor" type="xs:int"/>\r
+                               <xs:element name="seek" type="types:CursorSeek"/>\r
+                               <xs:element name="offset" type="xs:int"/>\r
+                       </xs:sequence>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
+       <!-- Method positionCursor (Response) -->\r
+       <xs:element name="positionCursorResponse">\r
                <xs:complexType>\r
                        <xs:sequence>\r
                                <xs:element name="status" type="types:Status"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
+\r
        <!-- Method purgeDeletedItems (Request) -->\r
        <xs:element name="purgeDeletedItemsRequest">\r
                <xs:annotation>\r
                        <xs:sequence/>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
+\r
        <!-- Method purgeDeletedItems (Response) -->\r
        <xs:element name="purgeDeletedItemsResponse">\r
                <xs:complexType>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method modifyItem (Request) -->\r
-       <xs:element name="modifyItemRequest">\r
+\r
+       <!-- Method purgeItem (Request) -->\r
+       <xs:element name="purgeItemRequest">\r
+               <xs:annotation>\r
+                       <xs:documentation>\r
+                               If the container is not specified then all of the item\r
+                                  links are removed and the item is permanently deleted.\r
+                               If the container is specified then only the specific link\r
+                                  to the container is deleted. If the last remaining link\r
+                                  is deleted then the item will be deleted.\r
+                       </xs:documentation>\r
+               </xs:annotation>\r
                <xs:complexType>\r
                        <xs:sequence>\r
+                               <xs:element name="container" type="types:uid"/>\r
                                <xs:element name="id" type="types:uid"/>\r
-                               <xs:element name="updates" type="types:UpdateList"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method modifyItem (Response) -->\r
-       <xs:element name="modifyItemResponse">\r
+\r
+       <!-- Method purgeItem (Response) -->\r
+       <xs:element name="purgeItemResponse">\r
                <xs:complexType>\r
                        <xs:sequence>\r
                                <xs:element name="status" type="types:Status"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method createFolder (Request) -->\r
-       <xs:element name="createFolderRequest">\r
+\r
+       <!-- Method readCursor (Request) -->\r
+       <xs:element name="readCursorRequest">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="folder" type="types:Folder"/>\r
+                               <xs:element name="cursor" type="xs:int"/>\r
+                               <xs:element name="forward" type="xs:boolean"/>\r
+                               <xs:element name="count" type="xs:int"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method createFolder (Response) -->\r
-       <xs:element name="createFolderResponse">\r
+\r
+       <!-- Method readCursor (Response) -->\r
+       <xs:element name="readCursorResponse">\r
                <xs:complexType>\r
                        <xs:sequence>\r
+                               <xs:element name="items" type="types:ItemList"/>\r
                                <xs:element name="status" type="types:Status"/>\r
-                               <xs:element name="id" type="types:uid"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
+\r
        <!-- Method removeFolder (Request) -->\r
        <xs:element name="removeFolderRequest">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="container" type="types:uid"/>\r
                                <xs:element name="id" type="types:uid"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
+\r
        <!-- Method removeFolder (Response) -->\r
        <xs:element name="removeFolderResponse">\r
                <xs:complexType>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method modifyFolder (Request) -->\r
-       <xs:element name="modifyFolderRequest">\r
+\r
+       <!-- Method removeItem (Request) -->\r
+       <xs:element name="removeItemRequest">\r
+               <xs:annotation>\r
+                       <xs:documentation>\r
+                               If the container is not specified then the item is \r
+                                  removed from all of the containers that it is linked\r
+                                  to and is stored in the "Trash".\r
+                               If the container is specified then the item is only\r
+                                  removed from that specific container and it's link\r
+                                  is stored in the "Trash".\r
+                       </xs:documentation>\r
+               </xs:annotation>\r
                <xs:complexType>\r
                        <xs:sequence>\r
+                               <xs:element name="container" type="types:uid"/>\r
                                <xs:element name="id" type="types:uid"/>\r
-                               <xs:element name="updates" type="types:UpdateList"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method modifyFolder (Response) -->\r
-       <xs:element name="modifyFolderResponse">\r
+\r
+       <!-- Method removeItem (Response) -->\r
+       <xs:element name="removeItemResponse">\r
                <xs:complexType>\r
                        <xs:sequence>\r
                                <xs:element name="status" type="types:Status"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method startFreeBusySession (Request) -->\r
-       <xs:element name="startFreeBusySessionRequest">\r
+\r
+       <!-- Method sendItem (Request) -->\r
+       <xs:element name="sendItemRequest">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="users" type="types:FreeBusyUserList"/>\r
-                               <xs:element name="startDate" type="xs:dateTime"/>\r
-                               <xs:element name="endDate" type="xs:dateTime"/>\r
-                               <xs:element name="timeout" type="xs:int"/>\r
+                               <xs:element name="item" type="types:Item"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method startFreeBusySession (Response) -->\r
-       <xs:element name="startFreeBusySessionResponse">\r
+\r
+       <!-- Method sendItem (Response) -->\r
+       <xs:element name="sendItemResponse">\r
                <xs:complexType>\r
                        <xs:sequence>\r
+                               <xs:element name="id" type="types:uid"/>\r
                                <xs:element name="status" type="types:Status"/>\r
-                               <xs:element name="session" type="xs:string"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method getFreeBusy (Request) -->\r
-       <xs:element name="getFreeBusyRequest">\r
-               <xs:complexType>\r
-                       <xs:sequence>\r
-                               <xs:element name="session" type="xs:string"/>\r
-                       </xs:sequence>\r
-               </xs:complexType>\r
-       </xs:element>\r
-       \r
-       <!-- Method getFreeBusy (Response) -->\r
-       <xs:element name="getFreeBusyResponse">\r
+\r
+       <!-- Method startFreeBusySession (Request) -->\r
+       <xs:element name="startFreeBusySessionRequest">\r
                <xs:complexType>\r
                        <xs:sequence>\r
-                               <xs:element name="status" type="types:Status"/>\r
-                               <xs:element name="freeBusyInfo" type="types:FreeBusyInfoList"/>\r
+                               <xs:element name="users" type="types:FreeBusyUserList"/>\r
+                               <xs:element name="startDate" type="xs:dateTime"/>\r
+                               <xs:element name="endDate" type="xs:dateTime"/>\r
+                               <xs:element name="timeout" type="xs:int"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
-       <!-- Method closeFreeBusySession (Request) -->\r
-       <xs:element name="closeFreeBusySession">\r
+\r
+       <!-- Method startFreeBusySession (Response) -->\r
+       <xs:element name="startFreeBusySessionResponse">\r
                <xs:complexType>\r
                        <xs:sequence>\r
                                <xs:element name="session" type="xs:string"/>\r
-                       </xs:sequence>\r
-               </xs:complexType>\r
-       </xs:element>\r
-       \r
-       <!-- Method closeFreeBusySession (Response) -->\r
-       <xs:element name="closeFreeBusySessionResponse">\r
-               <xs:complexType>\r
-                       <xs:sequence>\r
                                <xs:element name="status" type="types:Status"/>\r
                        </xs:sequence>\r
                </xs:complexType>\r
        </xs:element>\r
-       \r
+\r
 </xs:schema>\r
index d8bfbaa..9020296 100644 (file)
 <?xml version="1.0" ?>\r
-<xs:schema \r
+<xs:schema\r
        targetNamespace="http://schemas.novell.com/2003/10/NCSP/types.xsd"\r
        xmlns:xs="http://www.w3.org/2001/XMLSchema"\r
        xmlns:tns="http://schemas.novell.com/2003/10/NCSP/types.xsd"\r
        xmlns:enums="http://schemas.novell.com/2003/10/NCSP/enums.xsd">\r
 \r
-       <!-- Unique ID -->\r
-       <xs:simpleType name="uid">\r
-               <xs:annotation>\r
-                       <xs:documentation>\r
-                               The unique identifier is a application defined\r
-                               string to uniquely identify an item. The string\r
-                               can optionally consist of two parts. The first\r
-                               part identifies a unique existence of an item. \r
-                               The second part of the string optionally specifies\r
-                               instance information. The first and second part of \r
-                               the ID are separated by an '@'. For this reason \r
-                               neither the first nor second part can contain an \r
-                               '@' symbol.\r
-                               \r
-                               To determine whether or not two items are the \r
-                               same item, the consumer of this API should \r
-                               compare the first part of the ids of the two\r
-                               items (i.e. all of the id up to the @ symbol).\r
-                       </xs:documentation>\r
-               </xs:annotation>\r
+       <xs:element name="acceptLevel" type="tns:AcceptLevel"/>\r
+       <xs:element name="code" type="xs:int"/>\r
+       <xs:element name="description" type="xs:string"/>\r
+       <xs:element name="displayName" type="xs:string"/>\r
+       <xs:element name="email" type="xs:string"/>\r
+       <xs:element name="endDate" type="xs:dateTime"/>\r
+       <xs:element name="id" type="tns:uid"/>\r
+       <xs:element name="modified" type="xs:dateTime"/>\r
+       <xs:element name="name" type="xs:string"/>\r
+       <xs:element name="rights" type="tns:Rights"/>\r
+       <xs:element name="startDate" type="xs:dateTime"/>\r
+       <xs:element name="subject" type="xs:string"/>\r
+       <xs:element name="uuid" type="tns:UUID"/>\r
+       <xs:element name="version" type="xs:unsignedInt"/>\r
+\r
+       <xs:simpleType name="AcceptLevel">\r
                <xs:restriction base="xs:string">\r
-                       <xs:pattern value="[^@]+(@[^@]*)?"/>\r
+                       <xs:enumeration value="Free"/>\r
+                       <xs:enumeration value="Tentative"/>\r
+                       <xs:enumeration value="Busy"/>\r
+                       <xs:enumeration value="OutOfOffice"/>\r
                </xs:restriction>\r
        </xs:simpleType>\r
-       \r
-       <!-- Unique User ID -->\r
-       <xs:simpleType name="uuid">\r
-               <xs:annotation>\r
-                       <xs:documentation>\r
-                               The UUID is the unique user ID on a given \r
-                               email system. This is used in various \r
-                               places to indicate that a sender or recipient\r
-                               is an user internal to the collaboration\r
-                               system instead of an external user (i.e. \r
-                               internet address).\r
-                       </xs:documentation>\r
-               </xs:annotation>\r
-               <xs:restriction base="xs:string" />\r
-       </xs:simpleType>\r
 \r
-       <!-- Return Status -->\r
-       <xs:complexType name="Status">\r
+       <xs:complexType name="AccessControlListEntry">\r
                <xs:sequence>\r
-                       <xs:element name="code" type="xs:int"/>\r
-                       <xs:element name="desc" type="xs:string"/>\r
-                       <xs:element name="info" type="xs:string"/>\r
-                       <xs:element name="problems" type="tns:ProblemList"/>\r
+                       <xs:element ref="tns:uuid"/>\r
+                       <xs:element ref="tns:name"/>\r
+                       <xs:element ref="tns:rights"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
 \r
-       <!-- UserInfo Structure -->\r
-       <xs:complexType name="UserInfo">\r
+       <!-- Access Control List -->\r
+       <xs:complexType name="AccessControlList">\r
                <xs:sequence>\r
-                       <xs:element name="name" type="xs:string" />\r
-                       <xs:element name="email" type="xs:string" />\r
-                       <xs:element name="uuid" type="tns:uuid" />\r
-                       <xs:any />\r
+                       <xs:element name="entry" type="tns:AccessControlListEntry" minOccurs="0" maxOccurs="unbounded"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
 \r
-       <!-- Folder List -->\r
-       <xs:complexType name="FolderList">\r
-               <xs:sequence>\r
-                       <xs:element name="folder" type="tns:Folder" minOccurs="0" maxOccurs="unbounded" />\r
-               </xs:sequence>\r
-       </xs:complexType>\r
-       \r
-       <!-- View (list of fields) -->\r
-       <xs:simpleType name="View">\r
-               <xs:list itemType="xs:string"/>\r
-       </xs:simpleType>\r
-       \r
-       <!-- Folder Structure -->\r
-       <xs:complexType name="Folder">\r
+       <xs:complexType name="AddressBook">\r
                <xs:sequence>\r
-                       <xs:element name="id" type="tns:uid"/>\r
-                       <xs:element name="name" type="xs:string" minOccurs="0" />\r
-                       <xs:element name="parent" type="tns:uid" />\r
-                       <xs:element name="description" type="xs:string" minOccurs="0" />\r
-                       <xs:element name="type" type="enums:FolderType" />\r
-                       <xs:element name="rights" type="tns:Rights" minOccurs="0" />\r
-                       <xs:element name="acl" type="tns:FolderACL" minOccurs="0" />\r
-                       <xs:element name="version" type="xs:unsignedInt" minOccurs="0" />\r
-                       <xs:element name="lastModified" type="xs:dateTime" minOccurs="0"/>\r
-                       <xs:element name="count" type="xs:int" minOccurs="0"/>\r
-                       <xs:element name="hasUnread" type="xs:boolean" minOccurs="0" />\r
-                       <xs:element name="unreadCount" type="xs:int" minOccurs="0" />\r
-                       <xs:element name="sequence" type="xs:unsignedInt" minOccurs="0" />\r
-                       <xs:element name="settings" type="tns:uid" minOccurs="0" />\r
-                       <xs:element name="hasSubfolders" type="xs:boolean" minOccurs="0" />\r
-                       <xs:element name="owner" type="tns:uuid" minOccurs="0"/>\r
-                       \r
-                       <!-- Folder Flags -->\r
-                       <xs:element name="isSystemFolder" type="xs:boolean" minOccurs="0" />\r
-                       <xs:element name="isSharedByMe" type="xs:boolean" minOccurs="0" />\r
-                       <xs:element name="isSharedToMe" type="xs:boolean" minOccurs="0" />\r
-                       \r
-                       <!-- Query Folder Properties -->\r
-                       <xs:element name="query" type="tns:Query" minOccurs="0"/>\r
-                       \r
-                       <!-- Contacts Folder Properties -->\r
-                       <xs:element name="addressBook" type="tns:uid" minOccurs="0"/>\r
-                       \r
+                       <xs:element ref="tns:id" minOccurs="0"/>\r
+                       <xs:element ref="tns:name" minOccurs="0"/>\r
+                       <xs:element ref="tns:version" minOccurs="0"/>\r
+                       <xs:element ref="tns:modified" minOccurs="0"/>\r
+                       <xs:element name="isPersonal" type="xs:boolean" minOccurs="0"/>\r
+                       <xs:element name="isFrequentContacts" type="xs:boolean" minOccurs="0"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
-       \r
-       <!-- Rights -->\r
-       <xs:complexType name="Rights">\r
-               <xs:all>\r
-                       <xs:element name="read" type="xs:boolean" minOccurs="0"/>\r
-                       <xs:element name="add" type="xs:boolean" minOccurs="0"/>\r
-                       <xs:element name="edit" type="xs:boolean" minOccurs="0"/>\r
-                       <xs:element name="delete" type="xs:boolean" minOccurs="0"/>\r
-                       <xs:element name="share" type="xs:boolean" minOccurs="0"/>\r
-                       <xs:element name="manage" type="xs:boolean" minOccurs="0"/>\r
-               </xs:all>\r
-       </xs:complexType>\r
-       \r
-       <xs:complexType name="AccessControlListEntry">\r
-               <xs:sequence>\r
-                       <xs:element name="uuid" type="tns:uuid" />\r
-                       <xs:element name="name" type="xs:string" />\r
-                       <xs:element name="rights" type="tns:Rights" />\r
-               </xs:sequence>\r
+\r
+       <xs:complexType name="AddressBookItem">\r
+               <xs:complexContent>\r
+                       <xs:extension base="tns:Item">\r
+                               <xs:sequence>\r
+                                       <xs:element ref="tns:uuid" minOccurs="0"/>\r
+                                       <xs:element name="comment" type="xs:string" minOccurs="0"/>\r
+                               </xs:sequence>\r
+                       </xs:extension>\r
+               </xs:complexContent>\r
        </xs:complexType>\r
-       \r
-       <!-- Access Control List -->\r
-       <xs:complexType name="AccessControlList">\r
+\r
+       <xs:complexType name="AddressBookList">\r
                <xs:sequence>\r
-                       <xs:element name="entry" type="tns:AccessControlListEntry" minOccurs="0" maxOccurs="unbounded"/>\r
+                       <xs:element name="book" type="tns:AddressBook" minOccurs="0" maxOccurs="unbounded"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
 \r
-       <xs:simpleType name="FolderACLStatus">\r
-               <xs:restriction base="xs:string">\r
-                       <xs:enumeration value="pending"/>\r
-                       <xs:enumeration value="accepted"/>\r
-                       <xs:enumeration value="deleted"/>\r
-               </xs:restriction>\r
-       </xs:simpleType>\r
-\r
-       <xs:complexType name="FolderACLEntry">\r
+       <xs:complexType name="Appointment">\r
                <xs:complexContent>\r
-                       <xs:extension base="tns:AccessControlListEntry">\r
+                       <xs:extension base="tns:CalendarItem">\r
                                <xs:sequence>\r
-                                       <xs:element name="status" type="tns:FolderACLStatus"/>\r
+                                       <xs:element ref="tns:endDate"/>\r
+                                       <xs:element ref="tns:acceptLevel"/>\r
+                                       <xs:element name="allDayEvent" type="xs:boolean"/>\r
+                                       <xs:element name="place" type="xs:string"/>\r
                                </xs:sequence>\r
                        </xs:extension>\r
                </xs:complexContent>\r
        </xs:complexType>\r
 \r
-       <xs:complexType name="FolderACL">\r
-               <xs:sequence>\r
-                       <xs:element name="entry" type="tns:FolderACLEntry" minOccurs="0" maxOccurs="unbounded"/>\r
-               </xs:sequence>\r
+       <xs:complexType name="AttachmentID">\r
+               <xs:simpleContent>\r
+                       <xs:extension base="tns:uid">\r
+                               <xs:attribute name="itemReference" type="xs:boolean"/>\r
+                       </xs:extension>\r
+               </xs:simpleContent>\r
        </xs:complexType>\r
-       \r
-       <!-- Item List -->\r
-       <xs:complexType name="ItemList">\r
+\r
+       <xs:complexType name="AttachmentInfo">\r
                <xs:sequence>\r
-                       <xs:element name="item" type="tns:Item" minOccurs="0" maxOccurs="unbounded"/>\r
+                       <xs:element name="attachment" type="tns:AttachmentItemInfo" maxOccurs="unbounded"/>\r
                </xs:sequence>\r
-               <xs:attribute name="offset" type="xs:int"/>\r
-               <xs:attribute name="count" type="xs:int"/>\r
        </xs:complexType>\r
 \r
-       <!-- Item -->\r
-       <xs:complexType name="Item">\r
+       <xs:complexType name="AttachmentItemInfo">\r
                <xs:sequence>\r
-                       <xs:element name="id" type="tns:uid"/>\r
-                       <xs:element name="container" type="tns:ContainerRef" minOccurs="1" maxOccurs="unbounded"/>\r
-                       <xs:element name="name" type="xs:string" minOccurs="0"/>\r
-                       <xs:element name="created" type="xs:dateTime" minOccurs="0"/>\r
-                       <xs:element name="categories" type="tns:CategoryRefList" minOccurs="0"/>\r
-                       <xs:element name="version" type="xs:unsignedInt" minOccurs="0"/>\r
-                       <xs:element name="modified" type="xs:dateTime" minOccurs="0"/>\r
+                       <xs:element name="id" type="tns:AttachmentID" minOccurs="0"/>\r
+                       <xs:element ref="tns:name"/>\r
+                       <xs:element name="contentId" type="xs:string" minOccurs="0"/>\r
+                       <xs:element name="contentType" type="xs:string" minOccurs="0"/>\r
+                       <xs:element name="size" type="xs:unsignedInt"/>\r
+                       <xs:element name="date" type="xs:dateTime" minOccurs="0"/>\r
+                       <xs:element name="data" type="xs:base64Binary" minOccurs="0"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
 \r
+       <xs:complexType name="Authentication">\r
+       </xs:complexType>\r
+\r
        <xs:complexType name="BoxEntry">\r
                <xs:complexContent>\r
                        <xs:extension base="tns:Item">\r
                                        <xs:element name="msgid" type="xs:string" minOccurs="0"/>\r
                                        <xs:element name="source" type="enums:ItemSource" minOccurs="0"/>\r
                                        <xs:element name="delivered" type="xs:dateTime"/>\r
-                               </xs:sequence>\r
-                       </xs:extension>\r
-               </xs:complexContent>\r
-       </xs:complexType>\r
-\r
-       <xs:complexType name="Distribution">\r
-               <xs:sequence>\r
-                       <xs:element name="from" type="tns:From" />\r
-                       <xs:element name="to" type="xs:string"/>\r
-                       <xs:element name="cc" type="xs:string"/>\r
-                       <xs:element name="bc" type="xs:string"/>\r
-                       <xs:element name="recipients" type="tns:RecipientList" />\r
-                       <xs:element name="sendoptions" type="tns:SendOptions" />\r
-               </xs:sequence>\r
-       </xs:complexType>\r
-\r
-       <xs:complexType name="Mail">\r
-               <xs:complexContent>\r
-                       <xs:extension base="tns:BoxEntry">\r
-                               <xs:sequence>\r
-                                       <xs:element name="subject" type="xs:string" />\r
-                                       <xs:element name="distribution" type="tns:Distribution" />\r
-                                       <xs:element name="message" type="tns:MessageBody" />\r
-                                       <xs:element name="attachments" type="tns:AttachmentInfo" />\r
-                                       <xs:element name="options" type="tns:ItemOptions" minOccurs="0"/>\r
+                                       <xs:element name="class" type="enums:ItemClass" minOccurs="0"/>\r
                                </xs:sequence>\r
                        </xs:extension>\r
                </xs:complexContent>\r
                <xs:complexContent>\r
                        <xs:extension base="tns:Mail">\r
                                <xs:sequence>\r
-                                       <xs:element name="startDate" type="xs:dateTime" minOccurs="0"/>\r
+                                       <xs:element ref="tns:startDate" minOccurs="0"/>\r
                                        <xs:element name="recurrance" type="xs:string" minOccurs="0"/>\r
+                                       <xs:element name="iCalId" type="xs:string" minOccurs="0"/>\r
                                </xs:sequence>\r
                        </xs:extension>\r
                </xs:complexContent>\r
        </xs:complexType>\r
 \r
-       <xs:complexType name="Appointment">\r
-               <xs:complexContent>\r
-                       <xs:extension base="tns:CalendarItem">\r
-                               <xs:sequence>\r
-                                       <xs:element name="endDate" type="xs:dateTime"/>\r
-                                       <xs:element name="acceptLevel" type="tns:AcceptLevel"/>\r
-                                       <xs:element name="allDayEvent" type="xs:boolean"/>\r
-                                       <xs:element name="place" type="xs:string"/>\r
-                               </xs:sequence>\r
-                       </xs:extension>\r
-               </xs:complexContent>\r
+       <xs:group name="CalendarReturnNotification">\r
+               <xs:sequence>\r
+                       <xs:element name="accepted" type="tns:ReturnNotificationOptions"/>\r
+                       <xs:element name="declined" type="tns:ReturnNotificationOptions"/>\r
+               </xs:sequence>\r
+       </xs:group>\r
+\r
+       <xs:complexType name="Category">\r
+               <xs:sequence>\r
+                       <xs:element ref="tns:id"/>\r
+                       <xs:element ref="tns:name" minOccurs="0"/>\r
+                       <xs:element name="type" type="enums:CategoryType"/>\r
+                       <xs:element name="color" type="xs:unsignedInt" minOccurs="0"/>\r
+                       <xs:element ref="tns:version" minOccurs="0"/>\r
+                       <xs:element ref="tns:modified" minOccurs="0"/>\r
+               </xs:sequence>\r
        </xs:complexType>\r
 \r
-       <xs:complexType name="Task">\r
+       <xs:complexType name="CategoryList">\r
+               <xs:sequence>\r
+                       <xs:element name="category" type="tns:Category" minOccurs="0" maxOccurs="unbounded"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <!-- List of category references -->\r
+       <xs:complexType name="CategoryRefList">\r
+               <xs:sequence>\r
+                       <xs:element name="category" type="tns:uid" minOccurs="0" maxOccurs="unbounded"/>\r
+               </xs:sequence>\r
+               <xs:attribute name="primary" type="tns:uid"/>\r
+       </xs:complexType>\r
+\r
+       <xs:complexType name="Contact">\r
                <xs:complexContent>\r
-                       <xs:extension base="tns:CalendarItem">\r
+                       <xs:extension base="tns:AddressBookItem">\r
                                <xs:sequence>\r
-                                       <xs:element name="dueDate" type="xs:date"/>\r
-                                       <xs:element name="priority" type="xs:string"/>\r
-                                       <xs:element name="completed" type="xs:boolean"/>\r
+                                       <xs:element name="fullName" type="tns:FullName"/>\r
+                                       <xs:element name="emailList" type="tns:EmailAddressList"/>\r
+                                       <xs:element name="imList" type="tns:ImAddressList"/>\r
+                                       <xs:element name="phoneList" type="tns:PhoneList"/>\r
+                                       <xs:element name="addressList" type="tns:PostalAddressList"/>\r
+                                       <xs:element name="officeInfo" type="tns:OfficeInfo"/>\r
+                                       <xs:element name="personalInfo" type="tns:PersonalInfo"/>\r
                                </xs:sequence>\r
                        </xs:extension>\r
                </xs:complexContent>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="Note">\r
-               <xs:complexContent>\r
-                       <xs:extension base="tns:CalendarItem"/>\r
-               </xs:complexContent>\r
+\r
+       <!-- Reference to Container (folder, address book, etc.) -->\r
+       <xs:complexType name="ContainerRef">\r
+               <xs:simpleContent>\r
+                       <xs:extension base="xs:string">\r
+                               <xs:attribute name="deleted" type="xs:dateTime"/>\r
+                       </xs:extension>\r
+               </xs:simpleContent>\r
        </xs:complexType>\r
 \r
-       <xs:complexType name="PhoneMessage">\r
+       <xs:complexType name="ContactFolder">\r
                <xs:complexContent>\r
-                       <xs:extension base="tns:Mail">\r
+                       <xs:extension base="tns:SystemFolder">\r
                                <xs:sequence>\r
-                                       <xs:element name="caller" type="xs:string"/>\r
-                                       <xs:element name="company" type="xs:string"/>\r
-                                       <xs:element name="phone" type="xs:string"/>\r
-                                       <xs:element name="flags" type="tns:PhoneFlags"/>\r
+                                       <xs:element name="addressBook" type="tns:uid" minOccurs="0"/>\r
                                </xs:sequence>\r
                        </xs:extension>\r
                </xs:complexContent>\r
        </xs:complexType>\r
 \r
+       <xs:simpleType name="ContactType">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:enumeration value="Contact"/>\r
+                       <xs:enumeration value="Group"/>\r
+                       <xs:enumeration value="Resource"/>\r
+                       <xs:enumeration value="Organization"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+\r
+       <xs:simpleType name="CursorSeek">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:enumeration value="current"/>\r
+                       <xs:enumeration value="start"/>\r
+                       <xs:enumeration value="end"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+\r
+       <xs:complexType name="Distribution">\r
+               <xs:sequence>\r
+                       <xs:element name="from" type="tns:From"/>\r
+                       <xs:element name="to" type="xs:string"/>\r
+                       <xs:element name="cc" type="xs:string"/>\r
+                       <xs:element name="bc" type="xs:string"/>\r
+                       <xs:element name="recipients" type="tns:RecipientList"/>\r
+                       <xs:element name="sendoptions" type="tns:SendOptions"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <xs:simpleType name="DistributionType">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:enumeration value="TO"/>\r
+                       <xs:enumeration value="CC"/>\r
+                       <xs:enumeration value="BC"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+\r
        <xs:complexType name="DocumentRef">\r
                <xs:complexContent>\r
                        <xs:extension base="tns:BoxEntry">\r
                        </xs:extension>\r
                </xs:complexContent>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="AddressBookItem">\r
-               <xs:complexContent>\r
-                       <xs:extension base="tns:Item">\r
-                               <xs:sequence>\r
-                                       <xs:element name="comment" type="xs:string" minOccurs="0"/>\r
-                               </xs:sequence>\r
-                       </xs:extension>\r
-               </xs:complexContent>\r
+\r
+       <xs:complexType name="EmailAddressList">\r
+               <xs:sequence>\r
+                       <xs:element ref="tns:email" minOccurs="0" maxOccurs="unbounded"/>\r
+               </xs:sequence>\r
+               <xs:attribute name="primary" type="xs:string"/>\r
        </xs:complexType>\r
 \r
-       <xs:complexType name="Contact">\r
-               <xs:complexContent>\r
-                       <xs:extension base="tns:AddressBookItem">\r
-                               <xs:sequence>\r
-                                       <xs:element name="fullname" type="tns:FullName"/>\r
-                                       <xs:element name="emailList" type="tns:EmailAddressList"/>\r
-                                       <xs:element name="imList" type="tns:ImAddressList"/>\r
-                                       <xs:element name="phoneList" type="tns:PhoneList"/>\r
-                                       <xs:element name="addressList" type="tns:PostalAddressList"/>\r
-                                       <xs:element name="officeInfo" type="tns:OfficeInfo"/>\r
-                                       <xs:element name="personalInfo" type="tns:PersonalInfo"/>\r
+       <xs:complexType name="Filter">\r
+               <xs:sequence>\r
+                       <xs:group ref="tns:FilterElements" minOccurs="0" maxOccurs="1"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <xs:group name="FilterElements">\r
+               <xs:choice>\r
+                       <xs:element name="and" type="tns:FilterGroup"/>\r
+                       <xs:element name="or" type="tns:FilterGroup"/>\r
+                       <xs:element name="not" type="tns:FilterGroup"/>\r
+                       <xs:element name="eq" type="tns:FilterEntry"/>\r
+                       <xs:element name="ne" type="tns:FilterEntry"/>\r
+                       <xs:element name="gt" type="tns:FilterEntry"/>\r
+                       <xs:element name="lt" type="tns:FilterEntry"/>\r
+                       <xs:element name="gte" type="tns:FilterEntry"/>\r
+                       <xs:element name="lte" type="tns:FilterEntry"/>\r
+                       <xs:element name="contains" type="tns:FilterEntry"/>\r
+                       <xs:element name="containsWord" type="tns:FilterEntry"/>\r
+                       <xs:element name="begins" type="tns:FilterEntry"/>\r
+                       <xs:element name="exists" type="tns:FilterEntry"/>\r
+                       <xs:element name="notExist" type="tns:FilterEntry"/>\r
+               </xs:choice>\r
+       </xs:group>\r
+\r
+       <xs:complexType name="FilterEntry">\r
+               <xs:sequence>\r
+                       <xs:element name="field" type="xs:string"/>\r
+                       <xs:element name="value" type="xs:anyType"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <xs:complexType name="FilterGroup">\r
+               <xs:sequence>\r
+                       <xs:group ref="tns:FilterElements" minOccurs="1" maxOccurs="unbounded"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <!-- Folder Structure -->\r
+       <xs:complexType name="Folder">\r
+               <xs:sequence>\r
+                       <xs:element ref="tns:id"/>\r
+                       <xs:element ref="tns:name" minOccurs="0"/>\r
+                       <xs:element name="parent" type="tns:uid"/>\r
+                       <xs:element ref="tns:description" minOccurs="0"/>\r
+                       <xs:element ref="tns:version" minOccurs="0"/>\r
+                       <xs:element ref="tns:modified" minOccurs="0"/>\r
+                       <xs:element name="count" type="xs:int" minOccurs="0"/>\r
+                       <xs:element name="hasUnread" type="xs:boolean" minOccurs="0"/>\r
+                       <xs:element name="unreadCount" type="xs:int" minOccurs="0"/>\r
+                       <xs:element name="sequence" type="xs:unsignedInt" minOccurs="0"/>\r
+                       <xs:element name="settings" type="tns:uid" minOccurs="0"/>\r
+                       <xs:element name="hasSubfolders" type="xs:boolean" minOccurs="0"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <xs:complexType name="FolderACL">\r
+               <xs:sequence>\r
+                       <xs:element name="entry" type="tns:FolderACLEntry" minOccurs="0" maxOccurs="unbounded"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <xs:complexType name="FolderACLEntry">\r
+               <xs:complexContent>\r
+                       <xs:extension base="tns:AccessControlListEntry">\r
+                               <xs:sequence>\r
+                                       <xs:element name="status" type="tns:FolderACLStatus"/>\r
                                </xs:sequence>\r
                        </xs:extension>\r
                </xs:complexContent>\r
        </xs:complexType>\r
 \r
-       <xs:complexType name="Group">\r
+       <xs:simpleType name="FolderACLStatus">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:enumeration value="pending"/>\r
+                       <xs:enumeration value="accepted"/>\r
+                       <xs:enumeration value="deleted"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+\r
+       <!-- Folder List -->\r
+       <xs:complexType name="FolderList">\r
+               <xs:sequence>\r
+                       <xs:element name="folder" type="tns:Folder" minOccurs="0" maxOccurs="unbounded"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <xs:complexType name="FreeBusyBlockList">\r
+               <xs:sequence>\r
+                       <xs:element name="block" type="tns:FreeBusyBlock" minOccurs="0" maxOccurs="unbounded"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+       \r
+       <xs:complexType name="FreeBusyBlock">\r
+               <xs:sequence>\r
+                       <xs:element ref="tns:startDate"/>\r
+                       <xs:element ref="tns:endDate"/>\r
+                       <xs:element ref="tns:acceptLevel"/>\r
+                       <xs:element ref="tns:subject"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <xs:complexType name="FreeBusyInfo">\r
                <xs:complexContent>\r
-                       <xs:extension base="tns:AddressBookItem">\r
+                       <xs:extension base="tns:FreeBusyUser">\r
                                <xs:sequence>\r
-                                       <xs:element name="members" type="tns:GroupMemberList"/>\r
+                                       <xs:element name="blocks" type="tns:FreeBusyBlockList"/>\r
                                </xs:sequence>\r
                        </xs:extension>\r
                </xs:complexContent>\r
        </xs:complexType>\r
 \r
-       <xs:complexType name="Resource">\r
+       <xs:complexType name="FreeBusyUserList">\r
+               <xs:sequence>\r
+                       <xs:element name="user" type="tns:FreeBusyUser" minOccurs="0" maxOccurs="unbounded"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <xs:complexType name="FreeBusyInfoList">\r
+               <xs:sequence>\r
+                       <xs:element name="user" type="tns:FreeBusyInfo" minOccurs="0" maxOccurs="unbounded"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <xs:complexType name="FreeBusyUser">\r
                <xs:complexContent>\r
-                       <xs:extension base="tns:AddressBookItem">\r
+                       <xs:extension base="tns:NameAndEmail"/>\r
+               </xs:complexContent>\r
+       </xs:complexType>\r
+\r
+       <xs:complexType name="From">\r
+               <xs:complexContent>\r
+                       <xs:extension base="tns:NameAndEmail">\r
                                <xs:sequence>\r
-                                       <xs:element name="phone" type="xs:string"/>\r
-                                       <xs:element name="resourceType" type="xs:string"/>\r
-                                       <xs:element name="email" type="xs:string"/>\r
-                                       <xs:element name="owner" type="tns:ItemRef"/>\r
+                                       <xs:element name="replyTo" type="xs:string"/>\r
                                </xs:sequence>\r
                        </xs:extension>\r
                </xs:complexContent>\r
        </xs:complexType>\r
 \r
-       <xs:complexType name="Organization">\r
+       <xs:complexType name="FullName">\r
+               <xs:sequence>\r
+                       <xs:element ref="tns:displayName"/>\r
+                       <xs:element name="namePrefix" type="xs:string"/>\r
+                       <xs:element name="firstName" type="xs:string"/>\r
+                       <xs:element name="middleName" type="xs:string"/>\r
+                       <xs:element name="lastName" type="xs:string"/>\r
+                       <xs:element name="nameSuffix" type="xs:string"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <xs:complexType name="Group">\r
                <xs:complexContent>\r
                        <xs:extension base="tns:AddressBookItem">\r
                                <xs:sequence>\r
-                                       <xs:element name="contact" type="tns:ItemRef"/>\r
-                                       <xs:element name="phone" type="xs:string"/>\r
-                                       <xs:element name="fax" type="xs:string"/>\r
-                                       <xs:element name="address" type="tns:PostalAddress"/>\r
-                                       <xs:element name="website" type="xs:anyURI"/>\r
+                                       <xs:element name="members" type="tns:GroupMemberList"/>\r
                                </xs:sequence>\r
                        </xs:extension>\r
                </xs:complexContent>\r
        </xs:complexType>\r
 \r
-       <!-- Reference to Container (folder, address book, etc.) -->\r
-       <xs:complexType name="ContainerRef">\r
+       <xs:complexType name="GroupMember">\r
+               <xs:sequence>\r
+                       <xs:element name="uid" type="tns:uid"/>\r
+                       <xs:element ref="tns:name"/>\r
+                       <xs:element ref="tns:email"/>\r
+                       <xs:element name="distType" type="tns:DistributionType" default="TO"/>\r
+                       <xs:element name="itemType" type="tns:ContactType" default="Contact"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <xs:complexType name="GroupMemberList">\r
+               <xs:sequence>\r
+                       <xs:element name="member" type="tns:GroupMember" minOccurs="0" maxOccurs="unbounded"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <xs:complexType name="ImAddress">\r
+               <xs:sequence>\r
+                       <xs:element name="service" type="xs:string"/>\r
+                       <xs:element name="address" type="xs:string"/>\r
+                       <!-- type = work, home, etc. -->\r
+                       <xs:element name="type" type="xs:string"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <xs:complexType name="ImAddressList">\r
+               <xs:sequence>\r
+                       <xs:element name="im" type="tns:ImAddress" minOccurs="0" maxOccurs="unbounded"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <!-- Item -->\r
+       <xs:complexType name="Item">\r
+               <xs:sequence>\r
+                       <xs:element ref="tns:id"/>\r
+                       <xs:element name="container" type="tns:ContainerRef" minOccurs="1" maxOccurs="unbounded"/>\r
+                       <xs:element ref="tns:name" minOccurs="0"/>\r
+                       <xs:element name="created" type="xs:dateTime" minOccurs="0"/>\r
+                       <xs:element name="categories" type="tns:CategoryRefList" minOccurs="0"/>\r
+                       <xs:element ref="tns:version" minOccurs="0"/>\r
+                       <xs:element ref="tns:modified" minOccurs="0"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <!-- Item List -->\r
+       <xs:complexType name="ItemList">\r
+               <xs:sequence>\r
+                       <xs:element name="item" type="tns:Item" minOccurs="0" maxOccurs="unbounded"/>\r
+               </xs:sequence>\r
+               <xs:attribute name="offset" type="xs:int"/>\r
+               <xs:attribute name="count" type="xs:int"/>\r
+       </xs:complexType>\r
+\r
+       <!-- "Send Options" that apply to any item create -->\r
+       <xs:complexType name="ItemOptions">\r
+               <xs:sequence>\r
+                       <xs:element name="priority" type="tns:ItemOptionsPriority" minOccurs="0" default="Standard"/>\r
+                       <xs:element name="expires" type="xs:dateTime" minOccurs="0"/>\r
+                       <xs:element name="delayDeliveryUntil" type="xs:dateTime" minOccurs="0"/>\r
+                       <xs:element name="concealSubject" type="xs:boolean" minOccurs="0"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <xs:simpleType name="ItemOptionsPriority">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:enumeration value="High"/>\r
+                       <xs:enumeration value="Standard"/>\r
+                       <xs:enumeration value="Low"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+\r
+       <xs:complexType name="ItemRef">\r
                <xs:simpleContent>\r
                        <xs:extension base="xs:string">\r
-                               <xs:attribute name="deleted" type="xs:dateTime" />\r
+                               <xs:attribute name="uid" type="tns:uid" use="optional"/>\r
                        </xs:extension>\r
                </xs:simpleContent>\r
        </xs:complexType>\r
 \r
+       <xs:complexType name="ItemRefList">\r
+               <xs:sequence>\r
+                       <xs:element name="item" type="tns:uid" minOccurs="1" maxOccurs="unbounded"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
        <!-- Item Status Flags -->\r
        <xs:complexType name="ItemStatus">\r
                <xs:sequence>\r
                </xs:sequence>\r
        </xs:complexType>\r
 \r
-       <!-- List of category references -->\r
-       <xs:complexType name="CategoryRefList">\r
-               <xs:sequence>\r
-                       <xs:element name="category" type="tns:uid" minOccurs="0" maxOccurs="unbounded" />\r
-               </xs:sequence>\r
-               <xs:attribute name="primary" type="tns:uid" />\r
+       <xs:complexType name="Mail">\r
+               <xs:complexContent>\r
+                       <xs:extension base="tns:BoxEntry">\r
+                               <xs:sequence>\r
+                                       <xs:element ref="tns:subject"/>\r
+                                       <xs:element name="distribution" type="tns:Distribution"/>\r
+                                       <xs:element name="message" type="tns:MessageBody"/>\r
+                                       <xs:element name="attachments" type="tns:AttachmentInfo"/>\r
+                                       <xs:element name="options" type="tns:ItemOptions" minOccurs="0"/>\r
+                               </xs:sequence>\r
+                       </xs:extension>\r
+               </xs:complexContent>\r
        </xs:complexType>\r
 \r
        <xs:complexType name="MessageBody">\r
                <xs:sequence>\r
-                       <xs:element name="part" type="tns:MessagePart" maxOccurs="unbounded" />\r
+                       <xs:element name="part" type="tns:MessagePart" maxOccurs="unbounded"/>\r
                </xs:sequence>\r
-               <xs:attribute name="defaultPart" type="xs:string" />\r
+               <xs:attribute name="defaultPart" type="xs:string"/>\r
        </xs:complexType>\r
 \r
        <xs:complexType name="MessagePart">\r
                <xs:simpleContent>\r
                        <xs:extension base="xs:base64Binary">\r
-                               <xs:attribute name="contentId" type="xs:int" />\r
-                               <xs:attribute name="contentType" type="xs:string" />\r
+                               <xs:attribute name="contentId" type="xs:string"/>\r
+                               <xs:attribute name="contentType" type="xs:string"/>\r
+                               <xs:attribute name="length" type="xs:int"/>\r
                        </xs:extension>\r
                </xs:simpleContent>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="AttachmentInfo">\r
-               <xs:sequence>\r
-                       <xs:element name="attachment" type="tns:AttachmentItemInfo" maxOccurs="unbounded" />\r
-               </xs:sequence>\r
-       </xs:complexType>\r
 \r
-       <xs:complexType name="AttachmentItemInfo">\r
+       <xs:complexType name="NameAndEmail">\r
                <xs:sequence>\r
-                       <xs:element name="id" type="tns:AttachmentID"/>\r
-                       <xs:element name="name" type="xs:string" />\r
-                       <xs:element name="contentId" type="xs:string" />\r
-                       <xs:element name="contentType" type="xs:string" />\r
-                       <xs:element name="size" type="xs:unsignedInt" />\r
-                       <xs:element name="date" type="xs:dateTime" />\r
+                       <xs:element ref="tns:displayName"/>\r
+                       <xs:element ref="tns:email"/>\r
+                       <xs:element ref="tns:uuid"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
 \r
-       <xs:complexType name="AttachmentID">\r
-               <xs:simpleContent>\r
-                       <xs:extension base="tns:uid">\r
-                               <xs:attribute name="itemReference" type="xs:boolean"/>\r
-                       </xs:extension>\r
-               </xs:simpleContent>\r
+       <xs:complexType name="Note">\r
+               <xs:complexContent>\r
+                       <xs:extension base="tns:CalendarItem"/>\r
+               </xs:complexContent>\r
        </xs:complexType>\r
-       \r
-       <!-- "Send Options" that apply to any item create -->\r
-       <xs:complexType name="ItemOptions">\r
+\r
+       <xs:complexType name="OfficeInfo">\r
                <xs:sequence>\r
-                       <xs:element name="priority" type="tns:ItemOptionsPriority" minOccurs="0" default="Standard" />\r
-                       <xs:element name="expires" type="xs:dateTime" minOccurs="0" />\r
-                       <xs:element name="delayDeliveryUntil" type="xs:dateTime" minOccurs="0" />\r
-                       <xs:element name="concealSubject" type="xs:boolean" minOccurs="0" />\r
+                       <xs:element name="organization" type="tns:ItemRef"/>\r
+                       <xs:element name="department" type="xs:string"/>\r
+                       <xs:element name="title" type="xs:string"/>\r
+                       <xs:element name="website" type="xs:anyURI"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
 \r
-       <xs:simpleType name="ItemOptionsPriority">\r
-               <xs:restriction base="xs:string">\r
-                       <xs:enumeration value="High" />\r
-                       <xs:enumeration value="Standard" />\r
-                       <xs:enumeration value="Low" />\r
-               </xs:restriction>\r
-       </xs:simpleType>\r
-\r
-       <xs:complexType name="From">\r
+       <xs:complexType name="Organization">\r
                <xs:complexContent>\r
-                       <xs:extension base="tns:NameAndEmail">\r
+                       <xs:extension base="tns:AddressBookItem">\r
                                <xs:sequence>\r
-                                       <xs:element name="replyTo" type="xs:string"/>\r
+                                       <xs:element name="contact" type="tns:ItemRef"/>\r
+                                       <xs:element name="phone" type="xs:string"/>\r
+                                       <xs:element name="fax" type="xs:string"/>\r
+                                       <xs:element name="address" type="tns:PostalAddress"/>\r
+                                       <xs:element name="website" type="xs:anyURI"/>\r
                                </xs:sequence>\r
                        </xs:extension>\r
                </xs:complexContent>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="NameAndEmail">\r
-               <xs:sequence>\r
-                       <xs:element name="displayName" type="xs:string" />\r
-                       <xs:element name="email" type="xs:string" />\r
-                       <xs:element name="uuid" type="tns:uuid" />\r
-               </xs:sequence>\r
-       </xs:complexType>\r
-       \r
-       <xs:simpleType name="DistributionType">\r
-               <xs:restriction base="xs:string">\r
-                       <xs:enumeration value="TO" />\r
-                       <xs:enumeration value="CC" />\r
-                       <xs:enumeration value="BC" />\r
-               </xs:restriction>\r
-       </xs:simpleType>\r
-       \r
-       <xs:simpleType name="RecipientType">\r
-               <xs:restriction base="xs:string">\r
-                       <xs:enumeration value="User"/>\r
-                       <xs:enumeration value="PersonalGroup"/>\r
-                       <xs:enumeration value="SystemGroup"/>\r
-                       <xs:enumeration value="PersonalGroupMember"/>\r
-                       <xs:enumeration value="SystemGroupMember"/>\r
-               </xs:restriction>\r
-       </xs:simpleType>\r
-       \r
-       <xs:complexType name="Recipient">\r
-               <xs:complexContent>\r
-                       <xs:extension base="tns:NameAndEmail">\r
-                               <xs:sequence>\r
-                                       <xs:element name="distType" type="tns:DistributionType" />\r
-                                       <xs:element name="recipType" type="tns:RecipientType" />\r
-                               </xs:sequence>\r
-                       </xs:extension>\r
-               </xs:complexContent>\r
-       </xs:complexType>\r
-       \r
-       <xs:complexType name="RecipientList">\r
-               <xs:sequence>\r
-                       <xs:element name="recipient" type="tns:Recipient" minOccurs="0" maxOccurs="unbounded" />\r
-               </xs:sequence>\r
-       </xs:complexType>\r
-       \r
-       <xs:complexType name="SendOptionsRequestReply">\r
-               <xs:attribute name="withinNDays" type="xs:unsignedInt" />\r
-       </xs:complexType>\r
-       \r
-       <xs:complexType name="SendOptions">\r
-               <xs:sequence>\r
-                       <xs:element name="requestReply" type="tns:SendOptionsRequestReply" minOccurs="0" />\r
-                       <xs:element name="mimeEncoding" type="xs:string" minOccurs="0"/>\r
-                       <xs:element name="statusTracking" type="tns:StatusTracking" minOccurs="0"/>\r
-                       <xs:element name="notification" type="tns:ReturnNotification" minOccurs="0"/>\r
-               </xs:sequence>\r
-       </xs:complexType>\r
-\r
-       <xs:complexType name="StatusTracking">\r
-               <xs:simpleContent>\r
-                       <xs:extension base="tns:StatusTrackingOptions">\r
-                               <xs:attribute name="autoDelete" type="xs:boolean" default="false"/>\r
-                       </xs:extension>\r
-               </xs:simpleContent>\r
-       </xs:complexType>\r
-\r
-       <xs:simpleType name="StatusTrackingOptions">\r
-               <xs:restriction base="xs:string">\r
-                       <xs:enumeration value="None"/>\r
-                       <xs:enumeration value="Delivered"/>\r
-                       <xs:enumeration value="DeliveredAndOpened"/>\r
-                       <xs:enumeration value="All"/>\r
-               </xs:restriction>\r
-       </xs:simpleType>\r
-\r
-       <xs:complexType name="ReturnNotification">\r
-               <xs:sequence>\r
-                       <xs:element name="opened" type="tns:ReturnNotificationOptions"/>\r
-                       <xs:choice>\r
-                               <xs:element name="deleted" type="tns:ReturnNotificationOptions"/>\r
-                               <xs:group ref="tns:CalendarReturnNotification"/>\r
-                       </xs:choice>\r
-               </xs:sequence>\r
-       </xs:complexType>\r
 \r
-       <xs:group name="CalendarReturnNotification">\r
-               <xs:sequence>\r
-                       <xs:element name="accepted" type="tns:ReturnNotificationOptions"/>\r
-                       <xs:element name="declined" type="tns:ReturnNotificationOptions"/>\r
-               </xs:sequence>\r
-       </xs:group>\r
-\r
-       <xs:complexType name="ReturnNotificationOptions">\r
+       <xs:complexType name="PersonalInfo">\r
                <xs:sequence>\r
-                       <xs:element name="mail" type="xs:boolean" default="false"/>\r
-                       <xs:element name="notify" type="xs:boolean" default="false"/>\r
+                       <xs:element name="birthday" type="xs:date" nillable="true"/>\r
+                       <xs:element name="website" type="xs:anyURI"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
 \r
-       <xs:simpleType name="AcceptLevel">\r
-               <xs:restriction base="xs:string">\r
-                       <xs:enumeration value="Free"/>\r
-                       <xs:enumeration value="Tentative"/>\r
-                       <xs:enumeration value="Busy"/>\r
-                       <xs:enumeration value="OutOfOffice"/>\r
-               </xs:restriction>\r
-       </xs:simpleType>\r
-       \r
        <xs:complexType name="PhoneFlags">\r
                <xs:sequence>\r
                        <xs:element name="called" type="xs:boolean" minOccurs="0"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
 \r
-       <xs:complexType name="FullName">\r
+       <xs:complexType name="PhoneList">\r
                <xs:sequence>\r
-                       <xs:element name="displayName" type="xs:string"/>\r
-                       <xs:element name="namePrefix" type="xs:string"/>\r
-                       <xs:element name="firstName" type="xs:string"/>\r
-                       <xs:element name="middleName" type="xs:string"/>\r
-                       <xs:element name="lastName" type="xs:string"/>\r
-                       <xs:element name="nameSuffix" type="xs:string"/>\r
+                       <xs:element name="phone" type="tns:PhoneNumber" minOccurs="0" maxOccurs="unbounded"/>\r
                </xs:sequence>\r
+               <xs:attribute name="default" type="xs:string"/>\r
        </xs:complexType>\r
-       \r
+\r
+       <xs:complexType name="PhoneMessage">\r
+               <xs:complexContent>\r
+                       <xs:extension base="tns:Mail">\r
+                               <xs:sequence>\r
+                                       <xs:element name="caller" type="xs:string"/>\r
+                                       <xs:element name="company" type="xs:string"/>\r
+                                       <xs:element name="phone" type="xs:string"/>\r
+                                       <xs:element name="flags" type="tns:PhoneFlags"/>\r
+                               </xs:sequence>\r
+                       </xs:extension>\r
+               </xs:complexContent>\r
+       </xs:complexType>\r
+\r
        <xs:complexType name="PhoneNumber">\r
                <xs:simpleContent>\r
                        <xs:extension base="xs:string">\r
                        </xs:extension>\r
                </xs:simpleContent>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="PhoneList">\r
-               <xs:sequence>\r
-                       <xs:element name="phone" type="tns:PhoneNumber" minOccurs="0" maxOccurs="unbounded"/>\r
-               </xs:sequence>\r
-               <xs:attribute name="default" type="xs:string"/>\r
+\r
+       <xs:complexType name="PlainText">\r
+               <xs:complexContent>\r
+                       <xs:extension base="tns:Authentication">\r
+                               <xs:sequence>\r
+                                       <xs:element name="username" type="xs:string"/>\r
+                                       <xs:element name="password" type="xs:string" minOccurs="0"/>\r
+                               </xs:sequence>\r
+                       </xs:extension>\r
+               </xs:complexContent>\r
        </xs:complexType>\r
-       \r
+\r
        <xs:complexType name="PostalAddress">\r
                <xs:sequence>\r
-                       <xs:element name="description" type="xs:string"/>\r
+                       <xs:element ref="tns:description"/>\r
                        <xs:element name="streetAddress" type="xs:string"/>\r
                        <xs:element name="location" type="xs:string"/>\r
                        <xs:element name="city" type="xs:string"/>\r
                </xs:sequence>\r
                <xs:attribute name="type" type="xs:string" use="required"/>\r
        </xs:complexType>\r
-       \r
+\r
        <xs:complexType name="PostalAddressList">\r
                <xs:sequence>\r
                        <xs:element name="address" type="tns:PostalAddress" minOccurs="0" maxOccurs="unbounded"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="EmailAddressList">\r
+\r
+       <xs:complexType name="ProblemEntry">\r
                <xs:sequence>\r
-                       <xs:element name="email" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>\r
+                       <xs:element name="element" type="xs:string"/>\r
+                       <xs:element ref="tns:code"/>\r
+                       <xs:element ref="tns:description"/>\r
                </xs:sequence>\r
-               <xs:attribute name="primary" type="xs:string"/>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="ImAddress">\r
+\r
+       <xs:complexType name="ProblemList">\r
                <xs:sequence>\r
-                       <xs:element name="service" type="xs:string"/>\r
-                       <xs:element name="address" type="xs:string"/>\r
-                       <!-- type = work, home, etc. -->\r
-                       <xs:element name="type" type="xs:string"/>\r
+                       <xs:element name="entry" type="tns:ProblemEntry" minOccurs="0" maxOccurs="unbounded"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="ImAddressList">\r
-               <xs:sequence>\r
-                       <xs:element name="im" type="tns:ImAddress" minOccurs="0" maxOccurs="unbounded"/>\r
-               </xs:sequence>\r
+\r
+       <xs:complexType name="Proxy">\r
+               <xs:complexContent>\r
+                       <xs:extension base="tns:NameAndEmail">\r
+                               <xs:sequence>\r
+                                       <xs:element ref="tns:id"/>\r
+                                       <xs:element ref="tns:version" minOccurs="0"/>\r
+                                       <xs:element ref="tns:modified" minOccurs="0"/>\r
+                               </xs:sequence>\r
+                       </xs:extension>\r
+               </xs:complexContent>\r
        </xs:complexType>\r
 \r
-       <xs:complexType name="OfficeInfo">\r
+       <xs:complexType name="ProxyList">\r
                <xs:sequence>\r
-                       <xs:element name="organization" type="tns:ItemRef"/>\r
-                       <xs:element name="department" type="xs:string"/>\r
-                       <xs:element name="title" type="xs:string"/>\r
-                       <xs:element name="website" type="xs:anyURI"/>\r
+                       <xs:element name="proxy" type="tns:Proxy" minOccurs="0" maxOccurs="unbounded"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="PersonalInfo">\r
+\r
+       <xs:complexType name="Query">\r
                <xs:sequence>\r
-                       <xs:element name="birthday" type="xs:date" nillable="true"/>\r
-                       <xs:element name="website" type="xs:anyURI"/>\r
+                       <xs:element name="target" type="tns:QueryTarget"/>\r
+                       <xs:element name="filter" type="tns:Filter"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
-       \r
-       <xs:simpleType name="ContactType">\r
-               <xs:restriction base="xs:string">\r
-                       <xs:enumeration value="Contact"/>\r
-                       <xs:enumeration value="Group"/>\r
-                       <xs:enumeration value="Resource"/>\r
-                       <xs:enumeration value="Organization"/>\r
-               </xs:restriction>\r
-       </xs:simpleType>\r
 \r
-       <xs:complexType name="GroupMember">\r
-               <xs:sequence>\r
-                       <xs:element name="uid" type="tns:uid"/>\r
-                       <xs:element name="name" type="xs:string"/>\r
-                       <xs:element name="email" type="xs:string"/>\r
-                       <xs:element name="distType" type="tns:DistributionType" default="TO"/>\r
-                       <xs:element name="itemType" type="tns:ContactType" default="Contact"/>\r
-               </xs:sequence>\r
+       <xs:complexType name="QueryFolder">\r
+               <xs:complexContent>\r
+                       <xs:extension base="tns:Folder">\r
+                               <xs:sequence>\r
+                                       <xs:element name="query" type="tns:Query" minOccurs="0"/>\r
+                               </xs:sequence>\r
+                       </xs:extension>\r
+               </xs:complexContent>\r
        </xs:complexType>\r
 \r
-       <xs:complexType name="GroupMemberList">\r
+       <xs:complexType name="QueryTarget">\r
                <xs:sequence>\r
-                       <xs:element name="member" type="tns:GroupMember" minOccurs="0" maxOccurs="unbounded"/>\r
+                       <xs:element name="source" type="tns:uid" minOccurs="0" maxOccurs="1"/>\r
+                       <xs:element name="container" type="tns:uid" minOccurs="0" maxOccurs="unbounded"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
 \r
-       <xs:complexType name="ItemRef">\r
-               <xs:simpleContent>\r
-                       <xs:extension base="xs:string">\r
-                               <xs:attribute name="uid" type="tns:uid" use="optional"/>\r
+       <xs:complexType name="Recipient">\r
+               <xs:complexContent>\r
+                       <xs:extension base="tns:NameAndEmail">\r
+                               <xs:sequence>\r
+                                       <xs:element name="distType" type="tns:DistributionType"/>\r
+                                       <xs:element name="recipType" type="tns:RecipientType"/>\r
+                               </xs:sequence>\r
                        </xs:extension>\r
-               </xs:simpleContent>\r
+               </xs:complexContent>\r
        </xs:complexType>\r
-       \r
-       <!-- List of updates -->\r
-       <xs:complexType name="UpdateList">\r
+\r
+       <xs:complexType name="RecipientList">\r
                <xs:sequence>\r
-                       <xs:choice minOccurs="0" maxOccurs="unbounded">\r
-                               <xs:element name="add" type="tns:UpdateEntry"/>\r
-                               <xs:element name="delete" type="tns:UpdateEntry"/>\r
-                               <xs:element name="update" type="tns:UpdateEntry"/>\r
-                       </xs:choice>\r
+                       <xs:element name="recipient" type="tns:Recipient" minOccurs="0" maxOccurs="unbounded"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
-       \r
-       <!-- Individual Update Entry -->\r
-       <xs:complexType name="UpdateEntry">\r
-               <xs:sequence>\r
-                       <xs:element name="field" type="xs:string"/>\r
-                       <xs:element name="value" type="xs:anyType"/>\r
-               </xs:sequence>\r
+\r
+       <xs:simpleType name="RecipientType">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:enumeration value="User"/>\r
+                       <xs:enumeration value="PersonalGroup"/>\r
+                       <xs:enumeration value="SystemGroup"/>\r
+                       <xs:enumeration value="PersonalGroupMember"/>\r
+                       <xs:enumeration value="SystemGroupMember"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+\r
+       <xs:complexType name="Resource">\r
+               <xs:complexContent>\r
+                       <xs:extension base="tns:AddressBookItem">\r
+                               <xs:sequence>\r
+                                       <xs:element name="phone" type="xs:string"/>\r
+                                       <xs:element name="resourceType" type="xs:string"/>\r
+                                       <xs:element ref="tns:email"/>\r
+                                       <xs:element name="owner" type="tns:ItemRef"/>\r
+                               </xs:sequence>\r
+                       </xs:extension>\r
+               </xs:complexContent>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="FilterEntry">\r
+\r
+       <xs:complexType name="ReturnNotification">\r
                <xs:sequence>\r
-                       <xs:element name="field" type="xs:string"/>\r
-                       <xs:element name="value" type="xs:anyType"/>\r
+                       <xs:element name="opened" type="tns:ReturnNotificationOptions"/>\r
+                       <xs:choice>\r
+                               <xs:element name="deleted" type="tns:ReturnNotificationOptions"/>\r
+                               <xs:group ref="tns:CalendarReturnNotification"/>\r
+                       </xs:choice>\r
                </xs:sequence>\r
        </xs:complexType>\r
-       \r
-       <xs:group name="FilterElements">\r
-               <xs:choice>\r
-                       <xs:element name="and" type="tns:FilterGroup"/>\r
-                       <xs:element name="or" type="tns:FilterGroup"/>\r
-                       <xs:element name="not" type="tns:FilterGroup"/>\r
-                       <xs:element name="eq" type="tns:FilterEntry"/>\r
-                       <xs:element name="ne" type="tns:FilterEntry"/>\r
-                       <xs:element name="gt" type="tns:FilterEntry"/>\r
-                       <xs:element name="lt" type="tns:FilterEntry"/>\r
-                       <xs:element name="gte" type="tns:FilterEntry"/>\r
-                       <xs:element name="lte" type="tns:FilterEntry"/>\r
-                       <xs:element name="contains" type="tns:FilterEntry"/>\r
-                       <xs:element name="containsWord" type="tns:FilterEntry"/>\r
-                       <xs:element name="begins" type="tns:FilterEntry"/>\r
-                       <xs:element name="exists" type="tns:FilterEntry"/>\r
-                       <xs:element name="notExist" type="tns:FilterEntry"/>\r
-               </xs:choice>\r
-       </xs:group>\r
-       \r
-       <xs:complexType name="FilterGroup">\r
+\r
+       <xs:complexType name="ReturnNotificationOptions">\r
                <xs:sequence>\r
-                       <xs:group ref="tns:FilterElements" minOccurs="1" maxOccurs="unbounded"/>\r
+                       <xs:element name="mail" type="xs:boolean" default="false"/>\r
+                       <xs:element name="notify" type="xs:boolean" default="false"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="Filter">\r
-               <xs:sequence>\r
-                       <xs:group ref="tns:FilterElements" minOccurs="0" maxOccurs="1"/>\r
-               </xs:sequence>\r
+\r
+       <!-- Rights -->\r
+       <xs:complexType name="Rights">\r
+               <xs:all>\r
+                       <xs:element name="read" type="xs:boolean" minOccurs="0"/>\r
+                       <xs:element name="add" type="xs:boolean" minOccurs="0"/>\r
+                       <xs:element name="edit" type="xs:boolean" minOccurs="0"/>\r
+                       <xs:element name="delete" type="xs:boolean" minOccurs="0"/>\r
+                       <xs:element name="share" type="xs:boolean" minOccurs="0"/>\r
+                       <xs:element name="manage" type="xs:boolean" minOccurs="0"/>\r
+               </xs:all>\r
        </xs:complexType>\r
-       \r
-       <xs:simpleType name="CursorSeek">\r
-               <xs:restriction base="xs:string">\r
-                       <xs:enumeration value="current"/>\r
-                       <xs:enumeration value="start"/>\r
-                       <xs:enumeration value="end"/>\r
-               </xs:restriction>\r
-       </xs:simpleType>\r
-       \r
-       <xs:complexType name="QueryTarget">\r
-               <xs:sequence>\r
-                       <xs:element name="source" type="tns:uid" minOccurs="0" maxOccurs="1"/>\r
-                       <xs:element name="container" type="tns:uid" minOccurs="0" maxOccurs="unbounded"/>\r
-               </xs:sequence>\r
+\r
+       <xs:complexType name="SendOptionsRequestReply">\r
+               <xs:attribute name="withinNDays" type="xs:unsignedInt"/>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="Query">\r
+\r
+       <xs:complexType name="SendOptions">\r
                <xs:sequence>\r
-                       <xs:element name="target" type="tns:QueryTarget"/>\r
-                       <xs:element name="filter" type="tns:Filter"/>\r
+                       <xs:element name="requestReply" type="tns:SendOptionsRequestReply" minOccurs="0"/>\r
+                       <xs:element name="mimeEncoding" type="xs:string" minOccurs="0"/>\r
+                       <xs:element name="statusTracking" type="tns:StatusTracking" minOccurs="0"/>\r
+                       <xs:element name="notification" type="tns:ReturnNotification" minOccurs="0"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="ProblemEntry">\r
-               <xs:sequence>\r
-                       <xs:element name="element" type="xs:string"/>\r
-                       <xs:element name="code" type="xs:int"/>\r
-                       <xs:element name="description" type="xs:int"/>\r
-               </xs:sequence>\r
+\r
+       <xs:complexType name="SharedFolder">\r
+               <xs:complexContent>\r
+                       <xs:extension base="tns:Folder">\r
+                               <xs:sequence>\r
+                                       <xs:element ref="tns:rights" minOccurs="0"/>\r
+                                       <xs:element name="acl" type="tns:FolderACL" minOccurs="0"/>\r
+                                       <xs:element name="owner" type="tns:UUID" minOccurs="0"/>\r
+                                       <xs:element name="isSharedByMe" type="xs:boolean" minOccurs="0"/>\r
+                                       <xs:element name="isSharedToMe" type="xs:boolean" minOccurs="0"/>\r
+                               </xs:sequence>\r
+                       </xs:extension>\r
+               </xs:complexContent>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="ProblemList">\r
+\r
+       <!-- Return Status -->\r
+       <xs:complexType name="Status">\r
                <xs:sequence>\r
-                       <xs:element name="entry" type="tns:ProblemEntry" minOccurs="0" maxOccurs="unbounded"/>\r
+                       <xs:element ref="tns:code"/>\r
+                       <xs:element ref="tns:description" minOccurs="0"/>\r
+                       <xs:element name="info" type="xs:string" minOccurs="0"/>\r
+                       <xs:element name="problems" type="tns:ProblemList" minOccurs="0"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="FreeBusyUserList">\r
-               <xs:sequence>\r
-                       <xs:element name="user" type="tns:FreeBusyUser" minOccurs="0" maxOccurs="unbounded"/>\r
-               </xs:sequence>\r
+\r
+       <xs:complexType name="StatusTracking">\r
+               <xs:simpleContent>\r
+                       <xs:extension base="tns:StatusTrackingOptions">\r
+                               <xs:attribute name="autoDelete" type="xs:boolean" default="false"/>\r
+                       </xs:extension>\r
+               </xs:simpleContent>\r
        </xs:complexType>\r
 \r
-       <xs:complexType name="FreeBusyUser">\r
+       <xs:simpleType name="StatusTrackingOptions">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:enumeration value="None"/>\r
+                       <xs:enumeration value="Delivered"/>\r
+                       <xs:enumeration value="DeliveredAndOpened"/>\r
+                       <xs:enumeration value="All"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+\r
+       <xs:complexType name="SystemFolder">\r
                <xs:complexContent>\r
-                       <xs:extension base="tns:NameAndEmail"/>\r
+                       <xs:extension base="tns:Folder">\r
+                               <xs:sequence>\r
+                                       <xs:element name="isSystemFolder" type="xs:boolean" minOccurs="0"/>\r
+                                       <xs:element name="type" type="enums:FolderType"/>\r
+                               </xs:sequence>\r
+                       </xs:extension>\r
                </xs:complexContent>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="FreeBusyInfoList">\r
-               <xs:sequence>\r
-                       <xs:element name="user" type="tns:FreeBusyInfo" minOccurs="0" maxOccurs="unbounded"/>\r
-               </xs:sequence>\r
+\r
+       <xs:complexType name="Task">\r
+               <xs:complexContent>\r
+                       <xs:extension base="tns:CalendarItem">\r
+                               <xs:sequence>\r
+                                       <xs:element name="dueDate" type="xs:date"/>\r
+                                       <xs:element name="taskPriority" type="xs:string"/>\r
+                                       <xs:element name="completed" type="xs:boolean"/>\r
+                               </xs:sequence>\r
+                       </xs:extension>\r
+               </xs:complexContent>\r
        </xs:complexType>\r
 \r
-       <xs:complexType name="FreeBusyInfo">\r
+       <xs:complexType name="TrustedApplication">\r
                <xs:complexContent>\r
-                       <xs:extension base="tns:FreeBusyUser">\r
+                       <xs:extension base="tns:Authentication">\r
                                <xs:sequence>\r
-                                       <xs:element name="blocks" type="tns:FreeBusyBlockList"/>\r
+                                       <xs:element name="name" type="xs:string"/>\r
+                                       <xs:element name="key" type="xs:string"/>\r
                                </xs:sequence>\r
                        </xs:extension>\r
                </xs:complexContent>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="FreeBusyBlockList">\r
+\r
+       <!-- Unique ID -->\r
+       <xs:simpleType name="uid">\r
+               <xs:annotation>\r
+                       <xs:documentation>\r
+                               The unique identifier is a application defined\r
+                               string to uniquely identify an item. The string\r
+                               can optionally consist of two parts. The first\r
+                               part identifies a unique existence of an item. \r
+                               The second part of the string optionally specifies\r
+                               instance information. The first and second part of \r
+                               the ID are separated by an '@'. For this reason \r
+                               neither the first nor second part can contain an \r
+                               '@' symbol.\r
+                               \r
+                               To determine whether or not two items are the \r
+                               same item, the consumer of this API should \r
+                               compare the first part of the ids of the two\r
+                               items (i.e. all of the id up to the @ symbol).\r
+                       </xs:documentation>\r
+               </xs:annotation>\r
+               <xs:restriction base="xs:string">\r
+                       <xs:pattern value="[^@]+(@*)?"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+\r
+       <!-- Individual Update Entry -->\r
+       <xs:complexType name="UpdateEntry">\r
                <xs:sequence>\r
-                       <xs:element name="block" type="tns:FreeBusyBlock" minOccurs="0" maxOccurs="unbounded"/>\r
+                       <xs:element name="field" type="xs:string"/>\r
+                       <xs:element name="value" type="xs:anyType"/>\r
                </xs:sequence>\r
        </xs:complexType>\r
-       \r
-       <xs:complexType name="FreeBusyBlock">\r
+\r
+       <!-- List of updates -->\r
+       <xs:complexType name="UpdateList">\r
+               <xs:sequence>\r
+                       <xs:choice minOccurs="0" maxOccurs="unbounded">\r
+                               <xs:element name="add" type="tns:UpdateEntry"/>\r
+                               <xs:element name="delete" type="tns:UpdateEntry"/>\r
+                               <xs:element name="update" type="tns:UpdateEntry"/>\r
+                       </xs:choice>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+\r
+       <!-- UserInfo Structure -->\r
+       <xs:complexType name="UserInfo">\r
                <xs:sequence>\r
-                       <xs:element name="startDate" type="xs:dateTime"/>\r
-                       <xs:element name="endDate" type="xs:dateTime"/>\r
-                       <xs:element name="acceptLevel" type="tns:AcceptLevel"/>\r
-                       <xs:element name="subject" type="xs:string"/>\r
+                       <xs:element ref="tns:name"/>\r
+                       <xs:element ref="tns:email"/>\r
+                       <xs:element ref="tns:uuid"/>\r
+                       <xs:any/>\r
                </xs:sequence>\r
        </xs:complexType>\r
-</xs:schema>
+\r
+       <!-- Unique User ID -->\r
+       <xs:simpleType name="UUID">\r
+               <xs:annotation>\r
+                       <xs:documentation>\r
+                               The UUID is the unique user ID on a given \r
+                               email system. This is used in various \r
+                               places to indicate that a sender or recipient\r
+                               is an user internal to the collaboration\r
+                               system instead of an external user (i.e. \r
+                               internet address).\r
+                       </xs:documentation>\r
+               </xs:annotation>\r
+               <xs:restriction base="xs:string"/>\r
+       </xs:simpleType>\r
+\r
+       <!-- View (list of fields) -->\r
+       <xs:simpleType name="View">\r
+               <xs:list itemType="xs:string"/>\r
+       </xs:simpleType>\r
+</xs:schema>\r
index 2982cc9..3e32c07 100644 (file)
  * USA
  */
 
+#include <config.h>
 #include "e-gw-message.h"
 
+#ifdef G_ENABLE_DEBUG
+
+static void
+print_header (gpointer name, gpointer value, gpointer data)
+{
+       g_print ("%s: %s\n", (char *) name, (char *) value);
+}
+
+static void
+debug_handler (SoupMessage *msg, gpointer user_data)
+{
+       g_print ("%d %s\nE2k-Debug: %p @ %lu\n",
+                msg->status_code, msg->reason_phrase,
+                msg, time (0));
+
+       /* print headers */
+       soup_message_foreach_header (msg, print_header, NULL);
+
+       /* print response */
+       if (msg->response.length) {
+               fputc ('\n', stdout);
+               fwrite (msg->response.body, 1, msg->response.length, stdout);
+               fputc ('\n', stdout);
+       }
+}
+
+static void
+setup_debug (SoupSoapMessage *msg)
+{
+       const SoupUri *suri;
+
+       uri = soup_message_get_uri (SOUP_MESSAGE (msg));
+       g_print ("%s %s%s%s HTTP/1.1\nSOAP-Debug: %p @ %lu\n",
+                SOUP_MESSAGE (msg)->method, uri->path,
+                uri->query ? "?" : "",
+                uri->query ? uri->query : "",
+                msg, (unsigned long) time (0));
+
+       /* print message headers */
+       print_header ("Host", uri->host, NULL);
+       soup_message_foreach_header (SOUP_MESSAGE (msg)->request_headers, print_header, NULL);
+
+       /* print request's body */
+       fputc ('\n', stdout);
+       fwrite (SOUP_MESSAGE (msg)->request.body, 1, SOUP_MESSAGE (msg)->request.length, stdout);
+       fputc ('\n', stdout);
+
+       soup_message_handler (SOUP_MESSAGE (msg), SOUP_HANDLER_POST_BODY, debug_handler, NULL);
+}
+
+#endif
+
 SoupSoapMessage *
 e_gw_message_new_with_header (const char *uri, const char *method_name)
 {
        SoupSoapMessage *msg;
 
-       msg = soup_soap_message_new (SOUP_METHOD_GET, uri, FALSE, NULL, NULL, NULL);
+       msg = soup_soap_message_new (SOUP_METHOD_POST, uri, FALSE, NULL, NULL, NULL);
        if (!msg) {
                g_warning (G_STRLOC ": Could not build SOAP message");
                return NULL;
        }
 
+#ifdef G_ENABLE_DEBUG
+       setup_debug (
+#endif
+
+       soup_message_add_header (SOUP_MESSAGE (msg)->request_headers, "User-Agent",
+                                "Evolution/" VERSION);
+
        soup_soap_message_start_envelope (msg);
        soup_soap_message_start_body (msg);
+       soup_soap_message_add_attribute (msg, "encodingStyle", "", "SOAP-ENV", NULL);
+
        soup_soap_message_start_element (msg, method_name, NULL, NULL);
 
        return msg;