Alfresco is an integrated Enterprise Content Management system. Alfresco combines server and database. The interaction between client and server is by way of REST-services.
REST is an architectural style of web-services based on existing well known standards (such as HTTP, URI, XML) which are controlled by W3C consortium.
The list of useful Alfresco REST – services, with detailed description
To create defined type folder using full path to parent folder
url: "/../alfresco/service/api/site/folder/" + siteName +
"/documentLibrary/" + parentFolderPath
method: "POST"
json: {
name: name
type: folderType
}
siteName – website name created in Alfresco;
parentFolderPath – path to parent folder;
name – folder name;
type – folder type.
Example:
url: "/../alfresco/service/api/site/folder/example/
documentLibrary/books"
method: "POST"
json: {
name: "Pushkin"
type: "cm:folder"
}
After making the request, “Pushkin” folder is created. This folder is situated in “books” folder of documents library on the “example” website.
To create folder by nodeRef
nodeRef is an object id in Alfresco. Each object has its own nodeRef. This request creates a new object inside the given object of folder type.
xml = '<?xml version="1.0" encoding="utf-8"?>' +
'<entry xmlns="http://www.w3.org/2005/Atom"
xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/"
xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/">' +
'<title>' + folderName + '</title>' +
'<summary>' + folderName + '</summary>' +
'<cmisra:object>' +
'<cmis:properties>' +
'<cmis:propertyId
propertyDefinitionId="cmis:objectTypeId">' +
'<cmis:value>' + folderType + '</cmis:value>' +
'</cmis:propertyId>' +
'</cmis:properties>' +
'</cmisra:object>' +
'</entry>';
url: "/../alfresco/service/api/node/workspace/SpacesStore/" +
nodeRef + "/children"
method: "POST"
headers: {
"Content-Type": "application/atom+xml;type=entry"
}
xml: xml
folderName – folder name;
folderType – folder type;
nodeRef – folder id in Alfresco.
Example:
nodeRef = b544cd67-e839-4c60-a616-9605fa2affb7;
xml = '<?xml version="1.0" encoding="utf-8"?>' +
'<entry xmlns="http://www.w3.org/2005/Atom"
xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/"
xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/">' +
'<title>Example of creating a folder</title>' +
'<summary>Example of creating a folder</summary>' +
'<cmisra:object>' +
'<cmis:properties>' +
'<cmis:propertyId
propertyDefinitionId="cmis:objectTypeId">' +
'<cmis:value>cm:folder</cmis:value>' +
'</cmis:propertyId>' +
'</cmis:properties>' +
'</cmisra:object>' +
'</entry>';
url: "/../alfresco/service/api/node/workspace/SpacesStore/" +
nodeRef + "/children"
method: "POST"
headers: {
"Content-Type": "application/atom+xml;type=entry"
}
xml: xml
The folder named “Example of creating a folder” will be created inside the directory.
To get information about website
url: "/../alfresco/service/api/sites/" + siteName
method: "GET"
siteName – website name created in Alfresco.
Returns data in json format.
Example:
url: "/../alfresco/service/api/sites/example"
method: "GET"
Website data (in json format) will be returned. If such a website doesn’t exist, then the error 404 “Not found” will be returned with that json reporting about it.
Select query with possibility to carry a query as parameter
url: "/../alfresco/s/cmis/query?q="
method: "GET"
Example:
url: "/../alfresco/s/cmis/query?q=SELECT * FROM cmis:folder
WHERE cmis:name='books'"
method: "GET"
After query execution, the information about folder named “books” will be returned.
To delete folder or document by nodeRef
url: "/../alfresco/service/api/node/workspace/SpacesStore/" +
nodeRef + "/descendants?continueOnFailure=true"
method: "DELETE"
nodeRef – document/folder id in Alfresco.
To get object data by nodeRef
url: "/../alfresco/service/api/node/workspace/SpacesStore/" +
nodeRef
method: "GET"
Returns data in xml format.
To get the data of object children by nodeRef
url: "/../alfresco/service/api/node/workspace/SpacesStore/" +
nodeRef + "/children"
method: "GET"
Returns data in xml format.
To update data in the object by nodeRef
url: "/../alfresco/service/api/node/workspace/SpacesStore/" +
nodeRef + "/formprocessor"
method: "POST"
json: jsonData
Example:
url: "/../alfresco/service/api/node/workspace/SpacesStore/
4bf1/formprocessor"
json: {
prop_cm_name: "New name"
prop_cm_title: "New title"
}
Change old name and title of the object with nodeRef equals 4bf1 to new name and title.
If needed, one can refill the list of updated fields by means of adding they to json in the form: prop_field name.
Example:
json: {
prop_minPrice: 1 250
prop_maxPrice: 50 250
}
Login
url: "/../alfresco/service/api/login"
method: "POST"
json: {
"username": username
"password": password
}
Returns the ticket (authorisation identifier) in case of successful authorisation. The ticket lifetime is one hour. If such approach is taken, then this ticket should be added in each request, otherwise basic http authorisation will be requested.
Example:
url: "/../alfresco/s/cmis/query?q=SELECT *
FROM cmis:folder&alf_ticket=" + ticket
url: "/../alfresco/service/api/sites/example?alf_ticket="
+ ticket
Ticket validation checking
url: "/../alfresco/service/api/login/ticket/" + ticket
method: "GET"
ticket – received at authorisation. If the ticket is out of date, then the error will be returned and basic http authorisation will be requested. If the ticket is valid, then the current ticket will be returned.
Logout
url: "/../alfresco/service/api/login/ticket/" + ticket
method: "DELETE"
Useful links:
- Formal documentation RESTful API
- Alfresco wiki
- cmis request family