Content Management Interoperability Services (CMIS) Version 1.1 Part 4: Browser Binding

doctorlanguidInternet και Εφαρμογές Web

8 Δεκ 2013 (πριν από 3 χρόνια και 11 μήνες)

407 εμφανίσεις

cmis
-
browser
-
binding
-
v1.1
-
wd01


W
orking Draft

01

1

June

2011

Copyright
©

O
ASIS Open

2011
. All Rights Reserved.

Intended as
a
Standards Track Work Product

Page
1

of
65


Content Management Interoperability Services (CMIS)

Version
1.1

Part
4
:
Browser

Binding

Working Draft
01

2

June

2011

Abstract:

This document specifies the CMIS
browser

binding.


Status:

T
his
Working Draft

(WD) has been produced by one or more TC Members; it has not yet been
voted on by the TC or
approved

as a Committee Draft (Committee Specification Draft or a
Committee Note Draft). The OASIS document
Approval Process

begins officially with a TC vote
to approve a WD as a Committee Draft. A TC may approve a Working Draft, revise it, and re
-
approve it any number of times as a Committee Draf
t
.


Copyright © OASIS Open

2011
. All Rights Reserved.

All capitalized terms in the

following text have the meanings assigned to them in the OASIS Intellectual
Property Rights Policy (the "OASIS IPR Policy"). The full
Policy

may be found at the OASIS website.

This doc
ument and translations of it may be copied and furnished to others, and derivative works that
comment on or otherwise explain it or assist in its implementation may be prepared, copied, published,
and distributed, in whole or in part, without restriction o
f any kind, provided that the above copyright notice
and this section are included on all such copies and derivative works. However, this document itself may
not be modified in any way, including by removing the copyright notice or references to OASIS, exc
ept as
needed for the purpose of developing any document or deliverable produced by an OASIS Technical
Committee (in which case the rules applicable to copyrights, as set forth in the OASIS IPR Policy, must
be followed) or as required to translate it into
languages other than English.

The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors
or assigns.

cmis
-
browser
-
binding
-
v1.1
-
wd01


W
orking Draft

01

1

June

2011

Copyright
©

O
ASIS Open

2011
. All Rights Reserved.

Intended as
a
Standards Track Work Product

Page
2

of
65


Table of Contents

1

Introduction

................................
................................
................................
................................
.............

3

1.1 Terminology

................................
................................
................................
................................
........

3

1.2 Normative References

................................
................................
................................
........................

3

1.3 Non
-
Normative References

................................
................................
................................
................

3

2

Browser Binding

................................
................................
................................
................................
......

4

2.1 Overview

................................
................................
................................
................................
.............

4

2.2 Common Service Elements

................................
................................
................................
................

4

2.2.1 Protocol

................................
................................
................................
................................
.......

4

2.2.2 Data Representation

................................
................................
................................
...................

4

2.2.3 URL Patterns

................................
................................
................................
...............................

5

2.2.4
Multipart Forms
................................
................................
................................
............................

5

2.2.5 Properties in a “value not set” state

................................
................................
............................

5

2.2.6

Client Token

................................
................................
................................
................................

5

2.2.7 Authentication

................................
................................
................................
..............................

6

2.2.8 Error Handling and Return

Codes

................................
................................
...............................

6

2.3 Services

................................
................................
................................
................................
..............

7

1.3.1 Service URL

................................
................................
................................
................................

7

2.3.1 Repository URL

................................
................................
................................
...........................

7

2.3.2 Root URL

................................
................................
................................
................................
.....

7

2.3.3 Object URL’s

................................
................................
................................
...............................

7

2.4 CMIS Operations

................................
................................
................................
................................

9

2.4.1 Read Operations

................................
................................
................................
.........................

9

2.4.2 Write Operations

................................
................................
................................
.......................

12

2.4.3 Operations Summary Table

................................
................................
................................
......

15

2.4.4 Use of HTML Forms

................................
................................
................................
..................

17

2.4.5 Browser Binding Examples

................................
................................
................................
.......

30

Appendix A. Acknowledgements

................................
................................
................................
...............

54

Appendix B. Schema Language (Orderly)

................................
................................
................................
.

55

2.5 B.1 Overview

................................
................................
................................
................................
....

55

2.6 B.2 A subset of JSONSchema

................................
................................
................................
........

55

2.7 B.3 A Non
-
Normative Tutorial

................................
................................
................................
..........

55

2.8 B.3.1 Comments and Whitespace

................................
................................
................................
....

55

2.9 B.4 The Normative Grammar
................................
................................
................................
...........

63


cmis
-
browser
-
binding
-
v1.1
-
wd01


W
orking Draft

01

1

June

2011

Copyright
©

O
ASIS Open

2011
. All Rights Reserved.

Intended as
a
Standards Track Work Product

Page
3

of
65


1

Introduction

1

This document specifies the CMIS
browser

binding.

2

1.1

Terminology

3

The key words “
MUST

,

MUST NOT

,

REQUIRED

,

SHALL

,

SHALL NOT

,

SHOULD

,

SHOULD
4

NOT

,

RECOMMENDED

,

MAY

, and

OPTIONAL
” in this document are to be
interpreted as described
5

in
Error! Reference source not found.
.

6

1.2

Normative References

7

[
Reference
]

[Full reference citation]

8

1.3

Non
-
Normative References

9

[
Reference
]

[Full reference citation]

10


11


12


13


14

cmis
-
browser
-
binding
-
v1.1
-
wd01


W
orking Draft

01

1

June

2011

Copyright
©

O
ASIS Open

2011
. All Rights Reserved.

Intended as
a
Standards Track Work Product

Page
4

of
65


2

Browser
Binding

15

2.1

Overview

16

The CMIS Browser Binding is designed to allow developers build browser based applications that use
17

CMIS content. It is based on technolog
ies that developers who build such applications already
18

understand, including HTML, HTML Forms, JavaScript and JSON. Importantly, it does not require a
19

JavaScript library, but rather takes advantage of capabilities already built into modern browsers.

20


21

While this binding is optimized for use in browser applications; it can also be useful as a simpler HTTP
22

based binding in other application models.

23


24

2.2

Common Service Elements

25

2.2.1

Protocol

26

HTTP SHALL be used as the protocol for service requests. HTTP GET SHAL
L be used for reading
27

content and HTTP POST SHALL be used for creating, updating and deleting content. Using just those
28

two HTTP verbs makes it possible to develop applications that rely on built
-
in browser capabilities (e.g.
29

HTML Forms) and typical serve
r configurations.

