@twin.org/auditable-item-graph-service 0.0.1-next.10
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/LICENSE +201 -0
- package/README.md +21 -0
- package/dist/cjs/index.cjs +1606 -0
- package/dist/esm/index.mjs +1596 -0
- package/dist/types/auditableItemGraphRoutes.d.ts +45 -0
- package/dist/types/auditableItemGraphService.d.ts +123 -0
- package/dist/types/entities/auditableItemGraphAlias.d.ts +30 -0
- package/dist/types/entities/auditableItemGraphChangeset.d.ts +30 -0
- package/dist/types/entities/auditableItemGraphEdge.d.ts +30 -0
- package/dist/types/entities/auditableItemGraphPatch.d.ts +21 -0
- package/dist/types/entities/auditableItemGraphResource.d.ts +26 -0
- package/dist/types/entities/auditableItemGraphVertex.d.ts +45 -0
- package/dist/types/index.d.ts +11 -0
- package/dist/types/models/IAuditableItemGraphServiceConfig.d.ts +5 -0
- package/dist/types/models/IAuditableItemGraphServiceContext.d.ts +17 -0
- package/dist/types/restEntryPoints.d.ts +2 -0
- package/dist/types/schema.d.ts +4 -0
- package/docs/changelog.md +5 -0
- package/docs/examples.md +1 -0
- package/docs/open-api/spec.json +1032 -0
- package/docs/reference/classes/AuditableItemGraphAlias.md +61 -0
- package/docs/reference/classes/AuditableItemGraphChangeset.md +61 -0
- package/docs/reference/classes/AuditableItemGraphEdge.md +61 -0
- package/docs/reference/classes/AuditableItemGraphPatch.md +45 -0
- package/docs/reference/classes/AuditableItemGraphResource.md +53 -0
- package/docs/reference/classes/AuditableItemGraphService.md +289 -0
- package/docs/reference/classes/AuditableItemGraphVertex.md +85 -0
- package/docs/reference/functions/auditableItemGraphCreate.md +25 -0
- package/docs/reference/functions/auditableItemGraphGet.md +25 -0
- package/docs/reference/functions/auditableItemGraphList.md +25 -0
- package/docs/reference/functions/auditableItemGraphUpdate.md +25 -0
- package/docs/reference/functions/generateRestRoutesAuditableItemGraph.md +21 -0
- package/docs/reference/functions/initSchema.md +9 -0
- package/docs/reference/index.md +29 -0
- package/docs/reference/interfaces/IAuditableItemGraphServiceConfig.md +3 -0
- package/docs/reference/variables/restEntryPoints.md +3 -0
- package/docs/reference/variables/tagsAuditableItemGraph.md +5 -0
- package/locales/en.json +19 -0
- package/package.json +51 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { ICreatedResponse, IHttpRequestContext, INoContentResponse, IRestRoute, ITag } from "@twin.org/api-models";
|
|
2
|
+
import { type IAuditableItemGraphCreateRequest, type IAuditableItemGraphGetRequest, type IAuditableItemGraphGetResponse, type IAuditableItemGraphListRequest, type IAuditableItemGraphListResponse, type IAuditableItemGraphUpdateRequest } from "@twin.org/auditable-item-graph-models";
|
|
3
|
+
/**
|
|
4
|
+
* The tag to associate with the routes.
|
|
5
|
+
*/
|
|
6
|
+
export declare const tagsAuditableItemGraph: ITag[];
|
|
7
|
+
/**
|
|
8
|
+
* The REST routes for auditable item graph.
|
|
9
|
+
* @param baseRouteName Prefix to prepend to the paths.
|
|
10
|
+
* @param componentName The name of the component to use in the routes stored in the ComponentFactory.
|
|
11
|
+
* @returns The generated routes.
|
|
12
|
+
*/
|
|
13
|
+
export declare function generateRestRoutesAuditableItemGraph(baseRouteName: string, componentName: string): IRestRoute[];
|
|
14
|
+
/**
|
|
15
|
+
* Create the graph vertex.
|
|
16
|
+
* @param httpRequestContext The request context for the API.
|
|
17
|
+
* @param componentName The name of the component to use in the routes.
|
|
18
|
+
* @param request The request.
|
|
19
|
+
* @returns The response object with additional http response properties.
|
|
20
|
+
*/
|
|
21
|
+
export declare function auditableItemGraphCreate(httpRequestContext: IHttpRequestContext, componentName: string, request: IAuditableItemGraphCreateRequest): Promise<ICreatedResponse>;
|
|
22
|
+
/**
|
|
23
|
+
* Get the graph vertex.
|
|
24
|
+
* @param httpRequestContext The request context for the API.
|
|
25
|
+
* @param componentName The name of the component to use in the routes.
|
|
26
|
+
* @param request The request.
|
|
27
|
+
* @returns The response object with additional http response properties.
|
|
28
|
+
*/
|
|
29
|
+
export declare function auditableItemGraphGet(httpRequestContext: IHttpRequestContext, componentName: string, request: IAuditableItemGraphGetRequest): Promise<IAuditableItemGraphGetResponse>;
|
|
30
|
+
/**
|
|
31
|
+
* Update the graph vertex.
|
|
32
|
+
* @param httpRequestContext The request context for the API.
|
|
33
|
+
* @param componentName The name of the component to use in the routes.
|
|
34
|
+
* @param request The request.
|
|
35
|
+
* @returns The response object with additional http response properties.
|
|
36
|
+
*/
|
|
37
|
+
export declare function auditableItemGraphUpdate(httpRequestContext: IHttpRequestContext, componentName: string, request: IAuditableItemGraphUpdateRequest): Promise<INoContentResponse>;
|
|
38
|
+
/**
|
|
39
|
+
* Query the graph vertices.
|
|
40
|
+
* @param httpRequestContext The request context for the API.
|
|
41
|
+
* @param componentName The name of the component to use in the routes.
|
|
42
|
+
* @param request The request.
|
|
43
|
+
* @returns The response object with additional http response properties.
|
|
44
|
+
*/
|
|
45
|
+
export declare function auditableItemGraphList(httpRequestContext: IHttpRequestContext, componentName: string, request: IAuditableItemGraphListRequest): Promise<IAuditableItemGraphListResponse>;
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { VerifyDepth, type IAuditableItemGraphComponent, type IAuditableItemGraphVertex, type IAuditableItemGraphVertexList } from "@twin.org/auditable-item-graph-models";
|
|
2
|
+
import { type IJsonLdNodeObject } from "@twin.org/data-json-ld";
|
|
3
|
+
import { SortDirection } from "@twin.org/entity";
|
|
4
|
+
import type { IAuditableItemGraphServiceConfig } from "./models/IAuditableItemGraphServiceConfig";
|
|
5
|
+
/**
|
|
6
|
+
* Class for performing auditable item graph operations.
|
|
7
|
+
*/
|
|
8
|
+
export declare class AuditableItemGraphService implements IAuditableItemGraphComponent {
|
|
9
|
+
/**
|
|
10
|
+
* The namespace for the service.
|
|
11
|
+
*/
|
|
12
|
+
static readonly NAMESPACE: string;
|
|
13
|
+
/**
|
|
14
|
+
* The namespace for the service changeset.
|
|
15
|
+
*/
|
|
16
|
+
static readonly NAMESPACE_CHANGESET: string;
|
|
17
|
+
/**
|
|
18
|
+
* The keys to pick when creating the proof for the stream.
|
|
19
|
+
*/
|
|
20
|
+
private static readonly _PROOF_KEYS_CHANGESET;
|
|
21
|
+
/**
|
|
22
|
+
* Runtime name for the class.
|
|
23
|
+
*/
|
|
24
|
+
readonly CLASS_NAME: string;
|
|
25
|
+
/**
|
|
26
|
+
* Create a new instance of AuditableItemGraphService.
|
|
27
|
+
* @param options The dependencies for the auditable item graph connector.
|
|
28
|
+
* @param options.config The configuration for the connector.
|
|
29
|
+
* @param options.immutableProofComponentType The immutable proof component type, defaults to "immutable-proof".
|
|
30
|
+
* @param options.vertexEntityStorageType The entity storage for vertices, defaults to "auditable-item-graph-vertex".
|
|
31
|
+
* @param options.changesetEntityStorageType The entity storage for changesets, defaults to "auditable-item-graph-changeset".
|
|
32
|
+
*/
|
|
33
|
+
constructor(options?: {
|
|
34
|
+
immutableProofComponentType?: string;
|
|
35
|
+
vertexEntityStorageType?: string;
|
|
36
|
+
changesetEntityStorageType?: string;
|
|
37
|
+
config?: IAuditableItemGraphServiceConfig;
|
|
38
|
+
});
|
|
39
|
+
/**
|
|
40
|
+
* Create a new graph vertex.
|
|
41
|
+
* @param vertexObject The object for the vertex as JSON-LD.
|
|
42
|
+
* @param aliases Alternative aliases that can be used to identify the vertex.
|
|
43
|
+
* @param resources The resources attached to the vertex.
|
|
44
|
+
* @param edges The edges connected to the vertex.
|
|
45
|
+
* @param userIdentity The identity to create the auditable item graph operation with.
|
|
46
|
+
* @param nodeIdentity The node identity to include in the auditable item graph.
|
|
47
|
+
* @returns The id of the new graph item.
|
|
48
|
+
*/
|
|
49
|
+
create(vertexObject?: IJsonLdNodeObject, aliases?: {
|
|
50
|
+
id: string;
|
|
51
|
+
aliasFormat?: string;
|
|
52
|
+
aliasObject?: IJsonLdNodeObject;
|
|
53
|
+
}[], resources?: {
|
|
54
|
+
id: string;
|
|
55
|
+
resourceObject?: IJsonLdNodeObject;
|
|
56
|
+
}[], edges?: {
|
|
57
|
+
id: string;
|
|
58
|
+
edgeRelationship: string;
|
|
59
|
+
edgeObject?: IJsonLdNodeObject;
|
|
60
|
+
}[], userIdentity?: string, nodeIdentity?: string): Promise<string>;
|
|
61
|
+
/**
|
|
62
|
+
* Get a graph vertex.
|
|
63
|
+
* @param id The id of the vertex to get.
|
|
64
|
+
* @returns The vertex if found.
|
|
65
|
+
* @param options Additional options for the get operation.
|
|
66
|
+
* @param options.includeDeleted Whether to include deleted/updated aliases, resource, edges, defaults to false.
|
|
67
|
+
* @param options.includeChangesets Whether to include the changesets of the vertex, defaults to false.
|
|
68
|
+
* @param options.verifySignatureDepth How many signatures to verify, defaults to "none".
|
|
69
|
+
* @throws NotFoundError if the vertex is not found.
|
|
70
|
+
*/
|
|
71
|
+
get(id: string, options?: {
|
|
72
|
+
includeDeleted?: boolean;
|
|
73
|
+
includeChangesets?: boolean;
|
|
74
|
+
verifySignatureDepth?: VerifyDepth;
|
|
75
|
+
}): Promise<IAuditableItemGraphVertex>;
|
|
76
|
+
/**
|
|
77
|
+
* Update a graph vertex.
|
|
78
|
+
* @param id The id of the vertex to update.
|
|
79
|
+
* @param vertexObject The object for the vertex.
|
|
80
|
+
* @param aliases Alternative aliases that can be used to identify the vertex.
|
|
81
|
+
* @param resources The resources attached to the vertex.
|
|
82
|
+
* @param edges The edges connected to the vertex.
|
|
83
|
+
* @param userIdentity The identity to create the auditable item graph operation with.
|
|
84
|
+
* @param nodeIdentity The node identity to include in the auditable item graph.
|
|
85
|
+
* @returns Nothing.
|
|
86
|
+
*/
|
|
87
|
+
update(id: string, vertexObject?: IJsonLdNodeObject, aliases?: {
|
|
88
|
+
id: string;
|
|
89
|
+
aliasFormat?: string;
|
|
90
|
+
aliasObject?: IJsonLdNodeObject;
|
|
91
|
+
}[], resources?: {
|
|
92
|
+
id: string;
|
|
93
|
+
resourceObject?: IJsonLdNodeObject;
|
|
94
|
+
}[], edges?: {
|
|
95
|
+
id: string;
|
|
96
|
+
edgeRelationship: string;
|
|
97
|
+
edgeObject?: IJsonLdNodeObject;
|
|
98
|
+
}[], userIdentity?: string, nodeIdentity?: string): Promise<void>;
|
|
99
|
+
/**
|
|
100
|
+
* Remove the immutable storage for an item.
|
|
101
|
+
* @param id The id of the vertex to get.
|
|
102
|
+
* @param nodeIdentity The node identity to use for vault operations.
|
|
103
|
+
* @returns Nothing.
|
|
104
|
+
* @throws NotFoundError if the vertex is not found.
|
|
105
|
+
*/
|
|
106
|
+
removeImmutable(id: string, nodeIdentity?: string): Promise<void>;
|
|
107
|
+
/**
|
|
108
|
+
* Query the graph for vertices.
|
|
109
|
+
* @param options The query options.
|
|
110
|
+
* @param options.id The optional id to look for.
|
|
111
|
+
* @param options.idMode Look in id, alias or both, defaults to both.
|
|
112
|
+
* @param orderBy The order for the results, defaults to created.
|
|
113
|
+
* @param orderByDirection The direction for the order, defaults to desc.
|
|
114
|
+
* @param properties The properties to return, if not provided defaults to id, created, aliases and object.
|
|
115
|
+
* @param cursor The cursor to request the next page of entities.
|
|
116
|
+
* @param pageSize The maximum number of entities in a page.
|
|
117
|
+
* @returns The entities, which can be partial if a limited keys list was provided.
|
|
118
|
+
*/
|
|
119
|
+
query(options?: {
|
|
120
|
+
id?: string;
|
|
121
|
+
idMode?: "id" | "alias" | "both";
|
|
122
|
+
}, orderBy?: keyof Pick<IAuditableItemGraphVertex, "dateCreated" | "dateModified">, orderByDirection?: SortDirection, properties?: (keyof IAuditableItemGraphVertex)[], cursor?: string, pageSize?: number): Promise<IAuditableItemGraphVertexList>;
|
|
123
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type IJsonLdNodeObject } from "@twin.org/data-json-ld";
|
|
2
|
+
/**
|
|
3
|
+
* Class describing the auditable item graph alias.
|
|
4
|
+
*/
|
|
5
|
+
export declare class AuditableItemGraphAlias {
|
|
6
|
+
/**
|
|
7
|
+
* The alternative alias for the vertex.
|
|
8
|
+
*/
|
|
9
|
+
id: string;
|
|
10
|
+
/**
|
|
11
|
+
* The format of the alias for the vertex.
|
|
12
|
+
*/
|
|
13
|
+
aliasFormat?: string;
|
|
14
|
+
/**
|
|
15
|
+
* The date/time of when the alias was created.
|
|
16
|
+
*/
|
|
17
|
+
dateCreated: string;
|
|
18
|
+
/**
|
|
19
|
+
* The date/time of when the alias was last modified.
|
|
20
|
+
*/
|
|
21
|
+
dateModified?: string;
|
|
22
|
+
/**
|
|
23
|
+
* The timestamp of when the alias was deleted, as we never actually remove items.
|
|
24
|
+
*/
|
|
25
|
+
dateDeleted?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Object to associate with the alias as JSON-LD.
|
|
28
|
+
*/
|
|
29
|
+
aliasObject?: IJsonLdNodeObject;
|
|
30
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { AuditableItemGraphPatch } from "./auditableItemGraphPatch";
|
|
2
|
+
/**
|
|
3
|
+
* Class describing a set of updates to the vertex.
|
|
4
|
+
*/
|
|
5
|
+
export declare class AuditableItemGraphChangeset {
|
|
6
|
+
/**
|
|
7
|
+
* The id of the changeset.
|
|
8
|
+
*/
|
|
9
|
+
id: string;
|
|
10
|
+
/**
|
|
11
|
+
* The vertex the changeset belongs to.
|
|
12
|
+
*/
|
|
13
|
+
vertexId: string;
|
|
14
|
+
/**
|
|
15
|
+
* The date/time of when the changeset was created.
|
|
16
|
+
*/
|
|
17
|
+
dateCreated: string;
|
|
18
|
+
/**
|
|
19
|
+
* The identity of the user who made the changeset.
|
|
20
|
+
*/
|
|
21
|
+
userIdentity: string;
|
|
22
|
+
/**
|
|
23
|
+
* The patches in the changeset.
|
|
24
|
+
*/
|
|
25
|
+
patches: AuditableItemGraphPatch[];
|
|
26
|
+
/**
|
|
27
|
+
* The immutable proof id which contains the signature for this changeset.
|
|
28
|
+
*/
|
|
29
|
+
proofId: string;
|
|
30
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type IJsonLdNodeObject } from "@twin.org/data-json-ld";
|
|
2
|
+
/**
|
|
3
|
+
* Class describing the auditable item graph edge.
|
|
4
|
+
*/
|
|
5
|
+
export declare class AuditableItemGraphEdge {
|
|
6
|
+
/**
|
|
7
|
+
* The id of the edge.
|
|
8
|
+
*/
|
|
9
|
+
id: string;
|
|
10
|
+
/**
|
|
11
|
+
* The date/time of when the edge was created.
|
|
12
|
+
*/
|
|
13
|
+
dateCreated: string;
|
|
14
|
+
/**
|
|
15
|
+
* The date/time of when the edge was last modified.
|
|
16
|
+
*/
|
|
17
|
+
dateModified?: string;
|
|
18
|
+
/**
|
|
19
|
+
* The timestamp of when the edge was deleted, as we never actually remove items.
|
|
20
|
+
*/
|
|
21
|
+
dateDeleted?: string;
|
|
22
|
+
/**
|
|
23
|
+
* The relationship between the two vertices.
|
|
24
|
+
*/
|
|
25
|
+
edgeRelationship: string;
|
|
26
|
+
/**
|
|
27
|
+
* Object to associate with the edge as JSON-LD.
|
|
28
|
+
*/
|
|
29
|
+
edgeObject?: IJsonLdNodeObject;
|
|
30
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Class describing the auditable item graph patches.
|
|
3
|
+
*/
|
|
4
|
+
export declare class AuditableItemGraphPatch {
|
|
5
|
+
/**
|
|
6
|
+
* The operation for the patch.
|
|
7
|
+
*/
|
|
8
|
+
op: "add" | "remove" | "replace" | "move" | "copy" | "test";
|
|
9
|
+
/**
|
|
10
|
+
* The path for the patch.
|
|
11
|
+
*/
|
|
12
|
+
path: string;
|
|
13
|
+
/**
|
|
14
|
+
* The from for the patch.
|
|
15
|
+
*/
|
|
16
|
+
from?: string;
|
|
17
|
+
/**
|
|
18
|
+
* The value for the patch.
|
|
19
|
+
*/
|
|
20
|
+
value?: unknown;
|
|
21
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type IJsonLdNodeObject } from "@twin.org/data-json-ld";
|
|
2
|
+
/**
|
|
3
|
+
* Class describing the auditable item graph vertex resource.
|
|
4
|
+
*/
|
|
5
|
+
export declare class AuditableItemGraphResource {
|
|
6
|
+
/**
|
|
7
|
+
* The id of the resource.
|
|
8
|
+
*/
|
|
9
|
+
id: string;
|
|
10
|
+
/**
|
|
11
|
+
* The date/time of when the resource was created.
|
|
12
|
+
*/
|
|
13
|
+
dateCreated: string;
|
|
14
|
+
/**
|
|
15
|
+
* The date/time of when the resource was last modified.
|
|
16
|
+
*/
|
|
17
|
+
dateModified?: string;
|
|
18
|
+
/**
|
|
19
|
+
* The timestamp of when the resource was deleted, as we never actually remove items.
|
|
20
|
+
*/
|
|
21
|
+
dateDeleted?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Object to associate with the resource as JSON-LD.
|
|
24
|
+
*/
|
|
25
|
+
resourceObject?: IJsonLdNodeObject;
|
|
26
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type IJsonLdNodeObject } from "@twin.org/data-json-ld";
|
|
2
|
+
import type { AuditableItemGraphAlias } from "./auditableItemGraphAlias";
|
|
3
|
+
import type { AuditableItemGraphEdge } from "./auditableItemGraphEdge";
|
|
4
|
+
import type { AuditableItemGraphResource } from "./auditableItemGraphResource";
|
|
5
|
+
/**
|
|
6
|
+
* Class describing the auditable item graph vertex.
|
|
7
|
+
*/
|
|
8
|
+
export declare class AuditableItemGraphVertex {
|
|
9
|
+
/**
|
|
10
|
+
* The id of the vertex.
|
|
11
|
+
*/
|
|
12
|
+
id: string;
|
|
13
|
+
/**
|
|
14
|
+
* The identity of the node which controls the vertex.
|
|
15
|
+
*/
|
|
16
|
+
nodeIdentity?: string;
|
|
17
|
+
/**
|
|
18
|
+
* The date/time of when the vertex was created.
|
|
19
|
+
*/
|
|
20
|
+
dateCreated: string;
|
|
21
|
+
/**
|
|
22
|
+
* The date/time of when the vertex was last modified.
|
|
23
|
+
*/
|
|
24
|
+
dateModified?: string;
|
|
25
|
+
/**
|
|
26
|
+
* Combined alias index for the vertex used for querying.
|
|
27
|
+
*/
|
|
28
|
+
aliasIndex?: string;
|
|
29
|
+
/**
|
|
30
|
+
* Object to associate with the vertex as JSON-LD.
|
|
31
|
+
*/
|
|
32
|
+
vertexObject?: IJsonLdNodeObject;
|
|
33
|
+
/**
|
|
34
|
+
* Alternative aliases that can be used to identify the vertex.
|
|
35
|
+
*/
|
|
36
|
+
aliases?: AuditableItemGraphAlias[];
|
|
37
|
+
/**
|
|
38
|
+
* The resources attached to the vertex.
|
|
39
|
+
*/
|
|
40
|
+
resources?: AuditableItemGraphResource[];
|
|
41
|
+
/**
|
|
42
|
+
* Edges connected to the vertex.
|
|
43
|
+
*/
|
|
44
|
+
edges?: AuditableItemGraphEdge[];
|
|
45
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from "./auditableItemGraphRoutes";
|
|
2
|
+
export * from "./auditableItemGraphService";
|
|
3
|
+
export * from "./entities/auditableItemGraphAlias";
|
|
4
|
+
export * from "./entities/auditableItemGraphChangeset";
|
|
5
|
+
export * from "./entities/auditableItemGraphEdge";
|
|
6
|
+
export * from "./entities/auditableItemGraphPatch";
|
|
7
|
+
export * from "./entities/auditableItemGraphResource";
|
|
8
|
+
export * from "./entities/auditableItemGraphVertex";
|
|
9
|
+
export * from "./models/IAuditableItemGraphServiceConfig";
|
|
10
|
+
export * from "./restEntryPoints";
|
|
11
|
+
export * from "./schema";
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context for the auditable item graph service.
|
|
3
|
+
*/
|
|
4
|
+
export interface IAuditableItemGraphServiceContext {
|
|
5
|
+
/**
|
|
6
|
+
* The current date/time.
|
|
7
|
+
*/
|
|
8
|
+
now: string;
|
|
9
|
+
/**
|
|
10
|
+
* The identity of the user.
|
|
11
|
+
*/
|
|
12
|
+
userIdentity: string;
|
|
13
|
+
/**
|
|
14
|
+
* The identity of the node.
|
|
15
|
+
*/
|
|
16
|
+
nodeIdentity: string;
|
|
17
|
+
}
|
package/docs/examples.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# @twin.org/auditable-item-graph-service - Examples
|