@twin.org/document-management-service 0.0.3-next.1 → 0.0.3-next.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/es/documentManagementRoutes.js +57 -48
- package/dist/es/documentManagementRoutes.js.map +1 -1
- package/dist/es/documentManagementService.js +45 -46
- package/dist/es/documentManagementService.js.map +1 -1
- package/dist/types/documentManagementService.d.ts +10 -4
- package/docs/changelog.md +142 -0
- package/docs/open-api/spec.json +39 -61
- package/docs/reference/classes/DocumentManagementService.md +5 -5
- package/package.json +2 -2
|
@@ -2,8 +2,8 @@ import { AuditableItemGraphContexts, AuditableItemGraphTypes } from "@twin.org/a
|
|
|
2
2
|
import { Coerce, ComponentFactory, Converter, Guards, Is } from "@twin.org/core";
|
|
3
3
|
import { DocumentContexts, DocumentTypes } from "@twin.org/document-management-models";
|
|
4
4
|
import { SchemaOrgContexts, SchemaOrgTypes } from "@twin.org/standards-schema-org";
|
|
5
|
-
import {
|
|
6
|
-
import { HeaderTypes, HttpStatusCode, MimeTypes } from "@twin.org/web";
|
|
5
|
+
import { UneceDocumentCodeList } from "@twin.org/standards-unece";
|
|
6
|
+
import { HeaderHelper, HeaderTypes, HttpStatusCode, MimeTypes } from "@twin.org/web";
|
|
7
7
|
/**
|
|
8
8
|
* The source used when communicating about these routes.
|
|
9
9
|
*/
|
|
@@ -40,7 +40,7 @@ export function generateRestRoutesDocumentManagement(baseRouteName, componentNam
|
|
|
40
40
|
body: {
|
|
41
41
|
documentId: "2721000",
|
|
42
42
|
documentIdFormat: "bol",
|
|
43
|
-
documentCode:
|
|
43
|
+
documentCode: UneceDocumentCodeList.BillOfLading,
|
|
44
44
|
blob: "SGVsbG8gV29ybGQ=",
|
|
45
45
|
annotationObject: {
|
|
46
46
|
"@context": "https://schema.org",
|
|
@@ -62,7 +62,7 @@ export function generateRestRoutesDocumentManagement(baseRouteName, componentNam
|
|
|
62
62
|
response: {
|
|
63
63
|
statusCode: HttpStatusCode.created,
|
|
64
64
|
headers: {
|
|
65
|
-
[HeaderTypes.Location]: "aig
|
|
65
|
+
[HeaderTypes.Location]: "aig%3A123456"
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
}
|
|
@@ -141,26 +141,26 @@ export function generateRestRoutesDocumentManagement(baseRouteName, componentNam
|
|
|
141
141
|
response: {
|
|
142
142
|
body: {
|
|
143
143
|
"@context": [
|
|
144
|
-
SchemaOrgContexts.
|
|
145
|
-
DocumentContexts.
|
|
146
|
-
DocumentContexts.
|
|
144
|
+
SchemaOrgContexts.Context,
|
|
145
|
+
DocumentContexts.Context,
|
|
146
|
+
DocumentContexts.ContextCommon
|
|
147
147
|
],
|
|
148
148
|
type: SchemaOrgTypes.ItemList,
|
|
149
149
|
[SchemaOrgTypes.ItemListElement]: [
|
|
150
150
|
{
|
|
151
151
|
"@context": [
|
|
152
|
-
|
|
153
|
-
DocumentContexts.
|
|
154
|
-
|
|
152
|
+
SchemaOrgContexts.Context,
|
|
153
|
+
DocumentContexts.Context,
|
|
154
|
+
DocumentContexts.ContextCommon
|
|
155
155
|
],
|
|
156
156
|
type: DocumentTypes.Document,
|
|
157
157
|
id: "2721000:0",
|
|
158
158
|
documentId: "2721000",
|
|
159
159
|
documentIdFormat: "bol",
|
|
160
|
-
documentCode:
|
|
160
|
+
documentCode: UneceDocumentCodeList.BillOfLading,
|
|
161
161
|
documentRevision: 0,
|
|
162
162
|
blobStorageId: "blob-memory:c57d94b088f4c6d2cb32ded014813d0c786aa00134c8ee22f84b1e2545602a70",
|
|
163
|
-
|
|
163
|
+
integrity: "sha256-123456",
|
|
164
164
|
dateCreated: "2024-01-01T00:00:00Z",
|
|
165
165
|
annotationObject: {
|
|
166
166
|
"@context": "https://schema.org",
|
|
@@ -185,26 +185,26 @@ export function generateRestRoutesDocumentManagement(baseRouteName, componentNam
|
|
|
185
185
|
response: {
|
|
186
186
|
body: {
|
|
187
187
|
"@context": [
|
|
188
|
-
SchemaOrgContexts.
|
|
189
|
-
DocumentContexts.
|
|
190
|
-
DocumentContexts.
|
|
188
|
+
SchemaOrgContexts.Context,
|
|
189
|
+
DocumentContexts.Context,
|
|
190
|
+
DocumentContexts.ContextCommon
|
|
191
191
|
],
|
|
192
192
|
type: SchemaOrgTypes.ItemList,
|
|
193
193
|
[SchemaOrgTypes.ItemListElement]: [
|
|
194
194
|
{
|
|
195
195
|
"@context": [
|
|
196
|
-
|
|
197
|
-
DocumentContexts.
|
|
198
|
-
|
|
196
|
+
SchemaOrgContexts.Context,
|
|
197
|
+
DocumentContexts.Context,
|
|
198
|
+
DocumentContexts.ContextCommon
|
|
199
199
|
],
|
|
200
200
|
type: DocumentTypes.Document,
|
|
201
201
|
id: "2721000:0",
|
|
202
202
|
documentId: "2721000",
|
|
203
203
|
documentIdFormat: "bol",
|
|
204
|
-
documentCode:
|
|
204
|
+
documentCode: UneceDocumentCodeList.BillOfLading,
|
|
205
205
|
documentRevision: 0,
|
|
206
206
|
blobStorageId: "blob-memory:c57d94b088f4c6d2cb32ded014813d0c786aa00134c8ee22f84b1e2545602a70",
|
|
207
|
-
|
|
207
|
+
integrity: "sha256-123456",
|
|
208
208
|
dateCreated: "2024-01-01T00:00:00Z",
|
|
209
209
|
annotationObject: {
|
|
210
210
|
"@context": "https://schema.org",
|
|
@@ -255,18 +255,18 @@ export function generateRestRoutesDocumentManagement(baseRouteName, componentNam
|
|
|
255
255
|
response: {
|
|
256
256
|
body: {
|
|
257
257
|
"@context": [
|
|
258
|
-
|
|
259
|
-
DocumentContexts.
|
|
260
|
-
|
|
258
|
+
SchemaOrgContexts.Context,
|
|
259
|
+
DocumentContexts.Context,
|
|
260
|
+
DocumentContexts.ContextCommon
|
|
261
261
|
],
|
|
262
262
|
type: DocumentTypes.Document,
|
|
263
263
|
id: "2721000:0",
|
|
264
264
|
documentId: "2721000",
|
|
265
265
|
documentIdFormat: "bol",
|
|
266
|
-
documentCode:
|
|
266
|
+
documentCode: UneceDocumentCodeList.BillOfLading,
|
|
267
267
|
documentRevision: 1,
|
|
268
268
|
blobStorageId: "blob-memory:c57d94b088f4c6d2cb32ded014813d0c786aa00134c8ee22f84b1e2545602a70",
|
|
269
|
-
|
|
269
|
+
integrity: "sha256-123456",
|
|
270
270
|
dateCreated: "2024-01-01T00:00:00Z",
|
|
271
271
|
annotationObject: {
|
|
272
272
|
"@context": "https://schema.org",
|
|
@@ -289,18 +289,18 @@ export function generateRestRoutesDocumentManagement(baseRouteName, componentNam
|
|
|
289
289
|
response: {
|
|
290
290
|
body: {
|
|
291
291
|
"@context": [
|
|
292
|
-
|
|
293
|
-
DocumentContexts.
|
|
294
|
-
|
|
292
|
+
SchemaOrgContexts.Context,
|
|
293
|
+
DocumentContexts.Context,
|
|
294
|
+
DocumentContexts.ContextCommon
|
|
295
295
|
],
|
|
296
296
|
type: DocumentTypes.Document,
|
|
297
297
|
id: "2721000:0",
|
|
298
298
|
documentId: "2721000",
|
|
299
299
|
documentIdFormat: "bol",
|
|
300
|
-
documentCode:
|
|
300
|
+
documentCode: UneceDocumentCodeList.BillOfLading,
|
|
301
301
|
documentRevision: 1,
|
|
302
302
|
blobStorageId: "blob-memory:c57d94b088f4c6d2cb32ded014813d0c786aa00134c8ee22f84b1e2545602a70",
|
|
303
|
-
|
|
303
|
+
integrity: "sha256-123456",
|
|
304
304
|
dateCreated: "2024-01-01T00:00:00Z",
|
|
305
305
|
annotationObject: {
|
|
306
306
|
"@context": "https://schema.org",
|
|
@@ -377,20 +377,20 @@ export function generateRestRoutesDocumentManagement(baseRouteName, componentNam
|
|
|
377
377
|
id: "DocumentManagementQueryResponseExample",
|
|
378
378
|
response: {
|
|
379
379
|
body: {
|
|
380
|
-
"@context": [SchemaOrgContexts.
|
|
380
|
+
"@context": [SchemaOrgContexts.Context, AuditableItemGraphContexts.Context],
|
|
381
381
|
type: [SchemaOrgTypes.ItemList, AuditableItemGraphTypes.VertexList],
|
|
382
382
|
[SchemaOrgTypes.ItemListElement]: [
|
|
383
383
|
{
|
|
384
384
|
"@context": [
|
|
385
|
-
AuditableItemGraphContexts.
|
|
386
|
-
AuditableItemGraphContexts.
|
|
385
|
+
AuditableItemGraphContexts.Context,
|
|
386
|
+
AuditableItemGraphContexts.ContextCommon
|
|
387
387
|
],
|
|
388
388
|
id: "aig:c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7",
|
|
389
389
|
type: AuditableItemGraphTypes.Vertex,
|
|
390
390
|
dateCreated: "2024-08-22T04:13:20.000Z",
|
|
391
391
|
aliases: [
|
|
392
392
|
{
|
|
393
|
-
"@context": [AuditableItemGraphContexts.
|
|
393
|
+
"@context": [AuditableItemGraphContexts.Context],
|
|
394
394
|
id: "test-id-0",
|
|
395
395
|
type: AuditableItemGraphTypes.Alias,
|
|
396
396
|
dateCreated: "2024-08-22T04:13:20.000Z"
|
|
@@ -398,7 +398,7 @@ export function generateRestRoutesDocumentManagement(baseRouteName, componentNam
|
|
|
398
398
|
],
|
|
399
399
|
resources: [
|
|
400
400
|
{
|
|
401
|
-
"@context": AuditableItemGraphContexts.
|
|
401
|
+
"@context": AuditableItemGraphContexts.Context,
|
|
402
402
|
type: AuditableItemGraphTypes.Resource,
|
|
403
403
|
dateCreated: "2024-08-22T04:13:20.000Z",
|
|
404
404
|
resourceObject: {
|
|
@@ -417,7 +417,7 @@ export function generateRestRoutesDocumentManagement(baseRouteName, componentNam
|
|
|
417
417
|
type: "DigitalDocument",
|
|
418
418
|
name: "bill-of-lading"
|
|
419
419
|
},
|
|
420
|
-
|
|
420
|
+
integrity: "sha256-E3Duqrp6bHojSx+CzDttAToAiP1eFkCDAPBbKLABVGM=",
|
|
421
421
|
blobStorageId: "blob:memory:1370eeaaba7a6c7a234b1f82cc3b6d013a0088fd5e16408300f05b28b0015463",
|
|
422
422
|
dateCreated: "2024-08-22T04:13:20.000Z",
|
|
423
423
|
organizationIdentity: "did:entity-storage:0x0101010101010101010101010101010101010101010101010101010101010101",
|
|
@@ -478,7 +478,7 @@ export async function documentManagementGet(httpRequestContext, componentName, r
|
|
|
478
478
|
Guards.object(ROUTES_SOURCE, "request", request);
|
|
479
479
|
Guards.object(ROUTES_SOURCE, "request.pathParams", request.pathParams);
|
|
480
480
|
Guards.stringValue(ROUTES_SOURCE, "request.pathParams.auditableItemGraphDocumentId", request.pathParams.auditableItemGraphDocumentId);
|
|
481
|
-
const
|
|
481
|
+
const hostingComponent = ComponentFactory.get(httpRequestContext.hostingComponentType ?? "hosting");
|
|
482
482
|
const component = ComponentFactory.get(componentName);
|
|
483
483
|
const result = await component.get(request.pathParams.auditableItemGraphDocumentId, {
|
|
484
484
|
includeBlobStorageMetadata: Coerce.boolean(request.query?.includeBlobStorageMetadata),
|
|
@@ -488,11 +488,15 @@ export async function documentManagementGet(httpRequestContext, componentName, r
|
|
|
488
488
|
extractRuleGroupId: request.query?.extractRuleGroupId,
|
|
489
489
|
extractMimeType: request.query?.extractMimeType
|
|
490
490
|
}, request.query?.cursor, Coerce.integer(request.query?.limit));
|
|
491
|
+
const headers = {
|
|
492
|
+
[HeaderTypes.ContentType]: request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd ? MimeTypes.JsonLd : MimeTypes.Json
|
|
493
|
+
};
|
|
494
|
+
if (Is.stringValue(result.cursor)) {
|
|
495
|
+
headers[HeaderTypes.Link] = HeaderHelper.createLinkHeader(await hostingComponent.buildPublicUrl(httpRequestContext.serverRequest.url), { cursor: result.cursor }, "next");
|
|
496
|
+
}
|
|
491
497
|
return {
|
|
492
|
-
headers
|
|
493
|
-
|
|
494
|
-
},
|
|
495
|
-
body: result
|
|
498
|
+
headers,
|
|
499
|
+
body: result.entries
|
|
496
500
|
};
|
|
497
501
|
}
|
|
498
502
|
/**
|
|
@@ -508,7 +512,6 @@ export async function documentManagementGetRevision(httpRequestContext, componen
|
|
|
508
512
|
Guards.stringValue(ROUTES_SOURCE, "request.pathParams.auditableItemGraphDocumentId", request.pathParams.auditableItemGraphDocumentId);
|
|
509
513
|
const revision = Coerce.integer(request.pathParams.revision);
|
|
510
514
|
Guards.integer(ROUTES_SOURCE, "revision", revision);
|
|
511
|
-
const mimeType = request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd ? "jsonld" : "json";
|
|
512
515
|
const component = ComponentFactory.get(componentName);
|
|
513
516
|
const result = await component.getRevision(request.pathParams.auditableItemGraphDocumentId, revision, {
|
|
514
517
|
includeBlobStorageMetadata: Coerce.boolean(request.query?.includeBlobStorageMetadata),
|
|
@@ -519,7 +522,9 @@ export async function documentManagementGetRevision(httpRequestContext, componen
|
|
|
519
522
|
});
|
|
520
523
|
return {
|
|
521
524
|
headers: {
|
|
522
|
-
[HeaderTypes.ContentType]:
|
|
525
|
+
[HeaderTypes.ContentType]: request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd
|
|
526
|
+
? MimeTypes.JsonLd
|
|
527
|
+
: MimeTypes.Json
|
|
523
528
|
},
|
|
524
529
|
body: result
|
|
525
530
|
};
|
|
@@ -571,14 +576,18 @@ export async function documentManagementQuery(httpRequestContext, componentName,
|
|
|
571
576
|
Guards.object(ROUTES_SOURCE, "request", request);
|
|
572
577
|
Guards.object(ROUTES_SOURCE, "request.query", request.query);
|
|
573
578
|
Guards.stringValue(ROUTES_SOURCE, "request.query.documentId", request.query.documentId);
|
|
574
|
-
const
|
|
579
|
+
const hostingComponent = ComponentFactory.get(httpRequestContext.hostingComponentType ?? "hosting");
|
|
575
580
|
const component = ComponentFactory.get(componentName);
|
|
576
581
|
const result = await component.query(request.query.documentId, request.query?.cursor, Coerce.integer(request.query?.limit));
|
|
582
|
+
const headers = {
|
|
583
|
+
[HeaderTypes.ContentType]: request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd ? MimeTypes.JsonLd : MimeTypes.Json
|
|
584
|
+
};
|
|
585
|
+
if (Is.stringValue(result.cursor)) {
|
|
586
|
+
headers[HeaderTypes.Link] = HeaderHelper.createLinkHeader(await hostingComponent.buildPublicUrl(httpRequestContext.serverRequest.url), { cursor: result.cursor }, "next");
|
|
587
|
+
}
|
|
577
588
|
return {
|
|
578
|
-
headers
|
|
579
|
-
|
|
580
|
-
},
|
|
581
|
-
body: result
|
|
589
|
+
headers,
|
|
590
|
+
body: result.entries
|
|
582
591
|
};
|
|
583
592
|
}
|
|
584
593
|
//# sourceMappingURL=documentManagementRoutes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documentManagementRoutes.js","sourceRoot":"","sources":["../../src/documentManagementRoutes.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2024 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport type {\n\tICreatedResponse,\n\tIHttpRequestContext,\n\tINoContentResponse,\n\tINotFoundResponse,\n\tIRestRoute,\n\tITag\n} from \"@twin.org/api-models\";\nimport {\n\tAuditableItemGraphContexts,\n\tAuditableItemGraphTypes\n} from \"@twin.org/auditable-item-graph-models\";\nimport { Coerce, ComponentFactory, Converter, Guards, Is } from \"@twin.org/core\";\nimport {\n\tDocumentContexts,\n\tDocumentTypes,\n\ttype IDocumentManagementGetRevisionRequest,\n\ttype IDocumentManagementGetRevisionResponse,\n\ttype IDocumentManagementComponent,\n\ttype IDocumentManagementCreateRequest,\n\ttype IDocumentManagementGetRequest,\n\ttype IDocumentManagementGetResponse,\n\ttype IDocumentManagementQueryRequest,\n\ttype IDocumentManagementQueryResponse,\n\ttype IDocumentManagementRemoveRequest,\n\ttype IDocumentManagementUpdateRequest\n} from \"@twin.org/document-management-models\";\nimport { nameof } from \"@twin.org/nameof\";\nimport { SchemaOrgContexts, SchemaOrgTypes } from \"@twin.org/standards-schema-org\";\nimport { UneceDocumentCodes } from \"@twin.org/standards-unece\";\nimport { HeaderTypes, HttpStatusCode, MimeTypes } from \"@twin.org/web\";\n\n/**\n * The source used when communicating about these routes.\n */\nconst ROUTES_SOURCE = \"documentManagementStorageRoutes\";\n\n/**\n * The tag to associate with the routes.\n */\nexport const tagsDocumentManagement: ITag[] = [\n\t{\n\t\tname: \"Document Management\",\n\t\tdescription: \"Endpoints which are modelled to access a document management contract.\"\n\t}\n];\n\n/**\n * The REST routes for document management.\n * @param baseRouteName Prefix to prepend to the paths.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @returns The generated routes.\n */\nexport function generateRestRoutesDocumentManagement(\n\tbaseRouteName: string,\n\tcomponentName: string\n): IRestRoute[] {\n\tconst documentManagementCreateRoute: IRestRoute<\n\t\tIDocumentManagementCreateRequest,\n\t\tICreatedResponse\n\t> = {\n\t\toperationId: \"DocumentManagementSet\",\n\t\tsummary:\n\t\t\t\"Store a document in an auditable item graph vertex and add its content to blob storage.\",\n\t\ttag: tagsDocumentManagement[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tdocumentManagementCreate(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IDocumentManagementCreateRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"DocumentManagementCreateRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\tdocumentId: \"2721000\",\n\t\t\t\t\t\t\tdocumentIdFormat: \"bol\",\n\t\t\t\t\t\t\tdocumentCode: UneceDocumentCodes.BillOfLading,\n\t\t\t\t\t\t\tblob: \"SGVsbG8gV29ybGQ=\",\n\t\t\t\t\t\t\tannotationObject: {\n\t\t\t\t\t\t\t\t\"@context\": \"https://schema.org\",\n\t\t\t\t\t\t\t\t\"@type\": \"DigitalDocument\",\n\t\t\t\t\t\t\t\tname: \"myfile.pdf\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tcreateAttestation: true\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<ICreatedResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"DocumentManagementCreateResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tstatusCode: HttpStatusCode.created,\n\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\t[HeaderTypes.Location]: \"aig:123456\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t};\n\n\tconst documentManagementUpdateRoute: IRestRoute<\n\t\tIDocumentManagementUpdateRequest,\n\t\tINoContentResponse\n\t> = {\n\t\toperationId: \"DocumentManagementUpdate\",\n\t\tsummary:\n\t\t\t\"Update a document in an auditable item graph vertex and add its content to blob storage.\",\n\t\ttag: tagsDocumentManagement[0].name,\n\t\tmethod: \"PUT\",\n\t\tpath: `${baseRouteName}/:auditableItemGraphDocumentId`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tdocumentManagementUpdate(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IDocumentManagementUpdateRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"DocumentManagementUpdateRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tauditableItemGraphDocumentId: \"aig:123456\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\tblob: \"SGVsbG8gV29ybGQ=\",\n\t\t\t\t\t\t\tannotationObject: {\n\t\t\t\t\t\t\t\t\"@context\": \"https://schema.org\",\n\t\t\t\t\t\t\t\t\"@type\": \"DigitalDocument\",\n\t\t\t\t\t\t\t\tname: \"myfile.pdf\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<INoContentResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"DocumentManagementCreateResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tstatusCode: HttpStatusCode.noContent\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t};\n\n\tconst documentManagementGetRoute: IRestRoute<\n\t\tIDocumentManagementGetRequest,\n\t\tIDocumentManagementGetResponse\n\t> = {\n\t\toperationId: \"DocumentManagementGet\",\n\t\tsummary: \"Get the data for a document from document management\",\n\t\ttag: tagsDocumentManagement[0].name,\n\t\tmethod: \"GET\",\n\t\tpath: `${baseRouteName}/:auditableItemGraphDocumentId`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tdocumentManagementGet(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IDocumentManagementGetRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"DocumentManagementGetRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tauditableItemGraphDocumentId: \"aig:123456\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IDocumentManagementGetResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"DocumentManagementGetResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\"@context\": [\n\t\t\t\t\t\t\t\t\tSchemaOrgContexts.ContextRoot,\n\t\t\t\t\t\t\t\t\tDocumentContexts.ContextRoot,\n\t\t\t\t\t\t\t\t\tDocumentContexts.ContextRootCommon\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\ttype: SchemaOrgTypes.ItemList,\n\t\t\t\t\t\t\t\t[SchemaOrgTypes.ItemListElement]: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"@context\": [\n\t\t\t\t\t\t\t\t\t\t\tDocumentContexts.ContextRoot,\n\t\t\t\t\t\t\t\t\t\t\tDocumentContexts.ContextRootCommon,\n\t\t\t\t\t\t\t\t\t\t\tSchemaOrgContexts.ContextRoot\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\ttype: DocumentTypes.Document,\n\t\t\t\t\t\t\t\t\t\tid: \"2721000:0\",\n\t\t\t\t\t\t\t\t\t\tdocumentId: \"2721000\",\n\t\t\t\t\t\t\t\t\t\tdocumentIdFormat: \"bol\",\n\t\t\t\t\t\t\t\t\t\tdocumentCode: UneceDocumentCodes.BillOfLading,\n\t\t\t\t\t\t\t\t\t\tdocumentRevision: 0,\n\t\t\t\t\t\t\t\t\t\tblobStorageId:\n\t\t\t\t\t\t\t\t\t\t\t\"blob-memory:c57d94b088f4c6d2cb32ded014813d0c786aa00134c8ee22f84b1e2545602a70\",\n\t\t\t\t\t\t\t\t\t\tblobHash: \"sha256:123456\",\n\t\t\t\t\t\t\t\t\t\tdateCreated: \"2024-01-01T00:00:00Z\",\n\t\t\t\t\t\t\t\t\t\tannotationObject: {\n\t\t\t\t\t\t\t\t\t\t\t\"@context\": \"https://schema.org\",\n\t\t\t\t\t\t\t\t\t\t\t\"@type\": \"DigitalDocument\",\n\t\t\t\t\t\t\t\t\t\t\tname: \"myfile.pdf\"\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\torganizationIdentity:\n\t\t\t\t\t\t\t\t\t\t\t\"did:entity-storage:0x6363636363636363636363636363636363636363636363636363636363636363\",\n\t\t\t\t\t\t\t\t\t\tuserIdentity:\n\t\t\t\t\t\t\t\t\t\t\t\"did:entity-storage:0x6363636363636363636363636363636363636363636363636363636363636363\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: nameof<IDocumentManagementGetResponse>(),\n\t\t\t\tmimeType: MimeTypes.JsonLd,\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"DocumentManagementGetResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\"@context\": [\n\t\t\t\t\t\t\t\t\tSchemaOrgContexts.ContextRoot,\n\t\t\t\t\t\t\t\t\tDocumentContexts.ContextRoot,\n\t\t\t\t\t\t\t\t\tDocumentContexts.ContextRootCommon\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\ttype: SchemaOrgTypes.ItemList,\n\t\t\t\t\t\t\t\t[SchemaOrgTypes.ItemListElement]: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"@context\": [\n\t\t\t\t\t\t\t\t\t\t\tDocumentContexts.ContextRoot,\n\t\t\t\t\t\t\t\t\t\t\tDocumentContexts.ContextRootCommon,\n\t\t\t\t\t\t\t\t\t\t\tSchemaOrgContexts.ContextRoot\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\ttype: DocumentTypes.Document,\n\t\t\t\t\t\t\t\t\t\tid: \"2721000:0\",\n\t\t\t\t\t\t\t\t\t\tdocumentId: \"2721000\",\n\t\t\t\t\t\t\t\t\t\tdocumentIdFormat: \"bol\",\n\t\t\t\t\t\t\t\t\t\tdocumentCode: UneceDocumentCodes.BillOfLading,\n\t\t\t\t\t\t\t\t\t\tdocumentRevision: 0,\n\t\t\t\t\t\t\t\t\t\tblobStorageId:\n\t\t\t\t\t\t\t\t\t\t\t\"blob-memory:c57d94b088f4c6d2cb32ded014813d0c786aa00134c8ee22f84b1e2545602a70\",\n\t\t\t\t\t\t\t\t\t\tblobHash: \"sha256:123456\",\n\t\t\t\t\t\t\t\t\t\tdateCreated: \"2024-01-01T00:00:00Z\",\n\t\t\t\t\t\t\t\t\t\tannotationObject: {\n\t\t\t\t\t\t\t\t\t\t\t\"@context\": \"https://schema.org\",\n\t\t\t\t\t\t\t\t\t\t\t\"@type\": \"DigitalDocument\",\n\t\t\t\t\t\t\t\t\t\t\tname: \"myfile.pdf\"\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\torganizationIdentity:\n\t\t\t\t\t\t\t\t\t\t\t\"did:entity-storage:0x6363636363636363636363636363636363636363636363636363636363636363\",\n\t\t\t\t\t\t\t\t\t\tuserIdentity:\n\t\t\t\t\t\t\t\t\t\t\t\"did:entity-storage:0x6363636363636363636363636363636363636363636363636363636363636363\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: nameof<INotFoundResponse>()\n\t\t\t}\n\t\t]\n\t};\n\n\tconst documentManagementGetRevisionRoute: IRestRoute<\n\t\tIDocumentManagementGetRevisionRequest,\n\t\tIDocumentManagementGetRevisionResponse\n\t> = {\n\t\toperationId: \"DocumentManagementGetRevision\",\n\t\tsummary: \"Get the data for a document revision from document management\",\n\t\ttag: tagsDocumentManagement[0].name,\n\t\tmethod: \"GET\",\n\t\tpath: `${baseRouteName}/:auditableItemGraphDocumentId/:revision`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tdocumentManagementGetRevision(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IDocumentManagementGetRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"DocumentManagementGetRevisionRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tauditableItemGraphDocumentId: \"aig:123456\",\n\t\t\t\t\t\t\trevision: \"1\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IDocumentManagementGetRevisionResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"DocumentManagementGetRevisionResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\"@context\": [\n\t\t\t\t\t\t\t\t\tDocumentContexts.ContextRoot,\n\t\t\t\t\t\t\t\t\tDocumentContexts.ContextRootCommon,\n\t\t\t\t\t\t\t\t\tSchemaOrgContexts.ContextRoot\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\ttype: DocumentTypes.Document,\n\t\t\t\t\t\t\t\tid: \"2721000:0\",\n\t\t\t\t\t\t\t\tdocumentId: \"2721000\",\n\t\t\t\t\t\t\t\tdocumentIdFormat: \"bol\",\n\t\t\t\t\t\t\t\tdocumentCode: UneceDocumentCodes.BillOfLading,\n\t\t\t\t\t\t\t\tdocumentRevision: 1,\n\t\t\t\t\t\t\t\tblobStorageId:\n\t\t\t\t\t\t\t\t\t\"blob-memory:c57d94b088f4c6d2cb32ded014813d0c786aa00134c8ee22f84b1e2545602a70\",\n\t\t\t\t\t\t\t\tblobHash: \"sha256:123456\",\n\t\t\t\t\t\t\t\tdateCreated: \"2024-01-01T00:00:00Z\",\n\t\t\t\t\t\t\t\tannotationObject: {\n\t\t\t\t\t\t\t\t\t\"@context\": \"https://schema.org\",\n\t\t\t\t\t\t\t\t\t\"@type\": \"DigitalDocument\",\n\t\t\t\t\t\t\t\t\tname: \"myfile.pdf\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\torganizationIdentity:\n\t\t\t\t\t\t\t\t\t\"did:entity-storage:0x6363636363636363636363636363636363636363636363636363636363636363\",\n\t\t\t\t\t\t\t\tuserIdentity:\n\t\t\t\t\t\t\t\t\t\"did:entity-storage:0x6363636363636363636363636363636363636363636363636363636363636363\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: nameof<IDocumentManagementGetRevisionResponse>(),\n\t\t\t\tmimeType: MimeTypes.JsonLd,\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"DocumentManagementGetRevisionResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\"@context\": [\n\t\t\t\t\t\t\t\t\tDocumentContexts.ContextRoot,\n\t\t\t\t\t\t\t\t\tDocumentContexts.ContextRootCommon,\n\t\t\t\t\t\t\t\t\tSchemaOrgContexts.ContextRoot\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\ttype: DocumentTypes.Document,\n\t\t\t\t\t\t\t\tid: \"2721000:0\",\n\t\t\t\t\t\t\t\tdocumentId: \"2721000\",\n\t\t\t\t\t\t\t\tdocumentIdFormat: \"bol\",\n\t\t\t\t\t\t\t\tdocumentCode: UneceDocumentCodes.BillOfLading,\n\t\t\t\t\t\t\t\tdocumentRevision: 1,\n\t\t\t\t\t\t\t\tblobStorageId:\n\t\t\t\t\t\t\t\t\t\"blob-memory:c57d94b088f4c6d2cb32ded014813d0c786aa00134c8ee22f84b1e2545602a70\",\n\t\t\t\t\t\t\t\tblobHash: \"sha256:123456\",\n\t\t\t\t\t\t\t\tdateCreated: \"2024-01-01T00:00:00Z\",\n\t\t\t\t\t\t\t\tannotationObject: {\n\t\t\t\t\t\t\t\t\t\"@context\": \"https://schema.org\",\n\t\t\t\t\t\t\t\t\t\"@type\": \"DigitalDocument\",\n\t\t\t\t\t\t\t\t\tname: \"myfile.pdf\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\torganizationIdentity:\n\t\t\t\t\t\t\t\t\t\"did:entity-storage:0x6363636363636363636363636363636363636363636363636363636363636363\",\n\t\t\t\t\t\t\t\tuserIdentity:\n\t\t\t\t\t\t\t\t\t\"did:entity-storage:0x6363636363636363636363636363636363636363636363636363636363636363\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: nameof<INotFoundResponse>()\n\t\t\t}\n\t\t]\n\t};\n\n\tconst documentManagementRemoveRevisionRoute: IRestRoute<\n\t\tIDocumentManagementRemoveRequest,\n\t\tINoContentResponse\n\t> = {\n\t\toperationId: \"DocumentManagementRemove\",\n\t\tsummary: \"Remove an document from an auditable item graph vertex\",\n\t\ttag: tagsDocumentManagement[0].name,\n\t\tmethod: \"DELETE\",\n\t\tpath: `${baseRouteName}/:auditableItemGraphDocumentId/:revision`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tdocumentManagementRemove(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IDocumentManagementRemoveRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"DocumentManagementRemoveRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tauditableItemGraphDocumentId: \"aig:1234\",\n\t\t\t\t\t\t\trevision: \"1\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<INoContentResponse>()\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: nameof<INotFoundResponse>()\n\t\t\t}\n\t\t]\n\t};\n\n\tconst documentManagementQueryRoute: IRestRoute<\n\t\tIDocumentManagementQueryRequest,\n\t\tIDocumentManagementQueryResponse\n\t> = {\n\t\toperationId: \"DocumentManagementQuery\",\n\t\tsummary: \"Query the items from an auditable item graph vertex\",\n\t\ttag: tagsDocumentManagement[0].name,\n\t\tmethod: \"GET\",\n\t\tpath: `${baseRouteName}/`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tdocumentManagementQuery(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IDocumentManagementQueryRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"DocumentManagementQueryRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tquery: {\n\t\t\t\t\t\t\tdocumentId: \"2721000\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IDocumentManagementQueryResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"DocumentManagementQueryResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\"@context\": [SchemaOrgContexts.ContextRoot, AuditableItemGraphContexts.ContextRoot],\n\t\t\t\t\t\t\t\ttype: [SchemaOrgTypes.ItemList, AuditableItemGraphTypes.VertexList],\n\t\t\t\t\t\t\t\t[SchemaOrgTypes.ItemListElement]: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"@context\": [\n\t\t\t\t\t\t\t\t\t\t\tAuditableItemGraphContexts.ContextRoot,\n\t\t\t\t\t\t\t\t\t\t\tAuditableItemGraphContexts.ContextRootCommon\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\tid: \"aig:c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7\",\n\t\t\t\t\t\t\t\t\t\ttype: AuditableItemGraphTypes.Vertex,\n\t\t\t\t\t\t\t\t\t\tdateCreated: \"2024-08-22T04:13:20.000Z\",\n\t\t\t\t\t\t\t\t\t\taliases: [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"@context\": [AuditableItemGraphContexts.ContextRoot],\n\t\t\t\t\t\t\t\t\t\t\t\tid: \"test-id-0\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: AuditableItemGraphTypes.Alias,\n\t\t\t\t\t\t\t\t\t\t\t\tdateCreated: \"2024-08-22T04:13:20.000Z\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\tresources: [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"@context\": AuditableItemGraphContexts.ContextRoot,\n\t\t\t\t\t\t\t\t\t\t\t\ttype: AuditableItemGraphTypes.Resource,\n\t\t\t\t\t\t\t\t\t\t\t\tdateCreated: \"2024-08-22T04:13:20.000Z\",\n\t\t\t\t\t\t\t\t\t\t\t\tresourceObject: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"@context\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"https://schema.twindev.org/documents/\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"https://schema.twindev.org/common/\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"https://schema.org\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype: \"Document\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tid: \"test-id-0:0\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tdocumentId: \"test-id-0\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tdocumentCode: \"unece:DocumentCodeList#705\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tdocumentRevision: 0,\n\t\t\t\t\t\t\t\t\t\t\t\t\tannotationObject: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"@context\": \"https://schema.org\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype: \"DigitalDocument\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tname: \"bill-of-lading\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\tblobHash: \"sha256:E3Duqrp6bHojSx+CzDttAToAiP1eFkCDAPBbKLABVGM=\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tblobStorageId:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"blob:memory:1370eeaaba7a6c7a234b1f82cc3b6d013a0088fd5e16408300f05b28b0015463\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tdateCreated: \"2024-08-22T04:13:20.000Z\",\n\t\t\t\t\t\t\t\t\t\t\t\t\torganizationIdentity:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"did:entity-storage:0x0101010101010101010101010101010101010101010101010101010101010101\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tuserIdentity:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"did:entity-storage:0x0404040404040404040404040404040404040404040404040404040404040404\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t};\n\n\treturn [\n\t\tdocumentManagementCreateRoute,\n\t\tdocumentManagementUpdateRoute,\n\t\tdocumentManagementGetRoute,\n\t\tdocumentManagementGetRevisionRoute,\n\t\tdocumentManagementRemoveRevisionRoute,\n\t\tdocumentManagementQueryRoute\n\t];\n}\n\n/**\n * Create a document as an auditable item graph vertex.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function documentManagementCreate(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IDocumentManagementCreateRequest\n): Promise<ICreatedResponse> {\n\tGuards.object<IDocumentManagementCreateRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IDocumentManagementCreateRequest[\"body\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.body),\n\t\trequest.body\n\t);\n\tGuards.stringBase64(ROUTES_SOURCE, nameof(request.body.blob), request.body.blob);\n\n\tconst component = ComponentFactory.get<IDocumentManagementComponent>(componentName);\n\tconst id = await component.create(\n\t\trequest.body.documentId,\n\t\trequest.body.documentIdFormat,\n\t\trequest.body.documentCode,\n\t\tConverter.base64ToBytes(request.body.blob),\n\t\trequest.body.annotationObject,\n\t\trequest.body.auditableItemGraphEdges,\n\t\t{\n\t\t\tcreateAttestation: request.body.createAttestation,\n\t\t\taddAlias: request.body.addAlias,\n\t\t\taliasAnnotationObject: request.body.aliasAnnotationObject\n\t\t}\n\t);\n\n\treturn {\n\t\tstatusCode: HttpStatusCode.created,\n\t\theaders: {\n\t\t\tlocation: id\n\t\t}\n\t};\n}\n\n/**\n * Get the document from the auditable item graph vertex.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function documentManagementGet(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IDocumentManagementGetRequest\n): Promise<IDocumentManagementGetResponse> {\n\tGuards.object<IDocumentManagementGetRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IDocumentManagementGetRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.auditableItemGraphDocumentId),\n\t\trequest.pathParams.auditableItemGraphDocumentId\n\t);\n\n\tconst mimeType = request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd ? \"jsonld\" : \"json\";\n\n\tconst component = ComponentFactory.get<IDocumentManagementComponent>(componentName);\n\n\tconst result = await component.get(\n\t\trequest.pathParams.auditableItemGraphDocumentId,\n\t\t{\n\t\t\tincludeBlobStorageMetadata: Coerce.boolean(request.query?.includeBlobStorageMetadata),\n\t\t\tincludeBlobStorageData: Coerce.boolean(request.query?.includeBlobStorageData),\n\t\t\tincludeAttestation: Coerce.boolean(request.query?.includeAttestation),\n\t\t\tincludeRemoved: Coerce.boolean(request.query?.includeRemoved),\n\t\t\textractRuleGroupId: request.query?.extractRuleGroupId,\n\t\t\textractMimeType: request.query?.extractMimeType\n\t\t},\n\t\trequest.query?.cursor,\n\t\tCoerce.integer(request.query?.limit)\n\t);\n\n\treturn {\n\t\theaders: {\n\t\t\t[HeaderTypes.ContentType]: mimeType === \"json\" ? MimeTypes.Json : MimeTypes.JsonLd\n\t\t},\n\t\tbody: result\n\t};\n}\n\n/**\n * Get the document revision from the auditable item graph vertex.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function documentManagementGetRevision(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IDocumentManagementGetRevisionRequest\n): Promise<IDocumentManagementGetRevisionResponse> {\n\tGuards.object<IDocumentManagementGetRevisionRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IDocumentManagementGetRevisionRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.auditableItemGraphDocumentId),\n\t\trequest.pathParams.auditableItemGraphDocumentId\n\t);\n\n\tconst revision = Coerce.integer(request.pathParams.revision);\n\tGuards.integer(ROUTES_SOURCE, nameof(revision), revision);\n\n\tconst mimeType = request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd ? \"jsonld\" : \"json\";\n\n\tconst component = ComponentFactory.get<IDocumentManagementComponent>(componentName);\n\n\tconst result = await component.getRevision(\n\t\trequest.pathParams.auditableItemGraphDocumentId,\n\t\trevision,\n\t\t{\n\t\t\tincludeBlobStorageMetadata: Coerce.boolean(request.query?.includeBlobStorageMetadata),\n\t\t\tincludeBlobStorageData: Coerce.boolean(request.query?.includeBlobStorageData),\n\t\t\tincludeAttestation: Coerce.boolean(request.query?.includeAttestation),\n\t\t\textractRuleGroupId: request.query?.extractRuleGroupId,\n\t\t\textractMimeType: request.query?.extractMimeType\n\t\t}\n\t);\n\n\treturn {\n\t\theaders: {\n\t\t\t[HeaderTypes.ContentType]: mimeType === \"json\" ? MimeTypes.Json : MimeTypes.JsonLd\n\t\t},\n\t\tbody: result\n\t};\n}\n\n/**\n * Update the document from the auditable item graph vertex.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function documentManagementUpdate(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IDocumentManagementUpdateRequest\n): Promise<INoContentResponse> {\n\tGuards.object<IDocumentManagementUpdateRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IDocumentManagementUpdateRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.auditableItemGraphDocumentId),\n\t\trequest.pathParams.auditableItemGraphDocumentId\n\t);\n\n\tconst component = ComponentFactory.get<IDocumentManagementComponent>(componentName);\n\n\tawait component.update(\n\t\trequest.pathParams.auditableItemGraphDocumentId,\n\t\tIs.stringValue(request.body.blob) ? Converter.base64ToBytes(request.body.blob) : undefined,\n\t\trequest.body.annotationObject,\n\t\trequest.body.auditableItemGraphEdges\n\t);\n\n\treturn {\n\t\tstatusCode: HttpStatusCode.noContent\n\t};\n}\n\n/**\n * Remove the document from the auditable item graph vertex.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function documentManagementRemove(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IDocumentManagementRemoveRequest\n): Promise<INoContentResponse> {\n\tGuards.object<IDocumentManagementRemoveRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IDocumentManagementRemoveRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.auditableItemGraphDocumentId),\n\t\trequest.pathParams.auditableItemGraphDocumentId\n\t);\n\tconst revision = Coerce.number(request.pathParams.revision);\n\tGuards.integer(ROUTES_SOURCE, nameof(request.pathParams.revision), revision);\n\n\tconst component = ComponentFactory.get<IDocumentManagementComponent>(componentName);\n\n\tawait component.removeRevision(request.pathParams.auditableItemGraphDocumentId, revision);\n\n\treturn {\n\t\tstatusCode: HttpStatusCode.noContent\n\t};\n}\n\n/**\n * Query the documents from an auditable item graph vertex.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function documentManagementQuery(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IDocumentManagementQueryRequest\n): Promise<IDocumentManagementQueryResponse> {\n\tGuards.object<IDocumentManagementQueryRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IDocumentManagementQueryRequest[\"query\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.query),\n\t\trequest.query\n\t);\n\tGuards.stringValue(ROUTES_SOURCE, nameof(request.query.documentId), request.query.documentId);\n\n\tconst mimeType = request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd ? \"jsonld\" : \"json\";\n\n\tconst component = ComponentFactory.get<IDocumentManagementComponent>(componentName);\n\n\tconst result = await component.query(\n\t\trequest.query.documentId,\n\t\trequest.query?.cursor,\n\t\tCoerce.integer(request.query?.limit)\n\t);\n\n\treturn {\n\t\theaders: {\n\t\t\t[HeaderTypes.ContentType]: mimeType === \"json\" ? MimeTypes.Json : MimeTypes.JsonLd\n\t\t},\n\t\tbody: result\n\t};\n}\n"]}
|
|
1
|
+
{"version":3,"file":"documentManagementRoutes.js","sourceRoot":"","sources":["../../src/documentManagementRoutes.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2024 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport type {\n\tICreatedResponse,\n\tIHostingComponent,\n\tIHttpRequestContext,\n\tINoContentResponse,\n\tINotFoundResponse,\n\tIRestRoute,\n\tITag\n} from \"@twin.org/api-models\";\nimport {\n\tAuditableItemGraphContexts,\n\tAuditableItemGraphTypes\n} from \"@twin.org/auditable-item-graph-models\";\nimport { Coerce, ComponentFactory, Converter, Guards, Is } from \"@twin.org/core\";\nimport {\n\tDocumentContexts,\n\tDocumentTypes,\n\ttype IDocumentManagementGetRevisionRequest,\n\ttype IDocumentManagementGetRevisionResponse,\n\ttype IDocumentManagementComponent,\n\ttype IDocumentManagementCreateRequest,\n\ttype IDocumentManagementGetRequest,\n\ttype IDocumentManagementGetResponse,\n\ttype IDocumentManagementQueryRequest,\n\ttype IDocumentManagementQueryResponse,\n\ttype IDocumentManagementRemoveRequest,\n\ttype IDocumentManagementUpdateRequest\n} from \"@twin.org/document-management-models\";\nimport { nameof } from \"@twin.org/nameof\";\nimport { SchemaOrgContexts, SchemaOrgTypes } from \"@twin.org/standards-schema-org\";\nimport { UneceDocumentCodeList } from \"@twin.org/standards-unece\";\nimport { HeaderHelper, HeaderTypes, HttpStatusCode, MimeTypes } from \"@twin.org/web\";\n\n/**\n * The source used when communicating about these routes.\n */\nconst ROUTES_SOURCE = \"documentManagementStorageRoutes\";\n\n/**\n * The tag to associate with the routes.\n */\nexport const tagsDocumentManagement: ITag[] = [\n\t{\n\t\tname: \"Document Management\",\n\t\tdescription: \"Endpoints which are modelled to access a document management contract.\"\n\t}\n];\n\n/**\n * The REST routes for document management.\n * @param baseRouteName Prefix to prepend to the paths.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @returns The generated routes.\n */\nexport function generateRestRoutesDocumentManagement(\n\tbaseRouteName: string,\n\tcomponentName: string\n): IRestRoute[] {\n\tconst documentManagementCreateRoute: IRestRoute<\n\t\tIDocumentManagementCreateRequest,\n\t\tICreatedResponse\n\t> = {\n\t\toperationId: \"DocumentManagementSet\",\n\t\tsummary:\n\t\t\t\"Store a document in an auditable item graph vertex and add its content to blob storage.\",\n\t\ttag: tagsDocumentManagement[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tdocumentManagementCreate(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IDocumentManagementCreateRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"DocumentManagementCreateRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\tdocumentId: \"2721000\",\n\t\t\t\t\t\t\tdocumentIdFormat: \"bol\",\n\t\t\t\t\t\t\tdocumentCode: UneceDocumentCodeList.BillOfLading,\n\t\t\t\t\t\t\tblob: \"SGVsbG8gV29ybGQ=\",\n\t\t\t\t\t\t\tannotationObject: {\n\t\t\t\t\t\t\t\t\"@context\": \"https://schema.org\",\n\t\t\t\t\t\t\t\t\"@type\": \"DigitalDocument\",\n\t\t\t\t\t\t\t\tname: \"myfile.pdf\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tcreateAttestation: true\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<ICreatedResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"DocumentManagementCreateResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tstatusCode: HttpStatusCode.created,\n\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\t[HeaderTypes.Location]: \"aig%3A123456\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t};\n\n\tconst documentManagementUpdateRoute: IRestRoute<\n\t\tIDocumentManagementUpdateRequest,\n\t\tINoContentResponse\n\t> = {\n\t\toperationId: \"DocumentManagementUpdate\",\n\t\tsummary:\n\t\t\t\"Update a document in an auditable item graph vertex and add its content to blob storage.\",\n\t\ttag: tagsDocumentManagement[0].name,\n\t\tmethod: \"PUT\",\n\t\tpath: `${baseRouteName}/:auditableItemGraphDocumentId`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tdocumentManagementUpdate(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IDocumentManagementUpdateRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"DocumentManagementUpdateRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tauditableItemGraphDocumentId: \"aig:123456\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\tblob: \"SGVsbG8gV29ybGQ=\",\n\t\t\t\t\t\t\tannotationObject: {\n\t\t\t\t\t\t\t\t\"@context\": \"https://schema.org\",\n\t\t\t\t\t\t\t\t\"@type\": \"DigitalDocument\",\n\t\t\t\t\t\t\t\tname: \"myfile.pdf\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<INoContentResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"DocumentManagementCreateResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tstatusCode: HttpStatusCode.noContent\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t};\n\n\tconst documentManagementGetRoute: IRestRoute<\n\t\tIDocumentManagementGetRequest,\n\t\tIDocumentManagementGetResponse\n\t> = {\n\t\toperationId: \"DocumentManagementGet\",\n\t\tsummary: \"Get the data for a document from document management\",\n\t\ttag: tagsDocumentManagement[0].name,\n\t\tmethod: \"GET\",\n\t\tpath: `${baseRouteName}/:auditableItemGraphDocumentId`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tdocumentManagementGet(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IDocumentManagementGetRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"DocumentManagementGetRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tauditableItemGraphDocumentId: \"aig:123456\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IDocumentManagementGetResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"DocumentManagementGetResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\"@context\": [\n\t\t\t\t\t\t\t\t\tSchemaOrgContexts.Context,\n\t\t\t\t\t\t\t\t\tDocumentContexts.Context,\n\t\t\t\t\t\t\t\t\tDocumentContexts.ContextCommon\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\ttype: SchemaOrgTypes.ItemList,\n\t\t\t\t\t\t\t\t[SchemaOrgTypes.ItemListElement]: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"@context\": [\n\t\t\t\t\t\t\t\t\t\t\tSchemaOrgContexts.Context,\n\t\t\t\t\t\t\t\t\t\t\tDocumentContexts.Context,\n\t\t\t\t\t\t\t\t\t\t\tDocumentContexts.ContextCommon\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\ttype: DocumentTypes.Document,\n\t\t\t\t\t\t\t\t\t\tid: \"2721000:0\",\n\t\t\t\t\t\t\t\t\t\tdocumentId: \"2721000\",\n\t\t\t\t\t\t\t\t\t\tdocumentIdFormat: \"bol\",\n\t\t\t\t\t\t\t\t\t\tdocumentCode: UneceDocumentCodeList.BillOfLading,\n\t\t\t\t\t\t\t\t\t\tdocumentRevision: 0,\n\t\t\t\t\t\t\t\t\t\tblobStorageId:\n\t\t\t\t\t\t\t\t\t\t\t\"blob-memory:c57d94b088f4c6d2cb32ded014813d0c786aa00134c8ee22f84b1e2545602a70\",\n\t\t\t\t\t\t\t\t\t\tintegrity: \"sha256-123456\",\n\t\t\t\t\t\t\t\t\t\tdateCreated: \"2024-01-01T00:00:00Z\",\n\t\t\t\t\t\t\t\t\t\tannotationObject: {\n\t\t\t\t\t\t\t\t\t\t\t\"@context\": \"https://schema.org\",\n\t\t\t\t\t\t\t\t\t\t\t\"@type\": \"DigitalDocument\",\n\t\t\t\t\t\t\t\t\t\t\tname: \"myfile.pdf\"\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\torganizationIdentity:\n\t\t\t\t\t\t\t\t\t\t\t\"did:entity-storage:0x6363636363636363636363636363636363636363636363636363636363636363\",\n\t\t\t\t\t\t\t\t\t\tuserIdentity:\n\t\t\t\t\t\t\t\t\t\t\t\"did:entity-storage:0x6363636363636363636363636363636363636363636363636363636363636363\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: nameof<IDocumentManagementGetResponse>(),\n\t\t\t\tmimeType: MimeTypes.JsonLd,\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"DocumentManagementGetResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\"@context\": [\n\t\t\t\t\t\t\t\t\tSchemaOrgContexts.Context,\n\t\t\t\t\t\t\t\t\tDocumentContexts.Context,\n\t\t\t\t\t\t\t\t\tDocumentContexts.ContextCommon\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\ttype: SchemaOrgTypes.ItemList,\n\t\t\t\t\t\t\t\t[SchemaOrgTypes.ItemListElement]: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"@context\": [\n\t\t\t\t\t\t\t\t\t\t\tSchemaOrgContexts.Context,\n\t\t\t\t\t\t\t\t\t\t\tDocumentContexts.Context,\n\t\t\t\t\t\t\t\t\t\t\tDocumentContexts.ContextCommon\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\ttype: DocumentTypes.Document,\n\t\t\t\t\t\t\t\t\t\tid: \"2721000:0\",\n\t\t\t\t\t\t\t\t\t\tdocumentId: \"2721000\",\n\t\t\t\t\t\t\t\t\t\tdocumentIdFormat: \"bol\",\n\t\t\t\t\t\t\t\t\t\tdocumentCode: UneceDocumentCodeList.BillOfLading,\n\t\t\t\t\t\t\t\t\t\tdocumentRevision: 0,\n\t\t\t\t\t\t\t\t\t\tblobStorageId:\n\t\t\t\t\t\t\t\t\t\t\t\"blob-memory:c57d94b088f4c6d2cb32ded014813d0c786aa00134c8ee22f84b1e2545602a70\",\n\t\t\t\t\t\t\t\t\t\tintegrity: \"sha256-123456\",\n\t\t\t\t\t\t\t\t\t\tdateCreated: \"2024-01-01T00:00:00Z\",\n\t\t\t\t\t\t\t\t\t\tannotationObject: {\n\t\t\t\t\t\t\t\t\t\t\t\"@context\": \"https://schema.org\",\n\t\t\t\t\t\t\t\t\t\t\t\"@type\": \"DigitalDocument\",\n\t\t\t\t\t\t\t\t\t\t\tname: \"myfile.pdf\"\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\torganizationIdentity:\n\t\t\t\t\t\t\t\t\t\t\t\"did:entity-storage:0x6363636363636363636363636363636363636363636363636363636363636363\",\n\t\t\t\t\t\t\t\t\t\tuserIdentity:\n\t\t\t\t\t\t\t\t\t\t\t\"did:entity-storage:0x6363636363636363636363636363636363636363636363636363636363636363\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: nameof<INotFoundResponse>()\n\t\t\t}\n\t\t]\n\t};\n\n\tconst documentManagementGetRevisionRoute: IRestRoute<\n\t\tIDocumentManagementGetRevisionRequest,\n\t\tIDocumentManagementGetRevisionResponse\n\t> = {\n\t\toperationId: \"DocumentManagementGetRevision\",\n\t\tsummary: \"Get the data for a document revision from document management\",\n\t\ttag: tagsDocumentManagement[0].name,\n\t\tmethod: \"GET\",\n\t\tpath: `${baseRouteName}/:auditableItemGraphDocumentId/:revision`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tdocumentManagementGetRevision(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IDocumentManagementGetRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"DocumentManagementGetRevisionRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tauditableItemGraphDocumentId: \"aig:123456\",\n\t\t\t\t\t\t\trevision: \"1\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IDocumentManagementGetRevisionResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"DocumentManagementGetRevisionResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\"@context\": [\n\t\t\t\t\t\t\t\t\tSchemaOrgContexts.Context,\n\t\t\t\t\t\t\t\t\tDocumentContexts.Context,\n\t\t\t\t\t\t\t\t\tDocumentContexts.ContextCommon\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\ttype: DocumentTypes.Document,\n\t\t\t\t\t\t\t\tid: \"2721000:0\",\n\t\t\t\t\t\t\t\tdocumentId: \"2721000\",\n\t\t\t\t\t\t\t\tdocumentIdFormat: \"bol\",\n\t\t\t\t\t\t\t\tdocumentCode: UneceDocumentCodeList.BillOfLading,\n\t\t\t\t\t\t\t\tdocumentRevision: 1,\n\t\t\t\t\t\t\t\tblobStorageId:\n\t\t\t\t\t\t\t\t\t\"blob-memory:c57d94b088f4c6d2cb32ded014813d0c786aa00134c8ee22f84b1e2545602a70\",\n\t\t\t\t\t\t\t\tintegrity: \"sha256-123456\",\n\t\t\t\t\t\t\t\tdateCreated: \"2024-01-01T00:00:00Z\",\n\t\t\t\t\t\t\t\tannotationObject: {\n\t\t\t\t\t\t\t\t\t\"@context\": \"https://schema.org\",\n\t\t\t\t\t\t\t\t\t\"@type\": \"DigitalDocument\",\n\t\t\t\t\t\t\t\t\tname: \"myfile.pdf\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\torganizationIdentity:\n\t\t\t\t\t\t\t\t\t\"did:entity-storage:0x6363636363636363636363636363636363636363636363636363636363636363\",\n\t\t\t\t\t\t\t\tuserIdentity:\n\t\t\t\t\t\t\t\t\t\"did:entity-storage:0x6363636363636363636363636363636363636363636363636363636363636363\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: nameof<IDocumentManagementGetRevisionResponse>(),\n\t\t\t\tmimeType: MimeTypes.JsonLd,\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"DocumentManagementGetRevisionResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\"@context\": [\n\t\t\t\t\t\t\t\t\tSchemaOrgContexts.Context,\n\t\t\t\t\t\t\t\t\tDocumentContexts.Context,\n\t\t\t\t\t\t\t\t\tDocumentContexts.ContextCommon\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\ttype: DocumentTypes.Document,\n\t\t\t\t\t\t\t\tid: \"2721000:0\",\n\t\t\t\t\t\t\t\tdocumentId: \"2721000\",\n\t\t\t\t\t\t\t\tdocumentIdFormat: \"bol\",\n\t\t\t\t\t\t\t\tdocumentCode: UneceDocumentCodeList.BillOfLading,\n\t\t\t\t\t\t\t\tdocumentRevision: 1,\n\t\t\t\t\t\t\t\tblobStorageId:\n\t\t\t\t\t\t\t\t\t\"blob-memory:c57d94b088f4c6d2cb32ded014813d0c786aa00134c8ee22f84b1e2545602a70\",\n\t\t\t\t\t\t\t\tintegrity: \"sha256-123456\",\n\t\t\t\t\t\t\t\tdateCreated: \"2024-01-01T00:00:00Z\",\n\t\t\t\t\t\t\t\tannotationObject: {\n\t\t\t\t\t\t\t\t\t\"@context\": \"https://schema.org\",\n\t\t\t\t\t\t\t\t\t\"@type\": \"DigitalDocument\",\n\t\t\t\t\t\t\t\t\tname: \"myfile.pdf\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\torganizationIdentity:\n\t\t\t\t\t\t\t\t\t\"did:entity-storage:0x6363636363636363636363636363636363636363636363636363636363636363\",\n\t\t\t\t\t\t\t\tuserIdentity:\n\t\t\t\t\t\t\t\t\t\"did:entity-storage:0x6363636363636363636363636363636363636363636363636363636363636363\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: nameof<INotFoundResponse>()\n\t\t\t}\n\t\t]\n\t};\n\n\tconst documentManagementRemoveRevisionRoute: IRestRoute<\n\t\tIDocumentManagementRemoveRequest,\n\t\tINoContentResponse\n\t> = {\n\t\toperationId: \"DocumentManagementRemove\",\n\t\tsummary: \"Remove an document from an auditable item graph vertex\",\n\t\ttag: tagsDocumentManagement[0].name,\n\t\tmethod: \"DELETE\",\n\t\tpath: `${baseRouteName}/:auditableItemGraphDocumentId/:revision`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tdocumentManagementRemove(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IDocumentManagementRemoveRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"DocumentManagementRemoveRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tauditableItemGraphDocumentId: \"aig:1234\",\n\t\t\t\t\t\t\trevision: \"1\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<INoContentResponse>()\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: nameof<INotFoundResponse>()\n\t\t\t}\n\t\t]\n\t};\n\n\tconst documentManagementQueryRoute: IRestRoute<\n\t\tIDocumentManagementQueryRequest,\n\t\tIDocumentManagementQueryResponse\n\t> = {\n\t\toperationId: \"DocumentManagementQuery\",\n\t\tsummary: \"Query the items from an auditable item graph vertex\",\n\t\ttag: tagsDocumentManagement[0].name,\n\t\tmethod: \"GET\",\n\t\tpath: `${baseRouteName}/`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tdocumentManagementQuery(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IDocumentManagementQueryRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"DocumentManagementQueryRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tquery: {\n\t\t\t\t\t\t\tdocumentId: \"2721000\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IDocumentManagementQueryResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"DocumentManagementQueryResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\"@context\": [SchemaOrgContexts.Context, AuditableItemGraphContexts.Context],\n\t\t\t\t\t\t\t\ttype: [SchemaOrgTypes.ItemList, AuditableItemGraphTypes.VertexList],\n\t\t\t\t\t\t\t\t[SchemaOrgTypes.ItemListElement]: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"@context\": [\n\t\t\t\t\t\t\t\t\t\t\tAuditableItemGraphContexts.Context,\n\t\t\t\t\t\t\t\t\t\t\tAuditableItemGraphContexts.ContextCommon\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\tid: \"aig:c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7\",\n\t\t\t\t\t\t\t\t\t\ttype: AuditableItemGraphTypes.Vertex,\n\t\t\t\t\t\t\t\t\t\tdateCreated: \"2024-08-22T04:13:20.000Z\",\n\t\t\t\t\t\t\t\t\t\taliases: [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"@context\": [AuditableItemGraphContexts.Context],\n\t\t\t\t\t\t\t\t\t\t\t\tid: \"test-id-0\",\n\t\t\t\t\t\t\t\t\t\t\t\ttype: AuditableItemGraphTypes.Alias,\n\t\t\t\t\t\t\t\t\t\t\t\tdateCreated: \"2024-08-22T04:13:20.000Z\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\tresources: [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"@context\": AuditableItemGraphContexts.Context,\n\t\t\t\t\t\t\t\t\t\t\t\ttype: AuditableItemGraphTypes.Resource,\n\t\t\t\t\t\t\t\t\t\t\t\tdateCreated: \"2024-08-22T04:13:20.000Z\",\n\t\t\t\t\t\t\t\t\t\t\t\tresourceObject: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"@context\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"https://schema.twindev.org/documents/\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"https://schema.twindev.org/common/\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"https://schema.org\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype: \"Document\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tid: \"test-id-0:0\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tdocumentId: \"test-id-0\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tdocumentCode: \"unece:DocumentCodeList#705\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tdocumentRevision: 0,\n\t\t\t\t\t\t\t\t\t\t\t\t\tannotationObject: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"@context\": \"https://schema.org\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype: \"DigitalDocument\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tname: \"bill-of-lading\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\tintegrity: \"sha256-E3Duqrp6bHojSx+CzDttAToAiP1eFkCDAPBbKLABVGM=\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tblobStorageId:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"blob:memory:1370eeaaba7a6c7a234b1f82cc3b6d013a0088fd5e16408300f05b28b0015463\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tdateCreated: \"2024-08-22T04:13:20.000Z\",\n\t\t\t\t\t\t\t\t\t\t\t\t\torganizationIdentity:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"did:entity-storage:0x0101010101010101010101010101010101010101010101010101010101010101\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tuserIdentity:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"did:entity-storage:0x0404040404040404040404040404040404040404040404040404040404040404\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t};\n\n\treturn [\n\t\tdocumentManagementCreateRoute,\n\t\tdocumentManagementUpdateRoute,\n\t\tdocumentManagementGetRoute,\n\t\tdocumentManagementGetRevisionRoute,\n\t\tdocumentManagementRemoveRevisionRoute,\n\t\tdocumentManagementQueryRoute\n\t];\n}\n\n/**\n * Create a document as an auditable item graph vertex.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function documentManagementCreate(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IDocumentManagementCreateRequest\n): Promise<ICreatedResponse> {\n\tGuards.object<IDocumentManagementCreateRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IDocumentManagementCreateRequest[\"body\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.body),\n\t\trequest.body\n\t);\n\tGuards.stringBase64(ROUTES_SOURCE, nameof(request.body.blob), request.body.blob);\n\n\tconst component = ComponentFactory.get<IDocumentManagementComponent>(componentName);\n\tconst id = await component.create(\n\t\trequest.body.documentId,\n\t\trequest.body.documentIdFormat,\n\t\trequest.body.documentCode,\n\t\tConverter.base64ToBytes(request.body.blob),\n\t\trequest.body.annotationObject,\n\t\trequest.body.auditableItemGraphEdges,\n\t\t{\n\t\t\tcreateAttestation: request.body.createAttestation,\n\t\t\taddAlias: request.body.addAlias,\n\t\t\taliasAnnotationObject: request.body.aliasAnnotationObject\n\t\t}\n\t);\n\n\treturn {\n\t\tstatusCode: HttpStatusCode.created,\n\t\theaders: {\n\t\t\tlocation: id\n\t\t}\n\t};\n}\n\n/**\n * Get the document from the auditable item graph vertex.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function documentManagementGet(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IDocumentManagementGetRequest\n): Promise<IDocumentManagementGetResponse> {\n\tGuards.object<IDocumentManagementGetRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IDocumentManagementGetRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.auditableItemGraphDocumentId),\n\t\trequest.pathParams.auditableItemGraphDocumentId\n\t);\n\n\tconst hostingComponent = ComponentFactory.get<IHostingComponent>(\n\t\thttpRequestContext.hostingComponentType ?? \"hosting\"\n\t);\n\n\tconst component = ComponentFactory.get<IDocumentManagementComponent>(componentName);\n\n\tconst result = await component.get(\n\t\trequest.pathParams.auditableItemGraphDocumentId,\n\t\t{\n\t\t\tincludeBlobStorageMetadata: Coerce.boolean(request.query?.includeBlobStorageMetadata),\n\t\t\tincludeBlobStorageData: Coerce.boolean(request.query?.includeBlobStorageData),\n\t\t\tincludeAttestation: Coerce.boolean(request.query?.includeAttestation),\n\t\t\tincludeRemoved: Coerce.boolean(request.query?.includeRemoved),\n\t\t\textractRuleGroupId: request.query?.extractRuleGroupId,\n\t\t\textractMimeType: request.query?.extractMimeType\n\t\t},\n\t\trequest.query?.cursor,\n\t\tCoerce.integer(request.query?.limit)\n\t);\n\n\tconst headers: IDocumentManagementGetResponse[\"headers\"] = {\n\t\t[HeaderTypes.ContentType]:\n\t\t\trequest.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd ? MimeTypes.JsonLd : MimeTypes.Json\n\t};\n\n\tif (Is.stringValue(result.cursor)) {\n\t\theaders[HeaderTypes.Link] = HeaderHelper.createLinkHeader(\n\t\t\tawait hostingComponent.buildPublicUrl(httpRequestContext.serverRequest.url),\n\t\t\t{ cursor: result.cursor },\n\t\t\t\"next\"\n\t\t);\n\t}\n\n\treturn {\n\t\theaders,\n\t\tbody: result.entries\n\t};\n}\n\n/**\n * Get the document revision from the auditable item graph vertex.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function documentManagementGetRevision(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IDocumentManagementGetRevisionRequest\n): Promise<IDocumentManagementGetRevisionResponse> {\n\tGuards.object<IDocumentManagementGetRevisionRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IDocumentManagementGetRevisionRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.auditableItemGraphDocumentId),\n\t\trequest.pathParams.auditableItemGraphDocumentId\n\t);\n\n\tconst revision = Coerce.integer(request.pathParams.revision);\n\tGuards.integer(ROUTES_SOURCE, nameof(revision), revision);\n\n\tconst component = ComponentFactory.get<IDocumentManagementComponent>(componentName);\n\n\tconst result = await component.getRevision(\n\t\trequest.pathParams.auditableItemGraphDocumentId,\n\t\trevision,\n\t\t{\n\t\t\tincludeBlobStorageMetadata: Coerce.boolean(request.query?.includeBlobStorageMetadata),\n\t\t\tincludeBlobStorageData: Coerce.boolean(request.query?.includeBlobStorageData),\n\t\t\tincludeAttestation: Coerce.boolean(request.query?.includeAttestation),\n\t\t\textractRuleGroupId: request.query?.extractRuleGroupId,\n\t\t\textractMimeType: request.query?.extractMimeType\n\t\t}\n\t);\n\n\treturn {\n\t\theaders: {\n\t\t\t[HeaderTypes.ContentType]:\n\t\t\t\trequest.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd\n\t\t\t\t\t? MimeTypes.JsonLd\n\t\t\t\t\t: MimeTypes.Json\n\t\t},\n\t\tbody: result\n\t};\n}\n\n/**\n * Update the document from the auditable item graph vertex.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function documentManagementUpdate(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IDocumentManagementUpdateRequest\n): Promise<INoContentResponse> {\n\tGuards.object<IDocumentManagementUpdateRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IDocumentManagementUpdateRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.auditableItemGraphDocumentId),\n\t\trequest.pathParams.auditableItemGraphDocumentId\n\t);\n\n\tconst component = ComponentFactory.get<IDocumentManagementComponent>(componentName);\n\n\tawait component.update(\n\t\trequest.pathParams.auditableItemGraphDocumentId,\n\t\tIs.stringValue(request.body.blob) ? Converter.base64ToBytes(request.body.blob) : undefined,\n\t\trequest.body.annotationObject,\n\t\trequest.body.auditableItemGraphEdges\n\t);\n\n\treturn {\n\t\tstatusCode: HttpStatusCode.noContent\n\t};\n}\n\n/**\n * Remove the document from the auditable item graph vertex.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function documentManagementRemove(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IDocumentManagementRemoveRequest\n): Promise<INoContentResponse> {\n\tGuards.object<IDocumentManagementRemoveRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IDocumentManagementRemoveRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.auditableItemGraphDocumentId),\n\t\trequest.pathParams.auditableItemGraphDocumentId\n\t);\n\tconst revision = Coerce.number(request.pathParams.revision);\n\tGuards.integer(ROUTES_SOURCE, nameof(request.pathParams.revision), revision);\n\n\tconst component = ComponentFactory.get<IDocumentManagementComponent>(componentName);\n\n\tawait component.removeRevision(request.pathParams.auditableItemGraphDocumentId, revision);\n\n\treturn {\n\t\tstatusCode: HttpStatusCode.noContent\n\t};\n}\n\n/**\n * Query the documents from an auditable item graph vertex.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function documentManagementQuery(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IDocumentManagementQueryRequest\n): Promise<IDocumentManagementQueryResponse> {\n\tGuards.object<IDocumentManagementQueryRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IDocumentManagementQueryRequest[\"query\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.query),\n\t\trequest.query\n\t);\n\tGuards.stringValue(ROUTES_SOURCE, nameof(request.query.documentId), request.query.documentId);\n\n\tconst hostingComponent = ComponentFactory.get<IHostingComponent>(\n\t\thttpRequestContext.hostingComponentType ?? \"hosting\"\n\t);\n\n\tconst component = ComponentFactory.get<IDocumentManagementComponent>(componentName);\n\n\tconst result = await component.query(\n\t\trequest.query.documentId,\n\t\trequest.query?.cursor,\n\t\tCoerce.integer(request.query?.limit)\n\t);\n\n\tconst headers: IDocumentManagementQueryResponse[\"headers\"] = {\n\t\t[HeaderTypes.ContentType]:\n\t\t\trequest.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd ? MimeTypes.JsonLd : MimeTypes.Json\n\t};\n\n\tif (Is.stringValue(result.cursor)) {\n\t\theaders[HeaderTypes.Link] = HeaderHelper.createLinkHeader(\n\t\t\tawait hostingComponent.buildPublicUrl(httpRequestContext.serverRequest.url),\n\t\t\t{ cursor: result.cursor },\n\t\t\t\"next\"\n\t\t);\n\t}\n\n\treturn {\n\t\theaders,\n\t\tbody: result.entries\n\t};\n}\n"]}
|