30

2.2.2

Data Representation

31

Browser applications are typically written in JavaScript. A popular lightweight data representation format
32

amongst JavaScript developers is JavaScript Object Notation (JSON) as described in RFC 4627 (see
33

http://www.ietf.org/rfc/rfc4627.txt
). JSON SHALL be used to represent the various CMIS objects
34

described by the data model.

35

2.2.2.1

Schema

36

It is useful to formally define CMIS elements as they appear in JSON using a sche
ma language. This
37

makes the definition more precise and concise, and also allows implementations to validate CMIS JSON
38

instances at run
-
time.

39


40

Since there is not yet a JSON schema language approved by a standards body, this specification uses a
41

schema language called
Orderly

that is introduced by Lloyd

Hilaiel on
http://orderly
-
json.org/
. Since the
42

defin
ition of Orderly on
http://orderly
-
json.org/

may proceed independently of this specification, and
43

because we may need to extend Orderly to define some elements of CMIS, we provide a description of
44

Orderly in Appendi
x B of this document.

45

2.2.2.2

Mapping Schema Elements to JSON

46

JSON only defines a few types, including Object, String, Number, Boolean, Null and Arrays. Since not all
47

the types used in the CMIS schema have direct JSON equivalents, some explanation of mapping

is
48

necessary.

49


50

CMIS

JSON

String

string

cmis
-
browser
-
binding
-
v1.1
-
wd01


W
orking Draft

01

1

June

2011

Copyright
©

O
ASIS Open

2011
. All Rights Reserved.

Intended as
a
Standards Track Work Product

Page
5

of
65


boolean

boolean

Decimal

number

Integer

number

Datetime

number (
milliseconds since 1970/01/01
, UTC)

Uri

string

Id

string

Html

string

2.2.3

URL Patterns

51

The URL

s used by the Browser Binding are meant to be predictable in order to simplify client
52

development.

The URL patterns allow objects to be referenced both by object ID and by path. Section
53

1.3 provides the details of how clients can construct these URL’s.

54

2.2.4

Multipart Forms

55

Browser applications also typically use HTTP multipart forms as described in RFC 2388 (see
56

http://tools.ietf.org/html/rfc2388
) to create and update content. This is especially useful for
updating file
57

content with the addition of the FILE attribute in RFC 1867 (see
http://tools.ietf.org/html/rfc1867
). In this
58

binding, HTTP POST of multipart/form
-
data SHALL be used to update content strea
ms.

59

2.2.5

Properties in a “value not set” state

60

The JSON value “null” SHALL be used by the server when returning values that have not been set.

61

2.2.6

Client Token

62

The JSONP (JSON with Padding) pattern allows a client to fetch JSON content from a server, wrapped in
63

a
client provided token. For example, this pattern allows JSON content fetched by using the
src

attribute
64

in JavaScript to be passed directly to a JavaScript function in an HTML page. This allows the handling of
65

content from multiple servers which otherwi
se would be rejected by the browser following the “same origin
66

policy”.

67


68

This binding introduces a parameter called
clientToken

to allow CMIS clients to use this pattern.

69


70

The
clientToken

MAY be included by clients on read operations defined by this prot
ocol that answer a
71

JSON object. The server SHALL respond to valid read requests containing this token by answering the
72

token, followed by an open parenthesis, followed by the JSON object returned, followed by a close
73

parenthesis. If the parameter is in
cluded in a request, the server SHALL validate that its value is not
74

empty but the server SHALL NOT do any additional validation of the token, such as, for example,
75

assuring it conforms to JavaScript function naming conventions. If the parameter value is

empty, or if the
76

parameter is used on a service for which it is not allowed, then the
invalidArgument

exception SHALL be
77

used to signal the error.

78

79

cmis
-
browser
-
binding
-
v1.1
-
wd01


W
orking Draft

01

1

June

2011

Copyright
©

O
ASIS Open

2011
. All Rights Reserved.

Intended as
a
Standards Track Work Product

Page
6

of
65


2.2.7

Authentication

80

Authentication
SHOULD

be handled by the transport protocol.

Please see AtomPub (RFC5023) section
81

14.

82

2.2.8

Error Handling and Return Codes

83

HTTP Return Codes SHALL be used to indicate success or failure of an operation. Please see the HTTP
84

specification for more information on the HTTP status codes. These are provided

as guidance from the
85

HTTP specification. If any conflict arises, the HTTP specification is authoritative.

86


87

CMIS Services Exception



HTTP Status Code

88

invalidArgument





400

89

o
bjectNotFound





404

90

p
ermissionDenied




403

91

n
otSupported





405

92

r
untime






500

93

constraint





409

94

f
ilterNotValid





400

95

s
treamNotSupported




403

96

storage






500

97

contentAlreadyExists




409

98

versioning





409

99

u
pdateConflict





409

100

nameConstraintViolation



409

101


102

This binding also introduces an object to return additional infor
mation about the response. CMIS
103

repositories SHOULD include this object in responses. When present, the object SHALL include the
104

following JSON properties.

105


106

string

exception

107


A string containing one of the CMIS services exceptions describe in sec
tion 1.2.8

108

string

message

109


A string containing a message that provides more information about what caused the exception.

110


111

Example:

112


113

G
ET /
cmis/repository/123/myFolder?foo=bar&maxItems=20

HTTP/1.1

114


Host: www.
example
.com

115


User
-
Agent: Mozilla/5.0

116


117

HTTP/1.1
400

OK

118


Content
-
Type: application/json

119


Content
-
Length: xxxx

120


121

{

122


"
exception
"
:

"
invalidArgument
"
,

123

cmis
-
browser
-
binding
-
v1.1
-
wd01


W
orking Draft

01

1

June

2011

Copyright
©

O
ASIS Open

2011
. All Rights Reserved.

Intended as
a
Standards Track Work Product

Page
7

of
65



"
message
"
:
"
The parameter ‘foo’ is not valid.
"

124

}

125


126


127



128

2.3

Services

129

1.3.1

Service URL

130

The document returned by the Service URL provides the repository information for all available
131

repositories. How the client will get the Service URL is repository specific.

132


133

In this document the abbreviation used for the Service URL is <service>.

134


135

In
addition to the repository information described by the CMIS 1.0 specification, the document answered
136

by the Service URL MUST contain two additional properties:

137


138



The Repository URL (repository info property: repositoryUrl)

139



The Root URL (repository info property: rootUrl)

140

2.3.1

Repository URL

141

The Repository URL provides access to data that is independent of the folder hierarchy such as type
142

