Alfresco Documentation
Published on Alfresco Documentation (https://docs.alfresco.com)

Home > Alfresco One 5.0.5 > Developing > Developing Client Applications > Alfresco One API

Alfresco One API

The Alfresco One API lets you access content in an on-premise Alfresco repository, and in Alfresco cloud, from your own applications. The API is RESTful, which means each call is an HTTP request, so you don't even need a programming language to try it out. You can just type a URL address in a web browser. It consists of two parts, the standard CMIS API, which lets you manage and access content, and the new Alfresco One REST API which lets you manage Alfresco's additional features such as ratings and comments, that are not covered by the CMIS standard.

To get started you need access to an instance of Alfresco or an Alfresco Cloud [1] account. You will also need authorization [2] to your chosen repository. Once you have that, you can try out API calls using:

  • A web browser
  • An HTTP URL tool such as cURL [3] or RESTClient [4]. Some of these tools let you build your GET, PUT, POST, and DELETE commands simply, take care of authentication, and will save your test calls for repeated use.

You make API requests by sending a URL using one of five HTTP API methods, GET, POST, PUT, DELETE, and OPTIONS. Here's an example:

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/sites/fred-bloggs-yourcompany-com

Sending this URL using the HTTP GET method invokes the sites Alfresco Public RESTFul method. This call requests information on the site with the id fred.blogs.yourcompany.com. The server will return an HTTP response with the following JSON body:

{
   "entry":{
      "title":"Fred Blogg's Home",
      "description":"Fred Blogg's private home site.",
      "visibility":"PRIVATE",
      "id":"fred-bloggs-yourcompany-com"
   }
}
  • What's new in the Alfresco One API [5] At Alfresco we're always thinking up new ways to help you write great applications.
  • How does an application do work on behalf of a user? [6] Your must application must authenticate with the Alfresco server to work with Alfresco resources. If your application is using resources on an Alfresco on-premise repository it uses basic HTTP authentication. If your application is using resources on an Alfresco Cloud account it uses OAuth authentication.
  • Alfresco CMIS API [7] Alfresco fully implements both the CMIS 1.0 and 1.1 standards to allow your application to manage content and metadata in an Alfresco repository or in Alfresco cloud. This section gives a brief overview of the URL format for CMIS REST API calls, and explains the format of responses.
  • Alfresco REST API [8] The Alfresco REST API lets you manage alfresco-specific features of content in an on-premise Alfresco repository, and in Alfresco cloud from your own applications.
Parent topic: Developing Client Applications [9]

What's new in the Alfresco One API

At Alfresco we're always thinking up new ways to help you write great applications.

November 2014

The Alfresco CMIS API now supports the CMIS 1.1 cmis:item feature to allow your applications access to some Alfresco object types that are outside the CMIS definitions of document, folder, relationship, or policy.

October 2013

We've updated our public API to give your applications easier access to your data.

  • The full Alfresco One API [10] is available on Alfresco One in addition to Alfresco in the Cloud. Now your applications can access content using a single consistent interface.
  • The Alfresco One API has support for workflow objects; deployments [11], process definitions [12], processes [13], and tasks [14].
  • The Alfresco CMIS API supports the CMIS 1.1 specification. Alfresco provides the new CMIS 1.1 browser binding [15] to simplify your web applications, the use of Secondary Data Types [16] to create and manipulate Alfresco Aspects, and the ability to append content [17] to data items.
Parent topic: Alfresco One API [18]

How does an application do work on behalf of a user?

Your must application must authenticate with the Alfresco server to work with Alfresco resources. If your application is using resources on an Alfresco on-premise repository it uses basic HTTP authentication. If your application is using resources on an Alfresco Cloud account it uses OAuth authentication.
  • Authentication for Alfresco on-premise [19] You use HTTP basic access authentication to provide your user name and password to the Alfresco server.
  • Authentication for Alfresco Cloud [20] You can register your application with Alfresco to use our authentication.
Parent topic: Alfresco One API [18]

Authentication for Alfresco on-premise

You use HTTP basic access authentication to provide your user name and password to the Alfresco server.

So if you invoke an API method in your client application, you provide an HTTP Authorization header with the user name and password combined into a string "username:password". For example if your user name is fred and your password is mypassword the Authorization string is "fred:mypassword". The authorization header must be base-64 encoded.

Parent topic: How does an application do work on behalf of a user? [6]

Authentication for Alfresco Cloud

You can register your application with Alfresco to use our authentication.

An Alfresco application uses the OAuth 2.0 authorization code flow [21] to authenticate itself with Alfresco Cloud and to allow users to authorize the application to access data on their behalf.

You first register your application on the Alfresco Developer site [22]. You provide a callback URI, and a scope. Registration will provide you with an API key and a key secret which are required by your application to authorize itself. When a user runs your application, the application requests an authorization code from Alfresco using its API key, key secret, callback URI and scope. Alfresco will inform the user that your application wishes to access resources, and asks the user to grant or deny access.

If the user grants access, Alfresco returns an authorization code to the application. Your application then exchanges the authorization code for an access token. Your application can then call the Alfresco CMIS API and the Alfresco REST API with the access token.

  • Registering your application [23] To use the Alfresco One API, your application must first be registered with the Alfresco Developer Portal.
  • Authorization [24] Your application uses the information registered with Alfresco to authorize itself when it is run by a user.
  • Refreshing an access token [25] After one hour, your application's access token will be invalid. You can use the refresh token to request a new access token without having to re-authenticate with the user. The refresh token is valid for 28 days or until a new access token is requested.
Parent topic: How does an application do work on behalf of a user? [6]

Registering your application

To use the Alfresco One API, your application must first be registered with the Alfresco Developer Portal.

Go to https://www.alfresco.com/develop/cloud [26] and sign up. When your account is approved, you can register your application. You must provide a callback URL and a scope. The callback URL is the part of your application that exchanges the authorization code for an access token. The scope should always be set to public_api. call.

Once your application is approved, The Auth tab will show an API Key, and a Key Secret. These will be needed by your application for authorization.

Parent topic: Authentication for Alfresco Cloud [20]

Authorization

Your application uses the information registered with Alfresco to authorize itself when it is run by a user.

Requesting an authorization code

The following HTML is from the Alfresco OAuth sample and shows an application with an API key (client_id) of l74dx104ddc00c3db4509b2d02f62c3a01234, a redirect URI of http://localhost:8080/alfoauthsample/mycallback.html and a scope of public_api authorizing with Alfresco. You should always use the value public_api for scope.

<!DOCTYPE html>
<html>
<head>
<title>Alfresco OAuth Sample Demo</title>
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="-1">
</head>
<body>
<h1>Welcome to the Alfresco OAuth Sample App</h1>
<form action="https://api.alfresco.com/auth/oauth/versions/2/authorize">
client_id: <input
   name="client_id"
   value="l74dx104ddc00c3db4509b2d02f62c3a01234"
   size="50px"
>
This must match the registered value
<br />
redirect_uri: <input
   name="redirect_uri"
   value="http://localhost:8080/alfoauthsample/mycallback.html"
   size="70px"
>
* This must match the registered value
<br />
scope: <input
   name="scope"
   value="public_api"
>
<br />
response_type: <input
   name="response_type"
   value="code"
   readonly="readonly"
><br />
<input type="submit"></form>
</html>

         

Alfresco will ask the user for their userid and password to grant or deny access to resources for your application. If they grant access, then Alfresco will invoke the callback URI with the authorization code.

Exchanging the authorization code for an access token

Once the application has an authorization code, it can exchange this for an access token. The following HTML is from the Alfresco OAuth sample and shows an application with an authorization code of f9d9f182-700b-4c67-8235-b6ea08870872 API Key (client_id) of l74dx104ddc00c3db4509b2d02f62c3a01234 , and a key secret (client_secret) of ebf0708b9c8a46efb0115024a7a204e0 requesting an access token. Note that once the application has an authorization code, it has 10 minutes to exchange it. After that, the authorization code is invalid and the application must request a new one.

<!DOCTYPE html>
<html>
<head>
<title>OAuth Callback page</title>
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="-1">
</head>
<body>
<h1>OAuth Sample - Callback page</h1>
<form id="tokenForm" action="https://api.alfresco.com/auth/oauth/versions/2/token" method="post" target="ipostresponse">
code: <input id="authCode" name="code" value="f9d9f182-700b-4c67-8235-b6ea08870872" size="50px"><br/>
client_id: <input name="client_id" value="l74dx104ddc00c3db4509b2d02f62c3a01234" size="50px">
* This must match the registered value in the developer portal</font><br/>

client_secret: <input name="client_secret" value="ebf0708b9c8a46efb0115024a7a204e0" size="50px">
* This must match the registered value in the developer portal</font><br/>

redirect_uri: <input name="redirect_uri" value="http://localhost:8080/alfoauthsample/mycallback.html" size="70px">
* This must match the registered value in the developer portal</font><br/>
grant_type: <input name="grant_type" value="authorization_code" readonly="readonly"><br/>
<input type="submit">
</form>
</html>
         

The application will get a JSON response body like this:

{
  "access_token":"87727764-3876-43b9-82a1-1ca917302ce5",
  "token_type":"Bearer",
  "expires_in":3600,
  "refresh_token":"596f6074-f432-4aeb-a162-8196213c659c",
  "scope":"public_api"
}
The following table explains the response properties:
Property JSON Type Description
access_token string An access token that can be used to make authenticated calls using the Alfresco One API for one hour.
token_type string The type of token.
expires_in number The number of seconds the access token will be valid for. Alfresco will issue access tokens valid for one hour.
refresh_token string Once the access token expires, the application must get a new access token [27] using this refresh token. The refresh token is valid for seven days.
scope string Always use public_api as the value of scope.

The access token can be used to make authenticated calls using the Alfresco One API for one hour. After that period, the application must get a new access token [27] using the refresh token.

Using the access token

For simplicity, the example adds the access token to the query as a parameter. Note that the preferred method to pass the access token to Alfresco is to include it in the HTTP request header in the Authorization field in the following format:

            Value: Bearer [your access token]

This is a an example:

Bearer d1358c05-6564-4086-94b6-a7e14ce3490

The application now has an access token, and can use it to make API calls. The following HTML code is from the Alfresco OAuth sample and shows an authenticated call to the sites API.

<!DOCTYPE html>
<html>
<head>
<title>Alfresco OAuth Sample Demo</title>
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="-1">
</head>
<body>
<h1>OAuth Sample - Use the access token</h1>
<form id="callerForm" action="" method="get" target="ipostresponse">
Paste your Access token here: <input name="access_token" value="" size="60px"><br/>
API url to call (via HTTP.GET) <input id="urlToCall" value="https://api.alfresco.com/alfresco.com/public/alfresco/versions/1/sites" size="70px"><br/>
<input type="submit">
</form>
</body>
</html>
         

The application will get a JSON response body like this:

{
  "list" : {
    "pagination" : {
      "count" : 2,
      "hasMoreItems" : false,
      "skipCount" : 0,
      "maxItems" : 100
    },
    "entries" : [ {
      "entry" : {
        "site" : {
          "id" : "general-test-site",
          "title" : "General Test Site",
          "visibility" : "PRIVATE",
          "description" : "Test Site"
        },
        "id" : "general-test-site",
        "role" : "SiteCollaborator"
      }
    }, {
      "entry" : {
        "site" : {
          "id" : "fred-bloggs-yourcompany-com",
          "visibility" : "PRIVATE",
          "description" : "Fred Bloggs's private home site."
        },
        "id" : "fred-bloggs-yourcompany-com",
        "role" : "SiteManager"
      }
    } ]
  }
}
Parent topic: Authentication for Alfresco Cloud [20]

Refreshing an access token

After one hour, your application's access token will be invalid. You can use the refresh token to request a new access token without having to re-authenticate with the user. The refresh token is valid for 28 days or until a new access token is requested.

When the access token expires, API requests will receive an HTTP 401 response with the following body:

{
  "error":"invalid_request",
  "error_description":"The access token expired"
}
Note: The error description The access token expired is the only way your application can recognize this error. Your application should request a new access token using the refresh token.

The following HTML is from the Alfresco OAuth sample and shows an application with a refresh token of e98f372c-e5a6-49e5-ba55-a035234577eb2 API Key (client_id) of l74dx104ddc00c3db4509b2d02f62c3a01234, and a key secret (client_secret) of ebf0708b9c8a46efb0115024a7a204e0 requesting a new access code.

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Alfresco OAuth Sample Demo</title>
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="-1">
</head>
<body>
<h1>OAuth Sample - Refresh the access token</h1>
<form id="tokenForm" action="https://api.alfresco.com/auth/oauth/versions/2/token" method="post" target="ipostresponse">
refresh_token: <input name="refresh_token" value="e98f372c-e5a6-49e5-ba55-a035234577eb2" size="60px"><br/>
client_id: <input name="client_id" value="l74dx104ddc00c3db4509b2d02f62c3a01234" size="50px">
* This must match the registered value in the developer portal<br/>
client_secret: <input name="client_secret" value="ebf0708b9c8a46efb0115024a7a204e0" size="50px">
* This must match the registered value in the developer portal<br/>
grant_type: <input name="grant_type" value="refresh_token" readonly="readonly"><br/>
<input type="submit">
</form>
</body>
</html>

The response will have a body that looks like this:

{
  "access_token":"28f88a82-a62b-4e44-9312-16a4a5d2e71c",
  "token_type":"Bearer",
  "expires_in":3600,
  "refresh_token":"e98f372c-e5a6-49e5-ba55-a0358d877eb2",
  "scope":"public_api"
}

Note that you can refresh the access token at any time before the timeout expires. The old access token becomes invalid when the new one is granted. The new refresh token supplied in the response body can be used in the same way.

Parent topic: Authentication for Alfresco Cloud [20]

Alfresco CMIS API

Alfresco fully implements both the CMIS 1.0 and 1.1 standards to allow your application to manage content and metadata in an Alfresco repository or in Alfresco cloud. This section gives a brief overview of the URL format for CMIS REST API calls, and explains the format of responses.

CMIS (Content Management Interoperability Services) is a vendor-neutral OASIS Web services interface specification [28] that enables interoperability between Enterprise Content Management (ECM) systems. CMIS allows rich information to be shared across Internet protocols in vendor-neutral formats, among document systems, publishers and repositories, in a single enterprise and between companies.

You can use basic HTTP methods to invoke CMIS methods, or you can use one of the many language-specific libraries that wrap CMIS. One such example for the Java language is the OpenCMIS Client API [29] provided by the Apache Chemistry [30] project. Apache Chemistry provides client libraries for many other languages such as Python, PHP, and .NET.

You can use methods described by both CMIS 1.0 [31] and 1.1 [32] in the same application, although in practice it is advisable to write all new applications to the latest 1.1 specification.

  • CMIS basics [33] CMIS is built around a number of concepts. This section provides an overview of those that are shared between all CMIS versions.
  • CMIS 1.1 [34] CMIS 1.1 introduces a number of new concepts that are supported by Alfresco. You can now use the new browser binding to simplify flows for web applications, use Alfresco aspects, and use the append data support to manage large items of content.
  • The Alfresco OpenCMIS Extension for CMIS 1.0 [35] For existing CMIS 1.0 applications, the Alfresco OpenCMIS Extension extended OpenCMIS to provide support for Alfresco aspects.
  • Getting Started [36] To get you started with CMIS, this section explains the format of the URL you will use, and what responses to expect.
Parent topic: Alfresco One API [18]

CMIS basics

CMIS is built around a number of concepts. This section provides an overview of those that are shared between all CMIS versions.
  • CMIS repository [37] At the root of the CMIS model and services is a repository, which is an instance of the content management system and its store of metadata, content, and indexes.
  • CMIS query [38] A CMIS query is based upon SQL-92. The query is read-only and presents no data manipulation capabilities.
  • CMIS services [39] CMIS provides services that you can access using SOAP or AtomPub, depending on your preferred architectural style.
  • CMIS object model [40] The CMIS object model is similar to the Alfresco object model without the support of aspects. It supports versioning, policy, document, and folder objects.
Parent topic: Alfresco CMIS API [7]
Related information
OpenCMIS Client API Developer's Guide [29]
Apache Chemistry [30]
Public Alfresco CMIS Server [41]
The CMIS 1.0 specification [42]
The CMIS 1.1 specification [43]

CMIS repository

At the root of the CMIS model and services is a repository, which is an instance of the content management system and its store of metadata, content, and indexes.

The repository is the end point to which all requests are directed. In the RESTful model, it is the root path of the resources being addressed in CMIS. The repository is capable of describing itself and its capabilities.

Other core concepts include:
  • CMIS object model
  • CMIS query
  • CMIS services
Parent topic: CMIS basics [33]

CMIS query

A CMIS query is based upon SQL-92. The query is read-only and presents no data manipulation capabilities.

The syntax consists of the following clauses:

  • SELECT with a target list
  • FROM with the object types being queried
  • JOIN to perform a join between object types
  • WHERE with the predicate
  • IN and ANY to query multi-value properties
  • CONTAINS to specify a full-text qualification
  • IN_FOLDER and IN_TREE to search within a folder hierarchy
  • ORDERBY to sort the results
The CMIS query maps the object type into a relational structure where object type approximates a table, the object approximates a row, and the property approximates a column that can be multi-valued. You can query the actual binary content using a full text query and folder path information using the in_folder and in_tree functions.

A query can also be paged for user interface presentation.

Parent topic: CMIS basics [33]

CMIS services

CMIS provides services that you can access using SOAP or AtomPub, depending on your preferred architectural style.

CMIS services include the following:

  • Repository services let you discover available repositories, get the capabilities of these repositories, and provide basic Data Dictionary information of what types are available in the repository.
  • Navigation services let you navigate the repository by accessing the folder tree and traversing the folder/child hierarchy. You can use these services to get both children and parents of an object.
  • Object services provide the basic CRUD (Create, Read, Update, Delete) and Control services on any object, including document, folder, policy, and relationship objects. For document objects, this includes setting and getting of properties, policies, and content streams. Object services retrieve objects by path or object ID. Applications may also discover what actions users are allowed to perform.
  • Multi-filing services let you establish the hierarchy by adding or removing an object to or from a folder.
  • Discovery services provide Query and Change services, and a means of paging the results of the query.
  • Change services let you discover what content has changed since the last time checked, as specified by a special token. You can use Change services for external search indexing and replication services.
  • Versioning services control concurrent operation of the Object services by providing Check In and Check Out services. Version services also provide version histories for objects that are versioned.
  • Relationship services let you create, manage, and access relationships or associations between objects as well as allow an application to traverse those associations.
  • Policy services apply policies on document objects. Policies are free-form objects and can be used by implementations for security, record, or control policies.
  • ACL services let you create, manage, and access Access Control Lists to control who can perform certain operations on an object.

Parent topic: CMIS basics [33]

CMIS object model

The CMIS object model is similar to the Alfresco object model without the support of aspects. It supports versioning, policy, document, and folder objects.

CMIS supports object types that define properties associated with each type. Each object has an object type, properties defined by that object type, and an object ID.

Object types support inheritance and are sub-typed as document object types and folder object types. Document object types can have content streams to store and access binary data. Object types can also be related through relationship object types.

Parent topic: CMIS basics [33]

CMIS policy object

A policy object represents an administrative policy that can be enforced by a repository, such as a retention management policy.

An Access Control List is a type of policy object. CMIS allows applications to create or apply ACLs. The Alfresco repository also uses policy objects to apply aspects.

CMIS document object

Document objects have properties and content streams for accessing the binary information that is the document, properties that can be multi-valued, and versions.

Document objects can also have renditions that represent alternate file types of the document. Only one rendition type, a thumbnail, is well defined.

CMIS versioning

Versioning in CMIS is relatively simple to encompass the various versioning models of different CMIS implementations.

Each version is a separate object with its own object ID. For a given object ID, you can retrieve the specific version, the current version, or all versions of the object, as well as delete specific or all versions of a Document object. Document versions are accessed as a set of Document objects organized on the time stamp of the object. CMIS does not provide a history graph.

CMIS folder object

Document objects live in a folder hierarchy. As in Alfresco, a folder can exist in another folder to create the hierarchy. The relationship between a folder and document is many-to-many if the repository supports multi-filing, allowing a document to appear in more than one folder. Otherwise, it is one-to-many relationship.

CMIS 1.1

CMIS 1.1 introduces a number of new concepts that are supported by Alfresco. You can now use the new browser binding to simplify flows for web applications, use Alfresco aspects, and use the append data support to manage large items of content.
  • The Browser binding [44] In addition to the existing XML-based AtomPub and Web services bindings, CMIS 1.1 provides a simpler JSON-based binding. The browser binding is designed for web applications and is easy to use just with HTML and JavaScript. It uses just two verbs, GET and POST, and resources are referenced using simple and predictable URLs.
  • Using aspects [45] Alfresco aspects are exposed as secondary types in CMIS 1.1. You can dynamically add aspects to an Alfresco object using the API.
  • Appending content [46] In some applications such as journaling, or when using very large files, you want to upload a file in chunks. You might have large files that time out during an upload, or fail because of a bad connection. You can use the CMIS 1.1 append parameter in these situations
  • cmis:item support [47] You can use cmis:item to query some Alfresco object types and your own custom types that are outside the CMIS definitions of document, folder, relationship, or policy.
Parent topic: Alfresco CMIS API [7]
Related information
OpenCMIS Client API Developer's Guide [29]
Apache Chemistry [30]
Public Alfresco CMIS Server [41]
The CMIS 1.1 specification [43]

The Browser binding

In addition to the existing XML-based AtomPub and Web services bindings, CMIS 1.1 provides a simpler JSON-based binding. The browser binding is designed for web applications and is easy to use just with HTML and JavaScript. It uses just two verbs, GET and POST, and resources are referenced using simple and predictable URLs.
You reference content in the repository by using the two URLs returned by the getRepositories or getRepositoryInfo service:
rootFolderUrl
repositoryUrl
Objects can then be referenced in two ways:
  1. by their ID
    <rootFolderUrl>?objectId=<objectId>
    
  2. by their path
    <rootFolderUrl>/<object path>
    
Content that is independent of a folder, for example a Type definition be accessed using the repositoryUrl service.
<repositoryUrl>?cmisselector=<selector>
  • Getting content [48] You use the HTTP GET command with parameters to retrieve content from a repository.
  • Creating content [49] You use the HTTP POST command to create, update, and delete content from a repository. In an application a user would use an HTML form in a browser.
  • Compact JSON return values [50] The JSON returned on a browser binding call includes type and property definitions, which can be quite large. Your application might not need this information. You can use succinct to produce more compact responses. succinct is expressed as a parameter on HTTP GET calls and as a control on HTTP POST calls.
Parent topic: CMIS 1.1 [34]

Getting content

You use the HTTP GET command with parameters to retrieve content from a repository.
Use the cmisselector parameter to define which content you want returned on a resource. For example if you want the children of an object:
cmisselector=children 
The URL to get all of the children of the root/test node in the repository looks like this:
http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/browser/root/test?cmisselector=children
All content will be returned as JSON by default.

returning JSONP

In some cases you might want to request data from a server in a different domain, this is normally prohibited by web browsers due to their same origin policy [51]. CMIS 1.1 uses the callback parameter to return JSONP [52]. This format also known as JSON with padding returns JavaScript code. It is evaluated by the JavaScript interpreter, not parsed by a JSON parser. You use the callback parameter to provide a JavaScript function to cope with the returned JSONP. For example the following function would write repository information into an HTML page:
  <script type="text/javascript"> 
  function showRepositoryInfo(repositoryInfo) { 
  for(repId in repositoryInfo) {
  var ri = repositoryInfo [repId];   
  document.write("<h1>Information</h1>"); 
  document.write("<ul>");  
  document.write("<li>ID..."
  + ri.repositoryID+"</li>"); 
  document.write("<li>Name..."
  + ri.productName+"</li>");
  document.write("<li>Description..."
  + ri.productVersion);
  document.write("</li>"); 
  document.write("</ul>"); 
  }
} 
 
The following function would invoke the CMIS URL GET with the callback function showRepositoryInfo.
  <script type="text/javascript" 
src="/alfresco/api/-default-/public/cmis/versions/1.1/browser?callback=showRepositoryInfo">
</script>
 
The JSONP returned would look like this:
  showRepositoryInfo (
{"-default-":{ 
”vendorName":”Alfresco",
”productName" : ”Alfresco Enterprise”,
"productVersion": "4.2.0 (r56201)“
  }
 }
)

 
Parent topic: The Browser binding [44]

Creating content

You use the HTTP POST command to create, update, and delete content from a repository. In an application a user would use an HTML form in a browser.

You use the cmisaction element to control the action. So for example to create a document you would set cmisaction=createDocument.

You define other CMIS properties as form elements for example: propertyId[0]… propertyValue[0].

You define the content stream for a create or an update using the file input form element:

<input id="content” type="file”

The form shows an example of a document create command:

<form id="cd1" action="http://localhost:8080/alfresco/api/…" method="post">
  <table>
  <tr>
  <td><label for="name">Name:</label></td>
  <td><input name="propertyValue[0]" type="text" id="name”/></td>
  <td><input id="content" name="Browse" type="file" height="70px" size="50"/></td>
  </tr>
  </table>
  <input id="cd" type="submit" value="Create Document"/></td>
  <input name="propertyId[0]" type="hidden" value="cmis:name" />
  <input name="propertyId[1]" type="hidden" value="cmis:objectTypeId" />
  <input name="propertyValue[1]" type="hidden" type="text" id="typeId" value="cmis:document"/> </td>
  <input name="cmisaction" type="hidden" value="createDocument" />
  </form>
Parent topic: The Browser binding [44]

Compact JSON return values

The JSON returned on a browser binding call includes type and property definitions, which can be quite large. Your application might not need this information. You can use succinct to produce more compact responses. succinct is expressed as a parameter on HTTP GET calls and as a control on HTTP POST calls.
In the following example the succint parameter is used on an HTTP GET call to retrieve information on some children of the Presentations folder in the test site. Specifying succint reduces the size of the returned JSON significantly.
http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/browser/root/sites/test/documentLibrary/Presentations?cmisselector=children&succinct=true
Parent topic: The Browser binding [44]

Using aspects

Alfresco aspects are exposed as secondary types in CMIS 1.1. You can dynamically add aspects to an Alfresco object using the API.

You add an aspect to an object by updating the cmis:secondaryObjectTypeIds property with the Type Id of the Aspect. You can add and set an aspect in the same call.

cmis:secondaryObjectTypeIds is an array of strings, each of which is an an aspect type, for example, dublinCoreAspect.

Parent topic: CMIS 1.1 [34]

Appending content

In some applications such as journaling, or when using very large files, you want to upload a file in chunks. You might have large files that time out during an upload, or fail because of a bad connection. You can use the CMIS 1.1 append parameter in these situations

You can use the isLastChunk parameter to indicate to the server that the chunked data is complete. The following example puts a chunk of data to a specific existing Alfresco object:

http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/atom/content?id=915b2b00-7bf6-40bf-9a28-c780a75fbd68&append=true
Parent topic: CMIS 1.1 [34]

cmis:item support

You can use cmis:item to query some Alfresco object types and your own custom types that are outside the CMIS definitions of document, folder, relationship, or policy.

You can find a user or a set of users via a CMIS query. For example, the following query will return all information for all users:

SELECT * FROM cm:person

The following query will return the selected fields for users with names like "smith" and "smithers" all users:

SELECT cm:userName, cm:homeFolder FROM cm:person where cm:userName like 'smi%'
Parent topic: CMIS 1.1 [34]

The Alfresco OpenCMIS Extension for CMIS 1.0

For existing CMIS 1.0 applications, the Alfresco OpenCMIS Extension extended OpenCMIS to provide support for Alfresco aspects.
Note: If you are using the current CMIS 1.1 API, Alfresco aspects are exposed as secondary types [53]. You do not need to use this extension.

In Alfresco, aspects are a fundamental concept related to content modeling. Aspects allow the addition of behaviours to existing content types. The CMIS specification does not include aspects in its scope, but it does provide extension points that allow additional functionality.

CMIS extensions are XML fragments inserted in different parts of a CMIS object. The Alfresco aspect fragments are documented on the Alfresco Wiki [54]. So, they are available to all CMIS clients out there including OpenCMIS.

However, programming with CMIS extensions can be complex, and can require quite a lot of code. OpenCMIS does all the XML parsing for you but since it knows nothing about aspects, it can not provide simple, elegant interfaces.

That is where the "Alfresco OpenCMIS Extension" steps in. It seamlessly merges the Alfresco aspect properties with the CMIS object properties and provides interfaces to get, add, and remove aspects. It does this by replacing the OpenCMIS internal object factory with an object factory that is aspect-aware. It processes and adds Alfresco aspect fragments for you, behind the scenes, eliminating complexity in your code.

  • Using the Alfresco OpenCMIS Extension [55] The Alfresco OpenCMIS Extension depends on the Apache Chemistry OpenCMIS libraries.
  • Using the CMIS Workbench with Alfresco [56] The CMIS Workbench is a CMIS desktop client for developers. It is a repository browser and an interactive test bed for the OpenCMIS client API.
  • Creating a document or folder with aspects [57] Aspects can be specified when creating a document or folder.
  • Adding, removing and discovering aspects [58] To add and remove aspects to an existing object, you must cast OpenCMIS Document objects to AlfrescoDocument objects and Folder objects to AlfrescoFolder objects.
Parent topic: Alfresco CMIS API [7]

Using the Alfresco OpenCMIS Extension

The Alfresco OpenCMIS Extension depends on the Apache Chemistry OpenCMIS libraries.

You can download the latest OpenCMIS client libraries from the Apache Chemistry [59] website. Then download the latest Alfresco OpenCMIS Extension package [60] and add the jars to your classpath.

If you are using Maven, follow the instructions in Building the Alfresco OpenCMIS Extension with Maven [61].

You do not need to modify OpenCMIS in order to use a different object factory. Set an additional session parameter to change the object factory class, as shown in the following code fragment:

Map<String, String> parameter = new HashMap<String, String>();

// user credentials
parameter.put(SessionParameter.USER, "admin");
parameter.put(SessionParameter.PASSWORD, "admin");

// connection settings
parameter.put(SessionParameter.ATOMPUB_URL, "http://localhost:8080/alfresco/api/-default-/cmis/versions/1.1/atom");
parameter.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value());

