Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


...

Page Properties
hiddentrue
idDONE

Product Version2.4

...

Report Note

...

presentable

...

This Interceptor can be trigger by 

  • an object import,
  • an update of the content
  • an update or the metadata
  • or a tag update.

...

AssigneeAntje, Nils

Resources & Remarks

Nils' original description:

A multipart request body is posted. It always contains a "data" part, that contains an object list with the metadata of the affected objects. On an import or content update it can contains further parts as with renditions.

The majority of the metadata in the "data" part is still raw. That means it is not yet normalized, validated and system properties are not yet set. Only content properties are available in case of import or content update. For more details take a look at the examples below.

If the regular import route should be continued, pass the multipart to http://registry/api/dms/objects.
The metadata of the final objects are returned.

Requirements for external endpointThe target URL must be a POST endpoint accepting a multipart request body and returning a list of objects.

...

POST /api/dms/objects

POST /api/dms/objects/{objectId}
PATCH /api/dms/objects/{objectId}
POST /api/dms/objects/{objectId}/contents/file

POST /api/dms/objects/tags/{name}/state/{state}?query=<SQL>


Modification History

NameDateProduct VersionAction
Antje08 FEB 20212.4New page properties macro.
Agnieszka26 FEB 20212020 WinterrLANG



As of Version2020 Winter
HTTP MethodPOST
Response FormatJSON
Predicate

The predicate is applied on all objects of the objects  list in the data part of the multipart body after enrichment. If at least one object matches, the interceptor is called.

Description

It can be triggered by

  • an object import,
  • an update of the content or
  • an update of the metadata.

The take-off point of the interceptor is after the REPOSITORY service. The initial request body is already normalized, validated and enriched with content stream properties as can be seen in the examples provided below.

The enriched multipart request body is taken by the interceptor. It always contains a data part, that contains an objects list with the metadata of the affected objects. For each object, the options section contains the action parameter that specifies the type of the call in an action code.
The predicate is applied to every single object in the list. The interceptor is triggered for the entire object list as soon as one object meets the predicate

Within the interceptor, any user-defined operation can be executed on the corresponding metadata by calling the external endpoint specified as url in the interceptor configuration. Afterwards, the modified multipart has to be routed back to continue the regular process at a suitable point.

If the interceptor should continue the regular process exactly at the take-off point, pass the multipart to http://registry/api/dms/objects.

Requirements for external endpoint The target URL must be a POST endpoint accepting a multipart request body and returning a list of objects as JSON.
Affected API Requests

POST /api/dms/objects

POST /api/dms/objects/{objectId}

/tags


PATCH /api/dms/objects/{

name

objectId}
POST /api/dms/objects/{objectId}/

tags/{name}/state/{state}

contents/file

Restart Service

Repository service

HeaderAuthorization-Header
PredicateThe predicate is applied on all objects of the object list in the "data" part. If at least one object matches, the interceptor is called.

Examples

...

Importing Content

If an object with content is imported, the received data part in enriched multipart taken by the interceptor contains content stream properties . And depending in its data part. Depending on the document there can also be a text rendition.

...

. An import can be identified by the action with the code 100 or 101 in the options metadata section.

Data part of the original requestData part in the enriched multipart taken by the interceptor


Code Block
{
  "objects" : [ {
    "properties" : {
      "system:objectTypeid" : {
        "value" : "miscellaneous"
      },
      "name" : {
        "value" : "my document"
      },
      "description" : {
        "value" : "this is a test document"
      }
    },
    "contentStreams" : [ {
      "mimeType" : "message/rfc822",
      "fileName" : "content.eml",
      "cid" : "content"
    } ]
  } ]
}
Code Blocktitledata part in the interceptor



Code Block
{
  "objects" : [ {
    "properties" : {
      "system:objectTypeid" : {
        "value" : "miscellaneous"
      },
      "name" : {
        "value" : "my document"
      },
      "description" : {
        "value" : "this is a test document"
      }
    },
    "contentStreams" : [ {
      "contentStreamId" : "85E76328-6651-11EB-88B6-71C8C8177575",
      "archivePath" : "default/DOCUMENT/5E/76/3/",
      "length" : 42938,
      "mimeType" : "message/rfc822",
      "fileName" : "content.eml",
      "digest" : "328B2AF519C144050A43EBBFFE21CC722C4E5A6DB40CD1DDCD5A7A54AFA6EE72",
      "repositoryId" : "repo242"
    } ],
    "renditions" : [ {
      "mimeType" : "text/plain",
      "kind" : "text",
      "contentStream" : {
        "length" : 40963,
        "mimeType" : "text/plain",
        "fileName" : "content.txt",
        "cid" : "rendition_195"
      }
    } ],
    "options" : {
      "traceid" : "a78d178f712cbd75",
      "analyzeMimeType" : true,
      "analyzeContent" : true,
      "action" : 101
    }
  } ]
}

