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:
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" } }
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.
We've updated our public API to give your applications easier access to your data.
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.
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.
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.
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.
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.
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" } } ] } }
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" }
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.
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.
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.
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:
A query can also be paged for user interface presentation.
CMIS services include the following:
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.
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.
Document objects can also have renditions that represent alternate file types of the document. Only one rendition type, a thumbnail, is well defined.
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.
rootFolderUrl repositoryUrl
<rootFolderUrl>?objectId=<objectId>
<rootFolderUrl>/<object path>
<repositoryUrl>?cmisselector=<selector>
cmisselector=childrenThe 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=childrenAll content will be returned as JSON by default.
<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)“ } } )
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>
http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/browser/root/sites/test/documentLibrary/Presentations?cmisselector=children&succinct=true
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.
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
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%'
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.
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.
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.
http://localhost:8080/alfresco/api/-default-/cmis/versions/1.1/atom
For a Browser binding, use http://localhost:8080/alfresco/api/-default-/cmis/versions/1.1/browser.
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.
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!"); } }
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.
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:
The four HTTP methods are used to support the traditional Create, Read, Update, and Delete (CRUD) operations of content management:
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:
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:
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.
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.
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.
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.
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. |
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.
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. |
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.
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
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
The request body is the new content of the document.
Some updated text.
If the request is successful an HTTP CREATED response (status 201) is returned.
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 Alfresco REST API operates on the following entity types:
A logical group of entities is termed a collection.
The four HTTP methods are used in the following ways:
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:
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:
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
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
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:
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.
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
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" }
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.
The properties parameter is a comma-separated list of property names:-
properties=property1,property2...
sitesAlfresco 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,descriptionThe 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.
relations=entity1,entity2,...
sites?relations=containers,membersAlfresco 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" } } ] } } } } ] } }
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
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" : { "containers" : { "list" : { "pagination" : { "count" : 1, "hasMoreItems" : false, "totalItems" : 1, "skipCount" : 0, "maxItems" : 100 }, "entries" : [ { "entry" : { "id" : "b9f8c112-66b9-4733-a77d-46e61c395706", "folderId" : "documentLibrary" } } ] } } }
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" } } ] } }
An API call which fails for some reason will return an error object containing these properties:-
{ "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.
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"
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
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/nodes
{ "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" } } } ] } }
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.
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 |
"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" }
Lists of these entities are returned ordered by ascending id.
Use this to get information for a specific network.
Using the HTTP GET method:
networks/<networkId>
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/networks/yourcompany.com
{ "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" }
Use this to get a list of networks for the current authenticated user.
Using the HTTP GET method on the root URL.
https://api.alfresco.com/
{ "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" } } ] } }
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. |
{ "title":"Fred Bloggs's Home", "description":"Fred Bloggs's private home site.", "visibility":"PRIVATE", "id":"fred-bloggs-yourcompany-com" }
Use this to get a list of sites in your network.
Using the HTTP GET method:
sites
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/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" } } ] } }
Use this to get a site object for a specific site.
Using the HTTP GET method:
sites/<siteId>
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/sites/fred-bloggs-yourcompany-com
{ "entry":{ "title":"Fred Blogg's Home", "description":"Fred Blogg's private home site.", "visibility":"PRIVATE", "id":"fred-bloggs-yourcompany-com" } }
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. |
{ "folderId":"documentLibrary", "id":"7fb6c69b-f462-429a-a168-87762f660c65" }
Lists of these entities are returned ordered by ascending folderId.
Use this to get a list of the top-level containers object for a specific site.
Using the HTTP GET method:-
sites/<siteId>/containers
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/sites/fred-bloggs-yourcompany-com/containers
{ "list":{ "pagination":{ "count":1, "hasMoreItems":false, "skipCount":0, "maxItems":100 }, "entries":[ { "entry":{ "folderId":"documentLibrary", "id":"7fb6c69b-f462-429a-a168-87762f660c65" } } ] } }
Use this to get the container object for a specific container id.
Using the HTTP GET method:
sites/<siteId>/containers/<containerId>
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/sites/fred-bloggs-yourcompany-com/containers/7fb6c69b-f462-429a-a168-87762f660c65
{ "entry":{ "folderId":"documentLibrary", "id":"7fb6c69b-f462-429a-a168-87762f660c65" } }
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. |
{ "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" } }
Lists of these entities are returned ordered by ascending (lastName, firstName, role).
Use this to get a list of members of a specific site.
Using the HTTP GET method:
sites/<siteId>/members
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/sites/fred-bloggs-yourcompany-com/members
{ "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" } } ] } }
Use this to get information for a specific member of a specific site.
Using the HTTP GET method:
sites/<siteId>/members/<personId>
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/sites/fred-bloggs-yourcompany-com/members/fred.bloggs@yourcompany.com
{ "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" } }
Use this to create a new member of a specific site using a specific personId.
Using the HTTP POST method:-
sites/<siteId>/members
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/sites/fred-bloggs-yourcompany-com/members
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. |
{ "id": "joe.bloggs@yourcompany.com", "role": "SiteConsumer" }
{ "entry":{ "id":"fred.bloggs@yourcompany.com", "role":"SiteConsumer" } }
Use this to update an existing member of a site.
Using the HTTP PUT method:
sites/<siteId>/members/<personId>
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/sites/fred-bloggs-yourcompany-com/members/joe.bloggs@yourcompany.com
Property | Type | JSON Type | Description |
---|---|---|---|
role | enumerated type | string | The new role for this person. Possible values are SiteConsumer, SiteCollaborator, SiteContributor, and SiteManager. |
{ 'role': 'SiteManager' }
{ "entry":{ "id":"joe.bloggs@yourcompany.com", "role":"SiteManager" } }
Use this to remove a person's membership of a specific site.
Using the HTTP DELETE method:
sites/<siteId>/members/<personId>
A personID is always the email address that they registered with
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/sites/fred-bloggs-yourcompany-com/members/fred.bloggs@yourcompany.com/
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. |
{ "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" } } }
Lists of these entities are returned ordered by ascending site title.
Use this to get a list of site membership requests for a specific person.
Using the HTTP GET method:
people/>personId>/site-membership-requests
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/fred.bloggs@yourcompany.com/site-membership-requests
{ "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" } } } ] } }
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.
Using the HTTP POST method:
people/<personId>/site-membership-requests
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/-me-/site-membership-requests
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. |
{ "id" : "secret-site", "message" : "I need this access for national security reasons!" }
{ "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" } } } }
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.
Using the HTTP PUT method:
people/<personId>/site-membership-requests/<siteId>
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/-me-/site-membership-requests/secret-site
Property | Type | JSON Type | Description |
---|---|---|---|
message | string | string | An optional message describing why site membership is being requested. |
{ "message" : "I need this access for national security reasons!" }
{ "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" } } }
Use this to remove a site membership request.
Using the HTTP DELETE method:
people/<personId>/site-membership-requests/<siteId>
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/-me-/site-membership-requests/secret-site
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 |
{ "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" } }
Get information about a specific person.
Using the HTTP GET method:
people/<personId>
A personID is always the email address that they registered with
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/fred.bloggs@yourcompany.com
{ "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.
For more information on the site object, see Sites [137].
Use this to get a list of sites that a specific person is a member of.
Using the HTTP GET method:
people/<personId>/sites
A personID is always the email address that they registered with.
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/fred.bloggs@yourcompany.com/sites
{ "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.
Get information about a person's membership of a specific site.
Using the HTTP GET method:
people/<personId>/sites/<siteId>
A personID is always the email address that they registered with
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/fred.bloggs@yourcompany.com/sites/fred-bloggs-yourcompany-com
{ "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.
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. |
{ "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." } } ] } }
Lists of these entities are returned ordered by ascending title.
Use this to get a list of sites that a specific person is a member of (Deprecated).
Using the HTTP GET method:-
people/<personId>/favorite-sites
A personID is always the email address that they registered with.
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/fred.bloggs@yourcompany.com/favorite-sites
{ "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.
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. |
{ "value":true, "id":"org.alfresco.share.sites.favourites.fred-bloggs-yourcompany-com" }
Lists of these entities are returned ordered by ascending id.
Use this to get a list of preferences for a specific person.
Using the HTTP GET method:-
people/<personId>/preferences
A personID is always the email address that they registered with.
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/fred.bloggs@yourcompany.com/preferences
{ "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" } } ] } }
Use this to get the value of a specific preference for a specific person.
Using the HTTP GET method:
people/<personId>/preferences/<preferenceId>
A personID is always the email address that they registered with.
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/fred.bloggs@yourcompany.com/preferences/org.alfresco.share.documents.favourites
{ "entry":{ "value":"4452493d-675f-42f2-9fb9-50ee97c8c5c9,b8a10d93-b383-4127-9f36-ff0ec5f2c450", "id":"org.alfresco.share.documents.favourites" } }
See Networks [146] for information on the network entity.
Use this to get information for a specific network of which a specific person is a member.
Using the HTTP GET method:
people/<personId>/networks/<networkId>
A personID is always the email address that they registered with.
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/fred.bloggs@yourcompany.com/networks/yourcompany.com
{ "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" }
Use this to get a list of networks of which a specific person is a member.
Using the HTTP GET method:-
people/<personId>/networks
A personID is always the email address that they registered with.
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/fred.bloggs@yourcompany.com/networks
{ "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" } } } ] } }
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:-
|
"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"
Lists of these entities are returned ordered by descending postedAt.
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:-
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/-me-/activities?who=me
{ "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" } } ] } }
Property | Type | JSON Type | Description |
---|---|---|---|
id | string | string | The unique id of the tag |
tag | string | string | The value of the tag |
{ "id" : "ed2444b5-d0c1-440b-b5b8-34a53e578091", "tag" : "test tag 1" }
Use this to get a list of all tags used in your network.
Using the HTTP GET method:
tags
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/tags
{ "list" : { "pagination" : { "count" : 1, "hasMoreItems" : false, "skipCount" : 0, "maxItems" : 100 }, "entries" : [ { "entry" : { "id" : "ed2444b5-d0c1-440b-b5b8-34a53e578091", "tag" : "test tag 1" } } ] } }
Use this to update an existing tag.
Using the HTTP PUT method:
tags/<tagId>
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/tags/159d7f5d-680f-4504-b92e-8687d9fd1e82
Property | Type | JSON Type | Description |
---|---|---|---|
tag | string | string | The new tag value |
{ "tag": "new value" }
{ "entry" : { "id" : "159d7f5d-680f-4504-b92e-8687d9fd1e82", "tag" : "new value" } }
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. |
"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
Use this to get a list of all comments on a specific node.
Using the HTTP GET method:
nodes/<nodeId>/comments
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/nodes/159d7f5d-680f-4504-b9ee-8687d9fd1e82/comments
{ { "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 } } ] } }
Use this to create a new comment or comments on a specific node.
Using the HTTP POST method:
nodes/<nodeId>/comments
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/nodes/159d7f5d-680f-4504-b9ee-8687d9fd1e82/comments
Property | Type | JSON Type | Description |
---|---|---|---|
content | string | string | The comment text. Note that you can provide an array of comments. |
Creating a single comment:
{ “content”: “This is a comment” }
Creating more than one comment:
[ { “content”: “This is a comment” }, { “content”: “This is another comment” } ]
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 } ]
Use this to update an existing comment on a specific node.
Using the HTTP PUT method:
nodes/<nodeId>/comments/<commentId>
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/nodes/159d7f5d-680f-4504-b92e-8687d9fd1e82/comments/159d7f5d-680f-4524-b9ee-8687d9221e22
Property | Type | JSON Type | Description |
---|---|---|---|
content | string | string | The new comment text |
{ "content": "This is an updated comment" }
{ "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 } }
Use this to remove a comment.
Using the HTTP DELETE method:
nodes/<nodeId>/comments/<commentId>
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/nodes/e8680e58-0701-4b64-950d-66cce277fbc7/comments/e1f349fb-79ee-4604-a563-16af8b78aa3c
For more information on the tag entities see Tags [159].
Use this to get a list of all tags for a specific node.
Using the HTTP GET method:
nodes/<nodeId>/tags
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/nodes/e8680e58-0701-4b64-950d-66cce277fbc7/tags
{ "list" : { "pagination" : { "count" : 1, "hasMoreItems" : false, "totalItems" : 1, "skipCount" : 0, "maxItems" : 100 }, "entries" : [ { "entry" : { "id" : "3ccdc60e-1853-4cc0-9d29-280a3f7d3c03", "tag" : "test-tag" } } ] } }
Use this to create a new tag or tags on a specific node.
Using the HTTP POST method:
nodes/<nodeId>/tags
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/nodes/159d7f5d-680f-4504-b9ee-8687d9fd1e82/tags
Property | Type | JSON Type | Description |
---|---|---|---|
tag | string | string | The tag to be created. Note that you can provide an array of tags. |
Creating a single tag:
{ "tag": "test-tag-1" }
Creating more than one tag:
[ { "tag":"test-tag-1" }, { "tag":"test-tag-2" } ]
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" } ]
Use this to remove a tag from a specific node.
Using the HTTP DELETE method:
nodes/<nodeId>/tags/<tagId>
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/tags/e8680e58-0701-4b64-950d-66cce277fbc7/tags/3ccdc60e-1853-4cc0-9d29-280a3f7d303
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. |
"id":"likes", "aggregate":{ "numberOfRatings":1 }, "ratedAt":"2012-05-25T09:08:01.846+0000", "myRating":true
Use this to get the ratings on a specific node.
Using the HTTP GET method:
nodes/<nodeId>/ratings
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/nodes/159d7f5d-680f-4504-b9ee-8687d9fd1e82/ratings
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 } } } ] } }
Use this to get a specific rating on a specific node.
Using the HTTP GET method:
nodes/<nodeId>/rating/rating/<ratingId>
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/nodes/159d7f5d-680f-4504-b9ee-8687d9fd1e82/rating/likes
{ "entry" : { "id" : "likes", "aggregate" : { "numberOfRatings" : 0 } } }
Use this to remove a rating.
Using the HTTP DELETE method:
nodes/<nodeId>/ratings/<ratingId>
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/ratings/e8680e58-0701-4b64-950d-66cce277fbc7/ratings/likes
Use this to rate a specific node.
Using the HTTP POST method:
nodes/<nodeId>/ratings
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/nodes/159d7f5d-680f-4504-b9ee-8687d9fd1e82/ratings
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 |
{ "id": "likes", "myRating" : true }
{ "entry" : { "id" : "likes", "aggregate" : { "numberOfRatings" : 1 }, "ratedAt" : "2012-07-30T19:07:34.975+0000", "myRating" : true } }
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. |
{ "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" } }
Lists of these entities are returned ordered by ascending target/type, and then by descending createdAt date.
Use this to get a list of favorites for a specific person. You can tailor the information returned by providing the WHERE HTML parameter.
Using the HTTP GET method:
people/<personId>/favorites
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/fred.bloggs@yourcompany.com/favorites
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:-
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.
{ "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" } } } } ] } }
Use this to get a specific favorite for a specific person.
Using the HTTP GET method:-
people/<personId>/favorites/<targetGuid>
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/-me-/favorites/8ac18731-601b-4bb4-be1a-cd5d252cce3f
{ "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" } } } }
Use this to add a favorite for a specific person.
Using the HTTP POST method:
people/<personId>/favorites
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/-me-/favorites
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. |
{ "target": { "site" : { "guid" : "8ac18731-601b-4bb4-be1a-cd5d252cce3f" } } }
{ "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" } } } }
Use this to remove a favorite of a specific person.
Using the HTTP DELETE method:
people/<personId>/favorites/<targetGuid>
https://api.alfresco.com/yourcompany.com/public/alfresco/versions/1/people/-me-/favorites/8ac18731-601b-4bb4-be1a-cd5d252cce3f
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.
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 |
entry: { "id": "92837492", "name": "activiti-examples.bar", "category": "http://alfresco.org/workflows/examples", "deployedAt": "2010-10-13T14:54:26.750+02:00" }
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.
Using the HTTP GET method:-
deployments
https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/deployments
Name |
Description |
Type |
skipCount |
positive integer |
number |
maxItems |
positive integer |
number |
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" } ...
Use this to get a specific deployment object.
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.
Using the HTTP GET method:-
deployments/<deploymentId>
https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/deployments/92837492
{ entry: { "id": "92837492", "name": "activiti-examples.bar", "category": "http://alfresco.org/workflows/examples", "deployedAt": "2010-10-13T14:54:26.750+02:00", } }
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 |
{ "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 }
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.
Using the HTTP GET method:-
process-definitions
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 |
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 }, ] } }
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.
Using the HTTP GET method:-
process-definitions/<processDefinitionId>
https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/process-definitions/<processDefinitionId>
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, } }
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.
Using the HTTP GET method:-
process-definitions/<processDefinitionId>/image
https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/process-definitions/financialReport:1/image
The body of the response will be an image of content-type image/png.
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.
Using the HTTP GET method:-
process-definitions/<processDefinitionId>/start-form-model
https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/process-definitions/financialReport:1/start-form-model
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"] } ] }
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.
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 |
: { "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" }
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.
Using the HTTP POST method:-
processes
https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/processes
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:
{ "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"] , }
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" } }
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.
Using the HTTP GET method:-
processes
https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/processes
where=( startUserId='kermit' AND businessKey='55' AND variables/nameB MATCHES('elmo%') ).
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'. |
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" }
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.
Using the HTTP GET method:-
processes/<processId>
https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/processes/2
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" }}
Use this to delete a specific process
Using the HTTP DELETE method:-
processes/<processId>
https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/processes/<processId>
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.
Using the HTTP GET method:-
processes/<processId>/variables
https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/processes/2/variables
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" } …
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.
Using the HTTP POST method:-
processes
https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/processes/<processId>/variables
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. |
[{ "name": "bpm_priority", "value": 1, "type": "d_int" }]
{ "name": "bpm_priority", "value": 1, "type": "d_int" }
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.
Using the HTTP PUT method:-
processes
https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/processes/<processId>/variables
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. |
[{ "name": "bpm_priority", "value": 1, "type": "d_int" }]
{ "name": "bpm_priority", "value": 1, "type": "d_int" }
Use this to delete a process variable.
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.
Using the HTTP DELETE method:-
processes/<processId>/variables/<variableName>
https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/processes/2/variables/bpm:priority
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.
Using the HTTP GET method:-
processes/<processId>/tasks
You can use the status parameter to filter the returned tasks:
https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/processes/2/tasks
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" }
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.
Using the HTTP GET method:-
processes/<processId>/items
https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/processes/2/items
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 }
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.
Using the HTTP POST method:-
processes/<processId>/items
https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/processes/2/items
Property | Type | JSON Type | Description |
---|---|---|---|
id | string | string | The node id of the item to add. |
{ "id": "42eef795-857d-40cc-9fb5-5ca9fe6a0592", }
If the request is successful, an HTTP CREATED is returned (status 201).
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 }
Use this to delete an item from a specific process.
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.
Using the HTTP DELETE method:-
processes/<processId>/items/<itemId>
https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/processes/2/items/2eef795-857d-40cc-9fb5-5ca9fe6a0592
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 |
: 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" } ] }
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.
Using the HTTP GET method:-
tasks
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'. |
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" }
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.
Using the HTTP GET method:-
tasks/<taskId>
https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/tasks/2
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" } }
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.
Using the HTTP PUT method:-
tasks/<taskId>?<select-parameter>
https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/tasks/127/variables?select=state,variables
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 |
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" } ] }
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” }
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” }
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” }
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” }
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" } }
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.
Using the HTTP GET method:-
tasks/<taskId>/task-form-model
https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/tasks/152/task-form-model
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"] } }
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.
Using the HTTP GET method:-
tasks/<taskId>/variables
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}.
|
= | Enumerated String |
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" }
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.
Using the HTTP POST method:-
tasks/<taskId>/variables
https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/tasks/153/variables
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. |
[{ "name": "bpm_priority", "value": 1, "type": "d_int" }]
{ "name": "bpm_priority", "value": 1, "type": "d_int" }
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.
Using the HTTP PUT method:-
tasks/<taskId>/variables/<variableName>>
https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/tasks/153/variables/bpm:priority
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. |
[{ "name": "bpm_priority", "value": 1, "type": "d_int"", "scope": "local" }]
{ "name": "bpm_priority", "value": 1, "type": "d_int" }
Use this to delete a task variable.
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.
Using the HTTP DELETE method:-
taskss/<taskId>/variables/<variableName>
https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/tasks/153/variables/bpm:priority
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.
Using the HTTP GET method:-
tasks/<taskId>/items
https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/tasks/153/items
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 }
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.
Using the HTTP POST method:-
tasks/<taskId>/items
https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/tasks/153/items
Property | Type | JSON Type | Description |
---|---|---|---|
id | string | string | The node id of the item to add. |
{ "id": "42eef795-857d-40cc-9fb5-5ca9fe6a0592", }
If the request is successful, an HTTP CREATED is returned (status 201).
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 }
Use this to delete an item from a specific task.
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.
Using the HTTP DELETE method:-
tasks/<taskId>/items/<itemId>
https://api.alfresco.com/yourcompany.com/public/workflow/versions/1/tasks/153/items/2eef795-857d-40cc-9fb5-5ca9fe6a0592
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