definitions, query and content changes. It can be obtained using the getRepositories or g
etRepository
143

services.

144

In this document the abbreviation used for the Repository URL is <repository>.

145

2.3.2

Root URL

146

The Root URL is used to build Object URL’s.

147

In this document the abbreviation used for the Root URL is <
root
>.

148

2.3.3

Object URL’s

149

An object is either i
dentified by a parameter “objectId” added to the Root URL or by a path that is
150

appended to the Root URL. If the parameter “objectId” is set, it takes precedence over the path.

151


152

The two forms of an Object URL are:

153



<root>?objectId=<objectId>

154

where <objectI
d> is a CMIS object id.

155



<root>/<path>

156

where <path> is an absolute CMIS path to an object.

157


158

In this document the abbreviation used for the Root URL is <object>.

159


160

Examples:

161


162

cmis
-
browser
-
binding
-
v1.1
-
wd01


W
orking Draft

01

1

June

2011

Copyright
©

O
ASIS Open

2011
. All Rights Reserved.

Intended as
a
Standards Track Work Product

Page
8

of
65




If the Root URL is “
http://myrepository/cmis/repository/123
” and the object id is “
1a2b
-
3c4d
-
5e6f”
163

the Object URL is:

164

http://myrepository/cmis/repository/123
?objectId=1a2b
-
3c4d
-
5e6f

165



If the Root URL is “
http://myrepository/cmis/repository/123
” and the object path is
166

“/myFolder/myDocument” the Object URL is:
167

http://myrepository/cmis/repos
itory/123
/myFolder/myDocument

168

169

cmis
-
browser
-
binding
-
v1.1
-
wd01


W
orking Draft

01

1

June

2011

Copyright
©

O
ASIS Open

2011
. All Rights Reserved.

Intended as
a
Standards Track Work Product

Page
9

of
65


2.4

CMIS Operations

170


171

2.4.1

Read Operations

172

Read operations use HTTP GET. The particular data that is returned by a read operation is determined
173

by the query parameter “cmisselector”.

174

If the "cmisselector" parameter is absent, the following default values are used:

175



For document objects: content

176



For folder objects: children

177



For relationship objects: object

178



For policies objects: object

179


180

The value of the "cmisselector" parameter is cas
e insensitive.

181

2.4.1.1


Read Operations Summary Table

182

The following table defines the GET request responses.

183


184

The arguments supplied to the GET service requests SHALL be encoded as URL parameters. The
185

name of each such parameter SHALL be the name of the argumen
t as defined in the schema element
186

enumArguments

in the CMIS REST Atom schema (e.g. skipCount, includeRelationships, etc).

187


188

In all cases, the HTTP status code of 200 indicates a successful operation.

189


190

Service

CMIS Operation

Response
Body
Description

Respo
nse Schema Element

Repository

Service
s

getRepositories

JSON representation
of the list of
repositories

http://docs.oasis
-
open.org/ns/cmis/browser/201103
/repositories


getRepository

JSON representation
of the
specified
repository

http://docs.oasis
-
open.org/ns/cmis/browser/201103
/repositoryInfo


getTypeChildren

JSON representation
of the types that are
immediate children of
the specified typeId,
or the base types if no
typeId is provided

http://docs.oasis
-
open.org/ns/cmis/browser/
201103
/typeList


getTypeDescendants

JSON representation
of all types
descended from the
specified typeId, or all
the types in the
repository if no typeId
is provided

http://docs.oasis
-
open.org/ns/cmis/browser/201103
/typeContainer

cmis
-
browser
-
binding
-
v1.1
-
wd01


W
orking Draft

01

1

June

2011

Copyright
©

O
ASIS Open

2011
. All Rights Reserved.

Intended as
a
Standards Track Work Product

Page
10

of
65



getTypeDefinition

JSON
representation
of the specified type

http://docs.oasis
-
open.org/ns/cmis/browser/201103
/typeDefinitionType





Navigation
Services

getChildren

JSON representation
of the
children of the
specified folder

http://docs.oasis
-
open.org/ns/cmis/browser/201103
/objectInFolderList


getDescendants

JSON representation
of the
descendants of
the specified folder

http://docs.oasis
-
open.org/ns/cmis/browser/201103
/objectContainer


getFolderTree

JSON representation
of the folders
descended from the
specified folder

http://docs.oasis
-
open.org/ns/cmis/browser/201103
/objectContainer


getFolderParent

JSON representation
of the parent folder of
the specified folder

http://docs.oasis
-
open.org/ns/cmis
/browser/201103
/objec
t


getObjectParents

JSON representation
of the
folders that are
the parents of the
specified object

http://docs.oasis
-
open.org/ns/cmis/browser/201103
/objectParentList


getCheckedOutDocs

JSON representation
of the documents that
have
been checked
out in the repository
or in the specified
folder

http://docs.oasis
-
open.org/ns/cmis/browser/201103
/objectInFolderList





Object Services

getAllowableActions

JSON representation
of the
actions allowed
on the specified
object

http://docs.oasis
-
open.org/ns/cmis/browser/201103
/allowableActions


getObject

JSON representation
of the
specified
object

http://docs.oasis
-
open.org/ns/cmis/browser/201103
/object


getProperties

JSON representation
of the properties of
the specified
object

http://docs.oasis
-
open.org/ns/cmis/browser/201103
/properties


getObjectByPath

JSON representation
of the
specified
object

http://docs.oasis
-
open.org/ns/cmis/browser/201103
/object


getContentStream

Stream of the
document

N/A

cmis
-
browser
-
binding
-
v1.1
-
wd01


W
orking Draft

01

1

June

2011

Copyright
©

O
ASIS Open

2011
. All Rights Reserved.

Intended as
a
Standards Track Work Product

Page
11

of
65



getRenditions

JSON
representation
of the renditions for
the specified object

http://docs.oasis
-
open.org/ns/cmis/browser/201103
/object





Discovery
Service
s

query


A JSON
representation of the
results of the query

http://docs.oasis
-
open.org/ns/cmis/browser/201103
/objectInFolderList


getContentChanges

A JSON
representation of the
changed objects

http://docs.oasis
-
open.org/ns/cmis/browser/201103
/objectInFolderList





Versioning
Service
s

getObjectOfLatestVersion

JSON representation
of the latest version of
the document in the
Version Series

http://docs.oasis
-
open.org/ns/cmis/browser/201103
/object


getPropertiesOfLatestVersion

JSON representation
of the properties of
the latest version of
the document in the
Version Series

