CMIS Browser Binding Proposal

1
Browser Binding URL Patterns
2
3
The URLs used by the Browser Binding are meant to be predictable in order to simplify client
development. This section specifies the URL patterns.
4
1.1 Browser Binding URLs
5
1.1.1 Service URL
6
7
The document returned by the Service URL provides repository infos for all available repositories. How
the client will get the Service URL is repository specific.
8
(Abbreviation in this document: <service>.)
9
10
11
Each repository info MUST contain two additional URLs:
12

The Repository URL (repository info property: repositoryUrl)
13

The Root URL (repository info property: rootUrl)
14
1.1.2 Repository URL
15
16
The Repository URL provides access to data that is independent of the folder hierarchy such as type
definitions, query and content changes.
17
(Abbreviation in this document: <repository>.)
18
1.1.3 Root URL
19
The Root URL is used to build Object URLs.
20
(Abbreviation in this document: <root>.)
21
1.1.4 Object URLs
22
(Abbreviation in this document: <object>.)
23
1.1.4.1 HTTP GET Object URLs
24
25
An object is either identified by a parameter “objectId” added to the Root URL or by a path that is
appended to the Root URL. If the parameter “objectId” is set, it takes precedence over the path.
26
27
The two forms of an Object URL for HTTP GET are:
28
29

<root>?objectId=<objectId>
where <objectId> is a CMIS object id.
30
31

<root>/<path>
where <path> is an absolute CMIS path to an object.
32
33
Examples:
34
35
36

If the Root URL is “http://myrepository/cmis/repository/123” and the object id is “1a2b-3c4d-5e6f”
the Object URL is:
http://myrepository/cmis/repository/123?objectId=1a2b-3c4d-5e6f
37
38
39

If the Root URL is “http://myrepository/cmis/repository/123” and the object path is
“/myFolder/myDocument” the Object URL is:
http://myrepository/cmis/repository/123/myFolder/myDocument
40
41
1.1.4.2 HTTP POST Object URLs
42
43
An object is either identified by a form field “objectId” or by a path that is appended to the Root URL. If the
form field “objectId” is set, it takes precedence over the path.
44
45
The two forms of an Object URL for HTTP POST are:
46
47

<root>
where the CMIS object id transferred in the form data field “objectId”.
48
49

<root>/<path>
where <path> is an absolute CMIS path to an object.
50
51
1.2 Operations
52
53
Almost all read operations (operations without side effects) use HTTP GET. The data returned by a read
operation is determinate by the query parameter “selector”.
54
If the "selector" parameter is absent, the following values are assumed:
55

For document objects: content
56

For folder objects: children
57

For relationship objects: object
58

For policies objects: object
59
The value of the "selector" parameter is case insensitive.
60
61
62
All operations that create, modified or delete objects or change the state of the repository use HTTP
POST. The action executed by such an operation is determinate by the form parameter “action”.
63
The “action” parameter MUST be set. The value of the "action" parameter is case insensitive.
64
65
The following table assigns “selector” and “action” values to CMIS operations:
66
Service
Operation
Repository
Service
getRepositories
GET
<service>
getRepositoryInfo
GET
<repository>
repositoryInfo
getTypeChildren
GET
<repository>
typeChildren
getTypeDescendants
GET
<repository>
typeDescendants
getTypeDefinition
GET
<repository>
typeDefintion
getChildren
GET
<object>
children
getDescendants
GET
<object>
descendants
Navigation
Service
HTTP
Method
URL
Selector
Action
Object
Service
getFolderTree
GET
<object>
folder
getFolderParent
GET
<object>
parent
getObjectParents
GET
<object>
parents
getCheckedOutDocs
GET
<object>
checkedout
getCheckedOutDocs
GET
<repository>
checkedout
createDocument
POST
<object>
createDocument
createDocument
POST
<repository>
createDocument
createDocumentFromSource
POST
<object>
createDocumentFromSource
createDocumentFromSource
POST
<repository>
createDocumentFromSource
createFolder
POST
<object>
createFolder
createRelationship
POST
<repository>
createRelationship
createPolicy
POST
<object>
createPolicy
createPolicy
POST
<repository>
createPolicy
getAllowableActions
GET
<object>
allowableActions
getObject
GET
<object>
object
getContentStream
GET
<object>
content
getRenditions
GET
<object>
renditions
getProperties
getObjectByPath
Multi-filing
Service
Discovery
Service
Versioning
Service
updateProperties
POST
updateProperties
moveObject
POST
<object>
move
deleteObject
POST
<object>
delete
deleteTree
POST
<object>
deleteTree
setContentStream
POST
<object>
setContent
deleteContentStream
POST
<object>
deleteContent
addObjectToFolder
POST
<object>
addObjectToFolder
removeObjectFromFolder
POST
<object>
removeObjectFromFolder
query
POST
<repository>
query
query
GET
<repository>
query
getContentChanges
GET
<repository>
contentChanges
checkOut
POST
<object>
checkOut
cancelCheckOut
POST
<object>
cancelCheckOut
checkIn
POST
<object>
checkIn
GET
<object>
object
getAllVersions
GET
<object>
versions
Relationship
Service
getObjectRelationships
GET
<object>
relationships
Policy
Service
applyPolicy
POST
<object>
applyPolicy
removePolicy
POST
<object>
removePolicy
GET
<object>
POST
<object>
getObjectOfLatestVersion
getPropertiesOfLatestVersion
ACL
Service
getACL
applyACL
67
68
acl
applyACL