Content Management Interoperability Services Version 0.62c Part II – ReSTful AtomPub Binding Committee Draft 29 June 2009 Specification URIs: This Version: http://docs.oasis-open.org/cmis/ [additional path/filename] .html http://docs.oasis-open.org/cmis/ [additional path/filename] .doc http://docs.oasis-open.org/cmis/ [additional path/filename] .pdf Previous Version: http://docs.oasis-open.org/cmis/ [additional path/filename] .html http://docs.oasis-open.org/cmis/ [additional path/filename] .doc http://docs.oasis-open.org/cmis/ [additional path/filename] .pdf Latest Version: http://docs.oasis-open.org/cmis/ [additional path/filename] .html http://docs.oasis-open.org/cmis/ [additional path/filename] .doc http://docs.oasis-open.org/cmis/ [additional path/filename] .pdf Technical Committee: OASIS Content Management Interoperability Services TC Chair(s): David Choy Editor(s): Al Brown Ethan Gur-Esh Ryan McVeigh Related work: This specification replaces or supersedes: CMIS Part II – ReSTful AtomPub Binding 0.62 This specification is related to: CMIS Part I Draft 0.62 CMIS Part II – Web Services Draft 0.62 Declared XML Namespace(s): http://docs.oasis-open.org/ns/cmis/restatom /200901 Abstract: This specification defines the ReSTful AtomPub based binding. CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 1 of 54 Status: This document was last revised or approved by the CMIS TC on the above date. The level of approval is also listed above. Check the “Latest Version” or “Latest Approved Version” location noted above for possible later revisions of this document. Technical Committee members should send comments on this specification to the Technical Committee’s email list. Others should send comments to the Technical Committee by using the “Send A Comment” button on the Technical Committee’s web page at http://www.oasisopen.org/committees/CMIS/. For information on whether any patents have been disclosed that may be essential to implementing this specification, and any offers of patent licensing terms, please refer to the Intellectual Property Rights section of the Technical Committee web page (http://www.oasisopen.org/committees/CMIS/ipr.php. The non-normative errata page for this specification is located at http://www.oasisopen.org/committees/CMIS/. CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 2 of 54 Notices Copyright © OASIS® 2008. All Rights Reserved. All capitalized terms in the following text have the meanings assigned to them in the OASIS Intellectual Property Rights Policy (the "OASIS IPR Policy"). The full Policy may be found at the OASIS website. This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published, and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this section are included on all such copies and derivative works. However, this document itself may not be modified in any way, including by removing the copyright notice or references to OASIS, except as needed for the purpose of developing any document or deliverable produced by an OASIS Technical Committee (in which case the rules applicable to copyrights, as set forth in the OASIS IPR Policy, must be followed) or as required to translate it into languages other than English. The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns. This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY OWNERSHIP RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. OASIS requests that any OASIS Party or any other party that believes it has patent claims that would necessarily be infringed by implementations of this OASIS Committee Specification or OASIS Standard, to notify OASIS TC Administrator and provide an indication of its willingness to grant patent licenses to such patent claims in a manner consistent with the IPR Mode of the OASIS Technical Committee that produced this specification. OASIS invites any party to contact the OASIS TC Administrator if it is aware of a claim of ownership of any patent claims that would necessarily be infringed by implementations of this specification by a patent holder that is not willing to provide a license to such patent claims in a manner consistent with the IPR Mode of the OASIS Technical Committee that produced this specification. OASIS may include such claims on its website, but disclaims any obligation to do so. OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS' procedures with respect to rights in any document or deliverable produced by an OASIS Technical Committee can be found on the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this OASIS Committee Specification or OASIS Standard, can be obtained from the OASIS TC Administrator. OASIS makes no representation that any information or list of intellectual property rights will at any time be complete, or that any claims in such list are, in fact, Essential Claims. The names "OASIS", [insert specific trademarked names and abbreviations here] are trademarks of OASIS, the owner and developer of this specification, and should be used only to refer to the organization and its official outputs. OASIS welcomes reference to, and implementation and use of, specifications, while reserving the right to enforce its marks against misleading uses. Please see http://www.oasisopen.org/who/trademark.php for above guidance. CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 3 of 54 Table of Contents 1 2 3 4 5 6 Introduction ........................................................................................................................................... 7 1.1 Terminology ........................................................................................................................................ 7 1.2 Normative References ........................................................................................................................ 7 1.3 Non-Normative References ................................................................................................................ 7 Overview ............................................................................................................................................... 9 2.1 Authentication ..................................................................................................................................... 9 2.2 Response Formats ............................................................................................................................. 9 2.3 Optional Arguments ............................................................................................................................ 9 2.4 Errors and Exceptions ...................................................................................................................... 10 2.5 E-Tags .............................................................................................................................................. 10 2.6 HTTP Options ................................................................................................................................... 10 CMIS ................................................................................................................................................... 11 3.1 Mime Types ...................................................................................................................................... 11 3.1.1 Atom Media Type with CMIS extensions .................................................................................. 11 3.1.2 CMIS Query ............................................................................................................................... 11 CMIS .................................................................................................................................................. 12 3.1.3 Allowable Actions ...................................................................................................................... 12 3.1.4 CMIS Tree ................................................................................................................................. 12 3.1.5 CMIS ACL.................................................................................................................................. 12 3.2 CMIS Link Relations ......................................................................................................................... 12 3.2.1 Existing Link Relations .............................................................................................................. 13 3.2.2 Hierarchy Navigation Internet Draft Link Relations ................................................................... 13 3.2.3 Versioning Internet Draft Link Relations .................................................................................... 13 3.2.4 CMIS Specific Link Relations .................................................................................................... 13 3.3 Exceptions ........................................................................................................................................ 14 3.3.1 Common Exceptions ................................................................................................................. 14 3.3.2 Other Exceptions ....................................................................................................................... 14 3.3.3 Other notable HTTP Exceptions................................................................................................ 14 3.4 Renditions ......................................................................................................................................... 14 3.5 Content Streams ............................................................................................................................... 15 Atom Resources ................................................................................................................................. 16 4.1 Feeds ................................................................................................................................................ 16 4.2 Entries ............................................................................................................................................... 16 4.2.1 Hierarchical Atom Entries .......................................................................................................... 17 4.3 Link relations ..................................................................................................................................... 17 AtomPub Service Document (Repository) ......................................................................................... 18 5.1 URI Templates .................................................................................................................................. 19 5.1.1 Entry By Id ................................................................................................................................. 19 5.1.2 Folder By Path ........................................................................................................................... 20 5.1.3 Query ......................................................................................................................................... 20 5.2 HTTP Methods .................................................................................................................................. 21 5.2.1 GET ........................................................................................................................................... 21 Service Collections ............................................................................................................................. 22 CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 4 of 54 6.1 Root Folder Collections .................................................................................................................... 22 6.2 Query Collection ............................................................................................................................... 22 6.2.1 POST ......................................................................................................................................... 22 6.3 Checked Out Collection .................................................................................................................... 23 6.3.1 GET ........................................................................................................................................... 23 6.3.2 POST ......................................................................................................................................... 23 6.4 Unfiled Collection .............................................................................................................................. 24 6.4.1 GET ........................................................................................................................................... 24 6.4.2 POST ......................................................................................................................................... 24 6.5 Types Children Collection ................................................................................................................. 25 6.5.1 GET ........................................................................................................................................... 25 7 Collections .......................................................................................................................................... 26 7.1 Relationships Collection ................................................................................................................... 26 7.1.1 GET ........................................................................................................................................... 26 7.1.2 POST ......................................................................................................................................... 26 7.2 Folder Children Collection ................................................................................................................ 27 7.2.1 GET ........................................................................................................................................... 27 7.2.2 POST ......................................................................................................................................... 27 7.3 Policies Collection ............................................................................................................................. 29 7.3.1 GET ........................................................................................................................................... 29 7.3.2 POST ......................................................................................................................................... 30 8 Feeds .................................................................................................................................................. 31 8.1 Object Parents Feed ......................................................................................................................... 31 8.1.1 GET ........................................................................................................................................... 31 8.2 Changes............................................................................................................................................ 31 8.3 Folder Descendants .......................................................................................................................... 32 8.3.1 GET ........................................................................................................................................... 32 8.3.2 DELETE..................................................................................................................................... 32 8.4 Folder Tree ....................................................................................................................................... 32 8.4.1 GET ........................................................................................................................................... 33 8.4.2 DELETE..................................................................................................................................... 33 8.5 AllVersions Feed ............................................................................................................................... 33 8.5.1 GET ........................................................................................................................................... 34 8.5.2 DELETE..................................................................................................................................... 34 8.6 Type Descendants Feed................................................................................................................... 34 8.6.1 GET ........................................................................................................................................... 34 9 Resources .......................................................................................................................................... 35 9.1 Type Entry......................................................................................................................................... 35 9.1.1 GET ........................................................................................................................................... 35 9.2 Document Entry ................................................................................................................................ 35 9.2.1 GET ........................................................................................................................................... 36 9.2.2 PUT ........................................................................................................................................... 36 9.2.3 DELETE..................................................................................................................................... 37 9.3 Document Private Working Copy (PWC) Entry ................................................................................ 37 9.3.1 GET ........................................................................................................................................... 37 CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 5 of 54 9.3.2 PUT ........................................................................................................................................... 38 9.3.3 DELETE..................................................................................................................................... 38 9.4 Folder Entry ...................................................................................................................................... 38 9.4.1 GET ........................................................................................................................................... 39 9.4.2 PUT ........................................................................................................................................... 39 9.4.3 DELETE..................................................................................................................................... 39 9.5 Relationship Entry ............................................................................................................................. 39 9.5.1 GET ........................................................................................................................................... 40 9.5.2 PUT ........................................................................................................................................... 40 9.5.3 DELETE..................................................................................................................................... 40 9.6 Policy Entry ....................................................................................................................................... 40 9.6.1 GET ........................................................................................................................................... 41 9.6.2 PUT ........................................................................................................................................... 41 9.6.3 DELETE..................................................................................................................................... 41 9.7 Content Stream ................................................................................................................................. 41 9.7.1 GET ........................................................................................................................................... 41 9.7.2 PUT ........................................................................................................................................... 42 9.7.3 DELETE..................................................................................................................................... 42 9.8 Folder Parent Entry........................................................................................................................... 42 9.8.1 GET ........................................................................................................................................... 42 9.9 ACL Resource .................................................................................................................................. 42 9.9.1 GET ........................................................................................................................................... 42 10 CMIS-RestAtom Schema ................................................................................................................... 43 11 IANA Considerations .......................................................................................................................... 44 11.1 Document Types ............................................................................................................................. 44 11.1.1 CMIS Query ............................................................................................................................. 44 11.1.2 CMIS AllowableActions ........................................................................................................... 44 11.1.3 CMIS Tree ............................................................................................................................... 45 11.1.4 CMIS Atom .............................................................................................................................. 46 11.1.5 CMIS ACL................................................................................................................................ 47 # Conformance ............................................................................................................................................ 49 A. Acknowledgements ............................................................................................................................ 50 Participants: ................................................................................................................................................ 50 B. Non-Normative Text ........................................................................................................................... 51 B.1 Atom Link Relations by Object Type ................................................................................................ 51 B.2 Atom and AtomPub Extensions........................................................................................................ 51 B.3 Examples .......................................................................................................................................... 51 B.4 Expressing multiple content streams in REST ................................................................................. 53 C. Revision History.................................................................................................................................. 54 CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 6 of 54 1 Introduction 2 3 4 The Content Management Interoperability Services (CMIS) ReSTful AtomPub binding specification defines a specification based on AtomPub that can be used by applications to work with one or more Content Management Repositories. 5 It is expected that this binding will be leveraged to build applications such as: 6 7 8 9 10 1.1 Terminology 11 12 13 The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in RFC2119. 14 1.2 Normative References 15 16 17 18 19 20 21 [RFC4287] 22 [RFC2119] [RFC5023] [RFC2616] 26 M. Nottingham, R. Sayre, Atom Syndication Format, http://www.ietf.org/rfc/rfc4287.txt, December 2005 J. Gregorio, B. de hOra, Atom Publishing Protocol, http://www.ietf.org/rfc/rfc5023.txt, October 2007 R. Fielding, J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P. Leach, T. BernersLee, Hypertext Transfer Protocol --HTTP/1.1, http://www.ietf.org/rfc/rfc2616.txt, June 1999 S. Bradner, Key words for use in RFCs to Indicate Requirement Levels , http://www.ietf.org/rfc/rfc2119.txt, March 1997 23 24 25 Quick UI components on the components (e.g., Widgets and Mashups) Consumed by feed-centric applications such as Yahoo pipes Content-centric applications close to the glass (Java/JSP, .NET, AJAX) Content-centric rich Internet Applications (e.g., flex, air) [CMISDM] OASIS, Committee Draft 0.52, “Content Management Interoperability Services (CMIS) Domain Model”, March 2009 1.3 Non-Normative References 27 28 CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 7 of 54 NOTE: The proper format for a citation to an OASIS Technical Committee’s work (whether Normative or Non-Normative) is: OASIS Stage (Committee Draft 01, Committee Draft 02, Committee Specification 01, etc. or Standard) Title (italicized or in quotation marks) Approval Date (Month YYYY) URI of the actual Authoritative Specification (namespace is not acceptable as the content changes over time) For example: EDXL-HAVE OASIS Standard, “Emergency Data Exchange Language (EDXL) Hospital AVailability Exchange (HAVE) Version 1.0”, November 2008. http://docs.oasis-open.org/emergency/edxl-have/os/emergency_edxl_have1.0-spec-os.doc 29 30 31 CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 8 of 54 32 Overview 33 34 35 This binding is based upon the Atom (RFC4287) and Atom Publishing Protocol (RFC5023). Implementations of CMIS must be compliant with RFC4287 and RFC5023 and all RFCs that supersede them. 36 37 38 39 In the ReSTful AtomPub binding, the client starts with the service document. The client will request the service document by the URI provided by the vendor. The client will then choose a CMIS collection, and then start accessing the repository by following the references in the returned documents. 40 41 42 43 44 The CMIS binding consists of a service document specifying at least CMIS service collections, atom collections, feeds and entry documents. CMIS extends the Atom and AtomPub documents utilizing the Atom and AtomPub extension mechanism. CMIS also leverages link tags to specify additional resources related to the requested resource. 45 46 When requesting a resource, optional parameters may be specified to change default behavior. 47 48 49 Special collections have been created that have semantic meaning beyond collection membership. These are: 50 Unfiled – All documents added to this collection will be removed from all other collections 51 CheckedOut – All documents added to this collection will be checkedout 52 1.4 Authentication 53 Authentication SHOULD be handled by the transport protocol. Please see AtomPub section 14. 54 1.5 Response Formats 55 56 57 The client can specify in HTTP the Accept header which specifies which formats are acceptable to the client. With this mechanism the client can chose which response format the CMIS implementation should respond with. The CMIS compliant implementation MUST support this one response format: 58 application/atom+xml 59 60 61 The CMIS repository will chose the response format based on the Accept header if specified. If the Accept header is not specified, then the CMIS repository should respond with the format specified by the specification. 62 The CMIS repository may support other formats such as: 63 application/json for JSON 64 text/html for an HTML interface to the API 65 1.6 Optional Arguments 66 67 The binding supports adding optional parameters to CMIS resources to modify default behavior. These HTTP query string parameters would be appended to the URI specified. 68 CMIS implementations MUST support arguments being specified as HTTP query string parameters. 69 70 71 72 Names and valid values for HTTP query string parameters are as described in the appropriate CMIS Service descriptions [see Part I]. Valid values of enum types are also represented in the schema, as described in part 1 of CMIS CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 9 of 54 73 1.7 Errors and Exceptions 74 75 76 Exceptions shall be thrown as described in the appropriate CMIS Service description. Exceptions are to be mapped to an appropriate HTTP error code, and it is suggested that the body of an error reply be sufficient for a user to determine corrective action. 77 1.8 E-Tags 78 79 CMIS changeTokens are represented as E-Tags and follow HTTP’s use of E-Tags. CMIS server implementations SHOULD support E-Tags. 80 1.9 HTTP Ranges 81 It is RECOMMENDED that HTTP Range requests be supported on Content Streams. 82 83 It is RECOMMENDED that HTTP compression is also supported. 84 1.10 HTTP Verb OPTIONS 85 86 87 The repository SHOULD support the HTTP Options verb on all the resources defined in this specification. If the repository supports OPTIONS, then the repository MUST at least return the HTTP verbs specified for that resource. CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 10 of 54 88 CMIS 89 1.11 Mime Types 90 CMIS introduces new media types for: 91 a CMIS Query document (application/cmisquery+xml) 92 a CMIS AllowableActions document (application/cmisallowableactions+xml) 93 an Atom Document (Entry or Feed) with any CMIS Markup 94 an Atom Feed Document with CMIS Hierarchy extensions (application/cmistree+xml) 95 96 In addition to those media types specified by CMIS, CMIS also leverages these media types: 97 AtomPub Service (application/atomsvc+xml) 98 Atom Entry (application/atom+xml;type=entry) 99 Atom Feed (application/atom+xml;type=feed) 100 1.11.1 Atom Media Type with CMIS extensions 101 Media Type: application/cmisatom+xml 102 Starting tag: atom feed or atom entry 103 Type Parameters: 104 105 type – the semantics of the type parameter MUST be the same as the media type parameter for atom documents. 106 107 108 This allows clients to differentiate between atom media type without CMIS extensions and atom media type with CMIS extensions. 109 110 This media type SHOULD NOT be used with CMIS extensions for nesting atom entries (CMIS Tree). 111 112 Example: 113 TODO: Add example here before Public Review 114 115 1.11.2 CMIS Query 116 Media Type: application/cmisquery+xml 117 Starting tag: query 118 119 This document contains the representation of a query to be executed in a CMIS repository. 120 121 Example: 122 123 124 125 <query xmlns=”http://www.cmis.org/CMIS/1.0”> <statement>SELECT * FROM document</statement> <searchAllVersions>false</searchAllVersions> <pageSize>0</pageSize> CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 11 of 54 <skipCount>0</skipCount> 126 127 </query> 128 1.11.3 CMIS Allowable Actions 129 Media Type: application/cmisallowableactions+xml 130 Starting tag: allowableactions 131 132 133 This document contains the representation of the allowable actions the user may perform on the referenced object. 134 135 Example: 136 TODO: 137 1.11.4 CMIS Tree 138 Media Type: application/cmistree+xml 139 Starting tag: atom feed Add example here before Public Review 140 141 This document is an atom feed (application/atom+xml;type=feed) with CMIS markup to nest a hierarchy. 142 143 Example: 144 TODO: 145 1.11.5 CMIS ACL 146 Media Type: application/cmisacl+xml 147 Starting tag: cmis:cmisAccessControlListType Add example here before Public Review 148 149 This document specifies an Access Control List based on the schema in part 1. 150 151 Example: 152 TODO: 153 1.12 CMIS Link Relations 154 155 156 The listing below outlines the different link types in CMIS. This is in addition to the link relations specified by Atom and Atom Publishing Protocol. The registry for link relations is located at http://www.iana.org/assignments/link-relations/link-relations.xhtml. Add example here before Public Review 157 158 159 160 161 162 Links may have the following attributes in addition to the ones specified by Atom and Atom Publishing Protocol: (CMIS) id: Specifies the CMIS ID of the resource referenced by the link. It is recommended to include this attribute for links that point to CMIS resources that have an id. These are the link relation types specified by CMIS: CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 12 of 54 163 1.12.1 Existing Link Relations 164 165 Existing link relations should be used where appropriate by the implementation. In addition, the following link relations are leveraged for the CMIS specification: 166 self 167 service 168 describedby 169 via 170 edit-media 171 edit 172 alternate 173 first 174 previous 175 next 176 last 177 178 179 Please see http://www.iana.org/assignments/link-relations/link-relations.xhtml for more information on these link relations. 180 1.12.2 Hierarchy Navigation Internet Draft Link Relations 181 182 Please refer to the Internet Draft here: http://www.ietf.org/internet-drafts/draft-divilly-atom-hierarchy03.txt. 183 184 CMIS leverages the following link relations from the Internet Draft: 185 up 186 down 187 1.12.3 Versioning Internet Draft Link Relations 188 189 Please refer to the Internet Draft here: http://www.ietf.org/internet-drafts/draft-brown-versioning-linkrelations-01.txt. 190 191 CMIS leverages the following link relations from the Internet Draft: 192 all-versions 193 current-version 194 working-copy 195 1.12.4 CMIS Specific Link Relations 196 CMIS defines the following link relations: 197 o 198 199 202 Service: getAllowableActions http://docs.oasis-open.org/ns/cmis/link/200901/relationships o 200 201 http://docs.oasis-open.org/ns/cmis/link/200901/allowableactions Service: getRelationships http://docs.oasis-open.org/ns/cmis/link/200901/source o Source Link on Relationship CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 13 of 54 203 http://docs.oasis-open.org/ns/cmis/link/200901/target o 204 205 http://docs.oasis-open.org/ns/cmis/link/200901/target o 206 207 Service: getACLPermissions http://docs.oasis-open.org/ns/cmis/link/200901/acl o 208 Target Link on Relationship Service: getACL 209 1.13 Exceptions 210 1.13.1 Common Exceptions 211 212 The following listing defines the HTTP status codes that repositories will return for the various common exceptions defined in Part I of the CMIS specification. 213 CMIS Services Exception HTTP Status Code 214 invalidArgument 400 215 objectNotFound 404 216 permissionDenied 403 217 operationNotSupported 405 218 updateConflict 409 219 runtime 500 220 1.13.2 Other Exceptions 221 CMIS Services Exception HTTP Status Code 222 constraintViolation 409 223 filterNotValid 400 224 streamNotSupported 403 225 storage 500 226 contentAlreadyExists 409 227 versioning 409 228 folderNotValid 400 229 1.13.3 Other notable HTTP Exceptions 230 415 Unsupported Media Type o 231 232 233 422 Unprocessable Entity o 234 235 When a media type is POST’ed to a collection that is not supported, this exception MUST be returned When a request has been POST’ed but cannot be processed, this exception MUST be returned 236 1.14 Renditions 237 238 Each Rendition included in a CMIS AtomPub response is represented as an Atom link rel=”alternate”. The following attributes SHOULD be included on the link element: 239 href: URI to the rendition content stream 240 type: The Media Type of the Rendition CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 14 of 54 241 cmis:renditionType: The Rendition Type 242 243 The following attributes MAY be included 244 title: The Filename (or name property if object) of Rendition 245 length: The length of the rendition 246 247 248 If a thumbnail is available, the repository SHOULD include the thumbnail as alternate link as part of the atom entry even if the optional includeRenditions argument is not specified. 249 1.15 Content Streams 250 251 The content stream for a document SHOULD be referenced by the content src attribute as well as the edit-media link relation. 252 253 The following attributes SHOULD be included on the link element: 254 href: URI to the content stream 255 type: The Media Type of the content stream 256 CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 15 of 54 257 Atom Resources 258 For all Atom Resources used in this specification, the following MUST be followed: 259 1.16 Feeds 260 Any feed MUST be a valid atom Feed document and conform to the guidelines below: 261 262 1. atom:updated MUST be the latest time the folder or its contents was updated. If unknown by the underlying repository, it should be the current time. 263 2. atom:author/atom:name MUST be the CMIS property cmis:CreatedBy 264 3. atom:title MUST be the CMIS property cmis:Name 265 4. The atom:link with relation self MUST be generated to return the URI of the feed 266 267 5. A feed SHOULD contain the element app:collection element, describing the appropriate media types supported for creation of new entries in the feed 268 269 6. atom:id must be the most stable ID available to the repository. This id MUST be compliant with atom’s specification and be a valid URI. 270 271 7. Feeds MAY be paged via the link relations specified in AtomPub. If more items are available than contained in the feed, then a link with the relation next MUST be included in the feed. 272 1.17 Entries 273 274 At any point where an Atom document of type Entry is sent or returned, it must be a valid Atom Entry document and conform to the guidelines below: 275 1. atom:Title MUST be the cmis:Name property 276 2. app:edited MUST be cmis:LastModifiedDate 277 3. atom:updated MUST be cmis:LastModifiedDate 278 4. atom:published MUST be cmis:CreatedDate 279 5. atom:author/atom:name MUST be cmis:CreatedBy 280 281 282 6. The repository SHOULD make a best effort at generating HTML or text that represents the object. For example, an HTML table containing the properties and their values for simple feed readers. That representation will be supplied as follows: 283 a. For Documents: 284 i. The atom:content/src attribute SHOULD be used to point to the content stream 285 286 287 ii. The repository SHOULD populate the atom:summary tag with text that at best efforts represents the document. For example, an HTML table containing the properties and their values for simple feed readers 288 b. Other Objects (Folders, Relationships, Types, etc): 289 290 291 i. The repository MUST comply with the atom specification and have a content element. How this is done, is repository specific. Any value in the content field MUST be ignored if the atom entry represents a non-document object. 292 293 294 ii. The repository SHOULD populate the atom:summary tag with text that at best efforts represents the object. For example, an HTML table containing the properties and their values for simple feed readers 295 7. Links will be used to provide URIs to CMIS functionality 296 297 8. Link relations MAY be omitted if the function is not allowed and that function would not show up in Allowable Actions 298 9. Links may be omitted if the repository does not support that capability CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 16 of 54 299 300 10. All CMIS properties MUST be exposed in CMIS cmis:properties elements even if they are duplicated in an atom element 301 302 11. atom:id MUST be the most stable ID available to the repository. This id MUST be compliant with atom’s specification and be a valid URI. 303 304 305 When POSTing an Atom Document, the Atom elements MUST take precedence over the corresponding writable CMIS property. For example, atom:title will overwrite cmis:Name. 306 1.17.1 Hierarchical Atom Entries 307 308 309 For atom entries that are hierarchical such as Folder Tree or Descendants, the repository MUST populate a cmisra:children element with the enclosing feed of its direct children. This pattern continues until the depth is satisfied. 310 311 312 313 The cmisra:children element that MUST be included in an atom entry: <xs:element name="children" type="atom:feedType" /> 314 315 316 If an entry does not contain cmisra:children element, then the entry MAY have children even though it is not represented in the atom entry. 317 318 For Example, 319 TODO: Add in Example for F2F 320 321 1.18 Link relations 322 323 324 The link element with a specified relation MUST be included if client can perform the operation. The repository MAY omit the link relation if the operation is not available. The operation may not be available due to a variety of reasons such as access control, administrative policies, or other mechanisms. CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 17 of 54 325 AtomPub Service Document (Repository) 326 327 The AtomPub Service Document contains the set of repositories that are available. Each repository is mapped to a Workspace in the AtomPub Service document. 328 329 CMIS Services exposed: 330 GET: getRepositories, getRepositoryInfo 331 332 Media Type: application/atomsvc+xml 333 334 335 How the client will get the initial AtomPub (APP) service document or the URI for the service document is repository specific. Examples are via URI, or loading the service document from disk. 336 337 338 The service document will be available from Atom Entry and Atom Feed documents via a link relationship, service. 339 340 341 342 A workspace element for a CMIS repository MUST have a collection element for each of following collections: o 343 344 Root Folder Collection: Root folder of the Repository Types Collection: Collection containing all the types in the repository o 345 ‘root’ for the children collection of the root folder ‘types’ for the children collection 346 347 348 The workspace element SHOULD contain these collections if the repository supports this functionality: o 349 350 354 ‘changes’ Unfiled folder: Folder for posting documents to be unfiled; read can be disabled o 355 ‘query’ Changes collection: Collection for understanding changes in the repository o 353 ‘checkedout’ Query collection: Collection for posting queries to be executed o 351 352 CheckedOut collection: collection containing all checked out documents user can see ‘unfiled’ 356 357 The workspace element will have two CMIS attributes: 358 359 cmis:id: This is the id of the repository if available. This attribute is located on the workspace element. 360 361 362 cmis:repositoryRelationship. RepositoryRelationship attribute is optional. RepositoryRelationship specifies the relationship of the repository to others listed in the service document. The repository name will be exposed in the workspace element via the atom:title element. 363 364 365 If the repository supports the URI templates, then the repository SHOULD include the uri templates in the workspace elements. 366 CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 18 of 54 367 The workspace element SHOULD also contain the following link elements with the relation: 368 369 foldertree (in CMIS namespace): This link relation points to the folder tree of the root folder. See Folder Tree resource for more information. 370 371 rootdescendants (in CMIS namespace): This link relation points to the descendants collection of the root folder. 372 373 374 typesdescendants (in CMIS namespace): This link relation points to the types descendants for the base types in the repository. 375 376 377 378 The workspace element may include app:collection elements for the collections that represent folders in the repository. However, an alternative approach, especially for a repository with many folders, is to not enumerate those collections here, but include the app:collection element per RFC5023 in the Atom Feed document. 379 1.19 URI Templates 380 381 Implementations SHOULD include URI templates in the workspace element of the service document as defined by CMIS. CMIS defines the following types: 382 entrybyid 383 folderbypath 384 query 385 386 387 Repositories MAY extend that set of types. Those URI Template Types will be repository specific. Repositories MAY have more than one entry per uri type if the entries have different media types. 388 389 390 391 392 393 394 395 396 397 398 399 Structure of URI Template: <xs:complexType name="cmisUriTemplateType"> <xs:sequence> <xs:element name="template" type="xs:string" /> <xs:element name="type" type="xs:string" /> <xs:element name="mediatype" type="xs:string" /> <xs:any processContents="lax" namespace="##other" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> 400 401 402 Repositories SHOULD include at least the URI templates with corresponding Media Type defined below in the AtomPub services document. 403 404 1.19.1 Entry By Id 405 Type: entrybyid 406 Media Type: application/atom+xml;type=entry 407 408 Service: getProperties 409 410 411 Variables that MUST be in the template: {id}: Id of object 412 CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 19 of 54 413 Variables that MAY be in the template: 414 {filter}: Property Filter 415 {includeAllowableActions}: Property Filter 416 {includeRelationships}: Include Relationships. 417 {includeACL}: Include ACL 418 419 Example: 420 TODO: Add example here before Public Review 421 422 1.19.2 Folder By Path 423 Type: folderbypath 424 Media Type: application/atom+xml;type=entry 425 426 Service: getFolderByPath 427 428 429 Variables in Template: {path}: Path of folder. o 430 431 432 No escaping is provided for the variables. It is suggested that this be an URI argument so no escaping is necessary, or the last part of the URI so it can be interpreted correctly. 433 434 Variables that MAY be in the template: 435 {filter}: Property Filter 436 {includeAllowableActions}: Property Filter 437 {includeRelationships}: Include Relationships. 438 {includeACL}: Include ACL 439 440 Example: 441 TODO: Add example here before Public Review 442 443 1.19.3 Query 444 Type: query 445 Media Type: application/atom+xml;type=feed 446 447 Service: query 448 449 Variables in Template: 450 {q}: CMIS Query Statement 451 {searchAllVersions}: Boolean, true if to search all versions 452 CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 20 of 54 453 Variables that MAY be in the template: 454 {maxItems}: Integer, Max items to return 455 {skipCount}: Items to skip 456 {includeAllowableActions}: Property Filter 457 {includeRelationships}: Include Relationships. 458 Example: 459 TODO: Add example here before Public Review 460 461 1.20 HTTP Methods 462 1.20.1 GET 463 464 465 This retrieves the AtomPub Service document for a specified repository and potentially related repositories. This exposes the capabilities defined in getRepositories and getRepositoryInfo in the Domain Model. CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 21 of 54 466 Service Collections 467 These are the collections that are included on an AtomPub Service document in the workspace element. 468 1.21 Root Folder Collections 469 This is a collection described in the service document. Please see Folder Children. 470 1.22 Query Collection 471 472 473 474 This is a collection for processing queries. If the implementation supports GET on this collection, then the implementation SHOULD at least return a feed consisting of zero or more atom entries. These atom entries should represent persisted objects related to query such as persisted queries, long running queries or search templates. 475 476 CMIS Services exposed via HTTP verbs: 477 GET: Repository Specific. 478 POST: Query 479 Media Type: application/atom+xml;type=feed 480 Accept: Repository 481 MUST support CMIS Query document, 482 MAY support other media type 483 484 485 Link Relations: o 486 487 488 service: Points to service document containing CMIS repository Media Type: application/atomsvc+xml paging link relations as appropriate: first, next, prev, last if the repository supports paging a query result set 489 490 1.22.1 POST 491 This collection MUST accept CMIS Query documents. 492 493 494 495 Upon submission (creation) of a query document, a response must be returned with a Location header representing the feed for that query or an exception must be thrown. In addition, the server SHOULD return the feed directly. If the server does so, the server should also return the Content-Location header. 496 497 The feed returned MUST contain a set of atom entries representing the result set from the query. 498 499 500 501 The atom entries should contain the bare minimum necessary for Atom compliance [RFC4287]. The atom entries MUST contain the CMIS extension element (cmis:object) containing the properties specified by the query in the select clause of the query statement. 502 503 504 If all the selected properties can be mapped to the same type reference, then the repository MAY include addition information in the atom entry. CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 22 of 54 505 506 Please see http://tools.ietf.org/html/rfc5023#section-5.3. 507 508 509 510 511 Example: 512 513 TODO: 514 1.23 Checked Out Collection 515 This is a collection described in the service document that contains all the checkedout documents 516 CMIS Services: HTTP Success: 201 Location Header Content-Location Header Add example here before Public Review 517 GET: getCheckedoutDocs 518 POST: checkout 519 Media Type: application/atom+xml;type=feed 520 Accept: Repository 521 MUST support Atom Entry Documents with CMIS extensions 522 MAY support other media type 523 524 525 Link Relations: o 526 527 service: Points to service document containing CMIS repository Media Type: application/atomsvc+xml paging link relations as appropriate: first, next, prev, last 528 1.23.1 GET 529 The following arguments may be supplied. Please see the domain model for more information: 530 filter 531 folderId 532 maxItems 533 skipCount 534 includeAllowableActions 535 includeRelationships 536 1.23.2 POST 537 538 When an atom entry is POST’ed to this collection, the atom entry will be checked out. A ContentLocation header MUST be returned containing the location of the private working copy. 539 540 Example: 541 TODO: Add example here before Public Review 542 CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 23 of 54 543 1.24 Unfiled Collection 544 545 This is a collection described in the service document that contains all the unfiled documents in the repository. 546 CMIS Services: 547 GET: getUnfiled 548 POST: removeObjectFromFolder 549 Media Type: application/atom+xml;type=feed 550 Accept: Repository 551 MUST support Atom Entry Documents with CMIS extensions 552 MAY support other media type 553 554 555 Link Relations: service: Points to service document containing CMIS repository o 556 Media Type: application/atomsvc+xml 557 1.24.1 GET 558 The following arguments may be supplied. Please see the domain model for more information: 559 filter 560 folderId 561 maxItems 562 skipCount 563 includeAllowableActions 564 includeRelationships 565 1.24.2 POST 566 567 This removes the object from all folders in the repository by default. If the optional argument removeFrom is specified, the object will only be removed from that folder. 568 569 570 If the Atom Entry POST’ed, does not have the CMIS extensions with a valid cmis:ObjectId, the document does not exist, or the document is not in that folder, an exception is thrown. 571 572 573 574 This adheres to AtomPub model. Please see http://tools.ietf.org/html/rfc5023#section-5.3. HTTP Success: 201 Location Header 575 576 577 578 579 The following arguments may be supplied. Please see the domain model for more information: removeFrom: For repositories which support multi-filing, this parameter identifies which folder to remove this object from. If specified, it indicates the folder from which the object shall be moved. If not specified, the object will be removed from all folders. 580 581 Example: 582 TODO: Add example here before Public Review 583 CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 24 of 54 584 1.25 Types Children Collection 585 586 587 This is a collection described in the service document that contains the types in the repository under the specified parent type. If no parent type is specified, then the base types are returned in the feed. This feed does not include any nesting and is a flat feed. 588 CMIS Services: 589 GET: getTypeChildren 590 Media Type: application/atom+xml;type=feed 591 Accept: Repository 592 MAY support other media type 593 594 595 Link Relations: service: Points to service document containing CMIS repository o 596 Media Type: application/atomsvc+xml 597 via: points to the type definition whose children represent this feed 598 599 down: points to the atom feed document representing the descendents collection for this same type with media type of application/cmistree+xml 600 paging link relations as appropriate: first, next, prev, last 601 1.25.1 GET 602 The following arguments may be supplied. Please see the domain model for more information: 603 includePropertyDefinitions 604 maxItems 605 skipCount 606 CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 25 of 54 607 Collections 608 1.26 Relationships Collection 609 610 This is the set of relationships available (either source or target or both) from a specific item such as a document, folder or policy. 611 CMIS Services: 612 GET: getRelationships 613 POST: createRelationship 614 Media Type: application/atom+xml;type=feed 615 Accept: Repository 616 MUST support Atom Entry Documents with CMIS extensions 617 MAY support other media type 618 619 620 Link Relations: service: Points to service document containing CMIS repository o 621 Media Type: application/atomsvc+xml 622 623 via: Points to the originating atom entry document if available that contained the relationship link the client followed to get to this collection. 624 paging link relations as appropriate: first, next, prev, last 625 1.26.1 GET 626 The following arguments may be supplied. Please see the domain model for more information: 627 typeId 628 includeSubRelationshipTypes 629 enumRelationshipDirection 630 maxItems 631 skipCount 632 filter 633 includeAllowableActions 634 1.26.2 POST 635 636 When an atom entry with CMIS markup is posted to this collection, if that atom entry represents a new CMIS relationship, then that relationship will be created. 637 638 The server SHOULD throw an exception if the source is different than the sourceId or target different than the targeted for the source and targets specified in this collection. 639 The server SHOULD throw an exception if the ObjectTypeId is not specified. 640 Example: 641 TODO: Add example here before Public Review 642 CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 26 of 54 643 1.27 Folder Children Collection 644 This is a pseudo-object comprised of all the direct children of a particular folder. 645 CMIS Services: 646 GET: getChildren 647 POST: 648 createDocument 649 or createFolder 650 or createPolicy 651 or moveObject 652 or addObjectToFolder 653 Media Type: application/atom+xml;type=feed 654 655 Accept: Repository 656 MUST support Atom Entry Documents with CMIS extensions 657 MAY support other media type 658 659 660 Link Relations: service: Points to service document containing CMIS repository o 661 Media Type: application/atomsvc+xml 662 via: points to the atom entry of the folder generating this collection 663 up: points to the atom feed document for the folder children collection of this folder’s parent 664 665 down: points to the atom feed document representing the descendents collection for this same folder with media type of application/cmistree+xml 666 paging link relations as appropriate: first, next, prev, last 667 http://docs.oasis-open.org/ns/cmis/link/200901/foldertree: Points to the folder tree for this folder 668 1.27.1 GET 669 Request Format: N/A 670 Response Format: application/atom+xml;type=feed (flat listing) or application/cmistree+xml (tree listing) 671 HTTP Code: 672 673 674 675 676 677 678 679 200 OK (Success) The following arguments may be supplied. Please see the domain model for more information: If flat listing,maxItems and skipCount if tree listing, depth type filter includeAllowableActions includeRelationships 680 1.27.2 POST 681 682 CMIS repositories MUST be compliant with RFC5023 for POSTing new entries into a collection. Please see http://tools.ietf.org/html/rfc5023#section-5.3. 683 684 HTTP Success: 201 Location Header CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 27 of 54 685 686 687 688 The following arguments may be supplied. removeFrom: For repositories which support multi-filing, this parameter identifies which folder to remove this object from. If specified, it indicates the folder from which the object shall be moved. If not specified, addObjectToFolder will be performed. 689 690 691 692 693 POSTing an Atom Entry document with CMIS markup: Adding a document to a folder: If the atom entry has a cmis property cmis:ObjectId that is valid for the repository, the object will be added to the folder. 694 695 696 697 698 When an object is added to the folder, in repositories that do not support multi-filing it will be removed from the previous folder and the operation treated as move. If the repository supports multiple folders, it will be added to the new folder. If the optional argument removeFrom is specified, then the object will be removed from the folder specified. 699 700 701 The optional argument sourceFolderId MAY specify the folder from which to remove the object. 702 703 Example: 704 TODO: Add example here before Public Review 705 706 707 Creating a CMIS Object (in that folder): If the cmis:ObjectId property is missing, it will be created and then added to the folder. 708 709 For Documents: 710 711 712 A content stream MUST be specified if required by the type definition. If not provided and it is required, an exception will be thrown. This is even true if the CMIS Document is not checked in on create. 713 714 715 716 Content Streams MAY be provided by any mechanism supported by Atom Publishing Protocol: As part of the atom entry via the src attribute on the content element o 717 718 719 As part of the atom entry inlining via the content element o 720 721 base64: Implementers MUST support content base64 encoded At a later time o 722 723 724 src attribute: Implementers SHOULD support external references to content At a later time by replacing the edit-media link with a new content The optional argument versioningState MAY specify additional versioning behavior such as checkin. 725 726 Example: 727 TODO: Add example here before Public Review 728 729 If the cmis:ObjectId property is present but not valid an exception will be thrown. CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 28 of 54 730 731 POSTing other document formats: 732 733 The behavior is repository specific when a non Atom entry or an atom document without the CMIS elements is posted to a folder collection. 734 735 For example, the repository MAY auto-create a document with a specific type (document) the client could edit. The repository MAY also throw an exception. 736 737 The repository MUST follow HTTP specification and return the following HTTP codes: 738 739 740 500 if internal resource is unavailable to complete the request such as database, network, storage is unavailable or when an condition not specified as part of HTTP is not met 741 415 Unsupported Media Type if the repository cannot support the supplied format. 742 743 Example: 744 TODO: Add example here before Public Review 745 746 Optional arguments: 747 versioningState (for createDocument) 748 sourceFolderId (for moveObject) 749 removeFrom 750 thisVersion 751 752 1.28 Policies Collection 753 This is an atom feed of all the policy objects currently applied 754 CMIS Services: 755 GET: getAllVersions 756 POST: createPolicy 757 Media Type: application/atom+xml;type=feed 758 Accept: Repository 759 MUST support Atom Entry Documents with CMIS extensions 760 MAY support other media type 761 762 763 Link Relations: service: Points to service document containing CMIS repository o 764 Media Type: application/atomsvc+xml 765 via: points to the atom entry of the resource generating this collection 766 paging link relations as appropriate: first, next, prev, last 767 1.28.1 GET 768 The following arguments may be supplied. Please see the domain model for more information: 769 filter CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 29 of 54 770 1.28.2 POST 771 772 When an Atom Entry representing a Policy is posted to this collection, the policy will be applied to the object. 773 774 Example: 775 TODO: Add example here before Public Review CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 30 of 54 776 Feeds 777 1.29 Object Parents Feed 778 This is the set of parents for a specific object. 779 CMIS Services: 780 GET: getObjectParents 781 Media Type: application/atom+xml;type=feed 782 Accept: not-specified 783 Link Relations: 784 service: Points to service document containing CMIS repository o 785 Media Type: application/atomsvc+xml 786 via: points to the atom entry of object who’s parents are represented by this collection 787 paging link relations as appropriate: first, next, prev, last 788 789 Example: 790 TODO: 791 1.29.1 GET 792 The following arguments may be supplied. Please see the domain model for more information: 793 Add example here before Public Review filter 794 1.30 Changes 795 796 797 This is a link relationship described in the service document that contains the changes in the repository in the workspace element. The link relation pointing to this feed is http://docs.oasisopen.org/ns/cmis/link/200901/changes. 798 799 CMIS Services: 800 GET: getChanges() 801 Media Type: application/atom+xml;type=feed 802 Accept: Atom Entry document, other repository-specific 803 Link Relations: 804 o 805 806 service: Points to service document containing CMIS repository Media Type: application/atomsvc+xml paging link relations as appropriate: first, next, prev, last 807 808 809 810 If the next changes does not exist yet, the link relation next MAY be available. If the next link relation is not available, the client should revisit the feed in the future and look for new items and the next link relation. 811 812 Example: 813 TODO: Add example here before Public Review CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 31 of 54 814 1.31 Folder Descendants 815 816 817 This is a hierarchical feed comprising items under a specified folder to a specified depth. This is available via the link relation http://docs.oasis-open.org/ns/cmis/link/200901/foldertree. Please see the Hierarchical Atom Entries for more information on format. 818 819 CMIS Services: 820 GET: getDescendants 821 DELETE: deleteTree 822 Media Type: application/atom+xml;type=feed 823 Accept: Atom Entry Document with CMIS extensions, other repository specific 824 Link Relations: 825 service: Points to service document containing CMIS repository o 826 Media Type: application/atomsvc+xml 827 via: points to the atom entry of the folder generating this collection 828 up: points to the atom feed document for the folder children collection of this folder’s parent 829 830 down: points to the atom feed document representing the children feed for this same folder with media type of application/atom+xml 831 paging link relations as appropriate: first, next, prev, last 832 http://docs.oasis-open.org/ns/cmis/link/200901/foldertree: Points to the folder tree for this folder 833 834 Example: 835 TODO: 836 1.31.1 GET 837 The following arguments may be supplied. Please see the domain model for more information: Add example here before Public Review 838 filter 839 includeAllowableActions 840 1.31.2 DELETE 841 842 This deletes the folder and all sub-folders. The following arguments may be supplied. Please see the domain model for more information: 843 continueOnFailure 844 unfileObjects 845 1.32 Folder Tree 846 847 848 This is a hierarchical feed comprising all the folders under a specified folder. This is available via the link relation http://docs.oasis-open.org/ns/cmis/link/200901/foldertree. Please see the Hierarchical Atom Entries for more information on format. 849 850 851 852 853 CMIS Services: GET: getDescendants DELETE: deleteTree Media Type: application/atom+xml;type=feed CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 32 of 54 854 Accept: Atom Entry Document with CMIS extensions, other repository specific 855 Link Relations: 856 service: Points to service document containing CMIS repository o 857 Media Type: application/atomsvc+xml 858 via: points to the atom entry of the folder generating this collection 859 up: points to the atom feed document for the folder children collection of this folder’s parent 860 down: 861 862 o application/atom+xml : Points to the atom feed document representing the children feed for this same folder 863 o application/cmistree+xml: Points to the descendants feed of the same folder 864 paging link relations as appropriate: first, next, prev, last 865 http://docs.oasis-open.org/ns/cmis/link/200901/foldertree: Points to the folder tree for this folder 866 867 Example: 868 TODO: 869 1.32.1 GET 870 The following arguments may be supplied. Please see the domain model for more information: Add example here before Public Review 871 filter 872 includeAllowableActions 873 1.32.2 DELETE 874 875 This deletes the folder and all sub-folders. The following arguments may be supplied. Please see the domain model for more information: 876 continueOnFailure 877 unfileObjects 878 1.33 AllVersions Feed 879 This is a feed comprised of all the versions of the given document. 880 CMIS Services: 881 GET: getAllVersions 882 DELETE: deleteAllVersions 883 Media Type: application/atom+xml;type=feed 884 Link Relations: 885 service: Points to service document containing CMIS repository o 886 Media Type: application/atomsvc+xml 887 via: points to the atom entry of the resource generating this collection 888 paging link relations as appropriate: first, next, prev, last 889 890 Example: 891 TODO: Add example here before Public Review CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 33 of 54 892 1.33.1 GET 893 The following arguments may be supplied. Please see the domain model for more information: 894 filter 895 includeAllowableActions 896 includeRelationships 897 1.33.2 DELETE 898 This removes the entire version history of the document. 899 Success HTTP code: 204 900 1.34 Type Descendants Feed 901 902 903 This is a feed described in the service document that contains all the types under a specific type in the repository to a specific depth. If no parent type is specified, then the base types are returned in the feed. The link relation is http://docs.oasis-open.org/ns/cmis/link/200901/typesdescendants. 904 CMIS Services: 905 GET: getTypes 906 Media Type: application/atom+xml;type=feed 907 Accept: Atom Entry document, other repository-specific 908 Link Relations: 909 service: Points to service document containing CMIS repository o 910 Media Type: application/atomsvc+xml 911 via: points to the type definition whose descendents represent this feed 912 down: points to the children feed for the same type 913 914 Example: 915 TODO: 916 1.34.1 GET 917 The following arguments may be supplied. Please see the domain model for more information: Add example here before Public Review 918 includePropertyDefinitions 919 depth 920 CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 34 of 54 921 Resources 922 1.35 Type Entry 923 This represents a type definition in the repository. 924 This is enclosed as an atom entry 925 CMIS Services: 926 GET: getTypeDefinition 927 Media Type: application/atom+xml;type=entry 928 Link Relations: 929 service: Points to service document containing CMIS repository o 930 Media Type: application/atomsvc+xml 931 up: Points to the parent type as atom entry if applicable 932 down: Points to the children of this type as atom feed if applicable o 933 934 935 Media Type: application/cmistree+xml points to the atom feed document representing the descendents collection for this same type describedby: Points to the type definition atom entry of the base type 936 937 One of the following elements MUST be included inside the atom entry: 938 939 940 941 942 943 944 945 946 947 948 949 950 Example: 951 TODO: <xs:element name="documentType" type="cmis:cmisTypeDocumentDefinitionType" substitutionGroup="cmis:type" /> <xs:element name="folderType" type="cmis:cmisTypeFolderDefinitionType" substitutionGroup="cmis:type" /> <xs:element name="relationshipType" type="cmis:cmisTypeRelationshipDefinitionType" substitutionGroup="cmis:type" /> <xs:element name="policyType" type="cmis:cmisTypePolicyDefinitionType" substitutionGroup="cmis:type" /> Add example here before Public Review 952 953 1.35.1 GET 954 955 1.36 Document Entry 956 This is a CMIS Document instance. 957 CMIS Services: 958 GET: getProperties, getPropertiesOfLatestVersion 959 PUT: updateProperties 960 DELETE: deleteObject CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 35 of 54 961 Media Type: application/atom+xml;type=entry 962 Link Relations: 963 service: Points to service document containing CMIS repository o 964 Media Type: application/atomsvc+xml 965 966 up: Points to the atom feed containing the set of parents. If there is only one parent, the repository MAY point this link relation directly to the atom entry of the parent. 967 all-versions: Points to atom feed containing the versions of this document 968 latest-version 969 edit-media 970 working-copy 971 describedby 972 973 alternate: this is used to identify the renditions available for the specified object. Please see the Renditions section. 974 975 http://docs.oasis-open.org/ns/cmis/link/200901/allowableactions: Points to the allowable actions document for this object. 976 977 http://docs.oasis-open.org/ns/cmis/link/200901/relationships: Points to the relationships feed for this object 978 http://docs.oasis-open.org/ns/cmis/link/200901/policies: Points to the policy feed for this object. 979 http://docs.oasis-open.org/ns/cmis/link/200901/acl: Points to ACL document for this object 980 981 982 The following element MUST be included inside the atom entry: <xs:element name="object" type="cmis:cmisObjectType" /> 983 984 Example: 985 TODO: 986 1.36.1 GET 987 The following arguments may be supplied. Please see the domain model for more information: Add example here before Public Review 988 major 989 returnVersion o 990 991 Used to differentiate between getProperties and getPropertiesOfLatestVersion. If TRUE, execute getPropertiesOfLatestVersion service. 992 includeAllowableActions 993 includeRelationships 994 filter 995 includeRenditions 996 997 998 999 1000 1001 o If an object has a Thumbnail rendition, that rendition SHOULD be included in the atom entry representation if this parameter is not specified. If this parameter is specified, the behavior should follow the specified value. 1.36.2 PUT This does a complete replacement of the atom entry with the atom entry document specified. If properties are not included, they will be unset. CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 36 of 54 1002 1.36.3 DELETE 1003 This removes the document. 1004 Success HTTP code: 204 1005 1.37 Document Private Working Copy (PWC) Entry 1006 This is the private working copy of the document (checkedout version of document) 1007 CMIS Services: 1008 GET: getProperties 1009 PUT: updateProperties or checkin 1010 DELETE: cancelCheckout 1011 Media Type: application/atom+xml;type=entry 1012 Link relations: 1013 service: Points to service document containing CMIS repository o 1014 Media Type: application/atomsvc+xml 1015 1016 up: Points to the atom feed containing the set of parents. If there is only one parent, the repository MAY point this link relation directly to the atom entry of the parent. 1017 all-versions 1018 edit-media 1019 via: atom entry that created this private working copy 1020 describedby 1021 1022 alternate: this is used to identify the renditions available for the specified object. Please see the Renditions section. 1023 1024 http://docs.oasis-open.org/ns/cmis/link/200901/allowableactions: Points to the allowable actions document for this object. 1025 1026 http://docs.oasis-open.org/ns/cmis/link/200901/relationships: Points to the relationships feed for this object 1027 http://docs.oasis-open.org/ns/cmis/link/200901/policies: Points to the policy feed for this object. 1028 http://docs.oasis-open.org/ns/cmis/link/200901/acl: Points to ACL document for this object 1029 1030 1031 The following element MUST be included inside the atom entry: <xs:element name="object" type="cmis:cmisObjectType" /> 1032 1033 Example: 1034 TODO: 1035 1.37.1 GET 1036 The following arguments may be supplied. Please see the domain model for more information: Add example here before Public Review 1037 filter 1038 includeAllowableActions 1039 includeRelationships 1040 includeRenditions CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 37 of 54 o 1041 1042 1043 If an object has a Thumbnail rendition, that rendition SHOULD be included in the atom entry representation if this parameter is not specified. If this parameter is specified, the behavior should follow the specified value. 1044 1.37.2 PUT 1045 1046 This does a complete replacement of the atom entry with the atom entry document specified. If properties are not included, they will be not set. 1047 The following arguments may be supplied. Please see the domain model for more information: 1048 checkinComment 1049 major 1050 checkin o 1051 1052 Used to differentiate between updateProperties or checkin services. If TRUE, execute checkin service. 1053 1.37.3 DELETE 1054 This removes the document entry, in this case, cancels the check out. The PWC will be removed. 1055 1056 Success HTTP code: 204 1057 1.38 Folder Entry 1058 This is a CMIS Folder instance. The properties of a folder map onto the feed tag. 1059 CMIS Services: 1060 GET: getProperties 1061 PUT: updateProperties 1062 DELETE: Delete [folder entry only – deleteObject] 1063 Media Type: application/atom+xml;type=entry 1064 Link Relations: 1065 service: Points to service document containing CMIS repository o 1066 Media Type: application/atomsvc+xml 1067 describedby: Points to the type definition for this object 1068 down: Points to the children of this folder if they exist o 1069 1070 Media Type: application/cmistree+xml points to the atom feed document representing the descendents collection for this same folder 1071 up: Points to the atom entry for the parent 1072 1073 alternate: this is used to identify the renditions available for the specified object. Please see the Renditions section. 1074 1075 http://docs.oasis-open.org/ns/cmis/link/200901/allowableactions: Points to the allowable actions document for this object. 1076 1077 http://docs.oasis-open.org/ns/cmis/link/200901/relationships: Points to the relationships feed for this object 1078 http://docs.oasis-open.org/ns/cmis/link/200901/policies: Points to the policy feed for this object. 1079 http://docs.oasis-open.org/ns/cmis/link/200901/acl: Points to ACL document for this object 1080 http://docs.oasis-open.org/ns/cmis/link/200901/foldertree: Points to the folder tree for this folder 1081 CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 38 of 54 1082 1083 The following element MUST be included inside the atom entry: <xs:element name="object" type="cmis:cmisObjectType" /> 1084 1085 Example: 1086 TODO: Add example here before Public Review 1087 1088 1.38.1 GET 1089 The following arguments may be supplied. Please see the domain model for more information: 1090 filter 1091 includeAllowableActions 1092 includeRelationships 1093 includeRenditions o 1094 1095 1096 If an object has a Thumbnail rendition, that rendition SHOULD be included in the atom entry representation if this parameter is not specified. If this parameter is specified, the behavior should follow the specified value. 1097 1.38.2 PUT 1098 1099 This does a complete replacement of the atom entry with the atom entry document specified. If properties are not included, they will be unset. 1100 1.38.3 DELETE 1101 This removes the object (folder) from the repository. 1102 Success HTTP code: 204 1103 1.39 Relationship Entry 1104 This is a CMIS relationship instance. These objects are exposed via ‘relationships’ link type. 1105 CMIS Services: 1106 GET: getProperties 1107 PUT: updateProperties 1108 DELETE: Delete 1109 Media Type: application/atom+xml;type=entry 1110 Link Relations: 1111 service: Points to service document containing CMIS repository o 1112 Media Type: application/atomsvc+xml 1113 describedby 1114 target 1115 source 1116 1117 alternate: this is used to identify the renditions available for the specified object. Please see the Renditions section. 1118 1119 http://docs.oasis-open.org/ns/cmis/link/200901/allowableactions: Points to the allowable actions document for this object. 1120 http://docs.oasis-open.org/ns/cmis/link/200901/policies: Points to the policy feed for this object. CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 39 of 54 1121 http://docs.oasis-open.org/ns/cmis/link/200901/acl: Points to ACL document for this object 1122 1123 1124 The following element MUST be included inside the atom entry: <xs:element name="object" type="cmis:cmisObjectType" /> 1125 1126 Example: 1127 TODO: Add example here before Public Review 1128 1129 1.39.1 GET 1130 The following arguments may be supplied. Please see the domain model for more information: 1131 filter 1132 includeAllowableActions 1133 includeRelationships 1134 includeRenditions o 1135 1136 1137 If an object has a Thumbnail rendition, that rendition SHOULD be included in the atom entry representation if this parameter is not specified. If this parameter is specified, the behavior should follow the specified value. 1138 1.39.2 PUT 1139 1140 This does a complete replacement of the atom entry with the atom entry document specified. If properties are not included, they will be unset. 1141 1.39.3 DELETE 1142 This removes the relationship entry. 1143 Successful HTTP code: 204 1144 1.40 Policy Entry 1145 This is a CMIS policy instance. 1146 CMIS Services: 1147 GET: getProperties 1148 PUT: updateProperties 1149 DELETE: Delete 1150 Media Type: application/atom+xml;type=entry 1151 Link Relations: 1152 service: Points to service document containing CMIS repository o 1153 Media Type: application/atomsvc+xml 1154 describedby 1155 target 1156 source 1157 1158 alternate: this is used to identify the renditions available for the specified object. Please see the Renditions section. CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 40 of 54 1159 1160 http://docs.oasis-open.org/ns/cmis/link/200901/allowableactions: Points to the allowable actions document for this object. 1161 http://docs.oasis-open.org/ns/cmis/link/200901/policies: Points to the policy feed for this object. 1162 http://docs.oasis-open.org/ns/cmis/link/200901/acl: Points to ACL document for this object 1163 1164 1165 The following element MUST be included inside the atom entry: <xs:element name="object" type="cmis:cmisObjectType" /> 1166 1167 Example: 1168 TODO: Add example here before Public Review 1169 1170 1.40.1 GET 1171 The following arguments may be supplied. Please see the domain model for more information: 1172 filter 1173 includeAllowableActions 1174 includeRelationships 1175 includeRenditions 1176 1177 1178 o If an object has a Thumbnail rendition, that rendition SHOULD be included in the atom entry representation if this parameter is not specified. If this parameter is specified, the behavior should follow the specified value. 1179 1180 1.40.2 PUT 1181 1182 This does a complete replacement of the atom entry with the atom entry document specified. If properties are not included, they will be unset. 1183 1.40.3 DELETE 1184 This removes the policy entry. 1185 Success HTTP code: 204 1186 1.41 Content Stream 1187 This is the content stream portion of the document object. 1188 CMIS Services: 1189 GET: getContentStream 1190 PUT: setContentStream 1191 DELETE: deleteContentStream 1192 Media Type: Mime/Type of resource (mime type of content stream on document) 1193 1.41.1 GET 1194 This returns the content stream. 1195 1196 1197 It is RECOMMENDED that HTTP Range requests are supported on this resource. It is RECOMMENDED that HTTP compression is also supported. CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 41 of 54 1198 Please see RFC2616 for more information on HTTP Range requests. 1199 1.41.2 PUT 1200 This does a replacement of the content stream. 1201 1202 1203 The following optional arguments may be supplied. Please see the domain model for more information: overwriteFlag 1204 1205 Success HTTP code: 201 1206 Returns headers: 1207 Content-Location: URI for content stream 1208 1.41.3 DELETE 1209 This removes the content stream. 1210 1.42 Folder Parent Entry 1211 This is the parent for a specific object. Please see the appropriate Entry Resource. 1212 CMIS Services: 1213 GET: getFolderParent 1214 Media Type: application/atom+xml;type=entry 1215 1.42.1 GET 1216 The following arguments may be supplied. Please see the domain model for more information: 1217 filter 1218 1.43 ACL Resource 1219 CMIS Services: 1220 1221 GET: getACL Media Type: application/cmisacl+xml 1222 1223 Example: 1224 TODO: Add example here before Public Review 1225 1226 1.43.1 GET CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 42 of 54 1227 CMIS-RestAtom Schema 1228 1229 Placeholder for schema to be included for Public Review Draft. file in the meantime. See Schema zip 1230 CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 43 of 54 1231 IANA Considerations 1232 1.44 Document Types 1233 1.44.1 CMIS Query 1234 A CMIS Query Document, when serialized as XML 1.0, can be identified with the following media type: 1235 1236 MIME media type name: application 1237 MIME subtype name: cmisquery +xml 1238 Mandatory parameters: None. 1239 Optional parameters: 1240 1241 1242 1243 1244 1245 1246 1247 1248 "charset": This parameter has semantics identical to the charset parameter of the "application/xml" media type as specified in [RFC3023]. Encoding considerations: Identical to those of "application/xml" as described in [RFC3023], Section 3.2. Security considerations: As defined in this specification. In addition, as this media type uses the "+xml" convention, it shares the same security considerations as described in [RFC3023], Section 10. Interoperability considerations: There are no known interoperability issues. 1249 Published specification: This specification. 1250 Applications that use this media type: 1251 No known applications currently use this media type. 1252 Additional information: 1253 Magic number(s): 1254 As specified for "application/xml" in [RFC3023], Section 3.2. 1255 File extension: .cmisquery 1256 Fragment identifiers: 1257 1258 1259 As specified for "application/xml" in [RFC3023], Section 5. Base URI: As specified in [RFC3023], Section 6. 1260 Macintosh File Type code: TEXT 1261 Person and email address to contact for further information: 1262 Al Brown <albertcbrown@us.ibm.com> 1263 Intended usage: COMMON 1264 Author/Change controller: IESG 1265 1.44.2 CMIS AllowableActions 1266 1267 A CMIS Allowable Actions Document, when serialized as XML 1.0, can be identified with the following media type: 1268 CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 44 of 54 1269 MIME media type name: application 1270 MIME subtype name: cmisallowableactions +xml 1271 Mandatory parameters: None. 1272 Optional parameters: 1273 1274 1275 1276 1277 1278 1279 1280 1281 "charset": This parameter has semantics identical to the charset parameter of the "application/xml" media type as specified in [RFC3023]. Encoding considerations: Identical to those of "application/xml" as described in [RFC3023], Section 3.2. Security considerations: As defined in this specification. In addition, as this media type uses the "+xml" convention, it shares the same security considerations as described in [RFC3023], Section 10. Interoperability considerations: There are no known interoperability issues. 1282 Published specification: This specification. 1283 Applications that use this media type: 1284 No known applications currently use this media type. 1285 Additional information: 1286 Magic number(s): 1287 As specified for "application/xml" in [RFC3023], Section 3.2. 1288 File extension: .cmisallowableactions 1289 Fragment identifiers: 1290 1291 1292 As specified for "application/xml" in [RFC3023], Section 5. Base URI: As specified in [RFC3023], Section 6. 1293 Macintosh File Type code: TEXT 1294 Person and email address to contact for further information: 1295 Al Brown <albertcbrown@us.ibm.com> 1296 Intended usage: COMMON 1297 Author/Change controller: IESG 1298 1299 1.44.3 CMIS Tree 1300 A CMIS Tree Document, when serialized as XML 1.0, can be identified with the following media type: 1301 1302 MIME media type name: application 1303 MIME subtype name: cmistree +xml 1304 Mandatory parameters: None. 1305 Optional parameters: 1306 1307 1308 1309 1310 "charset": This parameter has semantics identical to the charset parameter of the "application/xml" media type as specified in [RFC3023]. Encoding considerations: Identical to those of "application/xml" as described in [RFC3023], Section 3.2. Security considerations: As defined in this specification. CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 45 of 54 1311 1312 1313 1314 In addition, as this media type uses the "+xml" convention, it shares the same security considerations as described in [RFC3023], Section 10. Interoperability considerations: There are no known interoperability issues. 1315 Published specification: This specification. 1316 Applications that use this media type: 1317 No known applications currently use this media type. 1318 Additional information: 1319 Magic number(s): 1320 As specified for "application/xml" in [RFC3023], Section 3.2. 1321 File extension: .cmistree 1322 Fragment identifiers: 1323 1324 1325 As specified for "application/xml" in [RFC3023], Section 5. Base URI: As specified in [RFC3023], Section 6. 1326 Macintosh File Type code: TEXT 1327 Person and email address to contact for further information: 1328 Al Brown <albertcbrown@us.ibm.com> 1329 Intended usage: COMMON 1330 Author/Change controller: IESG 1331 1332 1.44.4 CMIS Atom 1333 A CMIS Atom Document, when serialized as XML 1.0, can be identified with the following media type: 1334 1335 MIME media type name: application 1336 MIME subtype name: cmisatom +xml 1337 Mandatory parameters: None. 1338 Optional parameters: 1339 1340 "charset": This parameter has semantics identical to the charset parameter of the "application/xml" media type as specified in [RFC3023]. 1341 1342 “type”: This parameter has semantics identical to the type parameter of the “application/atom+xml” as specified in [RFC4287] 1343 1344 1345 1346 1347 1348 1349 Encoding considerations: Identical to those of "application/xml" as described in [RFC3023], Section 3.2. Security considerations: As defined in this specification. In addition, as this media type uses the "+xml" convention, it shares the same security considerations as described in [RFC3023], Section 10. Interoperability considerations: There are no known interoperability issues. 1350 Published specification: This specification. 1351 Applications that use this media type: 1352 1353 No known applications currently use this media type. Additional information: CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 46 of 54 1354 1355 Magic number(s): As specified for "application/xml" in [RFC3023], Section 3.2. 1356 File extension: .cmisatom 1357 Fragment identifiers: 1358 1359 1360 As specified for "application/xml" in [RFC3023], Section 5. Base URI: As specified in [RFC3023], Section 6. 1361 Macintosh File Type code: TEXT 1362 Person and email address to contact for further information: 1363 Al Brown <albertcbrown@us.ibm.com> 1364 Intended usage: COMMON 1365 Author/Change controller: IESG 1366 1367 1.44.5 CMIS ACL 1368 A CMIS Tree Document, when serialized as XML 1.0, can be identified with the following media type: 1369 1370 MIME media type name: application 1371 MIME subtype name: cmisacl +xml 1372 Mandatory parameters: None. 1373 Optional parameters: 1374 1375 1376 1377 1378 1379 1380 1381 1382 "charset": This parameter has semantics identical to the charset parameter of the "application/xml" media type as specified in [RFC3023]. Encoding considerations: Identical to those of "application/xml" as described in [RFC3023], Section 3.2. Security considerations: As defined in this specification. In addition, as this media type uses the "+xml" convention, it shares the same security considerations as described in [RFC3023], Section 10. Interoperability considerations: There are no known interoperability issues. 1383 Published specification: This specification. 1384 Applications that use this media type: 1385 No known applications currently use this media type. 1386 Additional information: 1387 Magic number(s): 1388 As specified for "application/xml" in [RFC3023], Section 3.2. 1389 File extension: .cmisacl 1390 Fragment identifiers: 1391 1392 1393 As specified for "application/xml" in [RFC3023], Section 5. Base URI: As specified in [RFC3023], Section 6. 1394 Macintosh File Type code: TEXT 1395 Person and email address to contact for further information: CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 47 of 54 1396 Al Brown <albertcbrown@us.ibm.com> 1397 Intended usage: COMMON 1398 Author/Change controller: IESG 1399 1400 CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 48 of 54 1401 # Conformance 1402 1403 The last numbered section in the specification must be the Conformance section. Conformance Statements/Clauses go here. CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 49 of 54 1404 A. Acknowledgements 1405 1406 The following individuals have participated in the creation of this specification and are gratefully acknowledged: 1407 1408 1409 Participants: [Participant Name, Affiliation | Individual Member] [Participant Name, Affiliation | Individual Member] CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 50 of 54 1410 B. Non-Normative Text 1411 B.1 Atom Link Relations by Object Type ATOM Link Type Self Document Folder Relationship Policy X X X X X X X X alternate X edit X edit-media X 1412 B.2 Atom and AtomPub Extensions 1413 The following extensions to Atom and AtomPub (APP) have been leveraged in this specification: 1414 1. Entries can contain Entries (for descendants) via the CmisAtomChildren type 1415 2. Entries contain CMIS Type and CMIS Object information 1416 3. Link relations have been extended 1417 4. Links have been extended to add a cmis:id attribute 1418 5. AtomPub Service document has been extended 1419 a. CmisRepositoryInfo added to workspace 1420 b. Collections have cmis collectionType 1421 B.3 Examples 1422 Each of the following resources have an example as defined below: Resource Description Example (Root Tag) Repository Please see Example-Service.xml (Service) This is the repository logical object. It is represented by the atom service document. This is also exposed on entry as link ‘service’ Root Folder Collection This is a collection described in the service document Please see ExampleFolderChildren.xml. This is a collection described in the service document that contains all the checkedout documents Please see ExampleFolderChildren.xml. This will however, be a feed of private working copy document’s only. This is a collection of unfiled documents. Please see ExampleFolderChildren.xml. However there should be nothing returned. (Feed) Checked Out Collection (Feed) Unfiled Collection (Feed) Types Children Collection This is a collection described in the service document that contains all the types in the repository (Feed) CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 51 of 54 Type (Type) Document (Entry) This is the CMIS type of the object. This is exposed as link ‘describedby’, Please see Example-Type.xml. This is a CMIS Document instance. These are exposed in feeds or in an entry document. Please see ExampleDocumentEntry.xml. This can also be a private working copy (checkedout) Document Private Working Copy This is a document in the private working copy of the document (checkedout version of document) Please see ExampleDocumentPWCEntry.xml. This is a CMIS Folder instance. These are exposed in feeds or in an entry document. The properties of a folder map onto the feed tag. Please see Example-FolderEntry.xml. This is a CMIS relationship instance. These objects are exposed via ‘http://docs.oasisopen.org/ns/cmis/link/200901/relationships’ Please see Example-Relationship.xml. This is a CMIS policy instance. This is exposed via ‘cmis-policies’ as a feed Please see Example-PolicyEntry.xml This is the content stream portion of the document object. This is exposed via ‘editmedia’ or ‘alternate’ on the entry No example. This is the original document format. This is the set of actions available to the current user on the current object. This is exposed as a link ‘http://docs.oasisopen.org/ns/cmis/link/200901/allowableactions Please see ExampleAllowableActions.xml (Entry) Folder (Entry) Relationship (Entry) Policy (Entry) Content Stream (Non-XML) Allowable Actions (AllowableActions) ’ Relationships Collection (for a specific item) (Feed) Parents Collection (for a specific document or policy object) This is the set of relationships available (either source or target or both) from a specific item such as a document, folder or policy. This is exposed as either ‘http://docs.oasisopen.org/ns/cmis/link/200901/source’ or ‘http://docs.oasisopen.org/ns/cmis/link/200901/target’ Please see FolderChildren. However, the entries will be Relationships as in the RelationshipEntry example. This is the set of parents for a specific document or policy object. This is exposed via ‘up’ on the entry. Please see FolderChildren. However, the entries will be Folder as in the FolderEntry Example This is a pseudo-object comprised of all the direct children of a particular folder. This is exposed as ‘down’ Please see FolderChildren. This is a pseudo-object comprised of all the direct and indirect children of a particular folder. This is exposed as ‘down’ with a media type Please see FolderDescendants. (Feed) Children (Feed) Descendants (Feed) CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 52 of 54 ‘application/cmistree+xml’ AllVersions (Feed) This is a pseudo-object made up of all document versions related to the current document version. This collection is also known as the version history. This is exposed via ‘all-versions’ on the entry. Please see FolderChildren. However, the entries will be Documents as in DocumentEntry and DocumentPWCEntry. 1423 B.4 Expressing multiple content streams in REST 1424 1425 1426 CMIS does not currently support multiple content streams in the specification due to complexity and lack of support across a set of repositories. However, exposing the multiple content streams that already exist in a repository can be done quite readily with REST. 1427 Inside the ATOM entry section: 1428 1429 <link rel=”stream” foo:streamnumber=3 href="http://example.org/media/atom03"> 1430 1431 1432 The same can be done in the cmis:object tag as well. The foo:streamnumber attribute tag exposes the stream id. Non-aware applications will see many links of relationship cmis-stream. If they are aware, they can chose which stream they want to retrieve. 1433 For setting multiple content streams, this must be done outside of CMIS today. 1434 CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 53 of 54 1435 C. Revision History 1436 Revision Date .61 10 April 2009 Al Brown 26 May 2009 Al Brown, Ryan McVeigh .62a Editor Changes Made Updated based on JIRA issues http://tools.oasis-open.org/issues/secure/IssueNavigator.jspa?reset=true&pid=10021&fixfor= http://tools.oasisopen.org/issues/secure/IssueNavigator.jspa?reset=true&mode=hide&sorter/order=DESC&so 1&pid=10021&fixfor=10012 1437 1438 CMISREST Copyright © OASIS® 2009. All Rights Reserved. June 1, 2009 Page 54 of 54