http://docs.oasis
-
open.org/ns/cmis/browser/201103
/properties


getAllVersions

JSON representation
of
all the versions in
the Version Series

http://docs.oasis
-
open.org/ns/cmis/browser/201103
/objectInFolderList





Relationship

Service
s

getObjectRelationships

JSON representation
of the
relationships of
the specified object

http://docs.oasis
-
open.org/ns/cmis/browser/201103
/objectInFolderList





Policy Services

getAppliedPolicies

A JSON object
representing the
policies applied to the
specified object

http://docs.oasis
-
open.org/ns/cmis/browser/201103
/objectInFolderList





ACL Service

getACL

JSON representation
of the Access Control
Entries for the
specified
object

http://docs.oasis
-
open.org/ns/cmis/browser/201103
/acl


191

cmis
-
browser
-
binding
-
v1.1
-
wd01


W
orking Draft

01

1

June

2011

Copyright
©

O
ASIS Open

2011
. All Rights Reserved.

Intended as
a
Standards Track Work Product

Page
12

of
65



192


193

2.4.2

Write
Operations

194

All operations that create, modify or delete objects or change the state of the repository in any way use
195

HTTP POST. Since this

binding is optimized for use in browser applications
, the format of the
196

transferred data is aligned to the capabili
ties of HTML forms and described in this specification in HTML
197

terms. See section 1.4.4 for a description of how HTML forms are used for CMIS operations

198

2.4.2.1

Write Operations Summary Table

199

The following table defines the POST request responses:

200


201

Service

CMIS
Operation

Success
HTTP
status
code

Response
body

HTTP
Location
Header

Last
response
available

(see
section
1.4.4.4)

Comment

Object
Service

createDocument

201

JSON
representation
of the newly
created
document

yes

yes



createDocumentFromSource

201

JSON
representation
of the newly
created
document

yes

yes



createFolder

201

JSON
representation
of the newly
created folder

yes

yes



createRelationship

201

JSON
representation
of the newly
created
relationship

yes

yes



createPolicy

201

JSON
representation

of the newly
created policy

yes

yes



updateProperties

200

JSON
representation
of the
updated
object

no

yes

If a ‘file’ control is
included in the form, the
content stream of the
object MAY be updated
with the content of the file
in the same operation.


moveObject

201

JSON
representation
of the moved
yes

yes


cmis
-
browser
-
binding
-
v1.1
-
wd01


W
orking Draft

01

1

June

2011

Copyright
©

O
ASIS Open

2011
. All Rights Reserved.

Intended as
a
Standards Track Work Product

Page
13

of
65


object


deleteObject

204

Empty

no

yes



deleteTree

204

Empty

no

yes

When the operation
partially succeeds,
meaning that a 204 is
returned but some
objects in the tree are not
deleted, an instance of
type
http://docs.oasis
-
open.org/ns/cmis/browse
r/201103/ids

containing a
list of id’s of the objects
not deleted SHALL be
retu
rned.


setContentStream

201

JSON
representation
of the object

yes

yes



deleteContentStream

204

Empty

no

yes









Multi
-
filing
Service

addObjectToFolder

201

JSON
representation
of the added
object

yes

yes



removeObjectFromFolder

201

JSON
representation
of the
removed
object

yes

yes









Discovery
Service

query


200

Query results

no

no









Versioning
Service

checkOut

201

JSON
representation
of the PWC

yes

yes



cancelCheckOut

204

Empty

no

yes



checkIn

201

JSON
representation
of the
checked
-
in
object

yes

yes









Policy
Service

applyPolicy

200

JSON
representation
of the
updated
object

no

yes


cmis
-
browser
-
binding
-
v1.1
-
wd01


W
orking Draft

01

1

June

2011

Copyright
©

O
ASIS Open

2011
. All Rights Reserved.

Intended as
a
Standards Track Work Product

Page
14

of
65



removePolicy

200

JSON
representation
of the
updated
object

no

yes









ACL
Service

applyACL

200

JSON
representation
of the
new
ACL

no

yes



202

203

cmis
-
browser
-
binding
-
v1.1
-
wd01


W
orking Draft

01

1

June

2011

Copyright
©

O
ASIS Open

2011
. All Rights Reserved.

Intended as
a
Standards Track Work Product

Page
15

of
65


2.4.3

Operations Summary Table

204

The following table assigns “selector” and “action” values to CMIS operations:

205


206

Service

CMIS Operation

HTTP
Method

URL

Selector

Action

Comment

Repository
Service

getRepositories

GET

<service>



No selector


getRepositoryInfo

GET

<repository>

repositoryInfo




getTypeChildren

GET

<repository>

typeChildren




getTypeDescendants

GET

<repository>

typeDescendants




getTypeDefinition

GET

<repository>

typeDefin
i
tion










Navigation
Service

getChildren

GET

<object>

children


The selector
can be
omitted since
getChildren
only works
on folders


getDescendants

GET

<object>

descendants




getFolderTree

GET

<object>

folder




getFolderParent

GET

<object>

parent




getObjectParents

GET

<object>

parents




getCheckedOutDocs

GET

<object>

checkedout


Returns
Checked out
documents in
this folder


getCheckedOutDocs

GET

<repository>

checkedout


Returns
Checked out
documents in
the
repository

Object
Service

createDocument

POST

<object>


createDocument

Creates a
document in
this folder


createDocument

POST

<repository>


createDocument

Creates an
unfiled
document


createDocumentFromSource

POST

<object>


createDocumentFromSource

Creates a
document in
this folder


createDocumentFromSource

POST

<repository>


createDocumentFromSource

Creates an
unfiled
document


createFolder

POST

<object>


createFolder



createRelationship

POST

<repository>


createRelationship



createPolicy

POST

<object>


createPolicy

Creates a
policy in this
cmis
-
browser
-
binding
-
v1.1
-
wd01


W
orking Draft

01

1

June

2011

Copyright
©

O
ASIS Open

2011
. All Rights Reserved.

Intended as
a
Standards Track Work Product

Page
16

of
65


folder


createPolicy

POST

<
repository>


createPolicy

Creates an
unfiled policy


getAllowableActions

GET

<object>

allowableActions




getObject

GET

<object>

object


If the object
is a policy or
a
relationship,
the selector
can be
omitted.


getProperties


getObjectByPath


getContentStream

GET

<object>

content


If the object
is
a
document,
the selector
can also be
omitted.


getRenditions

GET

<object>

renditions




updateProperties

POST



updateProperties



moveObject

POST

<object>


move



deleteObject

