Content Management Interoperability Services (CMIS) Version 1.0
Committee Draft 07
19 February 2010
Specification URIs:
This Version:
http://docs.oasis-open.org/cmis/CMIS/v1.0/cd07/cmis-spec-v1.0.doc (Authoritative)
http://docs.oasis-open.org/cmis/CMIS/v1.0/cd07/cmis-spec-v1.0.html
http://docs.oasis-open.org/cmis/CMIS/v1.0/cd07/cmis-spec-v1.0.pdf
Previous Version:
http://docs.oasis-open.org/cmis/CMIS/v1.0/cd06/cmis-spec-v1.0.doc (Authoritative)
http://docs.oasis-open.org/cmis/CMIS/v1.0/cd06/cmis-spec-v1.0.html
http://docs.oasis-open.org/cmis/CMIS/v1.0/cd06/cmis-spec-v1.0.pdf
Latest Version:
http://docs.oasis-open.org/cmis/CMIS/v1.0/cmis-spec-v1.0.doc
(Authoritative)
http://docs.oasis-open.org/cmis/CMIS/v1.0/cmis-spec-v1.0.html
http://docs.oasis-open.org/cmis/CMIS/v1.0/cmis-spec-v1.0.pdf
Technical Committee:
OASIS Content Management Interoperability Services (CMIS) TC
Chair(s):
David Choy, EMC
Editor(s):
Al Brown, IBM
Ethan Gur-Esh, Microsoft
Ryan McVeigh, Oracle
Florian Müller, OpenText
Related work:
N/A
Declared XML Namespace(s):
http://docs.oasis-open.org/ns/cmis/core/200908/
http://docs.oasis-open.org/ns/cmis/restatom/200908/
http://docs.oasis-open.org/ns/cmis/messaging/200908/
http://docs.oasis-open.org/ns/cmis/ws/200908/
http://docs.oasis-open.org/ns/cmis/link/200908/
Abstract:
The Content Management Interoperability Services (CMIS) standard defines a domain model and Web Services and Restful AtomPub bindings that can be used by applications to work with one or more Content Management repositories/systems.
The CMIS interface is designed to be layered on top of existing Content Management systems and their existing programmatic interfaces. It is not intended to prescribe how specific features should be implemented within those CM systems, not to exhaustively expose all of the CM system’s capabilities through the CMIS interfaces. Rather, it is intended to define a generic/universal set of capabilities provided by a CM system and a set of services for working with those capabilities.
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.oasis-open.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.oasis-open.org/committees/cmis/ipr.php).
The non-normative errata page for this specification is located at http://www.oasis-open.org/committees/cmis/.
Notices
Copyright © OASIS® 2009, 2010. 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", “CMIS” 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.oasis-open.org/who/trademark.php for above guidance.
Table of Contents
2.1.1.2 Implementation Information
2.1.3.1 Object-Type Hierarchy and Inheritance.
2.1.3.2 Object-Type Attributes
2.1.3.3 Object-Type Property Definitions
2.1.4.3 Document Object-Type Definition
2.1.5.4 Folder Object-Type Definition
2.1.6.1 Relationship Object-Type Definition
2.1.7.1 Policy Object-Type Definition
2.1.8.1 ACL, ACE, Principal, and Permission
2.1.9.4 Services that modify Version Series
2.1.9.5 Versioning Properties on Document Objects
2.1.9.6 Document Creation and Initial Versioning State
2.1.9.7 Version Specific/Independent membership in Folders
2.1.9.8 Version Specific/Independent membership in Relationships
2.1.9.9 Versioning visibility in Query Services
2.1.10.1 Relational View Projection of the CMIS Data Model
2.1.10.2 Query Language Definition
2.1.11.1 Completeness of the Change Log
2.2.1.2 Retrieving additional information on objects in CMIS service calls
2.2.4.2 createDocumentFromSource
2.2.5.2 removeObjectFromFolder
2.2.7.4 getObjectOfLatestVersion
2.2.7.5 getPropertiesOfLatestVersion
2.2.8.1 getObjectRelationships
3.2.4.1 General CMIS Exceptions
3.2.4.3 Notable HTTP Status Codes
3.4.3.1 Existing Link Relations
3.4.3.2 Hierarchy Navigation Internet Draft Link Relations
3.4.3.3 Versioning Internet Draft Link Relations
3.4.3.4 CMIS Specific Link Relations
3.5.2.1 Hierarchical Atom Entries
3.6 AtomPub Service Document (Repository)
3.7.5 Types Children Collection
3.8.1 Relationships Collection
3.8.2 Folder Children Collection
3.10.3 Document Private Working Copy (PWC) Entry
4.2 Web Services Binding Mapping
4.3 Additions to the Services section
4.3.1 updateProperties and checkIn Semantics.
4.3.4 Web Services Specific Structures
4.3.4.1 cmisFaultType and cmisFault
4.3.4.2 cmisRepositoryEntryType
4.3.4.4 cmisTypeDefinitionListType
4.3.4.5 cmisObjectInFolderType, cmisObjectParentsType and cmisObjectInFolderContainerType
4.3.4.6 cmisObjectListType and cmisObjectInFolderListType
The Content Management Interoperability Services (CMIS) standard defines a domain model and set of bindings that include Web Services and ReSTful AtomPub that can be used by applications to work with one or more Content Management repositories/systems.
The CMIS interface is designed to be layered on top of existing Content Management systems and their existing programmatic interfaces. It is not intended to prescribe how specific features should be implemented within those CM systems, nor to exhaustively expose all of the CM system’s capabilities through the CMIS interfaces. Rather, it is intended to define a generic/universal set of capabilities provided by a CM system and a set of services for working with those capabilities.
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.
[RFC4287] M. Nottingham, R. Sayre, Atom Syndication Format, http://www.ietf.org/rfc/rfc4287.txt, December 2005
[RFC5023] J. Gregorio, B. de hOra, Atom Publishing Protocol, http://www.ietf.org/rfc/rfc5023.txt, October 2007
[RFC2616] R. Fielding, J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P. Leach, T. Berners-Lee, Hypertext Transfer Protocol --HTTP/1.1, http://www.ietf.org/rfc/rfc2616.txt, June 1999
[RFC2119] S. Bradner, Key words for use in RFCs to Indicate Requirement Levels, http://www.ietf.org/rfc/rfc2119.txt, March 1997
[RFC4918] L. Dusseault, HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV), June 2007
[RFC3986] T. Berners-Lee, R. Fielding, L. Masinter, Unified Resource Identifier, January 2005
[ID-Brown] J. Reschke Editor, A. Brown, G. Clemm, Link Relation Types for Simple Version Navigation between Web Resources, http://www.ietf.org/id/draft-brown-versioning-link-relations-07.txt, 2010
[ID-WebLinking] M. Nottingham, Web Linking, http://tools.ietf.org/id/draft-nottingham-http-link-header-07.txt, 2010
CMIS provides an interface for an application to access a Repository. To do so, CMIS specifies a core data model that defines the persistent information entities that are managed by the repository, and specifies a set of basic services that an application can use to access and manipulate these entities. In accordance with the CMIS objectives, this data model does not cover all the concepts that a full-function ECM repository typically supports. Specifically, transient entities (such as programming interface objects), administrative entities (such as user profiles), and extended concepts (such as compound or virtual document, work flow and business process, event and subscription) are not included.
However, when an application connects to a CMIS service endpoint, the same endpoint MAY provide access to more than one CMIS repository. (How an application obtains a CMIS service endpoint is outside the scope of CMIS. How the application connects to the endpoint is a part of the protocol that the application uses.) An application MUST use the CMIS “Get Repositories” service (getRepositories) to obtain a list of repositories that are available at that endpoint. The Repository Identity MUST uniquely identify an available repository at this service endpoint. Both the repository name and the repository identity are opaque to CMIS. Aside from the “Get Repositories” service, all other CMIS services are single-repository-scoped, and require a Repository Identity as an input parameter. In other words, except for the “Get Repositories” service, multi-repository and inter-repository operations are not supported by CMIS.
The repository itself is described by the CMIS “Get Repository Information” service. The service output is fully described in section 2.2.2.2 getRepositoryInfo.
Commercial ECM repositories vary in their designs. Moreover, some repositories are designed for a specific application domain and may not provide certain capabilities that are not needed for their targeted domain. Thus, a repository implementation may not necessarily be able to support all CMIS capabilities. A few CMIS capabilities are therefore “optional” for a repository to be compliant. A repository’s support for each of these optional capabilities is discoverable using the getRepositoryInfo service. The following is the list of these optional capabilities. All capabilities are “Boolean” (i.e. the Repository either supports the capability entirely or not at all) unless otherwise noted.
Navigation Capabilities:
capabilityGetDescendants
Ability for an application to enumerate the descendants of a folder via the getDescendants service.
See section: 2.2.3.2 getDescendants
capabilityGetFolderTree
Ability for an application to retrieve the folder tree via the getFolderTree service.
See section: 2.2.3.1 getFolderTree
Object Capabilities:
capabilityContentStreamUpdatability (enumCapabilityContentStreamUpdates)
Indicates the support a repository has for updating a document’s content stream. Valid values are:
· none: The content stream may never be updated.
· anytime: The content stream may be updated any time.
· pwconly: The content stream may be updated only when checked out. The abbreviation PWC is described in section 2.1.9 Versioning.
See Section: 2.1.4.1 Content Stream
capabilityChanges (enumCapabilityChanges)
Indicates what level of changes (if any) the repository exposes via the “change log” service. Valid values are:
· none: The repository does not support the change log feature.
· objectidsonly: The change log can return only the ObjectIDs for changed objects in the repository and an indication of the type of change, not details of the actual change.
· properties: The change log can return properties and the ObjectID for the changed objects
· all: The change log can return the ObjectIDs for changed objects in the repository and more information about the actual change
See Section: 2.1.11 Change Log
capabilityRenditions (enumCapabilityRendition)
Indicates whether or not the repository exposes renditions of document or folder objects.
· none: The repository does not expose renditions at all.
· read: Renditions are provided by the repository and readable by the client.
Filing Capabilities:
capabilityMultifiling
Ability for an application to file a document or other file-able object in more than one folder
See Section: 2.1.5 Folder Object
capabilityUnfiling
Ability for an application to leave a document or other file-able object not filed in any folder
See Section: 2.1.5 Folder Object
capabilityVersionSpecificFiling
Ability for an application to file individual versions (i.e., not all versions) of a document in a folder
See Section: 2.1.9 Versioning
Versioning Capabilities:
capabilityPWCUpdatable
Ability for an application to update the “Private Working Copy” of a checked-out document
See Section: 2.1.9 Versioning
capabilityPWCSearchable
Ability of the Repository to include the "Private Working Copy" of checked-out documents in query search scope; otherwise PWC's are not searchable
See Section: 2.1.9 Versioning
capabilityAllVersionsSearchable
Ability of the Repository to include all versions of document.If False, typically either the latest or the latest major version will be searchable.
See Section: 2.1.9 Versioning
Query Capabilities:
capabilityQuery (enumCapabilityQuery)
Indicates the types of queries that the Repository has the ability to fulfill. Query support levels are:
· none: No queries of any kind can be fulfilled.
· metadataonly: Only queries that filter based on object properties can be fulfilled. Specifically, the CONTAINS() predicate function is not supported.
· fulltextonly: Only queries that filter based on the full-text content of documents can be fulfilled. Specifically, only the CONTAINS() predicate function can be included in the WHERE clause.
· bothseparate: The repository can fulfill queries that filter EITHER on the full-text content of documents OR on their properties, but NOT if both types of filters are included in the same query.
· bothcombined: The repository can fulfill queries that filter on both the full-text content of documents and their properties in the same query.
See Section: 2.1.10 Query
capabilityJoin (enumCapabilityJoin)
Indicates the types of JOIN keywords that the Repository can fulfill in queries. Support levels are:
· none: The repository cannot fulfill any queries that include any JOIN clauses.
· inneronly: The repository can fulfill queries that include an INNER JOIN clause, but cannot fulfill queries that include other types of JOIN clauses.
· innerandouter: The repository can fulfill queries that include any type of JOIN clause defined by the CMIS query grammar.
See Section: 2.1.10 Query
ACL Capabilities:
capabilityACL (enumCapabilityACL)
Indicates the level of support for ACLs by the repository
· none: The repository does not support ACL services
· discover: The repository supports discovery of ACLs (getACL and other services)
· manage: The repository supports discovery of ACLs AND applying ACLs (getACL and applyACL services)
See Section: 2.8 Access Control
The “Get Repository Information” service MUST also return implementation information including vendor name, product name, product version, version of CMIS that it supports, the root folder ID (see section 2.1.5.2 Folder Hierarchy), and MAY include other implementation-specific information. The version of CMIS that the repository supports MUST be expressed as a Decimal that matches the specification version.
The entities managed by CMIS are modeled as typed Objects. There are four base types of objects: Document Objects, Folder Objects, Relationship Objects, and Policy Objects.
Additional object-types MAY be defined in a repository as subtypes of these base types. CMIS services are provided for the discovery of object-types that are defined in a repository. However, object-type management services, such as the creation, modification, and deletion of an object-type, are outside the scope of CMIS.
Every CMIS object has an opaque and immutable Object Identity (ID), which is assigned by the repository when the object is created. An ID uniquely identifies an object within a repository regardless of the type of the object. Repositories SHOULD assign IDs that are “permanent” – that is, they remain unchanged during the lifespan of the identified objects, and they are never reused or reassigned after the objects are deleted from the repository.
Every CMIS object has a set of named, but not explicitly ordered, Properties. (However, a Repository SHOULD always return object properties in a consistent order.) Within an object, each property is uniquely identified by its property definition id.
In addition, a document object MAY have a Content-Stream, which may be used to hold a raw digital asset such as an image or a word-processing document. A repository MUST specify, in each object-type definition, whether document objects of that type MAY, MUST, or MUST NOT have a content-stream. A document MAY also have one or more Renditions associated with it. A rendition can be a thumbnail or an alternate representation of the content stream.
Document or folder objects MAY have one Access Control List (ACL), which controls access to the document or folder. A policy object may also control access to the document or folder. An ACL represents a list of Access Control Entries (ACEs). An ACE in turn represents one or more permissions being granted to a principal (a user, group, role, or something similar).
The notion of localization of the objects in the data model is entirely repository specific.
A property MAY hold zero, one, or more typed data value(s). Each property MAY be single-valued or multi-valued. A single-valued property contains a single data value, whereas a multi-valued property contains an ordered list of data values of the same type. The ordering of values in a multi-valued property MAY be preserved by the repository.
If a value is not provided for a property, the property is in a “value not set” state. There is no “null” value for a property. Through protocol binding, a property is either not set, or is set to a particular value or a list of values.
A multi-valued property is either set or not set in its entirety. An individual value of a multi-valued property MUST NOT be in an individual “value not set” state and hold a position in the list of values. An empty list of values MUST NOT be allowed.
Every property is typed. The Property-type defines the data type of the data value(s) held by the property. CMIS specifies the following Property-types. They include the following data types defined by “XML Schema Part 2: Datatypes Second Edition” (W3C Recommendation, 28 October 2004, http://www.w3.org/TR/xmlschema-2/):
In addition, the following Property-Types are also specified by CMIS:
Individual protocol bindings MAY override or re-specify these property types.
All properties MUST supply a String queryName attribute which is used for query and filter operations on object-types. This is an opaque String with limitations. This string SHOULD NOT contain any characters that negatively interact with the BNF grammar.
The string MUST NOT contain:
· whitespace “ “,
· comma “,”
· double quotes ‘”’
· single quotes “’”
· backslash “\”
· the period “.” character or,
· the open “(“ or close “)” parenthesis characters.
An ID property holds a system-generated, read-only identifier, such as an Object ID, an Object-Type ID, etc. (The ID Property-Type is NOT defined by xsd:id.) The lexical representation of an ID is an opaque string. As such, an ID cannot be assumed to be interpretable syntactically or assumed to be to be collate-able with other IDs, and can only be used in its entirety as a single atomic value. When used in a query predicate, an ID can only participate in an “equal” or a “not equal” comparison with a string literal or with another ID.
While all CMIS identities share the same Property-Type, they do not necessarily share the same address space. Unless explicitly specified, ID properties NEED NOT maintain a referential integrity constraint. Therefore, storing the ID of one object in another object NEED NOT constrain the behavior of either object. A repository MAY, however, support referential constraint underneath CMIS if the effect on CMIS services remains consistent with an allowable behavior of the CMIS model. For example, a repository MAY return an exception when a CMIS service call violates an underlying referential constraint maintained by the repository. In that case, an error message SHOULD be returned to the application to describe the cause of exception and suggest a remedial action. The content of such messages is outside the scope of CMIS.
An HTML property holds a document or fragment of Hypertext Markup Language (HTML) content. HTML properties are not guaranteed to be validated in any way. The validation behavior is entirely repository specific.
An Object-Type defines a fixed and non-hierarchical set of properties (“schema”) that all objects of that type have. This schema is used by a repository to validate objects and enforce constraints, and is also used by a user to compose object-type-based (structured) queries.
All CMIS objects are strongly typed. If a property not specified in an object’s object-type definition is supplied by an application, an exception SHOULD be thrown.
Each object-type is uniquely identified within a repository by a system-assigned and immutable Object-Type Identifier, which is of type ID.
A CMIS repository MUST expose exactly one collection of Object-Types via the “Repository” services (getTypeChildren, getTypeDescendants, getTypeDefinition).
While a repository MAY define additional object-types beyond the CMIS Base Object-Types, these Object-Types MUST NOT extend or alter the behavior or semantics of a CMIS service (for example, by adding new services). A repository MAY attach additional constraints to an object-type underneath CMIS, provided that the effect visible through the CMIS interface is consistent with the allowable behavior of CMIS.
Hierarchy and Inheritance for Object-Types are supported by CMIS in the following manner:
o cmis:document object-type
o cmis:folder object-type
o cmis:relationship object-type
o cmis:policy object-type
o There is no inheritance of object-type attributes from a parent object-type to its sub-types.
o If a property is NOT inherited by a subtype, the exhibited behavior for query MUST be as if the value of this property is “not set” for all objects of this sub-type.
o If a property of its parent type is not inherited by this type, the property MUST still appear as a column in the corresponding virtual table in the relational view, but this column MUST contain a NULL value for all objects of this type. (See section 2.1.10 Query.)
All Object-Type Definitions MUST contain the following attributes:
id ID
This opaque attribute identifies this object-type in the repository.
localName String (optional)
This attribute represents the underlying repository’s name for the object-type. This field is opaque and has no uniqueness constraint imposed by this specification.
Two properties with the same localName and localNamespace MUST have the same semantic equality.
localNamespace String (optional)
This attribute allows repositories to represent the internal namespace of the underlying repository’s name for the object-type.
queryName String
Used for query and filter operations on object-types. This is an opaque String with limitations. This string SHOULD NOT contain any characters that negatively interact with the BNF grammar.
The string MUST NOT contain:
· whitespace “ “,
· comma “,”
· double quotes ‘”’
· single quotes “’”
· backslash “\”
· the period “.” character or,
· the open “(“ or close “)” parenthesis characters.
displayName String (optional)
Used for presentation by application.
baseId Enum
A value that indicates whether the base type for this Object-Type is the Document, Folder, Relationship, or Policy base type.
parentId ID
The ID of the Object-Type’s immediate parent type.
It MUST be “not set” for a base type.
description String (optional)
Description of this object-type, such as the nature of content, or its intended use. Used for presentation by application.
creatable Boolean
Indicates whether new objects of this type MAY be created. If the value of this attribute is FALSE, the repository MAY contain objects of this type already, but MUST NOT allow new objects of this type to be created.
fileable Boolean
Indicates whether or not objects of this type are file-able.
queryable Boolean
Indicates whether or not this object-type can appear in the FROM clause of a query statement. A non-queryable object-type is not visible through the relational view that is used for query, and CAN NOT appear in the FROM clause of a query statement.
controllablePolicy Boolean
Indicates whether or not objects of this type are controllable via policies. Policy objects can only be applied to controllablePolicy objects.
controllableACL Boolean
This attribute indicates whether or not objects of this type are controllable by ACL’s. Only objects that are controllableACL can have an ACL.
fulltextIndexed Boolean
Indicates whether objects of this type are indexed for full-text search for querying via the CONTAINS() query predicate.
includedInSupertypeQuery Boolean
Indicates whether this type and its subtypes appear in a query of this type’s ancestor types.
For example: if Invoice is a sub-type of cmis:document, if this is TRUE on Invoice then for a query on cmis:document, instances of Invoice will be returned if they match.
If this attribute is FALSE, no instances of Invoice will be returned even if they match the query.
Besides these object-type attributes, an object-type definition SHOULD contain inherited property definitions and zero or more additional property definitions. All the properties of an object, including inherited properties, MUST be retrievable through the “get” services, and MAY appear in the SELECT clause of a query.
Property types are defined in section 2.1.2.1 Property.
All Object-Type Property Definitions MUST contain the following attributes:
id ID
This opaque attribute uniquely identifies the property in the repository. If two Object-Types each contain property definitions with the same ID, those property definitions are the same.
localName String (optional)
This attribute represents the underlying repository’s name for the property. This field is opaque and has no uniqueness constraint imposed by this specification.
localNamespace String (optional)
This attribute allows repositories to represent the internal namespace of the underlying repository’s name for the property.
queryName String
Used for query operations on properties. This is an opaque String with limitations. Please see queryName in Object-Type Attributes for the limitations on what characters are not allowed.
displayName String (optional)
Used for presentation by application.
description String (optional)
This is an optional attribute containing a description of the property
propertyType Enum
This attribute indicates the type of this property. It MUST be one of the allowed property types. (See section 2.1.2.1 Property.)
cardinality Enum
Indicates whether the property can have “zero or one” or “zero or more” values.
Values:
· single: Property can have zero or one values (if property is not required), or exactly one value (if property is required)
· multi: Property can have zero or more values (if property is not required), or one or more values (if property is required).
Repositories SHOULD preserve the ordering of values in a multi-valued property. That is, the order in which the values of a multi-valued property are returned in get operations SHOULD be the same as the order in which they were supplied during previous create/update operation.
updatability Enum
Indicates under what circumstances the value of this property MAY be updated.
Values:
· readonly: The value of this property MUST NOT ever be set directly by an application. It is a system property that is either maintained or computed by the repository.
o The value of a readOnly property MAY be indirectly modified by other repository interactions (for example, calling “updateProperties” on an object will change the object’s last modified date, even though that property cannot be directly set via an updateProperties() service call.)
· readwrite: The property value can be modified using the updateProperties service.
· whencheckedout: The property value MUST only be update-able using a “private working copy” Document.
o I.e. the update is either made on a “private working copy” object or made using a “check in” service.
· oncreate: The property value MUST only be update-able during the Create operation on that Object.
inherited Boolean
Indicates whether the property definition is inherited from the parent-type when TRUE or it is explicitly defined for this object-type when FALSE.
required Boolean
This attribute is only applicable to non-sytem properties, i.e. properties whose value is provided by the application.
If TRUE, then the value of this property MUST never be set to the “not set” state when an object of this type is created/updated. If not provided during a create or update operation, the repository MUST provide a value for this property.
If a value is not provided, then the default value defined for the property MUST be set. If no default value is provided and no default value is defined, the repository MUST throw an exception.
This attribute is not applicable when the “updatability” attribute is “readonly”. In that case, “required” SHOULD be set to FALSE.
Note: For CMIS-defined object types, the value of a system property (such as cmis:objectId, cmis:createdBy) MUST be set by the repository. However, the property’s “required” attribute SHOULD be FALSE because it is read-only to applications.
queryable Boolean
Indicates whether or not the property MAY appear in the WHERE clause of a CMIS query statement.
This attribute MUST have a value of FALSE if the Object-type’s attribute for “Queryable” is set to FALSE.
orderable Boolean
Indicates whether the property can appear in the ORDER BY clause of a CMIS query statement or an ORDERBY parameter.
This property MUST be FALSE for any property whose cardinality is “multi”.
choices <PropertyChoiceType list> (multi-valued)
Indicates an explicit ordered set of single values allowed for this property.
If the cardinatity of the property definition is “single” and the “openChoice” attribute is FALSE, then the property value MUST be at most one of the values listed in this attribute.
If the cardinatity of the property definition is “single” and the “openChoice” attribute is TRUE, then the property value MAY be one of the values listed in this attribute.
If the cardinatity of the property definition is “multi” and the “openChoice” attribute is FALSE, then the property value MUST be zero, one or more than one of the values listed in this attribute.
If the cardinatity of the property definition is “multi” and the “openChoice” attribute is TRUE, then the property value MAY be zero, one, or more than one of the values listed in this attribute.If this attribute is “not set”, then any valid value for this property based on its type may be used.
Each choice includes a displayName and a value. The displayName is used for presentation purpose. The value will be stored in the property when selected.
Choices MAY be hierarchically presented. For example: a value of “choices” for a geographic location would be represented as follows:
o Europe:
§ England
§ France
§ Germany
o North America
§ Canada
§ USA
§ Mexico
openChoice Boolean
This attribute is only applicable to properties that provide a value for the “Choices” attribute.
If FALSE, then the data value for the property MUST only be one of the values specified in the “Choices” attribute. If TRUE, then values other than those included in the “Choices” attribute may be set for the property.
defaultValue <PropertyType>
The value that the repository MUST set for the property if a value is not provided by an application when the object is created.
If no default value is specified and an application creates an object of this type without setting a value for the property, the repository MUST attempt to store a “value not set” state for the property value. If this occurs for a property that is defined to be required, then the creation attempt MUST throw an exception.
The attributes on the default value element are the same as the attributes on the property definition.
The following Object attributes MUST only apply to Property-Type definitions whose propertyType is “Integer”, in addition to the common attributes specified above. A repository MAY provide additional guidance on what values can be accepted. If the following attributes are not present the repository behavior is undefined and it MAY throw an exception if a runtime constraint is encountered.
minValue Integer
The minimum value allowed for this property.
If an application tries to set the value of this property to a value lower than minValue, the repository MUST throw a constraint exception.
maxValue Integer
The maximum value allowed for this property.
If an application tries to set the value of this property to a value higher than maxValue, the repository MUST throw a constraint exception.
The following Object attributes MUST only apply to Property-Type definitions whose propertyType is “DateTime”, in addition to the common attributes specified above. A repository MAY provide additional guidance on what values can be accepted. If the following attributes are not present the repository behavior is undefined and it MAY throw an exception if a runtime constraint is encountered.
resolution String Enumeration
This is the precision in bits supported for values of this property. Valid values for this attribute are:
· Year: Year resolution is persisted
· Date: Date resolution is persisted
· Time: Time resolution is persisted
The following Object attributes MUST only apply to Property-Type definitions whose propertyType is “Decimal”, in addition to the common attributes specified above. A repository MAY provide additional guidance on what values can be accepted. If the following attributes are not present the repository behavior is undefined and it MAY throw an exception if a runtime constraint is encountered.
precision Integer Enumeration
This is the precision in bits supported for values of this property. Valid values for this attribute are:
· 32: 32-bit precision (“single” as specified in IEEE-754-1985).
· 64: 64-bit precision (“double” as specified in IEEE-754-1985.)
minValue Decimal
The minimum value allowed for this property.
If an application tries to set the value of this property to a value lower than minValue, the repository MUST throw a constraint exception.
maxValue Decimal
The maximum value allowed for this property.
If an application tries to set the value of this property to a value higher than maxValue, the repository MUST throw a constraint exception.
The following Object attributes MUST only apply to Property-Type definitions whose propertyType is “String”, in addition to the common attributes specified above. A repository MAY provide additional guidance on what values can be accepted. If the following attributes are not present the repository behavior is undefined and it MAY throw an exception if a runtime constraint is encountered.
maxLength Integer
The maximum length (in characters) allowed for a value of this property.
If an application attempts to set the value of this property to a string larger than the specified maximum length, the repository MUST throw a constraint exception.
Document objects are the elementary information entities managed by the repository.
Depending on its Object-type definition, a Document Object may be:
Additionally, whether a Document object MUST, MAY or MUST NOT have a content-stream is specified in its object-type definition. A Document Object MAY be associated with zero or more renditions.
Note: When a document is versioned, each version of the document is a separate document object. Thus, for document objects, an object ID actually identifies a specific version of a document.
A content-stream is a binary stream. Its maximum length is repository-specific. Each content-stream has a MIME Media Type, as defined by RFC2045 and RFC2046. A content-stream’s attributes are represented as properties of the content-stream’s containing document object. There is no MIME-type-specific attribute or name directly associated with the content-stream outside of the document object.
CMIS provides basic CRUD services for content-stream, using the ID of a content-stream’s containing document object for identification. A content stream also has a streamId which is used for access to the stream. The “Set Content-Stream” service (setContentStream) either creates a new content-stream for a document object or replaces an existing content-stream. The “Get Content-Stream” service (getContentStream) retrieves a content-stream. The “Delete Content-Stream” service (deleteContentStream) deletes a content-stream from a document object. In addition, the “CreateDocument” and “Check-in” services MAY also take a content-stream as an optional input. A content stream MUST be specified if required by the type definition. These are the only services that operate on content-stream. The “Get Properties” and “Query” services, for example, do not return a content-stream.
“Set Content-Stream” and “Delete Content-Stream” services are considered modifications to a content-stream’s containing document object, and SHOULD therefore change the object’s LastModificationDate property upon successful completion.
The ability to set or delete a content stream is controlled by the capabilityContentStreamUpdatability capability.
Some ECM repositories provide a facility to retrieve alternative representations of a document. These alternative representations are known as renditions. This could apply to a preview case which would enable the client to preview the content of a document without needing to download the full content. Previews are generally reduced fidelity representations such as thumbnails. Renditions can take on any general form, such as a PDF version of a word document.
A CMIS repository MAY expose zero or more renditions for a document or folder in addition to a document’s content stream. CMIS provides no capability to create or update renditions accessed through the rendition services. Renditions are specific to the version of the document or folder and may differ between document versions. Each rendition consists of a set of rendition attributes and a rendition stream. Rendition attributes are not object properties, and are not queryable. They can be retrieved using the getRenditions service. A rendition stream can be retrieved using the getContentStream service with the rendition’s streamId parameter.
A rendition has the following attributes:
streamId ID
Identifies the rendition stream.
mimeType String
The MIME type of the rendition stream.
length Integer (optional)
The length of the rendition stream in bytes.
title String (optional)
Human readable information about the rendition.
kind String
A categorization String associated with the rendition.
height Integer (optional)
Typically used for ‘image’ renditions (expressed as pixels). SHOULD be present if kind = cmis:thumbnail.
width Integer (optional)
Typically used for ‘image’ renditions (expressed as pixels). SHOULD be present if kind = cmis:thumbnail.
renditionDocumentId ID (optional)
If specified, then the rendition can also be accessed as a document object in the CMIS services. If not set, then the rendition can only be accessed via the rendition services. Referential integrity of this ID is repository-specific.
A Rendition may be categorized via its kind. The repository is responsible for assigning kinds to Renditions, including custom kinds. A repository kind does not necessarily identify a single Rendition for a given Object.
CMIS defines the following kind:
· cmis:thumbnail : A rendition whose purpose is to a provide an image preview of the document without requiring the client to download the full document content stream. Thumbnails are generally reduced fidelity representations.
This section describes the definition of the Document Object-Type’s attribute values and property definitions which must be present on Document instance objects. All attributes and property definitions are listed by their ID.
The following Object attributes MUST only apply to Object-Type definitions whose baseId is the cmis:document Object-Type, in addition to the common attributes specified above:
versionable Boolean
Indicates whether or not objects of this type are version-able. (See section 2.1.9 Versioning.)
contentStreamAllowed Enum
A value that indicates whether a content-stream MAY, MUST, or MUST NOT be included in objects of this type. Values:
· notallowed: A content-stream MUST NOT be included
· allowed: A content-stream MAY be included
· required: A content-stream MUST be included (i.e. MUST be included when the object is created, and MUST NOT be deleted.)
The Document Object-Type MUST have the following attribute values.
Notes:
· A value of <repository-specific> indicates that the value of the property MAY be set to any valid value for the attribute type.
· Unless explicitly stated otherwise, all values specified in the list MUST be followed for the Object-Type definition.
id
Value: cmis:document
localName
Value: <repository-specific>
localNamespace
Value: <repository-specific>
queryName
Value: cmis:document
displayName
Value: <repository-specific>
baseId
Value: cmis:document
parentId
Value: Not set
description
Value: <repository-specific>
creatable
Value: <repository-specific>
fileable
Value: TRUE
queryable
Value: SHOULD be TRUE
controllablePolicy
Value: <repository-specific>
includedInSupertypeQuery
Value: <repository-specific>
versionable
Value: <repository-specific>
contentStreamAllowed
Value: <repository-specific>
controllableACL
Value: <repository-specific>
fulltextIndexed
Value: <repository-specific>
The Document base Object-Type MUST have the following property definitions, and MAY include additional property definitions. Any attributes not specified for the property definition are repository specific. For all property definitions on base types, the query name MUST be the same as the property ID. The repository MUST have the following property definitions on the Document Type:
cmis:name Name of the object
Inherited: False
Property Type: String
Cardinality: Single
cmis:objectId Id of the object
Required: False
Inherited: False
Property Type: ID
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
Repository MUST return this property with non-empty values when an object is requested and the property filter does not exclude them
cmis:baseTypeId Id of the base object-type for the object
Required: False
Inherited: False
Property Type: ID
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
Repository MUST return this property with non-empty values when an object is requested and the property filter does not exclude them
cmis:objectTypeId Id of the object’s type
Required: True
Inherited: False
Property Type: ID
Cardinality: Single
Updatability: oncreate
Choices: Not Applicable
Open Choice: Not Applicable
Repository MUST return this property with non-empty values when an object is requested and the property filter does not exclude them
cmis:createdBy User who created the object.
Required: False
Inherited: False
Property Type: String
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
Queryable: True
Orderable: True
Repository MUST return this property with non-empty values when an object is requested and the property filter does not exclude them
cmis:creationDate DateTime when the object was created.
Required: False
Inherited: False
Property Type: DateTime
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
Queryable: True
Orderable: True
Repository MUST return this property with non-empty values when an object is requested and the property filter does not exclude them
cmis:lastModifiedBy User who last modified the object.
Required: False
Inherited: False
Property Type: String
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
Queryable: True
Orderable: True
Repository MUST return this property with non-empty values when an object is requested and the property filter does not exclude them
cmis:lastModificationDate DateTime when the object was last modified.
Required: False
Inherited: False
Property Type: DateTime
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
Queryable: True
Orderable: True
Repository MUST return this property with non-empty values when an object is requested and the property filter does not exclude them
cmis:changeToken Opaque token used for optimistic locking & concurrency checking. (see section 2.2.1.3 Change Tokens)
Required: False
Inherited: False
Property Type: String
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
Repository MUST return this property with non-empty values when an object is requested and the property filter does not exclude them
cmis:isImmutable TRUE if the repository MUST throw an error at any attempt to update or delete the object.
Required: False
Inherited: False
Property Type: Boolean
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
Repository MUST return this property with non-empty values when an object is requested and the property filter does not exclude them
cmis:isLatestVersion See section 2.1.9 Versioning.
Required: False
Inherited: False
Property Type: Boolean
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
Repository MUST return this property with non-empty values when an object is requested and the property filter does not exclude them. Version Property Values are repository-specific when a document is defined as non-versionable.
cmis:isMajorVersion See section 2.1.9 Versioning.
Required: False
Inherited: False
Property Type: Boolean
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
Repository MUST return this property with non-empty values when an object is requested and the property filter does not exclude them. Version Property Values are repository-specific when a document is defined as non-versionable.
cmis:isLatestMajorVersion See section 2.1.9 Versioning.
Required: False
Inherited: False
Property Type: Boolean
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
Repository MUST return this property with non-empty values when an object is requested and the property filter does not exclude them. Version Property Values are repository-specific when a document is defined as non-versionable.
cmis:versionLabel See section 2.1.9 Versioning.
Required: False
Inherited: False
Property Type: String
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
Repository MUST return this property with non-empty values when an object is requested and the property filter does not exclude them. Version Property Values are repository-specific when a document is defined as non-versionable.
cmis:versionSeriesId See section 2.1.9 Versioning.
Required: False
Inherited: False
Property Type: ID
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
Repository MUST return this property with non-empty values when an object is requested and the property filter does not exclude them. Version Property Values are repository-specific when a document is defined as non-versionable.
cmis:isVersionSeriesCheckedOut See section 2.1.9 Versioning.
Required: False
Inherited: False
Property Type: Boolean
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
Repository MUST return this property with non-empty values when an object is requested and the property filter does not exclude them. Version Property Values are repository-specific when a document is defined as non-versionable.
cmis:versionSeriesCheckedOutBy See section 2.1.9 Versioning.
Required: False
Inherited: False
Property Type: String
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
Version Property Values are repository-specific when a document is defined as non-versionable.
cmis:versionSeriesCheckedOutId See section 2.1.9 Versioning.
Required: False
Inherited: False
Property Type: ID
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
Version Property Values are repository-specific when a document is defined as non-versionable.
cmis:checkinComment See section 2.1.9 Versioning.
Required: False
Inherited: False
Property Type: String
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
Version Property Values are repository-specific when a document is defined as non-versionable.
cmis:contentStreamLength Length of the content stream (in bytes).
Required: False
Inherited: False
Property Type: Integer
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
Repository MUST return this property with non-empty values when an object is requested and the property filter does not exclude them and if the document has a content stream
cmis:contentStreamMimeType MIME type of the Content Stream
Required: False
Inherited: False
Property Type: String
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
Repository MUST return this property with non-empty values when an object is requested and the property filter does not exclude them and if the document has a content stream
cmis:contentStreamFileName File name of the Content Stream
Required: False
Inherited: False
Property Type: String
Cardinality: Single
Repository MUST return this property with non-empty values when an object is requested and the property filter does not exclude them and if the document has a content stream
cmis:contentStreamId Id of the stream
Required: False
Inherited: False
Property Type: ID
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
A folder object serves as the anchor for a collection of file-able objects. The folder object has an implicit hierarchical relationship with each object in its collection, with the anchor folder object being the Parent object and each object in the collection being a Child object. This implicit relationship has specific containment semantics which MUST be maintained by the repository with implicit referential integrity. (That is, there will never be a dangling parent-relationship or a dangling child-relationship. Furthermore, object A is a parent of object B if and only if object B is a child of object A.) This system-maintained implicit relationship is distinct from an explicit relationship which is instantiated by an application-maintained Relationship Object. (See section 2.1.6 Relationship Object.)
A folder object does not have a content-stream and is not version-able. A folder object MAY be associated with zero or more renditions (see section 2.1.4.2 Renditions).
A file-able object is one that MAY be “filed” into a folder. That is, it MAY be a child object of a folder object. The following list defines whether the base CMIS Object-types are file-able:
cmis:folder
MUST be file-able
cmis:document
MUST be file-able
cmis:relationship
MUST NOT be file-able
cmis:policy
MAY be file-able
Since document objects are versionable, a document object’s membership in a folder MAY be version-specific or version-independent. That is, the folder membership MAY be restricted to that particular version of the document or MAY apply to all versions of the document. Whether or not a repository supports version-specific filing is discoverable via the “Get Repository Information” service (getRepositoryInfo).
When the child objects of a folder are retrieved, a specific version of a document MAY be returned. If the repository supports version-specific filing, the specific version filed in that folder is returned. If the repository does not support version-specific filing, the latest version of the document is returned.
Likewise, this version sensitivity in child-binding also affects the behavior of parent retrieval for a document object, as well as the scope of the IN_FOLDER() and IN_TREE() function calls in a query. For non-versionable fileable objects, their membership in a folder does not have version sensitivity.
A folder collection’s membership MAY be restricted by object-type. Each folder object has a multi-valued AllowedChildObjectTypeIDs property, which specifies that only objects of these types are allowed to be its children. If this property is “not set”, then objects of any file-able type MAY be filed in the Folder. It is repository-specific if subtypes of the types listed in the AllowedChildObjectTypeIDs property MAY be filed in the folder.
Because of these filing constraints, when a new folder object is created, an existing folder object MUST be specified as its parent.
When a non-file-able object is created, a parent folder MUST NOT be specified.
When a file-able object is deleted, it is removed from any folder collection in which the object is a member. In other words, when an object is deleted, all implicit parent-child relationships with the deleted object as a child cease to exist.
CMIS imposes the following constraints on folder objects:
· Every folder object, except for one which is called the Root Folder, MUST have one and only one parent folder. The Root Folder does not have a parent.
· A cycle in folder containment relationships is not allowed. That is, a folder object cannot have itself as one of its descendant objects.
· A child object that is a folder object can itself be the parent object of other file-able objects.
With these constraints, the folder objects in a CMIS repository necessarily form a strict hierarchy, with the Root Folder being the root of the hierarchy.
The child objects of a given folder object, their child objects, and grandchild objects, etc., are called Descendant objects of the given folder objectA folder object together with all its descendant objects are collectively called a Tree rooted at that folder object.
A non-folder object does not have any descendant object. Thus, a Folder Graph that consists of all fileable objects as nodes, and all the implicit folder containment relationships as directed edges from parent to child, is a directed acyclic graph, possibly with some disconnected (orphan) nodes. It follows that the tree rooted at any given folder object is also a directed acyclic graph, although a non-folder object in the tree MAY have ancestors that are not ancestors of the rooted folder.
Folder objects are handled using the basic CRUD services for objects, and the folder graph is traversed using the Navigation Services.
The Root Folder is a special folder such that it cannot be created, deleted, or moved using CMIS services. Otherwise, it behaves like any other folder object.
A folder hierarchy MAY be represented in a canonical notation such as path. For CMIS, a path is represented by:
E.g., if folder A is under the root, and folder B is under A, then the path would be /A/B.
A path for an object may be calculated by taking the item’s parent folder cmis:path property and appending the “/” character and the object’s pathSegment. This constructed path may be given as input to the getObjectByPath service for object by path retrieval.
The getObjectParents service returns relativePathSegment tokens. These tokens are the pathSegment of the input object relative to the parent folders.
This section describes the definition of the Folder Object-Type’s attribute values and property definitions which must be present on Folder instance objects. All attributes and property definitions are listed by their ID.
The Folder Object-Type MUST have the following attribute values.
Notes:
· A value of <repository-specific> indicates that the value of the property MAY be set to any valid value for the attribute type.
· Unless explicitly stated otherwise, all values specified in the table MUST be followed for the Object-Type definition.
id
Value: cmis:folder
localName
Value: <repository-specific>
localNamespace
Value: <repository-specific>
queryName
Value: cmis:folder
displayName
Value: <repository-specific>
baseId
Value: cmis:folder
parentId
Value: Not set
description
Value: <repository-specific>
creatable
Value: <repository-specific>
fileable
Value: TRUE
queryable
Value: SHOULD be TRUE
controllablePolicy
Value: <repository-specific>
includedInSupertypeQuery
Value: <repository-specific>
controllableACL
Value: <repository-specific>
fulltextIndexed
Value: <repository-specific>
The Folder base Object-Type MUST have the following property definitions, and MAY include additional property definitions. Any attributes not specified for the Property Definition are repository specific. For all property definitions on base types, the query name MUST be the same as the property ID. The repository MUST have the following property definitions on the Folder Type:
cmis:name Name of the object
Inherited: False
Property Type: String
Cardinality: Single
Required: True
cmis:objectId Id of the object
Required: False
Inherited: False
Property Type: ID
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
Repository MUST return this property with non-empty values when an object is requested and the property filter does not exclude them
cmis:baseTypeId Id of the base object-type for the object
Required: False
Inherited: False
Property Type: ID
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
Repository MUST return this property with non-empty values when an object is requested and the property filter does not exclude them
cmis:objectTypeId Id of the object’s type
Required: False
Inherited: False
Property Type: ID
Cardinality: Single
Updatability: oncreate
Choices: Not Applicable
Open Choice: Not Applicable
Repository MUST return this property with non-empty values when an object is requested and the property filter does not exclude them
cmis:createdBy User who created the object.
Required: False
Inherited: False
Property Type: String
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
Queryable: True
Orderable: True
Repository MUST return this property with non-empty values when an object is requested and the property filter does not exclude them
cmis:creationDate DateTime when the object was created.
Required: False
Inherited: False
Property Type: DateTime
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
Queryable: True
Orderable: True
Repository MUST return this property with non-empty values when an object is requested and the property filter does not exclude them
cmis:lastModifiedBy User who last modified the object.
Required: False
Inherited: False
Property Type: String
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
Queryable: True
Orderable: True
Repository MUST return this property with non-empty values when an object is requested and the property filter does not exclude them
cmis:lastModificationDate DateTime when the object was last modified.
Required: False
Inherited: False
Property Type: DateTime
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
Queryable: True
Orderable: True
MUST be set on the object
cmis:changeToken Token used for optimistic locking & concurrency checking. (see section 2.2.1.3 Change Tokens)
Required: False
Inherited: False
Property Type: String
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
Repository MUST return this property with non-empty values when an object is requested and the property filter does not exclude them
cmis:parentId ID of the parent folder of the folder.
Required: False
Inherited: False
Property Type: ID
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
Repository MUST return this property with non-empty values when an object is requested and the property filter does not exclude them
cmis:path The fully qualified path to this folder. See section 2.1.5.3 Paths.
Required: False
Inherited: False
Property Type: String
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
Repository MUST return this property with non-empty values when an object is requested and the property filter does not exclude them
cmis:allowedChildObjectTypeIds Id’s of the set of Object-types that can be created, moved or filed into this folder.
Required: False
Inherited: False
Property Type: ID
Cardinality: Multi
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
A relationship object is semantically a dependent object. A relationship object MUST NOT have a content-stream, and MUST NOT be versionable, MAY be queryable, and MUST NOT be fileable, although it MAY be controllable.
If a repository does not support relationship objects, the relationship base object-type SHOULD NOT be returned by a “Get Types” service call.
A Relationship Object instantiates an explicit, binary, directional, non-invasive, and typed relationship between a Source Object and a Target Object. The source object and the target object MUST both be independent objects, such as a document object, a folder object, or a policy object. Whether a policy object is allowed to be the source or target object of a relationship object is repository-specific.
The relationship instantiated by a relationship object is explicit since it is explicitly represented by an object and is explicitly managed by application.
This relationship is non-invasive in the sense that creating or removing this relationship SHOULD NOT modify either the source or the target object. That is, it SHOULD NOT require an update capability (or permission) on either object; SHOULD NOT affect the versioning state of either object; and SHOULD NOT change their “Last Modification Date”.
Explicit relationships can be used to create an arbitrary relationship graph among independent objects. Such a relationship graph is only structural in nature. No inheritance or transitive properties are attached to a relationship graph.
The notion of a source object and a target object of a relationship is used solely to indicate the direction of the relationship. No semantics or implementation bias is implied by this terminology.
The binding of a relationship object to a source document object or to a target document object MAY be either version-specific or version-independent. This version sensitivity is repository-specific, and is largely transparent to CMIS. An independent object MAY participate in any number of explicit relationships, as the source object for some and as the target object for others. Multiple relationships MAY exist between the same pair of source and target objects.
Referential integrity, either between the source object and the target object, or between the relationship object and the source or target object, is repository-specific. Therefore, creating an explicit relationship between two objects MAY impose a constraint on any of the three objects, and removing a relationship or deleting either the source or the target object MAY be restricted by such a constraint. If the source or the target object of a relationship is deleted, the repository MAY automatically delete the relationship object.
Like all CMIS objects, relationship objects are typed. Typing relationship allows them to be grouped, identified, and traversed by type id, and for properties to be defined for individual relationship types.
Additionally, a relationship object-type MAY specify that only Objects of a specific Object-Type can participate as the source object or target object for relationship objects of that type. If no such constraints are specified, then an independent object of any type MAY be the source or the target of a relationship object of that type.
When a relationship object is created, the source object ID and the target object ID MUST reference valid non-relationship CMIS objects.
When a relationship object is retrieved, its source object or target object MAY no longer exist, since referential integrity MAY not be maintained by a repository.
In addition to object CRUD services, a “Get Relationships” service (getObjectRelationships) may be used to return a set of relationship objects in which a given independent object is identified as the source or the target object, according to the binding semantics maintained by the repository (i.e., either a version-specific or a version-independent binding as described above).
This section describes the definition of the Relationship Object-Type’s attribute values and property definitions which must be present on Relationship instance objects. All attributes and property definitions are listed by their ID.
The following Object attributes MUST only apply to Object-Type definitions whose baseId is the cmis:relationship Object-Type, in addition to the common attributes specified above:
allowedSourceTypes ID (multi-valued)
A list of object-type IDs, indicating that the source object of a relationship object of this type MUST only be one of the types listed.
If this attribute is “not set”, then the source object MAY be of any type.
allowedTargetTypes ID (multi-valued)
A list of object-type IDs, indicating that the target object of a relationship object of this type MUST only be one of the types listed.
If this attribute is “not set”, then the target object MAY be of any type.
The Relationship Object-Type MUST have the following attribute values.
Notes:
· A value of <repository-specific> indicates that the value of the property MAY be set to any valid value for the attribute type.
· Unless explicitly stated otherwise, all values specified in the table MUST be followed for the Object-Type definition.
id
Value: cmis:relationship
localName
Value: <repository-specific>
localNamespace
Value: <repository-specific>
queryName
Value: cmis:relationship
displayName
Value: <repository-specific>
baseId
Value: cmis:relationship
parentId
Value: Not set
description
Value: <repository-specific>
creatable
Value: <repository-specific>
fileable
Value: FALSE
queryable
Value: <repository-specific>
includedInSupertypeQuery
Value: <repository-specific>
controllablePolicy
Value: <repository-specific>
allowedSourceTypes
Value: <repository-specific>
allowedTargetTypes
Value: <repository-specific>
controllableACL
Value: <repository-specific>
fulltextIndexed
Value: <repository-specific>
The Relationship base Object-Type MUST have the following property definitions, and MAY include additional property definitions. Any attributes not specified by the Property Definitions are repository specific. For all property definitions on base types, the query name MUST be the same as the property ID. The repository MUST have the following property definitions on the Relationship Type:
cmis:name Name of the object
Inherited: False
Property Type: String
Cardinality: Single
cmis:objectId Id of the object
Required: False
Inherited: False
Property Type: ID
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
Repository MUST return this property with non-empty values when an object is requested and the property filter does not exclude them
cmis:baseTypeId Id of the base object-type for the object
Required: False
Inherited: False
Property Type: ID
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
Repository MUST return this property with non-empty values when an object is requested and the property filter does not exclude them
cmis:objectTypeId Id of the object’s type
Required: False
Inherited: False
Property Type: ID
Cardinality: Single
Updatability: oncreate
Choices: Not Applicable
Open Choice: Not Applicable
Repository MUST return this property with non-empty values when an object is requested and the property filter does not exclude them
cmis:createdBy User who created the object.
Required: False
Inherited: False
Property Type: String
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
Repository MUST return this property with non-empty values when an object is requested and the property filter does not exclude them
cmis:creationDate DateTime when the object was created.
Required: False
Inherited: False
Property Type: DateTime
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
Repository MUST return this property with non-empty values when an object is requested and the property filter does not exclude them
cmis:lastModifiedBy User who last modified the object.
Required: False
Inherited: False
Property Type: String
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
Repository MUST return this property with non-empty values when an object is requested and the property filter does not exclude them
cmis:lastModificationDate DateTime when the object was last modified.
Required: False
Inherited: False
Property Type: DateTime
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
Repository MUST return this property with non-empty values when an object is requested and the property filter does not exclude them
cmis:changeToken Opaque token used for optimistic locking & concurrency checking. (see section 2.2.1.3 Change Tokens)
Required: False
Inherited: False
Property Type: String
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
cmis:sourceId ID of the source object of the relationship.
Required: True
Inherited: False
Property Type: ID
Cardinality: Single
Choices: Not Applicable
Open Choice: Not Applicable
cmis:targetId ID of the target object of the relationship.
Required: True
Inherited: False
Property Type: ID
Cardinality: Single
Choices: Not Applicable
Open Choice: Not Applicable
A policy object represents an administrative policy that can be enforced by a repository, such as a retention management policy. CMIS 1.0 does not specify what kinds of administrative policies that are specifically supported, nor attempts to model administrative policy of any particular kind. Only a base object-type is specified for policy objects. Each policy object holds the text of an administrative policy as a repository-specific string, which is opaque to CMIS and which may be used to support policies of various kinds. A repository may create subtypes of this base type to support different kinds of administrative policies more specifically. If a repository does not support policy objects, the policy base object-type SHOULD NOT be returned by a “Get Types” service call. This is an extension point for repositories that want to expose other capabilities via CMIS that are not supported directly in CMIS 1.0.
Aside from allowing an application to create and maintain policy objects, CMIS allows an application to “apply” a policy to an object, and to remove an applied policy from an object. An object to which a policy may be applied is called a controllable object. A policy MAY be applied to multiple controllable objects. Conversely, a repository MAY allow multiple policies applied to a controllable object. (A repository may, for example, impose constraints such as only one policy of each kind can be applied to an object.) Whether or not an object is controllable is specified by the object’s type definition. Applying a policy to an object is to place the object under the control of that policy (while the object may also be under the control of other policies at the same time), and removing an applied policy from one of its controlled objects is to remove the corresponding control from that object. This control may change the state of the object, may impose certain constraints on service calls operating on this object, or may cause certain management actions to take place. The effect of this control, when this effect takes place, and how this control interacts with other controls, are repository-specific. Only directly/explicitly applied policies are covered by CMIS 1.0. Indirectly applying policy to an object, e.g. through inheritance, is outside the scope of CMIS 1.0.
A policy object does not have a content-stream and is not versionable. It may be fileable, queryable or controllable. Policy objects are handled using the basic CRUD services for objects. If a policy is updated, the change may alter the corresponding control on objects that the policy is currently applied to. If a controlled object is deleted, all the policies applied to that object, if there are any, are removed from that object. A policy object that is currently applied to one or more controllable objects CAN NOT be deleted. That is, there is an implicit referential constraint from a controlled object to its controlling policy object(s). Besides the basic CRUD services, the “Apply Policy” (applyPolicy) and the “Remove Policy” (removePolicy) services may be used to apply a policy object to a controllable object and respectively to remove an applied policy from one of its controlled objects. In addition, the “Get Applied Policies” (getAppliedPolicies) service may be used to obtain the policy objects that are currently applied to a controllable object.
This section describes the definition of the Policy Object-Type’s attribute values and property definitions which must be present on Policy instance objects. All attributes and property definitions are listed by their ID.
The Policy Object-Type MUST have the following attribute values.
Notes:
· A value of <repository-specific> indicates that the value of the property MAY be set to any valid value for the attribute type.
· Unless explicitly stated otherwise, all values specified in the table MUST be followed for the Object-Type definition.
id
Value: cmis:policy
localName
Value: <repository-specific>
localNamespace
Value: <repository-specific>
queryName
Value: cmis:policy
displayName
Value: <repository-specific>
baseId
Value: cmis:policy
parentId
Value: Not set
description
Value: <repository-specific>
creatable
Value: <repository-specific>
fileable
Value: <repository-specific>
queryable
Value: <repository-specific>
includedInSupertypeQuery
Value: <repository-specific>
controllablePolicy
Value: <repository-specific>
controllableACL
Value: <repository-specific>
fulltextIndexed
Value: <repository-specific>
The Policy base Object-Type MUST have the following property definitions, and MAY include additional property definitions. Any attributes not specified by the Property Definitions are repository specific. For all property definitions on base types, the query name MUST be the same as the property ID. The repository MUST have the following property definitions on the Policy Type:
cmis:name Name of the object
Inherited: False
Property Type: String
Cardinality: Single
cmis:objectId Id of the object
Required: False
Inherited: False
Property Type: ID
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
cmis:baseTypeId Id of the base object-type for the object
Required: False
Inherited: False
Property Type: ID
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
cmis:objectTypeId Id of the object’s type
Required: False
Inherited: False
Property Type: ID
Cardinality: Single
Updatability: oncreate
Choices: Not Applicable
Open Choice: Not Applicable
cmis:createdBy User who created the object.
Required: False
Inherited: False
Property Type: String
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
cmis:creationDate DateTime when the object was created.
Required: False
Inherited: False
Property Type: DateTime
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
cmis:lastModifiedBy User who last modified the object.
Required: False
Inherited: False
Property Type: String
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
cmis:lastModificationDate DateTime when the object was last modified.
Required: False
Inherited: False
Property Type: DateTime
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
cmis:changeToken Opaque token used for optimistic locking & concurrency checking. (see section 2.2.1.3 Change Tokens)
Required: False
Inherited: False
Property Type: String
Cardinality: Single
Updatability: Read Only
Choices: Not Applicable
Open Choice: Not Applicable
cmis:policyText User-friendly description of the policy
Required: True
Inherited: False
Property Type: String
Cardinality: Single
Choices: Not Applicable
Open Choice: Not Applicable
A repository can support either a base set of CMIS-defined permissions and/or its own set of repository specific permissions.
The getACL service allows the requestor to specify that the result be expressed using only the CMIS defined permissions. Without this restriction, the response may include, or be solely expressed in repository specific permissions. The applyACL service permits either CMIS permissions or repository permissions, or a combination of both, to be used.
An ACL is a list of Access Control Entries (ACEs) and MAY hold zero or more ACEs. If an ACL has no ACEs, the behavior is the same as if the ACL is not set.
An ACE holds:
There are three basic permissions predefined by CMIS:
How these basic permissions can be mapped to the allowable actions is repository specific. However, the actual repository semantics for the basic permissions with regard to allowable actions can be discovered by the mappings parameter returned by getRepositoryInfo (see below).
Repositories MAY extend this set with repository-specific permissions.
Whether a repository supports ACLs at all, may be discovered via capabilityACL returned by getRepositoryInfo (see section 2.1.1.1 Optional Capabilities). If capabilityACL is none, ACLs are not supported by the repository.
If capabilityACL is discover or manage, additional information about the repositories permission model and how changes to ACL are handled, can be discovered via the getRepositoryInfo service:
The list of permission definitions returned by getRepositoryInfo lists all the permissions a repository supports. This list also includes the CMIS permissions if supported by the repository.
A PermissionDefinition holds:
CMIS provides a mechanism called “AllowableActions” which allows an application to discover the set of service operations that can currently be performed on a particular object, without having to actually invoke the service.
The set of allowable actions on an object at a point in time are affected not only by CMIS ACLs, but also by other factors such as:
CMIS defines several services that applications can use at run-time to discover the AllowableActions for an object.
If a Repository supports ACLs, then the repository MUST provide a mapping table that defines how the permissions supported by the repository interact with the CMIS allowable actions, i.e. which permissions are necessary for a principal to have on one or more objects in order to potentially perform each action, subject to the other constraints on allowable actions above.
This section defines both the allowable actions as well as how those actions are presented in the PermissionMapping table.
The Permission Mapping table contains a set of (key, permissions) pairs:
The list below defines all mapping keys, as well as a permissions mapping that repositories SHOULD use. Repositories MAY require additional permissions.
For convenience, the list below groups all mapping entries by the underlying Allowable Actions, and includes descriptive information. For each Allowable Action the following information is given:
Description: The description and name of the service the AllowableAction enables.
Base Object: The base object-types for which the allowable action MAY be TRUE.
Operand: The object the permission applies to.
Key: The permission mapping key.
Permissions: The permission values.
Navigation Services:
canGetDescendants
Description: Can get the descendants of the folder (getDescendants)
Base Object: cmis:folder
Operand: cmis:folder
Key: canGetDescendants.Folder
Permission: Read
canGetFolderTree
Description: Can get the sub-folder tree of the folder (getFolderTree)
Base Object: cmis:folder
Operand: cmis:folder
Key: canGetFolderTree.Folder
Permission: Read
canGetChildren
Description: Can get the children of the folder (getChildren)
Base Object: cmis:folder
Operand: cmis:folder
Key: canGetChildren.Folder
Permission: Read
canGetFolderParent
Description: Can get the parent/ancestor folder(s) of the folder (getFolderParent)
Base Object: cmis:folder
Operand: cmis:folder
Key: canGetFolderParent.Folder
Permission: Read
canGetObjectParents
Description: Can get the parent folders of the object. (getObjectParents)
Base Object: cmis:document, cmis:folder, cmis:policy
Operand Object
Key: canGetObjectParents.Object
Permission: Read
Object Services:
canCreateDocument
Description: Can create a cmis:document Object in the folder (createDocument)
Base Object: cmis:folder
Operand: Folder
Key: canCreateDocument.Folder
Permission: Read
canCreateFolder
Description: Can create a cmis:folder Object as a child of the specified folder (createFolder)
Base Object: cmis:folder
Operand: Folder
Key: canCreateFolder.Folder
Permission: Read
canCreateRelationship
Description: Can create a Relationship in which this Object is a source (createRelationship)
Base Object: cmis:document, cmis:folder
Operand: Object
Key: canCreateRelationship.Source
Permission: Read
canCreateRelationship
Description: Can create a Relationship in which this Object is a target (createRelationship)
Base Object: cmis:document, cmis:folder
Operand: Object
Key: canCreateRelationship.Target
Permission: Read
canGetProperties
Description: Can read the properties of this object (getProperties)
Base Object: cmis:document, cmis:folder, cmis:relationship, cmis:policy
Operand: Object
Key: canGetProperties.Object
Permission: Read
canGetRenditions
Description: Can retrieve the renditions of this object (getRenditions)
Base Object: cmis:document, or cmis:folder
Operand: Object
Key: canGetRenditions.Object
Permission: Read
canGetContentStream
Description: Can get the content stream for the Document object (getContentStream)
Base Object: cmis:document
Operand: Object
Key: canGetContentStream.Object
Permission: Read
canUpdateProperties
Description: Can update the properties of this object (updateProperties)
Base Object: cmis:document, cmis:folder, cmis:relationship, cmis:policy
Operand: Object
Key: canUpdateProperties.Object
Permission: Write
canMoveObject
Description: Can move the object (moveObject)
Base Object: cmis:document, cmis:folder, cmis:policy
Operand: Object
Key: canMoveObject.Object
Permission: Write
canMoveObject
Description: Can move an object into this folder (moveObject)
Base Object: cmis:folder
Operand: Folder
Key: canMoveObject.Target
Permission: Read
canMoveObject
Description: Can move an object from this folder (moveObject)
Base Object: cmis:folder
Operand: Folder
Key: canMoveObject.Source
Permission: Read
canDeleteObject
Description: Can delete this object (deleteObject)
Base Object: cmis:document, cmis:folder, cmis:relationship, cmis:policy
Operand: Object
Key: canDelete.Object
Permission: Write
canDeleteObject
Description: Can delete an object that is a child of this folder (deleteObject)
Base Object: cmis:folder
Operand: Folder
Key: canDelete.Folder
Permission: Read
canSetContentStream
Description: Can set the content stream for the Document object (setContentStream)
Base Object: cmis:document
Operand: Object
Key: canSetContentStream.Document
Permission: Write
canDeleteContentStream
Base Object: cmis:document
Action: Can delete the content stream for the Document object (deleteContentStream)
Operand: Object
Key: canDeleteContentStream.Document
Permission: Write
canDeleteTree
Base Object: cmis:folder
Action: Can delete the folder and all contained objects (deleteTree)
Operand: Object
Key: canDeleteTree.Folder
Permission: Write
Filing Services:
canAddObjectToFolder
Description: Can file the document in a folder (addObjectToFolder)
Base Object: cmis:document, cmis:policy
Operand: Object
Key: canAddToFolder.Object
Permission: Read
canAddObjectToFolder
Description: Can file a document in the specified folder (addObjectToFolder)
Base Object: cmis:document, cmis:policy
Operand: Object
Key: canAddToFolder.Folder
Permission: Read
canRemoveObjectFromFolder
Description: Can unfile the specified document from a folder (removeObjectFromFolder)
Base Object: cmis:document, cmis:policy
Operand: Object
Key: canRemoveObjectFromFolder.Object
Permission: Read
canRemoveObjectFromFolder
Description: Can unfile a document from the specified folder (removeObjectFromFolder)
Base Object: cmis:document, cmis:policy
Operand: Object
Key: canRemoveObjectFromFolder.Folder
Permission: Read
Versioning Services:
canCheckOut
Description: Can check out the Document object (checkOut)
Base Object: cmis:document
Operand: Object
Key: canCheckOut.Document
Permission: Write
canCancelCheckOut
Description: Can cancel the check out the Document object (cancelCheckOut)
Base Object: cmis:document
Operand: Object
Key: canCancelCheckout.Document
Permission: Write
canCheckIn
Description: Can check in the Document object (checkIn)
Base Object: cmis:document
Operand: Object
Key: canCheckin.Document
Permission: Write
canGetAllVersions
Description: Can get the version series for the Document object (getAllVersions)
Base Object: cmis:document
Operand: Object
Key: canGetAllVersions.Document
Permission: Read
Relationship Services:
canGetObjectRelationships
Description: Can get the relationship in which this object is a source/target (getObjectRelationships)
Base Object: cmis:document, cmis:folder, cmis:policy
Operand: Object
Key: canGetObjectRelationships.Object
Permission: Read
Policy Services:
canApplyPolicy
Description: Can apply a policy to the Object (applyPolicy)
Base Object: cmis:document, cmis:folder
Operand: Object
Key: canAddPolicy.Object
Permission: Read
canApplyPolicy
Description: Can apply the specified policy to an Object (applyPolicy)
Base Object: cmis:policy
Operand: Object
Key: canAddPolicy.Policy
Permission: Read
canRemovePolicy
Description: Can remove a policy from the specified Object (removePolicy)
Base Object: cmis:document, cmis:folder
Operand: Object
Key: canRemovePolicy.Object
Permission: Read
canRemovePolicy
Description: Can remove the specified policy from an Object (removePolicy)
Base Object: cmis:document, cmis:folder
Operand: cmis:policy
Key: canRemovePolicy.Policy
Permission: Read
canGetAppliedPolicies
Description: Can get the list of Policies applied to the Object (getAppliedPolicies)
Base Object: cmis:document, cmis:folder
Operand: Object
Key: canGetAppliedPolicies.Object
Permission: Read
ACL Services:
canGetACL
Description: Can get ACL for object (getACL)
Base Object: cmis:document, cmis:folder, cmis:relationship, cmis:policy
Operand: Object
Key: canGetACL.Object
Permission: Read
canApplyACL
Description: Can apply ACL to this object (applyACL)
Base Object: cmis:document, cmis:folder, cmis:relationship, cmis:policy
Operand: Object
Key: canApplyACL.Object
Permission: Write
CMIS supports versioning of Document objects. Folder objects, relationship objects, and policy objects cannot be versioned.
Whether or not a Document object is versionable (i.e. whether or not operations performed on the object via the Versioning Services MUST be allowed) is specified by the “versionable” attribute on its Object-type.
A version of a Document object is an explicit/”deep” copy of the object, preserving its state at a certain point in time. Each version of a Document object is itself a Document object, i.e. has its own ObjectId, property values, MAY be acted upon using all CMIS services that act upon Document objects, etc.
A version series for a Document object is a transitively closed collection of all Document objects that have been created from an original Document in the Repository. Each version series has a unique, system-assigned, and immutable version series ID.
The version series has transitive closure -- that is, if object B is a version of object A, and object C is a version of object B, then object C is also a version of object A. The objects in a version series can be conceptually sequenced by their respective CreationDate properties.
Additionally, the repository MAY expose a textual VersionLabel that describes to a user the position of an individual object with respect to the version series. (For example, version 1.0).
Note: A Document object that is NOT versionable will always have a single object in its Version Series. A versionable Document object MAY have one or more objects in its Version Series.
The version that has the most recent LastModificationDate is called the Latest Version of the series, or equivalently, the latest version of any Document object in the series.
When the latest version of a version series is deleted, a previous version (if there is one) becomes the latest version.
Repositories NEED NOT allow the non-latest versions in a Version Series to be updated, queried, or searched.
A Document object in a Version Series MAY be designated as a Major Version.
The CMIS specification does not define any semantic/behavioral differences between Major and non-Major versions in a Version Series. Repositories may enforce/apply additional constraints or semantics for Major versions, if the effect on CMIS services remains consistent with an allowable behavior of the CMIS model.
If the Version Series contains one or more Major versions, the one that has the most recent LastModificationDate is the Latest Major Version of the version series.
(Note that while a Version Series MUST always have a Latest Version, it NEED NOT have a Latest Major Version.)
When the latest major version is deleted, a previous major version (if there is one) becomes the latest major version.
A new version of a versionable Document object is created when the checkIn service is invoked on the Private Working copy (PWC) of this object. A PWC is created by invoking checkOut on a versionable Document object. A repository MAY allow any Document object in a version series to be checked out, or MAY only allow the Latest Version to be checked out.
The effects of invoking the checkout service MUST be as follows:
o The PWC NEED NOT be visible to users who have permissions to view other Document objects in the Version Series.
o Until it is checked in (using the checkIn service), the PWC MUST NOT be considered the LatestMajorVersion in the Version Series.
o The property values for the PWC SHOULD be identical to the properties of the Document object on which the checkout service was invoked. Certain properties such as cmis:objectId may be different. Properties such as cmis:creationDate most likely will be different. The content-stream of the PWC MAY be identical to the content-stream of the Document object on which the checkout service was invoked, or MAY be “not set”.
After a successful checkout operation is completed, and until such time when the PWC is deleted (via the cancelCheckOut service) or checked-in (via the checkIn) service, the effects on other Documents in the Version Series MUST be as follows:
If the repository supports the optional “PWCUpdatable” capability, then the repository MUST allow authorized users to modify the PWC Object using the Object services (e.g. UpdateProperties).
If the repository does NOT support the “PWCUpdatable” capability, then the PWC object can only be modified as part of the checkIn service call.
An authorized user MAY discard the check-out using the cancelCheckOut service on any Document in the Version Series or by using the deleteObject service on the PWC Object. The effects of discarding a check-out MUST be as follows:
o The value of the cmis:isVersionSeriesCheckedOut property MUST be FALSE.
o The value of the cmis:versionSeriesCheckedOutBy property MUST be “not set”.
o The value of the cmis:versionSeriesCheckedOutId property MUST be “not set”.
o The repository MUST allow authorized users to invoke the checkout service.
An authorized user/application MAY “check in” the Private Working Copy object via the checkIn service.
The checkIn service allows users/applications to provide update property values and a content-stream for the PWC object.
The effects of the checkIn service MUST be as follows for successful checkins:
o The value of the cmis:isVersionSeriesCheckedOut property MUST be FALSE.
o The value of the cmis:versionSeriesCheckedOutBy property MUST be “not set”.
o The value of the cmis:versionSeriesCheckedOutId property MUST be “not set”.
o The repository MUST allow authorized users to invoke the checkout service.
Note: The Repository MAY change the ID of the PWC upon completion of the checkin service invocation.
Note: A repository MAY automatically create new versions of Document objects without an explicit invocation of the checkout/checkin services.
All Document objects will have the following read-only property values pertaining to versioning:
cmis:isLatestVersion Boolean
TRUE if the Document object is the Latest Version in its Version Series. FALSE otherwise.
cmis:isMajorVersion Boolean
TRUE if the Document object is a Major Version in its Version Series. FALSE otherwise.
cmis:isLatestMajorVersion Boolean
TRUE if the Document object is the Latest Major Version in its Version Series. FALSE otherwise.
cmis:versionLabel String (optional)
Optional textual description the position of an individual object with respect to the version series. (For example, version 1.0).
cmis:versionSeriesId ID
ID of the Version Series for this Object.
cmis:isVersionSeriesCheckedOut Boolean
TRUE if there currenly exists a Private Working Copy for this Version Series. FALSE otherwise
cmis:versionSeriesCheckedOutBy String
If IsVersionSeriesCheckedOut is TRUE: then an identifier for the user who created the Private Working Copy. “Not set” otherwise.
cmis:versionSeriesCheckedOutId ID
If IsVersionSeriesCheckedOut is TRUE: The Identifier for the Private Working Copy. “Not set” otherwise.
cmis:checkinComment String
Textual comment associated with the given version.
Note: Changes made via the Versioning Services that affect the values of these properties MUST NOT constitute modifications to the Document objects in the Version Series (e.g. MUST NOT affect the cmis:lastModificationDate, etc.)
A repository MAY create new Document objects in a “Private Working Copy” state when they are created via the createDocument or createDocumentFromSource services. This state is logically equivalent to having a Version Series that contains exactly one object (the PWC) and 0 other documents.
The repository MAY also create new Document objects in a “Major Version” state. This state is logically equivalent to having a Version Series that contains exactly one Major Version and 0 other documents.
The repository MAY also create new Document objects in a “Non-Major Version” state. This state is logically equivalent to having a Version Series that contains exactly one Non-Major Version and 0 other documents.
If the repository does not support versioning the repository MUST ignore the value of the versioningState parameter.
Repositories MAY treat membership of a Document object in a folder collection as “version-specific” or “version-independent”.
Repositories MUST indicate whether they support version-specific membership in a folder via the “VersionSpecificFiling” optional capability flag.
If the repository is treating folder collection membership as “version-independent”, then:
· Moving or Filing a Document Object into a folder MUST result in ALL Documents in the Version Series being moved/filed into the folder.
· The Repository MAY return only the latest-version OR latest major-version Document object in a version series in the response to Navigation service requests (getChildren, getDescendants), and NEED NOT return other Document Objects filed in the folder that are in the Version Series.
If the repository is treating folder collection membership as “version-specific”, then moving or Filing a Document Object into a folder MUST NOT result in other Documents in the Version Series being moved/filed.
A relationship object MAY have either a version-specific or version-independent binding to its source and/or target objects. This behavior MAY vary between repositories and between individual relationship types defined for a Repository.
If a relationship object has a version-independent binding to its source/target object, then:
· The getObjectRelationships service invoked on a Document Object MUST return the relationship if Relationship was source/target is set to ANY Document Object in the Version Series.
If a relationship object has a version-specific binding to its source/target object, then:
· The getObjectRelationships service invoked on a Document Object MUST return the relationship if Relationship was source/target is set to the ID of the Document Object on which the service was invoked.
Repositories MAY include non-latest-versions of Document Objects in results to the Discovery Services (query).
Repositories MUST indicate whether they support querying for non-latest-versions via the “AllVersionsSearchable” optional capability flag.
If “AllVersionsSearchable” is TRUE then the Repository MUST include in the query results ANY Document Object in the Version Series that matches the query criteria. (subject to other query constraints such as security.)
Additionally, repositories MAY include Private Working Copy objects in results in results to the Discovery Services (query).
Repositories MUST indicate whether they support querying for Private Working Copy objects via the “PWCSearchable” optional capability flag.
If “PWCSearchable” is TRUE then the Repository MUST include in the query results ANY Private Working Copy Document Objects that matches the query criteria (subject to other query constraints such as security.)
If “PWCSearchable” is FALSE then the Repository MUST NOT include in the query results ANY Private Working Copy Document Objects that match the query criteria (subject to other query constraints such as security.)
CMIS provides a type-based query service for discovering objects that match specified criteria, by defining a read-only projection of the CMIS data model into a Relational View.
Through this relational view, queries may be performed via a simplified SQL SELECT statement. This query language is based on a subset of the SQL-92 grammar (ISO/IEC 9075: 1992 – Database Language SQL), with a few extensions to enhance its filtering capability for the CMIS data model, such as existential quantification for multi-valued property, full-text search, and folder membership. Other statements of the SQL language are not adopted by CMIS. The semantics of this query language is defined by the SQL-92 standard, plus the extensions, in conjunction with the model mapping defined by CMIS’s relational view.
The relational view of a CMIS repository consists of a collection of virtual tables that are defined on top of the CMIS data model. This relational view is used for query purposes only.
In this relational view a Virtual Table is implicitly defined for each queryable Object-Type defined in the repository. (Non-queryable Object-Types are NOT exposed through this Relational View.)
In each Virtual Table, a Virtual Column is implicitly defined for each property defined in the Object-Type Definition AND for all properties defined on ANY ancestor-type of the Object-Type but NOT defined in the Object-Type definition. Virtual Columns for properties defined on ancestor-types of the Object-type but NOT defined in the Object-Type definition MUST contain the SQL NULL value. Virtual Columns for properties whose value is “not set” MUST contain the SQL NULL value.
An object-type’s queryName attribute is used as the table name for the corresponding virtual table, and a property’s queryName attribute is used as the column name for the corresponding table column. Please see the restrictions on queryName in the appropriate data model section.
The Virtual Column for a multi-valued property MUST contain a single list value that includes all values of the property.
The Relational View projection of the CMIS Data Model ensures that the Virtual Table for a particular Object-type is a complete super-set of the Virtual Table for any and all of its ancestor types.
Additionally, an Object-Type definition’s “includedInSupertypeQuery” specifies whether objects of that Object-Type MUST be included in the Virtual Table for any of its ancestor types. If the “includedInSupertypeQuery” attribute of the Object-Type is FALSE, then objects of that Object-Type MUST NOT be included in the Virtual Table for any of its ancestor types.
Thus the Virtual Table for an Object-type includes a row not only for each Object of that type, but all Objects of any of that Object-types’ Descendant Types for which the “includedInSupertypeQuery” attribute is TRUE.
But since the Virtual Table will include only columns for properties defined in the Object-Type underlying the Virtual Table, a row that is a query result representing an Object of a Descendant Type can only include those columns for properties defined on the Object-Type underlying the Virtual Table.
Content-streams are NOT exposed through this relational view.
When a query is submitted, a set of pseudo CMIS objects will be returned. These pseudo objects are comprised of the properties specified in the select clause of the query statement.
For each property in each object in the result set, the Repository MUST include the property definition ID as well as either the query name (if no alias is used) or the alias in place of the query name (if an alias is used).
If the select clause of the query statement contains properties from a single type reference then the repository MAY represent these pseudo-objects with additional object information.
This query languages is based on a subset of the SQL-92 grammar. CMIS-specific language extensions to SQL-92 are called out explicitly.
The basic structure of a CMIS query is a SQL statement that MUST include the following clauses:
Additionally, a CMIS query MAY include the following clauses:
This BNF grammar is a “subset” of the SQL-92 grammar (ISO/IEC 9075: 1992 – Database Language SQL), except for some production alternatives. Specifically, except for these extensions, the following production rules are derived from the SQL-92 grammar. The non-terminals used in this grammar are also borrowed from the SQL-92 grammar without altering their semantics. Accordingly, the non-terminal <column name> is used for single-valued properties only so that the semantics of SQL can be preserved and borrowed. This approach not only facilitates comparison of the two query languages, and simplifies the translation of a CMIS query to a SQL query for a RDBMS-based implementation, but also allows future expansion of this query language to cover a larger subset of SQL with minimum conflict. The CMIS extensions are introduced primarily to support multi-valued properties and full-text search, and to test folder membership. Multi-valued properties are handled separately from single-valued properties, using separate non-terminals and separate production rules to prevent the extensions from corrupting SQL-92 semantics.
<CMIS 1.0 query statement> ::= <simple table> [ <order by clause> ]
<simple table> ::= SELECT <select list> <from clause> [ <where clause> ]
<select list> ::= “*”
| <select sublist> [ { “,” <select sublist> }… ]
<select sublist> ::= <value expression> [ [ AS ] <column name> ]
| <qualifier> “.*”
| <multi-valued-column reference>
<value expression> ::= <column reference> | <numeric value function>
<column reference> ::= [ <qualifier> “.” ] <column name>
<multi-valued-column reference> ::= [ <qualifier> “.” ] <multi-valued-column name>
<numeric value function> ::= SCORE()
<qualifier> ::= <table name> | <correlation name>
<from clause> ::= FROM <table reference>
<table reference> ::= <table name> [ [ AS ] <correlation name> ]
| <joined table>
<joined table> ::= “(“ <joined table> “)”
| <table reference> [ <join type> ] JOIN <table reference> <join specification>
<join type> ::= INNER | LEFT [ OUTER ]
<join specification> ::= ON <column reference> "=" <column reference>
<where clause> ::= WHERE <search condition>
<search condition> ::= <boolean term> | <search condition> OR <boolean term>
<boolean term> ::= <boolean factor> | <boolean term> AND <boolean factor>
<boolean factor> ::= [ NOT ] <boolean test>
<boolean test> ::= <predicate> | “(“ <search condition> “)”
<predicate> ::= <comparison predicate> | <in predicate> | <like predicate> | <null predicate>
| <quantified comparison predicate> | <quantified in predicate>
| <text search predicate> | <folder predicate>
<comparison predicate> ::= <value expression> <comp op> <literal>
<comp op> ::= “=” | “<>” | “<” | “>” | “<=” | “>=”
<literal> ::= <signed numeric literal> | <character string literal> | <datetime literal> | <boolean literal>
<in predicate> ::= <column reference> [ NOT ] IN “(“ <in value list> “)”
<in value list> ::= <literal> [{ “,” <literal> }…]
<like predicate> ::= <column reference> [ NOT ] LIKE <character string literal>
<null predicate> ::= { <column reference> | <multi-valued-column reference> } IS [ NOT ] NULL
<quantified comparison predicate> ::= <literal> “=” ANY <multi-valued-column reference>
<quantified in predicate> ::= ANY <multi-valued-column reference> [ NOT ] IN “(“ <in value list> “)”
<text search predicate> ::= CONTAINS "("
[ <qualifier> "," ] <quote> <text search expression> <quote> ")"
<folder predicate> ::= { IN_FOLDER | IN_TREE } “(“ [ <qualifier> “,” ] <folder id> “)”
<order by clause> ::= ORDER BY <sort specification> [ { “,” <sort specification> }… ]
<sort specification> ::= <column reference> [ ASC | DESC ]
<correlation name> ::= <identifier>
<table name> ::= <identifier> !! This MUST be the name of an object-type.
<column name> ::= <identifier> !! This MUST be the name of a single-valued property,
or an alias for a scalar output value.
<multi-valued-column name> ::= <identifier> !! This MUST be the name of a multi-valued property.
<folder id> ::= <character string literal> !! This MUST be the object identity of a folder object.
<identifier> ::= !! As defined by queryName attribute.
<signed numeric literal> ::= !! As defined by SQL-92 grammar.
<character string literal> ::= !! As defined by SQL-92 grammar. (i.e. enclosed in single-quotes)
!! This is full-text search criteria.
<text search expression> ::= <conjunct> [ {<space> OR <space> <conjunct>} … ]
<conjunct> ::= <term> [ {<space> <term>} … ]
<term> ::= ['-'] <simple term>
<simple term> ::= <word> | <phrase>
<word> ::= <non space char> [ {<non space char>} … ]
<phrase> ::= <quote> <word> [ {<space> <word>} … ] <quote>
<space> ::= <space char> [ {<space char>} … ]
<non space char> ::= <char> - <space char>
<space char> ::= ' '
<char> ::= !! Any character
<datetime literal> ::= TIMESTAMP <quote> <datetime string> <quote>
<datetime string> ::= YYYY-MM-DDThh:mm:ss.sss[Z | +hh:mm | -hh:mm]
<boolean literal> ::= TRUE | FALSE | true | false
<quote> ::= “’” !! Single-quote only, consistent with SQL-92 string literal
The SELECT clause MUST contain exactly one of the following:
o If an explicit column list is provided: A repository MUST include in its result row set all of the columns specified in the SELECT clause.
All column names MUST be valid “queryName” values for properties that are defined as “queryable” in the Object-Type(s) whose Virtual Tables are listed in the FROM clause.
The FROM clause identifies which Virtual Table(s) the query will be run against, as described in the previous section.
The FROM clause MUST contain only the queryNames of Object-Types whose queryable attribute value is TRUE.
CMIS repositories MAY support the use of SQL JOIN queries, and MUST indicate their support level using the Optional Capability attribute “capabilityJoin”.
Only explicit joins using the “JOIN” keyword is supported. Queries MUST NOT include implicit joins as part of the WHERE clause of a CMIS query.
CMIS queries MUST only support join operations using the “equality” predicate on single-valued properties.
This clause identifies the constraints that rows MUST satisfy to be considered a result for the query.
All column names MUST be valid “queryName” or their aliased values for properties that are defined as “queryable” in the Object-Type(s) whose Virtual Tables are listed in the FROM clause.
Properties are defined to not support a “null” value, therefore the <null predicate> MUST be interpreted as testing the not set or set state of the specified property.
SQL’s simple comparison predicate, IN predicate, and LIKE predicate are supported, for single-valued properties only (so that SQL’s semantics is preserved). Boolean conjunction (AND), disjunction (OR), and negation (NOT) of predicates are also supported.
Repositories SHOULD support the comparisons for the property types as described in the list below. Repositories MAY support additional comparisons and operators. Any additional operators not specified are repository-specific:
<Property Type>
Supported Operators: <List of Operators supported on Type>
Supported Literal: <Supported type of Literal in comparison>
String (Single)
Supported Operators: =, <>, [NOT] LIKE
Supported Literal: String
String (IN)
Supported Operators: [NOT] IN
Supported Literal: List of Strings
Decimal
Supported Operators: =, <>, <, <=, >, >=
Supported Literal: Decimal
Decimal (IN)
Supported Operators: [NOT] IN
Supported Literal: List of Decimal
Integer
Supported Operators: =, <>, <, <=, >, >=
Supported Literal: Integer
Integer (IN)
Supported Operators: [NOT] IN
Supported Literal: List of Integer
Boolean
Supported Operators: =
Supported Literal: <boolean literal>
DateTime
Supported Operators: =, <>, <*, <=*, >*, >=*
Supported Literal: <datetime literal>
* - comparison is based on chronological before or after date.
DateTime (IN)
Supported Operators: [NOT] IN
Supported Literal: List of <datetime literal>’s
ID
Supported Operators: =, <>
Supported Literal: String
ID (IN)
Supported Operators: [NOT] IN
Supported Literal: List of strings
URI
Supported Operators: =, <>
Supported Literal: String
URI (IN)
Supported Operators: [NOT] IN
Supported Literal: List of strings
URI
Supported Operators: [NOT] LIKE
Supported Literal: String
Operations on the SCORE() output MUST be treated the same as decimal operations.
When using properties in a join statement, comparison MUST be allowed on properties of the same types as defined by the table above. Repositories MAY extend this behavior.
The ANY operation argument MUST be one of the properties found in the table above which supports equality operations
The CMIS query language includes several new non-terminals to expose semantics for querying multi-valued properties, in a way that does not alter the semantics of existing SQL-92 production rules.
2.1.10.2.4.2.1 Multi-valued column references
BNF grammar structure: <Multi-valued-column reference>, <multi-valued-column name>
2.1.10.2.4.2.2 <Quantified comparison predicate>
The SQL-92 production rule for <quantified comparison predicate> is extended to accept a multi-valued property in place of a <table subquery>. This operation is restricted to equality tests only.
<Table subquery> is not supported in CMIS-SQL.
The SQL-92 <quantifier> is restricted to ANY only.
The SQL-92 <row value constructor> is restricted to a literal only.
Example:
SELECT Y.CLAIM_NUM, X.PROPERTY_ADDRESS, Y.DAMAGE_ESTIMATES
FROM POLICY AS X JOIN CLAIMS AS Y ON ( X.POLICY_NUM = Y.POLICY_NUM )
WHERE ( 100000 = ANY Y.DAMAGE_ESTIMATES )
(Note: DAMAGE_ESTIMATES is a multi-valued Integer property.)
2.1.10.2.4.2.3 IN/ANY Predicate
BNF grammar structure: <Quantified in predicate>
CMIS-SQL exposes a new IN predicate defined for a multi-valued property. It is modeled after the SQL-92 IN predicate, but since the entire predicate is different semantically, it has its own production rule in the BNF grammar below.
The quantifier is restricted to ANY. The predicate MUST be evaluated to TRUE if at least one of the property’s values is (or, is not, if NOT is specified) among the given list of literal values. Otherwise the predicate is evaluated to FALSE.
The ANY operation argument MUST be one of the properties found in the comparison list above which supports IN operations.
Example:
SELECT *
FROM CAR_REVIEW
WHERE (MAKE = ‘buick’ ) OR
( ANY FEATURES IN (‘NAVIGATION SYSTEM’, ‘SATELLITE
RADIO’, ‘MP3’) ) (Note: FEATURES is a multi-valued String property.)
BNF grammar structure:: CONTAINS ( [ <qualifier> ,] ‘ <text search expression> ‘ )
Usage: This is a predicate function that encapsulates the full-text search capability that MAY be provided by a Repository (See previous section.)
Inputs:
<Qualifier>
The value of this optional parameter MUST be the name of one of the Virtual Tables listed in the FROM clause for the query.
· If specified, then the predicate SHOULD only be applied to objects in the specified Virtual Table, but a repository MAY ignore the value of the parameter.
· If not specified, applies to the single virtual table. If the query is a join, a server SHOULD throw an exception if the qualifier is not specified.
<Text Search Expression>
The <text search expression> parameter MUST be a character string , specifying the full-text search criteria.
The Text Search Expression may be a set of terms or phrases with an optional ‘-‘ to signal negation. A phrase is defined as a word or group of words. A group of words must be surrounded by quotes to be considered a single phrase.
Terms separated by whitespace are AND’ed together.
Terms separated by “OR” are OR’ed together
Implicit “AND” has higher precedence than “OR”
Within a word or phrase, each (single-)quote must also be escaped by a preceding backslash “\”
Return value:
The predicate returns a Boolean value.
The predicate MUST return TRUE if the object is considered by the repository as “relevant” with respect to the given <text search expression> parameter.
The predicate MUST return FALSE if the object is considered by the repository as not “relevant” with respect to the given <text search expression> parameter.
Constraints:
At most one CONTAINS() function MUST be included in a single query statement. The repository MUST throw an exception if more than one CONTAINS() function is found.
The return value of the CONTAINS() function MAY only be included conjunctively (ANDed) with the aggregate of all other predicates, if there is any, in the WHERE clause.
BNF grammar structure: SCORE ()
Usage: This is a predicate function that encapsulates the full-text search capability that MAY be provided by a Repository (See previous section.)
Inputs: No inputs MUST be provided for this predicate function.
Return value:
The SCORE() predicate function returns a decimal value in the interval [0,1] .
A repository MUST return the value 0 if the object is considered by the repository as having absolutely no relevance with respect to the CONTAINS() function specified in the query.
A repository MUST return the value 1 if the object is considered by the repository as having absolutely complete relevance with respect to the CONTAINS() function specified in the query.
Constraints:
The SCORE() function MUST only be used in queries that also include a CONTAINS() predicate function
The SCORE() function MUST only be used in the SELECT clause of a query. It MUST NOT be used in the WHERE clause or in the ORDER BY clauses.
An alias column name defined for the SCORE() function call in the SELECT clause (i.e., "SELECT SCORE() AS column_name …") may be used in the ORDER BY clause.
If SCORE() is included in the SELECT clause and an alias column name is not provided, then a query name of SEARCH_SCORE is used for the query output, and the property definition ID is repository-specific.
BNF grammar structure: IN_FOLDER( [ <qualifier>, ] <folder id> )
Usage: This is a predicate function that tests whether or not a candidate object is a child-object of the folder object identified by the given <folder id>.
Inputs:
<qualifier>
The value of this optional parameter MUST be the name of one of the Virtual Tables listed in the FROM clause for the query.
· If specified, then the predicate SHOULD only be applied to objects in the specified Virtual Table, but a repository MAY ignore the value of the parameter.
· If not specified, applies to the single virtual table. If the query is a join, a server SHOULD throw an exception if the qualifier is not specified.
<folder id>
The value of this parameter MUST be the ID of a folder object in the repository.
Return value:
The predicate function MUST return TRUE if the object is a child-object of the folder specified by <folder id>.
The predicate function MUST return FALSE if the object is a NOT a child-object of the folder specified by <folder id>.
BNF grammar structure: IN_TREE( [ <qualifier>, ] <folder id> )
Usage: This is a predicate function that tests whether or not a candidate object is a descendant-object of the folder object identified by the given <folder id>.
Inputs:
<qualifier>
The value of this optional parameter MUST be the name of one of the Virtual Tables listed in the FROM clause for the query.
· If specified, then the predicate SHOULD only be applied to objects in the specified Virtual Table, but a repository MAY ignore the value of the parameter.
· If not specified, applies to the single virtual table. If the query is a join, a server SHOULD throw an exception if the qualifier is not specified.
<folder id>
The value of this parameter MUST be the ID of a folder object in the repository.
Return value:
The predicate function MUST return TRUE if the object is a descendant-object of the folder specified by <folder id>.
The predicate function MUST return FALSE if the object is a NOT a descendant -object of the folder specified by <folder id>.
This clause MUST contain a comma separated list of one or more column names.
All column names referenced in this clause MUST be valid “queryName” or their aliased values for properties defined as orderable in the Object-type(s) whose Virtual Tables are listed in the FROM clause.
Only columns in the SELECT clause MAY be in the ORDER BY clause.
Collation rules for the ORDER BY clause are repository specific.
Repositories MUST support the escaping of characters using a backslash (\) in the query statement. The backslash character (\) will be used to escape characters within quoted strings in the query as follows:
CMIS provides a “change log” mechanism to allow applications to easily discover the set of changes that have occurred to objects stored in the repository since a previous point in time. This change log can then be used by applications such as search services that maintain an external index of the repository to efficiently determine how to synchronize their index to the current state of the repository (rather than having to query for all objects currently in the repository).
Entries recorded in the change log are referred to below as “change events”.
Note that change events in the change log MUST be returned in ascending order from the time when the change event occurred.
The Change Log mechanism exposed by a repository MAY be able to return an entry for every change ever made to content in the repository, or may only be able to return an entry for all changes made since a particular point in time. This “completeness” level of the change log is indicated via the optional changesIncomplete value found on the getRepositoryInfo service response
However, repositories MUST ensure that if an application requests the entire contents of the repository’s change log, that the contents of the change log includes ALL changes made to any object in the repository after the first change listed in the change log. (I.e. repositories MAY truncate events from the change log on a “first-in first-out” basis, but not in any other order.)
A Repository MAY record events such as filing/unfiling/moving of Documents as change events on the Documents, their parent Folder(s), or both the Documents and the parent Folders.
The primary index into the change log of a repository is the “change log token”. The change log token is an opaque string that uniquely identifies a particular change in the change log.
Repositories that support the changeLogToken event MUST expose the latest change log token (i.e. the change log token corresponding to the most recent change to any object in the repository) as a property returned by the getRepositoryInfo service.
This will enable applications to begin “subscribing” to the change log for a repository by discovering what change log token they should use on a going-forward basis to discover change events to the repository.
A change event represents a single action that occurred to an object in the repository that affected the persisted state of the object.
A Repository that supports the change log capability MUST expose at least the following information for each change object:
o created: The object was created.
o updated: The object was updated.
o deleted: The object was deleted
o security: The access control or security policy for the object were changed.
Repositories MUST indicate whether they include properties for “updated” change events via the optional enumCapabilityChanges capability.
The Services section of the CMIS specification defines a set of services that are described in a protocol/binding-agnostic fashion.
Every protocol binding of the CMIS specification MUST implement all of the methods described in this section or explain why the service is not implemented.
However, the details of how each service & method is implemented will be described in those protocol binding specifications.
The following elements are common across many of the CMIS services.
All of the methods that allow for the retrieval of a collection of CMIS objects support paging of their result sets except where explicitly stated otherwise. The following pattern is used:
Input Parameters:
If the caller of a method does not specify a value for maxItems, then the Repository MAY select an appropriate number of items to return, and MUST use the hasMoreItems output parameter to indicate if any additional results were not returned.
Repositories MAY return a smaller number of items than the specified value for maxItems.
Each binding will express the above in context and may have different mechanisms for communicating hasMoreItems and numItems.
Several CMIS services that return object information have the ability to return dependent object information as part of their response, such as the Allowable Actions for an object, rendition information, etc.
The CMIS service methods that support returning a result set of objects will include the ability to return the following object information:
· Properties (retrieves a subset instead of additional information)
· Relationships
· Renditions
· ACLs
· AllowableActions
This section describes the input parameter & output pattern for those services. All input parameters are optional.
Description: All of the methods that allow for the retrieval of properties for CMIS Objects have a “Property Filter” as an optional parameter, which allows the caller to specify a subset of properties for Objects that MUST be returned by the repository in the output of the method.
Optional Input Parameter:
o Not set: The set of properties to be returned MUST be determined by the repository.
o A comma-delimited list of property definition Query Names: The properties listed MUST be returned.
o “*” : All properties MUST be returned for all objects.
Repositories SHOULD return only the properties specified in the property filter if they exist on the object’s type definition.
If a property filter specifies a property that is ‘not set’, it MUST be represented as a property element without a value element.
Description: Used to retrieve the relationships in which the object(s) are participating.
Optional Input Parameter:
none:No relationships MUST be returned. (Default).
source: Only relationships in which the objects returned are the source MUST be returned.
target: Only relationships in which the objects returned are the target MUST be returned.
both: Relationships in which the objects returned are the source or the target MUST be returned.
Output Parameter for each object:
Description: Used to retrieve the policies currently applied to the object(s).
Optional Input Parameter:
· Boolean includePolicyIds: If TRUE, then the Repository MUST return the Ids of the policies applied to the object. Defaults to FALSE.
Output Parameter or each object:
· <Array> Policies: A collection of the policy objects.
Description: Used to retrieve the renditions of the object(s).
Optional Input Parameter:
Output Parameter for each object:
The Rendition Filter grammar is defined as follows:
<renditionInclusion> ::= <none> | <wildcard> | <termlist>
<termlist> ::= <term> | <term> ',' <termlist>
<term> ::= <kind> | <mimetype>
<kind> ::= <text>
<mimetype> ::= <type> '/' <subtype>
<type> ::= <text>
<subtype> ::= <text> | <wildcard>
<text> ::= /* any char except whitespace */
<wildcard> ::= '*'
<none> ::= 'cmis:none'
An inclusion pattern allows:
· Wildcard : include all associated Renditions
· Comma-separated list of Rendition kinds or mimetypes : include only those Renditions that match one of the specified kinds or mimetypes
· cmis:none: (Default) exclude all associated Renditions
Examples:
· * (include all Renditions)
· cmis:thumbnail (include only Thumbnails)
· Image/* (include all image Renditions)
· application/pdf, application/x-shockwave-flash (include web ready Renditions)
· cmis:none (exclude all Renditions)
Description: Used to retrieve the ACLs for the object(s) described in the service response.
Optional Input Parameter:
Output Parameter for each object:
Description: Used to retrieve the allowable actions for the object(s) described in the service response.
Optional Input Parameter:
Output Parameter for each object:
cmisAllowableActionsType
in the CMIS schema. The CMIS base object-type definitions include an opaque string “ChangeToken” property that a Repository MAY use for optimistic locking and/or concurrency checking to ensure that user updates do not conflict.
If a Repository provides values for the ChangeToken property for an Object, then all invocations of the “update” methods on that object (updateProperties, setContentStream, deleteContentStream) MUST provide the value of the changeToken property as an input parameter, and the Repository MUST throw an updateConflictException if the value specified for the changeToken does NOT match the changeToken value for the object being updated.
The following sections list the complete set of exceptions that MAY be returned by a repository in response to a CMIS service method call.
The following exceptions MAY be returned by a repository in response to ANY CMIS service method call.
The “Cause” field indicates the circumstances under which a repository SHOULD return a particular exception.
invalidArgument
Cause: One or more of the input parameters to the service method is missing or invalid.
objectNotFound
Cause: The service call has specified an object that does not exist in the Repository.
notSupported
Cause: The service method invoked requires an optional capability not supported by the repository.
permissionDenied
Cause: The caller of the service method does not have sufficient permissions to perform the operation.
runtime
Cause: Any other cause not expressible by another CMIS exception.
The following exceptions MAY be returned by a repositiory in response to one or more CMIS service methods calls.
For each exception, the general intent is listed as well as a list of the methods which MAY cause the exception to be thrown.
constraint
Intent: The operation violates a Repository- or Object-level constraint defined in the CMIS domain model.
Methods:
· Navigation Services:
o getObjectParents
· Object Services:
o createDocument
o createDocumentFromSource
o createFolder
o createRelationship
o createPolicy
o updateProperties
o moveObject
o deleteObject
o setContentStream
o deleteContentStream
· Multi-filing Services:
o addObjectToFolder
· Versioning Services:
o checkOut
o cancelCheckOut
o checkIn
· Policy Services:
o applyPolicy
o removePolicy
· Change Log Services:
o getContentChanges
contentAlreadyExists
Intent: The operation attempts to set the content stream for a Document that already has a content stream without explicitly specifying the “overwriteFlag” parameter.
Methods:
· Object Services:
o setContentStream
filterNotValid
Intent: The property filter or rendition filter input to the operation is not valid.
Methods:
· Navigation Services:
o getDescendants
o getChildren
o getFolderParent
o getObjectParents
o getCheckedOutDocs
· Object Services:
o getProperties
o getRenditions
o getObject
o getObjectByPath
· Versioning Services:
o getPropertiesOfLatestVersion
o getAllVersions
· Policy Services:
o getAppliedPolicies
nameConstraintViolation
Intent: The repository is not able to store the object that the user is creating/updating due to a name constraint violation.
Methods:
· Object Services:
o createDocument
o createDocumentFromSource
o createFolder
o createRelationship
o createPolicy
o updateProperties
o moveObject
storage
Intent: The repository is not able to store the object that the user is creating/updating due to an internal storage problem.
Methods:
· Object Services:
o createDocument
o createDocumentFromSource
o createFolder
o createRelationship
o createPolicy
o updateProperties
o moveObject
o setContentStream
o deleteContentStream
· Versioning Services:
o checkOut
o checkIn
streamNotSupported
Intent: The operation is attempting to get or set a contentStream for a Document whose Object-type specifies that a content stream is not allowed for Document’s of that type.
Methods:
· Object Services:
o createDocument
o createDocumentFromSource
o getContentStream
o setContentStream
· Versioning Services:
o checkIn
updateConflict
Intent: The operation is attempting to update an object that is no longer current (as determined by the repository).
Methods:
· Object Services:
o updateProperties
o moveObject
o deleteObject
o deleteTree
o setContentStream
o deleteContentStream
· Versioning Services:
o checkOut
o cancelCheckOut
o checkIn
versioning
Intent: The operation is attempting to perform an action on a non-current version of a Document that cannot be performed on a non-current version.
Methods:
· Object Services:
o updateProperties
o moveObject
o setContentStream
o deleteContentStream
· Versioning Services:
o checkOut
o cancelCheckOut
o checkIn
Those services which allow for the setting of ACLs may take the optional macro cmis:user which allows the caller to indicate the operation applies to the current authenticated user.
The Repository Services (getRepositories, getRepositoryInfo, getTypeChildren, getTypeDescendants, getTypeDefinition) are used to discover information about the repository, including information about the repository and the object-types defined for the repository.
Description: Returns a list of CMIS repositories available from this CMIS service endpoint.
None.
A list of repository information, with (at least) the following information for each entry:
· ID repositoryId: The identifier for the Repository.
· String repositoryName: A display name for the Repository.
See section 2.2.1.4.1 General Exceptions
Description: Returns information about the CMIS repository, the optional capabilities it supports and its Access Control information if applicable. .
Required:
· ID repositoryId: The identifier for the Repository.
· ID repositoryId: The identifier for the Repository.
o Note: This MUST be the same identifier as the input to the method.
· String repositoryName: A display name for the Repository.
· String repositoryDescription: A display description for the Repository.
· String vendorName: A display name for the vendor of the Repository’s underlying application.
· String productName: A display name for the Repository’s underlying application.
· String productVersion: A display name for the version number of the Repository’s underlying application.
· ID rootFolderId: The ID of the Root Folder Object for the Repository.
· <List of capabilities>: The set of values for the repository-optional capabilities specified in section 2.1.1.1 Optional Capabilities
· String latestChangeLogToken: The change log token corresponding to the most recent change event for any object in the repository.
· String cmisVersionSupported: A decimal that indicates what version of the CMIS specification this repository supports as specified in 2.1.1.2 Implementation Information.
· URI thinClientURI: A optional repository-specific URI pointing to the repository’s web interface.
· Boolean changesIncomplete: Indicates whether or not the repository’s change log can return all changes ever made to any object in the repository or only changes made after a particular point in time. Applicable when the repository’s optional capability capabilityChanges is not none.
o If FALSE, then the change log can return all changes ever made to every object.
o If TRUE, then the change log includes all changes made since a particular point in time, but not all changes ever made.
· <List of enum values> changesOnType: Indicates whether changes are available for base types in the repository. Valid values are from enumBaseObjectTypeIds. See section 2.1.11 Change Log.
o cmis:document
o cmis:folder
o cmis:policy
o cmis:relationship
· Enum supportedPermissions: specifies which types of permissions are supported.
o basic: indicates that the CMIS Basic permissions are supported.
o repository: Indicates that repository specific permissions are supported.
o both: indicates that both CMIS basic permissions and repository specific permissions are supported.
· Enum propagation: The list of allowed values for applyACL, which control how non-direct ACEs are handled by the repository:
o objectonly: indicates that the repository is able to apply ACEs without changing the ACLs of other objects – i.e. ACEs are applied, potentially “breaking” the “sharing” dependency for non-direct ACEs.
o propagate: indicates that the repository is able to apply ACEs to a given object and propagate this change to all inheriting objects – i.e. ACEs are applied with the (intended) side effect to inheriting objects.
o repositorydetermined: indicates that the repository uses its own mechanisms to handle non-direct ACEs when applying ACLs.
· <Array> Permission permissions: The list of repository-specific permissions the repository supports for managing ACEs (see section 2.8 Access Control).
· <Array> PermissionMapping mapping: The list of mappings for the CMIS Basic permissions to allowable actions (see section 2.8 Access Control).
· String principalAnonymous: If set, this field holds the principal who is used for anonymous access. This principal can then be passed to the ACL services to specify what permissions anonymous users should have.
· String principalAnyone: If set, this field holds the principal who is used to indicate any authenticated user. This principal can then be passed to the ACL services to specify what permissions any authenticated user should have.
The cmisRepositoryInfoType schema describes the markup that will be included in all CMIS protocol bindings to implement this service.
See section 2.2.1.4.1 General Exceptions
Description: Returns the list of Object-Types defined for the Repository that are children of the specified Type.
Required:
Optional:
· Boolean includePropertyDefinitions: If TRUE, then the Repository MUST return the property definitions for each Object-Type returned.
· Integer maxItems: See section 2.2.1.1 Paging.
· Integer skipCount: See section 2.2.1.1 Paging.
<Array> Object-Types: The list of child Object-Types defined for the given typeId.
Boolean hasMoreItems: See section 2.2.1.1 Paging.
Optional:
Integer numItems: See section 2.2.1.1 Paging.
See section 2.2.1.4.1 General Exceptions
Description: Returns the set of descendant Object-Types defined for the Repository under the specified Type.
Notes:
Required:
Optional:
<Array> Object-Types: The hierarchy of Object-Types defined for the Repository.
See section 2.2.1.4.1 General Exceptions
Description: Gets the definition of the specified Object-Type.Inputs
Required:
· String repositoryId: The identifier for the Repository.
· String typeId: The typeId of an Object-Type specified in the Repository.
See section 2.2.1.4.1 General Exceptions
The Navigation Services (getDescendants, getChildren, getFolderParent, getObjectParents, getCheckedoutDocs), are used to traverse the folder hierarchy in a CMIS Repository, and to locate Documents that are checked out.
Description: Gets the list of child objects contained in the specified folder.
Notes:
Required:
· ID repositoryId: The identifier for the Repository.
· ID folderId: The identifier for the folder.
Optional:
· <Array> ObjectResults: A list of the child objects for the specified folder. Each object result MUST include the following elements if they are requested:
o <Array> Properties: The list of properties for the object.
o <Array> Renditions: See section 2.2.1.2.4 Renditions.
o AllowableActions: See section 2.2.1.2.6 Allowable Actions.
o String PathSegment: If includePathSegment was TRUE. See section 2.1.5.3 Paths.
· Boolean hasMoreItems: See section 2.2.1.1 Paging.
Optional:
Integer numItems: See section 2.2.1.1 Paging.
· See section 2.2.1.4.1 General Exceptions
· filterNotValid: The Repository MUST throw this exception if this property filter input parameter is not valid.
Description: Gets the set of descendant objects contained in the specified folder or any of its child-folders.
Notes:
Required:
· ID repositoryId: The identifier for the Repository.
· ID folderId: The identifier for the folder.
Optional:
· Integer depth: The number of levels of depth in the folder hierarchy from which to return results. Valid values are:
· <Array> ObjectResults: A list of the descendant objects for the specified folder. Each object result MUST include the following elements if they are requested:
o <Array> Properties: The list of properties for the object.
o <Array> Renditions: See section 2.2.1.2.4 Renditions.
o AllowableActions: See section 2.2.1.2.6 Allowable Actions.
o String PathSegment: If includePathSegment was TRUE. See section 2.1.5.3 Paths.
See section 2.2.1.4.1 General Exceptions
· filterNotValid: The Repository MUST throw this exception if this property filter input parameter is not valid.
Description: Gets the set of descendant folder objects contained in the specified folder.
Notes:
· This method does NOT support paging as defined in the 2.2.1.1 Paging section.
Required:
· ID repositoryId: The identifier for the Repository.
· ID folderId: The identifier for the folder.
Optional:
· Integer depth: The number of levels of depth in the folder hierarchy from which to return results. Valid values are:
· <Array> ObjectResults: A list of the descendant folders for the specified folder. Each object result MUST include the following elements if they are requested:
o <Array> Properties: The list of properties for the object.
o <Array> Renditions: See section 2.2.1.2.4 Renditions.
o AllowableActions: See section 2.2.1.2.6 Allowable Actions.
o String pathSegment: If includePathSegment was TRUE. See section 2.1.5.3 Paths.
· See section 2.2.1.4.1 General Exceptions
· filterNotValid: The Repository MUST throw this exception if this property filter input parameter is not valid.
Description: Gets the parent folder object for the specified folder object.
Required:
· ID repositoryId: The identifier for the Repository.
· ID folderId: The identifier for the folder.
Optional:
· String filter: See section 2.2.1.2.1 Properties.
· Object: The parent folder object of the specified folder.
· See section 2.2.1.4.1 General Exceptions
· filterNotValid: The Repository MUST throw this exception if this property filter input parameter is not valid.
· invalidArgument: The Repository MUST throw this exception if the folderId input is the root folder.
Description: Gets the parent folder(s) for the specified non-folder, fileable object.
Required:
· ID repositoryId: The identifier for the Repository.
· ID objectId: The identifier for the object.
Optional:
· <Array> ObjectResults: A list of the parent folder(s) of the specified objects. Empty for unfiled objects or for the root folder. Each object result MUST include the following elements if they are requested:
o <Array> Properties: The list of properties for the object.
o <Array> Renditions: See section 2.2.1.2.4 Renditions.
o String relativePathSegment: If includeRelativePathSegment was TRUE. See section 2.1.5.3 Paths.
· See section 2.2.1.4.1 General Exceptions
· constraint: The Repository MUST throw this exception if this method is invoked on an object who Object-Type Definition specifies that it is not fileable.
· filterNotValid: The Repository MUST throw this exception if this property filter input parameter is not valid.
Description: Gets the list of documents that are checked out that the user has access to.
Required:
· ID repositoryId: The identifier for the Repository.
Optional:
· ID folderId: The identifier for a folder in the repository from which documents should be returned.
· <Array> ObjectResults: A list of checked out documents. Each object result MUST include the following elements if they are requested:
o <Array> Properties: The list of properties for the object.
o <Array> Renditions: See section 2.2.1.2.4 Renditions.
o AllowableActions: See section 2.2.1.2.6 Allowable Actions.
· Boolean hasMoreItems: See section 2.2.1.1 Paging.
Optional:
· Integer numItems: See section 2.2.1.1 Paging.
· See section 2.2.1.4.1 General Exceptions
· filterNotValid: The Repository MUST throw this exception if this property filter input parameter is not valid.
CMIS provides ID-based CRUD (Create, Retrieve, Update, Delete), operations on objects in a Repository.
Description: Creates a document object of the specified type (given by the cmis:objectTypeId property) in the (optionally) specified location.
Required:
Optional:
· ID folderId: If specified, the identifier for the folder that MUST be the parent folder for the newly-created Document Object.
· <contentStream> contentStream: The Content Stream that MUST be stored for the newly-created Document Object. The method of passing the contentStream to the server and the encoding mechanism will be specified by each specific binding. MUST be required if the type requires it.
· Enum versioningState: An enumeration specifying what the versioing state of the newly-created object MUST be. If the repository does not support versioning, the repository MUST ignore the versioningState parameter. Valid values are:
ID objectId: The ID of the newly-created document.
· See section 2.2.1.4.1 General Exceptions
· constraint: The Repository MUST throw this exception if ANY of the following conditions are met:
· nameConstraintViolation: See section 2.2.1.4.2 Specific Exceptions. If the repository detects a violation with the given cmis:name property value, the repository MAY throw this exception or chose a name which does not conflict.
· storage: See section 2.2.1.4.2 Specific Exceptions.
· streamNotSupported: The Repository MUST throw this exception if the “contentStreamAllowed” attribute of the Object-Type definition specified by the cmis:objectTypeId property value is set to “not allowed” and a contentStream input parameter is provided.
Description: Creates a document object as a copy of the given source document in the (optionally) specified location.
Required:
Optional:
· <Array> properties: The property values that MUST be applied to the Object. This list of properties SHOULD only contain properties whose values differ from the source document.
· ID folderId: If specified, the identifier for the folder that MUST be the parent folder for the newly-created Document Object.
· Enum versioningState: An enumeration specifying what the versioing state of the newly-created object MUST be. Valid values are:
ID objectId: The ID of the newly-created document.
· See section 2.2.1.4.1 General Exceptions
· constraint: The Repository MUST throw this exception if ANY of the following conditions are met:
· nameConstraintViolation: See section 2.2.1.4.2 Specific Exceptions. If the repository detects a violation with the given cmis:name property value, the repository MAY throw this exception or chose a name which does not conflict.
· storage: See section 2.2.1.4.2 Specific Exceptions.
· streamNotSupported: The Repository MUST throw this exception if the “contentStreamAllowed” attribute of the Object-Type definition specified by the cmis:objectTypeId property value is set to “not allowed” and a contentStream input parameter is provided.
Description: Creates a folder object of the specified type in the specified location.
Required:
· ID repositoryId: The identifier for the Repository.
· ID folderId: The identifier for the folder that MUST be the parent folder for the newly-created Folder Object.
Optional:
· See section 2.2.1.4.1 General Exceptions
· constraint: The Repository MUST throw this exception if ANY of the following conditions are met:
· nameConstraintViolation: See section 2.2.1.4.2 Specific Exceptions. If the repository detects a violation with the given cmis:name property value, the repository MAY throw this exception or chose a name which does not conflict.
· storage: See section 2.2.1.4.2 Specific Exceptions.
Description: Creates a relationship object of the specified type
Required:
Optional:
· ID objectId: The ID of the newly-created relationship.
· See section 2.2.1.4.1 General Exceptions
· constraint: The Repository MUST throw this exception if ANY of the following conditions are met:
· nameConstraintViolation: See section 2.2.1.4.2 Specific Exceptions. If the repository detects a violation with the given cmis:name property value, the repository MAY throw this exception or chose a name which does not conflict.
· storage: See section 2.2.1.4.2 Specific Exceptions.
Description: Creates a policy object of the specified type
Required:
· ID repositoryId: The identifier for the Repository.
Optional:
· ID folderId: If specified, the identifier for the folder that MUST be the parent folder for the newly-created Policy Object.
o This parameter MUST be specified if the Repository does NOT support the optional “unfiling” capability.
· <Array> policies: A list of policy IDs that MUST be applied to the newly-created Policy object.
· <Array> ACE addACEs: A list of ACEs that MUST be added to the newly-created Policy object, either using the ACL from folderId if specified, or being applied if no folderId is specified.
· <Array> ACE removeACEs: A list of ACEs that MUST be removed from the newly-created Policy object, either using the ACL from folderId if specified, or being ignored if no folderId is specified.
· ID objectId: The ID of the newly-created Policy Object.
· See section 2.2.1.4.1 General Exceptions
· constraint: The Repository MUST throw this exception if ANY of the following conditions are met:
· nameConstraintViolation: See section 2.2.1.4.2 Specific Exceptions. If the repository detects a violation with the given cmis:name property value, the repository MAY throw this exception or chose a name which does not conflict.
· storage: See section 2.2.1.4.2 Specific Exceptions.
Description: Gets the list of allowable actions for an Object (see section.2.2.1.2.6 Allowable Actions).
Required:
· ID objectId: The identifier for the object
See section 2.2.1.4.1 General Exceptions
Description: Gets the specified information for the Object.
Required:
· ID repositoryId: The identifier for the Repository.
· ID objectId: The identifier for the object
Optional:
· String filter: See section 2.2.1.2.1 Properties.
· Enum includeRelationships: See section 2.2.1.2.2 Relationships.
· Boolean includePolicyIds: See section 2.2.1.2.3 Policies.
· String renditionFilter: See section 2.2.1.2.4 Renditions.
· Boolean includeACL: See section 2.2.1.2.5 ACLs.
· Boolean includeAllowableActions: See section 2.2.1.2.6 Allowable Actions.
<Array> Properties: The list of properties for the object.
· <Array> Relationships: See section 2.2.1.2.2 Relationships.
<Array> Policy Ids: See section 2.2.1.2.3 Policies.
<Array> Renditions: See section 2.2.1.2.4 Renditions.
· <Array> ACLs: See section 2.2.1.2.5 ACLs.
AllowableActions: See section 2.2.1.2.6 Allowable Actions.
See section 2.2.1.4.1 General Exceptions
filterNotValid: The Repository MUST throw this exception if this property filter input parameter is not valid.
Description: Gets the list of properties for an Object.
Required:
· ID repositoryId: The identifier for the Repository.
· ID objectId: The identifier for the object
Optional:
· String filter: See section 2.2.1.2.1 Properties.
<Array> Properties: The list of properties for the object.
See section 2.2.1.4.1 General Exceptions
filterNotValid: The Repository MUST throw this exception if this property filter input parameter is not valid.
Description: Gets the specified object.
Required:
· ID repositoryId: The identifier for the Repository.
· String path: The path to the object. See section 2.1.5.3 Paths.
Optional:
· String filter: See section 2.2.1.2.1 Properties.
· Boolean includeAllowableActions: See section 2.2.1.2.6 Allowable Actions.
· Enum includeRelationships: See section 2.2.1.2.2 Relationships.
· String renditionFilter: See section 2.2.1.2.4 Renditions.
· Boolean includePolicyIds: See section 2.2.1.2.2 Relationships.
· Boolean includeACL: See section 2.2.1.2.5 ACLs.
<Array> Properties: The list of properties for the object.
AllowableActions: See section 2.2.1.2.6 Allowable Actions.
· See section 2.2.1.4.1 General Exceptions
filterNotValid: The Repository MUST throw this exception if this property filter input parameter is not valid.
Description: Gets the content stream for the specified Document object, or gets a rendition stream for a specified rendition of a document or folder object.
Notes: Each CMIS protocol binding MAY provide a way for fetching a sub-range within a content stream, in a manner appropriate to that protocol.
Required:
· ID repositoryId: The identifier for the Repository.
· ID objectId: The identifier for the object
Optional:
· See section 2.2.1.4.1 General Exceptions
constraint: The Repository MUST throw this exception if the object specified by objectId does NOT have a content stream or rendition stream.
Description: Gets the list of associated Renditions for the specified object. Only rendition attributes are returned, not rendition stream.
Notes: Each CMIS protocol binding MAY provide a way for fetching a sub-range within a content stream, in a manner appropriate to that protocol.
Required:
· ID repositoryId: The identifier for the Repository.
· ID objectId: The identifier for the object
Optional:
Description: Updates properties of the specified object.
Notes:
· A Repository MAY automatically create new Document versions as part of an update properties operation. Therefore, the objectId output NEED NOT be identical to the objectId input.
· Each CMIS protocol bindings MUST specify whether the updateProperties service MUST always include all updatable properties, or only those properties whose values are different than the original value of the object.
Required:
ID objectId: The identifier of the object to be updated.
Optional:
· See section 2.2.1.4.1 General Exceptions
· constraint: The Repository MUST throw this exception if the value of any of the properties violates the min/max/required/length constraints specified in the property definition in the Object-Type.
· nameConstraintViolation: See section 2.2.1.4.2 Specific Exceptions. The repository MAY throw this exception or chose a name which does not conflict.
· storage: See section 2.2.1.4.2 Specific Exceptions.
· updateConflict: See section 2.2.1.4.2 Specific Exceptions.
· versioning: The Repository MUST throw this exception if ANY of the following conditions are met:
Description: Moves the specified file-able object from one folder to another.
Required:
· ID objectId: The identifier of the object to be moved.
· See section 2.2.1.4.1 General Exceptions
· constraint: The Repository MUST throw this exception if the cmis:objectTypeId property value of the given object is NOT in the list of AllowedChildObjectTypeIds of the parent-folder specified by targetFolderId.
· nameConstraintViolation: See section 2.2.1.4.2 Specific Exceptions. The repository MAY throw this exception or chose a name which does not conflict.
· storage: See section 2.2.1.4.2 Specific Exceptions.
· updateConflict: See section 2.2.1.4.2 Specific Exceptions.
· versioning: The repository MAY throw this exception if the object is a non-current Document Version.
Description: Deletes the specified object.
Required:
Optional:
· See section 2.2.1.4.1 General Exceptions
· constraint: The Repository MUST throw this exception if the method is invoked on a Folder object that contains one or more objects.
· updateConflict: See section 2.2.1.4.2 Specific Exceptions.
Description: Deletes the specified folder object and all of its child- and descendant-objects.
Notes:
Required:
Optional:
o unfile: Unfile all fileable objects.
o deletesinglefiled: Delete all fileable non-folder objects whose only parent-folders are in the current folder tree. Unfile all other fileable non-folder objects from the current folder tree.
o delete (default): Delete all fileable objects.
o If FALSE (default), then the repository SHOULD abort this method when it fails to delete a single child- or descendant-object.
· See section 2.2.1.4.1 General Exceptions
· updateConflict: See section 2.2.1.4.2 Specific Exceptions.
Description: Sets the content stream for the specified Document object.
Notes: A Repository MAY automatically create new Document versions as part of this service method. Therefore, the obejctId output NEED NOT be identical to the objectId input.
Required:
· ID repositoryId: The identifier for the Repository.
· ID objectId: The identifier for the Document object.
· <contentStream> contentStream: The Content Stream
Optional:
· Boolean overwriteFlag: If TRUE (default), then the Repository MUST replace the existing content stream for the object (if any) with the input contentStream.
o If FALSE, then the Repository MUST only set the input contentStream for the object if the object currently does not have a content-stream.
· String changeToken: See section 2.2.1.3 Change Tokens.
· ID objectId: The ID of the document.
· String changeToken: See section 2.2.1.3 Change Tokens.
· See section 2.2.1.4.1 General Exceptions
· contentAlreadyExists: The Repository MUST throw this exception if the input parameter overwriteFlag is FALSE and the Object already has a content-stream.
· storage: See section 2.2.1.4.2 Specific Exceptions.
· streamNotSupported: The Repository MUST throw this exception if the “contentStreamAllowed” attribute of the Object-Type definition specified by the cmis:objectTypeId property value of the given document is set to “notallowed”.
· updateConflict: See section 2.2.1.4.2 Specific Exceptions.
· versioning: The repository MAY throw this exception if the object is a non-current Document Version.
Description: Deletes the content stream for the specified Document object.
Notes: A Repository MAY automatically create new Document versions as part of this service method. Therefore, the objectId output NEED NOT be identical to the objectId input.
Required:
Optional:
· See section 2.2.1.4.1 General Exceptions
· constraint: The Repository MUST throw this exception if the Object’s Object-Type definition “contentStreamAllowed” attribute is set to “required”.
· storage: See section 2.2.1.4.2 Specific Exceptions.
· versioning: The repository MAY throw this exception if the object is a non-current Document Version.
The Multi-filing services (addObjectToFolder, removeObjectFromFolder) are supported only if the repository supports the multifiling or unfiling optional capabilities. The Multi-filing Services are used to file/un-file objects into/from folders.
This service is NOT used to create or delete objects in the repository.
Description: Adds an existing fileable non-folder object to a folder.
Required:
· ID repositoryId: The identifier for the Repository.
· ID objectId: The identifier of the object.
· ID folderId: The folder into which the object is to be filed.
Optional:
· See section 2.2.1.4.1 General Exceptions.
· constraint: The Repository MUST throw this exception if the cmis:objectTypeId property value of the given object is NOT in the list of AllowedChildObjectTypeIds of the parent-folder specified by folderId.
Description: Removes an existing fileable non-folder object from a folder.
Required:
· ID repositoryId: The identifier for the Repository.
Optional:
o If no value is specified, then the Repository MUST remove the object from all folders in which it is currently filed.
· See section 2.2.1.4.1 General Exceptions
The Discovery Services (query) are used to search for query-able objects within the Repository.
Description: Executes a CMIS query statement against the contents of the Repository.
Required:
· ID repositoryId: The identifier for the Repository.
· String statement: CMIS query to be executed. (See section 2.1.10 Query.)
Optional:
· Boolean searchAllVersions:
o If TRUE, then the Repository MUST include latest and non-latest versions of document objects in the query search scope.
o If FALSE (default), then the Repository MUST only include latest versions of documents in the query search scope.
o If the Repository does not support the optional capabilityAllVersionsSearchable capability, then this parameter value MUST be set to FALSE.
· Enum includeRelationships: See section 2.2.1.2.2 Relationships.
o Note: For query statements where the SELECT clause contains properties from only one virtual table reference (i.e. referenced object-type), any value for this enum may be used. If the SELECT clause contains properties from more than one table, then the value of this parameter MUST be “none”.
· String renditionFilter: See section 2.2.1.2.4 Renditions.
o If the SELECT clause contains properties from more than one table, then the value of this parameter MUST not be set.
· Boolean includeAllowableActions: See section 2.2.1.2.6 Allowable Actions.
o Note: For query statements where the SELECT clause contains properties from only one virtual table reference (i.e. referenced object-type), any value for this parameter may be used. If the SELECT clause contains properties from more than one table, then the value of this parameter MUST be “FALSE”.
· Integer skipCount: See section 2.2.1.1 Paging.
· <Array> Object QueryResults: The set of results for the query. (See section 2.1.10 Query.). Each object result MUST include the following elements if they are requested:
o <Array> Renditions: See section 2.2.1.2.4 Renditions.
o AllowableActions: See section 2.2.1.2.6 Allowable Actions.
· Boolean hasMoreItems: See section 2.2.1.1 Paging.
Optional:
· Integer numItems: See section 2.2.1.1 Paging.
· See section 2.2.1.4.1 General Exceptions
· If the select clause includes properties from more than a single type reference, then the repository SHOULD throw an exception if includeRelationships is something other than “none” or includeAllowableActions is specified as TRUE.
Description: Gets a list of content changes. This service is intended to be used by search crawlers or other applications that need to efficiently understand what has changed in the repository.
Notes:
· The content stream is NOT returned for any change event.
· The definition of the authority needed to call this service is repository specific.
· The latest change log token for a repository can be acquired via the getRepositoryInfo service.
Required:
· ID repositoryId: The identifier for the Repository.
Optional:
· String changeLogToken:
o If specified, then the Repository MUST return the change event corresponding to the value of the specified change log token as the first result in the output.
o If not specified, then the Repository MUST return the first change event recorded in the change log.
· Boolean includeProperties:
o If TRUE, then the Repository MUST include the updated property values for “updated” change events if the repository supports returning property values as specified by capbilityChanges.
o If FALSE (default), then the Repository MUST NOT include the updated property values for “updated” change events. The single exception to this is that the objectId MUST always be included.
· Boolean includePolicyIds:
If TRUE, then the Repository MUST include the IDs of Policies applied to the object referenced in each change event, if the change event modified the set of policies applied to the object.
If FALSE (default), then the Repository will not include policy information.
· Boolean includeACL: See section 2.2.1.2.5 ACLs.
· Integer maxItems: See section 2.2.1.1 Paging.
· <Array> changeEvents: A collection of CMIS objects that MUST include the information as specified in 2.1.11.3. Each result MUST include the following elements if they are requested:
o <Array> policyIDs: The IDs of Policies applied to the object referenced in the change event.
o <Array> ACLs: The ACLs applied to the object reference in the change event.
· String latestChangeLogToken: The change log token corresponding to the last change event in changeEvents.
· Boolean hasMoreItems: See section 2.2.1.1 Paging.
Optional:
· Integer numItems: See section 2.2.1.1 Paging.
· See section 2.2.1.4.1 General Exceptions
The Versioning services (checkOut, cancelCheckOut, getPropertiesOfLatestVersion, getAllVersions, deleteAllVersions) are used to navigate or update a Document Version Series.
Description: Create a private working copy of the document.
Required:
· ID repositoryId: The identifier for the Repository.
· ID objectId: The identifier for the “Private Working Copy” document.
· Boolean contentCopied: TRUE if the content-stream of the Private Working Copy is a copy of the contentStream of the Document that was checked out.
o FALSE if the content-stream of the Private Working Copy is “not set”.
· See section 2.2.1.4.1 General Exceptions
· constraint: The Repository MUST throw this exception if the Document’s Object-Type definition’s versionable attribute is FALSE.
· storage: See section 2.2.1.4.2 Specific Exceptions.
· versioning: The repository MAY throw this exception if the object is a non-current Document Version.
Description: Reverses the effect of a check-out. Removes the private working copy of the checked-out document, allowing other documents in the version series to be checked out again.
Required:
· ID repositoryId: The identifier for the Repository.
· ID objectId: The identifier of the Private Working Copy.
· See section 2.2.1.4.1 General Exceptions
· constraint: The Repository MUST throw this exception if the Document’s Object-Type definition’s versionable attribute is FALSE.
· versioning: The repository MAY throw this exception if the object is a non-current Document Version.
Description: Checks-in the Private Working Copy document.
Notes:
· Each CMIS protocol bindings MUST specify whether the checkin service MUST always include all updatable properties, or only those properties whose values are different than the original value of the object.
Required:
Optional:
o FALSE if the checked-in Document Object MUST NOT be a major version.
ID objectId: The ID of the checked-in document.
· See section 2.2.1.4.1 General Exceptions
· constraint: The Repository MUST throw this exception if the Document’s Object-Type definition’s versionable attribute is FALSE.
· storage: See section 2.2.1.4.2 Specific Exceptions.
· streamNotSupported: The Repository MUST throw this exception if the “contentStreamAllowed” attribute of the Object-Type definition specified by the cmis:objectTypeId property value is set to “not allowed” and a contentStream input parameter is provided.
· updateConflict: See section 2.2.1.4.2 Specific Exceptions.
Description: Get a the latest Document object in the Version Series.
Required:
Optional:
o If FALSE (default), the Repository MUST return the properties for the latest (major or non-major) version object in the Version Series.
· Enum includeRelationships: See section 2.2.1.2.2 Relationships.
· Boolean includePolicyIds: See section 2.2.1.2.3 Policies.
· String renditionFilter: See section 2.2.1.2.4 Renditions.
· Boolean includeACL: See section 2.2.1.2.5 ACLs.
· Boolean includeAllowableActions: See section 2.2.1.2.6 Allowable Actions.
· <Array> Properties: The list of properties for the object.
· <Array> Relationships: See section 2.2.1.2.2 Relationships.
· <Array> Policy Ids: See section 2.2.1.2.3 Policies.
· <Array> Renditions: See section 2.2.1.2.4 Renditions.
· <Array> ACLs: See section 2.2.1.2.5 ACLs.
· AllowableActions: See section 2.2.1.2.6 Allowable Actions.
· filterNotValid: The Repository MUST throw this exception if this property filter input parameter is not valid.
· objectNotFound: The Repository MUST throw this exception if the input parameter major is TRUE and the Version Series contains no major versions.
Description: Get a subset of the properties for the latest Document Object in the Version Series.
Required:
Optional:
o If FALSE (default), the Repository MUST return the properties for the latest (major or non-major) version object in the Version Series.
<Array> Properties: The list of properties for the object.
· filterNotValid: The Repository MUST throw this exception if this property filter input parameter is not valid.
Description: Returns the list of all Document Objects in the specified Version Series, sorted by cmis:creationDate descending.
Notes:
Required:
· ID repositoryId: The identifier for the Repository.
· ID objectId: The identifier for the Version Series.
Optional:
· String filter: See section 2.2.1.2.1 Properties.
· Boolean includeAllowableActions: See section 2.2.1.2.6 Allowable Actions.
· <Array> ObjectResults: A list of Document Objects in the specified Version Series. Each object result MUST include the following elements if they are requested:
o <Array> Properties: The list of properties for the object.
o AllowableActions: See section 2.2.1.2.6 Allowable Actions.
· filterNotValid: The Repository MUST throw this exception if this property filter input parameter is not valid.
The Relationship Services (getObjectRelationships) are used to retrieve the dependent Relationship objects associated with an independent object.
Description: Gets all or a subset of relationships associated with an independent object.
Required:
· ID repositoryId: The identifier for the Repository.
· ID objectId: The identifier of the object.
Optional:
· Boolean includeSubRelationshipTypes: If TRUE, then the Repository MUST return all relationships whose Object-Types are descendant-types of the given object’s cmis:objectTypeId property value as well as relationships of the specified type.
o Default is FALSE
o If FALSE, then the Repository MUST only return relationships whose Object-Type is equivalent to the given object’s cmis:objectTypeId property value.
· Enum relationshipDirection: An enumeration specifying whether the Repository MUST return relationships where the specified Object is the source of the relationship, the target of the relationship, or both. Valid values are:
o source: (default) The Repository MUST return only relationship objects where the specified object is the source object.
o target: The Repository MUST return only relationship objects where the specified object is the target object.
o either: The Repository MUST return relationship objects where the specified object is either the source or the target object.
· ID typeId: If specified, then the Repository MUST return only relationships whose Object-Type is of the type specified
o If not specified, then the repository MUST return Relationship objects of all types.
· Integer maxItems: See section 2.2.1.1 Paging.
· Integer skipCount: See section 2.2.1.1 Paging.
· String filter: See section 2.2.1.2.1 Properties.
· Boolean includeAllowableActions: See section 2.2.1.2.6 Allowable Actions.
· <Array> Objects: A list of the relationship objects. Each object result MUST include the following elements if they are requested:
o <Array> Properties: The list of properties for the object.
o AllowableActions: See section 2.2.1.2.6 Allowable Actions.
· Boolean hasMoreItems: See section 2.2.1.1 Paging.
Optional:
· Integer numItems: See section 2.2.1.1 Paging.
· See section 2.2.1.4.1 General Exceptions
· filterNotValid: The Repository MUST throw this exception if this property filter input parameter is not valid.
Description: Applies a specified policy to an object.
Required:
· ID repositoryId: The identifier for the Repository.
· ID policyId: The identifier for the Policy to be applied.
· ID objectId: The identifier of the object.
See section 2.2.1.4.1 General Exceptions
constraint : The Repository MUST throw this exception if the specified object’s Object-Type definition’s attribute for controllablePolicy is FALSE.
Description: Removes a specified policy from an object.
Required:
· ID repositoryId: The identifier for the Repository.
· ID policyId: The identifier for the Policy to be removed.
· ID objectId: The identifier of the object.
· See section 2.2.1.4.1 General Exceptions
· constraint: The Repository MUST throw this exception if the specified object’s Object-Type definition’s attribute for controllablePolicy is FALSE.
Description: Gets the list of policies currently applied to the specified object.
Required:
· ID repositoryId: The identifier for the Repository.
Optional:
String filter: See section 2.2.1.2.1 Properties.
<Array> Objects: A list of Policy Objects.
· See section 2.2.1.4.1 General Exceptions
· filterNotValid: The Repository MUST throw this exception if this property filter input parameter is not valid.
Description: Get the ACL currently applied to the specified document or folder object.
Required:
Optional:
Optional:
· See section 2.2.1.4.1 General Exceptions
This service MUST be supported by a repository, if getRepository returns capabilityACL=discover or =manage.
How an ACL for the object is computed is up to the repository. A client MUST NOT assume that the ACEs from the ACL as returned by this service can be applied via applyACL.
Description: Adds or removes the given ACEs to or from the ACL of document or folder object.
Required:
Optional:
o objectonly: ACEs must be applied without changing the ACLs of other objects.
o propagate: ACEs must be applied by propagate the changes to all “inheriting” objects.
o repositorydetermined: Default value. Indicates that the client leaves the behavior to the repository.
Optional:
· See section 2.2.1.4.1 General Exceptions
This service MUST be supported by a repository, if getRepository returns capabilityACL=manage.
How ACEs are added or removed to or from the object is up to the repository – with respect to the ACLPropagation provided by the client. For “shared” ACEs (e.g. via inheritance), the repository MAY merge the ACEs provided with the ACEs of the ACL already applied to the object (i.e. the ACEs provided MAY not be completely added or removed from the effective ACL for the object).
This binding is based upon the Atom (RFC4287) and Atom Publishing Protocol (RFC5023). Implementations of CMIS MUST be compliant with RFC4287 and RFC5023.
In this binding, the client interacts with the repository by acquiring 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.
This 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.
When requesting a resource, optional parameters may be specified to change default behavior via query parameters.
This specification uses the following namespaces and prefixes when referring to xml or xml schema elements in the text or examples:
Authentication SHOULD be handled by the transport protocol. Please see AtomPub (RFC5023) section 14.
The client can specify, in HTTP the Accept header, 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 the appropriate Media Types specified in this document.
The binding supports adding optional parameters to CMIS resources to modify the default behavior. CMIS implementations MUST support arguments being specified as HTTP query string parameters.
Names and valid values for HTTP query string parameters are as described in the appropriate CMIS Service descriptions [see CMIS Domain Model]. Valid values of enumeration types are also represented in the CMIS Core XML Schema
Exceptions MUST be mapped to the appropriate HTTP status code.
Repositories SHOULD provide sufficient information in the body of the HTTP response for a user to determine corrective action.
See Section 3.2.4 HTTP Status Codes for more information.
Each Rendition included in a CMIS AtomPub response is represented as an Atom link with relationship alternate.
The following attributes SHOULD be included on the link element:
The following attributes MAY be included
The content stream for a document SHOULD be referenced by the content src attribute as well as the edit-media link relation.
A CMIS Repository MAY use different URIs for both content src attribute and the edit-media link relation for the same content stream.
The following attributes SHOULD be included on the link element:
For paging, please see the AtomPub RFC. CMIS leverages first, next, previous, and last link relations to express paging.
If the repository can include the number of items (numItems in CMIS Domain Model) in a feed, then the repository SHOULD include the cmisra:numItems extension element in the feed.
The following services are not exposed in this binding:
This service is exposed from the domain model in the RESTful Atom Binding. However, it is not as straightforward. To remove a policy from an object, one must do:
This is also the only case in the RESTful Atom Binding where an URI in a collection (policies) is specific to that collection.
CMIS changeTokens are represented as Entity Tags and follow HTTP’s use of Entity Tags. CMIS server implementations SHOULD support Entity Tags. ChangeTokens are also provided as properties and SHOULD be provided when the object is included inside an atom entry or feed.
Repositories MAY support HTTP Range requests on Content Streams.
The repository MAY support the HTTP OPTIONS method on all the resources defined in this specification. If the repository supports OPTIONS, then the repository MUST at least return the HTTP methods specified for that resource in the Allow header.
Please see the HTTP specification for more information on the HTTP status codes. These are provided as guidance from the HTTP specification. If any conflict arises, the HTTP specification is authoritative.
The following listing defines the HTTP status codes that repositories MUST return for the various common exceptions defined in CMIS Domain Model.
CMIS Services Exception HTTP Status Code
invalidArgument 400
objectNotFound 404
permissionDenied 403
notSupported 405
runtime 500
constraint 409
filterNotValid 400
streamNotSupported 403
storage 500
contentAlreadyExists 409
versioning 409
updateConflict 409
nameConstraintViolation 409
Please see RFC2616 Section 10 for more information.
CMIS introduces new media types for:
In addition to those media types specified by CMIS, CMIS also leverages these media types:
Media Type: application/cmisatom+xml
Starting tag: atom:feed or atom:entry
Type Parameters:
This allows clients to differentiate between repositories that require atom media type with CMIS extensions (application/cmisatom+xml) for creation and repositories that allow generic atom media type without CMIS extensions (application/atom+xml).
This is only used for CMIS repositories to advertise what media types are accepted for adding to a collection (e.g., creating resources in a collection). As such CMIS does not require specifying whether an atom feed has CMIS markup. It is included to be consistent with the Atom media type.
All feeds and entries from a CMIS repository MUST utilize the atom media type for exposing Atom resources. Please see the individual resources for more information on the media type. This provides the interoperability with Atom clients.
Example:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<atom:entry xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<atom:author>
<atom:name>Al Brown</atom:name>
</atom:author>
<atom:id>urn:uuid:efe0542e-8933-4b3e-93f2-4d1caa3fc2d9</atom:id>
<atom:title type="text">CMIS Example Document</atom:title>
<atom:updated>2010-01-25T10:20:58.318-08:00</atom:updated>
<atom:content type="text">some text</atom:content>
<cmisra:object>
<cmis:properties>
<cmis:propertyId localName="rep-cmis:objectTypeId" propertyDefinitionId="cmis:objectTypeId">
<cmis:value>invoice</cmis:value>
</cmis:propertyId>
<cmis:propertyString localName="rep-cmis:name" propertyDefinitionId="cmis:name">
<cmis:value>CMIS Example Document</cmis:value>
</cmis:propertyString>
</cmis:properties>
</cmisra:object>
</atom:entry>
Media Type: application/cmisquery+xml
Starting tag: cmis:query
This document contains the representation of a query to be executed in a CMIS repository.
Example:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<cmis:query xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<cmis:statement>SELECT * FROM cmis:document</cmis:statement>
<cmis:searchAllVersions>true</cmis:searchAllVersions>
<cmis:includeAllowableActions>false</cmis:includeAllowableActions>
<cmis:includeRelationships>none</cmis:includeRelationships>
<cmis:renditionFilter>*</cmis:renditionFilter>
<cmis:maxItems>50</cmis:maxItems>
<cmis:skipCount>0</cmis:skipCount>
</cmis:query>
Please also see the example documents included with the schema.
Media Type: application/cmisallowableactions+xml
Starting tag: cmis:allowableActions
This document contains the representation of the allowable actions the user may perform on the referenced object.
Example:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<cmis:allowableActions xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<cmis:canDeleteObject>true</cmis:canDeleteObject>
<cmis:canUpdateProperties>true</cmis:canUpdateProperties>
<cmis:canGetProperties>true</cmis:canGetProperties>
<cmis:canGetObjectRelationships>true</cmis:canGetObjectRelationships>
<cmis:canGetObjectParents>true</cmis:canGetObjectParents>
<cmis:canMoveObject>true</cmis:canMoveObject>
<cmis:canDeleteContentStream>true</cmis:canDeleteContentStream>
<cmis:canCheckOut>true</cmis:canCheckOut>
<cmis:canCancelCheckOut>true</cmis:canCancelCheckOut>
<cmis:canCheckIn>true</cmis:canCheckIn>
<cmis:canSetContentStream>true</cmis:canSetContentStream>
<cmis:canGetAllVersions>true</cmis:canGetAllVersions>
<cmis:canAddObjectToFolder>true</cmis:canAddObjectToFolder>
<cmis:canRemoveObjectFromFolder>true</cmis:canRemoveObjectFromFolder>
<cmis:canGetContentStream>true</cmis:canGetContentStream>
<cmis:canApplyPolicy>true</cmis:canApplyPolicy>
<cmis:canGetAppliedPolicies>true</cmis:canGetAppliedPolicies>
<cmis:canRemovePolicy>true</cmis:canRemovePolicy>
<cmis:canCreateDocument>true</cmis:canCreateDocument>
</cmis:allowableActions>
Please also see the example documents included with the schema.
Media Type: application/cmistree+xml
Starting tag: atom:feed
This document is an atom feed (application/atom+xml;type=feed) with CMIS markup to nest a hierarchy.
Please see Section 3.3.2.1 for more information.
Example:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<atom:feed xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<atom:title type="text">Feed for folder1</atom:title>
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:updated>2010-01-25T10:20:58.536-08:00</atom:updated>
<atom:id>urn:uuid:4a80905c-f774-4a9e-a57d-bf0dae5a796e</atom:id>
<atom:link type="application/atom+xml;type=feed" rel="self" href="http://cmisexample.oasis-open.org/rep1/cf3c076e-36e9-4ace-8fed-41e0d92dfc71/3"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1//service"/>
<atom:link type="application/atom+xml;type=entry" rel="via" href="http://cmisexample.oasis-open.org/rep1/cf3c076e-36e9-4ace-8fed-41e0d92dfc71"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/foldertree" href="http://cmisexample.oasis-open.org/rep1/cf3c076e-36e9-4ace-8fed-41e0d92dfc71/foldertree"/>
<atom:link type="application/atom+xml;type=feed" rel="down" href="http://cmisexample.oasis-open.org/rep1/cf3c076e-36e9-4ace-8fed-41e0d92dfc71/children"/>
<atom:link type="application/atom+xml;type=entry" rel="up" href="http://cmisexample.oasis-open.org/rep1/bb11830c-7d1e-4b0f-9ff2-af4857c49200"/>
<atom:entry>
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:content src="http://cmisexample.oasis-open.org/rep1/63a9c18c-5e31-4590-8462-86d181e345a4"/>
<atom:id>urn:uuid:63a9c18c-5e31-4590-8462-86d181e345a4</atom:id>
<atom:title type="text">CMIS Example Folder as Customer type</atom:title>
<atom:updated>2010-01-25T10:20:58.536-08:00</atom:updated>
<atom:link rel="self" href="http://cmisexample.oasis-open.org/rep1/63a9c18c-5e31-4590-8462-86d181e345a4"/>
<atom:link rel="edit" href="http://cmisexample.oasis-open.org/rep1/63a9c18c-5e31-4590-8462-86d181e345a4"/>
<atom:link type="application/cmis+xml;type=allowableActions" rel="http://docs.oasis-open.org/ns/cmis/link/200908/allowableactions" href="http://cmisexample.oasis-open.org/rep1/63a9c18c-5e31-4590-8462-86d181e345a4/allowableactions"/>
<atom:link type="application/atom+xml;type=entry" rel="describedby" href="http://cmisexample.oasis-open.org/rep1/63a9c18c-5e31-4590-8462-86d181e345a4/type"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1//service"/>
<atom:published>2010-01-25T10:20:58.536-08:00</atom:published>
<atom:summary type="html">HTML summary of Entry 63a9c18c-5e31-4590-8462-86d181e345a4</atom:summary>
<atom:link type="application/atom+xml;type=entry" rel="up" href="http://cmisexample.oasis-open.org/rep1/63a9c18c-5e31-4590-8462-86d181e345a4/up"/>
<atom:link type="application/atom+xml;type=feed" rel="down" href="http://cmisexample.oasis-open.org/rep1/63a9c18c-5e31-4590-8462-86d181e345a4/children"/>
<atom:link type="application/cmistree+xml" rel="down" href="http://cmisexample.oasis-open.org/rep1/63a9c18c-5e31-4590-8462-86d181e345a4/tree"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/foldertree" href="http://cmisexample.oasis-open.org/rep1/63a9c18c-5e31-4590-8462-86d181e345a4/foldertree"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/relationships" href="http://cmisexample.oasis-open.org/rep1/63a9c18c-5e31-4590-8462-86d181e345a4/relationships"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/policies" href="http://cmisexample.oasis-open.org/rep1/63a9c18c-5e31-4590-8462-86d181e345a4/policies"/>
<atom:link type="application/cmisacl+xml" rel="http://docs.oasis-open.org/ns/cmis/link/200908/acl" href="http://cmisexample.oasis-open.org/rep1/63a9c18c-5e31-4590-8462-86d181e345a4/acl"/>
<cmisra:object>
<cmis:properties>
<cmis:propertyId localName="rep-cmis:objectId" propertyDefinitionId="cmis:objectId">
<cmis:value>63a9c18c-5e31-4590-8462-86d181e345a4</cmis:value>
</cmis:propertyId>
</cmis:properties>
</cmisra:object>
<cmisra:pathSegment>customer</cmisra:pathSegment>
<cmisra:children>
<atom:feed>
<atom:title type="text">CMIS Example Folder as Customer type</atom:title>
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:updated>2010-01-25T10:20:58.536-08:00</atom:updated>
<atom:id>urn:uuid:51b5c0cd-e473-4492-82b3-666fbf913cf0</atom:id>
<atom:link type="application/atom+xml;type=feed" rel="self" href="http://cmisexample.oasis-open.org/rep1/63a9c18c-5e31-4590-8462-86d181e345a4/3"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1//service"/>
<atom:link type="application/atom+xml;type=entry" rel="via" href="http://cmisexample.oasis-open.org/rep1/63a9c18c-5e31-4590-8462-86d181e345a4"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/foldertree" href="http://cmisexample.oasis-open.org/rep1/63a9c18c-5e31-4590-8462-86d181e345a4/foldertree"/>
<atom:link type="application/atom+xml;type=feed" rel="down" href="http://cmisexample.oasis-open.org/rep1/63a9c18c-5e31-4590-8462-86d181e345a4/children"/>
<atom:link type="application/atom+xml;type=entry" rel="up" href="http://cmisexample.oasis-open.org/rep1/cf3c076e-36e9-4ace-8fed-41e0d92dfc71"/>
<atom:entry>
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:content src="http://cmisexample.oasis-open.org/rep1/20cb7e68-0a7e-46ea-87e0-09fb8d85286e"/>
<atom:id>urn:uuid:20cb7e68-0a7e-46ea-87e0-09fb8d85286e</atom:id>
<atom:title type="text">CMIS Example Doc as Invoice type</atom:title>
<atom:updated>2010-01-25T10:20:58.536-08:00</atom:updated>
<atom:link rel="self" href="http://cmisexample.oasis-open.org/rep1/20cb7e68-0a7e-46ea-87e0-09fb8d85286e"/>
<atom:link rel="edit" href="http://cmisexample.oasis-open.org/rep1/20cb7e68-0a7e-46ea-87e0-09fb8d85286e"/>
<atom:link type="application/cmis+xml;type=allowableActions" rel="http://docs.oasis-open.org/ns/cmis/link/200908/allowableactions" href="http://cmisexample.oasis-open.org/rep1/20cb7e68-0a7e-46ea-87e0-09fb8d85286e/allowableactions"/>
<atom:link type="application/atom+xml;type=entry" rel="describedby" href="http://cmisexample.oasis-open.org/rep1/20cb7e68-0a7e-46ea-87e0-09fb8d85286e/type"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1//service"/>
<atom:published>2010-01-25T10:20:58.536-08:00</atom:published>
<atom:summary type="html">HTML summary of Entry 20cb7e68-0a7e-46ea-87e0-09fb8d85286e</atom:summary>
<atom:link rel="edit-media" href="http://cmisexample.oasis-open.org/rep1/20cb7e68-0a7e-46ea-87e0-09fb8d85286e/edit-media"/>
<atom:link rel="alternate" href="http://cmisexample.oasis-open.org/rep1/20cb7e68-0a7e-46ea-87e0-09fb8d85286e/alternate"/>
<atom:link type="application/atom+xml;type=feed" rel="up" href="http://cmisexample.oasis-open.org/rep1/20cb7e68-0a7e-46ea-87e0-09fb8d85286e/parents"/>
<atom:link type="application/atom+xml;type=feed" rel="version-history" href="http://cmisexample.oasis-open.org/rep1/20cb7e68-0a7e-46ea-87e0-09fb8d85286e/allversions"/>
<atom:link type="application/atom+xml;type=entry" rel="current-version" href="http://cmisexample.oasis-open.org/rep1/20cb7e68-0a7e-46ea-87e0-09fb8d85286e/latest"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/relationships" href="http://cmisexample.oasis-open.org/rep1/20cb7e68-0a7e-46ea-87e0-09fb8d85286e/relationships"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/policies" href="http://cmisexample.oasis-open.org/rep1/20cb7e68-0a7e-46ea-87e0-09fb8d85286e/policies"/>
<atom:link type="application/cmisacl+xml" rel="http://docs.oasis-open.org/ns/cmis/link/200908/acl" href="http://cmisexample.oasis-open.org/rep1/20cb7e68-0a7e-46ea-87e0-09fb8d85286e/acl"/>
<cmisra:object>
<cmis:properties>
<cmis:propertyId localName="rep-cmis:objectId" propertyDefinitionId="cmis:objectId">
<cmis:value>20cb7e68-0a7e-46ea-87e0-09fb8d85286e</cmis:value>
</cmis:propertyId>
</cmis:properties>
</cmisra:object>
<cmisra:pathSegment>invoice1.pdf</cmisra:pathSegment>
</atom:entry>
</atom:feed>
</cmisra:children>
</atom:entry>
<atom:entry>
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:content src="http://cmisexample.oasis-open.org/rep1/1de1d476-11fb-47bf-b136-8a8d0b4b030a"/>
<atom:id>urn:uuid:1de1d476-11fb-47bf-b136-8a8d0b4b030a</atom:id>
<atom:title type="text">CMIS Example Doc as Invoice type</atom:title>
<atom:updated>2010-01-25T10:20:58.568-08:00</atom:updated>
<atom:link rel="self" href="http://cmisexample.oasis-open.org/rep1/1de1d476-11fb-47bf-b136-8a8d0b4b030a"/>
<atom:link rel="edit" href="http://cmisexample.oasis-open.org/rep1/1de1d476-11fb-47bf-b136-8a8d0b4b030a"/>
<atom:link type="application/cmis+xml;type=allowableActions" rel="http://docs.oasis-open.org/ns/cmis/link/200908/allowableactions" href="http://cmisexample.oasis-open.org/rep1/1de1d476-11fb-47bf-b136-8a8d0b4b030a/allowableactions"/>
<atom:link type="application/atom+xml;type=entry" rel="describedby" href="http://cmisexample.oasis-open.org/rep1/1de1d476-11fb-47bf-b136-8a8d0b4b030a/type"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1//service"/>
<atom:published>2010-01-25T10:20:58.568-08:00</atom:published>
<atom:summary type="html">HTML summary of Entry 1de1d476-11fb-47bf-b136-8a8d0b4b030a</atom:summary>
<atom:link rel="edit-media" href="http://cmisexample.oasis-open.org/rep1/1de1d476-11fb-47bf-b136-8a8d0b4b030a/edit-media"/>
<atom:link rel="alternate" href="http://cmisexample.oasis-open.org/rep1/1de1d476-11fb-47bf-b136-8a8d0b4b030a/alternate"/>
<atom:link type="application/atom+xml;type=feed" rel="up" href="http://cmisexample.oasis-open.org/rep1/1de1d476-11fb-47bf-b136-8a8d0b4b030a/parents"/>
<atom:link type="application/atom+xml;type=feed" rel="version-history" href="http://cmisexample.oasis-open.org/rep1/1de1d476-11fb-47bf-b136-8a8d0b4b030a/allversions"/>
<atom:link type="application/atom+xml;type=entry" rel="current-version" href="http://cmisexample.oasis-open.org/rep1/1de1d476-11fb-47bf-b136-8a8d0b4b030a/latest"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/relationships" href="http://cmisexample.oasis-open.org/rep1/1de1d476-11fb-47bf-b136-8a8d0b4b030a/relationships"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/policies" href="http://cmisexample.oasis-open.org/rep1/1de1d476-11fb-47bf-b136-8a8d0b4b030a/policies"/>
<atom:link type="application/cmisacl+xml" rel="http://docs.oasis-open.org/ns/cmis/link/200908/acl" href="http://cmisexample.oasis-open.org/rep1/1de1d476-11fb-47bf-b136-8a8d0b4b030a/acl"/>
<cmisra:object>
<cmis:properties>
<cmis:propertyId localName="rep-cmis:objectId" propertyDefinitionId="cmis:objectId">
<cmis:value>1de1d476-11fb-47bf-b136-8a8d0b4b030a</cmis:value>
</cmis:propertyId>
</cmis:properties>
</cmisra:object>
<cmisra:pathSegment>invoice3.pdf</cmisra:pathSegment>
</atom:entry>
</atom:feed>
Note: This media type is used on links with relation down (see section 3.2.3.2 Hierarchy Navigation Internet Draft Link Relations). When the individual resources are returned by the CMIS repository they will use the atom media type (application/atom+xml)
Please also see the example documents included with the schema.
Media Type: application/cmisacl+xml
Starting tag: cmis:acl
This document specifies an Access Control List based on the schema in CMIS Domain Model.
Example:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<cmis:acl xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<cmis:permission>
<cmis:principal>
<cmis:principalId>Al Brown</cmis:principalId>
</cmis:principal>
<cmis:permission>cmis:read</cmis:permission>
<cmis:permission>cmis:write</cmis:permission>
<cmis:permission>cmis:all</cmis:permission>
<cmis:permission>publish</cmis:permission>
<cmis:direct>true</cmis:direct>
</cmis:permission>
</cmis:acl>
Please also see the example documents included with the schema.
This element is included inside the app:collection element. This specifies the cmis collection type.
This element is included inside the app:workspace element. This specifies information about the CMIS repository.
This element is included inside the app:workspace element. This specifies information about URI templates
This element is included inside the atom:feed element. This specifies the number of items in the feed.
This element is included inside the atom:entry element. This includes the children of the atom entry. This element MUST include an atom:feed element.
This element is included inside the atom:entry element for CMIS Document, Folder, Relationship and Policy objects. This specifies the CMIS object information for the atom entry.
This element is included inside the atom:entry element for CMIS Type Definitions that are filable. This specifies the pathSegment for this object in the folder representing the feed.
This element is included inside the atom:entry element. This specifies the relative pathSegment for the object in that particular folder. This MUST be used only inside an object parents feed.
This element is included inside the atom:entry element for CMIS Type Definitions. This specifies the type definition the atom entry represents.
This element specifies the content of the atom:entry element. The content is base64 encoded in the base64 element. The elements of a cmisra:content element are:
This element MUST take precedence over atom:content on submission of an atom entry to a repository.
A repository MUST use the atom:content element to return back to the client the content of the document.
Note: This is required when the client has an XML document stored that is might not be well formed and thus would not be able to be included inside atom:content element.
These attributes are in the CMIS RestAtom namespace (cmisra).
This attribute is used on the atom:link element to specify the cmis id of the resource. This attribute SHOULD be on all link relations that point to a CMIS object.
This attribute MAY also be on cmisra:type. The value of the attribute on cmis:type MUST be the same as the type definition id.
Example:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<atom:link xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/" type="application/atom+xml;type=feed" rel="down" href="http://cmisexample.oasis-open.org/rep1//children/e170da7d-d322-472d-b1eb-67bdb1ec18ca/1" cmisra:id="e170da7d-d322-472d-b1eb-67bdb1ec18ca"/>
Please also see the example documents included with the schema.
This attribute is used on the atom:link element with relation alternate to specify the renditionKind of the resource. This attribute SHOULD be on all link elements with relation alternate that are a CMIS rendition.
Example:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<atom:link xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/" type="text/html" rel="alternate" href="http://cmisexample.oasis-open.org/rep1//rendition/e170da7d-d322-472d-b1eb-67bdb1ec18ca/1" cmisra:renditionKind="cmis:thumbnail"/>
Please also see the example documents included with the schema.
The listing below outlines the different link relation 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.
The link element with a specified relation MUST be included if client can perform the operation. The repository SHOULD 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.
Links may have the following attribute in addition to the ones specified by Atom and Atom Publishing Protocol:
These are the link relation types specified by CMIS:
Existing link relations should be used where appropriate by the implementation. In addition, the following link relations are leveraged for the CMIS specification:
Please see http://www.iana.org/assignments/link-relations/link-relations.xhtml for more information on these link relations.
CMIS leverages the following link relations:
CMIS leverages the following link relations from the Internet Draft:
CMIS defines the following link relations:
o http://docs.oasis-open.org/ns/cmis/link/200908/acl
§ Service: getACL
§ Media Type: application/cmisacl+xml
o http://docs.oasis-open.org/ns/cmis/link/200908/changes
For all Atom Resources used in this specification, the following MUST be followed:
Any feed MUST be a valid Atom Feed document and conform to the guidelines below for cmis objects:
Any feed MUST be a valid Atom Feed document and conform to the guidelines below for cmis types:
If on the root type, all fields are repository specific.
Ordering of entries in a feed is repository-specific if orderBy argument is not specified. If orderBy argument is specified, the order of the entries in the feed SHOULD conform to the ordering specified by the orderBy argument.
Note: Please see feedvalidator.org to validate Atom compliance.
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 for a cmis object:
For Documents that support Content Streams:
The repository SHOULD use the atom:content/src attribute to point to the content stream. The client SHOULD use cmisra:content if the content is not well-formed or would have trouble fitting inside an atom:content element. The repository MUST use the cmisra:content element if provided by the client over the atom:content element.
Other Objects (Folders, Relationships, and other Document Types that do not support Content Streams, etc):
The repository MUST comply with the atom specification and have an atom:content element. This is repository specific. Any value in the content field MUST be ignored if the atom entry represents a non-document object by the CMIS repository when the atom entry is POST’ed to a collection or sent to the repository via a PUT.
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.
At any point where an Atom document of CMIS Type is sent or returned, it must be a valid Atom Entry document and conform to the guidelines below for a cmis type definition:
Any atom element that is not specified is repository-specific.
The repository SHOULD NOT provide any links to hierarchical objects if those capabilities are not supported with the exception of getTypeDescendants which is required
For atom entries that are hierarchical such as Folder Tree or Descendants, the repository MUST populate a cmisra:children element in the atom:entry with the enclosing feed of its direct children. This pattern continues until the depth is satisfied.
The cmisra:children element MUST include an atom:feed element that contains the children entries of this resource.
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.
For Example, here is a minimal Atom Entry with CMIS Children Extension Element:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<atom:entry xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<atom:author>
<atom:name>Al Brown</atom:name>
</atom:author>
<atom:content src="http://cmisexample.oasis-open.org/rep1/af1d8c7f-b554-4dfb-bfe1-1f41e4b34fef"/>
<atom:id>urn:uuid:af1d8c7f-b554-4dfb-bfe1-1f41e4b34fef</atom:id>
<atom:title type="text">CMIS Example Folder as Customer type</atom:title>
<atom:updated>2010-01-25T10:20:57.818-08:00</atom:updated>
<cmisra:object>
<cmis:properties>
<cmis:propertyId localName="rep-cmis:objectId" propertyDefinitionId="cmis:objectId">
<cmis:value>af1d8c7f-b554-4dfb-bfe1-1f41e4b34fef</cmis:value>
</cmis:propertyId>
</cmis:properties>
</cmisra:object>
<cmisra:pathSegment>customer</cmisra:pathSegment>
<cmisra:children>
<atom:feed>
<atom:title type="text">CMIS Example Folder as Customer type</atom:title>
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:updated>2010-01-25T10:20:57.818-08:00</atom:updated>
<atom:id>urn:uuid:ce2d65af-b246-454b-90ff-0986d9b05178</atom:id>
<atom:link type="application/atom+xml;type=feed" rel="self" href="http://cmisexample.oasis-open.org/rep1/af1d8c7f-b554-4dfb-bfe1-1f41e4b34fef/3"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1//service"/>
<atom:link type="application/atom+xml;type=entry" rel="via" href="http://cmisexample.oasis-open.org/rep1/af1d8c7f-b554-4dfb-bfe1-1f41e4b34fef"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/foldertree" href="http://cmisexample.oasis-open.org/rep1/af1d8c7f-b554-4dfb-bfe1-1f41e4b34fef/foldertree"/>
<atom:link type="application/atom+xml;type=feed" rel="down" href="http://cmisexample.oasis-open.org/rep1/af1d8c7f-b554-4dfb-bfe1-1f41e4b34fef/children"/>
<atom:link type="application/atom+xml;type=entry" rel="up" href="http://cmisexample.oasis-open.org/rep1/2eb09309-58f7-4627-b735-4d5cf4ba6554"/>
<atom:entry>
<atom:author>
<atom:name>Al Brown</atom:name>
</atom:author>
<atom:content src="http://cmisexample.oasis-open.org/rep1/af1d8c7f-b554-4dfb-bfe1-1f41e4b34fef"/>
<atom:id>urn:uuid:af1d8c7f-b554-4dfb-bfe1-1f41e4b34fef</atom:id>
<atom:title type="text">CMIS Example Child of Folder</atom:title>
<atom:updated>2010-01-25T10:20:57.818-08:00</atom:updated>
<cmisra:object>
<cmis:properties>
<cmis:propertyId localName="rep-cmis:objectId" propertyDefinitionId="cmis:objectId">
<cmis:value>af1d8c7f-b554-4dfb-bfe1-1f41e4b34fef</cmis:value>
</cmis:propertyId>
</cmis:properties>
</cmisra:object>
<cmisra:pathSegment>document</cmisra:pathSegment>
</atom:entry>
</atom:feed>
</cmisra:children>
</atom:entry>
Please also see the example documents included with the schema.
The AtomPub Service Document contains the set of repositories that are available. Each repository is mapped to a app:workspace element in the AtomPub Service document.
CMIS Services exposed:
GET: getRepositories, getRepositoryInfo
Media Type: application/atomsvc+xml
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.
The service document will be available from Atom Entry and Atom Feed documents via a link relationship, service. That AtomPub service document MUST contain only one workspace element which MUST be the workspace representing the repository containing the Atom Entry or Atom Feed document.
A workspace element for a CMIS repository MUST have a collection element for each of following collections: Each collection MUST also contain a cmisra:collectionType element with the given value:
The workspace element SHOULD contain these collections if the repository supports this functionality:
The repository MUST include the URI templates in the workspace elements.
The workspace element MUST also contain the following link element with the relation:
The workspace element MUST contain the following link elements of the following relations for those services which are supported by the repository:
The workspace element may include app:collection element 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.
CMIS defines the following URI Templates:
Repositories MUST provide the following URI Templates:
Repositories MUST provide the URI Template query if the repository supports query.
Repositories MAY extend that set of templates. Those URI Template Types will be repository specific. Repositories MAY have more than one entry per URI Template type if the entries have different media types.
URI Templates are simple replacement of the template parameter with the specified value. If a client does not want to specify a value for some of these variables, then the client MUST substitute an empty string for the variable.
For example, if the URI template that supports the variable {id} is
http://example.org/rep1/getbyid/{id}
If the client wants to find the entry for an object with an id of ‘obj_1’ then the URI would be:
http://example.org/rep1/getbyid/obj_1
Arguments that are substituted for URI template parameters MUST be percent escaped according to RFC3986. Please see that RFC for more information.
All variables MUST be in the template.
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>
Example of URI Template element in an AtomPub Workspace Element:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<cmisra:uritemplate xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<cmisra:template>http://cmisexample.oasis-open.org/rep1/objectbyid/{id}?filter={filter}&includeAllowableActions={includeAllowableActions}&includePolicyIds={includePolicyIds}&includeRelationships={includeRelationships}&includeACL={includeACL}</cmisra:template>
<cmisra:type>objectbyid</cmisra:type>
<cmisra:mediatype>application/atom+xml;type=entry</cmisra:mediatype>
</cmisra:uritemplate>
Please also see the example documents included with the schema.
This URI template provides a method for creating an URI that directly accesses an atom entry representing documents, folders, policies or relationship objects. See section 3.8 for more information.
Type: objectbyid
Media Type: application/atom+xml;type=entry
Service: getObjectById
Variables that are supported by the template:
Example:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<cmisra:uritemplate xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<cmisra:template>http://cmisexample.oasis-open.org/rep1/objectbyid/{id}?filter={filter}&includeAllowableActions={includeAllowableActions}&includePolicyIds={includePolicyIds}&includeRelationships={includeRelationships}&includeACL={includeACL}</cmisra:template>
<cmisra:type>objectbyid</cmisra:type>
<cmisra:mediatype>application/atom+xml;type=entry</cmisra:mediatype>
</cmisra:uritemplate>
Please also see the example documents included with the schema.
This URI template provides a method for creating an URI that directly accesses an atom entry representing documents, folders or policy objects. See section 3.8 for more information.
Type: objectbypath
Media Type: application/atom+xml;type=entry
Service: getObjectByPath
Variables that are supported by the template:
Example:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<cmisra:uritemplate xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<cmisra:template>http://cmisexample.oasis-open.org/rep1/objectbypath?p={path}&filter={filter}&includeAllowableActions={includeAllowableActions}&includePolicyIds={includePolicyIds}&includeRelationships={includeRelationships}&includeACL={includeACL}</cmisra:template>
<cmisra:type>objectbypath</cmisra:type>
<cmisra:mediatype>application/atom+xml;type=entry</cmisra:mediatype>
</cmisra:uritemplate>
Please also see the example documents included with the schema.
Type: query
Media Type: application/atom+xml;type=feed
Service: query
Variables that are supported by the template:
Example:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<cmisra:uritemplate xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<cmisra:template>http://cmisexample.oasis-open.org/rep1/query?q={q}&searchAllVersions={searchAllVersions}&maxItems={maxItems}&skipCount={skipCount}&includeAllowableActions={includeAllowableActions}=&includeRelationships={includeRelationships}</cmisra:template>
<cmisra:type>query</cmisra:type>
<cmisra:mediatype>application/atom+xml;type=feed</cmisra:mediatype>
</cmisra:uritemplate>
Please also see the example documents included with the schema.
Type: typebyid
Media Type: application/atom+xml;type=entry
Service: getTypeDefinition
Variables that are supported by the template:
Example:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<cmisra:uritemplate xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<cmisra:template>http://cmisexample.oasis-open.org/rep1/type?id={id}</cmisra:template>
<cmisra:type>query</cmisra:type>
<cmisra:mediatype>application/atom+xml;type=entry</cmisra:mediatype>
</cmisra:uritemplate>
Please also see the example documents included with the schema.
This retrieves the AtomPub Service document for a specified repository. This exposes the capabilities defined in getRepositories and getRepositoryInfo in the Domain Model.
The optional argument MAY be specified:
These are the collections that are included on an AtomPub Service document in the workspace element.
For any HTTP verb not specified on a resource,each implementation MAY chose to implement that HTTP verb in a repository-specific manner.
This is a collection described in the service document. Please see Folder Children.
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.
CMIS Services exposed via HTTP verbs:
POST: Query
Media Type: application/atom+xml;type=feed
Accept:
Link Relations on resulting feed from Query Collection:
The following CMIS Atom extension element MAY be included inside the atom feed:
The following CMIS Atom extension element MUST be included inside the atom entries:
This collection MUST accept CMIS Query documents (application/cmisquery+xml).
Upon submission (creation) of a query document, a response must be returned with a Location header representing the feed for that query. If the query cannot be performed and an atom feed returned, the repository MUST return the appropriate HTTP status code. In addition, the server SHOULD return the feed directly. If the server does so, the server should also return the Content-Location header.
The feed returned MUST contain a set of atom entries representing the result set from the query.
The atom entries should contain the bare minimum necessary for Atom compliance [RFC4287]. The atom entries MUST contain the CMIS extension element (cmisra:object) containing the properties specified by the query in the select clause of the query statement.
If all the selected properties can be mapped to the same type reference, then the repository MAY include additional information in the atom entry.
Please see http://tools.ietf.org/html/rfc5023#section-5.3.
Link Relations on resulting feed from POST to Query Collection:
Example client request:
Host: example.org
Content-Length: 756
Content-Type: application/cmisquery+xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<cmis:query xmlns:app="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<cmis:statement>SELECT cmis:objectId FROM cmis:document</cmis:statement>
<cmis:searchAllVersions>true</cmis:searchAllVersions>
<cmis:includeAllowableActions>false</cmis:includeAllowableActions>
<cmis:includeRelationships>none</cmis:includeRelationships>
<cmis:renditionFilter>*</cmis:renditionFilter>
<cmis:maxItems>50</cmis:maxItems>
<cmis:skipCount>0</cmis:skipCount>
</cmis:query>
Example server response:
Date: Mon, 25 Jan 2010 10:21:00 -0800
Content-Length: 1830
Content-Type: application/atom+xml;type=feed
Content-Location: http://cmisexample.oasis-open.org/rep1/queryresult/44ce5b47-ebc3-4513-86e0-d3f46c77d0a8
Location: http://cmisexample.oasis-open.org/rep1/queryresult/44ce5b47-ebc3-4513-86e0-d3f46c77d0a8
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<atom:feed xmlns:app="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<atom:title type="text">CMIS Query Result for SELECT cmis:objectId FROM cmis:document</atom:title>
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:updated>2010-01-25T10:21:00.427-08:00</atom:updated>
<atom:id>urn:uuid:811b1b9b-80f5-4788-b46c-aa77564e294b</atom:id>
<atom:link type="application/atom+xml;type=feed" rel="self" href="http://cmisexample.oasis-open.org/rep1/11355977-434b-4e71-b83a-77dea9878e04/3"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1//service"/>
<atom:entry>
<atom:author>
<atom:name>Al Brown</atom:name>
</atom:author>
<atom:content src="http://cmisexample.oasis-open.org/rep1/a3386ea0-0477-4a74-96bd-70d3da1c483a"/>
<atom:id>urn:uuid:a3386ea0-0477-4a74-96bd-70d3da1c483a</atom:id>
<atom:title type="text">Resulting Document</atom:title>
<atom:updated>2010-01-25T10:21:00.427-08:00</atom:updated>
<cmisra:object>
<cmis:properties>
<cmis:propertyId queryName="cmis:objectId" localName="rep-cmis:objectId" propertyDefinitionId="cmis:objectId">
<cmis:value>a3386ea0-0477-4a74-96bd-70d3da1c483a</cmis:value>
</cmis:propertyId>
</cmis:properties>
</cmisra:object>
</atom:entry>
</atom:feed>
Please also see the example documents included with the schema.
This is a collection described in the service document that contains the private working copies (PWCs) of the checkedout documents in the repository.
CMIS Services:
GET: getCheckedOutDocs
POST: checkOut
Media Type: application/atom+xml;type=feed
Accept:
Link Relations:
The following CMIS Atom extension element MAY be included inside the atom feed:
The following CMIS Atom extension element MUST be included inside the atom entries:
The following arguments may be supplied. Please see the domain model for more information:
When an atom entry is POST’ed to this collection, the atom entry will be checked out. A Content-Location header MUST be returned containing the location of the private working copy.
Example client request:
Host: example.org
Content-Length: 1044
Content-Type: application/atom+xml;type=entry
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<atom:entry xmlns:app="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<atom:author>
<atom:name>Al Brown</atom:name>
</atom:author>
<atom:content src="http://cmisexample.oasis-open.org/rep1/8d32d716-701b-4491-84e8-ad57c8230940"/>
<atom:id>urn:uuid:8d32d716-701b-4491-84e8-ad57c8230940</atom:id>
<atom:title type="text">CMIS Example Document to checkout</atom:title>
<atom:updated>2010-01-25T10:21:00.380-08:00</atom:updated>
<cmisra:object>
<cmis:properties>
<cmis:propertyId localName="rep-cmis:objectId" propertyDefinitionId="cmis:objectId">
<cmis:value>8d32d716-701b-4491-84e8-ad57c8230940</cmis:value>
</cmis:propertyId>
</cmis:properties>
</cmisra:object>
</atom:entry>
Example server response:
Date: Mon, 25 Jan 2010 10:21:00 -0800
Content-Length: 7846
Content-Type: application/atom+xml;type=entry
Content-Location: http://cmisexample.oasis-open.org/rep1/6cce57fc-4e31-491c-8fab-4aa6e6797dbe
Location: http://cmisexample.oasis-open.org/rep1/6cce57fc-4e31-491c-8fab-4aa6e6797dbe
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<atom:entry xmlns:app="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:content src="http://cmisexample.oasis-open.org/rep1/6cce57fc-4e31-491c-8fab-4aa6e6797dbe"/>
<atom:id>urn:uuid:6cce57fc-4e31-491c-8fab-4aa6e6797dbe</atom:id>
<atom:title type="text">CMIS Example Child of Folder</atom:title>
<atom:updated>2010-01-25T10:21:00.396-08:00</atom:updated>
<atom:link rel="self" href="http://cmisexample.oasis-open.org/rep1/6cce57fc-4e31-491c-8fab-4aa6e6797dbe"/>
<atom:link rel="edit" href="http://cmisexample.oasis-open.org/rep1/6cce57fc-4e31-491c-8fab-4aa6e6797dbe"/>
<atom:link type="application/cmis+xml;type=allowableActions" rel="http://docs.oasis-open.org/ns/cmis/link/200908/allowableactions" href="http://cmisexample.oasis-open.org/rep1/6cce57fc-4e31-491c-8fab-4aa6e6797dbe/allowableactions"/>
<atom:link type="application/atom+xml;type=entry" rel="describedby" href="http://cmisexample.oasis-open.org/rep1/6cce57fc-4e31-491c-8fab-4aa6e6797dbe/type"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1//service"/>
<atom:published>2010-01-25T10:21:00.396-08:00</atom:published>
<atom:summary type="html">HTML summary of Entry 6cce57fc-4e31-491c-8fab-4aa6e6797dbe</atom:summary>
<atom:link rel="edit-media" href="http://cmisexample.oasis-open.org/rep1/6cce57fc-4e31-491c-8fab-4aa6e6797dbe/edit-media"/>
<atom:link rel="alternate" href="http://cmisexample.oasis-open.org/rep1/6cce57fc-4e31-491c-8fab-4aa6e6797dbe/alternate"/>
<atom:link type="application/atom+xml;type=feed" rel="up" href="http://cmisexample.oasis-open.org/rep1/6cce57fc-4e31-491c-8fab-4aa6e6797dbe/parents"/>
<atom:link type="application/atom+xml;type=feed" rel="version-history" href="http://cmisexample.oasis-open.org/rep1/6cce57fc-4e31-491c-8fab-4aa6e6797dbe/allversions"/>
<atom:link type="application/atom+xml;type=entry" rel="current-version" href="http://cmisexample.oasis-open.org/rep1/6cce57fc-4e31-491c-8fab-4aa6e6797dbe/latest"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/relationships" href="http://cmisexample.oasis-open.org/rep1/6cce57fc-4e31-491c-8fab-4aa6e6797dbe/relationships"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/policies" href="http://cmisexample.oasis-open.org/rep1/6cce57fc-4e31-491c-8fab-4aa6e6797dbe/policies"/>
<atom:link type="application/cmisacl+xml" rel="http://docs.oasis-open.org/ns/cmis/link/200908/acl" href="http://cmisexample.oasis-open.org/rep1/6cce57fc-4e31-491c-8fab-4aa6e6797dbe/acl"/>
<atom:link type="application/atom+xml;type=feed" rel="working-copy" href="http://cmisexample.oasis-open.org/rep1/6cce57fc-4e31-491c-8fab-4aa6e6797dbe/pwc"/>
<cmisra:object>
<cmis:properties>
<cmis:propertyId localName="rep-cmis:objectId" propertyDefinitionId="cmis:objectId">
<cmis:value>6cce57fc-4e31-491c-8fab-4aa6e6797dbe</cmis:value>
</cmis:propertyId>
<cmis:propertyId localName="rep-cmis:objectTypeId" propertyDefinitionId="cmis:objectTypeId">
<cmis:value>customer</cmis:value>
</cmis:propertyId>
<cmis:propertyString localName="rep-cmis:name" propertyDefinitionId="cmis:name">
<cmis:value>CMIS Example Child of Folder</cmis:value>
</cmis:propertyString>
<cmis:propertyDateTime localName="rep-cmis:creationDate" propertyDefinitionId="cmis:creationDate">
<cmis:value>2010-01-25T10:21:00.396-08:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyDateTime localName="rep-cmis:lastModificationDate" propertyDefinitionId="cmis:lastModificationDate">
<cmis:value>2010-01-25T10:21:00.396-08:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyId localName="rep-cmis:baseTypeId" propertyDefinitionId="cmis:baseTypeId">
<cmis:value>cmis:document</cmis:value>
</cmis:propertyId>
<cmis:propertyString localName="rep-cmis:lastModifiedBy" propertyDefinitionId="cmis:lastModifiedBy">
<cmis:value>Al Brown</cmis:value>
</cmis:propertyString>
<cmis:propertyString localName="rep-cmis:createdBy" propertyDefinitionId="cmis:createdBy">
<cmis:value>Al Brown</cmis:value>
</cmis:propertyString>
<cmis:propertyBoolean localName="rep-cmis:isLatestVersion" propertyDefinitionId="cmis:isLatestVersion">
<cmis:value>true</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean localName="rep-cmis:isVersionSeriesCheckedOut" propertyDefinitionId="cmis:isVersionSeriesCheckedOut">
<cmis:value>true</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean localName="rep-cmis:isMajorVersion" propertyDefinitionId="cmis:isMajorVersion">
<cmis:value>false</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean localName="rep-cmis:isLatestMajorVersion" propertyDefinitionId="cmis:isLatestMajorVersion">
<cmis:value>false</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean localName="rep-cmis:isImmutable" propertyDefinitionId="cmis:isImmutable">
<cmis:value>false</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyString localName="rep-cmis:checkinComment" propertyDefinitionId="cmis:checkinComment">
<cmis:value>Checkin comment</cmis:value>
</cmis:propertyString>
<cmis:propertyString localName="rep-cmis:versionLabel" propertyDefinitionId="cmis:versionLabel">
<cmis:value>0.1</cmis:value>
</cmis:propertyString>
<cmis:propertyString localName="rep-cmis:contentStreamMimeType" propertyDefinitionId="cmis:contentStreamMimeType">
<cmis:value>text/plain</cmis:value>
</cmis:propertyString>
<cmis:propertyString localName="rep-cmis:contentStreamFileName" propertyDefinitionId="cmis:contentStreamFileName">
<cmis:value>text.txt</cmis:value>
</cmis:propertyString>
<cmis:propertyInteger localName="rep-cmis:contentStreamLength" propertyDefinitionId="cmis:contentStreamLength">
<cmis:value>4234</cmis:value>
</cmis:propertyInteger>
<cmis:propertyString displayName="Keywords for Document" localName="keywords" propertyDefinitionId="keywords">
<cmis:value>document</cmis:value>
<cmis:value>example</cmis:value>
<cmis:value>sample</cmis:value>
<cmis:value>cmis</cmis:value>
</cmis:propertyString>
<cmis:propertyId localName="rep-cmis:versionSeriesCheckedOutId" propertyDefinitionId="cmis:versionSeriesCheckedOutId">
<cmis:value>6cce57fc-4e31-491c-8fab-4aa6e6797dbe</cmis:value>
</cmis:propertyId>
<cmis:propertyString localName="rep-cmis:versionSeriesCheckedOutBy" propertyDefinitionId="cmis:versionSeriesCheckedOutBy">
<cmis:value>Al Brown</cmis:value>
</cmis:propertyString>
</cmis:properties>
</cmisra:object>
</atom:entry>
Please also see the example documents included with the schema.
This is a collection described in the service document that contains all the unfiled documents in the repository. This collection MUST be available if un-filing or multi-filing is supported by the repository.
A repository that supports un-filing MAY provide read access (GET). If read access is not provided, the repository SHOULD respond to a read attempt with the HTTP status code 405 (notSupported).
CMIS Services:
POST: removeObjectFromFolder
Media Type: application/atom+xml;type=feed
Accept:
Link Relations:
The following CMIS Atom extension element MAY be included inside the atom feed:
The following CMIS Atom extension element MUST be included inside the atom entries:
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 only.
If the Atom Entry POST’ed, does not have the CMIS extensions with a valid cmis:objectId property, the document does not exist, or the document is not in that folder, the appropriate HTTP status code MUST be returned.
This adheres to AtomPub model. Please see http://tools.ietf.org/html/rfc5023#section-5.3.
The following arguments may be supplied. Please see the domain model for more information:
Example client request:
Host: example.org
Content-Length: 1043
Content-Type: application/atom+xml;type=entry
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<atom:entry xmlns:app="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<atom:author>
<atom:name>Al Brown</atom:name>
</atom:author>
<atom:content src="http://cmisexample.oasis-open.org/rep1/12aa2bec-6f43-47d1-99ef-21797867173c"/>
<atom:id>urn:uuid:12aa2bec-6f43-47d1-99ef-21797867173c</atom:id>
<atom:title type="text">CMIS Example Document to unfiled</atom:title>
<atom:updated>2010-01-25T10:21:00.427-08:00</atom:updated>
<cmisra:object>
<cmis:properties>
<cmis:propertyId localName="rep-cmis:objectId" propertyDefinitionId="cmis:objectId">
<cmis:value>12aa2bec-6f43-47d1-99ef-21797867173c</cmis:value>
</cmis:propertyId>
</cmis:properties>
</cmisra:object>
</atom:entry>
Example server response:
Date: Mon, 25 Jan 2010 10:21:00 -0800
Content-Length: 7234
Content-Type: application/atom+xml;type=entry
Content-Location: http://cmisexample.oasis-open.org/rep1/queryresult/15118373-8911-442b-9774-da3b102f224c
Location: http://cmisexample.oasis-open.org/rep1/queryresult/15118373-8911-442b-9774-da3b102f224c
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<atom:entry xmlns:app="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:content src="http://cmisexample.oasis-open.org/rep1/15118373-8911-442b-9774-da3b102f224c"/>
<atom:id>urn:uuid:15118373-8911-442b-9774-da3b102f224c</atom:id>
<atom:title type="text">CMIS Example Document to unfiled</atom:title>
<atom:updated>2010-01-25T10:21:00.443-08:00</atom:updated>
<atom:link rel="self" href="http://cmisexample.oasis-open.org/rep1/15118373-8911-442b-9774-da3b102f224c"/>
<atom:link rel="edit" href="http://cmisexample.oasis-open.org/rep1/15118373-8911-442b-9774-da3b102f224c"/>
<atom:link type="application/cmis+xml;type=allowableActions" rel="http://docs.oasis-open.org/ns/cmis/link/200908/allowableactions" href="http://cmisexample.oasis-open.org/rep1/15118373-8911-442b-9774-da3b102f224c/allowableactions"/>
<atom:link type="application/atom+xml;type=entry" rel="describedby" href="http://cmisexample.oasis-open.org/rep1/15118373-8911-442b-9774-da3b102f224c/type"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1//service"/>
<atom:published>2010-01-25T10:21:00.443-08:00</atom:published>
<atom:summary type="html">HTML summary of Entry 15118373-8911-442b-9774-da3b102f224c</atom:summary>
<atom:link rel="edit-media" href="http://cmisexample.oasis-open.org/rep1/15118373-8911-442b-9774-da3b102f224c/edit-media"/>
<atom:link rel="alternate" href="http://cmisexample.oasis-open.org/rep1/15118373-8911-442b-9774-da3b102f224c/alternate"/>
<atom:link type="application/atom+xml;type=feed" rel="up" href="http://cmisexample.oasis-open.org/rep1/15118373-8911-442b-9774-da3b102f224c/parents"/>
<atom:link type="application/atom+xml;type=feed" rel="version-history" href="http://cmisexample.oasis-open.org/rep1/15118373-8911-442b-9774-da3b102f224c/allversions"/>
<atom:link type="application/atom+xml;type=entry" rel="current-version" href="http://cmisexample.oasis-open.org/rep1/15118373-8911-442b-9774-da3b102f224c/latest"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/relationships" href="http://cmisexample.oasis-open.org/rep1/15118373-8911-442b-9774-da3b102f224c/relationships"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/policies" href="http://cmisexample.oasis-open.org/rep1/15118373-8911-442b-9774-da3b102f224c/policies"/>
<atom:link type="application/cmisacl+xml" rel="http://docs.oasis-open.org/ns/cmis/link/200908/acl" href="http://cmisexample.oasis-open.org/rep1/15118373-8911-442b-9774-da3b102f224c/acl"/>
<cmisra:object>
<cmis:properties>
<cmis:propertyId localName="rep-cmis:objectId" propertyDefinitionId="cmis:objectId">
<cmis:value>15118373-8911-442b-9774-da3b102f224c</cmis:value>
</cmis:propertyId>
<cmis:propertyId localName="rep-cmis:objectTypeId" propertyDefinitionId="cmis:objectTypeId">
<cmis:value>customer</cmis:value>
</cmis:propertyId>
<cmis:propertyString localName="rep-cmis:name" propertyDefinitionId="cmis:name">
<cmis:value>CMIS Example Document to unfiled</cmis:value>
</cmis:propertyString>
<cmis:propertyDateTime localName="rep-cmis:creationDate" propertyDefinitionId="cmis:creationDate">
<cmis:value>2010-01-25T10:21:00.443-08:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyDateTime localName="rep-cmis:lastModificationDate" propertyDefinitionId="cmis:lastModificationDate">
<cmis:value>2010-01-25T10:21:00.443-08:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyId localName="rep-cmis:baseTypeId" propertyDefinitionId="cmis:baseTypeId">
<cmis:value>cmis:document</cmis:value>
</cmis:propertyId>
<cmis:propertyString localName="rep-cmis:lastModifiedBy" propertyDefinitionId="cmis:lastModifiedBy">
<cmis:value>Al Brown</cmis:value>
</cmis:propertyString>
<cmis:propertyString localName="rep-cmis:createdBy" propertyDefinitionId="cmis:createdBy">
<cmis:value>Al Brown</cmis:value>
</cmis:propertyString>
<cmis:propertyBoolean localName="rep-cmis:isLatestVersion" propertyDefinitionId="cmis:isLatestVersion">
<cmis:value>true</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean localName="rep-cmis:isVersionSeriesCheckedOut" propertyDefinitionId="cmis:isVersionSeriesCheckedOut">
<cmis:value>false</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean localName="rep-cmis:isMajorVersion" propertyDefinitionId="cmis:isMajorVersion">
<cmis:value>false</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean localName="rep-cmis:isLatestMajorVersion" propertyDefinitionId="cmis:isLatestMajorVersion">
<cmis:value>false</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean localName="rep-cmis:isImmutable" propertyDefinitionId="cmis:isImmutable">
<cmis:value>false</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyString localName="rep-cmis:checkinComment" propertyDefinitionId="cmis:checkinComment">
<cmis:value>Checkin comment</cmis:value>
</cmis:propertyString>
<cmis:propertyString localName="rep-cmis:versionLabel" propertyDefinitionId="cmis:versionLabel">
<cmis:value>0.1</cmis:value>
</cmis:propertyString>
<cmis:propertyString localName="rep-cmis:contentStreamMimeType" propertyDefinitionId="cmis:contentStreamMimeType">
<cmis:value>text/plain</cmis:value>
</cmis:propertyString>
<cmis:propertyString localName="rep-cmis:contentStreamFileName" propertyDefinitionId="cmis:contentStreamFileName">
<cmis:value>text.txt</cmis:value>
</cmis:propertyString>
<cmis:propertyInteger localName="rep-cmis:contentStreamLength" propertyDefinitionId="cmis:contentStreamLength">
<cmis:value>4234</cmis:value>
</cmis:propertyInteger>
<cmis:propertyString displayName="Keywords for Document" localName="keywords" propertyDefinitionId="keywords">
<cmis:value>document</cmis:value>
<cmis:value>example</cmis:value>
<cmis:value>sample</cmis:value>
<cmis:value>cmis</cmis:value>
</cmis:propertyString>
</cmis:properties>
</cmisra:object>
</atom:entry>
Please also see the example documents included with the schema.
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.
CMIS Services:
GET: getTypeChildren
Media Type: application/atom+xml;type=feed
Link Relations:
This feed contains a set of atom entries for each child type definition.
The following CMIS Atom extension element MAY be included inside the atom feed:
The following CMIS Atom extension element MUST be included inside the atom entries:
The following arguments may be supplied. Please see the domain model for more information:
For any HTTP verb not specified on a resource,each implementation MAY chose to implement that HTTP verb in a repository-specific manner.
This is the set of relationships available (either source or target or both) from a specific item such as a document, folder or policy.
CMIS Services:
GET: getObjectRelationships
POST: createRelationship
Media Type: application/atom+xml;type=feed
Accept:
Link Relations:
The following CMIS Atom extension element MAY be included inside the atom feed:
The following CMIS Atom extension element MUST be included inside the atom entries:
The following arguments may be supplied. Please see the domain model for more information:
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.
The server MUST return the appropriate HTTP status code if the source is different than the sourceId or target different than the targetId for the source and targets specified in this collection.
The server MUST return the appropriate status code if the cmis:objectTypeId is not specified.
Example client request:
POST /relationships/source/dbf0316c-47b5-47c9-a2fa-f005eb93f0a4 HTTP/1.1
Host: example.org
Content-Length: 1432
Content-Type: application/atom+xml;type=entry
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<atom:entry xmlns:app="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<atom:author>
<atom:name>Al Brown</atom:name>
</atom:author>
<atom:content src="http://cmisexample.oasis-open.org/rep1/dab97641-8c94-4a12-a604-7532980f05cb"/>
<atom:id>urn:uuid:dab97641-8c94-4a12-a604-7532980f05cb</atom:id>
<atom:title type="text">New Relationship</atom:title>
<atom:updated>2010-01-25T10:20:58.864-08:00</atom:updated>
<cmisra:object>
<cmis:properties>
<cmis:propertyId localName="rep-cmis:objectTypeId" propertyDefinitionId="cmis:objectTypeId">
<cmis:value>customerRelationships</cmis:value>
</cmis:propertyId>
<cmis:propertyId localName="rep-cmis:sourceId" propertyDefinitionId="cmis:sourceId">
<cmis:value>dbf0316c-47b5-47c9-a2fa-f005eb93f0a4</cmis:value>
</cmis:propertyId>
<cmis:propertyId localName="rep-cmis:targetId" propertyDefinitionId="cmis:targetId">
<cmis:value>b9baac7d-7584-445e-bcd1-29af9b25bf2f</cmis:value>
</cmis:propertyId>
</cmis:properties>
</cmisra:object>
</atom:entry>
Example server response:
Date: Mon, 25 Jan 2010 10:20:58 -0800
Content-Length: 4684
Content-Type: application/atom+xml;type=entry
Content-Location: http://cmisexample.oasis-open.org/rep1/b3006a8f-345b-4c27-86df-3f4b157bb495
Location: http://cmisexample.oasis-open.org/rep1/b3006a8f-345b-4c27-86df-3f4b157bb495
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<atom:entry xmlns:app="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:content src="http://cmisexample.oasis-open.org/rep1/b3006a8f-345b-4c27-86df-3f4b157bb495"/>
<atom:id>urn:uuid:b3006a8f-345b-4c27-86df-3f4b157bb495</atom:id>
<atom:title type="text">New Relationship</atom:title>
<atom:updated>2010-01-25T10:20:58.880-08:00</atom:updated>
<atom:link rel="self" href="http://cmisexample.oasis-open.org/rep1/b3006a8f-345b-4c27-86df-3f4b157bb495"/>
<atom:link rel="edit" href="http://cmisexample.oasis-open.org/rep1/b3006a8f-345b-4c27-86df-3f4b157bb495"/>
<atom:link type="application/cmis+xml;type=allowableActions" rel="http://docs.oasis-open.org/ns/cmis/link/200908/allowableactions" href="http://cmisexample.oasis-open.org/rep1/b3006a8f-345b-4c27-86df-3f4b157bb495/allowableactions"/>
<atom:link type="application/atom+xml;type=entry" rel="describedby" href="http://cmisexample.oasis-open.org/rep1/b3006a8f-345b-4c27-86df-3f4b157bb495/type"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1//service"/>
<atom:published>2010-01-25T10:20:58.880-08:00</atom:published>
<atom:summary type="html">HTML summary of Entry b3006a8f-345b-4c27-86df-3f4b157bb495</atom:summary>
<atom:link type="application/atom+xml;type=entry" rel="http://docs.oasis-open.org/ns/cmis/link/200908/source" href="http://cmisexample.oasis-open.org/rep1/b3006a8f-345b-4c27-86df-3f4b157bb495/source"/>
<atom:link type="application/atom+xml;type=entry" rel="http://docs.oasis-open.org/ns/cmis/link/200908/target" href="http://cmisexample.oasis-open.org/rep1/b3006a8f-345b-4c27-86df-3f4b157bb495/target"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/policies" href="http://cmisexample.oasis-open.org/rep1/b3006a8f-345b-4c27-86df-3f4b157bb495/policies"/>
<atom:link type="application/cmisacl+xml" rel="http://docs.oasis-open.org/ns/cmis/link/200908/acl" href="http://cmisexample.oasis-open.org/rep1/b3006a8f-345b-4c27-86df-3f4b157bb495/acl"/>
<cmisra:object>
<cmis:properties>
<cmis:propertyId localName="rep-cmis:objectId" propertyDefinitionId="cmis:objectId">
<cmis:value>b3006a8f-345b-4c27-86df-3f4b157bb495</cmis:value>
</cmis:propertyId>
<cmis:propertyId localName="rep-cmis:objectTypeId" propertyDefinitionId="cmis:objectTypeId">
<cmis:value>customerRelationships</cmis:value>
</cmis:propertyId>
<cmis:propertyString localName="rep-cmis:name" propertyDefinitionId="cmis:name">
<cmis:value>New Relationship</cmis:value>
</cmis:propertyString>
<cmis:propertyDateTime localName="rep-cmis:creationDate" propertyDefinitionId="cmis:creationDate">
<cmis:value>2010-01-25T10:20:58.880-08:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyDateTime localName="rep-cmis:lastModificationDate" propertyDefinitionId="cmis:lastModificationDate">
<cmis:value>2010-01-25T10:20:58.880-08:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyId localName="rep-cmis:baseTypeId" propertyDefinitionId="cmis:baseTypeId">
<cmis:value>cmis:relationship</cmis:value>
</cmis:propertyId>
<cmis:propertyString localName="rep-cmis:lastModifiedBy" propertyDefinitionId="cmis:lastModifiedBy">
<cmis:value>Al Brown</cmis:value>
</cmis:propertyString>
<cmis:propertyString localName="rep-cmis:createdBy" propertyDefinitionId="cmis:createdBy">
<cmis:value>Al Brown</cmis:value>
</cmis:propertyString>
<cmis:propertyId localName="rep-cmis:sourceId" propertyDefinitionId="cmis:sourceId">
<cmis:value>d4551c6d-30bd-4fc2-9c84-a55f11559e89</cmis:value>
</cmis:propertyId>
<cmis:propertyId localName="rep-cmis:targetId" propertyDefinitionId="cmis:targetId">
<cmis:value>fe7e056f-c4bf-42f1-a03e-3ababcf2491d</cmis:value>
</cmis:propertyId>
</cmis:properties>
</cmisra:object>
</atom:entry>
Please also see the example documents included with the schema.
This is a collection comprised of all the direct children of a particular folder represented as a feed.
CMIS Services:
GET: getChildren
POST:
createDocument
or createFolder
or createPolicy
or moveObject
or addObjectToFolder
Media Type: application/atom+xml;type=feed
Accept:
Link Relations:
The following CMIS Atom extension element MAY be included inside the atom feed:
The following CMIS Atom extension element MUST be included inside the atom entries:
HTTP Code:
The following arguments may be supplied. Please see the domain model for more information:
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.
The following arguments MAY be supplied.
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.
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 sourceFolderId is specified, then the object will be removed from the folder specified.
If atom:content is missing from the request, the repository MUST treat the missing atom:content element as an empty atom:content element.
Example client request:
Host: example.org
Content-Length: 1227
Content-Type: application/atom+xml;type=entry
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<atom:entry xmlns:app="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<atom:author>
<atom:name>Al Brown</atom:name>
</atom:author>
<atom:id>urn:uuid:1cd0d82f-d579-4897-9b0a-ad0917595445</atom:id>
<atom:title type="text">Document - To Be Moved</atom:title>
<atom:updated>2010-01-25T10:20:58.708-08:00</atom:updated>
<atom:content src="http://cmisexample.oasis-open.org/rep1//content/1cd0d82f-d579-4897-9b0a-ad0917595445"/>
<cmisra:object>
<cmis:properties>
<cmis:propertyId localName="rep-cmis:objectId" propertyDefinitionId="cmis:objectId">
<cmis:value>1cd0d82f-d579-4897-9b0a-ad0917595445</cmis:value>
</cmis:propertyId>
<cmis:propertyId localName="rep-cmis:objectTypeId" propertyDefinitionId="cmis:objectTypeId">
<cmis:value>invoice</cmis:value>
</cmis:propertyId>
</cmis:properties>
</cmisra:object>
</atom:entry>
Example server response:
Date: Mon, 25 Jan 2010 10:20:58 -0800
Content-Length: 7213
Content-Type: application/atom+xml;type=entry
Content-Location: http://cmisexample.oasis-open.org/rep1/b4423b8a-e46e-49fb-8141-4aed91d28b5b
Location: http://cmisexample.oasis-open.org/rep1/b4423b8a-e46e-49fb-8141-4aed91d28b5b
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<atom:entry xmlns:app="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:content src="http://cmisexample.oasis-open.org/rep1/b4423b8a-e46e-49fb-8141-4aed91d28b5b"/>
<atom:id>urn:uuid:b4423b8a-e46e-49fb-8141-4aed91d28b5b</atom:id>
<atom:title type="text">Document - To Be Moved</atom:title>
<atom:updated>2010-01-25T10:20:58.786-08:00</atom:updated>
<atom:link rel="self" href="http://cmisexample.oasis-open.org/rep1/b4423b8a-e46e-49fb-8141-4aed91d28b5b"/>
<atom:link rel="edit" href="http://cmisexample.oasis-open.org/rep1/b4423b8a-e46e-49fb-8141-4aed91d28b5b"/>
<atom:link type="application/cmis+xml;type=allowableActions" rel="http://docs.oasis-open.org/ns/cmis/link/200908/allowableactions" href="http://cmisexample.oasis-open.org/rep1/b4423b8a-e46e-49fb-8141-4aed91d28b5b/allowableactions"/>
<atom:link type="application/atom+xml;type=entry" rel="describedby" href="http://cmisexample.oasis-open.org/rep1/b4423b8a-e46e-49fb-8141-4aed91d28b5b/type"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1//service"/>
<atom:published>2010-01-25T10:20:58.786-08:00</atom:published>
<atom:summary type="html">HTML summary of Entry b4423b8a-e46e-49fb-8141-4aed91d28b5b</atom:summary>
<atom:link rel="edit-media" href="http://cmisexample.oasis-open.org/rep1/b4423b8a-e46e-49fb-8141-4aed91d28b5b/edit-media"/>
<atom:link rel="alternate" href="http://cmisexample.oasis-open.org/rep1/b4423b8a-e46e-49fb-8141-4aed91d28b5b/alternate"/>
<atom:link type="application/atom+xml;type=feed" rel="up" href="http://cmisexample.oasis-open.org/rep1/b4423b8a-e46e-49fb-8141-4aed91d28b5b/parents"/>
<atom:link type="application/atom+xml;type=feed" rel="version-history" href="http://cmisexample.oasis-open.org/rep1/b4423b8a-e46e-49fb-8141-4aed91d28b5b/allversions"/>
<atom:link type="application/atom+xml;type=entry" rel="current-version" href="http://cmisexample.oasis-open.org/rep1/b4423b8a-e46e-49fb-8141-4aed91d28b5b/latest"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/relationships" href="http://cmisexample.oasis-open.org/rep1/b4423b8a-e46e-49fb-8141-4aed91d28b5b/relationships"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/policies" href="http://cmisexample.oasis-open.org/rep1/b4423b8a-e46e-49fb-8141-4aed91d28b5b/policies"/>
<atom:link type="application/cmisacl+xml" rel="http://docs.oasis-open.org/ns/cmis/link/200908/acl" href="http://cmisexample.oasis-open.org/rep1/b4423b8a-e46e-49fb-8141-4aed91d28b5b/acl"/>
<cmisra:object>
<cmis:properties>
<cmis:propertyId localName="rep-cmis:objectId" propertyDefinitionId="cmis:objectId">
<cmis:value>b4423b8a-e46e-49fb-8141-4aed91d28b5b</cmis:value>
</cmis:propertyId>
<cmis:propertyId localName="rep-cmis:objectTypeId" propertyDefinitionId="cmis:objectTypeId">
<cmis:value>invoice</cmis:value>
</cmis:propertyId>
<cmis:propertyString localName="rep-cmis:name" propertyDefinitionId="cmis:name">
<cmis:value>Document - To Be Moved</cmis:value>
</cmis:propertyString>
<cmis:propertyDateTime localName="rep-cmis:creationDate" propertyDefinitionId="cmis:creationDate">
<cmis:value>2010-01-25T10:20:58.786-08:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyDateTime localName="rep-cmis:lastModificationDate" propertyDefinitionId="cmis:lastModificationDate">
<cmis:value>2010-01-25T10:20:58.786-08:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyId localName="rep-cmis:baseTypeId" propertyDefinitionId="cmis:baseTypeId">
<cmis:value>cmis:document</cmis:value>
</cmis:propertyId>
<cmis:propertyString localName="rep-cmis:lastModifiedBy" propertyDefinitionId="cmis:lastModifiedBy">
<cmis:value>Al Brown</cmis:value>
</cmis:propertyString>
<cmis:propertyString localName="rep-cmis:createdBy" propertyDefinitionId="cmis:createdBy">
<cmis:value>Al Brown</cmis:value>
</cmis:propertyString>
<cmis:propertyBoolean localName="rep-cmis:isLatestVersion" propertyDefinitionId="cmis:isLatestVersion">
<cmis:value>true</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean localName="rep-cmis:isVersionSeriesCheckedOut" propertyDefinitionId="cmis:isVersionSeriesCheckedOut">
<cmis:value>false</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean localName="rep-cmis:isMajorVersion" propertyDefinitionId="cmis:isMajorVersion">
<cmis:value>false</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean localName="rep-cmis:isLatestMajorVersion" propertyDefinitionId="cmis:isLatestMajorVersion">
<cmis:value>false</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean localName="rep-cmis:isImmutable" propertyDefinitionId="cmis:isImmutable">
<cmis:value>false</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyString localName="rep-cmis:checkinComment" propertyDefinitionId="cmis:checkinComment">
<cmis:value>Checkin comment</cmis:value>
</cmis:propertyString>
<cmis:propertyString localName="rep-cmis:versionLabel" propertyDefinitionId="cmis:versionLabel">
<cmis:value>0.1</cmis:value>
</cmis:propertyString>
<cmis:propertyString localName="rep-cmis:contentStreamMimeType" propertyDefinitionId="cmis:contentStreamMimeType">
<cmis:value>text/plain</cmis:value>
</cmis:propertyString>
<cmis:propertyString localName="rep-cmis:contentStreamFileName" propertyDefinitionId="cmis:contentStreamFileName">
<cmis:value>text.txt</cmis:value>
</cmis:propertyString>
<cmis:propertyInteger localName="rep-cmis:contentStreamLength" propertyDefinitionId="cmis:contentStreamLength">
<cmis:value>4234</cmis:value>
</cmis:propertyInteger>
<cmis:propertyString displayName="Keywords for Document" localName="keywords" propertyDefinitionId="keywords">
<cmis:value>document</cmis:value>
<cmis:value>example</cmis:value>
<cmis:value>sample</cmis:value>
<cmis:value>cmis</cmis:value>
</cmis:propertyString>
</cmis:properties>
</cmisra:object>
</atom:entry>
Please also see the example documents included with the schema.
Creating a CMIS Object (in that folder):
If the cmis:objectId property is missing, the object will be created and then added to the folder. If the cmis:objectId property is present but not a valid object Id, the repository MUST return the appropriate HTTP status code.
For Documents:
If Content Stream is not provided and it is required by the type definition, the repository MUST return the appropriate HTTP status code.
Content Streams MAY be provided by any of the following mechanisms:
o As part of the atom entry via the src attribute on the content element (AtomPub)
§ src attribute: Implementers MAY support external references to content
§ If the URI in the src attribute is not reachable, then an appropriate http status code should be returned.
o As part of the atom entry inlining via the content element (AtomPub)
§ Please see the AtomPub specification RFC5023 for the processing model of the content element.
o If the cmisra:content is provided by the client inside the atom:entry, the cmisra:content element MUST take precendence over the atom:content element. (CMIS)
o At a later time (AtomPub)
§ 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.
Example client request:
POST /obj/bb2b208b-3acd-4abe-9788-8078a239f228 HTTP/1.1
Host: example.org
Content-Length: 1190
Content-Type: application/atom+xml;type=entry
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<atom:entry xmlns:app="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<atom:author>
<atom:name>Al Brown</atom:name>
</atom:author>
<atom:id>urn:uuid:bb2b208b-3acd-4abe-9788-8078a239f228</atom:id>
<atom:title type="text">New Invoice</atom:title>
<atom:updated>2010-01-25T10:20:58.818-08:00</atom:updated>
<atom:content type="text">this is the content of the new document</atom:content>
<cmisra:object>
<cmis:properties>
<cmis:propertyId localName="rep-cmis:objectId" propertyDefinitionId="cmis:objectId">
<cmis:value>bb2b208b-3acd-4abe-9788-8078a239f228</cmis:value>
</cmis:propertyId>
<cmis:propertyId localName="rep-cmis:objectTypeId" propertyDefinitionId="cmis:objectTypeId">
<cmis:value>invoice</cmis:value>
</cmis:propertyId>
</cmis:properties>
</cmisra:object>
</atom:entry>
Example server response:
Date: Mon, 25 Jan 2010 10:20:58 -0800
Content-Length: 7191
Content-Type: application/atom+xml;type=entry
Content-Location: http://cmisexample.oasis-open.org/rep1/13475008-6a20-4454-ad0b-10ea94c4b93d
Location: http://cmisexample.oasis-open.org/rep1/13475008-6a20-4454-ad0b-10ea94c4b93d
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<atom:entry xmlns:app="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:content src="http://cmisexample.oasis-open.org/rep1/13475008-6a20-4454-ad0b-10ea94c4b93d"/>
<atom:id>urn:uuid:13475008-6a20-4454-ad0b-10ea94c4b93d</atom:id>
<atom:title type="text">New Invoice</atom:title>
<atom:updated>2010-01-25T10:20:58.818-08:00</atom:updated>
<atom:link rel="self" href="http://cmisexample.oasis-open.org/rep1/13475008-6a20-4454-ad0b-10ea94c4b93d"/>
<atom:link rel="edit" href="http://cmisexample.oasis-open.org/rep1/13475008-6a20-4454-ad0b-10ea94c4b93d"/>
<atom:link type="application/cmis+xml;type=allowableActions" rel="http://docs.oasis-open.org/ns/cmis/link/200908/allowableactions" href="http://cmisexample.oasis-open.org/rep1/13475008-6a20-4454-ad0b-10ea94c4b93d/allowableactions"/>
<atom:link type="application/atom+xml;type=entry" rel="describedby" href="http://cmisexample.oasis-open.org/rep1/13475008-6a20-4454-ad0b-10ea94c4b93d/type"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1//service"/>
<atom:published>2010-01-25T10:20:58.833-08:00</atom:published>
<atom:summary type="html">HTML summary of Entry 13475008-6a20-4454-ad0b-10ea94c4b93d</atom:summary>
<atom:link rel="edit-media" href="http://cmisexample.oasis-open.org/rep1/13475008-6a20-4454-ad0b-10ea94c4b93d/edit-media"/>
<atom:link rel="alternate" href="http://cmisexample.oasis-open.org/rep1/13475008-6a20-4454-ad0b-10ea94c4b93d/alternate"/>
<atom:link type="application/atom+xml;type=feed" rel="up" href="http://cmisexample.oasis-open.org/rep1/13475008-6a20-4454-ad0b-10ea94c4b93d/parents"/>
<atom:link type="application/atom+xml;type=feed" rel="version-history" href="http://cmisexample.oasis-open.org/rep1/13475008-6a20-4454-ad0b-10ea94c4b93d/allversions"/>
<atom:link type="application/atom+xml;type=entry" rel="current-version" href="http://cmisexample.oasis-open.org/rep1/13475008-6a20-4454-ad0b-10ea94c4b93d/latest"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/relationships" href="http://cmisexample.oasis-open.org/rep1/13475008-6a20-4454-ad0b-10ea94c4b93d/relationships"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/policies" href="http://cmisexample.oasis-open.org/rep1/13475008-6a20-4454-ad0b-10ea94c4b93d/policies"/>
<atom:link type="application/cmisacl+xml" rel="http://docs.oasis-open.org/ns/cmis/link/200908/acl" href="http://cmisexample.oasis-open.org/rep1/13475008-6a20-4454-ad0b-10ea94c4b93d/acl"/>
<cmisra:object>
<cmis:properties>
<cmis:propertyId localName="rep-cmis:objectId" propertyDefinitionId="cmis:objectId">
<cmis:value>13475008-6a20-4454-ad0b-10ea94c4b93d</cmis:value>
</cmis:propertyId>
<cmis:propertyId localName="rep-cmis:objectTypeId" propertyDefinitionId="cmis:objectTypeId">
<cmis:value>invoice</cmis:value>
</cmis:propertyId>
<cmis:propertyString localName="rep-cmis:name" propertyDefinitionId="cmis:name">
<cmis:value>New Invoice</cmis:value>
</cmis:propertyString>
<cmis:propertyDateTime localName="rep-cmis:creationDate" propertyDefinitionId="cmis:creationDate">
<cmis:value>2010-01-25T10:20:58.833-08:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyDateTime localName="rep-cmis:lastModificationDate" propertyDefinitionId="cmis:lastModificationDate">
<cmis:value>2010-01-25T10:20:58.833-08:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyId localName="rep-cmis:baseTypeId" propertyDefinitionId="cmis:baseTypeId">
<cmis:value>cmis:document</cmis:value>
</cmis:propertyId>
<cmis:propertyString localName="rep-cmis:lastModifiedBy" propertyDefinitionId="cmis:lastModifiedBy">
<cmis:value>Al Brown</cmis:value>
</cmis:propertyString>
<cmis:propertyString localName="rep-cmis:createdBy" propertyDefinitionId="cmis:createdBy">
<cmis:value>Al Brown</cmis:value>
</cmis:propertyString>
<cmis:propertyBoolean localName="rep-cmis:isLatestVersion" propertyDefinitionId="cmis:isLatestVersion">
<cmis:value>true</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean localName="rep-cmis:isVersionSeriesCheckedOut" propertyDefinitionId="cmis:isVersionSeriesCheckedOut">
<cmis:value>false</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean localName="rep-cmis:isMajorVersion" propertyDefinitionId="cmis:isMajorVersion">
<cmis:value>false</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean localName="rep-cmis:isLatestMajorVersion" propertyDefinitionId="cmis:isLatestMajorVersion">
<cmis:value>false</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean localName="rep-cmis:isImmutable" propertyDefinitionId="cmis:isImmutable">
<cmis:value>false</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyString localName="rep-cmis:checkinComment" propertyDefinitionId="cmis:checkinComment">
<cmis:value>Checkin comment</cmis:value>
</cmis:propertyString>
<cmis:propertyString localName="rep-cmis:versionLabel" propertyDefinitionId="cmis:versionLabel">
<cmis:value>0.1</cmis:value>
</cmis:propertyString>
<cmis:propertyString localName="rep-cmis:contentStreamMimeType" propertyDefinitionId="cmis:contentStreamMimeType">
<cmis:value>text/plain</cmis:value>
</cmis:propertyString>
<cmis:propertyString localName="rep-cmis:contentStreamFileName" propertyDefinitionId="cmis:contentStreamFileName">
<cmis:value>text.txt</cmis:value>
</cmis:propertyString>
<cmis:propertyInteger localName="rep-cmis:contentStreamLength" propertyDefinitionId="cmis:contentStreamLength">
<cmis:value>4234</cmis:value>
</cmis:propertyInteger>
<cmis:propertyString displayName="Keywords for Document" localName="keywords" propertyDefinitionId="keywords">
<cmis:value>document</cmis:value>
<cmis:value>example</cmis:value>
<cmis:value>sample</cmis:value>
<cmis:value>cmis</cmis:value>
</cmis:propertyString>
</cmis:properties>
</cmisra:object>
</atom:entry>
Please also see the example documents included with the schema.
POSTing other document formats: (AtomPub)
The behavior is repository specific when a non Atom entry or an atom document without the CMIS elements is posted to a folder collection.
For example, the repository MAY auto-create a document with a specific type (document) the client could edit.
If the repository does not support this scenario or another exception occurs, then the repository MUST return the appropriate HTTP status code.
Optional arguments:
This is an atom feed of all the policy objects currently applied to a specific object. This is the only collection where the URI’s of the objects in the collection MUST be specific to that collection. A DELETE on the policy object in the collection is a removal of the policy from the object NOT a deletion of the policy object itself.
CMIS Services:
GET: getAppliedPolicies
POST: applyPolicy (to object representing this collection of policies)
DELETE: removePolicy
Media Type: application/atom+xml;type=feed
Accept:
Link Relations:
The policy entries displayed here are specific to the object generating this collection. A DELETE method on those URIs will invoke removePolicy().
The following CMIS Atom extension element MAY be included inside the atom feed:
The following CMIS Atom extension element MUST be included inside the atom entries:
The following arguments may be supplied. Please see the domain model for more information:
When an Atom Entry representing a Policy is posted to this collection, the policy will be applied to the object.
Example client request:
POST /policies/f3670f66-62ee-487f-b733-999a69237024 HTTP/1.1
Host: example.org
Content-Length: 1039
Content-Type: application/atom+xml;type=entry
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<atom:entry xmlns:app="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<atom:author>
<atom:name>Al Brown</atom:name>
</atom:author>
<atom:content src="http://cmisexample.oasis-open.org/rep1/f3670f66-62ee-487f-b733-999a69237024"/>
<atom:id>urn:uuid:f3670f66-62ee-487f-b733-999a69237024</atom:id>
<atom:title type="text">Security Policy for Invoices</atom:title>
<atom:updated>2010-01-25T10:20:58.849-08:00</atom:updated>
<cmisra:object>
<cmis:properties>
<cmis:propertyId localName="rep-cmis:objectId" propertyDefinitionId="cmis:objectId">
<cmis:value>f3670f66-62ee-487f-b733-999a69237024</cmis:value>
</cmis:propertyId>
</cmis:properties>
</cmisra:object>
</atom:entry>
Example server response:
Date: Mon, 25 Jan 2010 10:20:58 -0800
Content-Length: 4043
Content-Type: application/atom+xml;type=entry
Content-Location: http://cmisexample.oasis-open.org/rep1/55cca51b-6cfa-4354-bdfe-690761576116
Location: http://cmisexample.oasis-open.org/rep1/55cca51b-6cfa-4354-bdfe-690761576116
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<atom:entry xmlns:app="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:content src="http://cmisexample.oasis-open.org/rep1/55cca51b-6cfa-4354-bdfe-690761576116"/>
<atom:id>urn:uuid:55cca51b-6cfa-4354-bdfe-690761576116</atom:id>
<atom:title type="text">Security Policy for Invoices</atom:title>
<atom:updated>2010-01-25T10:20:58.849-08:00</atom:updated>
<atom:link rel="self" href="http://cmisexample.oasis-open.org/rep1/55cca51b-6cfa-4354-bdfe-690761576116"/>
<atom:link rel="edit" href="http://cmisexample.oasis-open.org/rep1/55cca51b-6cfa-4354-bdfe-690761576116"/>
<atom:link type="application/cmis+xml;type=allowableActions" rel="http://docs.oasis-open.org/ns/cmis/link/200908/allowableactions" href="http://cmisexample.oasis-open.org/rep1/55cca51b-6cfa-4354-bdfe-690761576116/allowableactions"/>
<atom:link type="application/atom+xml;type=entry" rel="describedby" href="http://cmisexample.oasis-open.org/rep1/55cca51b-6cfa-4354-bdfe-690761576116/type"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1//service"/>
<atom:published>2010-01-25T10:20:58.849-08:00</atom:published>
<atom:summary type="html">HTML summary of Entry 55cca51b-6cfa-4354-bdfe-690761576116</atom:summary>
<atom:link type="application/atom+xml;type=feed" rel="up" href="http://cmisexample.oasis-open.org/rep1/55cca51b-6cfa-4354-bdfe-690761576116/parents"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/relationships" href="http://cmisexample.oasis-open.org/rep1/55cca51b-6cfa-4354-bdfe-690761576116/relationships"/>
<atom:link type="application/cmisacl+xml" rel="http://docs.oasis-open.org/ns/cmis/link/200908/acl" href="http://cmisexample.oasis-open.org/rep1/55cca51b-6cfa-4354-bdfe-690761576116/acl"/>
<cmisra:object>
<cmis:properties>
<cmis:propertyId localName="rep-cmis:objectId" propertyDefinitionId="cmis:objectId">
<cmis:value>55cca51b-6cfa-4354-bdfe-690761576116</cmis:value>
</cmis:propertyId>
<cmis:propertyId localName="rep-cmis:objectTypeId" propertyDefinitionId="cmis:objectTypeId">
<cmis:value>generalSecurityPolicy</cmis:value>
</cmis:propertyId>
<cmis:propertyString localName="rep-cmis:name" propertyDefinitionId="cmis:name">
<cmis:value>Security Policy for Invoices</cmis:value>
</cmis:propertyString>
<cmis:propertyDateTime localName="rep-cmis:creationDate" propertyDefinitionId="cmis:creationDate">
<cmis:value>2010-01-25T10:20:58.849-08:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyDateTime localName="rep-cmis:lastModificationDate" propertyDefinitionId="cmis:lastModificationDate">
<cmis:value>2010-01-25T10:20:58.864-08:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyId localName="rep-cmis:baseTypeId" propertyDefinitionId="cmis:baseTypeId">
<cmis:value>cmis:policy</cmis:value>
</cmis:propertyId>
<cmis:propertyString localName="rep-cmis:lastModifiedBy" propertyDefinitionId="cmis:lastModifiedBy">
<cmis:value>Al Brown</cmis:value>
</cmis:propertyString>
<cmis:propertyString localName="rep-cmis:createdBy" propertyDefinitionId="cmis:createdBy">
<cmis:value>Al Brown</cmis:value>
</cmis:propertyString>
</cmis:properties>
</cmisra:object>
</atom:entry>
Please also see the example documents included with the schema.
This is the only collection where the URI’s of the objects in the collection MUST be specific to that collection. A DELETE on the policy object in the collection is a removal of the policy from the object NOT a deletion of the policy object itself.
For any HTTP verb not specified on a resource,each implementation MAY chose to implement that HTTP verb in a repository-specific manner.
This is the set of parents for a specific object.
CMIS Services:
GET: getObjectParents
Media Type: application/atom+xml;type=feed
Link Relations:
This feed contains a set of atom entries for each parent of the object that MUST contain:
Example:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<atom:feed xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<atom:title type="text">Parent Feed for 268d30b5-91a0-47f0-b985-6765e178f0bb</atom:title>
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:updated>2010-01-25T10:20:59.818-08:00</atom:updated>
<atom:id>urn:uuid:6f541940-4abf-471b-99f0-8e6f66d53789</atom:id>
<atom:link type="application/atom+xml;type=feed" rel="self" href="http://cmisexample.oasis-open.org/rep1/268d30b5-91a0-47f0-b985-6765e178f0bb/3"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1//service"/>
<atom:link type="application/atom+xml;type=entry" rel="via" href="http://cmisexample.oasis-open.org/rep1/268d30b5-91a0-47f0-b985-6765e178f0bb"/>
<atom:link type="application/atom+xml;type=feed" rel="first" href="http://cmisexample.oasis-open.org/rep1/268d30b5-91a0-47f0-b985-6765e178f0bb/first"/>
<atom:link type="application/atom+xml;type=feed" rel="next" href="http://cmisexample.oasis-open.org/rep1/268d30b5-91a0-47f0-b985-6765e178f0bb/4"/>
<atom:link type="application/atom+xml;type=feed" rel="previous" href="http://cmisexample.oasis-open.org/rep1/268d30b5-91a0-47f0-b985-6765e178f0bb/2"/>
<atom:link type="application/atom+xml;type=feed" rel="last" href="http://cmisexample.oasis-open.org/rep1/268d30b5-91a0-47f0-b985-6765e178f0bb/last"/>
<cmisra:numItems>1</cmisra:numItems>
<atom:entry>
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:content src="http://cmisexample.oasis-open.org/rep1/661d6945-8f75-4dea-8799-7ba07b0e510e"/>
<atom:id>urn:uuid:661d6945-8f75-4dea-8799-7ba07b0e510e</atom:id>
<atom:title type="text">Customer Folder</atom:title>
<atom:updated>2010-01-25T10:20:59.833-08:00</atom:updated>
<atom:link rel="self" href="http://cmisexample.oasis-open.org/rep1/661d6945-8f75-4dea-8799-7ba07b0e510e"/>
<atom:link rel="edit" href="http://cmisexample.oasis-open.org/rep1/661d6945-8f75-4dea-8799-7ba07b0e510e"/>
<atom:link type="application/cmis+xml;type=allowableActions" rel="http://docs.oasis-open.org/ns/cmis/link/200908/allowableactions" href="http://cmisexample.oasis-open.org/rep1/661d6945-8f75-4dea-8799-7ba07b0e510e/allowableactions"/>
<atom:link type="application/atom+xml;type=entry" rel="describedby" href="http://cmisexample.oasis-open.org/rep1/661d6945-8f75-4dea-8799-7ba07b0e510e/type"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1//service"/>
<atom:published>2010-01-25T10:20:59.833-08:00</atom:published>
<atom:summary type="html">HTML summary of Entry 661d6945-8f75-4dea-8799-7ba07b0e510e</atom:summary>
<atom:link type="application/atom+xml;type=entry" rel="up" href="http://cmisexample.oasis-open.org/rep1/661d6945-8f75-4dea-8799-7ba07b0e510e/up"/>
<atom:link type="application/atom+xml;type=feed" rel="down" href="http://cmisexample.oasis-open.org/rep1/661d6945-8f75-4dea-8799-7ba07b0e510e/children"/>
<atom:link type="application/cmistree+xml" rel="down" href="http://cmisexample.oasis-open.org/rep1/661d6945-8f75-4dea-8799-7ba07b0e510e/tree"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/foldertree" href="http://cmisexample.oasis-open.org/rep1/661d6945-8f75-4dea-8799-7ba07b0e510e/foldertree"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/relationships" href="http://cmisexample.oasis-open.org/rep1/661d6945-8f75-4dea-8799-7ba07b0e510e/relationships"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/policies" href="http://cmisexample.oasis-open.org/rep1/661d6945-8f75-4dea-8799-7ba07b0e510e/policies"/>
<atom:link type="application/cmisacl+xml" rel="http://docs.oasis-open.org/ns/cmis/link/200908/acl" href="http://cmisexample.oasis-open.org/rep1/661d6945-8f75-4dea-8799-7ba07b0e510e/acl"/>
<cmisra:object>
<cmis:properties>
<cmis:propertyId localName="rep-cmis:objectId" propertyDefinitionId="cmis:objectId">
<cmis:value>661d6945-8f75-4dea-8799-7ba07b0e510e</cmis:value>
</cmis:propertyId>
<cmis:propertyId localName="rep-cmis:objectTypeId" propertyDefinitionId="cmis:objectTypeId">
<cmis:value>customer</cmis:value>
</cmis:propertyId>
<cmis:propertyString localName="rep-cmis:name" propertyDefinitionId="cmis:name">
<cmis:value>Customer Folder</cmis:value>
</cmis:propertyString>
<cmis:propertyDateTime localName="rep-cmis:creationDate" propertyDefinitionId="cmis:creationDate">
<cmis:value>2010-01-25T10:20:59.833-08:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyDateTime localName="rep-cmis:lastModificationDate" propertyDefinitionId="cmis:lastModificationDate">
<cmis:value>2010-01-25T10:20:59.833-08:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyId localName="rep-cmis:baseTypeId" propertyDefinitionId="cmis:baseTypeId">
<cmis:value>cmis:folder</cmis:value>
</cmis:propertyId>
<cmis:propertyString localName="rep-cmis:lastModifiedBy" propertyDefinitionId="cmis:lastModifiedBy">
<cmis:value>Al Brown</cmis:value>
</cmis:propertyString>
<cmis:propertyString localName="rep-cmis:createdBy" propertyDefinitionId="cmis:createdBy">
<cmis:value>Al Brown</cmis:value>
</cmis:propertyString>
<cmis:propertyId localName="rep-cmis:parentId" propertyDefinitionId="cmis:parentId">
<cmis:value>661d6945-8f75-4dea-8799-7ba07b0e510eup</cmis:value>
</cmis:propertyId>
</cmis:properties>
</cmisra:object>
<cmisra:relativePathSegment>customer1</cmisra:relativePathSegment>
</atom:entry>
</atom:feed>
Please also see the example documents included with the schema.
The following arguments may be supplied. Please see the domain model for more information:
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.oasis-open.org/ns/cmis/link/200908/changes.
The ChangeLog Token is specified in the URI specified by the paging link notations. Through this binding it is not possible to retrieve the ChangeLog Token from the URIs.
CMIS Services:
GET: getContentChanges()
Media Type: application/atom+xml;type=feed
Link Relations:
This feed MUST be ordered from oldest first to newest.
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.
The following CMIS Atom extension element MAY be included inside the atom feed:
The following CMIS Atom extension element MUST be included inside the atom entries:
Example:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<atom:feed xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<atom:title type="text">changelog feed</atom:title>
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:updated>2010-01-25T10:20:59.255-08:00</atom:updated>
<atom:id>urn:uuid:0bfc5306-fc76-4cd8-a0c0-7653dd43c0ff</atom:id>
<atom:link type="application/atom+xml;type=feed" rel="self" href="http://cmisexample.oasis-open.org/rep1/oId/3"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1//service"/>
<atom:link type="application/atom+xml;type=feed" rel="first" href="http://cmisexample.oasis-open.org/rep1/oId/first"/>
<atom:link type="application/atom+xml;type=feed" rel="next" href="http://cmisexample.oasis-open.org/rep1/oId/4"/>
<atom:link type="application/atom+xml;type=feed" rel="previous" href="http://cmisexample.oasis-open.org/rep1/oId/2"/>
<atom:link type="application/atom+xml;type=feed" rel="last" href="http://cmisexample.oasis-open.org/rep1/oId/last"/>
<cmisra:numItems>2</cmisra:numItems>
<atom:entry>
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:content src="http://cmisexample.oasis-open.org/rep1/3f724c1d-12c8-43f2-919f-674df52b6ebd"/>
<atom:id>urn:uuid:3f724c1d-12c8-43f2-919f-674df52b6ebd</atom:id>
<atom:title type="text">CMIS Example Folder as Customer Policy type</atom:title>
<atom:updated>2010-01-25T10:20:59.255-08:00</atom:updated>
<atom:link rel="self" href="http://cmisexample.oasis-open.org/rep1/3f724c1d-12c8-43f2-919f-674df52b6ebd"/>
<atom:link rel="edit" href="http://cmisexample.oasis-open.org/rep1/3f724c1d-12c8-43f2-919f-674df52b6ebd"/>
<atom:link type="application/cmis+xml;type=allowableActions" rel="http://docs.oasis-open.org/ns/cmis/link/200908/allowableactions" href="http://cmisexample.oasis-open.org/rep1/3f724c1d-12c8-43f2-919f-674df52b6ebd/allowableactions"/>
<atom:link type="application/atom+xml;type=entry" rel="describedby" href="http://cmisexample.oasis-open.org/rep1/3f724c1d-12c8-43f2-919f-674df52b6ebd/type"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1//service"/>
<atom:published>2010-01-25T10:20:59.255-08:00</atom:published>
<atom:summary type="html">HTML summary of Entry 3f724c1d-12c8-43f2-919f-674df52b6ebd</atom:summary>
<atom:link type="application/atom+xml;type=entry" rel="up" href="http://cmisexample.oasis-open.org/rep1/3f724c1d-12c8-43f2-919f-674df52b6ebd/up"/>
<atom:link type="application/atom+xml;type=feed" rel="down" href="http://cmisexample.oasis-open.org/rep1/3f724c1d-12c8-43f2-919f-674df52b6ebd/children"/>
<atom:link type="application/cmistree+xml" rel="down" href="http://cmisexample.oasis-open.org/rep1/3f724c1d-12c8-43f2-919f-674df52b6ebd/tree"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/foldertree" href="http://cmisexample.oasis-open.org/rep1/3f724c1d-12c8-43f2-919f-674df52b6ebd/foldertree"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/relationships" href="http://cmisexample.oasis-open.org/rep1/3f724c1d-12c8-43f2-919f-674df52b6ebd/relationships"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/policies" href="http://cmisexample.oasis-open.org/rep1/3f724c1d-12c8-43f2-919f-674df52b6ebd/policies"/>
<atom:link type="application/cmisacl+xml" rel="http://docs.oasis-open.org/ns/cmis/link/200908/acl" href="http://cmisexample.oasis-open.org/rep1/3f724c1d-12c8-43f2-919f-674df52b6ebd/acl"/>
<cmisra:object>
<cmis:properties>
<cmis:propertyId localName="rep-cmis:objectId" propertyDefinitionId="cmis:objectId">
<cmis:value>3f724c1d-12c8-43f2-919f-674df52b6ebd</cmis:value>
</cmis:propertyId>
<cmis:propertyId localName="rep-cmis:objectTypeId" propertyDefinitionId="cmis:objectTypeId">
<cmis:value>customerpolicy</cmis:value>
</cmis:propertyId>
<cmis:propertyString localName="rep-cmis:name" propertyDefinitionId="cmis:name">
<cmis:value>CMIS Example Folder as Customer Policy type</cmis:value>
</cmis:propertyString>
<cmis:propertyDateTime localName="rep-cmis:creationDate" propertyDefinitionId="cmis:creationDate">
<cmis:value>2010-01-25T10:20:59.255-08:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyDateTime localName="rep-cmis:lastModificationDate" propertyDefinitionId="cmis:lastModificationDate">
<cmis:value>2010-01-25T10:20:59.255-08:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyId localName="rep-cmis:baseTypeId" propertyDefinitionId="cmis:baseTypeId">
<cmis:value>cmis:folder</cmis:value>
</cmis:propertyId>
<cmis:propertyString localName="rep-cmis:lastModifiedBy" propertyDefinitionId="cmis:lastModifiedBy">
<cmis:value>Al Brown</cmis:value>
</cmis:propertyString>
<cmis:propertyString localName="rep-cmis:createdBy" propertyDefinitionId="cmis:createdBy">
<cmis:value>Al Brown</cmis:value>
</cmis:propertyString>
<cmis:propertyId localName="rep-cmis:parentId" propertyDefinitionId="cmis:parentId">
<cmis:value>3f724c1d-12c8-43f2-919f-674df52b6ebdup</cmis:value>
</cmis:propertyId>
</cmis:properties>
<cmis:changeEventInfo>
<cmis:changeType>updated</cmis:changeType>
<cmis:changeTime>2010-01-25T10:20:59.255-08:00</cmis:changeTime>
</cmis:changeEventInfo>
</cmisra:object>
<cmisra:pathSegment>policy</cmisra:pathSegment>
</atom:entry>
<atom:entry>
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:content src="http://cmisexample.oasis-open.org/rep1/6e27bada-b5a2-4a39-be2c-269806eb0d42"/>
<atom:id>urn:uuid:6e27bada-b5a2-4a39-be2c-269806eb0d42</atom:id>
<atom:title type="text">CMIS Example Document</atom:title>
<atom:updated>2010-01-25T10:20:59.255-08:00</atom:updated>
<atom:link rel="self" href="http://cmisexample.oasis-open.org/rep1/6e27bada-b5a2-4a39-be2c-269806eb0d42"/>
<atom:link rel="edit" href="http://cmisexample.oasis-open.org/rep1/6e27bada-b5a2-4a39-be2c-269806eb0d42"/>
<atom:link type="application/cmis+xml;type=allowableActions" rel="http://docs.oasis-open.org/ns/cmis/link/200908/allowableactions" href="http://cmisexample.oasis-open.org/rep1/6e27bada-b5a2-4a39-be2c-269806eb0d42/allowableactions"/>
<atom:link type="application/atom+xml;type=entry" rel="describedby" href="http://cmisexample.oasis-open.org/rep1/6e27bada-b5a2-4a39-be2c-269806eb0d42/type"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1//service"/>
<atom:published>2010-01-25T10:20:59.255-08:00</atom:published>
<atom:summary type="html">HTML summary of Entry 6e27bada-b5a2-4a39-be2c-269806eb0d42</atom:summary>
<atom:link rel="edit-media" href="http://cmisexample.oasis-open.org/rep1/6e27bada-b5a2-4a39-be2c-269806eb0d42/edit-media"/>
<atom:link rel="alternate" href="http://cmisexample.oasis-open.org/rep1/6e27bada-b5a2-4a39-be2c-269806eb0d42/alternate"/>
<atom:link type="application/atom+xml;type=feed" rel="up" href="http://cmisexample.oasis-open.org/rep1/6e27bada-b5a2-4a39-be2c-269806eb0d42/parents"/>
<atom:link type="application/atom+xml;type=feed" rel="version-history" href="http://cmisexample.oasis-open.org/rep1/6e27bada-b5a2-4a39-be2c-269806eb0d42/allversions"/>
<atom:link type="application/atom+xml;type=entry" rel="current-version" href="http://cmisexample.oasis-open.org/rep1/6e27bada-b5a2-4a39-be2c-269806eb0d42/latest"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/relationships" href="http://cmisexample.oasis-open.org/rep1/6e27bada-b5a2-4a39-be2c-269806eb0d42/relationships"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/policies" href="http://cmisexample.oasis-open.org/rep1/6e27bada-b5a2-4a39-be2c-269806eb0d42/policies"/>
<atom:link type="application/cmisacl+xml" rel="http://docs.oasis-open.org/ns/cmis/link/200908/acl" href="http://cmisexample.oasis-open.org/rep1/6e27bada-b5a2-4a39-be2c-269806eb0d42/acl"/>
<cmisra:object>
<cmis:properties>
<cmis:propertyId localName="rep-cmis:objectId" propertyDefinitionId="cmis:objectId">
<cmis:value>6e27bada-b5a2-4a39-be2c-269806eb0d42</cmis:value>
</cmis:propertyId>
<cmis:propertyId localName="rep-cmis:objectTypeId" propertyDefinitionId="cmis:objectTypeId">
<cmis:value>document</cmis:value>
</cmis:propertyId>
<cmis:propertyString localName="rep-cmis:name" propertyDefinitionId="cmis:name">
<cmis:value>CMIS Example Document</cmis:value>
</cmis:propertyString>
<cmis:propertyDateTime localName="rep-cmis:creationDate" propertyDefinitionId="cmis:creationDate">
<cmis:value>2010-01-25T10:20:59.271-08:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyDateTime localName="rep-cmis:lastModificationDate" propertyDefinitionId="cmis:lastModificationDate">
<cmis:value>2010-01-25T10:20:59.271-08:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyId localName="rep-cmis:baseTypeId" propertyDefinitionId="cmis:baseTypeId">
<cmis:value>cmis:document</cmis:value>
</cmis:propertyId>
<cmis:propertyString localName="rep-cmis:lastModifiedBy" propertyDefinitionId="cmis:lastModifiedBy">
<cmis:value>Al Brown</cmis:value>
</cmis:propertyString>
<cmis:propertyString localName="rep-cmis:createdBy" propertyDefinitionId="cmis:createdBy">
<cmis:value>Al Brown</cmis:value>
</cmis:propertyString>
<cmis:propertyBoolean localName="rep-cmis:isLatestVersion" propertyDefinitionId="cmis:isLatestVersion">
<cmis:value>true</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean localName="rep-cmis:isVersionSeriesCheckedOut" propertyDefinitionId="cmis:isVersionSeriesCheckedOut">
<cmis:value>false</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean localName="rep-cmis:isMajorVersion" propertyDefinitionId="cmis:isMajorVersion">
<cmis:value>false</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean localName="rep-cmis:isLatestMajorVersion" propertyDefinitionId="cmis:isLatestMajorVersion">
<cmis:value>false</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean localName="rep-cmis:isImmutable" propertyDefinitionId="cmis:isImmutable">
<cmis:value>false</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyString localName="rep-cmis:checkinComment" propertyDefinitionId="cmis:checkinComment">
<cmis:value>Checkin comment</cmis:value>
</cmis:propertyString>
<cmis:propertyString localName="rep-cmis:versionLabel" propertyDefinitionId="cmis:versionLabel">
<cmis:value>0.1</cmis:value>
</cmis:propertyString>
<cmis:propertyString localName="rep-cmis:contentStreamMimeType" propertyDefinitionId="cmis:contentStreamMimeType">
<cmis:value>text/plain</cmis:value>
</cmis:propertyString>
<cmis:propertyString localName="rep-cmis:contentStreamFileName" propertyDefinitionId="cmis:contentStreamFileName">
<cmis:value>text.txt</cmis:value>
</cmis:propertyString>
<cmis:propertyInteger localName="rep-cmis:contentStreamLength" propertyDefinitionId="cmis:contentStreamLength">
<cmis:value>4234</cmis:value>
</cmis:propertyInteger>
<cmis:propertyString displayName="Keywords for Document" localName="keywords" propertyDefinitionId="keywords">
<cmis:value>document</cmis:value>
<cmis:value>example</cmis:value>
<cmis:value>sample</cmis:value>
<cmis:value>cmis</cmis:value>
</cmis:propertyString>
</cmis:properties>
<cmis:changeEventInfo>
<cmis:changeType>updated</cmis:changeType>
<cmis:changeTime>2010-01-25T10:20:59.271-08:00</cmis:changeTime>
</cmis:changeEventInfo>
</cmisra:object>
<cmisra:pathSegment>invoice.pdf</cmisra:pathSegment>
</atom:entry>
</atom:feed>
Please also see the example documents included with the schema.
The following optional parameters may be supplied:
This is a hierarchical feed comprising items under a specified folder to a specified depth. This is available via the link relation down with the application/cmistree+xml media type. Please see the Hierarchical Atom Entries for more information on format.
If a repository does not support capabilityGetDescendants, then these resources SHOULD NOT be exposed.
CMIS Services:
GET: getDescendants
DELETE: deleteTree
Media Type: application/atom+xml;type=feed
Link Relations:
The following CMIS Atom extension element MAY be included inside the atom feed:
The following CMIS Atom extension element MUST be included inside the atom entries:
Example:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<atom:feed xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<atom:title type="text">Feed for folder1</atom:title>
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:updated>2010-01-25T10:20:59.364-08:00</atom:updated>
<atom:id>urn:uuid:cb0a47d4-8d09-46f9-9b09-584acad684af</atom:id>
<atom:link type="application/atom+xml;type=feed" rel="self" href="http://cmisexample.oasis-open.org/rep1/f083dd6f-1465-4516-97ce-040ec0c7c05a/3"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1//service"/>
<atom:link type="application/atom+xml;type=entry" rel="via" href="http://cmisexample.oasis-open.org/rep1/f083dd6f-1465-4516-97ce-040ec0c7c05a"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/foldertree" href="http://cmisexample.oasis-open.org/rep1/f083dd6f-1465-4516-97ce-040ec0c7c05a/foldertree"/>
<atom:link type="application/atom+xml;type=feed" rel="down" href="http://cmisexample.oasis-open.org/rep1/f083dd6f-1465-4516-97ce-040ec0c7c05a/children"/>
<atom:link type="application/atom+xml;type=entry" rel="up" href="http://cmisexample.oasis-open.org/rep1/03dcf5b8-5f82-45a1-b276-44d88069eec3"/>
<cmisra:numItems>1</cmisra:numItems>
<atom:entry>
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:content src="http://cmisexample.oasis-open.org/rep1/8e5a512c-8f2d-4387-a283-f3f30bbc312f"/>
<atom:id>urn:uuid:8e5a512c-8f2d-4387-a283-f3f30bbc312f</atom:id>
<atom:title type="text">CMIS Example Folder as Customer type</atom:title>
<atom:updated>2010-01-25T10:20:59.364-08:00</atom:updated>
<atom:link rel="self" href="http://cmisexample.oasis-open.org/rep1/8e5a512c-8f2d-4387-a283-f3f30bbc312f"/>
<atom:link rel="edit" href="http://cmisexample.oasis-open.org/rep1/8e5a512c-8f2d-4387-a283-f3f30bbc312f"/>
<atom:link type="application/cmis+xml;type=allowableActions" rel="http://docs.oasis-open.org/ns/cmis/link/200908/allowableactions" href="http://cmisexample.oasis-open.org/rep1/8e5a512c-8f2d-4387-a283-f3f30bbc312f/allowableactions"/>
<atom:link type="application/atom+xml;type=entry" rel="describedby" href="http://cmisexample.oasis-open.org/rep1/8e5a512c-8f2d-4387-a283-f3f30bbc312f/type"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1//service"/>
<atom:published>2010-01-25T10:20:59.380-08:00</atom:published>
<atom:summary type="html">HTML summary of Entry 8e5a512c-8f2d-4387-a283-f3f30bbc312f</atom:summary>
<atom:link type="application/atom+xml;type=entry" rel="up" href="http://cmisexample.oasis-open.org/rep1/8e5a512c-8f2d-4387-a283-f3f30bbc312f/up"/>
<atom:link type="application/atom+xml;type=feed" rel="down" href="http://cmisexample.oasis-open.org/rep1/8e5a512c-8f2d-4387-a283-f3f30bbc312f/children"/>
<atom:link type="application/cmistree+xml" rel="down" href="http://cmisexample.oasis-open.org/rep1/8e5a512c-8f2d-4387-a283-f3f30bbc312f/tree"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/foldertree" href="http://cmisexample.oasis-open.org/rep1/8e5a512c-8f2d-4387-a283-f3f30bbc312f/foldertree"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/relationships" href="http://cmisexample.oasis-open.org/rep1/8e5a512c-8f2d-4387-a283-f3f30bbc312f/relationships"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/policies" href="http://cmisexample.oasis-open.org/rep1/8e5a512c-8f2d-4387-a283-f3f30bbc312f/policies"/>
<atom:link type="application/cmisacl+xml" rel="http://docs.oasis-open.org/ns/cmis/link/200908/acl" href="http://cmisexample.oasis-open.org/rep1/8e5a512c-8f2d-4387-a283-f3f30bbc312f/acl"/>
<cmisra:object>
<cmis:properties>
<cmis:propertyId localName="rep-cmis:objectId" propertyDefinitionId="cmis:objectId">
<cmis:value>8e5a512c-8f2d-4387-a283-f3f30bbc312f</cmis:value>
</cmis:propertyId>
<cmis:propertyId localName="rep-cmis:objectTypeId" propertyDefinitionId="cmis:objectTypeId">
<cmis:value>customer</cmis:value>
</cmis:propertyId>
<cmis:propertyString localName="rep-cmis:name" propertyDefinitionId="cmis:name">
<cmis:value>CMIS Example Folder as Customer type</cmis:value>
</cmis:propertyString>
<cmis:propertyDateTime localName="rep-cmis:creationDate" propertyDefinitionId="cmis:creationDate">
<cmis:value>2010-01-25T10:20:59.380-08:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyDateTime localName="rep-cmis:lastModificationDate" propertyDefinitionId="cmis:lastModificationDate">
<cmis:value>2010-01-25T10:20:59.380-08:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyId localName="rep-cmis:baseTypeId" propertyDefinitionId="cmis:baseTypeId">
<cmis:value>cmis:folder</cmis:value>
</cmis:propertyId>
<cmis:propertyString localName="rep-cmis:lastModifiedBy" propertyDefinitionId="cmis:lastModifiedBy">
<cmis:value>Al Brown</cmis:value>
</cmis:propertyString>
<cmis:propertyString localName="rep-cmis:createdBy" propertyDefinitionId="cmis:createdBy">
<cmis:value>Al Brown</cmis:value>
</cmis:propertyString>
<cmis:propertyId localName="rep-cmis:parentId" propertyDefinitionId="cmis:parentId">
<cmis:value>8e5a512c-8f2d-4387-a283-f3f30bbc312fup</cmis:value>
</cmis:propertyId>
</cmis:properties>
</cmisra:object>
<cmisra:pathSegment>customer</cmisra:pathSegment>
<cmisra:children>
<atom:feed>
<atom:title type="text">CMIS Example Folder as Customer type</atom:title>
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:updated>2010-01-25T10:20:59.380-08:00</atom:updated>
<atom:id>urn:uuid:67ee5e9f-d2e3-457d-9dec-be718e780452</atom:id>
<atom:link type="application/atom+xml;type=feed" rel="self" href="http://cmisexample.oasis-open.org/rep1/8e5a512c-8f2d-4387-a283-f3f30bbc312f/3"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1//service"/>
<atom:link type="application/atom+xml;type=entry" rel="via" href="http://cmisexample.oasis-open.org/rep1/8e5a512c-8f2d-4387-a283-f3f30bbc312f"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/foldertree" href="http://cmisexample.oasis-open.org/rep1/8e5a512c-8f2d-4387-a283-f3f30bbc312f/foldertree"/>
<atom:link type="application/atom+xml;type=feed" rel="down" href="http://cmisexample.oasis-open.org/rep1/8e5a512c-8f2d-4387-a283-f3f30bbc312f/children"/>
<atom:link type="application/atom+xml;type=entry" rel="up" href="http://cmisexample.oasis-open.org/rep1/f083dd6f-1465-4516-97ce-040ec0c7c05a"/>
<cmisra:numItems>1</cmisra:numItems>
<atom:entry>
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:content src="http://cmisexample.oasis-open.org/rep1/8c2dbba5-ea33-469f-a052-9f01e636c72a"/>
<atom:id>urn:uuid:8c2dbba5-ea33-469f-a052-9f01e636c72a</atom:id>
<atom:title type="text">CMIS Example Doc as Invoice type</atom:title>
<atom:updated>2010-01-25T10:20:59.380-08:00</atom:updated>
<atom:link rel="self" href="http://cmisexample.oasis-open.org/rep1/8c2dbba5-ea33-469f-a052-9f01e636c72a"/>
<atom:link rel="edit" href="http://cmisexample.oasis-open.org/rep1/8c2dbba5-ea33-469f-a052-9f01e636c72a"/>
<atom:link type="application/cmis+xml;type=allowableActions" rel="http://docs.oasis-open.org/ns/cmis/link/200908/allowableactions" href="http://cmisexample.oasis-open.org/rep1/8c2dbba5-ea33-469f-a052-9f01e636c72a/allowableactions"/>
<atom:link type="application/atom+xml;type=entry" rel="describedby" href="http://cmisexample.oasis-open.org/rep1/8c2dbba5-ea33-469f-a052-9f01e636c72a/type"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1//service"/>
<atom:published>2010-01-25T10:20:59.380-08:00</atom:published>
<atom:summary type="html">HTML summary of Entry 8c2dbba5-ea33-469f-a052-9f01e636c72a</atom:summary>
<atom:link rel="edit-media" href="http://cmisexample.oasis-open.org/rep1/8c2dbba5-ea33-469f-a052-9f01e636c72a/edit-media"/>
<atom:link rel="alternate" href="http://cmisexample.oasis-open.org/rep1/8c2dbba5-ea33-469f-a052-9f01e636c72a/alternate"/>
<atom:link type="application/atom+xml;type=feed" rel="up" href="http://cmisexample.oasis-open.org/rep1/8c2dbba5-ea33-469f-a052-9f01e636c72a/parents"/>
<atom:link type="application/atom+xml;type=feed" rel="version-history" href="http://cmisexample.oasis-open.org/rep1/8c2dbba5-ea33-469f-a052-9f01e636c72a/allversions"/>
<atom:link type="application/atom+xml;type=entry" rel="current-version" href="http://cmisexample.oasis-open.org/rep1/8c2dbba5-ea33-469f-a052-9f01e636c72a/latest"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/relationships" href="http://cmisexample.oasis-open.org/rep1/8c2dbba5-ea33-469f-a052-9f01e636c72a/relationships"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/policies" href="http://cmisexample.oasis-open.org/rep1/8c2dbba5-ea33-469f-a052-9f01e636c72a/policies"/>
<atom:link type="application/cmisacl+xml" rel="http://docs.oasis-open.org/ns/cmis/link/200908/acl" href="http://cmisexample.oasis-open.org/rep1/8c2dbba5-ea33-469f-a052-9f01e636c72a/acl"/>
<cmisra:object>
<cmis:properties>
<cmis:propertyId localName="rep-cmis:objectId" propertyDefinitionId="cmis:objectId">
<cmis:value>8c2dbba5-ea33-469f-a052-9f01e636c72a</cmis:value>
</cmis:propertyId>
<cmis:propertyId localName="rep-cmis:objectTypeId" propertyDefinitionId="cmis:objectTypeId">
<cmis:value>invoice</cmis:value>
</cmis:propertyId>
<cmis:propertyString localName="rep-cmis:name" propertyDefinitionId="cmis:name">
<cmis:value>CMIS Example Doc as Invoice type</cmis:value>
</cmis:propertyString>
<cmis:propertyDateTime localName="rep-cmis:creationDate" propertyDefinitionId="cmis:creationDate">
<cmis:value>2010-01-25T10:20:59.380-08:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyDateTime localName="rep-cmis:lastModificationDate" propertyDefinitionId="cmis:lastModificationDate">
<cmis:value>2010-01-25T10:20:59.380-08:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyId localName="rep-cmis:baseTypeId" propertyDefinitionId="cmis:baseTypeId">
<cmis:value>cmis:document</cmis:value>
</cmis:propertyId>
<cmis:propertyString localName="rep-cmis:lastModifiedBy" propertyDefinitionId="cmis:lastModifiedBy">
<cmis:value>Al Brown</cmis:value>
</cmis:propertyString>
<cmis:propertyString localName="rep-cmis:createdBy" propertyDefinitionId="cmis:createdBy">
<cmis:value>Al Brown</cmis:value>
</cmis:propertyString>
<cmis:propertyBoolean localName="rep-cmis:isLatestVersion" propertyDefinitionId="cmis:isLatestVersion">
<cmis:value>true</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean localName="rep-cmis:isVersionSeriesCheckedOut" propertyDefinitionId="cmis:isVersionSeriesCheckedOut">
<cmis:value>false</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean localName="rep-cmis:isMajorVersion" propertyDefinitionId="cmis:isMajorVersion">
<cmis:value>false</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean localName="rep-cmis:isLatestMajorVersion" propertyDefinitionId="cmis:isLatestMajorVersion">
<cmis:value>false</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean localName="rep-cmis:isImmutable" propertyDefinitionId="cmis:isImmutable">
<cmis:value>false</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyString localName="rep-cmis:checkinComment" propertyDefinitionId="cmis:checkinComment">
<cmis:value>Checkin comment</cmis:value>
</cmis:propertyString>
<cmis:propertyString localName="rep-cmis:versionLabel" propertyDefinitionId="cmis:versionLabel">
<cmis:value>0.1</cmis:value>
</cmis:propertyString>
<cmis:propertyString localName="rep-cmis:contentStreamMimeType" propertyDefinitionId="cmis:contentStreamMimeType">
<cmis:value>text/plain</cmis:value>
</cmis:propertyString>
<cmis:propertyString localName="rep-cmis:contentStreamFileName" propertyDefinitionId="cmis:contentStreamFileName">
<cmis:value>text.txt</cmis:value>
</cmis:propertyString>
<cmis:propertyInteger localName="rep-cmis:contentStreamLength" propertyDefinitionId="cmis:contentStreamLength">
<cmis:value>4234</cmis:value>
</cmis:propertyInteger>
<cmis:propertyString displayName="Keywords for Document" localName="keywords" propertyDefinitionId="keywords">
<cmis:value>document</cmis:value>
<cmis:value>example</cmis:value>
<cmis:value>sample</cmis:value>
<cmis:value>cmis</cmis:value>
</cmis:propertyString>
</cmis:properties>
</cmisra:object>
<cmisra:pathSegment>invoice1.pdf</cmisra:pathSegment>
</atom:entry>
</atom:feed>
</cmisra:children>
</atom:entry>
</atom:feed>
Please also see the example documents included with the schema.
The following arguments may be supplied. Please see the domain model for more information:
This deletes the folder and all sub-folders. The following arguments may be supplied. Please see the domain model for more information:
Status Code:
If the delete method does not delete all items, invoking GET with infinite depth on this URI will return the items not deleted. Subsequent DELETE methods can be invoked on this URI.
Note: If the repository does not implement get on this resource, or the canGetDescendants is false, there is no mechanism to identify the resources that were not removed.
This is a hierarchical feed comprising all the folders under a specified folder. This is available via the link relation foldertree with media type application/atom+xml;type=feed. Please see the Hierarchical Atom Entries for more information on format.
CMIS Services:
GET: getFolderTree
DELETE: deleteTree
Media Type: application/atom +xml;type=feed
Link Relations:
This feed contains a set of atom entries for each sub-folder in the folder.
The following CMIS Atom extension element MAY be included inside the atom feed:
The following CMIS Atom extension element MUST be included inside the atom entries:
Example:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<atom:feed xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<atom:title type="text">FolderTree Feed of Folder1</atom:title>
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:updated>2010-01-25T10:20:59.521-08:00</atom:updated>
<atom:id>urn:uuid:f87e5678-dd24-4214-9e71-635f060beb7d</atom:id>
<atom:link type="application/atom+xml;type=feed" rel="self" href="http://cmisexample.oasis-open.org/rep1/6e327a3c-a246-4cee-8176-b65edc3e1854/3"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1//service"/>
<atom:link type="application/atom+xml;type=entry" rel="via" href="http://cmisexample.oasis-open.org/rep1/6e327a3c-a246-4cee-8176-b65edc3e1854"/>
<atom:link type="application/cmistree+xml" rel="down" href="http://cmisexample.oasis-open.org/rep1/6e327a3c-a246-4cee-8176-b65edc3e1854/tree"/>
<atom:link type="application/atom+xml;type=feed" rel="down" href="http://cmisexample.oasis-open.org/rep1/6e327a3c-a246-4cee-8176-b65edc3e1854/children"/>
<atom:link type="application/atom+xml;type=entry" rel="up" href="http://cmisexample.oasis-open.org/rep1/3056c4d7-4e16-49cb-a750-ad7a3844a1aa"/>
<cmisra:numItems>1</cmisra:numItems>
<atom:entry>
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:content src="http://cmisexample.oasis-open.org/rep1/c7b5a83e-37b6-4f5a-b646-50892252a180"/>
<atom:id>urn:uuid:c7b5a83e-37b6-4f5a-b646-50892252a180</atom:id>
<atom:title type="text">Customer Folder</atom:title>
<atom:updated>2010-01-25T10:20:59.521-08:00</atom:updated>
<atom:link rel="self" href="http://cmisexample.oasis-open.org/rep1/c7b5a83e-37b6-4f5a-b646-50892252a180"/>
<atom:link rel="edit" href="http://cmisexample.oasis-open.org/rep1/c7b5a83e-37b6-4f5a-b646-50892252a180"/>
<atom:link type="application/cmis+xml;type=allowableActions" rel="http://docs.oasis-open.org/ns/cmis/link/200908/allowableactions" href="http://cmisexample.oasis-open.org/rep1/c7b5a83e-37b6-4f5a-b646-50892252a180/allowableactions"/>
<atom:link type="application/atom+xml;type=entry" rel="describedby" href="http://cmisexample.oasis-open.org/rep1/c7b5a83e-37b6-4f5a-b646-50892252a180/type"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1//service"/>
<atom:published>2010-01-25T10:20:59.521-08:00</atom:published>
<atom:summary type="html">HTML summary of Entry c7b5a83e-37b6-4f5a-b646-50892252a180</atom:summary>
<atom:link type="application/atom+xml;type=entry" rel="up" href="http://cmisexample.oasis-open.org/rep1/c7b5a83e-37b6-4f5a-b646-50892252a180/up"/>
<atom:link type="application/atom+xml;type=feed" rel="down" href="http://cmisexample.oasis-open.org/rep1/c7b5a83e-37b6-4f5a-b646-50892252a180/children"/>
<atom:link type="application/cmistree+xml" rel="down" href="http://cmisexample.oasis-open.org/rep1/c7b5a83e-37b6-4f5a-b646-50892252a180/tree"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/foldertree" href="http://cmisexample.oasis-open.org/rep1/c7b5a83e-37b6-4f5a-b646-50892252a180/foldertree"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/relationships" href="http://cmisexample.oasis-open.org/rep1/c7b5a83e-37b6-4f5a-b646-50892252a180/relationships"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/policies" href="http://cmisexample.oasis-open.org/rep1/c7b5a83e-37b6-4f5a-b646-50892252a180/policies"/>
<atom:link type="application/cmisacl+xml" rel="http://docs.oasis-open.org/ns/cmis/link/200908/acl" href="http://cmisexample.oasis-open.org/rep1/c7b5a83e-37b6-4f5a-b646-50892252a180/acl"/>
<cmisra:object>
<cmis:properties>
<cmis:propertyId localName="rep-cmis:objectId" propertyDefinitionId="cmis:objectId">
<cmis:value>c7b5a83e-37b6-4f5a-b646-50892252a180</cmis:value>
</cmis:propertyId>
<cmis:propertyId localName="rep-cmis:objectTypeId" propertyDefinitionId="cmis:objectTypeId">
<cmis:value>customer</cmis:value>
</cmis:propertyId>
<cmis:propertyString localName="rep-cmis:name" propertyDefinitionId="cmis:name">
<cmis:value>Customer Folder</cmis:value>
</cmis:propertyString>
<cmis:propertyDateTime localName="rep-cmis:creationDate" propertyDefinitionId="cmis:creationDate">
<cmis:value>2010-01-25T10:20:59.521-08:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyDateTime localName="rep-cmis:lastModificationDate" propertyDefinitionId="cmis:lastModificationDate">
<cmis:value>2010-01-25T10:20:59.521-08:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyId localName="rep-cmis:baseTypeId" propertyDefinitionId="cmis:baseTypeId">
<cmis:value>cmis:folder</cmis:value>
</cmis:propertyId>
<cmis:propertyString localName="rep-cmis:lastModifiedBy" propertyDefinitionId="cmis:lastModifiedBy">
<cmis:value>Al Brown</cmis:value>
</cmis:propertyString>
<cmis:propertyString localName="rep-cmis:createdBy" propertyDefinitionId="cmis:createdBy">
<cmis:value>Al Brown</cmis:value>
</cmis:propertyString>
<cmis:propertyId localName="rep-cmis:parentId" propertyDefinitionId="cmis:parentId">
<cmis:value>c7b5a83e-37b6-4f5a-b646-50892252a180up</cmis:value>
</cmis:propertyId>
</cmis:properties>
</cmisra:object>
<cmisra:pathSegment>customer</cmisra:pathSegment>
</atom:entry>
</atom:feed>
Please also see the example documents included with the schema.
The following arguments may be supplied. Please see the domain model for more information:
This is the same as DELETE on Folder Descendants. Please see that section.
This is a feed comprised of all the versions of the given document.
CMIS Services:
GET: getAllVersions
DELETE: deleteAllVersions
Media Type: application/atom+xml;type=feed
The feed SHOULD contain the newest versions at the beginning of the feed.
Link Relations:
This feed contains a set of atom entries for each version in the version series
Example:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<atom:feed xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<atom:title type="text">AllVersions for Document e8abd7cd-b9ec-4dba-9eaa-1bce2ae9977f</atom:title>
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:updated>2010-01-25T10:20:58.896-08:00</atom:updated>
<atom:id>urn:uuid:5dc3d1c1-3e85-4720-acf8-cf98c96a5830</atom:id>
<atom:link type="application/atom+xml;type=feed" rel="self" href="http://cmisexample.oasis-open.org/rep1/e8abd7cd-b9ec-4dba-9eaa-1bce2ae9977f/3"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1//service"/>
<atom:link type="application/atom+xml;type=entry" rel="via" href="http://cmisexample.oasis-open.org/rep1/e8abd7cd-b9ec-4dba-9eaa-1bce2ae9977f"/>
<cmisra:numItems>1</cmisra:numItems>
<atom:entry>
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:content src="http://cmisexample.oasis-open.org/rep1/197033f2-ac11-4911-b5a3-60781fa5c281"/>
<atom:id>urn:uuid:197033f2-ac11-4911-b5a3-60781fa5c281</atom:id>
<atom:title type="text">Invoice (Version1)</atom:title>
<atom:updated>2010-01-25T10:20:58.896-08:00</atom:updated>
<atom:link rel="self" href="http://cmisexample.oasis-open.org/rep1/197033f2-ac11-4911-b5a3-60781fa5c281"/>
<atom:link rel="edit" href="http://cmisexample.oasis-open.org/rep1/197033f2-ac11-4911-b5a3-60781fa5c281"/>
<atom:link type="application/cmis+xml;type=allowableActions" rel="http://docs.oasis-open.org/ns/cmis/link/200908/allowableactions" href="http://cmisexample.oasis-open.org/rep1/197033f2-ac11-4911-b5a3-60781fa5c281/allowableactions"/>
<atom:link type="application/atom+xml;type=entry" rel="describedby" href="http://cmisexample.oasis-open.org/rep1/197033f2-ac11-4911-b5a3-60781fa5c281/type"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1//service"/>
<atom:published>2010-01-25T10:20:58.896-08:00</atom:published>
<atom:summary type="html">HTML summary of Entry 197033f2-ac11-4911-b5a3-60781fa5c281</atom:summary>
<atom:link rel="edit-media" href="http://cmisexample.oasis-open.org/rep1/197033f2-ac11-4911-b5a3-60781fa5c281/edit-media"/>
<atom:link rel="alternate" href="http://cmisexample.oasis-open.org/rep1/197033f2-ac11-4911-b5a3-60781fa5c281/alternate"/>
<atom:link type="application/atom+xml;type=feed" rel="up" href="http://cmisexample.oasis-open.org/rep1/197033f2-ac11-4911-b5a3-60781fa5c281/parents"/>
<atom:link type="application/atom+xml;type=feed" rel="version-history" href="http://cmisexample.oasis-open.org/rep1/197033f2-ac11-4911-b5a3-60781fa5c281/allversions"/>
<atom:link type="application/atom+xml;type=entry" rel="current-version" href="http://cmisexample.oasis-open.org/rep1/197033f2-ac11-4911-b5a3-60781fa5c281/latest"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/relationships" href="http://cmisexample.oasis-open.org/rep1/197033f2-ac11-4911-b5a3-60781fa5c281/relationships"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/policies" href="http://cmisexample.oasis-open.org/rep1/197033f2-ac11-4911-b5a3-60781fa5c281/policies"/>
<atom:link type="application/cmisacl+xml" rel="http://docs.oasis-open.org/ns/cmis/link/200908/acl" href="http://cmisexample.oasis-open.org/rep1/197033f2-ac11-4911-b5a3-60781fa5c281/acl"/>
<cmisra:object>
<cmis:properties>
<cmis:propertyId localName="rep-cmis:objectId" propertyDefinitionId="cmis:objectId">
<cmis:value>197033f2-ac11-4911-b5a3-60781fa5c281</cmis:value>
</cmis:propertyId>
</cmis:properties>
</cmisra:object>
</atom:entry>
</atom:feed>
Please also see the example documents included with the schema.
The following arguments may be supplied. Please see the domain model for more information:
This removes the entire version history of the document.
Success HTTP code: 204
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 and their descendants are returned in the feed which is equivalent to all types in the repository if depth is infinite. The link relation is http://docs.oasis-open.org/ns/cmis/link/200908/typedescendants.
Types are nested using the CMIS hierarchy extension. Please see section 3.2.3.2 Hierarchy Navigation Internet Draft Link Relations.
CMIS Services:
GET: getTypeDescendants
Media Type: application/atom+xml;type=feed
Link Relations:
The following CMIS Atom extension element MAY be included inside the atom feed:
Example:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<atom:feed xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<atom:title type="text">Base Types</atom:title>
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:updated>2010-01-25T10:20:59.911-08:00</atom:updated>
<atom:id>urn:uuid:c5d3d357-33ec-47c1-8436-563e0d94d2e5</atom:id>
<atom:link type="application/atom+xml;type=feed" rel="self" href="http://cmisexample.oasis-open.org/rep1//3"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1//service"/>
<atom:link type="application/atom+xml;type=entry" rel="via" href="http://cmisexample.oasis-open.org/rep1/"/>
<atom:link type="application/atom+xml;type=feed" rel="down" href="http://cmisexample.oasis-open.org/rep1//children"/>
<cmisra:numItems>1</cmisra:numItems>
<atom:entry>
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:content>Type Definition for cmis:document</atom:content>
<atom:id>http://cmisexample.oasis-open.org/rep1/type/cmis:document</atom:id>
<atom:link type="application/atom+xml;type=entry" rel="self" href="http://cmisexample.oasis-open.org/rep1/type/cmis:document"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1/type/cmis:document"/>
<atom:link type="application/atom+xml;type=entry" rel="describedby" href="http://cmisexample.oasis-open.org/rep1/type/cmis:document"/>
<atom:link type="application/atom+xml;type=entry" rel="up" href="http://cmisexample.oasis-open.org/rep1/type/cmis:document/parent"/>
<atom:link type="application/atom+xml;type=feed" rel="down" href="http://cmisexample.oasis-open.org/rep1/type/cmis:document/children/flat"/>
<atom:link type="application/cmistree+xml" rel="down" href="http://cmisexample.oasis-open.org/rep1/type/cmis:document/children/tree"/>
<atom:published>2010-01-25T10:20:59.927-08:00</atom:published>
<atom:summary type="html">HTML summary of Type Definition cmis:document</atom:summary>
<atom:title type="text">Type Definition - cmis:document</atom:title>
<atom:updated>2010-01-25T10:20:59.927-08:00</atom:updated>
<app:edited>2010-01-25T10:20:59.927-08:00</app:edited>
<cmisra:type xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="cmis:cmisTypeDocumentDefinitionType" cmisra:id="cmis:document">
<cmis:id>dtcmis:document</cmis:id>
<cmis:localName>myrepname-cmis:document</cmis:localName>
<cmis:localNamespace xsi:nil="true"/>
<cmis:displayName>cmis:document</cmis:displayName>
<cmis:queryName>cmis:document</cmis:queryName>
<cmis:description>Description for type definition cmis:document</cmis:description>
<cmis:baseId>cmis:document</cmis:baseId>
<cmis:parentId>parent</cmis:parentId>
<cmis:creatable>true</cmis:creatable>
<cmis:fileable>true</cmis:fileable>
<cmis:queryable>false</cmis:queryable>
<cmis:fulltextIndexed>false</cmis:fulltextIndexed>
<cmis:includedInSupertypeQuery>true</cmis:includedInSupertypeQuery>
<cmis:controllablePolicy>true</cmis:controllablePolicy>
<cmis:controllableACL>true</cmis:controllableACL>
<cmis:versionable>true</cmis:versionable>
<cmis:contentStreamAllowed>allowed</cmis:contentStreamAllowed>
</cmisra:type>
<cmisra:children>
<atom:feed>
<atom:title type="text">Children for Document</atom:title>
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:updated>2010-01-25T10:20:59.927-08:00</atom:updated>
<atom:id>urn:uuid:6f1cdc44-bd89-41c0-8fad-89f3ad0f8f30</atom:id>
<atom:link type="application/atom+xml;type=feed" rel="self" href="http://cmisexample.oasis-open.org/rep1/cmis:document/3"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1//service"/>
<atom:link type="application/atom+xml;type=entry" rel="via" href="http://cmisexample.oasis-open.org/rep1/cmis:document"/>
<atom:link type="application/atom+xml;type=feed" rel="down" href="http://cmisexample.oasis-open.org/rep1/cmis:document/children"/>
<atom:link type="application/atom+xml;type=entry" rel="up" href="http://cmisexample.oasis-open.org/rep1/document"/>
<cmisra:numItems>1</cmisra:numItems>
<atom:entry>
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:content>Type Definition for invoice-document</atom:content>
<atom:id>http://cmisexample.oasis-open.org/rep1/type/invoice-document</atom:id>
<atom:link type="application/atom+xml;type=entry" rel="self" href="http://cmisexample.oasis-open.org/rep1/type/invoice-document"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1/type/invoice-document"/>
<atom:link type="application/atom+xml;type=entry" rel="describedby" href="http://cmisexample.oasis-open.org/rep1/type/cmis:document"/>
<atom:link type="application/atom+xml;type=entry" rel="up" href="http://cmisexample.oasis-open.org/rep1/type/invoice-document/parent"/>
<atom:link type="application/atom+xml;type=feed" rel="down" href="http://cmisexample.oasis-open.org/rep1/type/invoice-document/children/flat"/>
<atom:link type="application/cmistree+xml" rel="down" href="http://cmisexample.oasis-open.org/rep1/type/invoice-document/children/tree"/>
<atom:published>2010-01-25T10:20:59.927-08:00</atom:published>
<atom:summary type="html">HTML summary of Type Definition invoice-document</atom:summary>
<atom:title type="text">Type Definition - invoice-document</atom:title>
<atom:updated>2010-01-25T10:20:59.927-08:00</atom:updated>
<app:edited>2010-01-25T10:20:59.927-08:00</app:edited>
<cmisra:type xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="cmis:cmisTypeDocumentDefinitionType" cmisra:id="invoice-document">
<cmis:id>dtinvoice-document</cmis:id>
<cmis:localName>myrepname-invoice-document</cmis:localName>
<cmis:localNamespace xsi:nil="true"/>
<cmis:displayName>invoice-document</cmis:displayName>
<cmis:queryName>invoice-document</cmis:queryName>
<cmis:description>Description for type definition invoice-document</cmis:description>
<cmis:baseId>cmis:document</cmis:baseId>
<cmis:parentId>parent</cmis:parentId>
<cmis:creatable>true</cmis:creatable>
<cmis:fileable>true</cmis:fileable>
<cmis:queryable>false</cmis:queryable>
<cmis:fulltextIndexed>false</cmis:fulltextIndexed>
<cmis:includedInSupertypeQuery>true</cmis:includedInSupertypeQuery>
<cmis:controllablePolicy>true</cmis:controllablePolicy>
<cmis:controllableACL>true</cmis:controllableACL>
<cmis:versionable>true</cmis:versionable>
<cmis:contentStreamAllowed>allowed</cmis:contentStreamAllowed>
</cmisra:type>
</atom:entry>
</atom:feed>
</cmisra:children>
</atom:entry>
<atom:entry>
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:content>Type Definition for cmis:folder</atom:content>
<atom:id>http://cmisexample.oasis-open.org/rep1/type/cmis:folder</atom:id>
<atom:link type="application/atom+xml;type=entry" rel="self" href="http://cmisexample.oasis-open.org/rep1/type/cmis:folder"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1/type/cmis:folder"/>
<atom:link type="application/atom+xml;type=entry" rel="describedby" href="http://cmisexample.oasis-open.org/rep1/type/cmis:folder"/>
<atom:link type="application/atom+xml;type=entry" rel="up" href="http://cmisexample.oasis-open.org/rep1/type/cmis:folder/parent"/>
<atom:link type="application/atom+xml;type=feed" rel="down" href="http://cmisexample.oasis-open.org/rep1/type/cmis:folder/children/flat"/>
<atom:link type="application/cmistree+xml" rel="down" href="http://cmisexample.oasis-open.org/rep1/type/cmis:folder/children/tree"/>
<atom:published>2010-01-25T10:20:59.927-08:00</atom:published>
<atom:summary type="html">HTML summary of Type Definition cmis:folder</atom:summary>
<atom:title type="text">Type Definition - cmis:folder</atom:title>
<atom:updated>2010-01-25T10:20:59.927-08:00</atom:updated>
<app:edited>2010-01-25T10:20:59.927-08:00</app:edited>
<cmisra:type xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="cmis:cmisTypeFolderDefinitionType" cmisra:id="cmis:folder">
<cmis:id>dtcmis:folder</cmis:id>
<cmis:localName>myrepname-cmis:folder</cmis:localName>
<cmis:localNamespace xsi:nil="true"/>
<cmis:displayName>cmis:folder</cmis:displayName>
<cmis:queryName>cmis:folder</cmis:queryName>
<cmis:description>Description for type definition cmis:folder</cmis:description>
<cmis:baseId>cmis:folder</cmis:baseId>
<cmis:parentId>parent</cmis:parentId>
<cmis:creatable>true</cmis:creatable>
<cmis:fileable>true</cmis:fileable>
<cmis:queryable>false</cmis:queryable>
<cmis:fulltextIndexed>false</cmis:fulltextIndexed>
<cmis:includedInSupertypeQuery>true</cmis:includedInSupertypeQuery>
<cmis:controllablePolicy>true</cmis:controllablePolicy>
<cmis:controllableACL>true</cmis:controllableACL>
</cmisra:type>
<cmisra:children>
<atom:feed>
<atom:title type="text">Children for Folder</atom:title>
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:updated>2010-01-25T10:20:59.927-08:00</atom:updated>
<atom:id>urn:uuid:361a3ac1-f7f7-47cb-b941-ae1200213fe0</atom:id>
<atom:link type="application/atom+xml;type=feed" rel="self" href="http://cmisexample.oasis-open.org/rep1/cmis:folder/3"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1//service"/>
<atom:link type="application/atom+xml;type=entry" rel="via" href="http://cmisexample.oasis-open.org/rep1/cmis:folder"/>
<atom:link type="application/atom+xml;type=feed" rel="down" href="http://cmisexample.oasis-open.org/rep1/cmis:folder/children"/>
<atom:link type="application/atom+xml;type=entry" rel="up" href="http://cmisexample.oasis-open.org/rep1/cmis:folder"/>
<cmisra:numItems>1</cmisra:numItems>
<atom:entry>
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:content>Type Definition for customer-folder</atom:content>
<atom:id>http://cmisexample.oasis-open.org/rep1/type/customer-folder</atom:id>
<atom:link type="application/atom+xml;type=entry" rel="self" href="http://cmisexample.oasis-open.org/rep1/type/customer-folder"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1/type/customer-folder"/>
<atom:link type="application/atom+xml;type=entry" rel="describedby" href="http://cmisexample.oasis-open.org/rep1/type/cmis:folder"/>
<atom:link type="application/atom+xml;type=entry" rel="up" href="http://cmisexample.oasis-open.org/rep1/type/customer-folder/parent"/>
<atom:link type="application/atom+xml;type=feed" rel="down" href="http://cmisexample.oasis-open.org/rep1/type/customer-folder/children/flat"/>
<atom:link type="application/cmistree+xml" rel="down" href="http://cmisexample.oasis-open.org/rep1/type/customer-folder/children/tree"/>
<atom:published>2010-01-25T10:20:59.927-08:00</atom:published>
<atom:summary type="html">HTML summary of Type Definition customer-folder</atom:summary>
<atom:title type="text">Type Definition - customer-folder</atom:title>
<atom:updated>2010-01-25T10:20:59.927-08:00</atom:updated>
<app:edited>2010-01-25T10:20:59.927-08:00</app:edited>
<cmisra:type xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="cmis:cmisTypeFolderDefinitionType" cmisra:id="customer-folder">
<cmis:id>dtcustomer-folder</cmis:id>
<cmis:localName>myrepname-customer-folder</cmis:localName>
<cmis:localNamespace xsi:nil="true"/>
<cmis:displayName>customer-folder</cmis:displayName>
<cmis:queryName>customer-folder</cmis:queryName>
<cmis:description>Description for type definition customer-folder</cmis:description>
<cmis:baseId>cmis:folder</cmis:baseId>
<cmis:parentId>parent</cmis:parentId>
<cmis:creatable>true</cmis:creatable>
<cmis:fileable>true</cmis:fileable>
<cmis:queryable>false</cmis:queryable>
<cmis:fulltextIndexed>false</cmis:fulltextIndexed>
<cmis:includedInSupertypeQuery>true</cmis:includedInSupertypeQuery>
<cmis:controllablePolicy>true</cmis:controllablePolicy>
<cmis:controllableACL>true</cmis:controllableACL>
</cmisra:type>
</atom:entry>
</atom:feed>
</cmisra:children>
</atom:entry>
<atom:entry>
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:content>Type Definition for cmis:relationship</atom:content>
<atom:id>http://cmisexample.oasis-open.org/rep1/type/cmis:relationship</atom:id>
<atom:link type="application/atom+xml;type=entry" rel="self" href="http://cmisexample.oasis-open.org/rep1/type/cmis:relationship"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1/type/cmis:relationship"/>
<atom:link type="application/atom+xml;type=entry" rel="describedby" href="http://cmisexample.oasis-open.org/rep1/type/cmis:relationship"/>
<atom:link type="application/atom+xml;type=entry" rel="up" href="http://cmisexample.oasis-open.org/rep1/type/cmis:relationship/parent"/>
<atom:link type="application/atom+xml;type=feed" rel="down" href="http://cmisexample.oasis-open.org/rep1/type/cmis:relationship/children/flat"/>
<atom:link type="application/cmistree+xml" rel="down" href="http://cmisexample.oasis-open.org/rep1/type/cmis:relationship/children/tree"/>
<atom:published>2010-01-25T10:20:59.943-08:00</atom:published>
<atom:summary type="html">HTML summary of Type Definition cmis:relationship</atom:summary>
<atom:title type="text">Type Definition - cmis:relationship</atom:title>
<atom:updated>2010-01-25T10:20:59.943-08:00</atom:updated>
<app:edited>2010-01-25T10:20:59.943-08:00</app:edited>
<cmisra:type xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="cmis:cmisTypeRelationshipDefinitionType" cmisra:id="cmis:relationship">
<cmis:id>dtcmis:relationship</cmis:id>
<cmis:localName>myrepname-cmis:relationship</cmis:localName>
<cmis:localNamespace xsi:nil="true"/>
<cmis:displayName>cmis:relationship</cmis:displayName>
<cmis:queryName>cmis:relationship</cmis:queryName>
<cmis:description>Description for type definition cmis:relationship</cmis:description>
<cmis:baseId>cmis:relationship</cmis:baseId>
<cmis:parentId>parent</cmis:parentId>
<cmis:creatable>true</cmis:creatable>
<cmis:fileable>false</cmis:fileable>
<cmis:queryable>false</cmis:queryable>
<cmis:fulltextIndexed>false</cmis:fulltextIndexed>
<cmis:includedInSupertypeQuery>true</cmis:includedInSupertypeQuery>
<cmis:controllablePolicy>true</cmis:controllablePolicy>
<cmis:controllableACL>true</cmis:controllableACL>
<cmis:allowedSourceTypes>invoice</cmis:allowedSourceTypes>
<cmis:allowedSourceTypes>capitalinvoice</cmis:allowedSourceTypes>
<cmis:allowedTargetTypes>customer</cmis:allowedTargetTypes>
</cmisra:type>
<cmisra:children>
<atom:feed>
<atom:title type="text">Children for Relationship</atom:title>
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:updated>2010-01-25T10:20:59.943-08:00</atom:updated>
<atom:id>urn:uuid:9394ff3d-87c4-48c9-a951-ba725560faac</atom:id>
<atom:link type="application/atom+xml;type=feed" rel="self" href="http://cmisexample.oasis-open.org/rep1/cmis:relationship/3"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1//service"/>
<atom:link type="application/atom+xml;type=entry" rel="via" href="http://cmisexample.oasis-open.org/rep1/cmis:relationship"/>
<atom:link type="application/atom+xml;type=feed" rel="down" href="http://cmisexample.oasis-open.org/rep1/cmis:relationship/children"/>
<atom:link type="application/atom+xml;type=entry" rel="up" href="http://cmisexample.oasis-open.org/rep1/cmis:folder"/>
<cmisra:numItems>1</cmisra:numItems>
<atom:entry>
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:content>Type Definition for customer-relationship</atom:content>
<atom:id>http://cmisexample.oasis-open.org/rep1/type/customer-relationship</atom:id>
<atom:link type="application/atom+xml;type=entry" rel="self" href="http://cmisexample.oasis-open.org/rep1/type/customer-relationship"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1/type/customer-relationship"/>
<atom:link type="application/atom+xml;type=entry" rel="describedby" href="http://cmisexample.oasis-open.org/rep1/type/cmis:relationship"/>
<atom:link type="application/atom+xml;type=entry" rel="up" href="http://cmisexample.oasis-open.org/rep1/type/customer-relationship/parent"/>
<atom:link type="application/atom+xml;type=feed" rel="down" href="http://cmisexample.oasis-open.org/rep1/type/customer-relationship/children/flat"/>
<atom:link type="application/cmistree+xml" rel="down" href="http://cmisexample.oasis-open.org/rep1/type/customer-relationship/children/tree"/>
<atom:published>2010-01-25T10:20:59.943-08:00</atom:published>
<atom:summary type="html">HTML summary of Type Definition customer-relationship</atom:summary>
<atom:title type="text">Type Definition - customer-relationship</atom:title>
<atom:updated>2010-01-25T10:20:59.943-08:00</atom:updated>
<app:edited>2010-01-25T10:20:59.943-08:00</app:edited>
<cmisra:type xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="cmis:cmisTypeRelationshipDefinitionType" cmisra:id="customer-relationship">
<cmis:id>dtcustomer-relationship</cmis:id>
<cmis:localName>myrepname-customer-relationship</cmis:localName>
<cmis:localNamespace xsi:nil="true"/>
<cmis:displayName>customer-relationship</cmis:displayName>
<cmis:queryName>customer-relationship</cmis:queryName>
<cmis:description>Description for type definition customer-relationship</cmis:description>
<cmis:baseId>cmis:relationship</cmis:baseId>
<cmis:parentId>parent</cmis:parentId>
<cmis:creatable>true</cmis:creatable>
<cmis:fileable>false</cmis:fileable>
<cmis:queryable>false</cmis:queryable>
<cmis:fulltextIndexed>false</cmis:fulltextIndexed>
<cmis:includedInSupertypeQuery>true</cmis:includedInSupertypeQuery>
<cmis:controllablePolicy>true</cmis:controllablePolicy>
<cmis:controllableACL>true</cmis:controllableACL>
<cmis:allowedSourceTypes>invoice</cmis:allowedSourceTypes>
<cmis:allowedSourceTypes>capitalinvoice</cmis:allowedSourceTypes>
<cmis:allowedTargetTypes>customer</cmis:allowedTargetTypes>
</cmisra:type>
</atom:entry>
</atom:feed>
</cmisra:children>
</atom:entry>
<atom:entry>
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:content>Type Definition for cmis:policy</atom:content>
<atom:id>http://cmisexample.oasis-open.org/rep1/type/cmis:policy</atom:id>
<atom:link type="application/atom+xml;type=entry" rel="self" href="http://cmisexample.oasis-open.org/rep1/type/cmis:policy"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1/type/cmis:policy"/>
<atom:link type="application/atom+xml;type=entry" rel="describedby" href="http://cmisexample.oasis-open.org/rep1/type/cmis:policy"/>
<atom:link type="application/atom+xml;type=entry" rel="up" href="http://cmisexample.oasis-open.org/rep1/type/cmis:policy/parent"/>
<atom:link type="application/atom+xml;type=feed" rel="down" href="http://cmisexample.oasis-open.org/rep1/type/cmis:policy/children/flat"/>
<atom:link type="application/cmistree+xml" rel="down" href="http://cmisexample.oasis-open.org/rep1/type/cmis:policy/children/tree"/>
<atom:published>2010-01-25T10:20:59.943-08:00</atom:published>
<atom:summary type="html">HTML summary of Type Definition cmis:policy</atom:summary>
<atom:title type="text">Type Definition - cmis:policy</atom:title>
<atom:updated>2010-01-25T10:20:59.943-08:00</atom:updated>
<app:edited>2010-01-25T10:20:59.943-08:00</app:edited>
<cmisra:type xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="cmis:cmisTypePolicyDefinitionType" cmisra:id="cmis:policy">
<cmis:id>dtcmis:policy</cmis:id>
<cmis:localName>myrepname-cmis:policy</cmis:localName>
<cmis:localNamespace xsi:nil="true"/>
<cmis:displayName>cmis:policy</cmis:displayName>
<cmis:queryName>cmis:policy</cmis:queryName>
<cmis:description>Description for type definition cmis:policy</cmis:description>
<cmis:baseId>cmis:policy</cmis:baseId>
<cmis:parentId>parent</cmis:parentId>
<cmis:creatable>true</cmis:creatable>
<cmis:fileable>false</cmis:fileable>
<cmis:queryable>false</cmis:queryable>
<cmis:fulltextIndexed>false</cmis:fulltextIndexed>
<cmis:includedInSupertypeQuery>true</cmis:includedInSupertypeQuery>
<cmis:controllablePolicy>true</cmis:controllablePolicy>
<cmis:controllableACL>true</cmis:controllableACL>
</cmisra:type>
</atom:entry>
</atom:feed>
Please also see the example documents included with the schema.
The following arguments may be supplied. Please see the domain model for more information:
For any HTTP verb not specified on a resource,each implementation MAY chose to implement that HTTP verb in a repository-specific manner.
This represents a type definition in the repository. This is enclosed as an atom entry
CMIS Services:
GET: getTypeDefinition
Media Type: application/atom+xml;type=entry
Link Relations:
The following CMIS Atom extension element MUST be included inside the atom entry:
There are no optional arguments for this resource.
Request:
GET /obj/5070f89a-6f00-4acf-84e9-d8836a6c7d23 HTTP/1.1
Host: example.org
Response:
Date: Mon, 25 Jan 2010 10:21:00 -0800
Content-Length: 2995
Content-Type: application/atom+xml;type=entry
Location: http://cmisexample.oasis-open.org/rep1/cmis:document
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<atom:entry xmlns:app="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:content>Type Definition for cmis:document</atom:content>
<atom:id>http://cmisexample.oasis-open.org/rep1/type/cmis:document</atom:id>
<atom:link type="application/atom+xml;type=entry" rel="self" href="http://cmisexample.oasis-open.org/rep1/type/cmis:document"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1/type/cmis:document"/>
<atom:link type="application/atom+xml;type=entry" rel="describedby" href="http://cmisexample.oasis-open.org/rep1/type/cmis:document"/>
<atom:link type="application/atom+xml;type=entry" rel="up" href="http://cmisexample.oasis-open.org/rep1/type/cmis:document/parent"/>
<atom:link type="application/atom+xml;type=feed" rel="down" href="http://cmisexample.oasis-open.org/rep1/type/cmis:document/children/flat"/>
<atom:link type="application/cmistree+xml" rel="down" href="http://cmisexample.oasis-open.org/rep1/type/cmis:document/children/tree"/>
<atom:published>2010-01-25T10:21:00.380-08:00</atom:published>
<atom:summary type="html">HTML summary of Type Definition cmis:document</atom:summary>
<atom:title type="text">Type Definition - cmis:document</atom:title>
<atom:updated>2010-01-25T10:21:00.380-08:00</atom:updated>
<app:edited>2010-01-25T10:21:00.380-08:00</app:edited>
<cmisra:type xsi:type="cmis:cmisTypeDocumentDefinitionType" cmisra:id="cmis:document" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<cmis:id>dtcmis:document</cmis:id>
<cmis:localName>myrepname-cmis:document</cmis:localName>
<cmis:localNamespace xsi:nil="true"/>
<cmis:displayName>cmis:document</cmis:displayName>
<cmis:queryName>cmis:document</cmis:queryName>
<cmis:description>Description for type definition cmis:document</cmis:description>
<cmis:baseId>cmis:document</cmis:baseId>
<cmis:parentId>parent</cmis:parentId>
<cmis:creatable>true</cmis:creatable>
<cmis:fileable>true</cmis:fileable>
<cmis:queryable>false</cmis:queryable>
<cmis:fulltextIndexed>false</cmis:fulltextIndexed>
<cmis:includedInSupertypeQuery>true</cmis:includedInSupertypeQuery>
<cmis:controllablePolicy>true</cmis:controllablePolicy>
<cmis:controllableACL>true</cmis:controllableACL>
<cmis:versionable>true</cmis:versionable>
<cmis:contentStreamAllowed>allowed</cmis:contentStreamAllowed>
</cmisra:type>
</atom:entry>
Please also see the example documents included with the schema.
This is a CMIS Document instance.
CMIS Services:
GET: getObject, getObjectOfLatestVersion (getObject)
PUT: updateProperties
DELETE: deleteObject
Media Type: application/atom+xml;type=entry
Link Relations:
The following CMIS Atom extension element MUST be included inside the atom entry:
The following arguments may be supplied. Please see the domain model for more information:
Request:
GET /obj/7c088887-5991-4b3a-9ad3-16379127e647?filter=cmis:objectId HTTP/1.1
Host: example.org
Response:
Date: Mon, 25 Jan 2010 10:21:00 -0800
Content-Length: 3403
Content-Type: application/atom+xml;type=entry
Location: /obj/7c088887-5991-4b3a-9ad3-16379127e647?filter=cmis:objectId
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<atom:entry xmlns:app="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:content src="http://cmisexample.oasis-open.org/rep1/7c088887-5991-4b3a-9ad3-16379127e647"/>
<atom:id>urn:uuid:7c088887-5991-4b3a-9ad3-16379127e647</atom:id>
<atom:title type="text">Invoice</atom:title>
<atom:updated>2010-01-25T10:21:00.193-08:00</atom:updated>
<atom:link rel="self" href="http://cmisexample.oasis-open.org/rep1/7c088887-5991-4b3a-9ad3-16379127e647"/>
<atom:link rel="edit" href="http://cmisexample.oasis-open.org/rep1/7c088887-5991-4b3a-9ad3-16379127e647"/>
<atom:link type="application/cmis+xml;type=allowableActions" rel="http://docs.oasis-open.org/ns/cmis/link/200908/allowableactions" href="http://cmisexample.oasis-open.org/rep1/7c088887-5991-4b3a-9ad3-16379127e647/allowableactions"/>
<atom:link type="application/atom+xml;type=entry" rel="describedby" href="http://cmisexample.oasis-open.org/rep1/7c088887-5991-4b3a-9ad3-16379127e647/type"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1//service"/>
<atom:published>2010-01-25T10:21:00.193-08:00</atom:published>
<atom:summary type="html">HTML summary of Entry 7c088887-5991-4b3a-9ad3-16379127e647</atom:summary>
<atom:link rel="edit-media" href="http://cmisexample.oasis-open.org/rep1/7c088887-5991-4b3a-9ad3-16379127e647/edit-media"/>
<atom:link rel="alternate" href="http://cmisexample.oasis-open.org/rep1/7c088887-5991-4b3a-9ad3-16379127e647/alternate"/>
<atom:link type="application/atom+xml;type=feed" rel="up" href="http://cmisexample.oasis-open.org/rep1/7c088887-5991-4b3a-9ad3-16379127e647/parents"/>
<atom:link type="application/atom+xml;type=feed" rel="version-history" href="http://cmisexample.oasis-open.org/rep1/7c088887-5991-4b3a-9ad3-16379127e647/allversions"/>
<atom:link type="application/atom+xml;type=entry" rel="current-version" href="http://cmisexample.oasis-open.org/rep1/7c088887-5991-4b3a-9ad3-16379127e647/latest"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/relationships" href="http://cmisexample.oasis-open.org/rep1/7c088887-5991-4b3a-9ad3-16379127e647/relationships"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/policies" href="http://cmisexample.oasis-open.org/rep1/7c088887-5991-4b3a-9ad3-16379127e647/policies"/>
<atom:link type="application/cmisacl+xml" rel="http://docs.oasis-open.org/ns/cmis/link/200908/acl" href="http://cmisexample.oasis-open.org/rep1/7c088887-5991-4b3a-9ad3-16379127e647/acl"/>
<cmisra:object>
<cmis:properties>
<cmis:propertyId localName="rep-cmis:objectId" propertyDefinitionId="cmis:objectId">
<cmis:value>7c088887-5991-4b3a-9ad3-16379127e647</cmis:value>
</cmis:propertyId>
</cmis:properties>
</cmisra:object>
</atom:entry>
Please also see the example documents included with the schema.
This does a replacement of the atom entry with the atom entry document specified. If readwrite properties are not included, the repository SHOULD NOT modify them.
The server SHOULD respond with:
This removes the document.
Success HTTP code: 204
This is the private working copy of the document (checkedout version of document)
CMIS Services:
GET: getObject
PUT: updateProperties or checkIn
DELETE: cancelCheckOut
Media Type: application/atom+xml;type=entry
Link relations:
The following element MUST be included inside the atom entry:
The following arguments may be supplied. Please see the domain model for more information:
Request:
GET /obj/3240a476-6de6-4ab2-978d-85ca2f4f3206?filter=cmis:objectId HTTP/1.1
Host: example.org
Response:
Date: Mon, 25 Jan 2010 10:21:00 -0800
Content-Length: 3564
Content-Type: application/atom+xml;type=entry
Location: /obj/3240a476-6de6-4ab2-978d-85ca2f4f3206?filter=cmis:objectId
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<atom:entry xmlns:app="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:content src="http://cmisexample.oasis-open.org/rep1/3240a476-6de6-4ab2-978d-85ca2f4f3206"/>
<atom:id>urn:uuid:3240a476-6de6-4ab2-978d-85ca2f4f3206</atom:id>
<atom:title type="text">Invoice</atom:title>
<atom:updated>2010-01-25T10:21:00.333-08:00</atom:updated>
<atom:link rel="self" href="http://cmisexample.oasis-open.org/rep1/3240a476-6de6-4ab2-978d-85ca2f4f3206"/>
<atom:link rel="edit" href="http://cmisexample.oasis-open.org/rep1/3240a476-6de6-4ab2-978d-85ca2f4f3206"/>
<atom:link type="application/cmis+xml;type=allowableActions" rel="http://docs.oasis-open.org/ns/cmis/link/200908/allowableactions" href="http://cmisexample.oasis-open.org/rep1/3240a476-6de6-4ab2-978d-85ca2f4f3206/allowableactions"/>
<atom:link type="application/atom+xml;type=entry" rel="describedby" href="http://cmisexample.oasis-open.org/rep1/3240a476-6de6-4ab2-978d-85ca2f4f3206/type"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1//service"/>
<atom:published>2010-01-25T10:21:00.333-08:00</atom:published>
<atom:summary type="html">HTML summary of Entry 3240a476-6de6-4ab2-978d-85ca2f4f3206</atom:summary>
<atom:link rel="edit-media" href="http://cmisexample.oasis-open.org/rep1/3240a476-6de6-4ab2-978d-85ca2f4f3206/edit-media"/>
<atom:link rel="alternate" href="http://cmisexample.oasis-open.org/rep1/3240a476-6de6-4ab2-978d-85ca2f4f3206/alternate"/>
<atom:link type="application/atom+xml;type=feed" rel="up" href="http://cmisexample.oasis-open.org/rep1/3240a476-6de6-4ab2-978d-85ca2f4f3206/parents"/>
<atom:link type="application/atom+xml;type=feed" rel="version-history" href="http://cmisexample.oasis-open.org/rep1/3240a476-6de6-4ab2-978d-85ca2f4f3206/allversions"/>
<atom:link type="application/atom+xml;type=entry" rel="current-version" href="http://cmisexample.oasis-open.org/rep1/3240a476-6de6-4ab2-978d-85ca2f4f3206/latest"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/relationships" href="http://cmisexample.oasis-open.org/rep1/3240a476-6de6-4ab2-978d-85ca2f4f3206/relationships"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/policies" href="http://cmisexample.oasis-open.org/rep1/3240a476-6de6-4ab2-978d-85ca2f4f3206/policies"/>
<atom:link type="application/cmisacl+xml" rel="http://docs.oasis-open.org/ns/cmis/link/200908/acl" href="http://cmisexample.oasis-open.org/rep1/3240a476-6de6-4ab2-978d-85ca2f4f3206/acl"/>
<atom:link type="application/atom+xml;type=feed" rel="working-copy" href="http://cmisexample.oasis-open.org/rep1/3240a476-6de6-4ab2-978d-85ca2f4f3206/pwc"/>
<cmisra:object>
<cmis:properties>
<cmis:propertyId localName="rep-cmis:objectId" propertyDefinitionId="cmis:objectId">
<cmis:value>3240a476-6de6-4ab2-978d-85ca2f4f3206</cmis:value>
</cmis:propertyId>
</cmis:properties>
</cmisra:object>
</atom:entry>
Please also see the example documents included with the schema.
This does a replacement of the atom entry with the atom entry document specified. If modifiable properties (whencheckedout or readwrite) are not included, the repository SHOULD NOT modify them.
The following arguments may be supplied. Please see the domain model for more information:
The server SHOULD respond with:
This removes the document entry, in this case, cancels the check out. The PWC will be removed.
This is a CMIS Folder instance. The properties of a folder map onto the feed tag.
CMIS Services:
GET: getObject
PUT: updateProperties
DELETE: deleteObject (this is deletion of the folder only and not any contained objects)
Media Type: application/atom+xml;type=entry
Link Relations:
The following CMIS Atom extension element MUST be included inside the atom entry:
The following arguments may be supplied. Please see the domain model for more information:
Request:
GET /obj/cfc03a28-8240-471d-b4ba-6d8756cd5093?filter=cmis:objectId HTTP/1.1
Host: example.org
Response:
Date: Mon, 25 Jan 2010 10:21:00 -0800
Content-Length: 3332
Content-Type: application/atom+xml;type=entry
Location: /obj/cfc03a28-8240-471d-b4ba-6d8756cd5093?filter=cmis:objectId
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<atom:entry xmlns:app="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:content src="http://cmisexample.oasis-open.org/rep1/cfc03a28-8240-471d-b4ba-6d8756cd5093"/>
<atom:id>urn:uuid:cfc03a28-8240-471d-b4ba-6d8756cd5093</atom:id>
<atom:title type="text">Customer Folder</atom:title>
<atom:updated>2010-01-25T10:21:00.208-08:00</atom:updated>
<atom:link rel="self" href="http://cmisexample.oasis-open.org/rep1/cfc03a28-8240-471d-b4ba-6d8756cd5093"/>
<atom:link rel="edit" href="http://cmisexample.oasis-open.org/rep1/cfc03a28-8240-471d-b4ba-6d8756cd5093"/>
<atom:link type="application/cmis+xml;type=allowableActions" rel="http://docs.oasis-open.org/ns/cmis/link/200908/allowableactions" href="http://cmisexample.oasis-open.org/rep1/cfc03a28-8240-471d-b4ba-6d8756cd5093/allowableactions"/>
<atom:link type="application/atom+xml;type=entry" rel="describedby" href="http://cmisexample.oasis-open.org/rep1/cfc03a28-8240-471d-b4ba-6d8756cd5093/type"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1//service"/>
<atom:published>2010-01-25T10:21:00.208-08:00</atom:published>
<atom:summary type="html">HTML summary of Entry cfc03a28-8240-471d-b4ba-6d8756cd5093</atom:summary>
<atom:link type="application/atom+xml;type=entry" rel="up" href="http://cmisexample.oasis-open.org/rep1/cfc03a28-8240-471d-b4ba-6d8756cd5093/up"/>
<atom:link type="application/atom+xml;type=feed" rel="down" href="http://cmisexample.oasis-open.org/rep1/cfc03a28-8240-471d-b4ba-6d8756cd5093/children"/>
<atom:link type="application/cmistree+xml" rel="down" href="http://cmisexample.oasis-open.org/rep1/cfc03a28-8240-471d-b4ba-6d8756cd5093/tree"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/foldertree" href="http://cmisexample.oasis-open.org/rep1/cfc03a28-8240-471d-b4ba-6d8756cd5093/foldertree"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/relationships" href="http://cmisexample.oasis-open.org/rep1/cfc03a28-8240-471d-b4ba-6d8756cd5093/relationships"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/policies" href="http://cmisexample.oasis-open.org/rep1/cfc03a28-8240-471d-b4ba-6d8756cd5093/policies"/>
<atom:link type="application/cmisacl+xml" rel="http://docs.oasis-open.org/ns/cmis/link/200908/acl" href="http://cmisexample.oasis-open.org/rep1/cfc03a28-8240-471d-b4ba-6d8756cd5093/acl"/>
<cmisra:object>
<cmis:properties>
<cmis:propertyId localName="rep-cmis:objectId" propertyDefinitionId="cmis:objectId">
<cmis:value>cfc03a28-8240-471d-b4ba-6d8756cd5093</cmis:value>
</cmis:propertyId>
</cmis:properties>
</cmisra:object>
</atom:entry>
Please also see the example documents included with the schema.
This does a replacement of the atom entry with the atom entry document specified. If readwrite properties are not included, the repository SHOULD NOT modify them.
The server SHOULD respond with:
This removes the object (folder) from the repository.
Success HTTP code: 204
This is a CMIS relationship instance. These objects are exposed via ‘relationships’ link type.
CMIS Services:
GET: getObject
PUT: updateProperties
DELETE: deleteObject
Media Type: application/atom+xml;type=entry
Link Relations:
The following element MUST be included inside the atom entry:
The following arguments may be supplied. Please see the domain model for more information:
Request:
GET /obj/ad443afd-aa1a-4071-9735-1a49aac4e439?filter=cmis:objectId HTTP/1.1
Host: example.org
Response:
Date: Mon, 25 Jan 2010 10:21:00 -0800
Content-Length: 2861
Content-Type: application/atom+xml;type=entry
Location: /obj/ad443afd-aa1a-4071-9735-1a49aac4e439?filter=cmis:objectId
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<atom:entry xmlns:app="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:content src="http://cmisexample.oasis-open.org/rep1/ad443afd-aa1a-4071-9735-1a49aac4e439"/>
<atom:id>urn:uuid:ad443afd-aa1a-4071-9735-1a49aac4e439</atom:id>
<atom:title type="text">Customer Relationship</atom:title>
<atom:updated>2010-01-25T10:21:00.349-08:00</atom:updated>
<atom:link rel="self" href="http://cmisexample.oasis-open.org/rep1/ad443afd-aa1a-4071-9735-1a49aac4e439"/>
<atom:link rel="edit" href="http://cmisexample.oasis-open.org/rep1/ad443afd-aa1a-4071-9735-1a49aac4e439"/>
<atom:link type="application/cmis+xml;type=allowableActions" rel="http://docs.oasis-open.org/ns/cmis/link/200908/allowableactions" href="http://cmisexample.oasis-open.org/rep1/ad443afd-aa1a-4071-9735-1a49aac4e439/allowableactions"/>
<atom:link type="application/atom+xml;type=entry" rel="describedby" href="http://cmisexample.oasis-open.org/rep1/ad443afd-aa1a-4071-9735-1a49aac4e439/type"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1//service"/>
<atom:published>2010-01-25T10:21:00.365-08:00</atom:published>
<atom:summary type="html">HTML summary of Entry ad443afd-aa1a-4071-9735-1a49aac4e439</atom:summary>
<atom:link type="application/atom+xml;type=entry" rel="http://docs.oasis-open.org/ns/cmis/link/200908/source" href="http://cmisexample.oasis-open.org/rep1/ad443afd-aa1a-4071-9735-1a49aac4e439/source"/>
<atom:link type="application/atom+xml;type=entry" rel="http://docs.oasis-open.org/ns/cmis/link/200908/target" href="http://cmisexample.oasis-open.org/rep1/ad443afd-aa1a-4071-9735-1a49aac4e439/target"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/policies" href="http://cmisexample.oasis-open.org/rep1/ad443afd-aa1a-4071-9735-1a49aac4e439/policies"/>
<atom:link type="application/cmisacl+xml" rel="http://docs.oasis-open.org/ns/cmis/link/200908/acl" href="http://cmisexample.oasis-open.org/rep1/ad443afd-aa1a-4071-9735-1a49aac4e439/acl"/>
<cmisra:object>
<cmis:properties>
<cmis:propertyId localName="rep-cmis:objectId" propertyDefinitionId="cmis:objectId">
<cmis:value>ad443afd-aa1a-4071-9735-1a49aac4e439</cmis:value>
</cmis:propertyId>
</cmis:properties>
</cmisra:object>
</atom:entry>
Please also see the example documents included with the schema.
This does a replacement of the atom entry with the atom entry document specified. If readwrite properties are not included, the repository SHOULD NOT modify them.
The server SHOULD respond with:
This removes the relationship entry.
Successful HTTP code: 204
This is a CMIS policy instance.
CMIS Services:
GET: getObject
PUT: updateProperties
DELETE: deleteObject or removePolicy
Media Type: application/atom+xml;type=entry
Link Relations:
The following element MUST be included inside the atom entry:
The following arguments may be supplied. Please see the domain model for more information:
Request:
GET /obj/a09ed524-5f1b-4940-b2f0-4e4cd4631bf0?filter=cmis:objectId HTTP/1.1
Host: example.org
Response:
Date: Mon, 25 Jan 2010 10:21:00 -0800
Content-Length: 2608
Content-Type: application/atom+xml;type=entry
Location: /obj/a09ed524-5f1b-4940-b2f0-4e4cd4631bf0?filter=cmis:objectId
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<atom:entry xmlns:app="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<atom:author>
<atom:name>Al Brown</atom:name>
<atom:uri>http://www.ibm.com/</atom:uri>
<atom:email>albertcbrown@us.ibm.com</atom:email>
</atom:author>
<atom:content src="http://cmisexample.oasis-open.org/rep1/a09ed524-5f1b-4940-b2f0-4e4cd4631bf0"/>
<atom:id>urn:uuid:a09ed524-5f1b-4940-b2f0-4e4cd4631bf0</atom:id>
<atom:title type="text">Security Policy</atom:title>
<atom:updated>2010-01-25T10:21:00.318-08:00</atom:updated>
<atom:link rel="self" href="http://cmisexample.oasis-open.org/rep1/a09ed524-5f1b-4940-b2f0-4e4cd4631bf0"/>
<atom:link rel="edit" href="http://cmisexample.oasis-open.org/rep1/a09ed524-5f1b-4940-b2f0-4e4cd4631bf0"/>
<atom:link type="application/cmis+xml;type=allowableActions" rel="http://docs.oasis-open.org/ns/cmis/link/200908/allowableactions" href="http://cmisexample.oasis-open.org/rep1/a09ed524-5f1b-4940-b2f0-4e4cd4631bf0/allowableactions"/>
<atom:link type="application/atom+xml;type=entry" rel="describedby" href="http://cmisexample.oasis-open.org/rep1/a09ed524-5f1b-4940-b2f0-4e4cd4631bf0/type"/>
<atom:link type="application/atomsvc+xml" rel="service" href="http://cmisexample.oasis-open.org/rep1//service"/>
<atom:published>2010-01-25T10:21:00.318-08:00</atom:published>
<atom:summary type="html">HTML summary of Entry a09ed524-5f1b-4940-b2f0-4e4cd4631bf0</atom:summary>
<atom:link type="application/atom+xml;type=feed" rel="up" href="http://cmisexample.oasis-open.org/rep1/a09ed524-5f1b-4940-b2f0-4e4cd4631bf0/parents"/>
<atom:link type="application/atom+xml;type=feed" rel="http://docs.oasis-open.org/ns/cmis/link/200908/relationships" href="http://cmisexample.oasis-open.org/rep1/a09ed524-5f1b-4940-b2f0-4e4cd4631bf0/relationships"/>
<atom:link type="application/cmisacl+xml" rel="http://docs.oasis-open.org/ns/cmis/link/200908/acl" href="http://cmisexample.oasis-open.org/rep1/a09ed524-5f1b-4940-b2f0-4e4cd4631bf0/acl"/>
<cmisra:object>
<cmis:properties>
<cmis:propertyId localName="rep-cmis:objectId" propertyDefinitionId="cmis:objectId">
<cmis:value>a09ed524-5f1b-4940-b2f0-4e4cd4631bf0</cmis:value>
</cmis:propertyId>
</cmis:properties>
</cmisra:object>
</atom:entry>
Please also see the example documents included with the schema.
This does a replacement of the atom entry with the atom entry document specified. If read/write properties are not included, the repository SHOULD NOT modify them.
The server SHOULD respond with:
This removes the policy entry. If this policy entry was discovered through a policy collection on an object, then removePolicy() is performed rather than deleteObject() on the policy itself.
Success HTTP code: 204
This is the content stream portion of the document object.
CMIS Services:
GET: getContentStream
PUT: setContentStream
DELETE: deleteContentStream
Media Type: Mime/Type of resource (mime type of content stream on document)
This returns the content stream.
It is RECOMMENDED that HTTP Range requests are supported on this resource. It is RECOMMENDED that HTTP compression is also supported.
Please see RFC2616 for more information on HTTP Range requests.
This does a replacement of the content stream.
The following optional arguments may be supplied. Please see the domain model for more information:
Success HTTP code: 200 (with content), 204 (without content) or 201 if a new resource is created. Please see the HTTP specification for more information.
Returns headers:
This removes the content stream.
CMIS Services:
GET: getACL
PUT: applyACL
Media Type: application/cmisacl+xml
This returns the CMIS ACL for a specified object. The client will follow the link on the atom entry to get the CMIS ACL for that object.
Request:
GET /objacl/fd79b7bd-2579-4ad1-aea2-eda89527fbef HTTP/1.1
Host: example.org
Response:
Date: Mon, 25 Jan 2010 10:21:00 -0800
Content-Length: 758
Content-Type: application/cmisacl+xml
Location: /objacl/fd79b7bd-2579-4ad1-aea2-eda89527fbef
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<cmis:acl xmlns:app="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
<cmis:permission>
<cmis:principal>
<cmis:principalId>Al Brown</cmis:principalId>
</cmis:principal>
<cmis:permission>cmis:read</cmis:permission>
<cmis:permission>cmis:write</cmis:permission>
<cmis:permission>cmis:all</cmis:permission>
<cmis:permission>publish</cmis:permission>
<cmis:direct>true</cmis:direct>
</cmis:permission>
</cmis:acl>
Please also see the example documents included with the schema.
All services and operations defined in the Domain Model are presented in the Web Services binding.
The WSDL for these services reference two XSD documents. One defines elements for the primary data types of documents, folders, relationships and policies as well as collections of these types of objects. The second XSD defines the message formats for each of the CMIS services; the messages often refer to the data types defined in the first XSD schema. The WSDL presents exactly the abstract services defined in the Services section.
The normative CMIS Web Services binding is defined by the WSDL and XSD as well as the details given here in this part of the CMIS specification except the examples.
A CMIS Web Services binding MUST comply with WS-I Basic Profile 1.1 and Basic Security Profile 1.0.
A CMIS Web Services binding SHOULD support WS-Security 1.1 for Username Token Profile 1.1 and MAY also support other authentication mechanisms. A CMIS repository MAY grant access to all or a subset of the CMIS services to unauthenticated clients.
All endpoints of the Web Services binding MUST be MTOM enabled.
Services MUST report errors via SOAP faults. The CMIS-Messaging.xsd defines a basic fault structure that includes an error code and an error message and the WSDL for each service defines specific messages that have the basic fault format.
The Domain Model defines all services, operations, parameters and objects of CMIS. The Web Services binding is an exact one-to-one mapping of this definition with small exceptions that are explained in the next section. Operations and parameters are named exactly after their counterparts in the Services section. All rules and exceptions defined there apply to the Web Services binding. Optional parameters and optional return values are not set if they are missing or their value is NULL.
This binding supports partial properties updates. All properties passed to updateProperties or checkIn will be updated to their new values. Properties that are passed without a value will be set to their default value or un-set if no default value is defined. All others property values remain untouched.
This binding supports the retrieval of content ranges. The operation getContentStream accepts two optional parameters:
· Integer offset: The first byte of the content to retrieve. Default value is 0.
· Integer length: The length of the range in bytes. Default value is the size of the content minus the offset.
If the offset value is greater than the size of the content the repository SHOULD throw a constraint exception.
If offset + length is greater than the size of the content the repository should deliver the content from the offset to the end of the content.
On all input messages and some output messages exists an element called extension. This element is used to provide vendor or repository-specific information between client and server.
All of the types referenced by the schema also support xs:any for vendor or repository-specific information.
This binding requires specific structures that are not part of the general CMIS schema.
Please also see the example request and response documents included with the schema.
cmisFaultType and cmisFault SHOULD be used to generate SOAP faults. See 4.1.4 Reporting Errors.
cmisRepositoryEntryType is the return structure of getRepositories. It contains the id and the name of a repository.
cmisTypeContainer is the return structure of getTypeDescendants. It holds a type hierarchy.
cmisTypeDefinitionListType is the return structure of getTypeChildren. It contains a list of types, the hasMoreItems flag and the numItem element.
cmisObjectInFolderType holds, in addition to a cmisObjectType object, a path segment string. It is used in all operations that support the includePathSegments parameter. cmisObjectParentsType is similar but has a relative path segment string instead of a path segment. For details about path segments and relative path segments see section 2.1.5.3 Paths.
cmisObjectInFolderContainerType contains a folder hierarchy.
cmisObjectListType and cmisObjectInFolderListType hold lists of cmisObjectType and cmisObjectInFolderType structures. They also contain the hasMoreItems flag and the numItems element that are returned by operations that return these lists.
cmisContentStreamType wraps a content stream and additional information about the stream.
|
|
Client to Repository |
Repository to Client |
length |
Length of the content stream in bytes. If set it MUST be a positive number. If the length is unknown it MUST NOT be set. |
SHOULD be set
|
SHOULD be set |
mimeType |
MIME Media Type of the content stream. For the primary content of a document it SHOULD match the value of the property cmis:contentStreamMimeType. |
SHOULD be set |
MUST be set
|
filename |
Filename of the content stream. For the primary content of a document it SHOULD match the value of the property cmis:contentStreamFileName. |
SHOULD be set |
SHOULD be set
|
stream |
The content stream. MUST be present even if the content stream has 0 bytes. |
MUST be set |
MUST be set |
cmisACLType is the return structure of getACL and applyACL. It contains the current Access Control List (ACL) of the object and the exact flag that indeciates if the ACL fully describes the permission of this object.
cmisExtensionType is a placeholder for extensions. See 4.3.3 Extensions.
A CMIS Query Document, when serialized as XML 1.0, can be identified with the following media type:
MIME media type name: application
MIME subtype name: cmisquery +xml
Mandatory parameters: None
Optional parameters:
"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.
Published specification: This specification.
Applications that use this media type:
No known applications currently use this media type.
Additional information:
Magic number(s):
As specified for "application/xml" in [RFC3023], Section 3.2.
File extension: .cmisquery
Fragment identifiers:
As specified for "application/xml" in [RFC3023], Section 5.
Base URI:
As specified in [RFC3023], Section 6.
Macintosh File Type code: TEXT
Person and email address to contact for further information:
OASIS CMIS TC <cmis@lists.oasis-open.org>
Intended usage: COMMON
Author/Change controller: IESG
A CMIS Allowable Actions Document, when serialized as XML 1.0, can be identified with the following media type:
MIME media type name: application
MIME subtype name: cmisallowableactions +xml
Mandatory parameters: None.
Optional parameters:
"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.
Published specification: This specification.
Applications that use this media type:
No known applications currently use this media type.
Additional information:
Magic number(s):
As specified for "application/xml" in [RFC3023], Section 3.2.
File extension: .cmisallowableactions
Fragment identifiers:
As specified for "application/xml" in [RFC3023], Section 5.
Base URI:
As specified in [RFC3023], Section 6.
Macintosh File Type code: TEXT
Person and email address to contact for further information:
OASIS CMIS TC <cmis@lists.oasis-open.org>
Intended usage: COMMON
Author/Change controller: IESG
A CMIS Tree Document, when serialized as XML 1.0, can be identified with the following media type:
MIME media type name: application
MIME subtype name: cmistree +xml
Mandatory parameters: None.
Optional parameters:
"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.
Published specification: This specification.
Applications that use this media type:
No known applications currently use this media type.
Additional information:
Magic number(s):
As specified for "application/xml" in [RFC3023], Section 3.2.
File extension: .cmistree
Fragment identifiers:
As specified for "application/xml" in [RFC3023], Section 5.
Base URI:
As specified in [RFC3023], Section 6.
Macintosh File Type code: TEXT
Person and email address to contact for further information:
OASIS CMIS TC <cmis@lists.oasis-open.org>
Intended usage: COMMON
Author/Change controller: IESG
A CMIS Atom Document, when serialized as XML 1.0, can be identified with the following media type:
MIME media type name: application
MIME subtype name: cmisatom +xml
Mandatory parameters: None.
Optional parameters:
"charset": This parameter has semantics identical to the charset parameter of the "application/xml" media type as specified in [RFC3023].
“type”: This parameter has semantics identical to the type parameter of the “application/atom+xml” as specified in [RFC4287]
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.
Published specification: This specification.
Applications that use this media type:
No known applications currently use this media type.
Additional information:
Magic number(s):
As specified for "application/xml" in [RFC3023], Section 3.2.
File extension: .cmisatom
Fragment identifiers:
As specified for "application/xml" in [RFC3023], Section 5.
Base URI:
As specified in [RFC3023], Section 6.
Macintosh File Type code: TEXT
Person and email address to contact for further information:
OASIS CMIS TC <cmis@lists.oasis-open.org>
Intended usage: COMMON
Author/Change controller: IESG
Please see section 3.1.1 on why this media type is needed above the Atom Media Type.
A CMIS ACL Document, when serialized as XML 1.0, can be identified with the following media type:
MIME media type name: application
MIME subtype name: cmisacl +xml
Mandatory parameters: None.
Optional parameters:
"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.
Published specification: This specification.
Applications that use this media type:
No known applications currently use this media type.
Additional information:
Magic number(s):
As specified for "application/xml" in [RFC3023], Section 3.2.
File extension: .cmisacl
Fragment identifiers:
As specified for "application/xml" in [RFC3023], Section 5.
Base URI:
As specified in [RFC3023], Section 6.
Macintosh File Type code: TEXT
Person and email address to contact for further information:
OASIS CMIS TC <cmis@lists.oasis-open.org>
Intended usage: COMMON
Author/Change controller: IESG
An implementation conforms to this specification if it satisfies all of the MUST or REQUIRED level requirements defined within this specification.
Specification:
This specification references a number of other specifications (see the table above). In order to comply with this specification, an implementation MUST implement the portions of referenced specifications necessary to comply with the required provisions of this specification. Additionally, the implementation of the portions of the referenced specifications that are specifically cited in this specification MUST comply with the rules for those portions as established in the referenced specification.
An implementation conforms to this specification if it satisfies all of the MUST or REQUIRED level requirements defined within this specification.
Domain Model:
Normative text within this specification takes precedence over the CMIS Core XML Schema.
That is, the normative text in this specification further constrains the schemas and/or WSDL that are part of this specification; and this specification contains further constraints on the elements defined in referenced schemas.
Clients:
Client implementations MAY implement either Restful AtomPub Binding or the Web Services Binding.
Repositories:
Repositories MUST implement the following CMIS protocol bindings:
Rest Binding:
This specification references a number of other specifications. In order to comply with this specification, an implementation MUST implement the portions of referenced specifications necessary to comply with the required provisions of this specification. Additionally, the implementation of the portions of the referenced specifications that are specifically cited in this specification MUST comply with the rules for those portions as established in the referenced specification.
Additionally normative text within this specification takes precedence over the CMIS RestAtom XML Schema. That is, the normative text in this specification further constrains the schemas and/or WSDL that are part of this specification; and this specification contains further constraints on the elements defined in referenced schemas.
The CMIS RestAtom XML takes precedence over any examples or non-normative outlines included either in this document or as standalone examples.
Web Services Binding:
Normative text within this specification takes precedence over the CMIS Messaging XML and CMIS WSDL. That is, the normative text in this specification further constrains the schemas and WSDL that are part of this specification; and this specification contains further constraints on the elements defined in referenced schemas.
The CMIS Messaging XML and CMIS WSDL takes precedence over any examples or non-normative outlines included either in this document or as standalone examples.
The following individuals have participated in the creation of this specification and are gratefully acknowledged:
Participants:
Philippe Allart, Adullact
Florian Bartels, fme AG
Fred Boiscuvier, Exalead, Inc.
Al Brown, IBM
Jay Brown, IBM
Mark Carlson, Sun Microsystems
Derek Carr, IBM
David Caruana, Alfresco Software
Eric Chan, Oracle Corporation
Sameer Charles, Magnolia International AG
Derek Chow, Genus Technologies, LLC
David Choy, EMC Corporation
Scott Conroy, Individual
Cornelia Davis, EMC Corporation
Doug Domeny, Ektron
Kevin Dorr, Flatirons Solutions Corporation
Jason Dubreuil, Fidelity Investments
Michael Duerig, Day Software
Randy Dufault, Genus Technologies, LLC
Will Ezell, dotCMS
Betsy Fanning, AIIM
Steffen Frederiksen, Content Technologies ApS
Stephan Friedl, Quark
Dustin Friesenhahn, Microsoft Corporation
Gary Gershon, Individual
Paul Goetz, SAP AG
Jens Goldhammer, fme AG
Gregory Grefenstette, Exalead, Inc.
Florent Guillaume, Nuxeo
Ethan Gur-esh, Microsoft Corporation
Alexander Haag, WeWebU Software AG
Dennis Hamilton, Individual
Martin Hermes, SAP AG
Jens Huebel, Open Text Corporation
David Izatt, Structured Software Systems Limited (3SL)
Gershon Janssen, Individual
Raphael Jean, Entropysoft
Volker John, Saperion AG
Shane Johnson, Citytech, Inc.
Christophe Kijewska, Adullact
Ijonas Kisselbach, Vamosa
Mark Klamerus, Individual
Stephan Klevenz, SAP AG
Boris Kraft, Magnolia International AG
Alison Macmillan, Oracle Corporation
Michael Marth, Day Software
Mary McRae, OASIS
Ryan McVeigh, Oracle Corporation
Juerg Meier, fme AG
Gregory Melahn, IBM
Pat Miller, Microsoft Corporation
Florian Müller, Open Text Corporation
Thomas Mueller, Day Software
John Newton, Alfresco Software
David Nuescheler, Day Software
Conleth O'Connell, Vignette Corporation
Marc Pallot, ESoCE-NET
Rainer Pausch, WeWebU Software AG
Dominique Pfister, Day Software
Peeter Piegaze, Day Software
David Pitfield, Oracle Corporation
Thomas Pole, Harris Corp
Norrie Quinn, EMC Corporation
Craig Randall, Adobe Corporation
Julian Reschke, Greenbytes GmbH
Celso Rodriguez, ASG Software Solutions
Steve Roth, Oracle Corporation
Patrick Ryan, IBM
Angela Schreiber, Day Software
Spencer Shearer, Exalead, Inc.
Madi Solomon, Pearson PLC
Wojciech Specht, fme AG
Dmitri Tcherevik, FatWire
Jason Tesser, dotCMS
David Torres, dotCMS
Maik Uhlenberg, fme AG
Oliver Walthard, Day Software
Patrick Ward, Booz Allen Hamilton
Original Authors of the initial contribution:
Al Brown, IBM
David Choy, EMC
Cornelia Davis, EMC
Ethan Gur-Esh, Microsoft
Original Acknowledgements of the initial contribution:
Al Brown, IBM
David Caruana, Alfresco
Derek Carr, IBM
David Choy, EMC
Cornelia Davis, EMC
Paul Goetz, SAP
Ethan Gur-Esh, Microsoft
Martin Hermes, SAP
Jens Hubel, OpenText
Jay Brown, IBM
Ryan McVeigh, Oracle
Gregory Melahn, IBM
Florian Müller, OpenText
John Newton, Alfresco
Norrie Quinn, EMC
Steve Roth, Oracle
Craig Randall, EMC
Revision |
Date |
Editor |
Changes Made |
1.0 |
01/11/2010 |
Al Brown |
First specification |