// set the alfresco object factory
parameter.put(SessionParameter.OBJECT_FACTORY_CLASS, "org.alfresco.cmis.client.impl.AlfrescoObjectFactoryImpl");

// create session
SessionFactory factory = SessionFactoryImpl.newInstance();
Session session = factory.getRepositories(parameter).get(0).createSession();

Now your code can access and update all aspect properties through the standard OpenCMIS interfaces.

  • Building the Alfresco OpenCMIS Extension with Maven [62] To use the extension with Maven, you need update your project's pom.xml file to use a Maven repository that contains the extension, and to specify that it has a dependency on the Alfresco OpenCMIS extension.
Parent topic: The Alfresco OpenCMIS Extension for CMIS 1.0 [35]

Building the Alfresco OpenCMIS Extension with Maven

To use the extension with Maven, you need update your project's pom.xml file to use a Maven repository that contains the extension, and to specify that it has a dependency on the Alfresco OpenCMIS extension.

To specify the Alfresco maven repository, add the following fragment to your pom.xml file:

<repositories>
    <repository>
         <id>maven.alfresco.com</id>
         <name>Alfresco Maven Repository</name>
         <url>http://maven.alfresco.com/nexus/content/groups/public/</url>
    </repository>
</repositories>

If your pom.xml file already contains a repositories element, just add the specified repository element to that.

To specify the dependency on the Alfresco OpenCMIS extension, add the following fragment to your pom.xml file :-

<dependencies>
    <dependency>
        <groupId>org.apache.chemistry.opencmis</groupId>
        <artifactId>chemistry-opencmis-client-impl</artifactId>
        <version>0.13.0</version>
        <scope>test</scope>
    </dependency>
</dependencies>

If your pom.xml file already contains a dependencies element, just add the specified dependency element to that.

Parent topic: Using the Alfresco OpenCMIS Extension [55]

Using the CMIS Workbench with Alfresco

The CMIS Workbench is a CMIS desktop client for developers. It is a repository browser and an interactive test bed for the OpenCMIS client API.
  1. Download the CMIS workbench zip file from the Apache Chemistry [63] website.
  2. Unpack the contents of the zip file to a new directory.
  3. Navigate to the directory and run the following command to install the workbench:

    • Unix: workbench.sh
    • Windows: workbench.bat
  4. During the installation:
    1. In the URL field, enter the Alfresco CMIS URL:

      http://localhost:8080/alfresco/api/-default-/cmis/versions/1.1/atom

      Note: This URL has changed since Alfresco One 4.2.1.

      For a Browser binding, use http://localhost:8080/alfresco/api/-default-/cmis/versions/1.1/browser.

    2. Enter the user name and password.
    3. Click Load Repositories.
    4. Click Login.
  5. In the CMIS workbench, check that you can connect to the Alfresco repository by running CMIS functions such as creating, updating, and deleting folders.
Parent topic: The Alfresco OpenCMIS Extension for CMIS 1.0 [35]

Creating a document or folder with aspects

Aspects can be specified when creating a document or folder.

To create an object, the property cmis:objectTypeId must be set to a valid CMIS object type id. With the Alfresco OpenCMIS Extension installed, the OpenCMIS library accepts a comma-separated list of type ids. The first type id in that list must be the object type id. The following type ids must be aspect type ids. Aspect properties can be set for all aspects in the list.

The following code fragment shows an example of creating a document with one aspect:-

Map<String, Object> properties = new HashMap<String, Object>();
properties.put(PropertyIds.NAME, "doc1");
properties.put(PropertyIds.OBJECT_TYPE_ID, "cmis:document,P:cm:titled");
properties.put("cm:description", "My document");

Document doc = session.getRootFolder().createDocument(properties, null, null);

This creates a document without content in the root folder, with the titled aspect applied and the description property set.

Parent topic: The Alfresco OpenCMIS Extension for CMIS 1.0 [35]

Adding, removing and discovering aspects

To add and remove aspects to an existing object, you must cast OpenCMIS Document objects to AlfrescoDocument objects and Folder objects to AlfrescoFolder objects.

These two classes provide the following additional methods:

Methods for checking if an aspect is applied:

boolean hasAspect(String id);
boolean hasAspect(ObjectType type);

A method to retrieve the currently applied aspects:

Collection<ObjectType> getAspects();

A method to find the aspect type for a given property id

ObjectType findAspect(String propertyId);

Methods to add and remove aspects

void addAspect(String... id);
void addAspect(ObjectType... type);
void removeAspect(String... id);
void removeAspect(ObjectType... type);

The following code fragment adds an aspect to an existing object, and checks if the object has a second aspect to apply:

private static final String SECONDARY_OBJECT_TYPE_IDS_PROP_NAME = "cmis:secondaryObjectTypeIds";

public void addAspectToExistingDocument(Document document) {
        String aspectName = "P:cm:effectivity";
        // Make sure we have a document, and then add the aspect to it  
        if (document != null) {
            // Check that document doesn't already have the aspect applied
            List<Object> aspects = 
document.getProperty(SECONDARY_OBJECT_TYPE_IDS_PROP_NAME).getValues();
            if (!aspects.contains(aspectName)) {
                aspects.add(aspectName);
                Map<String, Object> properties = new HashMap<String, Object>();
                properties.put(SECONDARY_OBJECT_TYPE_IDS_PROP_NAME, aspects);
                properties.put("cm:from", new Date());
                Calendar toDate = Calendar.getInstance();
                toDate.add(Calendar.MONTH, 2);
                properties.put("cm:to", toDate.getTime());
                Document updatedDocument = (Document) document.updateProperties(properties);
                logger.info("Added aspect " + aspectName + " to " + getDocumentPath(updatedDocument));
            } else {
                logger.info("Aspect " + aspectName + " is already applied to " + 
getDocumentPath(document));
            }
        } else {
            logger.error("Document is null, cannot add aspect to it!");
        }
    }

Parent topic: The Alfresco OpenCMIS Extension for CMIS 1.0 [35]

Getting Started

To get you started with CMIS, this section explains the format of the URL you will use, and what responses to expect.

Note when reading this documentation and any other information on CMIS, that the CMIS term repository maps directly to the Alfresco Cloud term network. If you are accessing an Alfresco on-premise instance, the CMIS and Alfresco term repository are synonymous.

  • The domain model [64] CMIS defines a domain model. A client will access a CMIS service endpoint described by a URL. A service endpoint must have at least one repository. A repository, in this case an instance of Alfresco, is a data store which contains content. Each item of content is an object such as a folder, or a document. A repository is identified by its ID, and has a set of capabilities which describe what optional CMIS functionality the repository supports.
  • What does a request look like? [65] You call a method on the CMIS AtomPub REST API by issuing an authenticated HTTP request with a URL.
  • Getting the service document [66] The capabilities available to your application from an instance of on-premise Alfresco or the Alfresco Cloud are described in a an AtomPub document returned when calling the base URL. The service document contains information on the repository, the CMIS methods that can be called on it, and the parameters for those methods.
  • Getting information on a node [67] You can get information on a specific node in the repository by using its id. The resulting AtomPub XML document describes the node. You can tailor the information returned by providing HTML parameters.
  • Getting the children of a node [68] You can get the children of a specific node in the repository by using its id. The resulting AtomPub XML document describes children of the node. You can tailor the information returned by providing HTML parameters. You can use this method to navigate a folder tree in the repository.
  • Getting the contents of a document [69] You can get the contents of a specific document in the repository by using its id. The format of the URl and the parameters that you can use are detailed in the service document.
  • Updating the contents of a document [70] You can replace the contents of a specific document in the repository by using its id. The format of the URl and the parameters that you can use are detailed in the service document.
Parent topic: Alfresco CMIS API [7]

The domain model

CMIS defines a domain model. A client will access a CMIS service endpoint described by a URL. A service endpoint must have at least one repository. A repository, in this case an instance of Alfresco, is a data store which contains content. Each item of content is an object such as a folder, or a document. A repository is identified by its ID, and has a set of capabilities which describe what optional CMIS functionality the repository supports.

Using the CMIS service endpoint in an HTTP Get call will return the endpoint's CMIS service document which describes the CMIS functionality it supports.

Each CMIS object has an ID, type, and a set of properties for that type. There are four base types for a CMIS object:

Document
An item of content. The document can have a content stream, which is the actual file associated with the document. A content stream exists only as part of its containing document object. A content stream has a mimetype associated with it. A document object can contain one or more renditions, which are alternate views of the content. Documents objects are the only objects that are versionable. Each version of a document has its own object ID. All the versions of a document make up a version series and share a version series ID. You can create, read, update and delete documents using CMIS methods.
Folder
A container used to organize the document objects. A repository has one root folder. All other folder objects have one parent folder. A folder has a folder path representing its place in the repository's folder hierarchy.
Relationship
A relationship between a source object and a target object. Creating, changing and deleting relationships does not change the source or target objects themselves.
Policy
An optional repository-specific object that can be applied to controllable objects. The behavior of policies are not modeled by the CMIS specification. A policy object can be applied to multiple controllable objects and a controllable object can have multiple policies applied to it. A policy object can not be deleted if it is currently applied to one or more controllable objects.
Parent topic: Getting Started [36]

What does a request look like?

You call a method on the CMIS AtomPub REST API by issuing an authenticated HTTP request with a URL.

The four HTTP methods are used to support the traditional Create, Read, Update, and Delete (CRUD) operations of content management:

POST
is used to create a new entities
GET
is used to retrieve information
PUT
is used to update a single entity
DELETE
is used to delete a single entity
  • Request URL format [71] Each request is a URL with a specific format. The format is dependent on the type of target repository.
Parent topic: Getting Started [36]

Request URL format

Each request is a URL with a specific format. The format is dependent on the type of target repository.
  • Request URL format for Alfresco Cloud [72] Each request to Alfresco cloud is a URL with a specific format.
  • Request URL format for on-premise Alfresco [73] Each request to an Alfresco on-premise repository is a URL with a specific format.
Parent topic: What does a request look like? [65]

Request URL format for Alfresco Cloud

Each request to Alfresco cloud is a URL with a specific format.

This is an example of a request URL for CMIS 1.1

   https://api.alfresco.com/yourcompany.com/public/cmis/versions/1.0/atom/content?id=a99ae2db-0e40-4fb6-bf67-3f331a358cfc

This is an example of a request URL for CMIS 1.0

   https://api.alfresco.com/yourcompany.com/public/cmis/versions/1.1/atom/content?id=a99ae2db-0e40-4fb6-bf67-3f331a358cfc

Each request URL is made up of the following elements:

  1. The protocol, which will always be https
  2. The hostname. This will always be api.alfresco.com.
  3. Your network id, for example yourcompany.com.
  4. The API you want to call. In this case it is the public Alfresco CMIS API identified as /public/cmis.
  5. /versions/n. This specifies the version of the CMIS API you are using. 1.1 or 1.0.
  6. The CMIS binding. Alfresco supports the atom binding for the CMIS 1.0 protocol, and both the atom and browser bindings for the CMIS 1.1 protocol.
  7. The CMIS method itself. In this case the request is to get the content of a CMIS document with a specific ID.
Parent topic: Request URL format [71]

Request URL format for on-premise Alfresco

Each request to an Alfresco on-premise repository is a URL with a specific format.

This is an example of a request URL for CMIS 1.1:

   https://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/atom/content?id=a99ae2db-0e40-4fb6-bf67-3f331a358cfc

This is an example of a request URL for CMIS 1.0:

   https://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.0/atom/content?id=a99ae2db-0e40-4fb6-bf67-3f331a358cfc

Each request URL is made up of the following elements:

  1. The protocol, which can be http or https.
  2. The hostname. This will be the host and port number of your alfresco instance. So if your Alfresco instance is running on the local machine on port 8080 this will be localhost:8080.
  3. The fixed string -default-.
  4. The API you want to call. In this case it is the public Alfresco CMIS API identified as /public/cmis.
  5. /versions/n. This specifies the version of the CMIS API you are using. 1.1 or 1.0.
  6. The CMIS binding. Alfresco supports the atom binding for the CMIS 1.0 protocol, and both the atom and browser bindings for the CMIS 1.1 protocol.
  7. The CMIS method itself. In this case the request is to get the content of a CMIS document with a specific id.
Parent topic: Request URL format [71]

Getting the service document

The capabilities available to your application from an instance of on-premise Alfresco or the Alfresco Cloud are described in a an AtomPub document returned when calling the base URL. The service document contains information on the repository, the CMIS methods that can be called on it, and the parameters for those methods.

Getting the service document for an on-premise repository

To retrieve the service document use the HTTP GET method with this URL:

   https://localhost:8080/alfresco/api/cmis/versions/1.1/atom/

The response body is an AtomPub XML document which describes the CMIS capabilities in a standard way.

Getting the service document for all networks

To retrieve the service document for the current authenticated user's networks in the Alfresco cloud, use the HTTP GET method with this URL:

   https://api.alfresco.com/cmis/versions/1.1/atom/

The response body is an AtomPub XML document which describes the CMIS capabilities in a standard way.

Getting the service document for a specific network

To retrieve the service document for a specific network that the current authenticated user is a member of, use the HTTP GET method with a URL that specifies the network. For example this URL returns the service document for the yourcompany.com network.

   https://api.alfresco.com/yourcompany.com/public/cmis/versions/1.1/atom

The response body is an AtomPub XML document which describes the CMIS capabilities in a standard way. See the CMIS specification [32] for more details.

Parent topic: Getting Started [36]

Getting information on a node

You can get information on a specific node in the repository by using its id. The resulting AtomPub XML document describes the node. You can tailor the information returned by providing HTML parameters.

URL format

Here is an example of a URL to retrieve information on a specific node in Alfresco Cloud:

https://api.alfresco.com/yourcompany.com/public/cmis/versions/1.1/atom/id?id=5dba1525-44a6-45ed-a42e-4a155a3f0539

Here is an example of a URL to retrieve information on a specific node in an Alfresco on-premise instance:

https://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/atom/id?id=5dba1525-44a6-45ed-a42e-4a155a3f0539

The response body is an AtomPub XML document which describes the CMIS capabilities in a standard way. See the CMIS specification [42] for more details.

Parameters

You can add the following optional HTTP parameters to the URL:

Parameter Optional? Default value Description
filter Yes Repository specific A comma-separated list of query names that defines which properties must be returned by the repository.
includeAllowableActions Yes false A boolean value. A value of true specifies that the repository must return the allowable actions for the node.
includeRelationships Yes IncludeRelationships.NONE The relationships in which the node participates that must be returned in the response.
renditionFilter Yes cmis:none A filter describing the set of renditions that must be returned in the response.
includePolicyIds Yes false A boolean value. A value of true specifies the repository must return the policy ids for the node.
includeAcl Yes false A boolean value. A value of true specifies the repository must return the Access Control List (ACL) for the node.
Parent topic: Getting Started [36]

Getting the children of a node

You can get the children of a specific node in the repository by using its id. The resulting AtomPub XML document describes children of the node. You can tailor the information returned by providing HTML parameters. You can use this method to navigate a folder tree in the repository.

URL format

Here is an example of a URL to retrieve the children of a specific node in Alfresco Cloud:

https://api.alfresco.com/yourcompany.com/public/cmis/versions/1.1/atom/children?id=5dba1525-44a6-45ed-a42e-4a1a1a3f0539

Here is an example of a URL to retrieve the children of a specific node in an Alfresco on-premise instance:

https://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/atom/children?id=5dba1525-44a6-45ed-a42e-4a1a1a3f0539

The response body is an AtomPub XML document which describes the child nodes in a standard way. See the CMIS specification [42] for more details.

Parameters

You can add the following optional HTTP parameters to the URL:

Parameter Optional? Default value Description
filter Yes Repository specific A comma-separated list of query names that defines which properties must be returned by the repository.
orderBy Yes Repository specific A comma-separated list of query names that defines the order of the results set. Each query name in the list must be followed by the string ASC or DESC to specify the direction of the order, ascending or descending.
includeAllowableActions Yes false A boolean value. A value of true specifies that the repository must return the allowable actions for each node.
includeRelationships Yes IncludeRelationships.NONE The relationships in which each node participates that must be returned in the response.
renditionFilter Yes cmis:none A filter describing the set of renditions that must be returned in the response.
includePathSegment Yes false A boolean value. A value of true returns a path segment in the response for each child object that can be used to construct that object's path.
maxItems Yes Repository specific The maximum number of items to return in the response.
skipCount Yes 0 The number of objects to skip over before returning any results.
Parent topic: Getting Started [36]

Getting the contents of a document

You can get the contents of a specific document in the repository by using its id. The format of the URl and the parameters that you can use are detailed in the service document.

URL format

Here is an example of a URL to retrieve the contents of a specific document in Alfresco Cloud:

https://api.alfresco.com/yourcompany.com/public/cmis/versions/1.1/atom/content?id=824ba7cd-dcee-4908-8917-7b6ac0611c97

Here is an example of a URL to retrieve the contents of a specific document in an Alfresco on-premise instance:

https://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/atom/content?id=824ba7cd-dcee-4908-8917-7b6ac0611c97

The response body is the content of the document. The format is specific to the type of content, so for example, getting the contents of a text document returns a text response body.

Parent topic: Getting Started [36]

Updating the contents of a document

You can replace the contents of a specific document in the repository by using its id. The format of the URl and the parameters that you can use are detailed in the service document.

URL format

Here is an example of a URL to update the contents of a specific document in Alfresco Cloud:

https://api.alfresco.com/yourcompany.com/public/cmis/versions/1.1/atom/content?id=824ba7cd-dcee-4908-8917-7b6ac0611c97

Here is an example of a URL to update the contents of a specific document in an Alfresco on-premise instance:

https://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/atom/content?id=824ba7cd-dcee-4908-8917-7b6ac0611c97

Request Header

The request Content-Type must be of the same mime-type as the target document. In this example, we are updating a plain text document.

Content-Type: text/plain; charset=utf-8

Request body

The request body is the new content of the document.

Some updated text.

Response

If the request is successful an HTTP CREATED response (status 201) is returned.

Parent topic: Getting Started [36]

Alfresco REST API

The Alfresco REST API lets you manage alfresco-specific features of content in an on-premise Alfresco repository, and in Alfresco cloud from your own applications.

The API gives your application access to Alfresco Networks, Sites, Containers, Comments, Ratings, tags, and workflow objects. Response and request bodies are all specified with simple JSON.
  • Getting started [74] To get you started with the API, this section explains the format of the URL you will use, and what to expect in responses.
  • API reference [75] This reference material has a description of each of the Alfresco entities operated on by the REST API, and of the methods that are available for each of those entities.
Parent topic: Alfresco One API [18]

Getting started

To get you started with the API, this section explains the format of the URL you will use, and what to expect in responses.
  • What is an entity? [76] The generic term used in the API for any object in an Alfresco repository is entity. An entity is of a specific entity type, and has a unique entity id.
  • What does a request look like? [77] You call a method on the API by issuing an authenticated HTTP request with a URL.
  • What does a response look like? [78] All responses are JSON objects. The format of the response object depends on the request. The object can contain an entry object, an entry and a relations object, a list object, or an error object. Note that if a property or an entire object has no value, then it is not returned in the parent object.
  • Using HTTP OPTIONS to get entity metadata [79] The Alfresco REST API supports the use of the HTTP OPTIONS method to retrieve structured information on the methods available on an entity and its relations.
  • Items and packages [80] When a process is created, a list of items can be given as an input parameter. The items are a list of nodeids. A nodeId is a nodeRef with the workspace://SpacesStore prefix removed. During creation of the process, a new package node is created in the repository. All provided items are associated with that package node.
Parent topic: Alfresco REST API [8]

What is an entity?

The generic term used in the API for any object in an Alfresco repository is entity. An entity is of a specific entity type, and has a unique entity id.

The Alfresco REST API operates on the following entity types:

sites
An Alfresco site is a project area where you can share content and collaborate with other site members.
containers
A container is a folder or space in a site.
members
Members are the people who collaborate on a site.
people
People are the users of Alfresco. A person entity describes the user as they are known to Alfresco.
favoriteSites
The sites that a person has marked as favorite in Alfresco (Deprecated). Use the favorites entity and methods.
preferences
A person's preferences in Alfresco.
networks
A network is the group of users and sites that belong to an organization. You can find out specific network information or how it relates to a person.
activities
Activities describe any past activity in a site, for example creating an item of content, commenting on a node, liking an item of content.
nodes
A node is an overall term for an item of content or a folder.
comments
A person can comment on folders and individual items to give other users information or notes specific to that content.
tags
Any item of Alfresco content can be tagged.
ratings
A person can rate an item of content by liking it. They can also remove their like of an item of content.
favorites
A favorite describes an Alfresco entity that a person has marked as a favorite.
site membership requests
A site membership request describes a request for a person to join a site in Alfresco.
deployments
A deployment resource represents one file inside a deployment.
process definitions
A process definition is a description of an execution flow in terms of activities. New processes are created and started for a process definition.
processes
A process describes a running instance of a process definition.
tasks
A task describes one task for a human user.

A logical group of entities is termed a collection.

Parent topic: Getting started [74]

What does a request look like?

You call a method on the API by issuing an authenticated HTTP request with a URL.

The four HTTP methods are used in the following ways:

POST
is used to create a new entity in a collection of entities
GET
is used to retrieve information on a single entity or to retrieve a list of entities
PUT
is used to update a single entity
DELETE
is used to delete a single entity
  • Request URL format [81] Each request is a URL with a specific format. The format is dependent on the type of target repository.
  • API method format [82] The method itself consists of at least one entity type, or an entity type and an entity id, or concatenations of entity type and id pairs, optionally followed by HTTP parameters that filter the results.
  • Specifying the current user [83] When making an Alfresco REST API call, your application might not know the user ID of the currently authenticated user. You can use the string -me- to represent that user in request URLs, and PUT and POST request bodies.
  • HTTP Parameters [84] The API provides several HTTP parameters that you can append to any API method URL to filter the returned results. The parameters are optional and can be use in combination with each other. There are also parameters that are used in a specific API method. You will find those documented in the API reference. Parameters listed here are applicable to any API method.
Parent topic: Getting started [74]

Request URL format

Each request is a URL with a specific format. The format is dependent on the type of target repository.
  • Request URL format for Alfresco Cloud [85] Each request to Alfresco cloud is a URL with a specific format.
  • Request URL format for on-premise Alfresco [86] Each request to an Alfresco on-premise repository is a URL with a specific format.
Parent topic: What does a request look like? [77]

Request URL format for Alfresco Cloud

Each request to Alfresco cloud is a URL with a specific format.

This is an example of a request URL

   https://api.alfresco.com/example.com/public/alfresco/versions/1/sites

Each request URL is made up of the following elements:

  1. The protocol, which will always be https
  2. The hostname which will always be api.alfresco.com
  3. Your network ID, which in this case is yourcompany.com
  4. The fixed path element /public/
  5. The API you want to call. You call the workflow API for methods acting on workflow entities such as Deployments, Process Definitions, Processes, and Tasks. You call the alfresco API for methods acting on all other entities. In this case it is the Alfresco REST API identified as /public/alfresco.
  6. /versions/n. This specifies the version of the API you are using. n will always be 1.
  7. The API method itself. In this case the request is for all instances of the entity type sites.
Parent topic: Request URL format [81]

Request URL format for on-premise Alfresco

Each request to an Alfresco on-premise repository is a URL with a specific format.

This is an example of a request URL

   https://localhost:8080/alfresco/api/-default-/public/alfresco/versions/1/sites

Each request URL is made up of the following elements:

  1. The protocol, which will always be https
  2. The hostname. This will be the host and port number of your alfresco instance. So if your Alfresco instance is running on the local machine on port 8080 this will be localhost:8080.
  3. The fixed string -default-.
  4. The fixed path element /public/
  5. The API you want to call. You call the workflow API for methods acting on workflow entities such as Deployments, Process Definitions, Processes, and Tasks. You call the alfresco API for methods acting on all other entities. In this case it is the Alfresco REST API identified as /public/alfresco.
  6. /versions/n. This specifies the version of the API you are using. n will always be 1.
  7. The API method itself. In this case the request is for all instances of the entity type sites.
Parent topic: Request URL format [81]

API method format

The method itself consists of at least one entity type, or an entity type and an entity id, or concatenations of entity type and id pairs, optionally followed by HTTP parameters that filter the results.

For example the following API method will return a list of all site entities:

      sites