POST

<object>


delete



deleteTree

POST

<object>


deleteTree



setContentStream

POST

<object>


setContent



deleteContentStream

POST

<object>


deleteContent









Multi
-
filing
Service

addObjectToFolder

POST

<object>


addObjectToFolder



removeObjectFromFolder

POST

<object>


removeObjectFromFolder









Discovery
Service

query


POST

<repository>


query




query


GET

<repository>

query




getContentChanges


GET

<repository>

contentChanges










Versioning
Service

checkOut

POST

<object>


checkOut



cancelCheckOut

POST

<object>


cancelCheckOut



checkIn

POST

<object>


checkIn



getObjectOfLatestVersion

GET

<object>

object


Parameter
returnVersion
must be set


getPropertiesOfLatestVersion


getAllVersions

GET

<object>

versions










Relationship
Service

getObjectRelationships

GET

<object>

relationships



cmis
-
browser
-
binding
-
v1.1
-
wd01


W
orking Draft

01

1

June

2011

Copyright
©

O
ASIS Open

2011
. All Rights Reserved.

Intended as
a
Standards Track Work Product

Page
17

of
65









Policy
Service

applyPolicy

POST

<object>


applyPolicy



removePolicy

POST

<object>


removePolicy









ACL
Service

getACL

GET

<object>

acl




applyACL

POST

<object>


applyACL


2.4.4

Use of HTML Forms

207

As described in section 1.4.2 HTML forms are used to create, update and delete CMIS content.

208


209

The form submission method (HTML form attribute “method”) MUST be “POST”. The encoding type
210

(HTML form attribute “enctype”) MUST be either
"application/x
-
www
-
form
-
urlencoded" or "multipart/form
-
211

data"

if no content stream is attached to the form. The encod
ing type MUST be “
multipart/form
-
data
” if a
212

content stream is attached to the form data.

213


214

The names of the controls within the form are defined by the patterns in the following sections. All control
215

names are case
-
insensitive as defined by the HTML specifi
cation. Control names MUST be unique within
216

a form. If the control value of an optional parameter is set to an empty string (“”) the default value MUST
217

be used.

218


219

A client MAY add controls to a form that are not defined by CMIS as long as the control names
don’t
220

conflict with the patterns described in this specification.

221


222

Since control values are strings, all other data types have to be serialized to strings.

223

The same rules that apply to the serialization to JSON apply here.

224


225

2.4.4.1

Action

226

An HTML form used to POS
T CMIS content MUST include a control named “cmisaction” that indicates
227

the CMIS operation to be performed. See section 1.4.3 for valid control values. The value of the control is
228

case insensitive.

229


230

Example:

231


232


233

<input name="cmisaction" type="hidden" value=
"createDocument" />

234


235

2.4.4.2

Structured and Array Parameters

236

Some CMIS operations require structured parameters and arrays of values. Since HTML forms don’t
237

support that usage, some CMIS operation parameters are split into multiple controls in a form.

238


239

For exampl
e, a CMIS property is split into a control that holds the property id and another control that hold
240

property value. The association between the two controls is done by convention.

241

cmis
-
browser
-
binding
-
v1.1
-
wd01


W
orking Draft

01

1

June

2011

Copyright
©

O
ASIS Open

2011
. All Rights Reserved.

Intended as
a
Standards Track Work Product

Page
18

of
65



242

The
entirety

of all properties is made up of an array of these property co
ntrols.

243


244

Names of controls that are part of an array end with “[<index>]” where <index> is a positive integer.
245

Arrays MUST always start with the index 0 and MUST be gapless.

246


247

Example:

248


249

An array of three properties looks like this in a HTML form:

250


251


252

<input
name="propertyId[0]" type="hidden" value="cmis:name" />

253

<input name="propertyValue[0]" type="text" value="my document" />

254


255

<input name="propertyId[1]" type="hidden" value="cmis:objectTypeId" />

256

<input name="propertyValue[1]" type="hidden" value="my
:firstObjectType" />

257


258

<input name="propertyId[2]" type="hidden" value="my:intProperty" />

259

<input name="propertyValue[2]" type="text" value="42" />

260


261


262


263


264

If a client sends invalid, incomplete or inconsistent data the repository SHOULD return an
265

invalidAr
gument

error.

266


267

2.4.4.3

CMIS Controls

268

This section lists all HTML form controls used by CMIS operations.

269

2.4.4.3.1

ID’s

270

2.4.4.3.1.1

Object id:

271

Control name:

“objectId”

272

Control value:

Object id

273


274

Example:

275


276

<input name="objectId" type="hidden" value="1234
-
abcd
-
5678" />

277


278


279

2.4.4.3.1.2

Folder id:

280

Control name:

“folderId”

281

Control value:

Folder id

282


283

Example:

284

cmis
-
browser
-
binding
-
v1.1
-
wd01


W
orking Draft

01

1

June

2011

Copyright
©

O
ASIS Open

2011
. All Rights Reserved.

Intended as
a
Standards Track Work Product

Page
19

of
65



285

<input name="folderId" type="hidden" value="1234
-
abcd
-
5678" />

286


287


288

2.4.4.3.1.3

Source folder id:

289

Control name:


sourceFolderId


290

Control value:

Folder id

291


292

Example:

293


294


295

<input name="sourceFolderId" type="hidden"

value="1234
-
abcd
-
5678" />

296


297


298


299

2.4.4.3.1.4

Target folder id:

300

Control name:


targetFolderId


301

Control value:

Folder id

302


303

Example:

304


305


306

<input name="targetFolderId" type="hidden" value="1234
-
abcd
-
5678" />

307


308


309


310

2.4.4.3.2

Single
-
value Properties

311

A single
-
value property is made up of a pair of a “propertyId” control and a “propertyValue” control with
312

the same <propIndex>. To unset the property, the “propertyValue” control MUST NOT be present.

313

<propIndex>

does not imply any order.

314

2.4.4.3.2.1

Property Id:

315

Control name:

“propertyId[<propIndex>]”

316

Control value:

Property id

317

2.4.4.3.2.2

Property value:

318

Control name:

“propertyValue[<propIndex>]”

319

Control value:

Property value

320


321

Example:

322


323

<input name="propertyId[0]" type="hidden" value="my:firstname" />

324

<input
name="propertyValue[0]" type="text" value="John" />

325

cmis
-
browser
-
binding
-
v1.1
-
wd01


W
orking Draft

01

1

June

2011

Copyright
©

O
ASIS Open

2011
. All Rights Reserved.