...


Updating Content

A content update can be identified by the existence of a "currentVersion" and the action "updateContent" by the action with the code 301 in the options metadata section. As with Like in the import scenario, content stream properties are available available in the enriched multipart, and depending on the document a text rendition can also be available.

There is no "data" part in
Data part of the original request
Code Blocktitledata
Data part in the enriched multipart taken by the interceptor

The initial request does not contain a multipart body and thus no data part can be shown here.




Code Block
{
  "objects" : [ {
    "properties" : {
      "system:objectId" : {
        "value" : "50971948-019a-493f-bdf5-571e91e61236"
      },
      "system:objectTypeId" : {
        "value" : "appTest:miscellaneous"
      }
    },
    "contentStreams" : [ {
      "contentStreamId" : "9C9EDCC3-6716-11EB-B18C-A9EA85931B27",
      "archivePath" : "default/DOCUMENT/C9/ED/C/",
      "length" : 14157,
      "mimeType" : "image/jpeg",
      "fileName" : "test2.txt",
      "digest" : "998FAFD7B3045767B64463C46AB267A7DCC442E28F0FAF5D68C6A32E7DA8987F",
      "repositoryId" : "repo242"
    } ],
    "options" : {
      "currentVersion" : {
        "properties" : {
          "system:traceId" : {
            "value" : "8e57d683bdc36de5"
          },
          "system:objectTypeId" : {
            "value" : "appTest:miscellaneous"
          },
          "system:versionNumber" : {
            "value" : 3
          },
          "system:createdBy" : {
            "value" : "275c826c-6a61-4e89-9512-8d935a1631e5"
          },
          "system:creationDate" : {
            "value" : "2021-02-03T21:17:36.400Z"
          },
          "appTest:name" : {
            "value" : "my document"
          },
          "system:lastModificationDate" : {
            "value" : "2021-02-04T13:01:37.120Z"
          },
          "system:baseTypeId" : {
            "value" : "system:document"
          },
          "system:tenant" : {
            "value" : "default"
          },
          "appTest:description" : {
            "value" : "this is a new description"
          },
          "system:lastModifiedBy" : {
            "value" : "275c826c-6a61-4e89-9512-8d935a1631e5"
          },
          "system:objectId" : {
            "value" : "50971948-019a-493f-bdf5-571e91e61236"
          }
        }
      },
      "traceid" : "9a00c294eaf1e2af",
      "action" : 
"updateContent"
301
    }
  } ]
}

...



Updating Metadata

A metadata update can be identified by the existence of a "currentVersion" and the action "updateMetadata" identified by the action with the code 300 in the options. The object id  metadata section of the enriched request body. Moreover, the objectId is added to the properties of the original request.

Code Blocktitledata
Data part of the original requestData part in the enriched multipart taken by the interceptor


Code Block
{
  "objects" : [ {
    "properties" : {
      "description" : {
        "value" : "this is a new description"
      }
    }
  } ]
}



Code Block
title
data part in the interceptor
{
  "objects" : [ {
    "properties" : {
      "description" : {
        "value" : "this is a new description"
      },
      "system:objectId" : {
        "value" : "50971948-019a-493f-bdf5-571e91e61236"
      }
    },
    "options" : {
	  "action" : 
"updateMetadata"
300,
      "preserve_missing_properties" : true,
      "currentVersion" : {
        "properties" : {
          "system:traceId" : {
            "value" : "df4735bd88e94678"
          },
          "system:objectTypeId" : {
            "value" : "appTest:miscellaneous"
          },
          "system:versionNumber" : {
            "value" : 1
          },
          "system:createdBy" : {
            "value" : "275c826c-6a61-4e89-9512-8d935a1631e5"
          },
          "system:creationDate" : {
            "value" : "2021-02-03T21:17:36.400Z"
          },
          "appTest:name" : {
            "value" : "my document"
          },
          "system:lastModificationDate" : {
            "value" : "2021-02-03T21:17:36.400Z"
          },
          "system:baseTypeId" : {
            "value" : "system:document"
          },
          "system:tenant" : {
            "value" : "default"
          },
          "appTest:description" : {
            "value" : "this is a test document"
          },
          "system:lastModifiedBy" : {
            "value" : "275c826c-6a61-4e89-9512-8d935a1631e5"
          },
          "system:objectId" : {
            "value" : "50971948-019a-493f-bdf5-571e91e61236"
          }
        }
      }
    }
  } ]
}