The entity type can be followed by an entity id, so for example the following API method will return on the site entity with the id fred-bloggs-yourcompany-com.

      sites/fred-bloggs-yourcompany-com

Entity types and ids can be concatenated, so for example the following API method will get site membership information for a specific person from a specific site

      sites/fred-bloggs-yourcompany-com/members/fred.bloggs@yourcompany.com
Parent topic: What does a request look like? [77]

Specifying the current user

When making an Alfresco REST API call, your application might not know the user ID of the currently authenticated user. You can use the string -me- to represent that user in request URLs, and PUT and POST request bodies.

For example, assuming the currently authenticated user is fred.bloggs@yourcompany.comthe following URL will return a list of site memberships for the currently authenticated user:

      https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/fred.bloggs@yourcompany.com/sites

Using the current user -me-, the following URL will return the same list of site memberships:

      https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/-me-/sites
Parent topic: What does a request look like? [77]

HTTP Parameters

The API provides several HTTP parameters that you can append to any API method URL to filter the returned results. The parameters are optional and can be use in combination with each other. There are also parameters that are used in a specific API method. You will find those documented in the API reference. Parameters listed here are applicable to any API method.
  • Pagination [87] As a developer, the REST API gives you control on how much of a returned collection you want to receive.
  • Sorting your returned objects [88] For some collections, you can control the order of the entities returned using the orderBy parameter.
  • Using SELECT to filter output [89] You might only be interested in a subset of properties in a returned entity or list of entities. You can use the SELECT parameter to restrict the returned properties.
  • Using SELECT to set properties [90] You can use the SELECT parameter to request a partial update of an object.
  • Using WHERE to restrict output [91] You can use the WHERE parameter to restrict the returned objects by a predicate. As in SQL, WHERE defines a boolean expression that all results must meet. It is made up of one or more conditions on properties, composed together using the logical connectors; AND, OR, and NOT. You can group expressions using parentheses.
  • Filtering properties [92] You might only be interested in a subset of properties in a returned entity. You can use the properties parameter to restrict the returned properties.
  • Including relations [93] Use the relations parameter to include one or more related entities in a single response.
Parent topic: What does a request look like? [77]

Pagination

As a developer, the REST API gives you control on how much of a returned collection you want to receive.

The collection returned by a simple request can contain a large number of entities. You can control the size of the list using pagination. So for example if a node with an id of e8680e58-0701-4b64-950d-66cce277fbc7 has 100 comments the following request will return a list of 100 entities:

      nodes/e8680e58-0701-4b64-950d-66cce277fbc7/comments
      

You can get just the first 10 items using the maxItems parameter:

      nodes/e8680e58-0701-4b64-950d-66cce277fbc7/comments?maxItems=10
      

You can then get the second page of 10 items using the skipCount parameter:

      nodes/e8680e58-0701-4b64-950d-66cce277fbc7/comments?maxItems=10&skipCount=10
      

A returned list object will always contain a pagination object which has the following properties:

skipCount
An integer describing how many entities exist in the collection before those included in this list.
maxItems
The maxItems parameter used to generate this list, or if there was no maxItems parameter the default value, 10.
count
The number of objects in the entries array.
hasMoreItems
A boolean value which is true if there are more entities in the collection beyond those in this response. A true value means request with a larger value for the skipCount or the maxItems parameter will return more entities.
totalItems
An integer describing the total number of entities in the collection. The API might not be able to determine this value, in which case this property will not be present.
Parent topic: HTTP Parameters [84]

Sorting your returned objects

For some collections, you can control the order of the entities returned using the orderBy parameter.

orderBy specifies the name of one or more comma separated properties. For each property you can optionally specify the order direction. Both of the following requests retrieve all site entities ordered by ascending name:

      GET ...alfresco/versions/1/sites?orderBy=name
      GET ...alfresco/versions/1/sites?orderBy=name%20ASC

The following request will return all site entities ordered by their createdAt property in descending order and then by their name property in ascending order:

      GET ...alfresco/versions/1/sites?orderBy=createdAt%20DESC,name

If the entity type does not support ordering or if any of the specified properties do not exist or cannot be used for sorting purposes then a 400 HTTP status code is returned. An error object is returned that states why the requested sort cannot be performed.

Parent topic: HTTP Parameters [84]

Using SELECT to filter output

You might only be interested in a subset of properties in a returned entity or list of entities. You can use the SELECT parameter to restrict the returned properties.

For example, the following API method would return all people, but only include the properties id, firstName, and lastName

GET .../versions/1/people?select=id,firstName,lastName
   
Parent topic: HTTP Parameters [84]

Using SELECT to set properties

You can use the SELECT parameter to request a partial update of an object.

For example, you might want to update just the state property of a task workflow object.

PUT .../tasks/02754d-32e0-4809-a722-8266e66e7b26?select=state
   

In the PUT request body you would write the following JSON to set the state to completed:

{
    "state" : "completed"
}
   
Parent topic: HTTP Parameters [84]

Using WHERE to restrict output

You can use the WHERE parameter to restrict the returned objects by a predicate. As in SQL, WHERE defines a boolean expression that all results must meet. It is made up of one or more conditions on properties, composed together using the logical connectors; AND, OR, and NOT. You can group expressions using parentheses.

Each condition contains one property name, comparison operator (=, >, <, >=, <=, BETWEEN, MATCHES, EXISTS), and depending on the specific comparison operator, the condition can include a value, a range of values, or a set of values. Ranges and sets of values are expressed using square brackets (‘[’ and ‘]’) and use the comma character (‘,’) as a delimiter. The following are practical examples:

GET .../public/alfresco/versions/1/sites?where=(type='public')
GET .../public/alfresco/versions/1/people?where=(age%20>=%2018)
GET .../public/alfresco/versions/1/sites?where=(creationDate%20BETWEEN%20['2012-01-01','2012-12-31'])
GET .../public/alfresco/versions/1/sites?where=(creationDate%20IN%20['2012-01-01','2012-01-03','2012-01-05','2012-01-07'])
GET .../public/alfresco/versions/1/sites?where=(name%20MATCHES%20'internal*')
GET .../public/alfresco/versions/1/people?where=(age%20>=%2018)%20AND%20(emailAddress%20MATCHES%20'*@example.com')
GET .../public/alfresco/versions/1/people?where=(age%20<%2018)%20OR%20(age%20>%2065)
GET .../public/alfresco/versions/1/people/fred.bloggs@yourcompany.com/favorites?where=(EXISTS(target/file))

Whitespace is allowed a WHERE clause. The operators BETWEEN, IN, MATCHES must have whitespace between the operand and the operator.

A 400 HTTP status code is returned when a restriction cannot be applied as requested. The "error" object returned states why the requested restriction could not be performed as requested.

Parent topic: HTTP Parameters [84]

Filtering properties

You might only be interested in a subset of properties in a returned entity. You can use the properties parameter to restrict the returned properties.

The properties parameter is a comma-separated list of property names:-

properties=property1,property2...
For example if you invoked the following API method using the HTTP GET method:
         sites
Alfresco would return a list of site objects each with four properties; id, title, visibility, description. Your application might only interested in say two properties, title and description. You can filter the returned site objects like this:
         sites?properties=title,description
The collection returned will look like this:
{
  "list" : {
    "pagination" : {
      "count" : 2,
      "hasMoreItems" : false,
      "totalItems" : 2,
      "skipCount" : 0,
      "maxItems" : 100
    },
    "entries" : [ {
      "entry" : {
        "title" : "Test Site",
        "description" : "A site for testing"
      }
    }, {
      "entry" : {
        "title" : "Fred Bloggs's Home",
        "description" : "Fred Blogs's private home site."
      }
    } ]
  }
}

Each entry in the list is a site object filtered to include just the title and description properties.

Parent topic: HTTP Parameters [84]

Including relations

Use the relations parameter to include one or more related entities in a single response.
The entity types in Alfresco are organized in a tree structure. So for example, the sites entity has two children, containers and members. You can reduce network traffic by using the relations parameter to include one or more child entities in a single response. The parameter is a comma separated list of entity types
relations=entity1,entity2,...
If you you invoked the following API method using the HTTP GET method:
         sites?relations=containers,members
Alfresco returns a list of site objects, and retrieves the child container and member objects for each site in the returned collection, and returns them in a peer object of the entry object containing the site. Here is an example of the returned JSON:
{
  "list" : {
    "pagination" : {
      "count" : 2,
      "hasMoreItems" : false,
      "totalItems" : 2,
      "skipCount" : 0,
      "maxItems" : 100
    },
    "entries" : [ {
      "entry" : {
        "id" : "test",
        "title" : "test",
        "visibility" : "PUBLIC"
      },
      "relations" : {
        "containers" : {
          "list" : {
            "pagination" : {
              "count" : 1,
              "hasMoreItems" : false,
              "totalItems" : 1,
              "skipCount" : 0,
              "maxItems" : 100
            },
            "entries" : [ {
              "entry" : {
                "id" : "5b0d84c8-0749-4fee-bd4f-9134d6990e5b",
                "folderId" : "documentLibrary"
              }
            } ]
          }
        },
        "members" : {
          "list" : {
            "pagination" : {
              "count" : 2,
              "hasMoreItems" : false,
              "skipCount" : 0,
              "maxItems" : 100
            },
            "entries" : [ {
              "entry" : {
                "id" : "fred-bloggs@yourcompany.com",
                "person" : {
                  "enabled" : true,
                  "lastName" : Bloggs",
                  "id" : "fred.bloggs@yourcompany.com",
                  "email" : "fred.bloggs@yourcompany.com",
                  "company" : {
                  },
                  "firstName" : "Fred"
                },
                "role" : "SiteManager"
              }
            }, {
              "entry" : {
                "id" : "joe-bloggs@yourcompany.com",
                "person" : {
                  "enabled" : true,
                  "lastName" : "Bloggs",
                  "id" : "joe.bloggs@yourcompany.com",
                  "email" : "joe.bloggs@yourcompany.com",
                  "company" : {
                  },
                  "firstName" : "Joe"
                },
                "role" : "SiteConsumer"
              }
            } ]
          }
        }
      }
    }, {
      "entry" : {
        "id" : "fred-bloggs-yourcompany-com",
        "title" : "Fred Bloggs's Home",
        "visibility" : "PRIVATE",
        "description" : "Fred Bloggs's private home site."
      },
      "relations" : {
        "containers" : {
          "list" : {
            "pagination" : {
              "count" : 1,
              "hasMoreItems" : false,
              "totalItems" : 1,
              "skipCount" : 0,
              "maxItems" : 100
            },
            "entries" : [ {
              "entry" : {
                "id" : "289f9030-eef6-421f-bdb6-1e6d2da165b6",
                "folderId" : "documentLibrary"
              }
            } ]
          }
        },
        "members" : {
          "list" : {
            "pagination" : {
              "count" : 1,
              "hasMoreItems" : false,
              "skipCount" : 0,
              "maxItems" : 100
            },
            "entries" : [ {
              "entry" : {
                "id" : "fred.bloggs@alfresco.com",
                "person" : {
                  "enabled" : true,
                  "lastName" : "Raff",
                  "location" : "Somewhere",
                  "avatarId" : "85d45e64-eb02-44e1-b989-dbf571ab0704",
                  "instantMessageId" : "fredb",
                  "googleId" : "fredb@gmail.com",
                  "id" : "fred.bloggs@alfresco.com",
                  "skypeId" : "fredb",
                  "email" : "fred.bloggs@alfresco.com",
                  "description" : "Been with company for n years",
                  "company" : {
                    "organization" : "Your Company",
                    "address1" : "Some place",
                    "address2" : "Somewhere",
                    "postcode" : "Z99 9Z9",
                    "telephone" : "01234 123456",
                    "fax" : "01234 123457",
                    "email" : "info@yourcompany.com"
                  },
                  "firstName" : "Fred",
                  "telephone" : "01234 567890",
                  "jobTitle" : "VP of something",
                  "mobile" : "07777 567890"
                },
                "role" : "SiteManager"
              }
            } ]
          }
        }
      }
    } ]
  }
}
Parent topic: HTTP Parameters [84]

API method format

The method itself consists of at least one entity type, or an entity type and an entity id, or concatenations of entity type and id pairs, optionally followed by HTTP parameters that filter the results.

For example the following API method will return a list of all site entities:

      sites

The entity type can be followed by an entity id, so for example the following API method will return on the site entity with the id fred-bloggs-yourcompany-com.

      sites/fred-bloggs-yourcompany-com

Entity types and ids can be concatenated, so for example the following API method will get site membership information for a specific person from a specific site

      sites/fred-bloggs-yourcompany-com/members/fred.bloggs@yourcompany.com
Parent topic: What does a request look like? [77]

What does a response look like?

All responses are JSON objects. The format of the response object depends on the request. The object can contain an entry object, an entry and a relations object, a list object, or an error object. Note that if a property or an entire object has no value, then it is not returned in the parent object.

Entry object

An API call which returns information about a single entity will return in an entry object. Here is an example response from a request for information on a site with a specific site-id:

{
   "entry":{
      "title":"Fred Blogg's Home",
      "description":"Fred Blogg's private home site.",
      "visibility":"PRIVATE",
      "id":"fred-bloggs-yourcompany-com"
   }
}
Note that the entry object's properties are variable and depend on the API call made.

Relations object

If an API method specifies the relations [94] parameter, then any included children will be returned in a relations object. Here is an example of a relations object:
      
      "relations" : {
        "containers" : {
          "list" : {
            "pagination" : {
              "count" : 1,
              "hasMoreItems" : false,
              "totalItems" : 1,
              "skipCount" : 0,
              "maxItems" : 100
            },
            "entries" : [ {
              "entry" : {
                "id" : "b9f8c112-66b9-4733-a77d-46e61c395706",
                "folderId" : "documentLibrary"
              }
            } ]
          }
        }
      }

List object

An API call which returns information about a several entities will return in a list object. A list will always have two properties, pagination and entries. The pagination object is described in Pagination [95]. The entries object is an array of entry objects. Here is an example response from a request for information on all sites:

{
   "list":{
      "pagination":{
         "count":1,
         "hasMoreItems":false,
         "totalItems":1,
         "skipCount":0,
         "maxItems":10
      },
      "entries":[
         {
            "entry":{
               "title":"Fred Blogg's Home",
               "description":"Fred Blogg's private home site.",
               "visibility":"PRIVATE",
               "id":"fred-bloggs-yourcompany-com"
            }
         }
      ]
   }
}

Error object

An API call which fails for some reason will return an error object containing these properties:-

errorKey
A unique string identifier
statusCode
The HTTP status code for the type of error. The same code is returned in the HTTP response.
briefSummary
description of the cause of the error
descriptionUrl
A URL to a detailed description of the error
stackTrace
If an exception was thrown, this contains the Java stack trace as a string
additionalState
This optional property if it is present contains a free-form JSON object with additional information on the state of the server and/or the request
Here is an example of an error object from a request for a specific site-id that does not exist on the server:
 {
  "error" : {
    "statusCode" : 404,
    "briefSummary" : "07220488 The entity with id: frank-bloggs-yourcompany-com was not found",
    "stackTrace" : "[org.alfresco.rest.api.impl.SitesImpl.validateSite(SitesImpl.java:111), org.alfresco.rest.api.impl.SitesImpl.getSite(SitesImpl.java:137), ... ,java.lang.Thread.run(Thread.java:662)]",
    "descriptionURL" : "http://someError?id=null"
  }
}
Note that the stack trace has been truncated for this example.
  • Date and time format [96] Dates in the JSON response object are encoded as character strings using the extended format defined by ISO standard 8601:2004. They are always in UTC.
Parent topic: Getting started [74]

Date and time format

Dates in the JSON response object are encoded as character strings using the extended format defined by ISO standard 8601:2004. They are always in UTC.

You can find the ISO standard 8601:2004 here [97]. Here is an example of what to expect in a date/time string in a JSON response:

"createdAt" : "2012-07-20T21:46:09.659+0000"
Parent topic: What does a response look like? [78]

Using HTTP OPTIONS to get entity metadata

The Alfresco REST API supports the use of the HTTP OPTIONS method to retrieve structured information on the methods available on an entity and its relations.

Method

For example, to get information on the nodes entity, the methods you can use on it, its children (or relations), and the methods you can use on those, you can invoke the following API method using the HTTP OPTIONS method:-

nodes

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/nodes

Response

  • If the request is successful an HTTP OK is returned (status 200).

Example response body

{
  "list" : {
    "pagination" : {
      "count" : 4,
      "hasMoreItems" : false,
      "totalItems" : 4,
      "skipCount" : 0,
      "maxItems" : 100
    },
    "entries" : [ {
      "entry" : {
        "metaData" : {
          "uniqueId" : "/nodes",
          "type" : "ENTITY"
        }
      }
    }, {
      "entry" : {
        "metaData" : {
          "uniqueId" : "/nodes/{entityId}/tags",
          "type" : "RELATIONSHIP",
          "operations" : [ {
            "httpMethod" : "POST",
            "title" : "Add the tag to the node with id 'nodeId'.",
            "parameters" : [ {
              "name" : "entityId",
              "required" : true,
              "title" : "The unique id of the entity being addressed",
              "description" : "The unique id must be a String. It is returned as an 'id' from the entity",
              "dataType" : "java.lang.String",
              "allowMultiple" : false,
              "paramType" : "TEMPLATE"
            }, {
              "name" : "TAG",
              "required" : true,
              "title" : "The entity",
              "description" : "What shall we say?",
              "dataType" : "org.alfresco.rest.api.model.Tag",
              "allowMultiple" : false,
              "paramType" : "OBJECT"
            } ]
          }, {
            "httpMethod" : "GET",
            "title" : "A paged list of tags on the node 'nodeId'.",
            "parameters" : [ {
              "name" : "entityId",
              "required" : true,
              "title" : "The unique id of the entity being addressed",
              "description" : "The unique id must be a String. It is returned as an 'id' from the entity",
              "dataType" : "java.lang.String",
              "allowMultiple" : false,
              "paramType" : "TEMPLATE"
            } ]
          }, {
            "httpMethod" : "DELETE",
            "title" : "Remove the tag from the node with id 'nodeId'.",
            "parameters" : [ {
              "name" : "entityId",
              "required" : true,
              "title" : "The unique id of the entity being addressed",
              "description" : "The unique id must be a String. It is returned as an 'id' from the entity",
              "dataType" : "java.lang.String",
              "allowMultiple" : false,
              "paramType" : "TEMPLATE"
            } ]
          } ],
          "parentResource" : "/nodes"
        }
      }
    }, {
      "entry" : {
        "metaData" : {
          "uniqueId" : "/nodes/{entityId}/ratings",
          "type" : "RELATIONSHIP",
          "operations" : [ {
            "httpMethod" : "POST",
            "title" : "Apply a rating for node 'nodeId'.",
            "parameters" : [ {
              "name" : "entityId",
              "required" : true,
              "title" : "The unique id of the entity being addressed",
              "description" : "The unique id must be a String. It is returned as an 'id' from the entity",
              "dataType" : "java.lang.String",
              "allowMultiple" : false,
              "paramType" : "TEMPLATE"
            }, {
              "name" : "NODERATING",
              "required" : true,
              "title" : "The entity",
              "description" : "What shall we say?",
              "dataType" : "org.alfresco.rest.api.model.NodeRating",
              "allowMultiple" : false,
              "paramType" : "OBJECT"
            } ]
          }, {
            "httpMethod" : "GET",
            "title" : "A paged list of ratings for node 'nodeId'.",
            "parameters" : [ {
              "name" : "entityId",
              "required" : true,
              "title" : "The unique id of the entity being addressed",
              "description" : "The unique id must be a String. It is returned as an 'id' from the entity",
              "dataType" : "java.lang.String",
              "allowMultiple" : false,
              "paramType" : "TEMPLATE"
            } ]
          }, {
            "httpMethod" : "GET",
            "title" : "Get the rating with id 'ratingSchemeId' for node 'nodeId'.",
            "parameters" : [ {
              "name" : "entityId",
              "required" : true,
              "title" : "The unique id of the entity being addressed",
              "description" : "The unique id must be a String. It is returned as an 'id' from the entity",
              "dataType" : "java.lang.String",
              "allowMultiple" : false,
              "paramType" : "TEMPLATE"
            }, {
              "name" : "relationshipId",
              "required" : true,
              "title" : "The unique id of the entity relationship being addressed",
              "description" : "The unique id must be a String. It is only valid in the scope of the relationship",
              "dataType" : "java.lang.String",
              "allowMultiple" : false,
              "paramType" : "TEMPLATE"
            } ]
          }, {
            "httpMethod" : "DELETE",
            "title" : "Missing @WebApiDescription annotation",
            "description" : "This method should be annotated with @WebApiDescription",
            "parameters" : [ {
              "name" : "entityId",
              "required" : true,
              "title" : "The unique id of the entity being addressed",
              "description" : "The unique id must be a String. It is returned as an 'id' from the entity",
              "dataType" : "java.lang.String",
              "allowMultiple" : false,
              "paramType" : "TEMPLATE"
            } ]
          } ],
          "parentResource" : "/nodes"
        }
      }
    }, {
      "entry" : {
        "metaData" : {
          "uniqueId" : "/nodes/{entityId}/comments",
          "type" : "RELATIONSHIP",
          "operations" : [ {
            "httpMethod" : "POST",
            "title" : "Create a comment for the node 'nodeId'.",
            "parameters" : [ {
              "name" : "entityId",
              "required" : true,
              "title" : "The unique id of the entity being addressed",
              "description" : "The unique id must be a String. It is returned as an 'id' from the entity",
              "dataType" : "java.lang.String",
              "allowMultiple" : false,
              "paramType" : "TEMPLATE"
            }, {
              "name" : "COMMENT",
              "required" : true,
              "title" : "The entity",
              "description" : "What shall we say?",
              "dataType" : "org.alfresco.rest.api.model.Comment",
              "allowMultiple" : false,
              "paramType" : "OBJECT"
            } ]
          }, {
            "httpMethod" : "GET",
            "title" : "Returns a paged list of comments for the document/folder identified by nodeId, sorted chronologically with the newest first.",
            "parameters" : [ {
              "name" : "entityId",
              "required" : true,
              "title" : "The unique id of the entity being addressed",
              "description" : "The unique id must be a String. It is returned as an 'id' from the entity",
              "dataType" : "java.lang.String",
              "allowMultiple" : false,
              "paramType" : "TEMPLATE"
            } ]
          }, {
            "httpMethod" : "PUT",
            "title" : "Updates the comment with the given id.",
            "parameters" : [ {
              "name" : "entityId",
              "required" : true,
              "title" : "The unique id of the entity being addressed",
              "description" : "The unique id must be a String. It is returned as an 'id' from the entity",
              "dataType" : "java.lang.String",
              "allowMultiple" : false,
              "paramType" : "TEMPLATE"
            }, {
              "name" : "relationshipId",
              "required" : true,
              "title" : "The unique id of the entity relationship being addressed",
              "description" : "The unique id must be a String. It is only valid in the scope of the relationship",
              "dataType" : "java.lang.String",
              "allowMultiple" : false,
              "paramType" : "TEMPLATE"
            }, {
              "name" : "COMMENT",
              "required" : true,
              "title" : "The entity",
              "description" : "What shall we say?",
              "dataType" : "org.alfresco.rest.api.model.Comment",
              "allowMultiple" : false,
              "paramType" : "OBJECT"
            } ]
          }, {
            "httpMethod" : "DELETE",
            "title" : "Delete the comment with the given commentNodeId.",
            "parameters" : [ {
              "name" : "entityId",
              "required" : true,
              "title" : "The unique id of the entity being addressed",
              "description" : "The unique id must be a String. It is returned as an 'id' from the entity",
              "dataType" : "java.lang.String",
              "allowMultiple" : false,
              "paramType" : "TEMPLATE"
            } ]
          } ],
          "parentResource" : "/nodes"
        }
      }
    } ]
  }
}
Parent topic: Getting started [74]

Items and packages

When a process is created, a list of items can be given as an input parameter. The items are a list of nodeids. A nodeId is a nodeRef with the workspace://SpacesStore prefix removed. During creation of the process, a new package node is created in the repository. All provided items are associated with that package node.

The package nodeid is stored as a variable in the process with variable name 'package' as a String. When retrieving the process details, the list of 'items' is generated by collecting all the items that are associated with the package node.

Parent topic: Getting started [74]

API reference

This reference material has a description of each of the Alfresco entities operated on by the REST API, and of the methods that are available for each of those entities.
  • Networks [98]A network is the group of users and sites that belong to an organization. Networks are organized by email domain. When a user signs up for an Alfresco account, their email domain becomes their "Home Network".
  • Sites [99]An Alfresco site is a project area where you can share content and collaborate with other site members. There are API calls for getting a list of sites, and for getting information on a single site.
  • Site membership requests [100]A site membership request describes a request for a person to join a site in Alfresco. There are API calls for getting a list of a user's site membership requests, for joining a site, for modifying a request to join a site, and for deleting a site membership request.
  • People [101]People are the users of Alfresco. A person entity describes the user as they are known to Alfresco. There are API methods to get the sites a person is a member of, to get the the details of a person, their favorite sites, preferences, and networks they are a member of. Methods are also available to process activities related to a person.
  • Tags [102]Any item of Alfresco content can be tagged. API methods exist to return a list of tags currently being used in a network.
  • Nodes [103]A node is an overall term for an item of content or a folder. API methods are available to work with a node's comments, tags, and ratings.
  • Favorites [104]A favorite describes an Alfresco entity that a person has marked as a favorite. There are API calls for getting a list of a user's favorites, for getting a specific favorite, for adding a favorite, and for deleting a favorite.
  • Deployments [105]A deployment resource represents one file inside a deployment.
  • Process definitions [106]A process definition is a description of an execution flow in terms of activities. New processes are created and started for a process definition.
  • Processes [107]A process describes a running instance of a process definition.
  • Tasks [108]A task describes one task for a human user.
Parent topic: Alfresco REST API [8]

Networks

A network is the group of users and sites that belong to an organization. Networks are organized by email domain. When a user signs up for an Alfresco account, their email domain becomes their "Home Network".

Network object

Property Type JSON Type Description
id id string This network's unique id
homeNetwork boolean boolean Is this the home network?
isEnabled boolean boolean Is this network active?
createdAt Date Time String The date time this network was created
quotas array array Limits and usage of each quota. A network will have quotas for File space, the number of sites in the network, the number of people in the network, and the number of network administrators.
paidNetwork boolean boolean Is this a paid network?
subscriptionLevel enumerated string string The type of subscription for this network. Possible values are Free, Standard, and Enterprise

Example of a network object

  "entry" : {
    "id" : "yourcompany.com",
    "createdAt" : "2012-06-07T10:22:28.000+0000",
    "quotas" : [ {
      "limit" : 52428800,
      "id" : "fileUploadQuota"
    }, {
      "limit" : 5368709120,
      "usage" : 149102356,
      "id" : "fileQuota"
    }, {
      "limit" : -1,
      "usage" : 29,
      "id" : "siteCountQuota"
    }, {
      "limit" : -1,
      "usage" : 33,
      "id" : "personCountQuota"
    }, {
      "limit" : -1,
      "usage" : 15,
      "id" : "personInternalOnlyCountQuota"
    }, {
      "limit" : 0,
      "usage" : 0,
      "id" : "personNetworkAdminCountQuota"
    } ],
    "paidNetwork" : false,
    "isEnabled" : true,
    "subscriptionLevel" : "Free"
  }