Intended as
a
Standards Track Work Product

Page
20

of
65



326

<input name="propertyId[1]" type="hidden" value="my:lastname" />

327

<input name="propertyValue[1]" type="text" value="Smith" />

328


329

2.4.4.3.3

Multi
-
value Properties

330

A multi
-
value property is made up a “propertyId
” control and a series of “propertyValue” controls with the
331

same <propIndex>. To unset the property, no “propertyValue” control MUST be present.

332

<propIndex>

does not imply any order, but <seqIndex> defines the order of the values.

333

2.4.4.3.3.1

Property Id:

334

Control name
:

“propertyId[<propIndex>]”

335

Control value:

Property id

336

2.4.4.3.3.2

Property values:

337

Control name:

“propertyValue[<propIndex>][<seqIndex>]”

338

Control value:

Property value at position <seqIndex>

339


340

Example:

341


342

<input name="propertyId[0]" type="hidden" value="my:count
ries" />

343

<input name="propertyValue[0][0]" type="text" value="Germany" />

344

<input name="propertyValue[0][1]" type="text" value="United States" />

345

<input name="propertyValue[0][2]" type="text" value="France" />

346

<input name="propertyValue[0][3]" type="t
ext" value="United Kingdom" />

347

<input name="propertyValue[0]
[4
]" type="text" value="
Switzerland
" />

348


349

<input name="propertyId[1]" type="hidden" value="my:colors" />

350

<input name="propertyValue[1][0]" type="text" value="red" />

351

<input
name="propertyValue[1][1]" type="text" value="green" />

352

<input name="propertyValue[1][2]" type="text" value="blue" />

353


354

2.4.4.3.4

Access Control

355

2.4.4.3.4.1

Adding Access Control Entries (ACEs)

356

To add an ACE to a CMIS object, a control named “addACEPrincipal” control is use
d with an
357

<addACEIndex>, with zero or more “addACEPermission” controls, each with the same
358

<removeACEIndex> and another subindex, <permIndex>.

359


360


<addACEIndex> and <permIndex> don’t imply any order.

361

2.4.4.3.4.1.1

Principal:

362

Control name:

“addACEPrincipal[<addACEIndex>]


363

Control value:

Principal id

364

2.4.4.3.4.1.2

Permission:

365

Control name:

“addACEPermission[<addACEIndex>][<permIndex>]”

366

Control value:

Permission id

367

cmis
-
browser
-
binding
-
v1.1
-
wd01


W
orking Draft

01

1

June

2011

Copyright
©

O
ASIS Open

2011
. All Rights Reserved.

Intended as
a
Standards Track Work Product

Page
21

of
65



368

Example:

369


370


371

<input name="propertyValue
"

372

<input name="addACEPrincipal[0]" type="hidden" value="john" />

373

<input name="add
ACEPermission[0][0]" type="hidden" value="cmis:read" />

374

<input name="addACEPermission[0][1]" type="hidden" value="perm:publish" />

375


376

<input name="addACEPrincipal[1]" type="hidden" value="mary" />

377

<input name="addACEPermission[1][0]" type="hidden" value=
"cmis:all" />

378


379


380

2.4.4.3.4.2

Removing Access Control Entries (ACEs)

381

To remove an ACE from a CMIS object, a control named “removeACEPrincipal” is used with an
382

<addACEIndex>, and zero or more “removeACEPermission” controls, each with the same
383

<removeACEIndex>

and another subindex, <permIndex>.

384


385

<removeACEIndex> and <permIndex> don’t imply any order.

386

2.4.4.3.4.2.1

Principal

387

Control name:

“removeACEPrincipal[<removeACEIndex>]”

388

Control value:

Principal id

389

2.4.4.3.4.2.2

Permission

390

Control name:

“removeACEPermission[<removeACEIndex>][<per
mIndex>]”

391

Control value:

Permission id

392


393

Example:

394


395

<input name="removeACEPrincipal[0]" type="hidden" value="tom" />

396

<input name="removeACEPermission[0][0]" type="hidden" value="cmis:write" />

397

<input name="removeACEPermission[0][1]" type="hidden" value="
perm:publish" />

398


399

<input name="removeACEPrincipal[1]" type="hidden" value="bob" />

400

<input name="removeACEPermission[1][0]" type="hidden" value="perm:forward" />

401


402


403


404

2.4.4.3.4.3

ACL

propagation

405

To specify how to propagate ACE’s, a control named “ACLPropagation” is u
sed.

406


407

Control name:

“ACLPropagation”

408

Control value:

ACL propagation enum ("objectonly", "propagate", "repositorydetermined")

409


410

Example:

411


412

cmis
-
browser
-
binding
-
v1.1
-
wd01


W
orking Draft

01

1

June

2011

Copyright
©

O
ASIS Open

2011
. All Rights Reserved.

Intended as
a
Standards Track Work Product

Page
22

of
65


<input name="ACLPropagation" type="hidden" value="propagate" />

413


414


415

2.4.4.3.5

Policies

416

Policies are assigned to CMIS objects by
including a control named “policy” with an index of
417

<policyindex>. A policy list is made up of a series of these “policy” controls.

418

<policyIndex>

does not imply any order.

419

2.4.4.3.5.1

Policy:

420

Control name:

“policy[<policyIndex>]”

421

Control value:

Policy id

422


423

Example:

424


425

<input name="
policy[0]" type="hidden" value="1111
-
aaaa
-
2222" />

426

<input name="policy[1]" type="hidden" value="3333
-
bbbb
-
4444" />

427

<input name="policy[2]" type="hidden" value="5555
-
cccc
-
6666" />

428


429


430

2.4.4.3.6

Change Token

431

A CMIS change token is included by using a form c
ontrol named “changeToken”. If the value of the
432

control is set to the empty string, then the repository MUST treat the change token as not set.

433


434

Control name:

“changeToken”

435

Control value:

Change token

436


437

Example:

438


439


440

<input name="changeToken" type="hidden"
value="8923653942" />

441


442


443


444


445

2.4.4.3.7

Versioning

446

When a document is checked in, a control named “versioningState” is used to set the versioning state
447

and a control named “checkinComment” is used to include comments.

448

2.4.4.3.7.1

Versioning State:

449

Control name:

“v
ersioningState


450

Control value: Versioning state enum (
"none", "major", "minor", "checkedout"
)

451


452

Example:

453

cmis
-
browser
-
binding
-
v1.1
-
wd01


W
orking Draft

01

1

June

2011

Copyright
©

O
ASIS Open

2011
. All Rights Reserved.

