Search code examples
alfrescoalfresco-webscripts

Alfresco Restful API to get custom metadata


We are moving to Alfresco Content Management system and there is no direct documentation for retrieving custom metadata.

Is there a way to get custom metadata/ custom properties that I have added to Record category in Alfresco Records Management File plan? Custom metadata is basically the data fields that are in scanned document like name, dob, form id, etc.

Eg: I have created RM site and added the following file plan.

TestCategory
|
--TestFolder1
  |
  --Record1
  --Record2
|
--TestFolder2
  |
  --Record1
  --Record2

These records contains uploaded form(scanned document) along with metadata (custom).

To Retrieve metadata, am using

http://127.0.0.1:8090/alfresco/service/api/metadata/node/workspace/SpacesStore/ed6e2cc6-6dc5-4bfb-bf9d-b450f68863dd?alf_ticket=TICKET_06265902898618fe5a46e67992e07a9d4b72701a

It is returning 405-Method not allowed (GET not supported).

To Retrieve all the subfolders/documents in Folders, m using

http://127.0.0.1:8090/alfresco/service/slingshot/doclib/doclist/documents/site/rm/documentLibrary/TestCat1/TestFolder2

Above one returns

{
  "totalRecords": 1,
  "startIndex": 0,
  "metadata": {
    "repositoryId": "3b9d4f67-dc84-4531-b8b2-4dbcef15e25a",
    "container": "workspace://SpacesStore/7d1349bb-5289-4709-9055-c75c03ab5481",
    "parent": {
      "nodeRef": "workspace://SpacesStore/5d40660e-64d9-4bc4-a75e-ae4ae8b2201a",
      "permissions": {
        "userAccess": {
          "create": true,
          "edit": true,
          "delete": true,
          "cancel-checkout": false,
          "permissions": true
        }
      }
    },
    "onlineEditing": true,
    "itemCounts": {
      "folders": 0,
      "documents": 1
    }
  },
  "items": [
    {
      "nodeRef": "workspace://SpacesStore/65b9b52b-3418-4a85-98b0-d4770cf9399d",
      "nodeType": "cm:content",
      "type": "document",
      "mimetype": "application/pdf",
      "isFolder": false,
      "isLink": false,
      "fileName": "BO (2016-1464237424392).pdf",
      "displayName": "BO (2016-1464237424392).pdf",
      "status": "",
      "title": "þÿ",
      "description": "test description",
      "author": "",
      "createdOn": "2016-05-26T00:37:04.350-04:00",
      "createdBy": "Administrator",
      "createdByUser": "admin",
      "modifiedOn": "2016-05-31T15:50:21.269-04:00",
      "modifiedBy": "Administrator",
      "modifiedByUser": "admin",
      "lastThumbnailModification": "doclib:1464237426243",
      "lockedBy": "",
      "lockedByUser": "",
      "size": "156702",
      "version": "1.0",
      "contentUrl": "api/node/content/workspace/SpacesStore/65b9b52b-3418-4a85-98b0-d4770cf9399d/BO%20(2016-1464237424392).pdf",
      "webdavUrl": "/webdav/Sites/rm/documentLibrary/TestCat1/TestFolder2/BO%20(2016-1464237424392).pdf",
      "actionSet": "document",
      "tags": [],
      "activeWorkflows": "",
      "isFavourite": false,
      "likes": {
        "isLiked": false,
        "totalLikes": 0
      },
      "location": {
        "repositoryId": "3b9d4f67-dc84-4531-b8b2-4dbcef15e25a",
        "site": "rm",
        "siteTitle": "Records Management",
        "container": "documentLibrary",
        "path": "/TestCat1/TestFolder2",
        "file": "BO (2016-1464237424392).pdf",
        "parent": {
          "nodeRef": "workspace://SpacesStore/5d40660e-64d9-4bc4-a75e-ae4ae8b2201a"
        }
      },
      "permissions": {
        "inherited": true,
        "roles": [
          "ALLOWED;ROLE_EXTENDED_READER;ReadRecords;INHERITED",
          "ALLOWED;GROUP_Administrator7d1349bb-5289-4709-9055-c75c03ab5481;Filing;INHERITED",
          "ALLOWED;ROLE_EXTENDED_WRITER;Filing;INHERITED"
        ],
        "userAccess": {
          "create": true,
          "edit": true,
          "delete": true,
          "cancel-checkout": false,
          "permissions": true
        }
      },
      "custom": {},
      "actionLabels": {}
    }
  ]
}

Using PostMan chrome app to test rest api. TIA.

Another way to do this: I found it in Alfresco forums :

 /alfresco/service/api/metadata?nodeRef=workspace://SpacesStore/a2a6c249-    c55d-4d29-8692-3e9cb1f811a8  [GET service]

Solution

  • This should do it. Example request.

    http://localhost:8080/alfresco/service/slingshot/doclib2/node/workspace/SpacesStore/f558838b-24fa-4ea3-bb2a-602c7b4cec41

    Give it a shot, it will return everything you need, not only metadata but for example aspects too.