List order

Lists of these entities are returned ordered by ascending id.

  • Get a specific network [109] Use this to get information for a specific network.
  • Get networks for the current authenticated person [110] Use this to get a list of networks for the current authenticated user.
Parent topic: API reference [75]

Get a specific network

Use this to get information for a specific network.

Method

Using the HTTP GET method:

networks/<networkId>

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/networks/yourcompany.com

Response

  • If the networkId does not exist in this network, an HTTP Not Found (status 404) is returned.
  • If the request is successful an HTTP OK is returned (status 200).

Example response body

{
    "id" : "yourcompany.com",
    "createdAt" : "2012-06-07T10:22:28.000+0000",
    "quotas" : [ {
      "limit" : 52428800,
      "id" : "fileUploadQuota"
    }, {
      "limit" : 5368709120,
      "usage" : 149102356,
      "id" : "fileQuota"
    }, {
      "limit" : -1,
      "usage" : 29,
      "id" : "siteCountQuota"
    }, {
      "limit" : -1,
      "usage" : 33,
      "id" : "personCountQuota"
    }, {
      "limit" : -1,
      "usage" : 15,
      "id" : "personInternalOnlyCountQuota"
    }, {
      "limit" : 0,
      "usage" : 0,
      "id" : "personNetworkAdminCountQuota"
    } ],
    "paidNetwork" : false,
    "isEnabled" : true,
    "subscriptionLevel" : "Free"
  }
Parent topic: Networks [98]

Get networks for the current authenticated person

Use this to get a list of networks for the current authenticated user.

Method

Using the HTTP GET method on the root URL.

Example request URL

https://api.alfresco.com/

Response

  • If the request is successful an HTTP OK is returned (status 200).

Example response body

{
  "list" : {
    "pagination" : {
      "count" : 1,
      "hasMoreItems" : false,
      "totalItems" : 1,
      "skipCount" : 0,
      "maxItems" : 100
    },
    "entries" : [ {
      "entry" : {
          "id" : "yourcompany.com",
          "homeNetwork" : true,
          "createdAt" : "2012-06-07T10:22:28.000+0000",
          "quotas" : [ {
            "limit" : 52428800,
            "id" : "fileUploadQuota"
          }, {
            "limit" : 5368709120,
            "usage" : 149102356,
            "id" : "fileQuota"
          }, {
            "limit" : -1,
            "usage" : 29,
            "id" : "siteCountQuota"
          }, {
            "limit" : -1,
            "usage" : 33,
            "id" : "personCountQuota"
          }, {
            "limit" : -1,
            "usage" : 15,
            "id" : "personInternalOnlyCountQuota"
          }, {
            "limit" : 0,
            "usage" : 0,
            "id" : "personNetworkAdminCountQuota"
          } ],
          "paidNetwork" : false,
          "isEnabled" : true,
          "subscriptionLevel" : "Free"
        }
      }
    ]
  }
}
Parent topic: Networks [98]

Sites

An Alfresco site is a project area where you can share content and collaborate with other site members. There are API calls for getting a list of sites, and for getting information on a single site.

Site object

Property Type JSON Type Description
title string string The site's name (used in the site's list and on the sites dashboard).
description string string The description of the site
visibility string string The visibility of the site, PRIVATE, PUBLIC, or MODERATED.
id id string The site identifier. An opaque string which uniquely identifies this site.

Example of a site object

{
      "title":"Fred Bloggs's Home",
      "description":"Fred Bloggs's private home site.",
      "visibility":"PRIVATE",
      "id":"fred-bloggs-yourcompany-com"
}        
         
  • Methods [111] Methods for site objects.
  • Containers [112]A container is a folder or space in a site. There are API calls for getting a list of top-level containers in a site, and for getting a container by its containerId.
  • Members [113]Members are the people who collaborate on a site. There are API calls for getting a list of the members of the site, getting the site membership information for a person, adding a person to a site, and updating a person's site membership information.
Parent topic: API reference [75]

Methods

Methods for site objects.
  • Get a list of sites [114] Use this to get a list of sites in your network.
  • Get information for a site [115] Use this to get a site object for a specific site.
Parent topic: Sites [99]

Get a list of sites

Use this to get a list of sites in your network.

Method

Using the HTTP GET method:

sites

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/sites

Response

  • If the request is successful an HTTP OK is returned (status 200).

Example response body

{
   "list":{
      "pagination":{
         "count":1,
         "hasMoreItems":false,
         "totalItems":1,
         "skipCount":0,
         "maxItems":10
      },
      "entries":[
         {
            "entry":{
               "title":"Fred Blogg's Home",
               "description":"Fred Blogg's private home site.",
               "visibility":"PRIVATE",
               "id":"fred-bloggs-yourcompany-com"
            }
         }
      ]
   }
}
Parent topic: Methods [111]

Get information for a site

Use this to get a site object for a specific site.

Method

Using the HTTP GET method:

sites/<siteId>

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/sites/fred-bloggs-yourcompany-com

Response

  • If the siteId does not exist in this network, an HTTP Not Found (status 404) is returned.
  • If the request is successful an HTTP OK is returned (status 200).

Example response body

{
      "entry":{
         "title":"Fred Blogg's Home",
         "description":"Fred Blogg's private home site.",
         "visibility":"PRIVATE",
         "id":"fred-bloggs-yourcompany-com"
      }
}
Parent topic: Methods [111]

Containers

A container is a folder or space in a site. There are API calls for getting a list of top-level containers in a site, and for getting a container by its containerId.

Container object

Property Type JSON Type Description
folderId string string The container's descriptive name.
id id string The container identifier. An opaque string which uniquely identifies this container.

Example of a container object

{
     "folderId":"documentLibrary",
     "id":"7fb6c69b-f462-429a-a168-87762f660c65"
}

List order

Lists of these entities are returned ordered by ascending folderId.

  • Methods [116] Methods for container objects.
Parent topic: Sites [99]

Methods

Methods for container objects.
  • Get a list of containers [117] Use this to get a list of the top-level containers object for a specific site.
  • Get information for a container [118] Use this to get the container object for a specific container id.
Parent topic: Containers [112]

Get a list of containers

Use this to get a list of the top-level containers object for a specific site.

Note: Only containers that have the st:siteContainer aspect are returned.

Method

Using the HTTP GET method:-

sites/<siteId>/containers

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/sites/fred-bloggs-yourcompany-com/containers

Response

  • If the siteId does not exist in this network, an HTTP Not Found (status 404) is returned.
  • If the request is successful an HTTP OK is returned (status 200).

Example response body

{
   "list":{
      "pagination":{
         "count":1,
         "hasMoreItems":false,
         "skipCount":0,
         "maxItems":100
      },
      "entries":[
         {
            "entry":{
               "folderId":"documentLibrary",
               "id":"7fb6c69b-f462-429a-a168-87762f660c65"
            }
         }
      ]
   }
}
Parent topic: Methods [116]

Get information for a container

Use this to get the container object for a specific container id.

Method

Using the HTTP GET method:

sites/<siteId>/containers/<containerId>

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/sites/fred-bloggs-yourcompany-com/containers/7fb6c69b-f462-429a-a168-87762f660c65

Response

  • If the siteId or containerId do not exist in this network, an HTTP Not Found (status 404) is returned.
  • If the request is successful an HTTP OK is returned (status 200).

Example response body

{
      "entry":{
         "folderId":"documentLibrary",
         "id":"7fb6c69b-f462-429a-a168-87762f660c65"
      }
}
Parent topic: Methods [116]

Members

Members are the people who collaborate on a site. There are API calls for getting a list of the members of the site, getting the site membership information for a person, adding a person to a site, and updating a person's site membership information.

Member object

Property Type JSON Type Description
role enumerated string string The member's role. Possible values are SiteManager, SiteContributor, and SiteCollaborator.
id email id string The person's personId - the email address with which the person registered
person [119] person object object An embedded person object describing this member.

Example of a member object

{
      "role":"SiteManager",
      "id":"fred.bloggs@yourcompany.com",
      "person":{
            "enabled":true,
            "lastName":"Bloggs",
            "location":"Somewhere",
            "avatarId":"6be34757-5764-4a4b-a86c-f5f0878b9700",
            "instantMessageId":"fred",
            "googleId":"fred@google.com",
            "id":"fred.bloggs@yourcompany.com",
            "skypeId":"fredbloggs",
            "email":"fred.bloggs@yourcompany.com",
            "description":"a person",
            "company":{
               "organization":"alfresco",
               "address1":"somewhere",
               "postcode":"fff fff",
               "telephone":"01234 456789",
               "fax":"01234 456789",
               "email":"info@yourcompany.com"
            },
            "firstName":"Fred",
            "telephone":"01234 99229922",
            "jobTitle":"Chief Bottle Washer",
            "mobile":"07777 012345"
      }
  }

List order

Lists of these entities are returned ordered by ascending (lastName, firstName, role).

  • Methods [120] Methods for Member objects.
Parent topic: Sites [99]

Methods

Methods for Member objects.
  • Get a list of members [121] Use this to get a list of members of a specific site.
  • Get information for a member of a site [122] Use this to get information for a specific member of a specific site.
  • Create a member of a site [123] Use this to create a new member of a specific site using a specific personId.
  • Update a member of a site [124] Use this to update an existing member of a site.
  • Remove a member of a site [125] Use this to remove a person's membership of a specific site.
Parent topic: Members [113]

Get a list of members

Use this to get a list of members of a specific site.

Method

Using the HTTP GET method:

sites/<siteId>/members

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/sites/fred-bloggs-yourcompany-com/members

Response

  • If the siteId does not exist in this network, an HTTP Not Found (status 404) is returned.
  • If the request is successful an HTTP OK is returned (status 200).

Example response body