Intended as
a
Standards Track Work Product

Page
23

of
65



454

<input name="v
ersioningState" type="hidden" value="major" />

455


456


457

2.4.4.3.7.2

Checkin Comment

458


459

Control name:


checkinComment


460

Control value:

Checkin comment

461


462

Example:

463


464


465

<input
name="checkinComment" type="text" value="My comment" />

466


467


468


469

2.4.4.3.8

Query

470

A CMIS query can be constructed using a control named “statement” and set of controls to specify the
471

query options.

472

2.4.4.3.8.1

Statement:

473

Control name:

“statement”

474

Control value:

CMIS query statement

475

2.4.4.3.8.2

S
earch all versions:

476

Control name:


searchAllVersions


477

Control value:

boolean (“true”, “false”)

478

2.4.4.3.8.3

Include relationships:

479

Control name:


includeRelationships


480

Control value:

includeRelationships

enum (
"none", "source" ,"target", "both"
)

481

2.4.4.3.8.4

Rendition filter:

482

C
ontrol name:


renditionFilter


483

Control value:

rendition filter

484

2.4.4.3.8.5

Include allowable actions:

485

Control name:


includeAllowableActions


486

Control value:

boolean (“true”, “false”)

487

2.4.4.3.8.6

Max items:

488

Control name:

“maxItems”

489

Control value:

non
-
negative integer

490

cmis
-
browser
-
binding
-
v1.1
-
wd01


W
orking Draft

01

1

June

2011

Copyright
©

O
ASIS Open

2011
. All Rights Reserved.

Intended as
a
Standards Track Work Product

Page
24

of
65


2.4.4.3.8.7

Skip
count:

491

Control name:


skipCount


492

Control value:

non
-
negative integer

493


494

Example:

495


496


497

<input name="statement" type="text" value="SELECT * FROM cmis:document" />

498

<input name="searchAllVersions" type="hidden" value="false" />

499

<input name="includeRelations
hips" type="hidden" value="none" />

500

<input name="renditionFilter" type="hidden" value="cmis:none" />

501

<input name="includeAllowableActions" type="hidden" value="false" />

502

<input name="maxItems" type="hidden" value="100" />

503

<input n
ame="skipCount" type="hidden" value="0" />

504


505

2.4.4.3.9

Content

506

A file select control SHOULD be used to attach content.

507


508

Control name:

“content”

509

Control value:

none


510


511


512

<tr>

513


<td>File:</td>

514


<td><input name="content" type="file"></td>

515

</tr>

516


517


518



519

cmis
-
browser
-
binding
-
v1.1
-
wd01


W
orking Draft

01

1

June

2011

Copyright
©

O
ASIS Open

2011
. All Rights Reserved.

Intended as
a
Standards Track Work Product

Page
25

of
65


2.4.4.4

Access to Form Response Content

520

JSON response content is subject to the same security constraints as any other kind of JavaScript which
521

means that a browser will not allow JavaScript in a page to access JSON objects included in an HTML
522

Form response if th
at response came from a different domain than the rest of the page content. For
523

example, suppose a browser displayed an HTML Form from Web Server
foo.example.com

to create a
524

document in a CMIS repository on server
bar.example.com
. When the user submits

the form, there is no
525

way for the page to access the JSON object representing the new document created as a response to the
526

submitted form.

527


528

To make it possible for a browser client to access the JSON content answered from the CMIS repository,
529

we intr
oduce an optional token called “
cmistransaction

. It is a client generated value that is intended to be
530

used exactly once by the client to retrieve information about the results of a previous CMIS HTML Form
531

post.

532


533

To make this work, the CMIS
repository MUST keep the core result details (the status code, object id and
534

error message) of a completed request and make those details available to the client in a later request.

535


536

In order to correlate the result of a CMIS request with the later call to

retrieve the result of that request,
537

the client needs to generate a unique string and include this in the submitted HTML form in a form control
538

cmis
-
browser
-
binding
-
v1.1
-
wd01


W
orking Draft

01

1

June

2011

Copyright
©

O
ASIS Open

2011
. All Rights Reserved.

Intended as
a
Standards Track Work Product

Page
26

of
65


with the name “cmistransaction”. The mechanism to generate the value for this form control is a client
539

decisi
on and the only requirement on this mechanism is that it should be generated in a way that makes it
540

unique enough that the client can retrieve the intended result, within a relatively short period of time
541

(within about one hour). For example, one approa
ch would generate the value by concatenating the
542

number of
milliseconds since 1970/01/01
, UTC, with a random number and the name of the cmis object

543


544

Example:

545


546

<input name="
cmis
transaction" type="hidden" value="1296216073275
-
4312331
-
547

document" />
type="hidde
n" value="0" />

548


549


550

After the operation has been performed, the client can retrieve the result by sending a HTTP GET
551

requested to the repository URL (see section 1.3.1) with the selector set to “lastResult” and a parameter
552

“cmistransaction” which is set to t
he same string previously sent with the form.

553


554

The result details MUST be answered as a JSON object containing these elements.

555


556

integer

code

557


An integer containing the HTTP status code for the operation.

558

string

objectId

559


A string containing the id of the object, if the operation was successful. If the operation was not
560

successful, the value of this string is undefined.

561

string
exception

562


A string containing the exception, if the operation was unsuccessful. If

the operation was successful,
563

the value of this string is undefined.

564

string

message

565


A string containing the error message, if the operation was unsuccessful. If the operation was
566

successful, the value of this string is undefined.

567


568

The result detai
ls SHOULD

569



only be available to the
same
client (
as defined by the client’s
IP address) that called the operation.

570



not be kept longer than an hour, since t
hey are supposed to be retrieved immediately after the
571

operation by the client.

572



o
nly be retrievable o
nce. That is, a second

attempt SHOULD return an invalidArgument error

(code =
573

0).

574


575

If the value of the parameter “cmistransaction” is invalid, the “code” field of this JSON object MUST be set
576

to 0.

577


578

If the “cmistransaction” control is not specified in the
form, the repository does not need to keep the result
579

details because there is no way for the client to retrieve them.

580


581

582

cmis
-
browser
-
binding
-
v1.1
-
wd01


W
orking Draft

01

1

June

2011

Copyright
©

O
ASIS Open

2011
. All Rights Reserved.

Intended as
a
Standards Track Work Product

Page
27

of
65


Example:

583


584

When the client submits the HTML form, it can include a form control with the name “cmistransction” like
585

this…

586


587


588

<input name
="
cmis
transaction" type="hidden" value="1296216073275
-
4312331
-
589

