...
Page Properties |
---|
|
Product Version | 2.4 |
---|
Report Note | presentable |
---|
Assignee | Antje, Nils |
---|
Resources & Remarks Modification History |
Name | Date | Product Version | Action |
---|
Antje | 08 FEB 2021 | 2.4 | New page properties macro. |
...
This Interceptor can be trigger by
- an object import,
- an update of the content
- an update or the metadata
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.
...
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 endpoint | The target URL must be a POST endpoint accepting a multipart request body and returning a list of objects. |
---|
Modification History Name | Date | Product Version | Action |
---|
Antje | 08 FEB 2021 | 2.4 | New page properties macro. |
|
As of Version | 2.4 |
---|
HTTP Method | POST |
---|
Response Format | JSON |
---|
Description | The target URL must be a POST endpoint accepting a multipart request body and returning a list of This Interceptor can be trigger 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 system 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 parameter action that indicates 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 whole object list as soon as one object satisfies the predicate . Within the interceptor, any user-defined operation can be executed on the corresponding metadata, e.g. by calling an external endpoint. Afterwards, the modified multipart has to be routed back to continue the regular process at the 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. The metadata of the final objects are returned. | Requirements for external endpoint | /api/dms/objects .
|
---|
Affected API Requests | POST /api/dms/objects POST /api/dms/objects/{objectId} PATCH /api/dms/objects/{objectId} POST /api/dms/objects/{objectId}/contents/file |
---|
Restart Service | Repository service |
---|
Header | Authorization-Header |
---|
Predicate | The predicate is applied on all objects of the object list in the "data" part. If at least one object matches, the interceptor is called. |
---|
...
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.
Code Block |
---|
title | data part of the original request |
---|
| {
"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 Block |
---|
title | data part in the enriched multipart taken by the interceptor |
---|
| {
"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
}
} ]
} |
|
...
A content update can be identified by the action 301 by the action
with the code 30
1
in the options
metadata section. As with Like in the import scenario, content properties are available stream properties are available in the enriched multipart, and depending on the document a text rendition can also be available.
There is no "data" part in the original requestThe initial request does not contain a multipart body and thus no data part can be shown here.
|
Code Block |
---|
title | data part in the enriched multipart taken by the interceptor |
---|
| {
"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" : 301
}
} ]
} |
|
...
A metadata update can be identified by the action 300 by the action
with the code 30
1
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 Block |
---|
title | data part of the original request |
---|
| {
"objects" : [ {
"properties" : {
"description" : {
"value" : "this is a new description"
}
}
} ]
} |
|
Code Block |
---|
title | data part in the enriched multipart taken by the interceptor |
---|
| {
"objects" : [ {
"properties" : {
"description" : {
"value" : "this is a new description"
},
"system:objectId" : {
"value" : "50971948-019a-493f-bdf5-571e91e61236"
}
},
"options" : {
"action" : 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"
}
}
}
}
} ]
} |
|
...