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.oasisopen.org/committees/cmis/. For information on whether any patents have been disclosed that may be essential to implementing this specification, and any offers of patent licensing terms, please refer to the Intellectual Property Rights section of the Technical Committee web page (http://www.oasisopen.org/committees/cmis/ipr.php). The non-normative errata page for this specification is located at http://www.oasisopen.org/committees/cmis/.
::= !! This MUST be the name of a single-valued property,
2400
or an alias for a scalar output value.
2401
::=
!! This MUST be the name of a multi-valued property.
2402
::=
!! This MUST be the object identity of a folder object.
2403
::=
!! As defined by queryName attribute.
2404
::=
!! As defined by SQL-92 grammar.
2405
::=
!! As defined by SQL-92 grammar. (i.e. enclosed in single-quotes)
2406 2407
!! This is full-text search criteria.
2408
::= [ { OR } … ]
2409
::= [ { } … ]
2410
::= ['-']
2411
::= |
2412
::= [ {} … ]
2413
::= [ { } … ]
2414
::= [ {} … ]
2415
::= -
2416
::= ' '
2417
::= !! Any character
2418 2419
::= TIMESTAMP
2420
::= YYYY-MM-DDThh:mm:ss.sss[Z | +hh:mm | -hh:mm]
2421
::= TRUE | FALSE | true | false
2422
::= “‟” !! Single-quote only, consistent with SQL-92 string literal
2423
2.1.10.2.2 SELECT Clause
2424
The SELECT clause MUST contain exactly one of the following:
2425
o
2426 2427 2428 2429 2430
A comma separated list of one or more column names.
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.
* : If this token is specified, then the repository MUST return columns for ALL single-valued properties defined in the Object-Types whose Virtual Tables are listed in the FROM clause, and SHOULD also return all multi-valued properties.
2431 2432
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.
2433
2.1.10.2.3 FROM Clause
2434 2435
The FROM clause identifies which Virtual Table(s) the query will be run against, as described in the previous section.
2436 2437
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”.
2441 2442
If the Repository‟s value for the capabilityJoin attribute is none, then no JOIN clauses can be used in queries.
2443 2444
If the Repository‟s value for the capabilityJoin attribute is inneronly, then only inner JOIN clauses can be used in queries.
2445 2446
If the Repository‟s value for the capabilityJoin attribute is innerandouter, then inner and/or outer JOIN clauses can be used in queries.
2447 2448
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.
2449 2450
CMIS queries MUST only support join operations using the “equality” predicate on single-valued properties.
2451
2.1.10.2.4 WHERE Clause
2452
This clause identifies the constraints that rows MUST satisfy to be considered a result for the query.
2453 2454
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.
2455 2456
Properties are defined to not support a “null” value, therefore the MUST be interpreted as testing the not set or set state of the specified property.
2457
2.1.10.2.4.1
2458 2459 2460
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.
2461 2462 2463
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:
Operations on the SCORE() output MUST be treated the same as decimal operations.
2527 2528 2529
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.
2530 2531 2532
The ANY operation argument MUST be one of the properties found in the table above which supports equality operations
2533
2.1.10.2.4.2
2534 2535
The CMIS query language includes several new non-terminals to expose semantics for querying multivalued properties, in a way that does not alter the semantics of existing SQL-92 production rules.
2536
2.1.10.2.4.2.1 Multi-valued column references
2537
BNF grammar structure: ,
2538 2539 2540
Multi-valued property support (SQL-92 Extension)
These are non-terminals defined for multi-valued properties whereas SQL-92‟s and are retained for single-valued properties only. This is to preserve the single-value semantics of a regular “column” in the SQL-92 grammar.
2541
2.1.10.2.4.2.2
2542 2543 2544 2545 2546
The SQL-92 production rule for is extended to accept a multi-valued property in place of a
. This operation is restricted to equality tests only.
2547
The SQL-92 is restricted to ANY only.
2548 2549
The SQL-92 is restricted to a literal only.
is not supported in CMIS-SQL.
2550 2551 2552 2553
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 )
2554
(Note: DAMAGE_ESTIMATES is a multi-valued Integer property.)
2555
2.1.10.2.4.2.3 IN/ANY Predicate
2556
BNF grammar structure:
2557 2558 2559 2560 2561 2562 2563 2564 2565
CMIS-SQL exposes a new IN predicate defined for a multi-valued property. It is modeled after the SQL92 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.
2568
Example:
2569 2570 2571 2572 2573
SELECT * FROM CAR_REVIEW WHERE (MAKE = „buick‟ ) OR ( ANY FEATURES IN („NAVIGATION SYSTEM‟, „SATELLITE RADIO‟, „MP3‟) ) (Note: FEATURES is a multi-valued String property.)
2574
2.1.10.2.4.3
CONTAINS() predicate function (CMIS-SQL Extension)
2575
BNF grammar structure:: CONTAINS ( [ ,] „ „ )
2576 2577
Usage: This is a predicate function that encapsulates the full-text search capability that MAY be provided by a Repository (See previous section.)
2578
Inputs:
2579 2580 2581 2582 2583 2584 2585
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.
2586 2587 2588 2589 2590 2591 2592 2593
The parameter MUST be a character string , specifying the full-text search criteria.
2594
Terms separated by whitespace are AND‟ed together.
2595
Terms separated by “OR” are OR‟ed together
2596
Implicit “AND” has higher precedence than “OR”
2597 2598
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.
Within a word or phrase, each (single-)quote must also be escaped by a preceding backslash “\” Return value:
2599
The predicate returns a Boolean value.
2600 2601
The predicate MUST return TRUE if the object is considered by the repository as “relevant” with respect to the given parameter.
2602 2603
The predicate MUST return FALSE if the object is considered by the repository as not “relevant” with respect to the given parameter.
2604 2605 2606 2607 2608 2609
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.
Usage: This is a predicate function that encapsulates the full-text search capability that MAY be provided by a Repository (See previous section.)
2614
Inputs: No inputs MUST be provided for this predicate function.
2615
Return value:
2616
The SCORE() predicate function returns a decimal value in the interval [0,1] .
2617 2618
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.
2619 2620
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.
2621
Constraints:
2622 2623
The SCORE() function MUST only be used in queries that also include a CONTAINS() predicate function
2624 2625
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.
2626 2627
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.
2628 2629 2630
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.
2631
2.1.10.2.4.5
IN_FOLDER() predicate function
2632
BNF grammar structure: IN_FOLDER( [ , ] )
2633 2634
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 .
2635
Inputs:
2636 2637 2638 2639 2640 2641 2642
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.
2643
2644
The value of this parameter MUST be the ID of a folder object in the repository.
2645 2646 2647 2648 2649
Return value: The predicate function MUST return TRUE if the object is a child-object of the folder specified by . The predicate function MUST return FALSE if the object is a NOT a child-object of the folder specified by .
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 .
2654
Inputs:
2655 2656 2657 2658 2659 2660 2661
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.
2662
2663
The value of this parameter MUST be the ID of a folder object in the repository.
2664 2665 2666 2667 2668
Return value: The predicate function MUST return TRUE if the object is a descendant-object of the folder specified by . The predicate function MUST return FALSE if the object is a NOT a descendant -object of the folder specified by .
2669
2.1.10.2.5 ORDER BY Clause
2670
This clause MUST contain a comma separated list of one or more column names.
2671 2672
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.
2673
Only columns in the SELECT clause MAY be in the ORDER BY clause.
2674
Collation rules for the ORDER BY clause are repository specific.
2675
2.1.10.3 Escaping
2676 2677
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:
2678
1. \‟ will represent a single-quote(„) character
2679
2. \ \ will represent a backslash (\) character
2680
3. Within a LIKE string, \% and \_ will represent the literal characters % and _, respectively.
2681
4. All other instances of a \ are errors.
2682
2.1.11 Change Log
2683 2684 2685 2686 2687
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).
2688
Entries recorded in the change log are referred to below as “change events”.
2689 2690
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
2696 2697 2698 2699
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.)
2700 2701
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.
2702
2.1.11.2 Change Log Token
2703 2704
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.
2705
2.1.11.2.1 “Latest Change Token” repository information
2706 2707 2708
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.
2709 2710
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.
2711
2.1.11.3 Change Event
2712 2713
A change event represents a single action that occurred to an object in the repository that affected the persisted state of the object.
2714 2715
A Repository that supports the change log capability MUST expose at least the following information for each change object:
2716
ID ObjectId: The ObjectId of the object to which the change occurred
2717
Enum ChangeType: An enumeration that indicates the type of the change. Valid values are:
2718
o
created: The object was created.
2719
o
updated: The object was updated.
2720
o
deleted: The object was deleted
2721
o
security: The access control or security policy for the object were changed.
2722 2723 2724 2725
properties: Additionally, for events of changeType “updated”, the repository MAY optionally include the new values of properties on the object (if any).
Repositories MUST indicate whether they include properties for “updated” change events via the optional enumCapabilityChanges capability.
2726 2727
2.2 Services
2728 2729
The Services section of the CMIS specification defines a set of services that are described in a protocol/binding-agnostic fashion.
2730 2731
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.
The following elements are common across many of the CMIS services.
2736
2.2.1.1 Paging
2737 2738
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:
2739
Input Parameters:
2740 2741
(optional) Integer maxItems: This is the maximum number of items to return in a response. The repository MUST NOT exceed this maximum. Default is repository-specific.
2742 2743
(optional) Integer skipCount: This is the number of potential results that the repository MUST skip/page over before returning any results. Defaults to 0.
2744
Output Parameters:
2745 2746 2747 2748
Boolean hasMoreItems: TRUE if the Repository contains additional items after those contained in the response. FALSE otherwise. If TRUE, a request with a larger skipCount or larger maxItems is expected to return additional results (unless the contents of the repository has changed).
2749 2750 2751 2752
Integer numItems: If the repository knows the total number of items in a result set, the repository SHOULD include the number here. If the repository does not know the number of items in a result set, this parameter SHOULD not be set. The value in the parameter MAY NOT be accurate the next time the client retrieves the result set or the next page in the result set.
2753 2754 2755
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.
2756
Repositories MAY return a smaller number of items than the specified value for maxItems.
2757 2758
Each binding will express the above in context and may have different mechanisms for communicating hasMoreItems and numItems.
2759
2.2.1.2 Retrieving additional information on objects in CMIS service calls
2760 2761 2762
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.
2763 2764
The CMIS service methods that support returning a result set of objects will include the ability to return the following object information:
2765
Properties (retrieves a subset instead of additional information)
2766
Relationships
2767
Renditions
2768
ACLs
2769
AllowableActions
2770 2771 2772
This section describes the input parameter & output pattern for those services. All input parameters are optional.
2773
2.2.1.2.1 Properties
2774 2775 2776
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.
String filter: Value indicating which properties for Objects MUST be returned. Values are:
2779
o
Not set: The set of properties to be returned MUST be determined by the repository.
2780 2781
o
A comma-delimited list of property definition Query Names: The properties listed MUST be returned.
2782
o
“*” : All properties MUST be returned for all objects.
2783 2784
Repositories SHOULD return only the properties specified in the property filter if they exist on the object‟s type definition.
2785 2786 2787
If a property filter specifies a property that is „not set‟, it MUST be represented as a property element without a value element.
2788
2.2.1.2.2 Relationships
2789
Description: Used to retrieve the relationships in which the object(s) are participating.
2790
Optional Input Parameter:
2791 2792
Enum includeRelationships: Value indicating what relationships in which the objects returned participate MUST be returned, if any. Values are:
2793
none:No relationships MUST be returned. (Default).
2794 2795
source: Only relationships in which the objects returned are the source MUST be returned.
2796 2797
target: Only relationships in which the objects returned are the target MUST be returned.
2798 2799
both: Relationships in which the objects returned are the source or the target MUST be returned.
2800 2801
Output Parameter for each object:
Relationships: A collection of the relationship objects.
2802
2.2.1.2.3 Policies
2803
Description: Used to retrieve the policies currently applied to the object(s).
2804
Optional Input Parameter:
2805 2806 2807 2808
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: Policies: A collection of the policy objects.
2809
2.2.1.2.4 Renditions
2810
Description: Used to retrieve the renditions of the object(s).
2811
Optional Input Parameter:
2812 2813
o
2814 2815 2816
String renditionFilter: The Repository MUST return the set of renditions whose kind matches this filter. See section below for the filter grammar. Defaults to “cmis:none”.
Comma-separated list of Rendition kinds or mimetypes : include only those Renditions that match one of the specified kinds or mimetypes
2833
cmis:none: (Default) exclude all associated Renditions
2834
Examples:
2835
* (include all Renditions)
2836
cmis:thumbnail (include only Thumbnails)
2837
Image/* (include all image Renditions)
2838
application/pdf, application/x-shockwave-flash (include web ready Renditions)
2839
cmis:none (exclude all Renditions)
2840
2.2.1.2.5 ACLs
2841
Description: Used to retrieve the ACLs for the object(s) described in the service response.
2842
Optional Input Parameter:
2843 2844 2845 2846
Boolean includeACL: If TRUE, then the Repository MUST return the ACLs for each object in the result set. Defaults to FALSE.
Output Parameter for each object:
ACLs: The list of access control entries of the ACL for the object.
2847
2.2.1.2.6 Allowable Actions
2848
Description: Used to retrieve the allowable actions for the object(s) described in the service response.
2849
Optional Input Parameter:
2850 2851 2852 2853
Boolean includeAllowableActions: If TRUE, then the Repository MUST return the available actions for each object in the result set. Defaults to FALSE.
Output Parameter for each object:
AllowableActions: See cmisAllowableActionsType in the CMIS schema.
2854
2.2.1.3 Change Tokens
2855 2856 2857
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.
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.
2863
2.2.1.4 Exceptions
2864 2865
The following sections list the complete set of exceptions that MAY be returned by a repository in response to a CMIS service method call.
2866
2.2.1.4.1 General Exceptions
2867
The following exceptions MAY be returned by a repository in response to ANY CMIS service method call.
2868 2869 2870
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.
2886
2.2.1.4.2 Specific Exceptions
2887 2888
The following exceptions MAY be returned by a repositiory in response to one or more CMIS service methods calls.
2889 2890 2891
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
2892 2893
Intent:
2894
Methods:
2895 2896 2897
The operation violates a Repository- or Object-level constraint defined in the CMIS domain model.
Navigation Services: o getObjectParents Object Services:
The operation attempts to set the content stream for a Document that already has a content stream without explicitly specifying the “overwriteFlag” parameter.
Object Services: o setContentStream filterNotValid
2928
Intent: The property filter or rendition filter input to the operation is not valid.
The repository is not able to store the object that the user is creating/updating due to a name constraint violation.
Object Services:
2952
o createDocument
2953
o createDocumentFromSource
2954
o createFolder
2955
o createRelationship
2956
o createPolicy
2957
o updateProperties
2958 2959
o moveObject
2960
storage
2961 2962
Intent:
2963
Methods:
2964
The repository is not able to store the object that the user is creating/updating due to an internal storage problem.
Object Services:
2965
o createDocument
2966
o createDocumentFromSource
2967
o createFolder
2968
o createRelationship
2969
o createPolicy
2970
o updateProperties
2971
o moveObject
2972
o setContentStream
2973
o deleteContentStream
2974
Versioning Services:
2975
o checkOut
2976 2977
o checkIn
2978
streamNotSupported
2979 2980
Intent:
2981
Methods:
2982
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.
The operation is attempting to update an object that is no longer current (as determined by the repository).
Object Services:
2995
o updateProperties
2996
o moveObject
2997
o deleteObject
2998
o deleteTree
2999
o setContentStream
3000
o deleteContentStream
3001
Versioning Services:
3002
o checkOut
3003
o cancelCheckOut
3004
o checkIn
3005 3006
versioning
3007 3008
Intent:
3009
Methods:
3010
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.
Object Services:
3011
o updateProperties
3012
o moveObject
3013
o setContentStream
3014
o deleteContentStream
3015
Versioning Services:
3016
o checkOut
3017
o cancelCheckOut
3018
o checkIn
3019
2.2.1.5 ACLs
3020 3021
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.
3022
2.2.2 Repository Services
3023 3024 3025
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.
A list of repository information, with (at least) the following information for each entry:
3032
ID repositoryId: The identifier for the Repository.
3033
String repositoryName: A display name for the Repository.
3034
2.2.2.1.3 Exceptions Thrown & Conditions
3035
See section 2.2.1.4.1 General Exceptions
3036
2.2.2.2 getRepositoryInfo
3037 3038
Description: Returns information about the CMIS repository, the optional capabilities it supports and its Access Control information if applicable. .
3039
2.2.2.2.1 Inputs
3040
Required:
3041 3042 3043
ID repositoryId: The identifier for the Repository.
2.2.2.2.2 Outputs
ID repositoryId: The identifier for the Repository. o
3044
Note: This MUST be the same identifier as the input to the method.
3045
String repositoryName: A display name for the Repository.
3046
String repositoryDescription: A display description for the Repository.
3047
String vendorName: A display name for the vendor of the Repository‟s underlying application.
3048
String productName: A display name for the Repository‟s underlying application.
3049 3050
String productVersion: A display name for the version number of the Repository‟s underlying application.
3051
ID rootFolderId: The ID of the Root Folder Object for the Repository.
3052 3053
: The set of values for the repository-optional capabilities specified in section 2.1.1.1 Optional Capabilities
3054 3055
String latestChangeLogToken: The change log token corresponding to the most recent change event for any object in the repository.
3056 3057
String cmisVersionSupported: A decimal that indicates what version of the CMIS specification this repository supports as specified in 2.1.1.2 Implementation Information.
3058 3059
URI thinClientURI: A optional repository-specific URI pointing to the repository‟s web interface.
3060 3061 3062 3063
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.
3064
o
If FALSE, then the change log can return all changes ever made to every object.
3065 3066
o
If TRUE, then the change log includes all changes made since a particular point in time, but not all changes ever made.
changesOnType: Indicates whether changes are available for base types in the repository. Valid values are from enumBaseObjectTypeIds. See section 2.1.11 Change Log.
3070
o
cmis:document
3071
o
cmis:folder
3072
o
cmis:policy
3073
o
cmis:relationship
3074
Enum supportedPermissions: specifies which types of permissions are supported.
3075
o
basic: indicates that the CMIS Basic permissions are supported.
3076
o
repository: Indicates that repository specific permissions are supported.
3077 3078
o
both: indicates that both CMIS basic permissions and repository specific permissions are supported.
3079 3080
Enum propagation: The list of allowed values for applyACL, which control how non-direct ACEs are handled by the repository:
3081 3082 3083
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.
3084 3085 3086
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.
3087 3088
o
repositorydetermined: indicates that the repository uses its own mechanisms to handle non-direct ACEs when applying ACLs.
3089 3090
Permission permissions: The list of repository-specific permissions the repository supports for managing ACEs (see section 2.8 Access Control).
3091 3092
PermissionMapping mapping: The list of mappings for the CMIS Basic permissions to allowable actions (see section 2.8 Access Control).
3093 3094 3095
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.
3096 3097 3098
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.
3099 3100
The cmisRepositoryInfoType schema describes the markup that will be included in all CMIS protocol bindings to implement this service.
3101
2.2.2.2.3 Exceptions Thrown & Conditions
3102
See section 2.2.1.4.1 General Exceptions
3103
2.2.2.3 getTypeChildren
3104 3105
Description: Returns the list of Object-Types defined for the Repository that are children of the specified Type.
3106
2.2.2.3.1 Inputs
3107
Required:
3108
3109
Optional:
String repositoryId: The identifier for the Repository.
2.2.2.4.2 Outputs Object-Types: The hierarchy of Object-Types defined for the Repository.
3151
2.2.2.4.3 Exceptions Thrown & Conditions
3152
See section 2.2.1.4.1 General Exceptions
3153 3154
invalidArgument: The Repository MUST throw this exception if the service is invoked with an invalid depth.
3155
2.2.2.5 getTypeDefinition
3156
Description: Gets the definition of the specified Object-Type.Inputs
3157
2.2.2.5.1 Inputs
3158
Required:
3159
String repositoryId: The identifier for the Repository.
3160
String typeId: The typeId of an Object-Type specified in the Repository.
3161 3162 3163
2.2.2.5.2 Outputs
Object-type including all property definitions. See section 2.1.3.3 (Object-Type Property Definitions) for further details.
3164
2.2.2.5.3 Exceptions Thrown & Conditions
3165
See section 2.2.1.4.1 General Exceptions
3166
2.2.3 Navigation Services
3167 3168 3169
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.
3170
2.2.3.1 getChildren
3171
Description: Gets the list of child objects contained in the specified folder.
3172
Notes:
3173 3174
If the Repository supports the optional “VersionSpecificFiling” capability, then the repository MUST return the document versions filed in the specified folder. o
3175
Otherwise, the latest version of the documents MUST be returned.
3176
2.2.3.1.1 Inputs
3177
Required:
3178
ID repositoryId: The identifier for the Repository.
3179
ID folderId: The identifier for the folder.
3180
Optional:
3181
Integer maxItems: See section 2.2.1.1 Paging.
3182
Integer skipCount: See section 2.2.1.1 Paging.
3183 3184 3185
String orderBy: The orderBy parameter MUST be a comma-separated list of query names and the ascending modifier “ASC” or the descending modifier “DESC” for each query name. A repository's handling of the orderBy input is repository-specific.
String filter: See section 2.2.1.2.1 Properties. The service will only return the properties in the matched object if they exist on the matched object type definition and in the filter.
3188
Enum includeRelationships: See section 2.2.1.2.2 Relationships.
3189
String renditionFilter: See section 2.2.1.2.4 Renditions.
3190
Boolean includeAllowableActions: See section 2.2.1.2.6 Allowable Actions.
3191 3192
Boolean includePathSegment: Defaults to FALSE. If TRUE, returns a PathSegment for each child object for use in constructing that object‟s path.
3193 3194 3195
2.2.3.1.2 Outputs
ObjectResults: A list of the child objects for the specified folder. Each object result MUST include the following elements if they are requested:
3196
o
Properties: The list of properties for the object.
3197
o
Relationships: See section 2.2.1.2.2 Relationships.
3198
o
Renditions: See section 2.2.1.2.4 Renditions.
3199
o
AllowableActions: See section 2.2.1.2.6 Allowable Actions.
3200
o
String PathSegment: If includePathSegment was TRUE. See section 2.1.5.3 Paths.
3201
3202
Optional:
3203 3204
Boolean hasMoreItems: See section 2.2.1.1 Paging.
Integer numItems: See section 2.2.1.1 Paging.
2.2.3.1.3 Exceptions Thrown & Conditions
3205
See section 2.2.1.4.1 General Exceptions
3206 3207
filterNotValid: The Repository MUST throw this exception if this property filter input parameter is not valid.
3208
invalidArgument: if the specified folder is not a folder
3209
2.2.3.2 getDescendants
3210 3211
Description: Gets the set of descendant objects contained in the specified folder or any of its childfolders.
3212
Notes:
3213
This method does NOT support paging as defined in the 2.2.1.1 Paging section.
3214
The order in which results are returned is respository-specific..
3215 3216 3217
If the Repository supports the optional capability capabilityVersionSpecificFiling, then the repository MUST return the document versions filed in the specified folder or its descendant folders. Otherwise, the latest version of the documents MUST be returned.
3218 3219 3220
If the Repository supports the optional capability capabilityMutlifiling and the same document is encountered multiple times in the hierarchy, then the repository MUST return that document each time is encountered.
3221
2.2.3.2.1 Inputs
3222
Required:
3223
ID repositoryId: The identifier for the Repository.
Integer depth: The number of levels of depth in the folder hierarchy from which to return results. Valid values are:
3228
o
1: Return only objects that are children of the folder.
3229 3230
o
: Return only objects that are children of the folder and descendants up to levels deep.
3231
o
-1: Return ALL descendant objects at all depth levels in the CMIS hierarchy.
3232
o
The default value is repository specific and SHOULD be at least 2 or -1
3233
String filter: See section 2.2.1.2.1 Properties.
3234
Enum includeRelationships: See section 2.2.1.2.2 Relationships.
3235
String renditionFilter: See section 2.2.1.2.4 Renditions.
3236
Boolean includeAllowableActions: See section 2.2.1.2.6 Allowable Actions.
3237 3238
Boolean includePathSegment: Defaults to FALSE. If TRUE, returns a PathSegment for each child object for use in constructing that object‟s path.
3239 3240 3241
2.2.3.2.2 Outputs
ObjectResults: A list of the descendant objects for the specified folder. Each object result MUST include the following elements if they are requested:
3242
o
Properties: The list of properties for the object.
3243
o
Relationships: See section 2.2.1.2.2 Relationships.
3244
o
Renditions: See section 2.2.1.2.4 Renditions.
3245
o
AllowableActions: See section 2.2.1.2.6 Allowable Actions.
3246
o
String PathSegment: If includePathSegment was TRUE. See section 2.1.5.3 Paths.
3247
2.2.3.2.3 Exceptions Thrown & Conditions
3248
See section 2.2.1.4.1 General Exceptions
3249 3250
filterNotValid: The Repository MUST throw this exception if this property filter input parameter is not valid.
3251 3252
invalidArgument: The Repository MUST throw this exception if the service is invoked with “depth = 0”.
3253
invalidArgument: if the specified folder is not a folder
3254
2.2.3.3 getFolderTree
3255
Description: Gets the set of descendant folder objects contained in the specified folder.
3256 3257
Notes:
3258
This method does NOT support paging as defined in the 2.2.1.1 Paging section.
3259
The order in which results are returned is respository-specific..
3260
2.2.3.3.1 Inputs
3261
Required:
ID repositoryId: The identifier for the Repository.
Integer depth: The number of levels of depth in the folder hierarchy from which to return results. Valid values are:
3267
o
1: Return only folders that are children of the folder.
3268 3269
o
: Return only folders that are children of the folder and descendant folders up to levels deep.
3270
o
-1: Return ALL descendant folders at all depth levels in the CMIS hierarchy.
3271
o
The default value is repository specific and SHOULD be at least 2 or -1
3272
String filter: See section 2.2.1.2.1 Properties.
3273
Enum includeRelationships: See section 2.2.1.2.2 Relationships.
3274
String renditionFilter: See section 2.2.1.2.4 Renditions.
3275
Boolean includeAllowableActions: See section 2.2.1.2.6 Allowable Actions.
3276 3277
Boolean includePathSegment: Defaults to FALSE. If TRUE, returns a PathSegment for each child object for use in constructing that object‟s path.
3278 3279 3280
2.2.3.3.2 Outputs
ObjectResults: A list of the descendant folders for the specified folder. Each object result MUST include the following elements if they are requested:
3281
o
Properties: The list of properties for the object.
3282
o
Relationships: See section 2.2.1.2.2 Relationships.
3283
o
Renditions: See section 2.2.1.2.4 Renditions.
3284
o
AllowableActions: See section 2.2.1.2.6 Allowable Actions.
3285
o
String pathSegment: If includePathSegment was TRUE. See section 2.1.5.3 Paths.
3286
2.2.3.3.3 Exceptions Thrown & Conditions
3287
See section 2.2.1.4.1 General Exceptions
3288 3289
filterNotValid: The Repository MUST throw this exception if this property filter input parameter is not valid.
3290 3291
invalidArgument: The Repository MUST throw this exception if the service is invoked with an invalid depth
3292
invalidArgument: if the specified folder is not a folder
3293 3294 3295
2.2.3.4 getFolderParent
3296
Description: Gets the parent folder object for the specified folder object.
3297
2.2.3.4.1 Inputs
3298
Required:
ID repositoryId: The identifier for the Repository.
Object: The parent folder object of the specified folder.
2.2.3.4.3 Exceptions Thrown & Conditions
3306
See section 2.2.1.4.1 General Exceptions
3307 3308
filterNotValid: The Repository MUST throw this exception if this property filter input parameter is not valid.
3309 3310
invalidArgument: The Repository MUST throw this exception if the folderId input is the root folder.
3311
2.2.3.5 getObjectParents
3312
Description: Gets the parent folder(s) for the specified non-folder, fileable object.
3313
2.2.3.5.1 Inputs
3314
Required:
3315
ID repositoryId: The identifier for the Repository.
3316
ID objectId: The identifier for the object.
3317
Optional:
3318
String filter: See section 2.2.1.2.1 Properties
3319
Enum includeRelationships: See section 2.2.1.2.2 Relationships.
3320
String renditionFilter: See section 2.2.1.2.4 Renditions.
3321
Boolean includeAllowableActions: See section 2.2.1.2.6 Allowable Actions.
3322
Boolean includeRelativePathSegment: See section 2.1.5.3 Paths.
3323 3324 3325 3326
2.2.3.5.2 Outputs
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:
3327
o
Properties: The list of properties for the object.
3328
o
Relationships: See section 2.2.1.2.2 Relationships.
3329
o
Renditions: See section 2.2.1.2.4 Renditions.
3330
o
AllowableActions: See section 2.2.1.2.6 Allowable Actions.
3331 3332
o
String relativePathSegment: If includeRelativePathSegment was TRUE. See section 2.1.5.3 Paths.
3333
2.2.3.5.3 Exceptions Thrown & Conditions
3334
See section 2.2.1.4.1 General Exceptions
3335 3336
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.
3337 3338
filterNotValid: The Repository MUST throw this exception if this property filter input parameter is not valid.
ID repositoryId: The identifier for the Repository. ID folderId: The identifier for a folder in the repository from which documents should be returned.
3346 3347
o
If specified, the Repository MUST only return checked out documents that are childobjects of the specified folder.
3348 3349
o
If not specified, the Repository MUST return checked out documents from anywhere in the repository hierarchy.
3350
Integer maxItems: See section 2.2.1.1 Paging.
3351
Integer skipCount: See section 2.2.1.1 Paging.
3352 3353 3354
String orderBy: The orderBy parameter MUST be a comma-separated list of query names and the ascending modifier “ASC” or the descending modifier “DESC” for each query name. A repository's handling of the orderBy input is repository-specific.
3355
String filter: See section 2.2.1.2.1 Properties.
3356
Enum includeRelationships: See section 2.2.1.2.2 Relationships.
3357
String renditionFilter: See section 2.2.1.2.4 Renditions.
3358
Boolean includeAllowableActions: See section 2.2.1.2.6 Allowable Actions.
3359 3360 3361
2.2.3.6.2 Outputs
ObjectResults: A list of checked out documents. Each object result MUST include the following elements if they are requested:
3362
o
Properties: The list of properties for the object.
3363
o
Relationships: See section 2.2.1.2.2 Relationships.
3364
o
Renditions: See section 2.2.1.2.4 Renditions.
3365
o
AllowableActions: See section 2.2.1.2.6 Allowable Actions.
3366
3367
Optional:
3368
Boolean hasMoreItems: See section 2.2.1.1 Paging. Integer numItems: See section 2.2.1.1 Paging.
3369 3370
2.2.3.6.3 Exceptions Thrown & Conditions
3371
See section 2.2.1.4.1 General Exceptions
3372 3373
filterNotValid: The Repository MUST throw this exception if this property filter input parameter is not valid.
3374
2.2.4 Object Services
3375
CMIS provides ID-based CRUD (Create, Retrieve, Update, Delete), operations on objects in a Repository.
3376
2.2.4.1 createDocument
3377 3378
Description: Creates a document object of the specified type (given by the cmis:objectTypeId property) in the (optionally) specified location.
ID repositoryId: The identifier for the Repository.
3382 3383
properties: The property values that MUST be applied to the newly-created Document Object.
3384
Optional:
3385 3386
ID folderId: If specified, the identifier for the folder that MUST be the parent folder for the newlycreated Document Object. o
3387 3388
This parameter MUST be specified if the Repository does NOT support the optional “unfiling” capability.
3389 3390 3391 3392
contentStream: The Content Stream that MUST be stored for the newlycreated 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.
3393 3394 3395
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:
3396
o
none: The document MUST be created as a non-versionable document.
3397
o
checkedout: The document MUST be created in the checked-out state.
3398
o
major (default): The document MUST be created as a major version
3399
o
minor: The document MUST be created as a minor version.
3400 3401
policies: A list of policy IDs that MUST be applied to the newly-created Document object.
3402 3403
ACE addACEs: A list of ACEs that MUST be added to the newly-created Document object, either using the ACL from folderId if specified, or being applied if no folderId is specified.
3404 3405 3406
ACE removeACEs: A list of ACEs that MUST be removed from the newly-created Document object, either using the ACL from folderId if specified, or being ignored if no folderId is specified.
3407 3408 3409
2.2.4.1.2 Outputs ID objectId: The ID of the newly-created document.
2.2.4.1.3 Exceptions Thrown & Conditions
3410
See section 2.2.1.4.1 General Exceptions
3411 3412
constraint: The Repository MUST throw this exception if ANY of the following conditions are met:
3413 3414
o
The cmis:objectTypeId property value is not an Object-Type whose baseType is “Document”.
3415 3416
o
The cmis:objectTypeId property value is NOT in the list of AllowedChildObjectTypeIds of the parent-folder specified by folderId.
3417 3418
o
The value of any of the properties violates the min/max/required/length constraints specified in the property definition in the Object-Type.
3419 3420 3421
o
The “contentStreamAllowed” attribute of the Object-Type definition specified by the cmis:objectTypeId property value is set to “required” and no contentStream input parameter is provided.
The “versionable” attribute of the Object-Type definition specified by the cmis:objectTypeId property value is set to FALSE and a value for the versioningState input parameter is provided that is something other than “none”.
3425 3426 3427
o
The “versionable” attribute of the Object-Type definition specified by the cmis:objectTypeId property value is set to TRUE and the value for the versioningState input parameter is provided that is “none”.
3428 3429
o
The “controllablePolicy” attribute of the Object-Type definition specified by the cmis:objectTypeId property value is set to FALSE and at least one policy is provided.
3430 3431
o
The “controllableACL” attribute of the Object-Type definition specified by the cmis:objectTypeId property value is set to FALSE and at least one ACE is provided.
3432 3433
o
At least one of the permissions is used in an ACE provided which is not supported by the repository.
3434 3435 3436
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.
3437
storage: See section 2.2.1.4.2 Specific Exceptions.
3438 3439 3440
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.
3441
2.2.4.2 createDocumentFromSource
3442 3443
Description: Creates a document object as a copy of the given source document in the (optionally) specified location.
3444
2.2.4.2.1 Inputs
3445
Required:
3446
ID repositoryId: The identifier for the Repository.
3447
ID sourceId: The identifier for the source document.
3448
Optional:
3449 3450
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.
3451 3452
ID folderId: If specified, the identifier for the folder that MUST be the parent folder for the newlycreated Document Object. o
3453 3454 3455 3456
This parameter MUST be specified if the Repository does NOT support the optional “unfiling” capability.
Enum versioningState: An enumeration specifying what the versioing state of the newly-created object MUST be. Valid values are:
3457
o
none: The document MUST be created as a non-versionable document.
3458
o
checkedout: The document MUST be created in the checked-out state.
3459
o
major (default): The document MUST be created as a major version
3460
o
minor: The document MUST be created as a minor version.
3461 3462
policies: A list of policy IDs that MUST be applied to the newly-created Document object.
3463 3464
ACE addACEs: A list of ACEs that MUST be added to the newly-created Document object, either using the ACL from folderId if specified, or being applied if no folderId is specified.
ACE removeACEs: A list of ACEs that MUST be removed from the newly-created Document object, either using the ACL from folderId if specified, or being ignored if no folderId is specified.
2.2.4.2.2 Outputs ID objectId: The ID of the newly-created document.
2.2.4.2.3 Exceptions Thrown & Conditions
3471
See section 2.2.1.4.1 General Exceptions
3472 3473
constraint: The Repository MUST throw this exception if ANY of the following conditions are met:
3474
o
The sourceId is not an Object whose baseType is “Document”.
3475 3476
o
The source document‟s cmis:objectTypeId property value is NOT in the list of AllowedChildObjectTypeIds of the parent-folder specified by folderId.
3477 3478 3479
o
The “versionable” attribute of the Object-Type definition specified by the cmis:objectTypeId property value is set to FALSE and a value for the versioningState input parameter is provided that is something other than “none”.
3480 3481 3482
o
The “versionable” attribute of the Object-Type definition specified by the cmis:objectTypeId property value is set to TRUE and the value for the versioningState input parameter is provided that is “none”.
3483 3484
o
The “controllablePolicy” attribute of the Object-Type definition specified by the cmis:objectTypeId property value is set to FALSE and at least one policy is provided.
3485 3486
o
The “controllableACL” attribute of the Object-Type definition specified by the cmis:objectTypeId property value is set to FALSE and at least one ACE is provided.
3487 3488
o
At least one of the permissions is used in an ACE provided which is not supported by the repository.
3489 3490 3491
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.
3492
storage: See section 2.2.1.4.2 Specific Exceptions.
3493 3494 3495
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.
3496
2.2.4.3 createFolder
3497
Description: Creates a folder object of the specified type in the specified location.
3498
2.2.4.3.1 Inputs
3499
Required:
3500
ID repositoryId: The identifier for the Repository.
3501 3502
properties: The property values that MUST be applied to the newly-created Folder Object.
3503 3504
ID folderId: The identifier for the folder that MUST be the parent folder for the newly-created Folder Object.
3505
Optional:
3506
policies: A list of policy IDs that MUST be applied to the newly-created Folder object.
ACE addACEs: A list of ACEs that MUST be added to the newly-created Folder object, either using the ACL from folderId if specified, or being applied if no folderId is specified.
3509 3510 3511
ACE removeACEs: A list of ACEs that MUST be removed from the newly-created Folder object, either using the ACL from folderId if specified, or being ignored if no folderId is specified.
3512 3513 3514
2.2.4.3.2 Outputs
ID objectId: The ID of the newly-created folder.
2.2.4.3.3 Exceptions Thrown & Conditions
3515
See section 2.2.1.4.1 General Exceptions
3516 3517
constraint: The Repository MUST throw this exception if ANY of the following conditions are met:
3518
o
The cmis:objectTypeId property value is not an Object-Type whose baseType is “Folder”.
3519 3520
o
The value of any of the properties violates the min/max/required/length constraints specified in the property definition in the Object-Type.
3521 3522
o
The cmis:objectTypeId property value is NOT in the list of AllowedChildObjectTypeIds of the parent-folder specified by folderId.
3523 3524
o
The “controllablePolicy” attribute of the Object-Type definition specified by the cmis:objectTypeId property value is set to FALSE and at least one policy is provided.
3525 3526
o
The “controllableACL” attribute of the Object-Type definition specified by the cmis:objectTypeId property value is set to FALSE and at least one ACE is provided.
3527 3528
o
At least one of the permissions is used in an ACE provided which is not supported by the repository.
3529 3530 3531
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.
3532
storage: See section 2.2.1.4.2 Specific Exceptions.
3533
2.2.4.4 createRelationship
3534
Description: Creates a relationship object of the specified type
3535
2.2.4.4.1 Inputs
3536
Required:
3537
ID repositoryId: The identifier for the Repository.
3538 3539
properties: The property values that MUST be applied to the newly-created Relationship Object.
3540
Optional:
3541 3542
policies: A list of policy IDs that MUST be applied to the newly-created Replationship object.
3543 3544 3545 3546 3547
ACE addACEs: A list of ACEs that MUST be added to the newly-created Relationship object, either using the ACL from folderId if specified, or being applied if no folderId is specified. ACE removeACEs: A list of ACEs that MUST be removed from the newly-created Relationship 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 relationship.
2.2.4.4.3 Exceptions Thrown & Conditions
3551
See section 2.2.1.4.1 General Exceptions
3552 3553
constraint: The Repository MUST throw this exception if ANY of the following conditions are met:
3554 3555
o
The cmis:objectTypeId property value is not an Object-Type whose baseType is “Relationship”.
3556 3557
o
The value of any of the properties violates the min/max/required/length constraints specified in the property definition in the Object-Type.
3558 3559
o
The sourceObjectId‟s ObjectType is not in the list of “allowedSourceTypes” specified by the Object-Type definition specified by cmis:objectTypeId property value.
3560 3561
o
The targetObjectId‟s ObjectType is not in the list of “allowedTargetTypes” specified by the Object-Type definition specified by cmis:objectTypeId property value.
3562 3563
o
The “controllablePolicy” attribute of the Object-Type definition specified by the cmis:objectTypeId property value is set to FALSE and at least one policy is provided.
3564 3565
o
The “controllableACL” attribute of the Object-Type definition specified by the cmis:objectTypeId property value is set to FALSE and at least one ACE is provided.
3566 3567
o
At least one of the permissions is used in an ACE provided which is not supported by the repository.
3568 3569 3570
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.
3571
storage: See section 2.2.1.4.2 Specific Exceptions.
3572
2.2.4.5 createPolicy
3573
Description: Creates a policy object of the specified type
3574
2.2.4.5.1 Inputs
3575
Required:
3576
ID repositoryId: The identifier for the Repository.
3577 3578
properties: The property values that MUST be applied to the newly-created Policy Object.
3579
Optional:
3580 3581
ID folderId: If specified, the identifier for the folder that MUST be the parent folder for the newlycreated Policy Object. o
3582 3583
This parameter MUST be specified if the Repository does NOT support the optional “unfiling” capability.
3584
policies: A list of policy IDs that MUST be applied to the newly-created Policy object.
3585 3586
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.
3587 3588 3589
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.
2.2.4.5.3 Exceptions Thrown & Conditions
3593
See section 2.2.1.4.1 General Exceptions
3594 3595
constraint: The Repository MUST throw this exception if ANY of the following conditions are met:
3596
o
The cmis:objectTypeId property value is not an Object-Type whose baseType is “Policy”.
3597 3598
o
The value of any of the properties violates the min/max/required/length constraints specified in the property definition in the Object-Type.
3599 3600
o
The cmis:objectTypeId property value is NOT in the list of AllowedChildObjectTypeIds of the parent-folder specified by folderId.
3601 3602
o
The “controllablePolicy” attribute of the Object-Type definition specified by the cmis:objectTypeId property value is set to FALSE and at least one policy is provided.
3603 3604
o
The “controllableACL” attribute of the Object-Type definition specified by the cmis:objectTypeId property value is set to FALSE and at least one ACE is provided.
3605 3606
o
At least one of the permissions is used in an ACE provided which is not supported by the repository.
3607 3608 3609
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.
3610
storage: See section 2.2.1.4.2 Specific Exceptions.
3611
2.2.4.6 getAllowableActions
3612
Description: Gets the list of allowable actions for an Object (see section.2.2.1.2.6 Allowable Actions).
3613
2.2.4.6.1 Inputs
3614
Required:
3615
ID repositoryId: The identifier for the Repository.
3616
ID objectId: The identifier for the object
3617 3618 3619 3620
2.2.4.6.2 Outputs
AllowableActions: see section 2.2.1.2.6 Allowable Actions.
2.2.4.6.3 Exceptions Thrown & Conditions See section 2.2.1.4.1 General Exceptions
3621
2.2.4.7 getObject
3622
Description: Gets the specified information for the Object.
3623
2.2.4.7.1 Inputs
3624
Required:
3625
ID repositoryId: The identifier for the Repository.
Boolean includeAllowableActions: See section 2.2.1.2.6 Allowable Actions.
3668
Enum includeRelationships: See section 2.2.1.2.2 Relationships.
3669
String renditionFilter: See section 2.2.1.2.4 Renditions.
3670
Boolean includePolicyIds: See section 2.2.1.2.2 Relationships.
3671
Boolean includeACL: See section 2.2.1.2.5 ACLs.
3672
String path: The path to the object. See section 2.1.5.3 Paths.
2.2.4.9.2 Outputs
3673
Properties: The list of properties for the object.
3674
AllowableActions: See section 2.2.1.2.6 Allowable Actions.
3675
2.2.4.9.3 Exceptions Thrown & Conditions
3676
3677 3678
filterNotValid: The Repository MUST throw this exception if this property filter input parameter is not valid.
See section 2.2.1.4.1 General Exceptions
3679
2.2.4.10 getContentStream
3680 3681
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.
3682 3683
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.
3684
2.2.4.10.1 Inputs
3685
Required:
3686
ID repositoryId: The identifier for the Repository.
3687
ID objectId: The identifier for the object
3688
Optional:
3689 3690 3691
3692 3693 3694
ID streamId: The identifier for the rendition stream, when used to get a rendition stream. For Documents, if not provided then this method returns the content stream. For Folders, it MUST be provided.
2.2.4.10.2 Outputs
ContentStream: The specified content stream or rendition stream for the object.
2.2.4.10.3 Exceptions Thrown & Conditions
3695
3696 3697
constraint: The Repository MUST throw this exception if the object specified by objectId does NOT have a content stream or rendition stream.
See section 2.2.1.4.1 General Exceptions
3698
2.2.4.11 getRenditions
3699 3700
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.
3703
2.2.4.11.1 Inputs
3704
Required:
ID repositoryId: The identifier for the Repository.
3706
ID objectId: The identifier for the object
3707
Optional:
3708
String renditionFilter: See Section 2.2.1.2.4
3709
Integer maxItems: See section 2.2.1.1 Paging.
3710
Integer skipCount: See section 2.2.1.1 Paging.
3705
3711 3712 3713
2.2.4.11.2 Outputs
Renditions: The set of renditions available on this object
2.2.4.11.3 Exceptions Thrown & Conditions
3714
See section 2.2.1.4.1 General Exceptions
3715 3716
notSupported: The service method requires functionality that is not supported by the repository
3717
filterNotValid : The filter specified is not valid
3718
2.2.4.12 updateProperties
3719
Description: Updates properties of the specified object.
3720
Notes:
3721 3722
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.
3723 3724 3725
Each CMIS protocol bindings MUST specify whether the updateProperties service MUST always include all up encoding="UTF-8" standalone="yes"?> Al Brown urn:uuid:efe0542e-8933-4b3e-93f2-4d1caa3fc2d9 CMIS Example Document 2010-01-25T10:20:58.318-08:00 some text invoice CMIS Example Document
4502
3.3.2 CMIS Query
4503
Media Type: application/cmisquery+xml
4504
Starting tag: cmis:query
4505 4506
This document contains the representation of a query to be executed in a CMIS repository.
Example: Feed for folder1 Al Brown http://www.ibm.com/ [email protected] 2010-01-25T10:20:58.536-08:00 urn:uuid:4a80905c-f774-4a9e-a57d-bf0dae5a796e Al Brown http://www.ibm.com/ [email protected] urn:uuid:63a9c18c-5e31-4590-8462-86d181e345a4 CMIS Example Folder as Customer type 2010-01-25T10:20:58.536-08:00
2010-01-25T10:20:58.536-08:00 HTML summary of Entry 63a9c18c-5e31-45908462-86d181e345a4 63a9c18c-5e31-4590-846286d181e345a4 customer CMIS Example Folder as Customer type Al Brown http://www.ibm.com/ [email protected] 2010-01-25T10:20:58.536-08:00 urn:uuid:51b5c0cd-e473-4492-82b3666fbf913cf0
Al Brown http://www.ibm.com/ [email protected] urn:uuid:20cb7e68-0a7e-46ea-87e009fb8d85286e CMIS Example Doc as Invoice type 2010-01-25T10:20:58.536-08:00 2010-01-25T10:20:58.53608:00 HTML summary of Entry 20cb7e680a7e-46ea-87e0-09fb8d85286e
20cb7e68-0a7e-46ea-87e0-09fb8d85286e invoice1.pdf Al Brown http://www.ibm.com/ [email protected] urn:uuid:1de1d476-11fb-47bf-b136-8a8d0b4b030a CMIS Example Doc as Invoice type 2010-01-25T10:20:58.568-08:00 2010-01-25T10:20:58.568-08:00 HTML summary of Entry 1de1d476-11fb-47bfb136-8a8d0b4b030a
Note: This media type is used on links with relation down (see section 3.4.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)
4831 4832
Please also see the example documents included with the schema.
4833 4834
3.3.5 CMIS ACL
4835
Media Type: application/cmisacl+xml
4836
Starting tag: cmis:acl
4837 4838
This document specifies an Access Control List based on the schema in CMIS Domain Model.
Please also see the example documents included with the schema.
4860 4861
3.4 Atom Extensions for CMIS
4862
3.4.1 Atom Element Extensions
4863
3.4.1.1 AtomPub Workspace
4864
3.4.1.1.1 cmisra:collectionType
4865
This element is included inside the app:collection element. This specifies the cmis collection type.
4866
3.4.1.1.2 cmisra:repositoryInfo
4867 4868
This element is included inside the app:workspace element. This specifies information about the CMIS repository.
4869
3.4.1.1.3 cmis:uritemplate
4870 4871
This element is included inside the app:workspace element. This specifies information about URI templates
4872
3.4.1.2 Atom Feed
4873
3.4.1.2.1 cmisra:numItems
4874
This element is included inside the atom:feed element. This specifies the number of items in the feed.
4875
3.4.1.3 Atom Entry
4876
3.4.1.3.1 cmisra:children
4877 4878
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.
4879 4880
3.4.1.3.2 cmisra:object
4881 4882
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.
4883 4884
3.4.1.3.3 cmisra:pathSegment
4885 4886
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.
4887 4888
3.4.1.3.4 cmisra:relativePathSegment
4889 4890
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.
4894
3.4.1.3.6 cmisra:content
4895 4896
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:
4897
mediaType: This contains the media type of the content as described by RFC4288.
4898
base64: This contains the base64 content of the file
4899 4900
This element MUST take precedence over atom:content on submission of an atom entry to a repository.
4901 4902
A repository MUST use the atom:content element to return back to the client the content of the document.
4903 4904 4905
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.
4906 4907
3.4.2 Attributes
4908
These attributes are in the CMIS RestAtom namespace (cmisra).
4909
3.4.2.1 cmisra:id
4910 4911
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.
4912 4913 4914
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.
Please also see the example documents included with the schema.
4928 4929
3.4.2.2 cmisra:renditionKind
4930 4931
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.
Please also see the example documents included with the schema.
4944
3.4.3 CMIS Link Relations
4945 4946 4947
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.
4948 4949 4950 4951 4952
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.
4953 4954 4955 4956 4957
Links may have the following attribute in addition to the ones specified by Atom and Atom Publishing Protocol:
(CMIS) id: Specifies the CMIS ID of the resource referenced by the link. Repositories SHOULD include this attribute for elements such as atom:link that point to CMIS resources that have an id.
4958 4959
These are the link relation types specified by CMIS:
4960
3.4.3.1 Existing Link Relations
4961 4962
Existing link relations should be used where appropriate by the implementation. In addition, the following link relations are leveraged for the CMIS specification:
4963
self
4964
o
This link relation provides the URI to retrieve this resource again.
4965
o
Service: The appropriate service that generated the atom entry or feed.
4966
o
Resources: All except AllowableActions, ACL and Content Streams
4967
service
4968 4969 4970
o
The service link relation when provided on a CMIS resource MUST point to an AtomPub service document with only one workspace element. This workspace element MUST represent the repository containing that resource.
4971
o
Media Type: application/atomsvc+xml
4972
o
Resources: All except AllowableActions, ACL and Content Streams
4973
describedby
4974 4975
o
When used on a CMIS resource, this link relation MUST point to an atom entry that describes the type of that resource.
When used on an Atom Feed document, this link relation MUST point to the atom entry representing the CMIS resource from whom this feed is derived.
4983
o
Media Type: application/atom+xml;type=entry
4984
o
Resources: All CMIS Feeds and Collections
4985
edit-media
4986 4987 4988
o
When used on a CMIS document resource, this link relation MUST point to the URI for content stream of the CMIS document. This URI MUST be used to set or delete the content stream. This URI MAY be used to retrieve the content stream for the document.
When used on a CMIS resource, this link relation MUST provide an URI that can be used with the HTTP PUT method to modify the atom:entry for the CMIS resource
4995
o
Service: getObject (GET), updateProperties (PUT)
4996
o
Media Type: application/atom+xml;type=entry
4997
o
Resources: CMIS Documents, CMIS Folders, CMIS Relationships and CMIS Policies
4992
4998
edit
alternate
4999
o
This is used to express Renditions on a CMIS resource. See section 3.1.6 Renditions.
5000
o
Service: getContentStream for specified rendition
5001
o
Resources: CMIS Document, CMIS Folder and CMIS Policies
5003
o
This is used for Paging. Please see the AtomPub specification.
5004
o
Media Type: application/atom+xml;type=feed
5005
o
Resources: All Feeds
5002
5006
first
previous
5007
o
This is used for Paging. Please see the AtomPub specification.
5008
o
Media Type: application/atom+xml;type=feed
5009
o
Resources: All Feeds
5010
next
5011
o
This is used for Paging. Please see the AtomPub specification.
5012
o
Media Type: application/atom+xml;type=feed
5013
o
Resources: All Feeds
5015
o
This is used for Paging. Please see the AtomPub specification.
5016
o
Media Type: application/atom+xml;type=feed
5017
o
Resources: All Feeds
5014
last
5018 5019 5020 5021
Please see http://www.iana.org/assignments/link-relations/link-relations.xhtml for more information on these link relations.
This link relation MUST point to a resource containing an Atom Feed of CMIS relationship resources for the CMIS resource containing this link relation.
5067
Service: getObjectRelationships
5068
Media Type: application/atom+xml;type=feed
5069
Resources: CMIS Documents, CMIS Folders, and CMIS Policies
When used on a CMIS Relationship resource, this link relation MUST point to an atom entry document for the CMIS Resource specified by the cmis:sourceId property on the relationship.
When used on a CMIS Relationship resource, this link relation MUST point to an atom entry document for the CMIS Resource specified by the cmis:targetId property on the relationship.
Used in AtomPub Service Document to identify the root folder descendants
5115
Service: getDescendants for root folder
5116
Media Type: application/atom+xml;type=feed
5117
Resources: AtomPub Workspace Element in Service Document
5118 5119
3.5 Atom Resources
5120
For all Atom Resources used in this specification, the following MUST be followed:
5121
3.5.1 Feeds
5122
Any feed MUST be a valid Atom Feed document and conform to the guidelines below for cmis objects:
5123 5124
atom:updated SHOULD be the latest time the folder or its contents was updated. If unknown by the underlying repository, it MUSTbe the current time.
5125
atom:author/atom:name MUST be the CMIS property cmis:createdBy
5126
atom:title MUST be the CMIS property cmis:name
5127 5128 5129
The atom:link with relation self MUST be generated to return the URI of the feed. If paging or any other mechanism is used to filter, sort, or change the representation of the feed, the URI MUST point back a resource with the same representation.
5130 5131
A feed SHOULD contain the element app:collection, describing the appropriate media types supported for creation of new entries in the feed
5132 5133
atom:id SHOULD be derived from cmis:objectId. This id MUST be compliant with atom‟s specification and be a valid URI.
5134 5135
Feeds MAY be paged via the link relations specified in AtomPub. If more items are available than contained in the feed, then a link with the relation next MUST be included in the feed.
5136 5137
Any feed MUST be a valid Atom Feed document and conform to the guidelines below for cmis types:
5138 5139
atom:updated SHOULD be the latest time type definition was updated. If unknown by the underlying repository, it MUSTbe the current time.
5140
atom:author/atom:name is repository specific
5141
atom:title MUST be the displayName attribute of the CMIS Type Definition.
5142
The atom:link with relation self MUST be generated to return the URI of the feed
5143 5144
atom:id SHOULD be derived from the id attribute of the CMIS Type Definition. This id MUST be compliant with atom‟s specification and be a valid URI.
5145 5146
Feeds MAY be paged via the link relations specified in AtomPub. If more items are available than contained in the feed, then a link with the relation next MUST be included in the feed.
5147 5148
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.
5153 5154
Note: Please see feedvalidator.org to validate Atom compliance.
5155
3.5.2 Entries
5156 5157
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:
5158
atom:title MUST be the cmis:name property
5159
app:edited MUST be cmis:lastModifiedDate
5160
atom:updated MUST be cmis:lastModifiedDate
5161
atom:published MUST be cmis:createdDate
5162
atom:author/atom:name MUST be cmis:createdBy
5163 5164
All CMIS properties MUST be exposed in CMIS cmis:properties elements even if they are duplicated in an atom element
5165 5166
atom:id SHOULD be derived from cmis:objectId. This id MUST be compliant with atom‟s specification and be a valid URI.
5167 5168 5169
The repository SHOULD populate the atom:summary tag with text that best represents a summary of the object. For example, an HTML table containing the properties and their values or the description of the document if available.
5170 5171
For Documents that support Content Streams:
5172 5173 5174 5175
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.
5176 5177 5178
Other Objects (Folders, Relationships, and other Document Types that do not support Content Streams, etc):
5179 5180 5181 5182
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.
5183 5184 5185
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.
5186 5187 5188
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:
5189
atom:title MUST be the cmis:displayName
5190 5191
The repository SHOULD populate the atom:summary tag with text that best represents a summary of the object. For example, the type description if available.
5192 5193 5194 5195
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.
Any atom element that is not specified is repository-specific.
5199
3.5.2.1 Hierarchical Atom Entries
5200 5201
The repository SHOULD NOT provide any links to hierarchical objects if those capabilities are not supported with the exception of getTypeDescendants which is required
5202 5203 5204 5205
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.
5206 5207 5208
The cmisra:children element MUST include an atom:feed element that contains the children entries of this resource.
5209 5210 5211
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.
Al Brown urn:uuid:af1d8c7f-b554-4dfb-bfe11f41e4b34fef CMIS Example Child of Folder 2010-01-25T10:20:57.818-08:00 af1d8c7f-b554-4dfb-bfe11f41e4b34fef document
5292
Please also see the example documents included with the schema.
5293
3.6 AtomPub Service Document (Repository)
5294 5295
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.
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.
5308 5309 5310 5311
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:
Root Folder Children Collection: Root folder of the Repository
5312
o
„root‟ for the children collection of the root folder
5313
o
cmisra:collectiontype=‟root‟
5314
Types Children Collection: Collection containing the base types in the repository
5315
o
„types‟ for the children collection
5316
o
cmisra:collectiontype=‟types‟
5317 5318 5319
The workspace element SHOULD contain these collections if the repository supports this functionality:
CheckedOut collection: collection containing all checked out documents user can see
5320
o
„checkedout‟
5321
o
cmisra:collectiontype=‟checkedout‟
5322
Query collection: Collection for posting queries to be executed
5323
o
„query‟
5324
o
cmisra:collectiontype=‟query‟
5325
Unfiled folder: Folder for posting documents to be unfiled; read can be disabled
5326
o
„unfiled‟
5327
o
cmisra:collectiontype=‟unfiled‟
5328 5329
The repository MUST include the URI templates in the workspace elements.
5330 5331 5332 5333
The workspace element MUST also contain the following link element with the relation:
http://docs.oasis-open.org/ns/cmis/link/200908/typedescendants: This link relation points to the types descendants for the base types in the repository.
5334 5335 5336
The workspace element MUST contain the following link elements of the following relations for those services which are supported by the repository:
5337 5338
http://docs.oasis-open.org/ns/cmis/link/200908/foldertree: This link relation points to the folder tree of the root folder. See Folder Tree resource for more information.
5339 5340
http://docs.oasis-open.org/ns/cmis/link/200908/rootdescendants: This link relation points to the Root Folder Descendants Feed for the root folder.
5341 5342 5343
http://docs.oasis-open.org/ns/cmis/link/200908/changes:This link relation points to the changes feed for the repository.
5344 5345 5346 5347
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.
Repositories MUST provide the following URI Templates:
5357
objectbyid
5358
objectbypath
5359
typebyid
5360 5361
Repositories MUST provide the URI Template query if the repository supports query.
5362 5363 5364 5365
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.
5366 5367 5368 5369
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.
5370 5371 5372
For example, if the URI template that supports the variable {id} is http://example.org/rep1/getbyid/{id}
5373 5374 5375
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
5376 5377 5378
Arguments that are substituted for URI template parameters MUST be percent escaped according to RFC3986. Please see that RFC for more information.
Example of URI Template element in an AtomPub Workspace Element: http://cmisexample.oasisopen.org/rep1/objectbyid/{id}?filter={filter}&includeAllowableActions={inc ludeAllowableActions}&includePolicyIds={includePolicyIds}&includeRelat ionships={includeRelationships}&includeACL={includeACL} objectbyid application/atom+xml;type=entry
5409 5410
Please also see the example documents included with the schema.
5411 5412
3.6.1.1 Object By Id
5413 5414
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.10 for more information.
5415 5416
Type: objectbyid
5417
Media Type: application/atom+xml;type=entry
5418 5419
Service: getObjectById
5420 5421
Variables that are supported by the template:
5422
{id}: Id of object
5423
{filter}: Property Filter
5424
{includeAllowableActions} o
5425 5426
{includePolicyIds}: Include Policy Ids: o
5427 5428
o
o
Valid values: See enumIncludeRelationships
{includeACL}: Include ACLs
5431 5432
Valid values: true, false
{includeRelationships}: Include relationships
5429 5430
Valid values: true, false
Valid values: true, false
{renditionFilter} o
5433
Valid values: Please see renditionFilter in CMIS Domain Model
Please also see the example documents included with the schema.
5452
3.6.1.2 Object By Path
5453 5454
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.10 for more information.
5455 5456
Type: objectbypath
5457
Media Type: application/atom+xml;type=entry
5458 5459
Service: getObjectByPath
5460 5461
Variables that are supported by the template:
5462
{path}: Path of Object
5463
{filter}: Property Filter
5464
{includeAllowableActions}: Boolean for include Allowable Actions o
5465 5466
{includePolicyIds}: Include Policy Ids: o
5467 5468
o
o
Valid values: See enumIncludeRelationships
{includeACL}: Include ACLs
5471 5472
Valid values: true, false
{includeRelationships}: Include relationships
5469 5470
Valid values: true, false
Valid values: true, false
{renditionFilter} o
5473
Valid values: Please see renditionFilter in CMIS Domain Model
Please also see the example documents included with the schema.
5553 5554 5555
3.6.2 HTTP Methods
5556
3.6.2.1 GET
5557 5558
This retrieves the AtomPub Service document for a specified repository. This exposes the capabilities defined in getRepositories and getRepositoryInfo in the Domain Model.
5559 5560 5561
The optional argument MAY be specified:
repositoryId:
5562 5563
o
This query parameter allows a client to specify a different repository than the one that is referenced by the URI.
5564 5565
o
If specified, the repository MUST return the AtomPub services document for the specified repository if that repository exists.
5566 5567
o
If not specified, the repository MUST return the service document for the repository that is referenced by URI.
5568 5569
3.7 Service Collections
5570
These are the collections that are included on an AtomPub Service document in the workspace element.
5571 5572
For any HTTP verb not specified on a resource,each implementation MAY chose to implement that HTTP verb in a repository-specific manner.
5573
3.7.1 Root Folder Collection
5574
This is a collection described in the service document. Please see Folder Children.
5575
3.7.2 Query Collection
5576 5577 5578 5579
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.
Link Relations on resulting feed from Query Collection:
o
5592 5593
service: Points to service document containing the CMIS repository. The service document MUST contain only one workspace element.
Media Type: application/atomsvc+xml
paging link relations as appropriate: first, next, previous, last
5594 5595 5596
The following CMIS Atom extension element MAY be included inside the atom feed:
cmisra:numItems
5597 5598 5599
The following CMIS Atom extension element MUST be included inside the atom entries:
cmisra:object inside atom:entry
5600 5601
3.7.2.1 POST
5602
This collection MUST accept CMIS Query documents (application/cmisquery+xml).
5603 5604 5605 5606 5607
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.
5608 5609
The feed returned MUST contain a set of atom entries representing the result set from the query.
5610 5611 5612 5613
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.
5614 5615 5616
If all the selected properties can be mapped to the same type reference, then the repository MAY include additional information in the atom entry.
Example server response: HTTP/1.1 201 Created 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/44ce5b47ebc3-4513-86e0-d3f46c77d0a8 Location: http://cmisexample.oasis-open.org/rep1/queryresult/44ce5b47-ebc34513-86e0-d3f46c77d0a8 CMIS Query Result for SELECT cmis:objectId FROM cmis:document Al Brown http://www.ibm.com/ [email protected] 2010-01-25T10:21:00.427-08:00 urn:uuid:811b1b9b-80f5-4788-b46c-aa77564e294b
The following CMIS Atom extension element MUST be included inside the atom entries:
cmisra:object inside atom:entry
5736 5737
3.7.3.1 GET
5738
The following arguments may be supplied. Please see the domain model for more information:
5739
filter
5740
folderId
5741
maxItems
5742
skipCount
5743
renditionFilter
5744
includeAllowableActions
5745
includeRelationships
5746
3.7.3.2 POST
5747 5748
When an atom entry is POST‟ed to this collection, the atom entry will be checked out. A ContentLocation header MUST be returned containing the location of the private working copy.
Example client request: POST /CheckedOut HTTP/1.1 Host: example.org Content-Length: 1044 Content-Type: application/atom+xml;type=entry Al Brown urn:uuid:8d32d716-701b-4491-84e8-ad57c8230940 CMIS Example Document to checkout 2010-01-25T10:21:00.380-08:00 8d32d716-701b-4491-84e8-ad57c8230940
6cce57fc-4e31-491c-8fab-4aa6e6797dbe customer CMIS Example Child of Folder 2010-01-25T10:21:00.396-08:00 2010-01-25T10:21:00.396-08:00 cmis:document Al Brown Al Brown true true false false false Checkin comment 0.1
text/plain text.txt 4234 document example sample cmis 6cce57fc-4e31-491c-8fab-4aa6e6797dbe Al Brown
5945 5946
Please also see the example documents included with the schema.
5947 5948
3.7.4 Unfiled Collection
5949 5950
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.
5951 5952
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).
5953
CMIS Services:
5954
POST: removeObjectFromFolder
5955
Media Type: application/atom+xml;type=feed
5956
Accept:
5957
MUST support Atom Entry Documents with CMIS extensions
5958
o
application/atom+xml;type=entry or
5959
o
application/cmisatom+xml
5960
MAY support other media type
5961 5962 5963 5964 5965
Link Relations:
service: Points to service document containing the CMIS repository. The service document MUST contain only one workspace element. o
paging link relations as appropriate: first, next, previous, last
5967 5968 5969
The following CMIS Atom extension element MAY be included inside the atom feed:
cmisra:numItems
5970 5971 5972
The following CMIS Atom extension element MUST be included inside the atom entries:
cmisra:object inside atom:entry
5973 5974
3.7.4.1 POST
5975 5976
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.
5977 5978 5979 5980
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.
5981 5982 5983 5984
This adheres to AtomPub model. Please see http://tools.ietf.org/html/rfc5023#section-5.3.
HTTP Success: 201 Location Header
5985 5986 5987 5988 5989
The following arguments may be supplied. Please see the domain model for more information:
removeFrom: For repositories which support multi-filing, this parameter identifies which folder to remove this object from. If specified, it indicates the folder from which the object shall be moved. If not specified, the object will be removed from all folders.
Example server response: HTTP/1.1 201 Created 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/151183738911-442b-9774-da3b102f224c Location: http://cmisexample.oasis-open.org/rep1/queryresult/15118373-8911442b-9774-da3b102f224c Al Brown http://www.ibm.com/ [email protected] urn:uuid:15118373-8911-442b-9774-da3b102f224c CMIS Example Document to unfiled 2010-01-25T10:21:00.443-08:00 2010-01-25T10:21:00.443-08:00 HTML summary of Entry 15118373-8911-442b-9774da3b102f224c
Checkin comment 0.1 text/plain text.txt 4234 document example sample cmis
6174 6175
Please also see the example documents included with the schema.
6176 6177
3.7.5 Types Children Collection
6178 6179 6180
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.
6181
CMIS Services:
6182
GET: getTypeChildren
6183
Media Type: application/atom+xml;type=feed
6184 6185 6186 6187
Link Relations:
service: Points to service document containing the CMIS repository. The service document MUST contain only one workspace element. o
6188
Media Type: application/atomsvc+xml
6189
via: points to the type definition entry whose children represent this feed
6190 6191
down: points to the atom feed document representing the descendents collection for this same type with media type of application/cmistree+xml
6192
paging link relations as appropriate: first, next, previous, last
6193
up: points to the parent type definition
6194
o
If this is a children feed for a base object type, this link is not present.
The following CMIS Atom extension element MUST be included inside the atom entries:
cmisra:object inside atom:entry
6239 6240
3.8.1.1 GET
6241
The following arguments may be supplied. Please see the domain model for more information:
6242
typeId
6243
includeSubRelationshipTypes
6244
relationshipDirection
6245
maxItems
6246
skipCount
6247
filter
6248
includeAllowableActions
6249
3.8.1.2 POST
6250 6251
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.
6252 6253
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.
6254
The server MUST return the appropriate status code if the cmis:objectTypeId is not specified.
Example server response: HTTP/1.1 201 Created 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-4c2786df-3f4b157bb495 Location: http://cmisexample.oasis-open.org/rep1/b3006a8f-345b-4c27-86df3f4b157bb495 Al Brown http://www.ibm.com/ [email protected] urn:uuid:b3006a8f-345b-4c27-86df-3f4b157bb495 New Relationship 2010-01-25T10:20:58.880-08:00 2010-01-25T10:20:58.880-08:00 HTML summary of Entry b3006a8f-345b-4c27-86df3f4b157bb495
b3006a8f-345b-4c27-86df-3f4b157bb495 customerRelationships New Relationship 2010-01-25T10:20:58.880-08:00 2010-01-25T10:20:58.880-08:00 cmis:relationship Al Brown Al Brown d4551c6d-30bd-4fc2-9c84-a55f11559e89 fe7e056f-c4bf-42f1-a03e-3ababcf2491d
6397 6398
Please also see the example documents included with the schema.
6399 6400
3.8.2 Folder Children Collection
6401
This is a collection comprised of all the direct children of a particular folder represented as a feed.
MUST support Atom Entry Documents with CMIS extensions
6415
MAY support other media type
6416 6417 6418 6419
Link Relations:
service: Points to service document containing the CMIS repository. The service document MUST contain only one workspace element. o
6420
Media Type: application/atomsvc+xml
6421
via: points to the atom entry of the folder generating this collection
6422
up: points to the atom entry document for this folder‟s parent
6423
o
If the root folder, this link relation MUST NOT be included.
6424
o
Media Type: application/atom+xml;type=entry
6425 6426
o
6427 6428 6429 6430
If a repository does not support capabilityGetDescendants, then this link SHOULD NOT be included.
http://docs.oasis-open.org/ns/cmis/link/200908/foldertree: Points to the folder tree for this folder. This is represented as a feed with CMIS hierarchy extensions. o
6431 6432
down: points to the atom feed document representing the descendents feed with a media type of application/cmistree+xml
Media Type: application/atom+xml;type=feed
paging link relations as appropriate: first, next, previous, last
6433 6434 6435
The following CMIS Atom extension element MAY be included inside the atom feed:
cmisra:numItems
6436 6437
The following CMIS Atom extension element MUST be included inside the atom entries:
6438
cmisra:object inside atom:entry
6439
cmisra:pathSegment inside atom:entry if pathSegment is not false
6440 6441
3.8.2.1 GET
6442
HTTP Code:
6443 6444 6445 6446 6447 6448
200 OK (Success)
The following arguments may be supplied. Please see the domain model for more information:
includeAllowableActions includeRelationships renditionFilter o If specified, renditions will be returned as links with relation alternate. orderBy includePathSegment
6455
3.8.2.2 POST
6456 6457
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.
6458 6459
HTTP Success: 201 Location Header
6460 6461 6462 6463
The following arguments MAY be supplied.
sourceFolderId: This parameter indicates the folder from which the object shall be moved from to the current specified folder. This parameter is not allowed for create operations.
6464
o
If specified moveObject will be performed.
6465
o
If not specified, addObjectToFolder will be performed.
6466 6467 6468
versioningState: The optional argument versioningState MAY specify additional versioning behavior such as checkIn as major or minor. Please see CMIS Domain Model for more information on this parameter.
6469 6470
POSTing an Atom Entry document with CMIS markup:
6471
Adding a document to a folder:
6472 6473
If the atom entry has a cmis property cmis:objectId that is valid for the repository, the object will be added to the folder.
6474 6475 6476 6477
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.
6478 6479
If the optional argument sourceFolderId is specified, then the object will be removed from the folder specified.
6480 6481 6482
If atom:content is missing from the request, the repository MUST treat the missing atom:content element as an empty atom:content element.
HTML summary of Entry b4423b8a-e46e-49fb-81414aed91d28b5b b4423b8a-e46e-49fb-8141-4aed91d28b5b invoice Document - To Be Moved 2010-01-25T10:20:58.786-08:00 2010-01-25T10:20:58.786-08:00 cmis:document Al Brown Al Brown true
Please also see the example documents included with the schema.
6673 6674 6675 6676 6677
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.
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)
6685
src attribute: Implementers MAY support external references to content
6686 6687
If the URI in the src attribute is not reachable, then an appropriate http status code should be returned.
6688
o
6689 6690 6691 6692 6693
o
6696
o
Please see the AtomPub specification RFC5023 for the processing model of the content element.
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)
6694 6695
As part of the atom entry inlining via the content element (AtomPub)
This element cmisra:content is base64 encoded
At a later time (AtomPub)
At a later time by replacing the edit-media link with a new content
6697 6698 6699
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 Al Brown urn:uuid:bb2b208b-3acd-4abe-9788-8078a239f228 New Invoice 2010-01-25T10:20:58.818-08:00 this is the content of the new document bb2b208b-3acd-4abe-9788-8078a239f228 invoice
Example server response: HTTP/1.1 201 Created 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-4454ad0b-10ea94c4b93d Location: http://cmisexample.oasis-open.org/rep1/13475008-6a20-4454-ad0b10ea94c4b93d Al Brown http://www.ibm.com/ [email protected] urn:uuid:13475008-6a20-4454-ad0b-10ea94c4b93d New Invoice 2010-01-25T10:20:58.818-08:00 2010-01-25T10:20:58.833-08:00 HTML summary of Entry 13475008-6a20-4454-ad0b10ea94c4b93d
0.1 text/plain text.txt 4234 document example sample cmis
6888 6889
Please also see the example documents included with the schema.
6890 6891
POSTing other document formats: (AtomPub)
6892 6893
The behavior is repository specific when a non Atom entry or an atom document without the CMIS elements is posted to a folder collection.
6894 6895
For example, the repository MAY auto-create a document with a specific type (document) the client could edit.
6896 6897
If the repository does not support this scenario or another exception occurs, then the repository MUST return the appropriate HTTP status code.
6898 6899
Optional arguments:
6900
versioningState (for createDocument)
6901
sourceFolderId (for moveObject)
6902 6903
3.8.3 Policies Collection
6904 6905 6906 6907
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.
6908 6909
CMIS Services:
6910
GET: getAppliedPolicies
6911
POST: applyPolicy (to object representing this collection of policies)
55cca51b-6cfa-4354-bdfe-690761576116 generalSecurityPolicy Security Policy for Invoices 2010-01-25T10:20:58.849-08:00 2010-01-25T10:20:58.864-08:00 cmis:policy Al Brown Al Brown
7065 7066
Please also see the example documents included with the schema.
7067
3.8.3.3 DELETE
7068 7069 7070
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.
7071 7072
3.9 Feeds
7073 7074
For any HTTP verb not specified on a resource,each implementation MAY chose to implement that HTTP verb in a repository-specific manner.
Example: Parent Feed for 268d30b5-91a0-47f0-b9856765e178f0bb Al Brown http://www.ibm.com/ [email protected] 2010-01-25T10:20:59.818-08:00 urn:uuid:6f541940-4abf-471b-99f0-8e6f66d53789 1 Al Brown http://www.ibm.com/ [email protected]
2010-01-25T10:20:59.833-08:00 cmis:folder Al Brown Al Brown 661d6945-8f75-4dea-87997ba07b0e510eup customer1
7224 7225
Please also see the example documents included with the schema.
7226
3.9.1.1 GET
7227
The following arguments may be supplied. Please see the domain model for more information:
7228
filter
7229
includeAllowableActions
7230
includeRelationships
7231
renditionFilter
7232
includeRelativePathSegment o
7233
If true, then the cmisra:relativePathSegment element MUST be included in the response.
7234
3.9.2 Changes
7235 7236 7237
This is a link relationship described in the service document that contains the changes in the repository in the workspace element. The link relation pointing to this feed is http://docs.oasisopen.org/ns/cmis/link/200908/changes.
7238 7239 7240
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.
7241 7242
CMIS Services:
7243
GET: getContentChanges()
7244
Media Type: application/atom+xml;type=feed
7245
Link Relations:
7246 7247
service: Points to service document containing the CMIS repository. The service document MUST contain only one workspace element.
paging link relations as appropriate: first, next, previous, last o
7250
ChangeLogToken is incorporated into the URI specified by the next link relation
7251 7252
This feed MUST be ordered from oldest first to newest.
7253 7254 7255 7256
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.
7257 7258 7259
The following CMIS Atom extension element MAY be included inside the atom feed:
cmisra:numItems
7260 7261 7262
The following CMIS Atom extension element MUST be included inside the atom entries:
cmis:folder Al Brown Al Brown 3f724c1d-12c8-43f2-919f674df52b6ebdup updated 2010-01-25T10:20:59.25508:00 policy Al Brown http://www.ibm.com/ [email protected] urn:uuid:6e27bada-b5a2-4a39-be2c-269806eb0d42 CMIS Example Document 2010-01-25T10:20:59.255-08:00 2010-01-25T10:20:59.255-08:00 HTML summary of Entry 6e27bada-b5a2-4a39be2c-269806eb0d42
Please also see the example documents included with the schema.
7540
3.9.2.1 GET
7541
The following optional parameters may be supplied:
7542
filter
7543
maxItems
7544
includeACL
7545
includePolicyIds
7546
includeProperties
7547 7548 7549
changeLogToken: If this parameter is specified, start the changes from the specified token. The changeLogToken is embedded in the paging link relations for normal iteration through the change list.
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.
7554 7555 7556
If a repository does not support capabilityGetDescendants, then these resources SHOULD NOT be exposed.
7557 7558
CMIS Services:
7559
GET: getDescendants
7560
DELETE: deleteTree
7561
Media Type: application/atom+xml;type=feed
7562 7563 7564 7565
Link Relations:
service: Points to service document containing the CMIS repository. The service document MUST contain only one workspace element. o
7566
Media Type: application/atomsvc+xml
7567
via: points to the atom entry of the folder generating this collection
7568
up: points to the atom entry document for this folder‟s parent
7569
o
Media Type: application/atom+xml;type=entry
7570
o
If the root folder, this link relation MUST not be included.
7571
down:
7572 7573
o
points to the atom feed document representing the children feed for this same folder with media type of application/atom+xml;type=entry
7574
o
Since this is the descendants, the descendants link SHOULD NOT be included
7575
paging link relations MAY be included as appropriate: first, next, previous, last o
7576 7577 7578
Repositories may support these paging link relations on a particular cmisra:children element.
http://docs.oasis-open.org/ns/cmis/link/200908/foldertree: Points to the folder tree for this folder
7579 7580 7581
The following CMIS Atom extension element MAY be included inside the atom feed:
cmisra:numItems
7582 7583
The following CMIS Atom extension element MUST be included inside the atom entries:
Feed for folder1 Al Brown http://www.ibm.com/ [email protected] 2010-01-25T10:20:59.364-08:00 urn:uuid:cb0a47d4-8d09-46f9-9b09-584acad684af 1 Al Brown http://www.ibm.com/ [email protected] urn:uuid:8e5a512c-8f2d-4387-a283-f3f30bbc312f CMIS Example Folder as Customer type 2010-01-25T10:20:59.364-08:00 2010-01-25T10:20:59.380-08:00 HTML summary of Entry 8e5a512c-8f2d-4387a283-f3f30bbc312f
This deletes the folder and all sub-folders. The following arguments may be supplied. Please see the domain model for more information:
7907
continueOnFailure
7908
unfileObjects
7909 7910
Status Code:
7911
200 OK if successful. Body contains entity describing the status
7912
202 Accepted, if accepted but deletion not yet taking place
7913
204 No Content, if successful with no content
7914
403 Forbidden, if permission is denied
7915
401 Unauthorized, if not authenticated
7916
500 Internal Server Error. The body SHOULD contain an entity describing the status
7917 7918 7919
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.
7920 7921
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.
7922
3.9.4 Folder Tree
7923 7924 7925
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.
7926 7927
CMIS Services:
7928
GET: getFolderTree
7929 7930
DELETE: deleteTree Media Type: application/atom +xml;type=feed
7931 7932 7933 7934
Link Relations:
service: Points to service document containing the CMIS repository. The service document MUST contain only one workspace element. o
7935
Media Type: application/atomsvc+xml
7936
via: points to the atom entry of the folder generating this collection
7937
up: points to the atom entry document of this folder‟s parent
7938
o
If the root folder, this link relation MUST not be included.
7939
o
Media Type: application/atom+xml;type=entry
7940
down:
7941 7942
o
application/atom+xml : Points to the atom feed document representing the children feed for this same folder
7943 7944 7945
o
application/cmistree+xml: Points to the descendants feed of the same folder. If a repository does not support capabilityGetDescendants, then this link SHOULD NOT be included.
7946
paging link relations MAY be included as appropriate: first, next, previous, last
Please also see the example documents included with the schema.
8209
3.9.5.1 GET
8210
The following arguments may be supplied. Please see the domain model for more information:
8211
filter
8212
includeAllowableActions
8213
3.9.5.2 DELETE
8214
This removes the entire version history of the document.
8215 8216
Success HTTP code: 204
8217
3.9.6 Type Descendants Feed
8218 8219 8220 8221
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.
8222 8223 8224
Types are nested using the CMIS hierarchy extension. Please see section 3.4.3.2 Hierarchy Navigation Internet Draft Link Relations.
Al Brown http://www.ibm.com/ [email protected] Type Definition for cmis:relationship http://cmisexample.oasisopen.org/rep1/type/cmis:relationship 2010-01-25T10:20:59.943-08:00 HTML summary of Type Definition cmis:relationship Type Definition cmis:relationship 2010-01-25T10:20:59.943-08:00 2010-01-25T10:20:59.943-08:00 dtcmis:relationship myrepname-cmis:relationship cmis:relationship cmis:relationship Description for type definition cmis:relationship cmis:relationship parent true false false false true true true invoice capitalinvoice customer Children for Relationship Al Brown http://www.ibm.com/ [email protected] 2010-01-25T10:20:59.943-08:00 urn:uuid:9394ff3d-87c4-48c9-a951ba725560faac
self: Points to an URI that returns the atom entry for this document. Please see Atom for more information.
8848
edit: Points to an URI that accepts PUT of atom entry. Please see AtomPub for more information.
8849 8850
service: Points to service document containing the CMIS repository. The service document MUST contain only one workspace element. o
8851
Media Type: application/atomsvc+xml
8852 8853
up: Points to the atom feed containing the set of parents. If there is only one parent, the repository MAY point this link relation directly to the atom entry of the parent.
8854
version-history: Points to atom feed containing the versions of this document o
8855 8856
If the document is not versionable, this link relation may not be on the resource
current-version: Points to the latest version of the document
8857
o
Uses query parameter „returnVersion‟ and enumReturnVersion
8858
o
If this version is the current-version, this link relation may not be on the resource
8859
edit-media:
8860
o
Same as setContentStream. Allows updating the content stream on this document
8861
o
Please see AtomPub for more information
8862
working-copy: Points to the private working copy if it exists.
8863
describedby: Points to the type definition as an atom entry for the type of this document entry.
8864 8865
alternate: this is used to identify the renditions available for the specified object. Please see the Renditions section.
8866 8867
http://docs.oasis-open.org/ns/cmis/link/200908/allowableactions: Points to the allowable actions document for this object.
8868 8869
http://docs.oasis-open.org/ns/cmis/link/200908/relationships: Points to the relationships feed for this object
8870
http://docs.oasis-open.org/ns/cmis/link/200908/policies: Points to the policy feed for this object.
8871
http://docs.oasis-open.org/ns/cmis/link/200908/acl: Points to ACL document for this object
8872 8873 8874
The following CMIS Atom extension element MUST be included inside the atom entry:
2010-01-25T10:21:00.193-08:00 HTML summary of Entry 7c088887-5991-4b3a-9ad316379127e647 7c088887-5991-4b3a-9ad3-16379127e647
8968 8969
Please also see the example documents included with the schema.
8970 8971
3.10.2.2 PUT
8972 8973
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.
This is the private working copy of the document (checkedout version of document)
8984
CMIS Services:
8985
GET: getObject
8986
PUT: updateProperties or checkIn
8987
DELETE: cancelCheckOut
8988
Media Type: application/atom+xml;type=entry
8989 8990
Link relations:
8991
self: Points to the URI to retrieve this atom entry. Please see Atom for more information
8992 8993
edit: Points to the URI to update this atom entry via POST. Please see AtomPub for more information.
8994 8995
service: Points to service document containing the CMIS repository. The service document MUST contain only one workspace element. o
8996
Media Type: application/atomsvc+xml
8997 8998
up: Points to the atom feed containing the set of parents. If there is only one parent, the repository MAY point this link relation directly to the atom entry of the parent.
8999
version-history o
9000 9001
Points to an URI that returns the feed associated with the version history
edit-media
9002
o
Same as setContentStream. Allows updating the content stream on this document
9003
o
Please see AtomPub for more information
9004
via: atom entry that created this private working copy
9005
describedby: Points to the type definition as an atom entry for the type of this PWC entry.
9006 9007
alternate: this is used to identify the renditions available for the specified object. Please see the Renditions section.
9008 9009
http://docs.oasis-open.org/ns/cmis/link/200908/allowableactions: Points to the allowable actions document for this object.
9010 9011
http://docs.oasis-open.org/ns/cmis/link/200908/relationships: Points to the relationships feed for this object
9012
http://docs.oasis-open.org/ns/cmis/link/200908/policies: Points to the policy feed for this object.
9013
http://docs.oasis-open.org/ns/cmis/link/200908/acl: Points to ACL document for this object
9014 9015 9016
The following element MUST be included inside the atom entry:
Please also see the example documents included with the schema.
9108 9109
3.10.3.2 PUT
9110 9111
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.
9112 9113
The following arguments may be supplied. Please see the domain model for more information:
9114
checkinComment
9115
major
9116
checkin
9117 9118
o
Used to differentiate between updateProperties() or checkin() services. If TRUE, execute checkin service.
9119 9120
o
If this argument is specified as TRUE, then the body to PUT MAY be omitted if there are no modifications to be made during checkin
9121 9122
The server SHOULD respond with:
9123
HTTP Status Code 200
9124
Location header of the resource (if changed via checkin)
9125
Response Body containing the updated atom entry
9126
3.10.3.3 DELETE
9127
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.
9132
CMIS Services:
9133
GET: getObject
9134
PUT: updateProperties
9135
DELETE: deleteObject (this is deletion of the folder only and not any contained objects)
9136
Media Type: application/atom+xml;type=entry
9137 9138
Link Relations:
9139 9140
self: Points to the URI to retrieve this atom entry. Please see Atom for more informationedit: Points to the URI to update this atom entry via POST. Please see AtomPub for more information.
9141 9142
service: Points to service document containing the CMIS repository. The service document MUST contain only one workspace element. o
9143
Media Type: application/atomsvc+xml
9144
describedby: Points to the type definition as an atom entry for the type of this folder entry.
9145
down: Points to the children of this folder
9146 9147
o
application/atom+xml : Points to the atom feed document representing the children feed for this same folder
9148
o
application/cmistree+xml: Points to the descendants feed of the same folder
9149
up: Points to the atom entry for the parent o
9150
If the root folder, this link will not be present
9151 9152
alternate: this is used to identify the renditions available for the specified object. Please see the Renditions section.
9153 9154
http://docs.oasis-open.org/ns/cmis/link/200908/allowableactions: Points to the allowable actions document for this object.
9155 9156
http://docs.oasis-open.org/ns/cmis/link/200908/relationships: Points to the relationships feed for this object
9157
http://docs.oasis-open.org/ns/cmis/link/200908/policies: Points to the policy feed for this object.
9158
http://docs.oasis-open.org/ns/cmis/link/200908/acl: Points to ACL document for this object
9159
http://docs.oasis-open.org/ns/cmis/link/200908/foldertree: Points to the folder tree for this folder
9160 9161 9162
The following CMIS Atom extension element MUST be included inside the atom entry:
cmisra:object
9163 9164
3.10.4.1 GET
9165
The following arguments may be supplied. Please see the domain model for more information:
9166
filter
9167
includeAllowableActions
9168
includeRelationships
9169
renditionFilter
9170
o
If not specified, renditions will not be included.
Please also see the example documents included with the schema.
9250 9251
3.10.4.2 PUT
9252 9253
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.
9254 9255
The server SHOULD respond with:
9256
HTTP Status Code 200
9257
Response Body containing the updated atom entry
9258 9259
3.10.4.3 DELETE
9260
This removes the object (folder) from the repository.
9261
Success HTTP code: 204
9262
3.10.5 Relationship Entry
9263
This is a CMIS relationship instance. These objects are exposed via „relationships‟ link type.
9264
CMIS Services:
9265
GET: getObject
9266
PUT: updateProperties
9267
DELETE: deleteObject
9268
Media Type: application/atom+xml;type=entry
9269 9270
Link Relations:
9271
self: Points to the URI to retrieve this atom entry. Please see Atom for more information
9272 9273
edit: Points to the URI to update this atom entry via POST. Please see AtomPub for more information.
9274 9275
service: Points to service document containing the CMIS repository. The service document MUST contain only one workspace element. o
9276 9277
Media Type: application/atomsvc+xml
describedby: Points to the type definition as an atom entry for the type of this relationship entry.
2010-01-25T10:21:00.365-08:00 HTML summary of Entry ad443afd-aa1a-4071-97351a49aac4e439 ad443afd-aa1a-4071-9735-1a49aac4e439
9360 9361
Please also see the example documents included with the schema.
9362 9363
3.10.5.2 PUT
9364 9365
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.
http://www.ibm.com/ [email protected] urn:uuid:a09ed524-5f1b-4940-b2f0-4e4cd4631bf0 Security Policy 2010-01-25T10:21:00.318-08:00 2010-01-25T10:21:00.318-08:00 HTML summary of Entry a09ed524-5f1b-4940-b2f04e4cd4631bf0 a09ed524-5f1b-4940-b2f0-4e4cd4631bf0
9471 9472
Please also see the example documents included with the schema.
9473 9474
3.10.6.2 PUT
9475 9476
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.
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.
9485 9486
Success HTTP code: 204
9487
3.10.7 Content Stream
9488
This is the content stream portion of the document object.
9489
CMIS Services:
9490
GET: getContentStream
9491
PUT: setContentStream
9492
DELETE: deleteContentStream
9493
Media Type: Mime/Type of resource (mime type of content stream on document)
9494
3.10.7.1 GET
9495
This returns the content stream.
9496 9497 9498
It is RECOMMENDED that HTTP Range requests are supported on this resource. It is RECOMMENDED that HTTP compression is also supported.
9499 9500
Please see RFC2616 for more information on HTTP Range requests.
9501
3.10.7.2 PUT
9502
This does a replacement of the content stream.
9503 9504 9505
The following optional arguments may be supplied. Please see the domain model for more information:
overwriteFlag. o
9506 9507
If not specified, this defaults to „true‟ in this binding and behaves consistent with AtomPub.
9508 9509 9510
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.
All services and operations defined in the Domain Model are presented in the Web Services binding.
9564 9565 9566 9567 9568
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.
9569 9570
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.
9571
4.1.1 WS-I
9572
A CMIS Web Services binding MUST comply with WS-I Basic Profile 1.1 and Basic Security Profile 1.0.
9573
4.1.2 Authentication
9574 9575 9576
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.
9577
4.1.3 Content Transfer
9578
All endpoints of the Web Services binding MUST be MTOM enabled.
9579
4.1.4 Reporting Errors
9580 9581 9582
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.
9583
4.2 Web Services Binding Mapping
9584 9585 9586 9587 9588
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.
9589
4.3 Additions to the Services section
9590
4.3.1 updateProperties and checkIn Semantics
9591 9592 9593
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.
Integer offset: The first byte of the content to retrieve. Default value is 0.
9598 9599
Integer length: The length of the range in bytes. Default value is the size of the content minus the offset.
9600 9601 9602
If the offset value is greater than the size of the content the repository SHOULD throw a constraint exception.
9603 9604
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.
9605 9606
4.3.3 Extensions
9607 9608
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.
9609 9610
All of the types referenced by the schema also support xs:any for vendor or repository-specific information.
9611
4.3.4 Web Services Specific Structures
9612
This binding requires specific structures that are not part of the general CMIS schema.
9613
Please also see the example request and response documents included with the schema.
9614
4.3.4.1 cmisFaultType and cmisFault
9615
cmisFaultType and cmisFault SHOULD be used to generate SOAP faults. See 0
9616
Reporting Errors.
9617
4.3.4.2 cmisRepositoryEntryType
9618 9619
cmisRepositoryEntryType is the return structure of getRepositories. It contains the id and the name of a repository.
9620
4.3.4.3 cmisTypeContainer
9621
cmisTypeContainer is the return structure of getTypeDescendants. It holds a type hierarchy.
9622
4.3.4.4 cmisTypeDefinitionListType
9623 9624
cmisTypeDefinitionListType is the return structure of getTypeChildren. It contains a list of types, the hasMoreItems flag and the numItem element.
9625 9626
4.3.4.5 cmisObjectInFolderType, cmisObjectParentsType and cmisObjectInFolderContainerType
9627 9628 9629 9630
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.
9631
cmisObjectInFolderContainerType contains a folder hierarchy.
4.3.4.6 cmisObjectListType and cmisObjectInFolderListType
9633 9634 9635
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.
9636
4.3.4.7 cmisContentStreamType
9637
cmisContentStreamType wraps a content stream and additional information about the stream.
length
Length of the content stream in bytes.
Client to Repository
Repository to Client
SHOULD be set
SHOULD be set
SHOULD be set
MUST be set
SHOULD be set
SHOULD be set
MUST be set
MUST be set
If set it MUST be a positive number. If the length is unknown it MUST NOT 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.
filename
Filename of the content stream. For the primary content of a document it SHOULD match the value of the property cmis:contentStreamFileName.
stream
The content stream. MUST be present even if the content stream has 0 bytes.
9638 9639
4.3.4.8 cmisACLType
9640 9641 9642
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.
9643
4.3.4.9 cmisExtensionType
9644
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:
9650 9651
MIME media type name: application
9652
MIME subtype name: cmisquery +xml
9653
Mandatory parameters: None
9654
Optional parameters:
9655 9656 9657 9658 9659 9660 9661 9662 9663
"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.
9664
Published specification: This specification.
9665
Applications that use this media type:
9666
No known applications currently use this media type.
9667
Additional information:
9668
Magic number(s):
9669
As specified for "application/xml" in [RFC3023], Section 3.2.
9670
File extension: .cmisquery
9671
Fragment identifiers:
9672 9673 9674 9675 9676 9677
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
9678
Intended usage: COMMON
9679
Author/Change controller: IESG
9680
5.1.2 CMIS AllowableActions
9681 9682
A CMIS Allowable Actions Document, when serialized as XML 1.0, can be identified with the following media type:
"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.
9697
Published specification: This specification.
9698
Applications that use this media type:
9699
No known applications currently use this media type.
9700
Additional information:
9701
Magic number(s):
9702
As specified for "application/xml" in [RFC3023], Section 3.2.
9703
File extension: .cmisallowableactions
9704
Fragment identifiers:
9705 9706 9707
As specified for "application/xml" in [RFC3023], Section 5. Base URI: As specified in [RFC3023], Section 6.
9708
Macintosh File Type code: TEXT
9709
Person and email address to contact for further information:
9710
OASIS CMIS TC
9711
Intended usage: COMMON
9712
Author/Change controller: IESG
9713 9714
5.1.3 CMIS Tree
9715
A CMIS Tree Document, when serialized as XML 1.0, can be identified with the following media type:
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.
9730
Published specification: This specification.
9731
Applications that use this media type:
9732
No known applications currently use this media type.
9733
Additional information:
9734
Magic number(s):
9735
As specified for "application/xml" in [RFC3023], Section 3.2.
9736
File extension: .cmistree
9737
Fragment identifiers:
9738 9739
As specified for "application/xml" in [RFC3023], Section 5. Base URI:
9740
As specified in [RFC3023], Section 6.
9741
Macintosh File Type code: TEXT
9742
Person and email address to contact for further information:
9743
OASIS CMIS TC
9744
Intended usage: COMMON
9745
Author/Change controller: IESG
9746 9747
5.1.4 CMIS Atom
9748
A CMIS Atom Document, when serialized as XML 1.0, can be identified with the following media type:
9749 9750
MIME media type name: application
9751
MIME subtype name: cmisatom +xml
9752
Mandatory parameters: None.
9753
Optional parameters:
9754 9755
"charset": This parameter has semantics identical to the charset parameter of the "application/xml" media type as specified in [RFC3023].
9756 9757
“type”: This parameter has semantics identical to the type parameter of the “application/atom+xml” as specified in [RFC4287]
9758 9759 9760 9761 9762 9763 9764
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.
Magic number(s): As specified for "application/xml" in [RFC3023], Section 3.2.
9771
File extension: .cmisatom
9772
Fragment identifiers:
9773 9774
As specified for "application/xml" in [RFC3023], Section 5. Base URI:
9775
As specified in [RFC3023], Section 6.
9776
Macintosh File Type code: TEXT
9777
Person and email address to contact for further information:
9778
OASIS CMIS TC
9779
Intended usage: COMMON
9780
Author/Change controller: IESG
9781 9782
Please see section 3.1.1 on why this media type is needed above the Atom Media Type.
9783
5.1.5 CMIS ACL
9784
A CMIS ACL Document, when serialized as XML 1.0, can be identified with the following media type:
9785 9786
MIME media type name: application
9787
MIME subtype name: cmisacl +xml
9788
Mandatory parameters: None.
9789
Optional parameters:
9790 9791 9792 9793 9794 9795 9796 9797 9798
"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.
9799
Published specification: This specification.
9800
Applications that use this media type:
9801
No known applications currently use this media type.
9802
Additional information:
9803
Magic number(s):
9804 9805 9806 9807 9808
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:
An implementation conforms to this specification if it satisfies all of the MUST or REQUIRED level requirements defined within this specification.
9819
Specification:
9820 9821 9822 9823 9824 9825
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.
9826 9827 9828
An implementation conforms to this specification if it satisfies all of the MUST or REQUIRED level requirements defined within this specification.
9829 9830 9831
Domain Model:
9832
Normative text within this specification takes precedence over the CMIS Core XML Schema.
9833 9834 9835
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.
9836 9837
Clients:
9838 9839
Client implementations MAY implement either Restful AtomPub Binding or the Web Services Binding.
9840 9841
Repositories:
9842
Repositories MUST implement the following CMIS protocol bindings:
9843
Restful AtomPub Binding
9844
Web Services Binding
9845 9846
Rest Binding:
9847 9848 9849 9850 9851 9852
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.
9853 9854 9855 9856
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.
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.
9865 9866
The CMIS Messaging XML and CMIS WSDL takes precedence over any examples or nonnormative outlines included either in this document or as standalone examples.
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