document" />
type="hidden" value="0" />

590


591


592

Soon thereafter, the client could retrieve the results of the form post by making a request like this

593


594


595

http://localhost:8080/opencmis/browser/A1?
cmis
selector=lastResult&clientToken=
596

showNewDocumentId&
cmis
transaction=1296216073275
-
4312331
-
document

597


598


599

and then, the repository would answer a JSON object that contains the result details, like this …

600

cmis
-
browser
-
binding
-
v1.1
-
wd01


W
orking Draft

01

1

June

2011

Copyright
©

O
ASIS Open

2011
. All Rights Reserved.

Intended as
a
Standards Track Work Product

Page
28

of
65



601


602

{

603


code : 201,

604


objectId :
"
21983210980
-
2132
-
23 obje
ctId
"
,

605


exception : null,

606


message : null

607

}

608


609


610


Then the client could retrieve the details for the object using its objectId, as described in section 1.3.3.

611

2.4.4.4.1

Client Implementation Hints

612

Most applications don’t want to show the JSON object representations

to the end
-
user after (s)he clicks
613

the form submit button. After all, business users using web browsers don’t want to look at raw JSON
614

content.

615


616

To avoid showing JSON to the user, the POST response can instead be directed to a hidden iframe. The
617

iframe’
s
onLoad

event can be used as an operation status notification. When it is triggered the operation
618

is complete on the repository side and it is safe then to retrieve the results.

619


620

2.4.4.4.2

Server Implementation Hints

621

The use of transaction id’s can make CMIS state
ful since the server has to remember details of a
622

previous service request. However, the state can in fact be kept entirely on the client, to eliminate the
623

need for the server to be stateful at all.

624

2.4.4.4.2.1

State on Server

625

Result details are
non
-
permanent

dat
a and don’t need to be persisted. A simple in
-
memory store would
626

be sufficient.

627


628

When a repository receives a “lastResult” request it should check the IP address of the client and the
629

expiration time of the result details before it replies. This
ensures that the data is not being retrieved by a
630

malicious client, and that the requested data is relevant.

631

2.4.4.4.2.2

State on Client

632

The state can be managed on the client side using browser cookies, which keeps the repository stateless.

633


634

When a “cmistransaction
” control is sent with the form data, the repository can attach a cookie to its
635

POST response. The cookie name is derived from the “cmistransaction” value and the cookie value would
636

contain the result details.

637


638

When the repository receives a “lastResult” r
equest, it also receives the cookies from the browser. So, if
639

the repository can find a cookie that matches the “cmistransaction” parameter value it can send back the
640

cookie value and delete the cookie. If there is no corresponding cookie, it can reply
with an error
641

message.

642


643

Since the browser takes care of the cookie expiration and cookies can only be sent from the originating
644

client, there are no new additional security and lifecycle issues for the repository to handle.

645

cmis
-
browser
-
binding
-
v1.1
-
wd01


W
orking Draft

01

1

June

2011

Copyright
©

O
ASIS Open

2011
. All Rights Reserved.

Intended as
a
Standards Track Work Product

Page
29

of
65



646


647


648

649

cmis
-
browser
-
binding
-
v1.1
-
wd01


W
orking Draft

01

1

June

2011

Copyright
©

O
ASIS Open

2011
. All Rights Reserved.

Intended as
a
Standards Track Work Product

Page
30

of
65


2.4.5

Browser Binding Examples

650


651

All of the examples used in this document were created using the Apache Chemistry project.

652

2.4.5.1

Getting Repository Info

653

Repository information is retrieved using an HTTP GET of the service document URL. The response is a
654

JSON object containing properties e
ach of which describes a single CMIS repository as a nested JSON
655

object.

656


657

G
ET /
cmis/repositories

HTTP/1.1

658


Host: www.
example
.com

659


User
-
Agent: Mozilla/5.0

660


661

HTTP/1.1 200 OK

662


Content
-
Type: application/json

663


Content
-
Length: xxxx

664


665

{

666


"A1":{

667


"repositoryUrl":"http:
\
/
\
/localhost:8080
\
/chemistry
-
opencmis
-
binding
-
668

browser
-
0.3.0
-
incubating
-
SNAPSHOT
\
/browser
\
/A1",

669


"productName":"OpenCMIS InMemory
-
Server",

670


"repositoryName":"InMemory Repository",

671


"capabilities":{

672


"capab
ilityChanges":"properties",

673


"capabilityPWCUpdatable":true,

674


"capabilityMultifiling":true,

675


"capabilityAllVersionsSearchable":false,

676


"capabilityUnfiling":true,

677


"capabilityJoin":"none",

678


"capabilityGetDescen
dants":true,

679


"capabilityVersionSpecificFiling":false,

680


"capabilityGetFolderTree":true,

681


"capabilityACL":"none",

682


"capabilityRenditions":"none",

683


"capabilityQuery":"metadataonly",

684


"capabilityContentStreamUpd
atability":"pwconly",

685


"capabilityPWCSearchable":false

686


},

687


"rootFolderId":"100",

688


"rootFolderUrl":"http:
\
/
\
/localhost:8080
\
/chemistry
-
opencmis
-
binding
-
689

browser
-
0.3.0
-
incubating
-
SNAPSHOT
\
/browser
\
/A1
\
/root",

690


"latestChangeLogToken":null,

691


"thinClientURI":null,

692


"changesIncomplete":true,

693


"repositoryId":"A1",

694


"productVersion":"0.1",

695


"cmisVersionSupported":"1.0",

696


"aclCapabilities":null,

697


"principalIdAnonymous":"anonymous",

698


"repositoryDescription":"InMemory Test Repository",

699


"vendorName":"OpenCMIS",

700


"principalIdAnyone":"anyone"

701


}

702

}

703


704

cmis
-
browser
-
binding
-
v1.1
-
wd01


W
orking Draft

01

1

June

2011

Copyright
©

O
ASIS Open

2011
. All Rights Reserved.

Intended as
a
Standards Track Work Product

Page
31

of
65



705

2.4.5.2

Getting Folder Children

706

The content of a CMIS folder is obtained using an HTTP GE
T of an object URL for the folder. The
707

response is a JSON object which contains properties such as hasMoreItems, numItems, as well as an
708

array of JSON objects each of which describes a child object, such as a cmis:folder or a cmis:document.

709


710

In this exam
ple the objectId is used as the selector.

711


712

G
ET
/A1/root?objectId=101
HTTP/1.1

713


Host: www.
example
.com

714


User