{
   "list":{
      "pagination":{
         "count":1,
         "hasMoreItems":false,
         "totalItems":-1,
         "skipCount":0,
         "maxItems":10
      },
      "entries":[
         {
            "entry":{
               "role":"SiteManager",
               "id":"fred.bloggs@yourcompany.com",
               "person":{
                     "enabled":true,
                     "lastName":"Bloggs",
                     "location":"Somewhere",
                     "avatarId":"6be34757-5764-4a4b-a86c-f5f0878b9700",
                     "instantMessageId":"fred",
                     "googleId":"fred@google.com",
                     "id":"fred.bloggs@yourcompany.com",
                     "skypeId":"fredbloggs",
                     "email":"fred.bloggs@yourcompany.com",
                     "description":"a person",
                     "company":{
                        "organization":"alfresco",
                        "address1":"somewhere",
                        "postcode":"fff fff",
                        "telephone":"01234 456789",
                        "fax":"01234 456789",
                        "email":"info@yourcompany.com"
                     },
                     "firstName":"Fred",
                     "telephone":"01234 99229922",
                     "jobTitle":"Chief Bottle Washer",
                     "mobile":"07777 012345"
               }
         }
      ]
   }
}
Parent topic: Methods [120]

Get information for a member of a site

Use this to get information for a specific member of a specific site.

Method

Using the HTTP GET method:

sites/<siteId>/members/<personId>

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/sites/fred-bloggs-yourcompany-com/members/fred.bloggs@yourcompany.com

Response

  • If the siteId or personId do not exist in this network, an HTTP Not Found (status 404) is returned.
  • If the request is successful an HTTP OK is returned (status 200).

Example response body

   {
      "entry":{
         "role":"SiteManager",
         "id":"fred.bloggs@yourcompany.com",
         "person":{
               "enabled":true,
               "lastName":"Bloggs",
               "location":"Somewhere",
               "avatarId":"6be34757-5764-4a4b-a86c-f5f0878b9700",
               "instantMessageId":"fred",
               "googleId":"fred@google.com",
               "id":"fred.bloggs@yourcompany.com",
               "skypeId":"fredbloggs",
               "email":"fred.bloggs@yourcompany.com",
               "description":"a person",
               "company":{
                  "organization":"alfresco",
                  "address1":"somewhere",
                  "postcode":"fff fff",
                  "telephone":"01234 456789",
                  "fax":"01234 456789",
                  "email":"info@yourcompany.com"
               },
               "firstName":"Fred",
               "telephone":"01234 99229922",
               "jobTitle":"Chief Bottle Washer",
               "mobile":"07777 012345"
         }
   }
Parent topic: Methods [120]

Create a member of a site

Use this to create a new member of a specific site using a specific personId.

Method

Using the HTTP POST method:-

sites/<siteId>/members

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/sites/fred-bloggs-yourcompany-com/members

POST body

Property Type JSON Type Description
id email id string The id of the person.
role enumerated type string The role for this person. Possible values are SiteConsumer, SiteCollaborator, SiteContributor and SiteManager.

Example POST body

{
  "id": "joe.bloggs@yourcompany.com",
  "role": "SiteConsumer"
}

Response

  • If the siteId or personId do not exist in this network, an HTTP Not Found (status 404) is returned.
  • If the request is successful a HTTP CREATED response (status 201) is returned.

Example response body

{
   "entry":{
      "id":"fred.bloggs@yourcompany.com",
      "role":"SiteConsumer"
      }
}
Parent topic: Methods [120]

Update a member of a site

Use this to update an existing member of a site.

Method

Using the HTTP PUT method:

sites/<siteId>/members/<personId>

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/sites/fred-bloggs-yourcompany-com/members/joe.bloggs@yourcompany.com

PUT body

Property Type JSON Type Description
role enumerated type string The new role for this person. Possible values are SiteConsumer, SiteCollaborator, SiteContributor, and SiteManager.

Example PUT body

{
  'role': 'SiteManager'
}

Response

  • If siteId, personId, or role do not exist an HTTP Not Found (status 404) is returned with a Not Found.
  • If the personId supplied is not a member of the site an HTTP Bad Request (status 400) is returned with an Bad Request.
  • If the request is successful an HTTP OK is returned (status 200).

Example response body

{
   "entry":{
      "id":"joe.bloggs@yourcompany.com",
      "role":"SiteManager"
      }
}
Parent topic: Methods [120]

Remove a member of a site

Use this to remove a person's membership of a specific site.

Method

Using the HTTP DELETE method:

sites/<siteId>/members/<personId>

A personID is always the email address that they registered with

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/sites/fred-bloggs-yourcompany-com/members/fred.bloggs@yourcompany.com/

Response

  • If the siteId or personId do not exist in this network, an HTTP Not Found (status 404) is returned.
  • If the person is not a member of the site, an Bad Request (status 400) is returned.
  • If the request is successful an HTTP No Content is returned (status 204), and the person's site membership is removed.
Parent topic: Methods [120]

Site membership requests

A site membership request describes a request for a person to join a site in Alfresco. There are API calls for getting a list of a user's site membership requests, for joining a site, for modifying a request to join a site, and for deleting a site membership request.

Site membership request object

Property Type JSON Type Description
id string string The site id.
site object object The target site.
message string string An optional message from the requester explaining why access is being requested.
createdAt date time string The time this site membership request was made.
modifiedAt date time string The time this site membership request was modified.

Example of a site membership request object

 
{                                            
   "entry": {                                
     "id" : "the-secret-site",
     "createdAt" : "2012-07-20T21:46:09.659+0000",
     "modifiedAt" : "2012-07-20T21:46:09.659+0000",
     "message" : "I need this access for national security reasons!",
     "site": {
         "id" : "the-secret-site",
         "guid" : "8ac18731-601b-4bb4-be1a-cd5d252cce3f",
         "title" : "The Company’s Secret Site",
         "visibility" : "MODERATED",
         "description" : "The Company’s Secret Site"               
         }
     }
 } 

List order

Lists of these entities are returned ordered by ascending site title.

  • Get a list of site membership requests [126] Use this to get a list of site membership requests for a specific person.
  • Join a site [127] Use this to join a site. If the site is public, the request is implicitly approved and the user is then a member of the site. If the site is moderated, then a site membership request is created, awaiting action by the site manager.
  • Modifying a site membership request [128] Use this to modify an existing request to join a site. For example, if a user requested access to a site but the site manager has not yet acted on the request, the user can update the request with a message providing more details on why access was needed or to remind the site manager that a request is pending. The modifiedAt property records the modification date and time.
  • Delete a site membership request [129] Use this to remove a site membership request.
Parent topic: API reference [75]

Get a list of site membership requests

Use this to get a list of site membership requests for a specific person.

Method

Using the HTTP GET method:

people/>personId>/site-membership-requests

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/fred.bloggs@yourcompany.com/site-membership-requests

Response

  • If the request is successful an HTTP OK is returned (status 200).
  • If the personId does not exist in this network an HTTP Not Found is returned (status 404).
  • If the current user does not have permission to access the site membership requests of the personId, an HTTP Not Found is returned (status 404).

Example response body

{
   "list" : {
      "pagination" : {
        "count" : 2,
        "hasMoreItems" : false,
        "skipCount" : 0,
        "maxItems" : 100
      },
      "entries": [  {
         "entry": {                                
           "id" : "fred-bloggs-yourcompany-com",
           "createdAt" : "2012-07-20T21:46:09.659+0000",
           "site": {
               "id" : "fred-bloggs-yourcompany-com",
               "guid" : "9de68812-720c-5ed4-de2d-fe4a364ddb2e",
               "title" : "Fred Bloggs's Site",
               "visibility" : "MODERATED",
               "description" : "Fred Bloggs's Site"
           }
         }                                                                    
       },  
       {                                            
         "entry": {                                
           "id" : "the-secret-site",
           "createdAt" : "2012-08-20T21:46:09.659+0000",
           "modifiedAt" : "2012-09-20T21:46:09.672+0000",
           "message" : "I need this access for national security reasons!",
           "site": {
               "id" : "the-secret-site",
               "guid" : "8ac18731-601b-4bb4-be1a-cd5d252cce3f",
               "title" : "The Company’s Secret Site",
               "visibility" : "MODERATED",
               "description" : "The Company’s Secret Site"
             }
          }                                                                    
       }                                                          
    ]
  }    
}  
Parent topic: Site membership requests [100]

Join a site

Use this to join a site. If the site is public, the request is implicitly approved and the user is then a member of the site. If the site is moderated, then a site membership request is created, awaiting action by the site manager.

Method

Using the HTTP POST method:

people/<personId>/site-membership-requests

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/-me-/site-membership-requests

POST body

Property Type JSON Type Description
id string string The id of the site to be joined.
message string string An optional message describing why site membership is being requested.

Example POST body

{                              
    "id" : "secret-site",
    "message" : "I need this access for national security reasons!"
}

Response

  • If the request is successful an HTTP Created is returned (status 201).
  • If the personId is already a member of siteId an HTTP Bad Request is returned (status 400).
  • If an existing site membership request by personId for siteId exists, an HTTP Bad Request is returned (status 400).
  • If the personId does not exist in this network an HTTP Not Found is returned (status 404).
  • If the siteId does not exist in this network an HTTP Not Found is returned (status 404).
  • If the siteId is private an HTTP Not Found is returned (status 404).
  • If the current user does not match the personId, the user does not have permission to create this site membership request, and an HTTP Not Found is returned (status 404).

Example response body

{  
  "entry" : {
     "targetGuid" : "8ac18731-601b-4bb4-be1a-cd5d252cce3f",
     "createdAt" : "2012-07-20T21:46:09.659+0000",
     "target": {
         "site" : {
           "id" : "foo",
           "guid" : "8ac18731-601b-4bb4-be1a-cd5d252cce3f",
           "title" : "The Foo Site",
           "visibility" : "PRIVATE",
           "description" : "The Foo Site",
           "role" : "SiteManager"
         }
      }
   }
}
Parent topic: Site membership requests [100]

Modifying a site membership request

Use this to modify an existing request to join a site. For example, if a user requested access to a site but the site manager has not yet acted on the request, the user can update the request with a message providing more details on why access was needed or to remind the site manager that a request is pending. The modifiedAt property records the modification date and time.

Method

Using the HTTP PUT method:

people/<personId>/site-membership-requests/<siteId>

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/-me-/site-membership-requests/secret-site

PUT body

Property Type JSON Type Description
message string string An optional message describing why site membership is being requested.

Example PUT body

{ 
    "message" : "I need this access for national security reasons!"
}

Response

  • If the request is successful an HTTP Created is returned (status 200).
  • If the personId does not exist in this network an HTTP Not Found is returned (status 404).
  • If the siteId does not exist in this network an HTTP Not Found is returned (status 404).
  • If the siteId does match a site membership request for personId, an HTTP Not Found is returned (status 404).
  • If the current user does not match the personId, the user does not have permission to modfiy this site membership request, and an HTTP Not Found is returned (status 404).

Example response body

 {                                            
   "entry": {                                
     "id" : "the-secret-site",
     "createdAt" : "2012-07-20T21:46:09.659+0000",
     "modifiedAt" : "2012-08-20T21:46:09.659+0000",
     "message" : "I need this access for national security reasons!",
     "site": {
         "id" : "the-secret-site",
         "guid" : "8ac18731-601b-4bb4-be1a-cd5d252cce3f",
         "title" : "The Company’s Secret Site",
         "visibility" : "MODERATED",
         "description" : "The Company’s Secret Site"
    }
  }                                                                      
}
Parent topic: Site membership requests [100]

Delete a site membership request

Use this to remove a site membership request.

Method

Using the HTTP DELETE method:

people/<personId>/site-membership-requests/<siteId>

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/-me-/site-membership-requests/secret-site

Response

  • If the request is successful the site membership request is removed and an HTTP No Content (status 204) is returned.
  • If the processId does not exist in this network, an HTTP Not Found (status 404) is returned.
  • If the personId does not exist in this network an HTTP Not Found is returned (status 404).
  • If the siteId does not exist in this network an HTTP Not Found is returned (status 404).
  • If the siteId does not match a site membership request for personId, an HTTP Not Found is returned (status 404).
  • If the current user does not match the personId, the user does not have permission to delete this site membership request, and an HTTP Not Found is returned (status 404).
Parent topic: Site membership requests [100]

People

People are the users of Alfresco. A person entity describes the user as they are known to Alfresco. There are API methods to get the sites a person is a member of, to get the the details of a person, their favorite sites, preferences, and networks they are a member of. Methods are also available to process activities related to a person.

Person object

Property Type JSON Type Description
enabled boolean boolean Is this person currently enabled?
lastName string string the person's last name
location string string The person's location or address
avatarId id string The id of the person's avatar
instantMessageId string string The person's instant message Id
googleId string string The person's Google Id
id email id string The person's personId - the email address with which the person registered
skypeId string string The person's Skype Id
description string string The person's description
company company object An embedded company object describing the person's company
firstName string string The person's first name
telephone string string The person's telephone number
jobTitle string string The person's job title
mobile string string The person's mobile number

Example of a person object

{
  "entry" : {
    "enabled" : true,
    "lastName" : "Bloggs",
    "location" : "Somewhere",
    "avatarId" : "85d45e64-eb02-44e1-b989-dbf571ab0704",
    "instantMessageId" : "fredb",
    "googleId" : "fredb@gmail.com",
    "id" : "fred.bloggs@yourcompany.com",
    "skypeId" : "fredb",
    "email" : "fred.bloggs@yourcompany.com",
    "description" : "Been with company for n years",
    "company" : {
      "organization" : "Your Company",
      "address1" : "Some place",
      "address2" : "Somewhere",
      "postcode" : "Z99 9Z9",
      "telephone" : "01234 123456",
      "fax" : "01234 123457",
      "email" : "info@yourcompany.com"
    },
    "firstName" : "Fred",
    "telephone" : "01234 567890",
    "jobTitle" : "VP of something",
    "mobile" : "07777 567890"
  }
}
  • Methods [130] Methods for person objects.
  • Sites [131] An Alfresco site is a project area where you can share content and collaborate with other site members. There are API calls for getting a list of sites that a person is a member of, and for getting information about a person's membership of a single site.
  • Favorite sites [132]The sites that a person has marked as favorite in Alfresco (Deprecated). Use the favorites entity and methods.
  • Preferences [133]A person's preferences in Alfresco.
  • Networks [134]A network is the group of users and sites that belong to an organization. You can find out specific network information or how it relates to a person.
  • Activities [135]Activities describe any past activity in a site, for example creating an item of content, commenting on a node, liking an item of content.
Parent topic: API reference [75]

Methods

Methods for person objects.
  • Get information about a person [136] Get information about a specific person.
Parent topic: People [101]

Get information about a person

Get information about a specific person.

Method

Using the HTTP GET method:

people/<personId>

A personID is always the email address that they registered with

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/fred.bloggs@yourcompany.com

Response

  • If the personId does not exist in this network, an HTTP Not Found (status 404) is returned.
  • If the request is successful an HTTP OK is returned (status 200).

Example response body

{
   "entry":{
      "enabled":true,
      "lastName":"Bloggs",
      "location":"Someplace",
      "avatarId":"93df15f5-dee2-4bfe-8f1d-f0026d548f86",
      "instantMessageId":"fredb",
      "googleId":"fred.bloggs@gmail.com",
      "id":"fred.bloggs@yourcompany.com",
      "skypeId":"fredb",
      "description":"A generic person",
      "company":{
         "organization":"Alfresco",
         "address1":"address",
         "postcode":"post code",
         "telephone":"0123 456789",
         "fax":"0123 456789",
         "email":"enquiries@yourcompany.com"
      },
      "firstName":"Fred",
      "telephone":"0123 456777",
      "jobTitle":"VP of something",
      "mobile":"0777 456777"
   }
}

Note that the response object is an entry containing a person [119] entity with an embedded company entity.

Parent topic: Methods [130]

Sites

An Alfresco site is a project area where you can share content and collaborate with other site members. There are API calls for getting a list of sites that a person is a member of, and for getting information about a person's membership of a single site.

For more information on the site object, see Sites [137].

  • Get a list of a person's site memberships [138] Use this to get a list of sites that a specific person is a member of.
  • Get information about a person's site membership [139] Get information about a person's membership of a specific site.
Parent topic: People [101]

Get a list of a person's site memberships

Use this to get a list of sites that a specific person is a member of.

Method

Using the HTTP GET method:

people/<personId>/sites

A personID is always the email address that they registered with.

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/fred.bloggs@yourcompany.com/sites

Response

  • If the personId or the siteId does not exist in this network, an HTTP Not Found (status 404) is returned.
  • If the request is successful an HTTP OK is returned (status 200).

Example response body

{
  "list" : {
    "pagination" : {
      "count" : 2,
      "hasMoreItems" : false,
      "skipCount" : 0,
      "maxItems" : 100
    },
    "entries" : [ {
      "entry" : {
        "site" : {
          "id" : "general-test-site",
          "title" : "General Test Site",
          "visibility" : "PRIVATE",
          "description" : "Test Site"
        },
        "id" : "general-test-site",
        "role" : "SiteCollaborator"
      }
    }, {
      "entry" : {
        "site" : {
          "id" : "fred-bloggs-yourcompany-com",
          "visibility" : "PRIVATE",
          "description" : "Fred Bloggs's private home site."
        },
        "id" : "fred-bloggs-yourcompany-com",
        "role" : "SiteManager"
      }
    } ]
  }
}

Note that each entry in the response list is a Members [140] entity with an embedded Sites [137] entity.

Parent topic: Sites [131]

Get information about a person's site membership

Get information about a person's membership of a specific site.

Method

Using the HTTP GET method:

people/<personId>/sites/<siteId>

A personID is always the email address that they registered with

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/fred.bloggs@yourcompany.com/sites/fred-bloggs-yourcompany-com

Response

  • If the siteId or personId do not exist in this network, an HTTP Not Found (status 404) is returned.
  • If the request is successful an HTTP OK is returned (status 200).

Example response body

{
  "entry" : {
    "site" : {
      "id" : "fred-bloggs-yourcompany-com",
      "title" : "Fred Bloggs's Home",
      "visibility" : "PRIVATE",
      "description" : "Fred Bloggs's private home site."
    },
    "id" : "fred-bloggs-yourcompany-com",
    "role" : "SiteManager"
  }
}

Note that the response object is an entry containing a Members [140] entity with an embedded Sites [137] entity.

Parent topic: Sites [131]

Favorite sites

The sites that a person has marked as favorite in Alfresco (Deprecated). Use the favorites entity and methods.

Favorite-sites object

Property Type JSON Type Description
id email id string The person's personId. The email address the person registered with.
site site [137] object An embedded site object.

Example of a favorite-sites object

{
  "list" : {
    "pagination" : {
      "count" : 1,
      "hasMoreItems" : false,
      "totalItems" : 1,
      "skipCount" : 0,
      "maxItems" : 100
    },
    "entries" : [ {
      "entry" : {
          "id" : "fred-bloggs-yourcompany-com",
          "title" : "Fred Bloggs's Home",
          "visibility" : "PRIVATE",
          "description" : "Fred Bloggs's private home site."
      }
    } ]
  }
}

List order

Lists of these entities are returned ordered by ascending title.

  • Get a person's favorite sites [141] Use this to get a list of sites that a specific person is a member of (Deprecated).
Parent topic: People [101]

Get a person's favorite sites

Use this to get a list of sites that a specific person is a member of (Deprecated).

Note: This method is deprecated. Use the Favorites [142] entity and methods.

Method

Using the HTTP GET method:-

people/<personId>/favorite-sites

A personID is always the email address that they registered with.

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/fred.bloggs@yourcompany.com/favorite-sites

Response

  • If the personId does not exist in this network, an HTTP Not Found (status 404) is returned.
  • If the request is successful an HTTP OK is returned (status 200).

Example response body

{
    "list":{
        "pagination":{
            "count":1,
            "hasMoreItems":false,
            "skipCount":0,
            "maxItems":100
        },
        "entries":[
            {
                "entry":{
                    "id":"fred-bloggs-yourcompany-com",
                    "title":"Fred Bloggs's Home",
                    "visibility":"PRIVATE"
                 }
            }
       ]
    }
}

Note that each entry in the response list is a Favorite sites [143] entity.

Parent topic: Favorite sites [132]

Preferences

A person's preferences in Alfresco.

Preferences object

Property Type JSON Type Description
id id string The unique preference id.
value Any JSON primitive value Any JSON primitive value The value of the preference.

Example of a preferences object

{
       "value":true,
       "id":"org.alfresco.share.sites.favourites.fred-bloggs-yourcompany-com"
}

List order

Lists of these entities are returned ordered by ascending id.

  • Get a person's preferences [144] Use this to get a list of preferences for a specific person.
  • Get a preference [145] Use this to get the value of a specific preference for a specific person.
Parent topic: People [101]

Get a person's preferences

Use this to get a list of preferences for a specific person.

Note: In some instances, sites that have been deleted can appear in the response to this method. To avoid this, use the newer Favorites API [142].

Method

Using the HTTP GET method:-

people/<personId>/preferences

A personID is always the email address that they registered with.

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/fred.bloggs@yourcompany.com/preferences

Response

  • If the personId does not exist in this network, an HTTP Not Found (status 404) is returned.
  • If the request is successful an HTTP OK is returned (status 200).

Example response body

{
  "list" : {
    "pagination" : {
      "count" : 3,
      "hasMoreItems" : false,
      "skipCount" : 0,
      "maxItems" : 100
    },
      "entries":[
        {
            "entry":{
              "value":"4452493d-675f-42f2-9fb9-50ee97c8c5c9,b8a10d93-b383-4127-9f36-ff0ec5f2c450",
              "id":"org.alfresco.share.documents.favourites"
            }
         },
         {
            "entry":{
              "value":true,
              "id":"org.alfresco.share.sites.favourites.fred-bloggs-yourcompany-com"
            }
         },
         {
            "entry":{
              "value":true,
              "id":"org.alfresco.share.sites.favourites.test-site-1"
            }
         }
      ]
   }
}
Parent topic: Preferences [133]

Get a preference

Use this to get the value of a specific preference for a specific person.

Method

Using the HTTP GET method:

people/<personId>/preferences/<preferenceId>

A personID is always the email address that they registered with.

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/fred.bloggs@yourcompany.com/preferences/org.alfresco.share.documents.favourites

Response

  • If the personId or the preferenceId does not exist in this network, an HTTP Not Found (status 404) is returned.
  • If the request is successful an HTTP OK is returned (status 200).

Example response body

{
   "entry":{
      "value":"4452493d-675f-42f2-9fb9-50ee97c8c5c9,b8a10d93-b383-4127-9f36-ff0ec5f2c450",
      "id":"org.alfresco.share.documents.favourites"
   }
}
Parent topic: Preferences [133]

Networks

A network is the group of users and sites that belong to an organization. You can find out specific network information or how it relates to a person.

Network object

See Networks [146] for information on the network entity.

  • Get a specific network [147] Use this to get information for a specific network of which a specific person is a member.
  • Get a person's networks [148] Use this to get a list of networks of which a specific person is a member.
Parent topic: People [101]

Get a specific network

Use this to get information for a specific network of which a specific person is a member.

Method

Using the HTTP GET method:

people/<personId>/networks/<networkId>

A personID is always the email address that they registered with.

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/fred.bloggs@yourcompany.com/networks/yourcompany.com

Response

  • If the personId or the networkId does not exist in this network, an HTTP Not Found (status 404) is returned.
  • If the request is successful an HTTP OK is returned (status 200).

Example response body

{
    "id" : "alfresco.com",
    "createdAt" : "2012-06-07T10:22:28.000+0000",
    "quotas" : [ {
      "limit" : 52428800,
      "id" : "fileUploadQuota"
    }, {
      "limit" : 5368709120,
      "usage" : 149102356,
      "id" : "fileQuota"
    }, {
      "limit" : -1,
      "usage" : 29,
      "id" : "siteCountQuota"
    }, {
      "limit" : -1,
      "usage" : 33,
      "id" : "personCountQuota"
    }, {
      "limit" : -1,
      "usage" : 15,
      "id" : "personInternalOnlyCountQuota"
    }, {
      "limit" : 0,
      "usage" : 0,
      "id" : "personNetworkAdminCountQuota"
    } ],
    "paidNetwork" : false,
    "isEnabled" : true,
    "subscriptionLevel" : "Free"
  }
Parent topic: Networks [134]

Get a person's networks

Use this to get a list of networks of which a specific person is a member.

Method

Using the HTTP GET method:-

people/<personId>/networks

A personID is always the email address that they registered with.

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/fred.bloggs@yourcompany.com/networks

Response

  • If the personId does not exist in this network, an HTTP Not Found (status 404) is returned.
  • If the request is successful an HTTP OK is returned (status 200).

Example response body

{
  "list" : {
    "pagination" : {
      "count" : 1,
      "hasMoreItems" : false,
      "totalItems" : 1,
      "skipCount" : 0,
      "maxItems" : 100
    },
    "entries" : [ {
      "entry" : {
        "id" : "yourcompany.com",
        "homeNetwork" : true,
        "network" : {
          "id" : "alfresco.com",
          "createdAt" : "2012-06-07T10:22:28.000+0000",
          "quotas" : [ {
            "limit" : 52428800,
            "id" : "fileUploadQuota"
          }, {
            "limit" : 5368709120,
            "usage" : 149102356,
            "id" : "fileQuota"
          }, {
            "limit" : -1,
            "usage" : 29,
            "id" : "siteCountQuota"
          }, {
            "limit" : -1,
            "usage" : 33,
            "id" : "personCountQuota"
          }, {
            "limit" : -1,
            "usage" : 15,
            "id" : "personInternalOnlyCountQuota"
          }, {
            "limit" : 0,
            "usage" : 0,
            "id" : "personNetworkAdminCountQuota"
          } ],
          "paidNetwork" : false,
          "isEnabled" : true,
          "subscriptionLevel" : "Free"
        }
      }
    } ]
  }
}
Parent topic: Networks [134]

Activities

Activities describe any past activity in a site, for example creating an item of content, commenting on a node, liking an item of content.

Activity object

Property Type JSON Type Description
postPersonId email id string The id of the person who performed the activity
id id string The unique id of the activity
siteId id string The unique id of the site on which the activity was performed
postedAt Date Time string The date time at which the activity was performed
feedPersonId email id string The feed on which this activity was posted
activitySummary object object An object summarizing the activity
activityType enumerated string string The type of activity. The following are the possible values:-
  • org.alfresco.comments.comment-created
  • org.alfresco.comments.comment-updated
  • org.alfresco.comments.comment-deleted
  • org.alfresco.documentlibrary.files-added
  • org.alfresco.documentlibrary.files-updated
  • org.alfresco.documentlibrary.files-deleted
  • org.alfresco.documentlibrary.file-added
  • org.alfresco.documentlibrary.file-created
  • org.alfresco.documentlibrary.file-deleted
  • org.alfresco.documentlibrary.file-downloaded
  • org.alfresco.documentlibrary.file-liked
  • org.alfresco.documentlibrary.file-previewed
  • org.alfresco.documentlibrary.inline-edit
  • org.alfresco.documentlibrary.folder-liked
  • org.alfresco.site.user-joined
  • org.alfresco.site.user-left
  • org.alfresco.site.user-role-changed
  • org.alfresco.site.group-added
  • org.alfresco.site.group-removed
  • org.alfresco.site.group-role-changed
  • org.alfresco.discussions.reply-created
  • org.alfresco.subscriptions.followed
  • org.alfresco.subscriptions.subscribed

Example of a network object

        "postPersonId" : "fred.bloggs@yourcompany.com",
        "id" : 554,
        "siteId" : "fred-bloggs-yourcompany-com",
        "networkId" : "yourcompany.com",
        "feedPersonId" : "fred.bloggs@yourcompany.com",
        "activitySummary" : {
          "lastName" : "Bloggs",
          "title" : "testing",
          "objectId" : "e8680e58-0701-4b64-950d-66cce277fbc7",
          "firstName" : "Fred",
        },
        "activityType" : "org.alfresco.comments.comment-deleted",
        "postedAt" : "2012-08-22T19:45:00.000+0000"

List order

Lists of these entities are returned ordered by descending postedAt.

  • Get activities [149] Use this to get a list of recent activities, optionally filtered by siteId.
Parent topic: People [101]

Get activities

Use this to get a list of recent activities, optionally filtered by siteId.

Method

Using the HTTP GET method:

people/<personId>/activities[?siteId=siteId?who=me|others]

A personID is always the email address that they registered with. The method accepts two http parameters which can be used singly, or together to filter the results:-

siteId
The id of a specific site. Specifying this parameter filters the returned collection to include just those activities for the specific site.
who
Specifying a value of me filters the returned collection to include just those activities for the specified user. Specifying a value of others filters the returned collection to include just those activities that are not for the specified user.

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/-me-/activities?who=me

Response

  • If the personId does not exist in this network, an HTTP Not Found (status 404) is returned.
  • If the request is successful an HTTP OK is returned (status 200).

Example response body

{
  "list" : {
    "pagination" : {
      "count" : 3,
      "hasMoreItems" : false,
      "skipCount" : 0,
      "maxItems" : 100
    },
    "entries" : [ {
      "entry" : {
        "postPersonId" : "fred.bloggs@yourcompany.com",
        "id" : 1886,
        "siteId" : "test-test",
        "networkId" : "yourcompany.com",
        "feedPersonId" : "fred.bloggs@yourcompany.com",
        "activitySummary" : {
          "lastName" : "Bloggs",
          "title" : "Fred Bloggs (ffred.bloggs@yourcompany.com)",
          "memberPersonId" : "fred.bloggs@yourcompany.com",
          "memberLastName" : "Bloggs",
          "role" : "",
          "firstName" : "Fred",
          "memberFirstName" : "Fred"
        },
        "activityType" : "org.alfresco.site.user-left",
        "postedAt" : "2012-08-22T19:45:00.000+0000"
      }
    }, {
      "entry" : {
        "postPersonId" : "ffred.bloggs@yourcompany.com",
        "id" : 1882,
        "siteId" : "test-test",
        "networkId" : "yourcompany.com",
        "feedPersonId" : "fred.bloggs@yourcompany.com",
        "activitySummary" : {
          "lastName" : "Bloggs",
          "title" : "Fred Bloggs (fred.bloggs@yourcompany.com)",
          "memberPersonId" : "ffred.bloggs@yourcompany.com",
          "memberLastName" : "Bloggs",
          "role" : "SiteConsumer",
          "firstName" : "Fred",
          "memberFirstName" : "Fred"
        },
        "activityType" : "org.alfresco.site.user-joined",
        "postedAt" : "2012-08-22T19:43:43.000+0000"
      }
    }, {
      "entry" : {
        "postPersonId" : "fred.bloggs@yourcompany.com",
        "id" : 1878,
        "siteId" : "fred-blogs-alfresco-com",
        "networkId" : "yourcompany.com",
        "feedPersonId" : "fred.bloggs@yourcompany.com",
        "activitySummary" : {
          "lastName" : "Bloggs",
          "title" : "testing",
          "objectId" : "e8680e58-0701-4b64-950d-66cce277fbc7",
          "firstName" : "Fred"
        },
        "activityType" : "org.alfresco.comments.comment-deleted",
        "postedAt" : "2012-08-22T19:24:48.000+0000"
      }
    } ]
  }
}
Parent topic: Activities [135]

Tags

Any item of Alfresco content can be tagged. API methods exist to return a list of tags currently being used in a network.

Tag object

Property Type JSON Type Description
id string string The unique id of the tag
tag string string The value of the tag

Example of a tag object

{
  "id" : "ed2444b5-d0c1-440b-b5b8-34a53e578091",
  "tag" : "test tag 1"
}
  • Get a list of all tags [150] Use this to get a list of all tags used in your network.
  • Update a tag [151] Use this to update an existing tag.
Parent topic: API reference [75]

Get a list of all tags

Use this to get a list of all tags used in your network.

Method

Using the HTTP GET method:

tags

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/tags

Response

  • If the request is successful an HTTP OK is returned (status 200).

Example response body

{
  "list" : {
    "pagination" : {
      "count" : 1,
      "hasMoreItems" : false,
      "skipCount" : 0,
      "maxItems" : 100
    },
    "entries" : [ {
      "entry" : {
        "id" : "ed2444b5-d0c1-440b-b5b8-34a53e578091",
        "tag" : "test tag 1"
      }
    } ]
  }
}
Parent topic: Tags [102]

Update a tag

Use this to update an existing tag.

Method

Using the HTTP PUT method:

tags/<tagId>

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/tags/159d7f5d-680f-4504-b92e-8687d9fd1e82

PUT body

Property Type JSON Type Description
tag string string The new tag value

Example PUT body

{
    "tag": "new value"
}

Response

  • If the tagId does not exist in this network, an HTTP Not Found (status 404) is returned.
  • If the request is successful an HTTP OK response (status 200) is returned.

Example response body

{
  "entry" : {
    "id" : "159d7f5d-680f-4504-b92e-8687d9fd1e82",
    "tag" : "new value"
  }
}
Parent topic: Tags [102]

Nodes

A node is an overall term for an item of content or a folder. API methods are available to work with a node's comments, tags, and ratings.
  • Comments [152]A person can comment on folders and individual items to give other users information or notes specific to that content. API methods exist to get a list of comments, get a specific comment, and add a comment to a node.
  • Tags [153] Any item of Alfresco content can be tagged. API methods exist to return a list of tags for a specific node and to add a tag to a node.
  • Ratings [154]A person can rate an item of content by liking it. They can also remove their like of an item of content. API methods exist to get a list of ratings and to add a new rating.
Parent topic: API reference [75]

Comments

A person can comment on folders and individual items to give other users information or notes specific to that content. API methods exist to get a list of comments, get a specific comment, and add a comment to a node.

Comment object

Property Type JSON Type Description
edited boolean boolean True if the comment has been edited since it was first created
content string string The comment itself
id id string A unique opaque string id
modifiedAt Date Time string The date time that the comment was last modified
createdBy person [119] object An embedded person entity [119] describing the person who created this comment
canDelete boolean boolean True if this comment can be deleted by the current authenticated user. False if not, or if the node that is being commented upon is either a working copy or locked.
modifiedBy person [119] object An embedded person entity [119] describing the person who last modified this comment
createdAt Date Time string The date time that the comment was created
canEdit boolean boolean True if this comment can be edited by the current authenticated user. False if not, or if the node that is being commented upon is either a working copy or locked.

Example of a comment object

"edited" : false,
"content" : "<p>comment 13</p>",
"id" : "e1f349fb-79ee-4604-a563-16af8b78aa3c",
"modifiedAt" : "2012-07-20T21:46:09.659+0000",
"createdBy" : {
 "enabled" : true,
 "lastName" : "Bloggs",
 "location" : "Somewhere",
 "avatarId" : "85d45e64-eb02-44e1-b989-dbf571ab0704",
 "instantMessageId" : "fredb",
 "googleId" : "fredb@gmail.com",
 "id" : "fred.bloggs@yourcompany.com",
 "skypeId" : "fredb",
 "email" : "fred.bloggs@yourcompany.com",
 "description" : "Been with company for n years",
 "company" : {
   "organization" : "Your Company",
   "address1" : "Some place",
   "address2" : "Somewhere",
   "postcode" : "Z99 9Z9",
   "telephone" : "01234 123456",
   "fax" : "01234 123457",
   "email" : "info@yourcompany.com"
 },
 "firstName" : "Fred",
 "telephone" : "01234 567890",
 "jobTitle" : "VP of something",
 "mobile" : "07777 567890"
},
"canDelete" : true,
"modifiedBy" : {
 "enabled" : true,
 "lastName" : "Bloggs",
 "location" : "Somewhere",
 "avatarId" : "85d45e64-eb02-44e1-b989-dbf571ab0704",
 "instantMessageId" : "fredb",
 "googleId" : "fredb@gmail.com",
 "id" : "fred.bloggs@yourcompany.com",
 "skypeId" : "fredb",
 "email" : "fred.bloggs@yourcompany.com",
 "description" : "Been with company for n years",
 "company" : {
   "organization" : "Your Company",
   "address1" : "Some place",
   "address2" : "Somewhere",
   "postcode" : "Z99 9Z9",
   "telephone" : "01234 123456",
   "fax" : "01234 123457",
   "email" : "info@yourcompany.com"
 },
"createdAt" : "2012-07-20T21:46:09.659+0000",
"canEdit" : true
  • Get a list of a node's comments [155] Use this to get a list of all comments on a specific node.
  • Create a comment [156] Use this to create a new comment or comments on a specific node.
  • Update a comment [157] Use this to update an existing comment on a specific node.
  • Remove a comment [158] Use this to remove a comment.
Parent topic: Nodes [103]

Get a list of a node's comments

Use this to get a list of all comments on a specific node.

Method

Using the HTTP GET method:

nodes/<nodeId>/comments

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/nodes/159d7f5d-680f-4504-b9ee-8687d9fd1e82/comments

Response

  • If the nodeId does not exist an HTTP Not Found is returned (status 404).
  • If the nodeId exists, but does not identify a folder or a document, an HTTP Bad Request is returned (status 400).
  • If the request is successful an HTTP OK is returned (status 200).

Example response body

{
{
  "list" : {
    "pagination" : {
      "count" : 2,
      "hasMoreItems" : false,
      "totalItems" : 2,
      "skipCount" : 0,
      "maxItems" : 100
    },
    "entries" : [ {
      "entry" : {
        "edited" : false,
        "content" : "<p>A second test comment</p>",
        "id" : "3ae53d3f-63d6-4065-a7bf-68921a5ba08d",
        "modifiedAt" : "2012-07-30T17:05:28.617+0000",
        "createdBy" : {
          "enabled" : true,
          "lastName" : "Bloggs",
          "location" : "Somewhere",
          "avatarId" : "85d45e64-eb02-44e1-b989-dbf571ab0704",
          "instantMessageId" : "fredb",
          "googleId" : "fredb@gmail.com",
          "id" : "fred.bloggs@yourcompany.com",
          "skypeId" : "fredb",
          "email" : "fred.bloggs@yourcompany.com",
          "description" : "Been with company for n years",
          "company" : {
            "organization" : "Your Company",
            "address1" : "Some place",
            "address2" : "Somewhere",
            "postcode" : "Z99 9Z9",
            "telephone" : "01234 123456",
            "fax" : "01234 123457",
            "email" : "info@yourcompany.com"
          },
          "firstName" : "Fred",
          "telephone" : "01234 567890",
          "jobTitle" : "VP of something",
          "mobile" : "07777 567890"
        },
        "canDelete" : true,
        "modifiedBy" : {
          "enabled" : true,
          "lastName" : "Bloggs",
          "location" : "Somewhere",
          "avatarId" : "85d45e64-eb02-44e1-b989-dbf571ab0704",
          "instantMessageId" : "fredb",
          "googleId" : "fredb@gmail.com",
          "id" : "fred.bloggs@yourcompany.com",
          "skypeId" : "fredb",
          "email" : "fred.bloggs@yourcompany.com",
          "description" : "Been with company for n years",
          "company" : {
            "organization" : "Your Company",
            "address1" : "Some place",
            "address2" : "Somewhere",
            "postcode" : "Z99 9Z9",
            "telephone" : "01234 123456",
            "fax" : "01234 123457",
            "email" : "info@yourcompany.com"
          },
        "createdAt" : "2012-07-30T17:05:28.617+0000",
        "canEdit" : true
      }
    }, {
      "entry" : {
        "edited" : false,
        "content" : "<p>A test comment</p>",
        "id" : "7749ea0e-583f-4fbe-a3c0-82a604d7151a",
        "modifiedAt" : "2012-07-30T17:05:15.153+0000",
        "createdBy" : {
          "enabled" : true,
          "lastName" : "Bloggs",
          "location" : "Somewhere",
          "avatarId" : "85d45e64-eb02-44e1-b989-dbf571ab0704",
          "instantMessageId" : "fredb",
          "googleId" : "fredb@gmail.com",
          "id" : "fred.bloggs@yourcompany.com",
          "skypeId" : "fredb",
          "email" : "fred.bloggs@yourcompany.com",
          "description" : "Been with company for n years",
          "company" : {
            "organization" : "Your Company",
            "address1" : "Some place",
            "address2" : "Somewhere",
            "postcode" : "Z99 9Z9",
            "telephone" : "01234 123456",
            "fax" : "01234 123457",
            "email" : "info@yourcompany.com"
          },
          "firstName" : "Fred",
          "telephone" : "01234 567890",
          "jobTitle" : "VP of something",
          "mobile" : "07777 567890"
        },
        "canDelete" : true,
        "modifiedBy" : {
          "enabled" : true,
          "lastName" : "Bloggs",
          "location" : "Somewhere",
          "avatarId" : "85d45e64-eb02-44e1-b989-dbf571ab0704",
          "instantMessageId" : "fredb",
          "googleId" : "fredb@gmail.com",
          "id" : "fred.bloggs@yourcompany.com",
          "skypeId" : "fredb",
          "email" : "fred.bloggs@yourcompany.com",
          "description" : "Been with company for n years",
          "company" : {
            "organization" : "Your Company",
            "address1" : "Some place",
            "address2" : "Somewhere",
            "postcode" : "Z99 9Z9",
            "telephone" : "01234 123456",
            "fax" : "01234 123457",
            "email" : "info@yourcompany.com"
          },
        "createdAt" : "2012-07-30T17:05:15.153+0000",
        "canEdit" : true
      }
    } ]
  }
}
Parent topic: Comments [152]

Create a comment

Use this to create a new comment or comments on a specific node.

Method

Using the HTTP POST method:

nodes/<nodeId>/comments

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/nodes/159d7f5d-680f-4504-b9ee-8687d9fd1e82/comments

POST body

Property Type JSON Type Description
content string string The comment text. Note that you can provide an array of comments.

Example POST body

Creating a single comment:

{
    “content”: “This is a comment”
}

Creating more than one comment:

[
{
    “content”: “This is a comment”
},
{
    “content”: “This is another comment”
}
]

Response

  • If the nodeId does not exist in this network, an HTTP Not Found (status 404) is returned.
  • If the request is successful an HTTP CREATED response (status 201) is returned.

Example response body

Creating a single comment:

{
  "entry" : {
    "edited" : false,
    "content" : "<p>This is a comment</p>",
    "id" : "9f1618c4-84b1-4fac-9393-c3869e58ff7c",
    "modifiedAt" : "2012-07-30T17:18:48.921+0000",
    "createdBy" : {
      "enabled" : true,
      "lastName" : "Bloggs",
      "location" : "Somewhere",
      "avatarId" : "85d45e64-eb02-44e1-b989-dbf571ab0704",
      "instantMessageId" : "fredb",
      "googleId" : "fredb@gmail.com",
      "id" : "fred.bloggs@yourcompany.com",
      "skypeId" : "fredb",
      "email" : "fred.bloggs@yourcompany.com",
      "description" : "Been with company for n years",
      "company" : {
        "organization" : "Your Company",
        "address1" : "Some place",
        "address2" : "Somewhere",
        "postcode" : "Z99 9Z9",
        "telephone" : "01234 123456",
        "fax" : "01234 123457",
        "email" : "info@yourcompany.com"
      },
      "firstName" : "Fred",
      "telephone" : "01234 567890",
      "jobTitle" : "VP of something",
      "mobile" : "07777 567890"
    },
    "canDelete" : true,
    "modifiedBy" : {
          "enabled" : true,
          "lastName" : "Bloggs",
          "location" : "Somewhere",
          "avatarId" : "85d45e64-eb02-44e1-b989-dbf571ab0704",
          "instantMessageId" : "fredb",
          "googleId" : "fredb@gmail.com",
          "id" : "fred.bloggs@yourcompany.com",
          "skypeId" : "fredb",
          "email" : "fred.bloggs@yourcompany.com",
          "description" : "Been with company for n years",
          "company" : {
            "organization" : "Your Company",
            "address1" : "Some place",
            "address2" : "Somewhere",
            "postcode" : "Z99 9Z9",
            "telephone" : "01234 123456",
            "fax" : "01234 123457",
            "email" : "info@yourcompany.com"
          },
    "createdAt" : "2012-07-30T17:18:48.921+0000",
    "canEdit" : true
  }
}

Creating more than one comment:

[ {
  "id" : "7ca79723-fcfb-4c64-86c5-0fe18dc3575b",
  "content" : "This is a comment",
  "createdAt" : "2012-09-16T18:20:17.841+0000",
  "createdBy" : "fred.bloggs@yourcompany.com",
  "modifiedAt" : "2012-09-16T18:20:17.841+0000",
  "modifiedBy" : "fred.bloggs@yourcompany.com",
  "edited" : false,
  "canEdit" : true,
  "canDelete" : true
}, {
  "id" : "7b2ead2f-efc7-4405-83de-b1d7ceff3f23",
  "content" : "This is another comment",
  "createdAt" : "2012-09-16T18:20:17.883+0000",
  "createdBy" : "fred.bloggs@yourcompany.com",
  "modifiedAt" : "2012-09-16T18:20:17.883+0000",
  "modifiedBy" : "fred.bloggs@yourcompany.com",
  "edited" : false,
  "canEdit" : true,
  "canDelete" : true
} ]
Parent topic: Comments [152]

Update a comment

Use this to update an existing comment on a specific node.

Method

Using the HTTP PUT method:

nodes/<nodeId>/comments/<commentId>

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/nodes/159d7f5d-680f-4504-b92e-8687d9fd1e82/comments/159d7f5d-680f-4524-b9ee-8687d9221e22

PUT body

Property Type JSON Type Description
content string string The new comment text

Example PUT body

{
    "content": "This is an updated comment"
}

Response

  • If the nodeId or commentId does not exist in this network, an HTTP Not Found (status 404) is returned.
  • If the request is successful an HTTP OK response (status 200) is returned.

Example response body

{
  "entry" : {
    "edited" : true,
    "content" : "<p>This is an updated comment</p>",
    "id" : "9f1618c4-84b1-4fac-9393-c3869e58ff7c",
    "modifiedAt" : "2012-07-31T17:18:48.921+0000",
    "createdBy" : {
      "enabled" : true,
      "lastName" : "Bloggs",
      "location" : "Somewhere",
      "avatarId" : "85d45e64-eb02-44e1-b989-dbf571ab0704",
      "instantMessageId" : "fredb",
      "googleId" : "fredb@gmail.com",
      "id" : "fred.bloggs@yourcompany.com",
      "skypeId" : "fredb",
      "email" : "fred.bloggs@yourcompany.com",
      "description" : "Been with company for n years",
      "company" : {
        "organization" : "Your Company",
        "address1" : "Some place",
        "address2" : "Somewhere",
        "postcode" : "Z99 9Z9",
        "telephone" : "01234 123456",
        "fax" : "01234 123457",
        "email" : "info@yourcompany.com"
      },
      "firstName" : "Fred",
      "telephone" : "01234 567890",
      "jobTitle" : "VP of something",
      "mobile" : "07777 567890"
    },
    "canDelete" : true,
    "modifiedBy" : {
          "enabled" : true,
          "lastName" : "Bloggs",
          "location" : "Somewhere",
          "avatarId" : "85d45e64-eb02-44e1-b989-dbf571ab0704",
          "instantMessageId" : "fredb",
          "googleId" : "fredb@gmail.com",
          "id" : "fred.bloggs@yourcompany.com",
          "skypeId" : "fredb",
          "email" : "fred.bloggs@yourcompany.com",
          "description" : "Been with company for n years",
          "company" : {
            "organization" : "Your Company",
            "address1" : "Some place",
            "address2" : "Somewhere",
            "postcode" : "Z99 9Z9",
            "telephone" : "01234 123456",
            "fax" : "01234 123457",
            "email" : "info@yourcompany.com"
          },
    "createdAt" : "2012-07-30T17:18:48.921+0000",
    "canEdit" : true
  }
}
Parent topic: Comments [152]

Remove a comment

Use this to remove a comment.

Method

Using the HTTP DELETE method:

nodes/<nodeId>/comments/<commentId>

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/nodes/e8680e58-0701-4b64-950d-66cce277fbc7/comments/e1f349fb-79ee-4604-a563-16af8b78aa3c

Response

  • If the nodeId or commentId do not exist in this network, an HTTP Not Found (status 404) is returned.
  • If the request is successful an HTTP No Content is returned (status 204), and the comment is removed.
Parent topic: Comments [152]

Tags

Any item of Alfresco content can be tagged. API methods exist to return a list of tags for a specific node and to add a tag to a node.

For more information on the tag entities see Tags [159].

  • Get a list a node's tags [160] Use this to get a list of all tags for a specific node.
  • Create a tag [161] Use this to create a new tag or tags on a specific node.
  • Remove a tag [162] Use this to remove a tag from a specific node.
Parent topic: Nodes [103]

Get a list a node's tags

Use this to get a list of all tags for a specific node.

Method

Using the HTTP GET method:

nodes/<nodeId>/tags

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/nodes/e8680e58-0701-4b64-950d-66cce277fbc7/tags

Response

  • If the nodeId does not exist an HTTP Not Found is returned (status 404).
  • If the request is successful an HTTP OK is returned (status 200).

Example response body

{
  "list" : {
    "pagination" : {
      "count" : 1,
      "hasMoreItems" : false,
      "totalItems" : 1,
      "skipCount" : 0,
      "maxItems" : 100
    },
    "entries" : [ {
      "entry" : {
        "id" : "3ccdc60e-1853-4cc0-9d29-280a3f7d3c03",
        "tag" : "test-tag"
      }
    } ]
  }
}
Parent topic: Tags [153]

Create a tag

Use this to create a new tag or tags on a specific node.

Method

Using the HTTP POST method:

nodes/<nodeId>/tags

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/nodes/159d7f5d-680f-4504-b9ee-8687d9fd1e82/tags

POST body

Property Type JSON Type Description
tag string string The tag to be created. Note that you can provide an array of tags.

Example POST body

Creating a single tag:

{
  "tag": "test-tag-1"
}

Creating more than one tag:

[
   {
      "tag":"test-tag-1"
   },
   {
      "tag":"test-tag-2"
   }
]

Response

  • If the nodeId does not exist in this network, an HTTP Not Found (status 404) is returned.
  • If the request is successful an HTTP CREATED response (status 201) is returned.

Example response body

When creating a single tag:

{
  "entry" : {
    "id" : "d4919919-2d49-4365-9f35-806914542245",
    "tag" : "test-tag-1"
  }
}

When creating than one tag, and array is returned:

[ {
  "tag" : "test-tag-1",
  "id" : "bd69d53d-e104-4ac8-b2b6-d1283276d74f"
}, {
  "tag" : "test-tag-2",
  "id" : "27cbd230-0c5e-4a54-87fb-3258c70956cc"
} 
]
Parent topic: Tags [153]

Remove a tag

Use this to remove a tag from a specific node.

Method

Using the HTTP DELETE method:

nodes/<nodeId>/tags/<tagId>

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/tags/e8680e58-0701-4b64-950d-66cce277fbc7/tags/3ccdc60e-1853-4cc0-9d29-280a3f7d303

Response

  • If the nodeId does not exist in this network, an HTTP Not Found (status 404) is returned.
  • If the request is successful an HTTP No Content is returned (status 204), and the tag is removed from the node.
Parent topic: Tags [153]

Ratings

A person can rate an item of content by liking it. They can also remove their like of an item of content. API methods exist to get a list of ratings and to add a new rating.

Rating object

Property Type JSON Type Description
id id string The rating scheme id. There are two schemes defined, likes and fiveStar. Only the likes scheme is used in Alfresco Cloud.
aggregate object object An object with properties specific to the rating scheme. For likes this will contain a single property numberOfRatings. For fiveStar this will contain numberOfRatings and average.
ratedAt Date Time string The date time the current authenticated user rated the item of content.
myRating boolean or number boolean or number The value of the rating. For the likes scheme, values are true or true. For the fiveStar scheme, the value is an integer between one and five inclusively.

Example of a rating object

"id":"likes",
"aggregate":{
   "numberOfRatings":1
},
"ratedAt":"2012-05-25T09:08:01.846+0000",
"myRating":true
  • Get a node's ratings [163] Use this to get the ratings on a specific node.
  • Get a specific rating [164] Use this to get a specific rating on a specific node.
  • Remove a rating [165] Use this to remove a rating.
  • Rate a node [166] Use this to rate a specific node.
Parent topic: Nodes [103]

Get a node's ratings

Use this to get the ratings on a specific node.

Method

Using the HTTP GET method:

nodes/<nodeId>/ratings

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/nodes/159d7f5d-680f-4504-b9ee-8687d9fd1e82/ratings

Response

  • If the nodeId does not exist an HTTP Not Found is returned (status 404).
  • If the request is successful an HTTP OK is returned (status 200).

Example response body

Note that the return object is always a list with an entry for each rating scheme id. If node has not been rated in a scheme, then the ratedAt and myRating properties are null, and are not present in the response object.

{
  "list" : {
    "pagination" : {
      "count" : 2,
      "hasMoreItems" : false,
      "totalItems" : 2,
      "skipCount" : 0,
      "maxItems" : 100
    },
    "entries" : [ {
      "entry" : {
        "id" : "likes",
        "aggregate" : {
          "numberOfRatings" : 1
        },
        "ratedAt" : "2012-07-30T17:31:32.242+0000",
        "myRating" : true
      }
    }, {
      "entry" : {
        "id" : "fiveStar",
        "aggregate" : {
          "numberOfRatings" : 0
        }
      }
    } ]
  }
}
Parent topic: Ratings [154]

Get a specific rating

Use this to get a specific rating on a specific node.

Method

Using the HTTP GET method:

nodes/<nodeId>/rating/rating/<ratingId>

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/nodes/159d7f5d-680f-4504-b9ee-8687d9fd1e82/rating/likes

Response

  • If the nodeId does not exist an HTTP Not Found is returned (status 404).
  • If the ratingId does not exist an HTTP Bad request is returned (status 400).
  • If the request is successful an HTTP OK is returned (status 200).

Example response body

{
  "entry" : {
    "id" : "likes",
    "aggregate" : {
      "numberOfRatings" : 0
    }
  }
}
Parent topic: Ratings [154]

Remove a rating

Use this to remove a rating.

Method

Using the HTTP DELETE method:

nodes/<nodeId>/ratings/<ratingId>

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/ratings/e8680e58-0701-4b64-950d-66cce277fbc7/ratings/likes

Response

  • If the nodeId or ratingId do not exist in this network, an HTTP Not Found (status 404) is returned.
  • If the request is successful an HTTP No Content is returned (status 204), and the rating is removed.
Parent topic: Ratings [154]

Rate a node

Use this to rate a specific node.

Method

Using the HTTP POST method:

nodes/<nodeId>/ratings

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/nodes/159d7f5d-680f-4504-b9ee-8687d9fd1e82/ratings

POST body

Property Type JSON Type Description
id enumerated type string The rating scheme type. Possible values are likes and fiveStar.
myRating boolean or integer boolean or number The rating. The type is specific to the rating scheme, boolean for the likes and an integer for the fiveStar

Example POST body

{
    "id": "likes",
    "myRating" : true
}

Response

  • If the nodeId does not exist in this network, an HTTP Not Found (status 404) is returned.
  • If the request is successful an HTTP CREATED response (status 201) is returned.

Example response body

{
  "entry" : {
    "id" : "likes",
    "aggregate" : {
      "numberOfRatings" : 1
    },
    "ratedAt" : "2012-07-30T19:07:34.975+0000",
    "myRating" : true
  }
}
Parent topic: Ratings [154]

Favorites

A favorite describes an Alfresco entity that a person has marked as a favorite. There are API calls for getting a list of a user's favorites, for getting a specific favorite, for adding a favorite, and for deleting a favorite.

Favorite object

Property Type JSON Type Description
targetGuid id string The guid of the object that is a favorite.
createdAt date time string The time the object was made a favorite.
target object object The object that is a favorite. This can be a site, a folder, or a file.

Example of a favorite object

 
{                              
      "targetGuid" : "54a924c0-d437-4482-8cbc-78c2995c83ae",
      "createdAt" : "2012-07-20T21:46:09.659+0000",
      "target": {
           "file" : {
           "id" : "54a924c0-d437-4482-8cbc-78c2995c83ae",
           "guid" : "54a924c0-d437-4482-8cbc-78c2995c83ae",
           "name" : "fred.txt",
           "title" : "Fred Bloggs's Document",
           "description" : "This is Fred’s resume",
           "createdAt" : "2013-01-09T13:23:07.894-05:00",
           "modifiedAt" : "2013-01-16T15:41:35.265-05:00",
           "createdBy" : "fred.bloggs@yourcompany.com", 
           "modifiedBy" : "wilma.bloggs@yourcompany.com", 
           "mimeType" : "text/plain",
           "sizeInBytes" : "1024",
           "versionLabel" : "1.0"
      }
}       
         

List order

Lists of these entities are returned ordered by ascending target/type, and then by descending createdAt date.

  • Get a list of favorites [167] Use this to get a list of favorites for a specific person. You can tailor the information returned by providing the WHERE HTML parameter.
  • Get a favorite [168] Use this to get a specific favorite for a specific person.
  • Add a favorite [169] Use this to add a favorite for a specific person.
  • Delete a favorite [170] Use this to remove a favorite of a specific person.
Parent topic: API reference [75]

Get a list of favorites

Use this to get a list of favorites for a specific person. You can tailor the information returned by providing the WHERE HTML parameter.

Method

Using the HTTP GET method:

people/<personId>/favorites

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/fred.bloggs@yourcompany.com/favorites

Parameters

You can use the where parameter to restrict the list in the response to entries of a specific kind. The where parameter takes a value. The value is a single predicate that can include one or more EXISTS conditions. The EXISTS condition uses a single operand to limit the list to include entries that include that one property. The property values are:-

  • target/file
  • target/folder
  • target/site

For example, the following where parameter restricts the returned list to the file favorites for a person:

where=(EXISTS(target/file)) 

You can specify more than one condition using OR. The predicate must be enclosed in parentheses.

For example, the following where parameter restricts the returned list to the file and folder favorites for a person:

where=(EXISTS(target/file OR EXISTS(target/folder))

The -me- string can be used in place of <personId> to get the favorites of the currently authenticated user.

Response

  • If the request is successful an HTTP OK is returned (status 200).
  • If an invalid where parameter was specified an HTTP Bad Request is returned (status 400).
  • If the personId does not exist in this network an HTTP Not Found is returned (status 404).
  • If the current user does not have permission to access the favorites of the personId, an HTTP Not Found is returned (status 404).

Example response body

{
  "list" : {
     "pagination" : {
       "count" : 3,
       "hasMoreItems" : false,
       "skipCount" : 0,
       "maxItems" : 100
     },
     "entries": [  
      {
        "entry": {                                                
            "targetGuid" : "54a924c0-d437-4482-8cbc-78c2995c83ae",
            "createdAt" : "2012-07-20T21:46:09.659+0000",
            "target": {
               "file" : {
                 "id" : "54a924c0-d437-4482-8cbc-78c2995c83ae",
                 "guid" : "54a924c0-d437-4482-8cbc-78c2995c83ae",
                 "name" : "fred.txt",
                 "title" : "Fred Bloggs's Document",
                 "description" : "This is Fred’s resume",
                 "createdAt" : "2013-01-09T13:23:07.894-05:00",
                 "modifiedAt" : "2013-01-16T15:41:35.265-05:00",
                 "createdBy" : "fred.bloggs@yourcompany.com",
                 "modifiedBy" : "wilma.bloggs@yourcompany.com",
                 "mimeType" : "text/plain",
                 "sizeInBytes" : "1024",
                 "versionLabel" : "1.0"
               }
            }
          }
        },
      {
        "entry": {                                                
            "targetGuid" : "f504ba02-d36c-49ca-8159-a53f7f6efc4f",
            "createdAt" : "2012-07-20T21:46:09.659+0000",
            "target": {
               "folder" : {
                 "id" : "f504ba02-d36c-49ca-8159-a53f7f6efc4f",
                 "guid" : "f504ba02-d36c-49ca-8159-a53f7f6efc4f",
                 "name" : "Fred Bloggs's Folder",
                 "title" : "Fred Bloggs's Folder",
                 "description" : "This is Fred’s folder",
                 "createdAt" : "2010-03-26T11:22:09.600+0000",
                 "modifiedAt" : "2013-01-16T15:41:35.265-05:00",
                 "createdBy" : "fred.bloggs@yourcompany.com",
                 "modifiedBy" : "wilma.bloggs@yourcompany.com"
               }
            }
          }
        },
        {
        "entry": {                                                
           "targetGuid" : "8ac18731-601b-4bb4-be1a-cd5d252cce3f",
           "createdAt" : "2012-07-20T21:46:09.659+0000",
           "target": {
               "site" : {
                 "id" : "foo-site",
                 "guid" : "8ac18731-601b-4bb4-be1a-cd5d252cce3f",
                 "title" : "The Foo Site",
                 "visibility" : "PRIVATE",
                 "description" : "The Foo Site",
                 "role" : "SiteManager"
                }
             }
          }                                                                                    
       }                                                                                  
     ]
   }    
} 
Parent topic: Favorites [104]

Get a favorite

Use this to get a specific favorite for a specific person.

Method

Using the HTTP GET method:-

people/<personId>/favorites/<targetGuid>

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/-me-/favorites/8ac18731-601b-4bb4-be1a-cd5d252cce3f

Response

  • If the request is successful an HTTP OK is returned (status 200).
  • If the personId does not exist in this network an HTTP Not Found is returned (status 404).
  • If there is no favorite with the targetGuid for the personId an HTTP Not Found is returned (status 404).
  • If the current user does not have permission to access the favorites of the personId, an HTTP Not Found is returned (status 404).

Example response body

{  
  "entry" : {
     "targetGuid" : "8ac18731-601b-4bb4-be1a-cd5d252cce3f",
     "createdAt" : "2012-07-20T21:46:09.659+0000",
     "target": {
         "site" : {
           "id" : "foo",
           "guid" : "8ac18731-601b-4bb4-be1a-cd5d252cce3f",
           "title" : "The Foo Site",
           "visibility" : "PRIVATE",
           "description" : "The Foo Site",
           "role" : "SiteManager"
         }
      }
   }
}
Parent topic: Favorites [104]

Add a favorite

Use this to add a favorite for a specific person.

Method

Using the HTTP POST method:

people/<personId>/favorites

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/-me-/favorites

POST body

Property Type JSON Type Description
target object object An object identifying the entity to be favorited. The object consists of a single property which is an object with name of site, file, or folder. The content of that object is the guid of the target entity.

Example POST body

{                                                
  "target": {
      "site" : {
        "guid" : "8ac18731-601b-4bb4-be1a-cd5d252cce3f"
      }
   }
}

Response

  • If the request is successful an HTTP Created is returned (status 201).
  • If the target guid does not describe a site, file, or folder an HTTP Bad Request is returned (status 400).
  • If the personId does not exist in this network an HTTP Not Found is returned (status 404).
  • If the target entity does not exist in this network an HTTP Not Found is returned (status 404).
  • If a favorite already exists with the id of the posted does not exist in this network an HTTP Not Found is returned (status 404).
  • If an entity does exist with the id of the posted object, but is not the same type of the posted object, an HTTP Not Found is returned (status 404).
  • If the current user does not have permission to access the favorites of the personId, an HTTP Not Found is returned (status 404).

Example response body

{  
  "entry" : {
     "targetGuid" : "8ac18731-601b-4bb4-be1a-cd5d252cce3f",
     "createdAt" : "2012-07-20T21:46:09.659+0000",
     "target": {
         "site" : {
           "id" : "foo",
           "guid" : "8ac18731-601b-4bb4-be1a-cd5d252cce3f",
           "title" : "The Foo Site",
           "visibility" : "PRIVATE",
           "description" : "The Foo Site",
           "role" : "SiteManager"
         }
      }
   }
}
Parent topic: Favorites [104]

Delete a favorite

Use this to remove a favorite of a specific person.

Method

Using the HTTP DELETE method:

people/<personId>/favorites/<targetGuid>

Example request URL

https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/-me-/favorites/8ac18731-601b-4bb4-be1a-cd5d252cce3f

Response

  • If the request is successful the favorite is removed and an HTTP No Content is returned.
  • If the personId does not exist in this network, an HTTP Not Found (status 404) is returned.
  • If no favorite exists with the specified targetGuid, an HTTP Not Found (status 404) is returned.
Parent topic: Favorites [104]

Deployments

A deployment resource represents one file inside a deployment.

Process files, forms and perhaps some other files are authored in a separate environment. The act of deployment brings them into the runtime workflow engine.

A deployment is a collection of files that include all resources to specify one or more process definitions. After deployment, the included process definitions are known to the workflow runtime engine and new processes can be started.

Users can then continue to edit the process and other files in their authoring environment like e.g. our eclipse based process editor. A redeployment will result in a complete separate deployment containing new versions of the process definition.

When a process definition inside a new deployment has the same key as an existing process definition, then it is considered a new version of the existing process definition.

Deployment object

Property Type JSON Type Description
id id String The unique id of this deployment
name String String The name this deployment file
category String String The category URL
category Date Time String The time of this deployment

Example of a deployment object

 
entry: {
    "id": "92837492",
    "name": "activiti-examples.bar",
    "category": "http://alfresco.org/workflows/examples",
    "deployedAt": "2010-10-13T14:54:26.750+02:00"
}
         
  • Get a list of deployments [171] Use this to get a list of deployments.
  • Get information for a deployment [172] Use this to get a specific deployment object.
Parent topic: API reference [75]

Get a list of deployments

Use this to get a list of deployments.

Authorization

The authenticated user must have role admin (non-network deployments) or network admin (networks enabled).

If networks are enabled, the network admin can only see the deployments in the given network.

Method

Using the HTTP GET method:-

deployments

Example request URL

https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/deployments

URL request parameters

Name

Description

Type

skipCount

positive integer

number

maxItems

positive integer

number

Response

  • If the request is successful an HTTP OK is returned (status 200).

Example response body

The body of the response will be JSON as specified in Basic list response where each deployment entity has following format:

...
entry: {
 "id": "92837492",
 "name": "activiti-examples.bar",
 "category": "http://alfresco.org/workflows/examples",
 "deployedAt": "2010-10-13T14:54:26.750+02:00"
}
...
Parent topic: Deployments [105]

Get information for a deployment

Use this to get a specific deployment object.

Authorization

The authenticated user must have role admin (non-network deployments) or network admin (networks enabled).

If networks is enabled, the deployment is only returned if the deployment is in the given network.

Method

Using the HTTP GET method:-

deployments/<deploymentId>

Example request URL

https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/deployments/92837492

Response

  • If the deploymentId does not exist, an HTTP Not Found (status 404) is returned.
  • If the request is successful an HTTP OK is returned (status 200).

Example response body

{ entry: {
 "id": "92837492",
 "name": "activiti-examples.bar",
 "category": "http://alfresco.org/workflows/examples",
 "deployedAt": "2010-10-13T14:54:26.750+02:00",
} }
Parent topic: Deployments [105]

Process definitions

A process definition is a description of an execution flow in terms of activities. New processes are created and started for a process definition.

Process definition object

Property Type JSON Type Description
id id String The unique id of this process definition
key String String The key of this process definition
Version Number Nunber For process definitions with the same key, this is the version number
name String String The name of this process definition
category String String The category to which this process definition belongs
deploymentId String String The deployment of which this process definition is a part
title String String The title of this process definition
Description String String The description of this process definition
startFormResourceKey String String The start form key
graphicNotationDefined Boolean Boolean  

Example of a process definition object

{
  "id": "financialReport:1",
  "key": "financialReport",
  "version": 1,
  "name": "April financial report",
  "category": "com.acme.financial",
  "deploymentId": "123",
  "title": "Financial report of the month April",
  "description": "Sample description",
  "startFormResourceKey": "wf:adhocTask",
  "graphicNotationDefined": true          
}
  • Get a list of process definitions. [173] Use this to get a list of process definitions.
  • Get a single process definition. [174] Use this to get a process definition identified by a process definition id.
  • Get an image of a single process definition. [175] Use this to get an image that represents a single process definition.
  • Get model of the start form type definition. [176] Use this to get the model of the start form type definition
Parent topic: API reference [75]

Get a list of process definitions.

Use this to get a list of process definitions.

Authorization

In non-network deployments, any authenticated user will see all the process definitions.

If networks are enabled, the network admin can only see the deployments in the given network.

Method

Using the HTTP GET method:-

process-definitions

Example request URL

https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/process-definitions

You can use the where parameter to get process definitions that meet certain criteria. The where parameter takes a single predicate that includes one or more conditions connected by AND. For example, if you only want process definitions in the category "com.acme.financial" the where parameter would be where=( category='com.acme.financial')

The following table shows the where parameters you can use in this method:

Name

Description

Operators

Type

category

Category of the process-definition

=, matches

String

key

Key of the process-definition

=, matches

String

name

Name of the process-definition

=, matches

String

deploymentId

ID of the deployment the process-definition is part of

=

String

version

Version of the process-definition for processes with the same key.

=

String

Response

  • If the request is successful an HTTP OK is returned (status 200).

Example response body

The body of the response will be JSON as specified in Basic list response where each deployment resource entity has following format:

{
"list" : {
   "pagination" : {
     "count" : 2,
     "hasMoreItems" : false,
     "skipCount" : 0,
     "maxItems" : 100
   },
   "entries": [  
   {
     "entry": {
  "id": "financialReport:1",
  "key": "financialReport",
  "version": 1,
  "name": "April financial report",
  "category": "com.acme.financial",
  "deploymentId": "123",
  "startFormResourceKey": "wf:adhocTask",
  "graphicNotationDefined": true          
},
    {
     "entry": {
  "id": "financialReport:1",
  "key": "financialReport",
  "version": 1,
  "name": "May financial report",
  "category": "com.acme.financial",
  "deploymentId": "456",
  "startFormResourceKey": "wf:adhocTask",
  "graphicNotationDefined": true          
},
    ]
 }
}
Parent topic: Process definitions [106]

Get a single process definition.

Use this to get a process definition identified by a process definition id.

Authorization

In non-network deployments, any authenticated user will see all the process definitions.

If networks are enabled, the network admin can only see the deployments in the given network.

Method

Using the HTTP GET method:-

process-definitions/<processDefinitionId>

Example request URL

https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/process-definitions/<processDefinitionId>

Example response body

The body of the response will be a single entry:

{ 
  "entry": {
  "id": "financialReport:1",
  "key": "financialReport",
  "version": 1,
  "name": "Monthly financial report",
  "category": "com.alfresco.workflows.internal",
  "deploymentId": "10",
  "startFormResourceKey": "wf:adhocTask",
  "graphicNotationDefined": true,
    } 
}

Parent topic: Process definitions [106]

Get an image of a single process definition.

Use this to get an image that represents a single process definition.

Authorization

In non-network deployments, any authenticated user will be able to see all process definitions. In a network, the authenticated user will only see the process definitions deployed inside their network.

Method

Using the HTTP GET method:-

process-definitions/<processDefinitionId>/image

Example request URL

https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/process-definitions/financialReport:1/image

Response

  • If the request is successful an HTTP OK is returned (status 200).

Example response body

The body of the response will be an image of content-type image/png.

Parent topic: Process definitions [106]

Get model of the start form type definition.

Use this to get the model of the start form type definition

Authorization

An authenticated user will have access to all start form models. In a network, only start form models that are inside the given network are returned.

Method

Using the HTTP GET method:-

process-definitions/<processDefinitionId>/start-form-model

Example request URL

https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/process-definitions/financialReport:1/start-form-model

Response

  • If the request is successful an HTTP OK is returned (status 200).

Example response body

The body of the response will be the start form model:

{
  "entries": [
     "entry": {
  "dataType": "d:text",
  "title": "Name",
  "qualifiedName":  
    "{http://www.alfresco.org/model/content/1.0}/name",
  "name": "cm_name",
  "required": true,
  "defaultValue": "Default name",
  "allowedValues": ["text1", "text2"]
     }
  ]
}
Parent topic: Process definitions [106]

Processes

A process describes a running instance of a process definition.

When a new deployment includes a process definition that is already deployed with the same key, the newly deployed process definition will be considered a new version of the same process definition. By default processes will keep running in the process definition they are started in. But new processes can be started in the latest version of a process definition by using the processDefinitionKey parameter.

In non-network deployments, administrators can see all processes and perform all operations on tasks. In network deployments, network administrators can see processes in their network and perform all operations on tasks in their network.

Process object

Property Type JSON Type Description
id id string This process's unique id
processDefinitionId id string The unique identity of this process definition
businessKey key string Business key
startedAt Date Time String The date time this process started
endedAt Date Time String If the process is completed, contains the date time this process ended
durationInMs Number Number duration
startActivityDefinitionId id string The id of the first activity in the process
endActivityDefinitionId id string The id of the last activity in the process
startUserId id string The id of the user who started the process
deleteReason string string The reason this process was canceled

Example of a process object

 : {
    "id": "2",
    "processDefinitionId": "financialReport:1",
    "businessKey": "55",
    "startedAt": "2010-10-13T14:54:26.750+02:00",
    "endedAt": "2010-10-13T14:54:26.750+02:00",
    "durationInMs": 9823720,  // expressed in milliseconds
    "completed": true
    "startActivityDefinitionId": "startFinancialAnalysis",
    "endActivityDefinitionId": "success",
    "startUserId": "kermit",
    "deleteReason": "cancelled"
  }
  • Start a new process [177] Use this to start a new process.
  • Get a list of processes [178] Use this to get a list of processes.
  • Get a single process. [179] Use this to get a process.
  • Delete a process [180] Use this to delete a specific process
  • Get variables for a process [181] Use this to get all the variables for a specific process.
  • Create or update variables for a process [182] Use this to create or update variables for a given process. If one of the variables doesn't exist yet, it will be created.
  • Create or update variables for a process [183] Use this to create or update variables for a given process. If one of the variables doesn't exist yet, it will be created.
  • Delete a process variable [184] Use this to delete a process variable.
  • Get the tasks in a process [185] Use this to get the tasks for a specific process.
  • Get the items in a process [186] Use this the items in a specific process.
  • Add an item to a process [187] Use this to create an item for a given process. If the item already is part of that process the request will have no effect.
  • Delete an item [188] Use this to delete an item from a specific process.
Parent topic: API reference [75]

Start a new process

Use this to start a new process.

Authorization

In non-network deployments, any authenticated user can start a new process for any process definition.

If networks are enabled, the authenticated user can can start a new process for a process definition in the user's network.

Method

Using the HTTP POST method:-

processes

Example request URL

https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/processes

POST body

Property Type JSON Type Description
processDefinitionId id string A specific version of a process definition. For example, financialReport:1 . Either the processDefinitionId or the processDefinitionKey must be specified.
processDefinitionKey key string A logical process definition. For example, financialReport Multiple versions of this process definition may be deployed. The new process starts in the latest version of the process definition. Either the processDefinitionId or the processDefinitionKey must be specified
businessKey key string A user defined unique identifier for this process. You can find this process based on this value.
variables object object consisting of name/value pairs The variables that will be set during initialization of the new process. For cm:person and cm:authorityContainer content model types the value must be the fully qualified user name or group name. The user and group name will be transformed to a node reference by Alfresco.
items array array An array of string items. For more information on items see Items and Packages [189].

In the REST service the following process instance variables are created automatically, in addition to the variables and items provided in the request:

bpm:package
The package node reference that holds references to all documents attached to the process instance.
cancelled
Initially false
companyHome
The company home value
initiator
The person that started the process instance
initiatorHome
The home location of the person that started the process instance
_network_domain
If multi tenancy is enabled this is the network domain name

Example POST body

{
  "processDefinitionId": "financialReport:1",
  "processDefinitionKey": "financialReport",
  "businessKey": "55",
  "variables": {
                "bpm_assignee":"fred",
                "bpm_sendEMailNotifications":false,
                "bpm_workflowPriority":1
               },
  "items": ["42eef795-857d-40cc-9fb5-5ca9fe6a0592", "42eef795-857d-40cc-9fb5-5ca9fe6a0592"] ,      
}

Example response body

The body of the response will be a single process:

{
 { entry: {
    "id": "2",
    "processDefinitionId": "financialReport:1",
    "processDefinitionKey": "financialReport",
    "businessKey": "55",
    "startedAt": "2010-10-13T14:54:26.750+02:00",
    "endedAt": "2010-10-13T14:54:26.750+02:00",
    "durationInMs": 9823720,  // expressed in millis
    "completed": true
    "startActivityId": "startFinancialAnalysis",
    "endActivityId": "success",
    "startUserId": "kermit",
    "deleteReason": "cancelled",
    "superProcessInstanceId", "1"
  }
}
Parent topic: Processes [107]

Get a list of processes

Use this to get a list of processes.

Authorization

An authenticated user will have access to a processes if the user has started the process or if the user is involved in any of the process’s tasks. In a network, only processes that are inside the given network are returned.

In non-network deployments, administrators can see all processes and perform all operations on processes. In network deployments, network administrators can see all processes in their network and perform all operations on processes in their network.

Method

Using the HTTP GET method:-

processes

Example request URL

https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/processes
You can use the where parameter to get processes that meet certain criteria. The where parameter takes a single predicate that includes one or more conditions connected by AND . For example, to retrieve only processes started by ‘kermit’ for the business key of ‘55’ and with a variable called nameB whose value starts with 'elmo', the where parameter would be specified as
where=( startUserId='kermit' AND businessKey='55' AND
   variables/nameB MATCHES('elmo%') ).
The following table shows the where parameters you can use in this method:

Name

Description

Operators

Type

businessKey The business key. For example "item928374". Together with a processDefinitionId this will identify a process uniquely. = String
processDefinitionId The process definition id, for example "financialReport:1" = String
processDefinitionKey The process definition key, for example "financialReport". = String
startUserId The user that started the process, for example "johndoe". = String
startedAt The date the process was started. <, > Date time
endedAt The date the process completed. <, > Date time
status {any|active|completed}: Active returns only processes will be returned that are not completed. Completed, returns only completed processes are returned. By default only active processes will be returned. = String
includeVariables Should process variables be returned in the query result? The default is false. = Boolean
variables Variables are referenced using the JSON pointer syntax, using the key "variables" as the root. For example, a variable named "variableA" would be referenced as /variables/variableA’?> . You can combine multiple variables with an AND clause. >, <, >=, <=, = and matches(..). The value to compare to can be a literal string or a value prefixed with a model data-type followed by a single space, for example d:text test. String representing variable value to compare and an operator, for example variables/variableA > 'd:int 50'.

Response

  • If the request is successful an HTTP OK is returned (status 200).

Example response body

The body of the response will be JSON as specified in Basic list response where each process entity has following format:

entry: {
    "id": "2",
    "processDefinitionId": "financialReport:1",
    "processDefinitionKey": "financialReport",
    "businessKey": "55",
    "startedAt": "2010-10-13T14:54:26.750+02:00",
    "endedAt": "2010-10-13T14:54:26.750+02:00",
    "durationInMs": 9823720,  // expressed in millisecs 
    "completed": true
    "startActivityId": "startFinancialAnalysis",
    "endActivityId": "success",
    "startUserId": "kermit",
    "deleteReason": "cancelled",
    "superProcessInstanceId", "1"
}
Parent topic: Processes [107]

Get a single process.

Use this to get a process.

Authorization

An authenticated user will have access to a processes if the user has started the process or if the user is involved in any of the process’s tasks. In a network, only processes that are inside the given network are returned.

In non-network deployments, administrators can see all processes and perform all operations on tasks. In network deployments, network administrators can see all processes in their network and perform all operations on tasks in their network.

Method

Using the HTTP GET method:-

processes/<processId>

Example request URL

https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/processes/2

Response

  • If the request is successful an HTTP OK is returned (status 200).

Example response body

The body of the response will be a single entry containing the process. following format:

{ entry: {
    "id": "2",
    "processDefinitionId": "financialReport:1",
    "processDefinitionKey": "financialReport",
    "businessKey": "55",
    "startedAt": "2010-10-13T14:54:26.750+02:00",
    "endedAt": "2010-10-13T14:54:26.750+02:00",
    "durationInMs": 9823720,  // expressed in millis
    "completed": true
    "startActivityDefinitionId": "startFinancialAnalysis",
    "endActivityDefinitionId": "success",
    "startUserId": "kermit",
    "deleteReason": "cancelled",
    "superProcessInstanceId": "1"
}}
Parent topic: Processes [107]

Delete a process

Use this to delete a specific process

Method

Using the HTTP DELETE method:-

processes/<processId>

Example request URL

https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/processes/<processId>

Response

  • If the request is successful the process is removed and an HTTP No Content (status 204) is returned.
  • If the processId does not exist in this network, an HTTP Not Found (status 404) is returned.
Parent topic: Processes [107]

Get variables for a process

Use this to get all the variables for a specific process.

Authorization

An authenticated user will have access to a processes variables if the user has started the process or if the user is involved in any of the process’s tasks. In a network, only variables for a process that is inside the given network are returned.

In non-network deployments, administrators can see all variables and perform all operations on those variable. In network deployments, network administrators can see all variables in their network and perform all operations on variables in their network.

Method

Using the HTTP GET method:-

processes/<processId>/variables

Example request URL

https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/processes/2/variables

Response

  • If the request is successful an HTTP OK is returned (status 200).

Example response body

The body of the response will be a list containing all the variables for the specified processId.

entry: {
   "name": "bpm_priority",
   "value": 1,
   "type": "d:int"
}
…

Parent topic: Processes [107]

Create or update variables for a process

Use this to create or update variables for a given process. If one of the variables doesn't exist yet, it will be created.

Authorization

In non-network deployments, a user can update variables are updated for which the user started the process or if the user is involved in any of the process’s tasks.

If networks are enabled, the authenticated user can update variables inside their network.

In non-network deployments, administrators can see all variables and perform all operations on variables. In network deployments, network administrators can see all variables in their network and perform all operations on variables in their network.

Method

Using the HTTP POST method:-

processes

Example request URL

https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/processes/<processId>/variables

POST body

Property Type JSON Type Description
name string string The name of variable the to update. It should match the name in the URL.
value string, number or boolean string The value of variable the to update.
type string which points to a valid data-type, for example d:int or d:text . string An optional type in which to store the variable. If specified, the value is converted to the required type based on the ‘value’ property supplied. When type is omitted, the value will be based on the JSON-type of the variable, text, number, boolean.

Example POST body

[{
  "name": "bpm_priority",
  "value": 1,
  "type": "d_int"
}]

Example response body

{
   "name": "bpm_priority",
   "value": 1,
   "type": "d_int"
}
         
Parent topic: Processes [107]

Create or update variables for a process

Use this to create or update variables for a given process. If one of the variables doesn't exist yet, it will be created.

Authorization

In non-network deployments, a user can update variables are updated for which the user started the process or if the user is involved in any of the process’s tasks.

If networks are enabled, the authenticated user can update variables inside their network.

In non-network deployments, administrators can see all variables and perform all operations on variables. In network deployments, network administrators can see all variables in their network and perform all operations on variables in their network.

Method

Using the HTTP PUT method:-

processes

Example request URL

https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/processes/<processId>/variables

PUT body

Property Type JSON Type Description
name string string The name of the variable to update. It should match the name in the URL.
value string, number or boolean string The value of the variable to update.
type string which points to a valid data-type, for example d:int or d:text . string An optional type in which to store the variable. If specified, the value is converted to the required type based on the ‘value’ property supplied. When type is omitted, the value will be based on the JSON-type of the variable, text, number, boolean.

Example PUT body

[{
  "name": "bpm_priority",
  "value": 1,
  "type": "d_int"
}]

Example response body

{
   "name": "bpm_priority",
   "value": 1,
   "type": "d_int"
}
         
Parent topic: Processes [107]

Delete a process variable

Use this to delete a process variable.

Authorization

An authenticated user can only delete a process variable if the authenticated user has started the process or if the user is involved in any of the process’s tasks.

If networks are enabled, the authenticated user can delete variables inside their network.

In non-network deployments, administrators can see all variables and perform all operations on variables. In network deployments, network administrators can see all variables in their network and perform all operations on variables in their network.

Method

Using the HTTP DELETE method:-

processes/<processId>/variables/<variableName>

Example request URL

https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/processes/2/variables/bpm:priority

Response

  • If the request is successful the variable is removed and an HTTP No Content (status 204) is returned.
  • If the processId does not exist in this network, an HTTP Not Found (status 404) is returned.
  • If the variableName does not exist for this processId, an HTTP Not Found (status 404) is returned.
Parent topic: Processes [107]

Get the tasks in a process

Use this to get the tasks for a specific process.

Authorization

An authenticated user will have access to a processes tasks if the user has started the process or if the user is involved in any of the process’s tasks. In a network, only tasks for a process that is inside the given network are returned.

In non-network deployments, administrators can see all tasks and perform all operations on those tasks. In network deployments, network administrators can see all tasks in their network and perform all operations on tasks in their network.

Method

Using the HTTP GET method:-

processes/<processId>/tasks

You can use the status parameter to filter the returned tasks:

active
Only active tasks will be returned. This is the default.
completed
Only completed tasks will be returned.
all
All tasks will be returned.

Example request URL

https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/processes/2/tasks

Response

  • If the request is successful an HTTP OK is returned (status 200).

Example response body

The body of the response will be a list containing all the matching tasks for the specified processId.

entry: {
       "id": "127", 
       "processDefinitionId": "financialReport:1", 
       "processId": "123", 
       "activityDefinitionId": "review"  // the activity id of the usertask
       "activityDefinitionName": "Review",
       "name": "Handle vacation request", 
       "description": "Vacation request by Kermit", 
       "dueDate": "2010-10-13T14:54:26.750+02:00", 
       "startedAt": "2010-10-13T14:54:26.750+02:00", 
       "endedAt": "2010-10-13T14:54:26.750+02:00", 
       "durationInMs": 982374,  // expressed in millis 
       "priority": 50, 
       "owner": "Kermit", 
       "assignee": "johndoe", 
       "formResourceKey": "wf:submitAdhocTask",
       "state": "completed" 
}

Parent topic: Processes [107]

Get the items in a process

Use this the items in a specific process.

Authorization

An authenticated user will have access to a processes items if the user has started the process or if the user is involved in any of the process’s items. In a network, only items for a process that is inside the given network are returned.

In non-network deployments, administrators can see all tasks and perform all operations on those tasks. In network deployments, network administrators can see all tasks in their network and perform all operations on tasks in their network.

Method

Using the HTTP GET method:-

processes/<processId>/items

Example request URL

https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/processes/2/items

Response

  • If the request is successful an HTTP OK is returned (status 200).

Example response body

The body of the response will be a list containing all the matching items for the specified processId.

entry: {
             "id": "42eef795-857d-40cc-9fb5-5ca9fe6a0592",
             "name" : "FinancialResults.pdf"
             "title" : "FinancialResults"
             "description" : "the description"
             "mimeType" : "application/pdf"
             "createdBy" : "johndoe"
             "createdAt" : "2010-10-13T14:53:25.950+02:00"
             "modifiedBy" : "johndoe"
             "modifiedAt" : "2010-10-13T14:53:25.950+02:00"
             "size" : 28973
}
Parent topic: Processes [107]

Add an item to a process

Use this to create an item for a given process. If the item already is part of that process the request will have no effect.

Authorization

In non-network deployments, a user can add items to processes that the user started or if the user is involved in any of the process’s tasks.

If networks are enabled, the authenticated user can update items inside their network.

In non-network deployments, administrators can add items and perform all operations on processes. In network deployments, network administrators can see all items in their network and perform all operations on processes in their network.

Method

Using the HTTP POST method:-

processes/<processId>/items

Example request URL

https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/processes/2/items

POST body

Property Type JSON Type Description
id string string The node id of the item to add.

Example POST body

{
    "id": "42eef795-857d-40cc-9fb5-5ca9fe6a0592",
}

Response

If the request is successful, an HTTP CREATED is returned (status 201).

Example response body

The added item is returned.

{ entry: {
             "id": "42eef795-857d-40cc-9fb5-5ca9fe6a0592",
             "name" : "FinancialResults.pdf"
             "title" : "FinancialResults"
             "description" : "the description"
             "mimeType" : "application/pdf"
             "createdBy" : "johndoe"
             "createdAt" : "2010-10-13T14:53:25.950+02:00"
             "modifiedBy" : "johndoe"
             "modifiedAt" : "2010-10-13T14:53:25.950+02:00"
             "size" : 28973
}
Parent topic: Processes [107]

Delete an item

Use this to delete an item from a specific process.

Authorization

An authenticated user can only delete an item if the authenticated user has started the process or if the user is involved in any of the process’s tasks.

If networks are enabled, the authenticated user can delete items inside their network.

In non-network deployments, administrators can delete items and perform all operations on processes. In network deployments, network administrators can delete items in all processes in their network.

Method

Using the HTTP DELETE method:-

processes/<processId>/items/<itemId>

Example request URL

https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/processes/2/items/2eef795-857d-40cc-9fb5-5ca9fe6a0592

Response

  • If the request is successful the item is removed and an HTTP No Content (status 204) is returned.
  • If the processId does not exist in this network, an HTTP Not Found (status 404) is returned.
  • If the itemId does not exist for this processId, an HTTP Not Found (status 404) is returned.
Parent topic: Processes [107]

Tasks

A task describes one task for a human user.

Task object

Property Type JSON Type Description
id id string This task's unique id
processId id string The containing process's unique id
processDefinitionId id string The containing process's process definition id
activityDefinitionId id string The activity id of this task
name string string The text name of this task
description string string A description this task
dueAt Date Time String The date time this task is due
startedAt Date Time String The date time this task started
endedAt Date Time String If the task is completed, contains the date time this task ended
durationInMs Number Number The duration of this task
priority Number Number The numeric priority of this task
owner id string The id of the user who owns this task
assignee id string The id of the user who is currently assigned this task
formResourceKey string string The key of the form for this task
state string string The state of this task
variables array of objects array of objects An array of variables for this task

Example of a task object

 : entry : { 
  "id": "127", 
  "processId": "123", 
  "processDefinitionId": "financialReport:1", 
  "activityDefinitionId": "review"  // the activity id of the usertask
  "name": "Handle vacation request", 
  "description": "Vacation request by Kermit", 
  "dueAt": "2010-10-13T14:54:26.750+02:00", 
  "startedAt": "2010-10-13T14:54:26.750+02:00", 
  "endedAt": "2010-10-13T14:54:26.750+02:00", 
  "durationInMs": 982374,  // expressed in millis 
  "priority": 50, 
  "owner": "Kermit", 
  "assignee": "johndoe",
  "formResourceKey": "wf:submitAdhocTask",
  "state": "completed",
  "variables": [
     {
       "scope": "global",
       "name": "bpm_priority",
       "value": 1,
       "type": "d_int"
     }
  ]
}
  • Get a list of tasks [190] Use this to get a list of tasks visible to the authenticated user.
  • Get a single task [191] Get a task.
  • Update the state of a task [192] Use this to update the state of a specific task.
  • Get model of the task form type definition [193] Use this to get the model of the task form type definition.
  • Get variables for a task [194] Use this to get all the variables for a specific task.
  • Create or update variables for a task [195] Use this to create or update variables for a given task. If one of the variables doesn't exist yet, it will be created.
  • Update variables for a task [196] Use this to update variables for a given task. If one of the variables doesn't exist yet, it will be created.
  • Delete a task variable [197] Use this to delete a task variable.
  • Get the items in a task [198] Use this to get items in a specific task.
  • Add an item to a task [199] Use this to create an item for a given task. If the item already is part of that task the request will have no effect.
  • Delete an item [200] Use this to delete an item from a specific task.
Parent topic: API reference [75]

Get a list of tasks

Use this to get a list of tasks visible to the authenticated user.

Authorization

Tasks are returned for which the authenticated user is the assignee or a candidate. If networks are enabled, the only tasks that are inside the given network are returned.

In non-network deployments, administrators can see all processes and perform all operations on tasks. In network deployments, network administrators can see all processes in their network and perform all operations on tasks in their network.

Method

Using the HTTP GET method:-

tasks

Example request URL

https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/tasks

You can use the where parameter to get tasks that meet certain criteria. The where parameter takes a single predicate that includes one or more conditions connected by AND.

The following table shows the where parameters you can use in this method:
Name Description Operators Type
status {any|active|completed}: Active returns only tasks will be returned that are not completed. Completed, returns only completed tasks are returned. By default only active tasks will be returned. = String
assignee The id of a user, for example "johndoe". Only tasks with the given assignee are returned. =, MATCHES String
owner The id of a user, for example "johndoe". Only tasks with the given owner are returned. =, MATCHES String
candidateUser The id of a user, for example "johndoe". Only tasks for which the given user is a candidate are returned. = String
candidateGroup Only tasks for which the given group is a candidate are returned. = String
name Only returns tasks with the specified name =, MATCHES String
description Only returns tasks with the specified description =, MATCHES String
priority Only returns tasks with the specified priority value =, >=, <= Number
startedAt The date the task was started. =, <, > Date time
endedAt The date the task completed. =, <, > Date time
dueAt The date the task is due. =, <, > Date time
activityDefinitionId The activityDefinitionId in the process definition =, MATCHES String
processId Tasks in the given process instance are returned = String
processDefinitionId The process definition id, for example "financialReport:1". = String
processDefinitionKey The process definition key, for example "financialReport". = String
processDefinitionName The process definition name. = String
businessKey The business key. For example "item928374". = String
includeProcessVariables Should the process variables related to the task be included in the result? The default value is false. = Boolean
includeTaskVariables Should the task variables in the task be included in the result? The default value is false. = Boolean
variables Variables are referenced using the JSON pointer syntax, using the key "variables" as the root. For example, a variable named "variableA" would be referenced as /variables/variableA’?>. You can combine multiple variables with an AND clause. >, <, >=, <=, = and matches(..). The value to compare to can be a literal string or a value prefixed with a model data-type followed by a single space, for example d:text test. String representing variable value to compare and an operator, for example variables/variableA > 'd:int 50'.

Response

  • If the request is successful an HTTP OK is returned (status 200).

Example response body

The body of the response will be JSON as specified in Basic list response where each process entity has following format:

entry: {
    "id": "2",
    "processDefinitionId": "financialReport:1",
    "processDefinitionKey": "financialReport",
    "businessKey": "55",
    "startedAt": "2010-10-13T14:54:26.750+02:00",
    "endedAt": "2010-10-13T14:54:26.750+02:00",
    "durationInMs": 9823720,  // expressed in millisecs 
    "completed": true
    "startActivityId": "startFinancialAnalysis",
    "endActivityId": "success",
    "startUserId": "kermit",
    "deleteReason": "cancelled",
    "superProcessInstanceId", "1"
}
Parent topic: Tasks [108]

Get a single task

Get a task.

Authorization

An authenticated user will have access to a processes if the user has started the process or if the user is involved in any of the process’s tasks. In a network, only tasks that are inside the given network are returned.

In non-network deployments, administrators can see all processes and perform all operations on tasks. In network deployments, network administrators can see all processes in their network and perform all operations on tasks in their network.

Method

Using the HTTP GET method:-

tasks/<taskId>

Example request URL

https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/tasks/2

Response

  • If the request is successful an HTTP OK is returned (status 200).

Example response body

The body of the response will be a single entry containing the task. following format:

{ entry : { 
  "id": "127", 
  "processId": "123", 
  "processDefinitionId": "financialReport:1", 
  "activityDefinitionId": "review"  // the activity id of the usertask
  "name": "Handle vacation request", 
  "description": "Vacation request by Kermit", 
  "dueAt": "2010-10-13T14:54:26.750+02:00", 
  "startedAt": "2010-10-13T14:54:26.750+02:00", 
  "endedAt": "2010-10-13T14:54:26.750+02:00", 
  "durationInMs": 982374,  // expressed in millis 
  "priority": 50, 
  "owner": "Kermit", 
  "assignee": "johndoe", 
  "formResourceKey": "wf:submitAdhocTask",
  "state": "completed"
  } 
}
Parent topic: Tasks [108]

Update the state of a task

Use this to update the state of a specific task.

Authorization

To perform a task action the authenticated user must be the assignee or a candidate. If networks is enabled, the task action is only performed if the task is inside the given network.

In non-network deployments, administrators can perform all operations on tasks. In network deployments, network administrators can see all tasks in their network and perform all operations on tasks in their network.

Method

Using the HTTP PUT method:-

tasks/<taskId>?<select-parameter>

Example request URL

https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/tasks/127/variables?select=state,variables

PUT body

Property Type JSON Type Description
name string string The task name. This is used as the title of the task in Alfresco.
description string string The task description.
state enumerated string, one of claimed. unclaimed, completed, resolved string The state of the task.
assignee id string The userId of the person to whom the task is to be assigned.
owner id string The userId of the person who will become the task owner.
dueAt Date Time String The date time this task is due
priority Number Number The numeric priority of this task
variables array of objects array of objects An array of variables to be set when completing or resolving the task. If variables are set and the requested state change is not complete or resolve action, an HTTP error response is returned

State transitions

Clients can invoke actions by assigning an allowed value to the state property of a task. The select parameter can be used to allow for a partial update of the resource. Alfresco will check for illegal state transitions and return an HTTP Bad Request (Response 400) if an illegal state transition is attempted. There are five state transitions, completing, claiming, unclaiming, delegating, resolving.
Completing a task

If variables are included in the JSON body, they will be set in the task and then the process will continue.

To complete a task, the authenticated user must be the assignee of the task, the owner of the task, or have started the process.

In non-network deployments, administrators can perform this task operation on all tasks. In network deployments, network administrators can perform this action on all tasks in their network.

An example PUT request:

/tasks/127?select=state,variables

An example PUT body:

{
  “state : “completed”,
  “variables” : [
    {
        "name" : "bpm_priority",
        "type" : "d_int",
        "value" : 1,
        "scope" : "global"
    }
  ]
}
Claiming a task

To claim a task, the authenticated user must be the assignee of the task, the owner of the task, or have started the process.

An example PUT request:

/tasks/127?select=state

An example PUT body:

{
  “state : “claimed”
}

Unclaiming a task

This removes the current assignee of the task.

To unclaim a task, the authenticated user must be the assignee of the task, the owner of the task, or have started the process.

An example PUT request:

/tasks/127?select=state

An example PUT body:

{
  “state : “unclaimed”
}

Delegating a task

This delegates the task from the owner to an assignee. The result is the same as if the assignee had claimed the task, but the task can then be resolved and the owner will become the assignee again.

To delegate a task, the authenticated user must be the assignee of the task and the assignee must be different from the owner.

An example PUT request:

/tasks/127?select=state,assignee

An example PUT body:

{
  “state : “delegated”,
  “assignee” : “Kermit”
}


Resolving a task

This returns a delegated task back to the owner. In order to delegate a task, the authenticated user must be the assignee of the task and the assignee must be different from the owner.

To delegate a task, the authenticated user must be the assignee of the task, the owner of the task, or have started the process.

An example PUT request:

/tasks/127?select=state

An example PUT body:

{
  “state : “resolved”
}


Example response body

The body of the response will be a single entry containing the task. following format:

{ entry : { 
  "id": "127", 
  "processId": "123", 
  "processDefinitionId": "financialReport:1", 
  "activityDefinitionId": "review"  // the activity id of the usertask
  "name": "Handle vacation request", 
  "description": "Vacation request by Kermit", 
  "dueAt": "2010-10-13T14:54:26.750+02:00", 
  "startedAt": "2010-10-13T14:54:26.750+02:00", 
  "endedAt": "2010-10-13T14:54:26.750+02:00", 
  "durationInMs": 982374,  // expressed in millis 
  "priority": 50, 
  "owner": "Kermit", 
  "assignee": "johndoe", 
  "formResourceKey": "wf:submitAdhocTask",
  "state": "completed"
  } 
}
Parent topic: Tasks [108]

Get model of the task form type definition

Use this to get the model of the task form type definition.

Authorization

An authenticated user will have access to all task form models. In a network, only task form models that are inside the given network are returned.

Method

Using the HTTP GET method:-

tasks/<taskId>/task-form-model

Example request URL

https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/tasks/152/task-form-model

Response

  • If the request is successful an HTTP OK is returned (status 200).

Example response body

The body of the response will be the task form model:

{ 
  "entry": {
  "dataType": "d:text",
  "title": "Name",
  "qualifiedName":  
    "{http://www.alfresco.org/model/content/1.0}/name",
  "name": "cm_name",
  "required": true,
  "defaultValue": "Default name",
  "allowedValues": ["text1", "text2"]
  } 
}
Parent topic: Tasks [108]

Get variables for a task

Use this to get all the variables for a specific task.

Authorization

An authenticated user will have access to a tasks variables if the user has started the process or if the user is involved in any of the process’s tasks. In a network, only variables for a process that is inside the given network are returned.

In non-network deployments, administrators can see all variables and perform all operations on those variables. In network deployments, network administrators can see all variables in their network and perform all operations on variables in their network.

Method

Using the HTTP GET method:-

tasks/<taskId>/variables

Example request URL

https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/tasks/153/variables

You can use the where parameter to get tasks that meet certain criteria. The where parameter takes a single predicate that includes one or more conditions connected by AND . For example, if you only want local tasks the where parameter would be where=( scope='local')

The following table shows the where parameters you can use in this method:
Name Description Operators Type
scope Can have one of the values {local|global|any}.
local
Return task local variables
global
Return process variables
any
Return task local and process variables. This is the default
= Enumerated String

Response

  • If the request is successful an HTTP OK is returned (status 200).

Example response body

The body of the response will be a list containing all the variables for the specified taskId.

entry: {
   "scope": "global",
   "name": "bpm_priority",
   "value": 1,
   "type": "d_int"
}
Parent topic: Tasks [108]

Create or update variables for a task

Use this to create or update variables for a given task. If one of the variables doesn't exist yet, it will be created.

Authorization

In non-network deployments, a user can update variables are updated for which the user started the process or if the user is involved in any of the process’s tasks.

If networks are enabled, the authenticated user can update variables inside their network.

In non-network deployments, administrators can see all variables and perform all operations on variables. In network deployments, network administrators can see all variables in their network and perform all operations on variables in their network.

Method

Using the HTTP POST method:-

tasks/<taskId>/variables

Example request URL

https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/tasks/153/variables

POST body

Property Type JSON Type Description
name string string The name of variable the to update. It should match the name in the URL.
value string, number or boolean string The value of variable the to update.
type string which points to a valid data-type, for example d:int or d:text . string An optional type in which to store the variable. If specified, the value is converted to the required type based on the ‘value’ property supplied. When type is omitted, the value will be based on the JSON-type of the variable, text, number, boolean.

Example POST body

[{
  "name": "bpm_priority",
  "value": 1,
  "type": "d_int"
}]

Example response body

{
   "name": "bpm_priority",
   "value": 1,
   "type": "d_int"
}
         
Parent topic: Tasks [108]

Update variables for a task

Use this to update variables for a given task. If one of the variables doesn't exist yet, it will be created.

Authorization

In non-network deployments, a user can update variables are updated for which the user started the process or if the user is involved in any of the process’s tasks.

If networks are enabled, the authenticated user can update variables inside their network.

In non-network deployments, administrators can see all variables and perform all operations on variables. In network deployments, network administrators can see all variables in their network and perform all operations on variables in their network.

Method

Using the HTTP PUT method:-

tasks/<taskId>/variables/<variableName>>

Example request URL

https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/tasks/153/variables/bpm:priority

POST body

Property Type JSON Type Description
name string string The name of variable the to update. It should match the name in the URL.
value string, number or boolean string The value of variable the to update.
type string which points to a valid data-type, for example d:int or d:text . string An optional type in which to store the variable. If specified, the value is converted to the required type based on the ‘value’ property supplied. When type is omitted, the value will be based on the JSON-type of the variable, text , number , boolean .
scope string which points to a valid data-type, for example d:int or d:text . enumerated string An optional scope. If local is specified, the variable is stored locally in the task. If global is specified, the variable stored in the process instance and is available for other tasks and activities during the life of the process. The default is local.

Example POST body

[{
  "name": "bpm_priority",
  "value": 1,
  "type": "d_int"",
  "scope": "local"  
}]

Example response body

{
   "name": "bpm_priority",
   "value": 1,
   "type": "d_int"
}
         
Parent topic: Tasks [108]

Delete a task variable

Use this to delete a task variable.

Authorization

An authenticated user can only delete a task variable if the authenticated user has started the process or if the user is involved in any of the process’s tasks.

If networks are enabled, the authenticated user can delete variables inside their network.

In non-network deployments, administrators can see all variables and perform all operations on variables. In network deployments, network administrators can see all variables in their network and perform all operations on variables in their network.

Method

Using the HTTP DELETE method:-

taskss/<taskId>/variables/<variableName>

Example request URL

https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/tasks/153/variables/bpm:priority

Response

  • If the request is successful the variable is removed and an HTTP No Content (status 204) is returned.
  • If the taskId does not exist in this network, an HTTP Not Found (status 404) is returned.
  • If the variableName does not exist for this taskId, an HTTP Not Found (status 404) is returned.
Parent topic: Tasks [108]

Get the items in a task

Use this to get items in a specific task.

Authorization

An authenticated user will have access to a task's items if the user has started the process or if the user is involved in any of the task’s items. In a network, only items for a process that is inside the given network are returned.

In non-network deployments, administrators can see all tasks and perform all operations on those tasks. In network deployments, network administrators can see all tasks in their network and perform all operations on tasks in their network.

Method

Using the HTTP GET method:-

tasks/<taskId>/items

Example request URL

https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/tasks/153/items

Response

  • If the request is successful an HTTP OK is returned (status 200).

Example response body

The body of the response will be a list containing all the matching items for the specified taskId.

entry: {
             "id": "42eef795-857d-40cc-9fb5-5ca9fe6a0592",
             "name" : "FinancialResults.pdf"
             "title" : "FinancialResults"
             "description" : "the description"
             "mimeType" : "application/pdf"
             "createdBy" : "johndoe"
             "createdAt" : "2010-10-13T14:53:25.950+02:00"
             "modifiedBy" : "johndoe"
             "modifiedAt" : "2010-10-13T14:53:25.950+02:00"
             "size" : 28973
}
Parent topic: Tasks [108]

Add an item to a task

Use this to create an item for a given task. If the item already is part of that task the request will have no effect.

Authorization

In non-network deployments, a user can add items to tasks that the user started or if the user is involved in any of the process’s tasks.

If networks are enabled, the authenticated user can update items inside their network.

In non-network deployments, administrators can add items and perform all operations on processes. In network deployments, network administrators can see all items in their network and perform all operations on processes in their network.

Method

Using the HTTP POST method:-

tasks/<taskId>/items

Example request URL

https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/tasks/153/items

POST body

Property Type JSON Type Description
id string string The node id of the item to add.

Example POST body

{
    "id": "42eef795-857d-40cc-9fb5-5ca9fe6a0592",
}

Response

If the request is successful, an HTTP CREATED is returned (status 201).

Example response body

The added item is returned.

{ entry: {
             "id": "42eef795-857d-40cc-9fb5-5ca9fe6a0592",
             "name" : "FinancialResults.pdf"
             "title" : "FinancialResults"
             "description" : "the description"
             "mimeType" : "application/pdf"
             "createdBy" : "johndoe"
             "createdAt" : "2010-10-13T14:53:25.950+02:00"
             "modifiedBy" : "johndoe"
             "modifiedAt" : "2010-10-13T14:53:25.950+02:00"
             "size" : 28973
}
Parent topic: Tasks [108]

Delete an item

Use this to delete an item from a specific task.

Authorization

An authenticated user can only delete an item if the authenticated user has started the process or if the user is involved in any of the process’s tasks.

If networks are enabled, the authenticated user can delete items inside their network.

In non-network deployments, administrators can delete items and perform all operations on processes. In network deployments, network administrators can delete items in all processes in their network.

Method

Using the HTTP DELETE method:-

tasks/<taskId>/items/<itemId>

Example request URL

https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/tasks/153/items/2eef795-857d-40cc-9fb5-5ca9fe6a0592

Response

  • If the request is successful the item is removed and an HTTP No Content (status 204) is returned.
  • If the processId does not exist in this network, an HTTP Not Found (status 404) is returned.
  • If the itemId does not exist for this taskId, an HTTP Not Found (status 404) is returned.
Parent topic: Tasks [108]

Source URL: https://docs.alfresco.com/5.0/pra/1/topics/pra-welcome.html

Links:
[1] http://cloud.alfresco.com/
[2] https://docs.alfresco.com/../concepts/pra-authentication.html
[3] http://curl.haxx.se/
[4] http://restclient.org/
[5] https://docs.alfresco.com/../../../pra/1/topics/pra-whats-new.html
[6] https://docs.alfresco.com/../../../pra/1/concepts/pra-authentication.html
[7] https://docs.alfresco.com/../../../pra/1/topics/cmis-welcome.html
[8] https://docs.alfresco.com/../../../pra/1/topics/pra-welcome-aara.html
[9] https://docs.alfresco.com/../../../concepts/dev-client-applications.html
[10] https://docs.alfresco.com/pra-welcome.html
[11] https://docs.alfresco.com/../concepts/act-deployments.html
[12] https://docs.alfresco.com/../concepts/act-procdefs.html
[13] https://docs.alfresco.com/../concepts/act-processes.html
[14] https://docs.alfresco.com/../concepts/act-tasks.html
[15] https://docs.alfresco.com/../concepts/cmis-1.1-browser-binding.html
[16] https://docs.alfresco.com/../concepts/cmis-1.1-using-aspects.html
[17] https://docs.alfresco.com/../concepts/cmis-1.1-appending-content.html
[18] https://docs.alfresco.com/../../../pra/1/topics/pra-welcome.html
[19] https://docs.alfresco.com/../../../pra/1/concepts/pra-authentication-onpremise.html
[20] https://docs.alfresco.com/../../../pra/1/concepts/pra-authentication-cloud.html
[21] http://tools.ietf.org/html/draft-ietf-oauth-v2-31
[22] https://developer.alfresco.com
[23] https://docs.alfresco.com/../../../pra/1/concepts/pra-registration.html
[24] https://docs.alfresco.com/../../../pra/1/concepts/pra-authorize.html
[25] https://docs.alfresco.com/../../../pra/1/concepts/pra-refresh-token.html
[26] https://www.alfresco.com/develop/cloud
[27] https://docs.alfresco.com/pra-refresh-token.html
[28] https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=cmis
[29] http://chemistry.apache.org/java/developing/guide.html
[30] http://chemistry.apache.org/
[31] http://docs.oasis-open.org/cmis/CMIS/v1.0/cmis-spec-v1.0.html
[32] http://docs.oasis-open.org/cmis/CMIS/v1.1/CMIS-v1.1.html
[33] https://docs.alfresco.com/../../../pra/1/concepts/cmis-basics.html
[34] https://docs.alfresco.com/../../../pra/1/concepts/cmis-1.1-intro.html
[35] https://docs.alfresco.com/../../../pra/1/concepts/opencmis-ext-intro.html
[36] https://docs.alfresco.com/../../../pra/1/concepts/cmis-getting-started.html
[37] https://docs.alfresco.com/../../../pra/1/concepts/cmis-concepts.html
[38] https://docs.alfresco.com/../../../pra/1/concepts/cmis-query.html
[39] https://docs.alfresco.com/../../../pra/1/concepts/cmis-services-about.html
[40] https://docs.alfresco.com/../../../pra/1/concepts/cmis-objects.html
[41] http://cmis.alfresco.com
[42] http://docs.oasis-open.org/cmis/CMIS/v1.0/os/cmis-spec-v1.0.html
[43] http://docs.oasis-open.org/cmis/CMIS/v1.1/cs01/CMIS-v1.1-cs01.html
[44] https://docs.alfresco.com/../../../pra/1/concepts/cmis-1.1-browser-binding.html
[45] https://docs.alfresco.com/../../../pra/1/concepts/cmis-1.1-using-aspects.html
[46] https://docs.alfresco.com/../../../pra/1/concepts/cmis-1.1-appending-content.html
[47] https://docs.alfresco.com/../../../pra/1/concepts/cmis-1.1-item-support.html
[48] https://docs.alfresco.com/../../../pra/1/concepts/cmis-1.1-browser-binding-get.html
[49] https://docs.alfresco.com/../../../pra/1/concepts/cmis-1.1-browser-binding-post.html
[50] https://docs.alfresco.com/../../../pra/1/concepts/cmis-1.1-browser-binding-succint.html
[51] http://en.wikipedia.org/wiki/Same_origin_policy
[52] http://en.wikipedia.org/wiki/JSONP
[53] https://docs.alfresco.com/cmis-1.1-using-aspects.html
[54] http://wiki.alfresco.com/wiki/CMIS#Aspect_Support
[55] https://docs.alfresco.com/../../../pra/1/concepts/opencmis-ext-using.html
[56] https://docs.alfresco.com/../../../pra/1/tasks/opencmis-ext-workbench.html
[57] https://docs.alfresco.com/../../../pra/1/concepts/opencmis-ext-creating-aspects.html
[58] https://docs.alfresco.com/../../../pra/1/concepts/opencmis-ext-adding.html
[59] http://chemistry.apache.org/java/download.html
[60] http://code.google.com/a/apache-extras.org/p/alfresco-opencmis-extension/downloads/list
[61] https://docs.alfresco.com/opencmis-ext-maven.html
[62] https://docs.alfresco.com/../../../pra/1/concepts/opencmis-ext-maven.html
[63] http://www.apache.org/dyn/closer.cgi/chemistry/opencmis
[64] https://docs.alfresco.com/../../../pra/1/concepts/cmis-domain-model.html
[65] https://docs.alfresco.com/../../../pra/1/concepts/cmis-request.html
[66] https://docs.alfresco.com/../../../pra/1/concepts/cmis-get-service-document.html
[67] https://docs.alfresco.com/../../../pra/1/concepts/cmis-get-node-details.html
[68] https://docs.alfresco.com/../../../pra/1/concepts/cmis-get-node-children.html
[69] https://docs.alfresco.com/../../../pra/1/concepts/cmis-get-document-content.html
[70] https://docs.alfresco.com/../../../pra/1/concepts/cmis-put-document-content.html
[71] https://docs.alfresco.com/../../../pra/1/concepts/cmis-request-url-format.html
[72] https://docs.alfresco.com/../../../pra/1/concepts/cmis-request-url-format-cloud.html
[73] https://docs.alfresco.com/../../../pra/1/concepts/cmis-request-url-format-onpremise.html
[74] https://docs.alfresco.com/../../../pra/1/concepts/pra-getting-started.html
[75] https://docs.alfresco.com/../../../pra/1/concepts/pra-resources.html
[76] https://docs.alfresco.com/../../../pra/1/concepts/pra-entities.html
[77] https://docs.alfresco.com/../../../pra/1/concepts/pra-request.html
[78] https://docs.alfresco.com/../../../pra/1/concepts/pra-response.html
[79] https://docs.alfresco.com/../../../pra/1/concepts/pra-options.html
[80] https://docs.alfresco.com/../../../pra/1/concepts/act-items-and-packages.html
[81] https://docs.alfresco.com/../../../pra/1/concepts/pra-request-url-format.html
[82] https://docs.alfresco.com/../../../pra/1/concepts/pra-request-api-format.html
[83] https://docs.alfresco.com/../../../pra/1/concepts/pra-request-current-user.html
[84] https://docs.alfresco.com/../../../pra/1/concepts/pra-parameters.html
[85] https://docs.alfresco.com/../../../pra/1/concepts/pra-request-url-format-cloud.html
[86] https://docs.alfresco.com/../../../pra/1/concepts/pra-request-url-format-onpremise.html
[87] https://docs.alfresco.com/../../../pra/1/concepts/pra-pagination.html
[88] https://docs.alfresco.com/../../../pra/1/concepts/pra-sorting.html
[89] https://docs.alfresco.com/../../../pra/1/concepts/pra-property-select-get.html
[90] https://docs.alfresco.com/../../../pra/1/concepts/pra-property-select-put.html
[91] https://docs.alfresco.com/../../../pra/1/concepts/pra-property-where.html
[92] https://docs.alfresco.com/../../../pra/1/concepts/pra-property-filter.html
[93] https://docs.alfresco.com/../../../pra/1/concepts/pra-relations-filter.html
[94] https://docs.alfresco.com/pra-relations-filter.html
[95] https://docs.alfresco.com/pra-pagination.html
[96] https://docs.alfresco.com/../../../pra/1/concepts/pra-dates.html
[97] http://www.iso.org/iso/catalogue_detail?csnumber=40874
[98] https://docs.alfresco.com/../../../pra/1/concepts/pra-networks.html
[99] https://docs.alfresco.com/../../../pra/1/concepts/pra-sites.html
[100] https://docs.alfresco.com/../../../pra/1/concepts/pra-sitereq.html
[101] https://docs.alfresco.com/../../../pra/1/concepts/pra-people.html
[102] https://docs.alfresco.com/../../../pra/1/concepts/pra-tags.html
[103] https://docs.alfresco.com/../../../pra/1/concepts/pra-nodes.html
[104] https://docs.alfresco.com/../../../pra/1/concepts/pra-favorites.html
[105] https://docs.alfresco.com/../../../pra/1/concepts/act-deployments.html
[106] https://docs.alfresco.com/../../../pra/1/concepts/act-procdefs.html
[107] https://docs.alfresco.com/../../../pra/1/concepts/act-processes.html
[108] https://docs.alfresco.com/../../../pra/1/concepts/act-tasks.html
[109] https://docs.alfresco.com/../../../pra/1/concepts/pra-networks-get-network.html
[110] https://docs.alfresco.com/../../../pra/1/concepts/pra-networks-get-networks.html
[111] https://docs.alfresco.com/../../../pra/1/concepts/pra-sites-methods.html
[112] https://docs.alfresco.com/../../../pra/1/concepts/pra-sites-containers.html
[113] https://docs.alfresco.com/../../../pra/1/concepts/pra-sites-members.html
[114] https://docs.alfresco.com/../../../pra/1/concepts/pra-sites-get-sites.html
[115] https://docs.alfresco.com/../../../pra/1/concepts/pra-sites-get-site.html
[116] https://docs.alfresco.com/../../../pra/1/concepts/pra-sites-containers-methods.html
[117] https://docs.alfresco.com/../../../pra/1/concepts/pra-sites-containers-get-containers.html
[118] https://docs.alfresco.com/../../../pra/1/concepts/pra-sites-containers-get-container.html
[119] https://docs.alfresco.com/pra-people.html
[120] https://docs.alfresco.com/../../../pra/1/concepts/pra-sites-members-methods.html
[121] https://docs.alfresco.com/../../../pra/1/concepts/pra-sites-members-get-members.html
[122] https://docs.alfresco.com/../../../pra/1/concepts/pra-sites-members-get-member.html
[123] https://docs.alfresco.com/../../../pra/1/concepts/pra-sites-members-post-member.html
[124] https://docs.alfresco.com/../../../pra/1/concepts/pra-sites-members-put-member.html
[125] https://docs.alfresco.com/../../../pra/1/concepts/pra-sites-members-delete-member.html
[126] https://docs.alfresco.com/../../../pra/1/concepts/pra-sitereq-get-sitereqs.html
[127] https://docs.alfresco.com/../../../pra/1/concepts/pra-sitereq-post-sitereq.html
[128] https://docs.alfresco.com/../../../pra/1/concepts/pra-sitereq-put-sitereq.html
[129] https://docs.alfresco.com/../../../pra/1/concepts/pra-sitereq-delete-sitereq.html
[130] https://docs.alfresco.com/../../../pra/1/concepts/pra-people-methods.html
[131] https://docs.alfresco.com/../../../pra/1/concepts/pra-people-sites.html
[132] https://docs.alfresco.com/../../../pra/1/concepts/pra-people-favourite-sites.html
[133] https://docs.alfresco.com/../../../pra/1/concepts/pra-people-preferences.html
[134] https://docs.alfresco.com/../../../pra/1/concepts/pra-people-networks.html
[135] https://docs.alfresco.com/../../../pra/1/concepts/pra-people-activities.html
[136] https://docs.alfresco.com/../../../pra/1/concepts/pra-people-get-person.html
[137] https://docs.alfresco.com/pra-sites.html
[138] https://docs.alfresco.com/../../../pra/1/concepts/pra-people-sites-get-sites.html
[139] https://docs.alfresco.com/../../../pra/1/concepts/pra-people-sites-get-site.html
[140] https://docs.alfresco.com/pra-sites-members.html
[141] https://docs.alfresco.com/../../../pra/1/concepts/pra-people-get-favourite-sites.html
[142] https://docs.alfresco.com/pra-favorites.html
[143] https://docs.alfresco.com/pra-people-favourite-sites.html
[144] https://docs.alfresco.com/../../../pra/1/concepts/pra-people-get-preferences.html
[145] https://docs.alfresco.com/../../../pra/1/concepts/pra-people-get-preference.html
[146] https://docs.alfresco.com/pra-networks.html
[147] https://docs.alfresco.com/../../../pra/1/concepts/pra-people-networks-get-network.html
[148] https://docs.alfresco.com/../../../pra/1/concepts/pra-people-networks-get-networks.html
[149] https://docs.alfresco.com/../../../pra/1/concepts/pra-people-activities-get-activities.html
[150] https://docs.alfresco.com/../../../pra/1/concepts/pra-tags-get-tags.html
[151] https://docs.alfresco.com/../../../pra/1/concepts/pra-tags-put-tag.html
[152] https://docs.alfresco.com/../../../pra/1/concepts/pra-nodes-comments.html
[153] https://docs.alfresco.com/../../../pra/1/concepts/pra-nodes-tags.html
[154] https://docs.alfresco.com/../../../pra/1/concepts/pra-nodes-ratings.html
[155] https://docs.alfresco.com/../../../pra/1/concepts/pra-nodes-comments-get-comments.html
[156] https://docs.alfresco.com/../../../pra/1/concepts/pra-nodes-comments-post-comment.html
[157] https://docs.alfresco.com/../../../pra/1/concepts/pra-nodes-comments-put-comment.html
[158] https://docs.alfresco.com/../../../pra/1/concepts/pra-nodes-comments-delete-comment.html
[159] https://docs.alfresco.com/pra-tags.html
[160] https://docs.alfresco.com/../../../pra/1/concepts/pra-nodes-tags-get-tags.html
[161] https://docs.alfresco.com/../../../pra/1/concepts/pra-nodes-tags-post-tag.html
[162] https://docs.alfresco.com/../../../pra/1/concepts/pra-nodes-tags-delete-tag.html
[163] https://docs.alfresco.com/../../../pra/1/concepts/pra-nodes-ratings-get-ratings.html
[164] https://docs.alfresco.com/../../../pra/1/concepts/pra-nodes-ratings-get-rating.html
[165] https://docs.alfresco.com/../../../pra/1/concepts/pra-nodes-ratings-delete-rating.html
[166] https://docs.alfresco.com/../../../pra/1/concepts/pra-nodes-ratings-post-rating.html
[167] https://docs.alfresco.com/../../../pra/1/concepts/pra-favorites-get-favorites.html
[168] https://docs.alfresco.com/../../../pra/1/concepts/pra-favorites-get-favorite.html
[169] https://docs.alfresco.com/../../../pra/1/concepts/pra-favorites-post-favorite.html
[170] https://docs.alfresco.com/../../../pra/1/concepts/pra-favorites-delete-favorite.html
[171] https://docs.alfresco.com/../../../pra/1/concepts/act-deployments-get-deployments.html
[172] https://docs.alfresco.com/../../../pra/1/concepts/act-deployments-get-deployment.html
[173] https://docs.alfresco.com/../../../pra/1/concepts/act-procdefs-get-procdefs.html
[174] https://docs.alfresco.com/../../../pra/1/concepts/act-procdefs-get-procdef.html
[175] https://docs.alfresco.com/../../../pra/1/concepts/act-procdefs-get-image.html
[176] https://docs.alfresco.com/../../../pra/1/concepts/act-procdefs-get-form-model.html
[177] https://docs.alfresco.com/../../../pra/1/concepts/act-processes-post-process.html
[178] https://docs.alfresco.com/../../../pra/1/concepts/act-processes-get-processes.html
[179] https://docs.alfresco.com/../../../pra/1/concepts/act-processes-get-process.html
[180] https://docs.alfresco.com/../../../pra/1/concepts/act-processes-delete-process.html
[181] https://docs.alfresco.com/../../../pra/1/concepts/act-processes-get-variables.html
[182] https://docs.alfresco.com/../../../pra/1/concepts/act-processes-post-variables.html
[183] https://docs.alfresco.com/../../../pra/1/concepts/act-processes-put-variables.html
[184] https://docs.alfresco.com/../../../pra/1/concepts/act-processes-delete-variables.html
[185] https://docs.alfresco.com/../../../pra/1/concepts/act-processes-get-tasks.html
[186] https://docs.alfresco.com/../../../pra/1/concepts/act-processes-get-items.html
[187] https://docs.alfresco.com/../../../pra/1/concepts/act-processes-post-items.html
[188] https://docs.alfresco.com/../../../pra/1/concepts/act-processes-delete-item.html
[189] https://docs.alfresco.com/act-items-and-packages.html
[190] https://docs.alfresco.com/../../../pra/1/concepts/act-tasks-get-tasks.html
[191] https://docs.alfresco.com/../../../pra/1/concepts/act-tasks-get-task.html
[192] https://docs.alfresco.com/../../../pra/1/concepts/act-tasks-put-task.html
[193] https://docs.alfresco.com/../../../pra/1/concepts/act-tasks-get-form-model.html
[194] https://docs.alfresco.com/../../../pra/1/concepts/act-tasks-get-variables.html
[195] https://docs.alfresco.com/../../../pra/1/concepts/act-tasks-post-variables.html
[196] https://docs.alfresco.com/../../../pra/1/concepts/act-tasks-put-variables.html
[197] https://docs.alfresco.com/../../../pra/1/concepts/act-tasks-delete-variables.html
[198] https://docs.alfresco.com/../../../pra/1/concepts/act-tasks-get-items.html
[199] https://docs.alfresco.com/../../../pra/1/concepts/act-tasks-post-items.html
[200] https://docs.alfresco.com/../../../pra/1/concepts/act-tasks-delete-item.html