@twin.org/verifiable-storage-service 0.9.1-next.2 → 0.9.1

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.
@@ -1,6 +1,6 @@
1
1
  // Copyright 2024 IOTA Stiftung.
2
2
  // SPDX-License-Identifier: Apache-2.0.
3
- import { HttpHeaderHelper } from "@twin.org/api-models";
3
+ import { HttpContextIdKeys, HttpHeaderHelper, HttpUrlHelper } from "@twin.org/api-models";
4
4
  import { ContextIdHelper, ContextIdKeys, ContextIdStore } from "@twin.org/context";
5
5
  import { ComponentFactory, Converter, Guards, Is } from "@twin.org/core";
6
6
  import { HeaderTypes, HttpStatusCode } from "@twin.org/web";
@@ -30,7 +30,7 @@ export function generateRestRoutesVerifiableStorage(baseRouteName, componentName
30
30
  tag: tagsVerifiableStorage[0].name,
31
31
  method: "POST",
32
32
  path: `${baseRouteName}/`,
33
- handler: async (httpRequestContext, request) => verifiableStorageCreate(httpRequestContext, componentName, request),
33
+ handler: async (httpRequestContext, request) => verifiableStorageCreate(httpRequestContext, componentName, request, baseRouteName),
34
34
  requestType: {
35
35
  type: "IVerifiableStorageCreateRequest",
36
36
  examples: [
@@ -183,9 +183,10 @@ export function generateRestRoutesVerifiableStorage(baseRouteName, componentName
183
183
  * @param httpRequestContext The request context for the API.
184
184
  * @param componentName The name of the component to use in the routes.
185
185
  * @param request The request.
186
+ * @param baseRouteName The base route name for the API.
186
187
  * @returns The response object with additional http response properties.
187
188
  */
188
- export async function verifiableStorageCreate(httpRequestContext, componentName, request) {
189
+ export async function verifiableStorageCreate(httpRequestContext, componentName, request, baseRouteName) {
189
190
  Guards.object(ROUTES_SOURCE, "request", request);
190
191
  Guards.object(ROUTES_SOURCE, "request.body", request.body);
191
192
  Guards.stringBase64(ROUTES_SOURCE, "request.body.data", request.body.data);
@@ -195,8 +196,9 @@ export async function verifiableStorageCreate(httpRequestContext, componentName,
195
196
  const result = await component.create(Converter.base64ToBytes(request.body.data), request.body.allowList, {
196
197
  maxAllowListSize: request.body.maxAllowListSize
197
198
  }, request.body.namespace, contextIds[ContextIdKeys.Organization]);
199
+ const publicOrigin = contextIds?.[HttpContextIdKeys.PublicOrigin];
198
200
  const headers = {};
199
- HttpHeaderHelper.buildId(headers, result.id);
201
+ HttpHeaderHelper.buildId(headers, result.id, HttpUrlHelper.combineOriginPath(publicOrigin, `${baseRouteName}/:id`));
200
202
  return {
201
203
  statusCode: HttpStatusCode.created,
202
204
  headers,
@@ -1 +1 @@
1
- {"version":3,"file":"verifiableStorageRoutes.js","sourceRoot":"","sources":["../../src/verifiableStorageRoutes.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2024 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport {\n\tHttpHeaderHelper,\n\ttype IHttpRequestContext,\n\ttype INoContentResponse,\n\ttype IRestRoute,\n\ttype ITag\n} from \"@twin.org/api-models\";\nimport { ContextIdHelper, ContextIdKeys, ContextIdStore } from \"@twin.org/context\";\nimport { ComponentFactory, Converter, Guards, Is } from \"@twin.org/core\";\nimport { nameof } from \"@twin.org/nameof\";\nimport type {\n\tIVerifiableStorageComponent,\n\tIVerifiableStorageCreateRequest,\n\tIVerifiableStorageCreateResponse,\n\tIVerifiableStorageGetRequest,\n\tIVerifiableStorageGetResponse,\n\tIVerifiableStorageRemoveRequest,\n\tIVerifiableStorageUpdateRequest,\n\tIVerifiableStorageUpdateResponse\n} from \"@twin.org/verifiable-storage-models\";\nimport { HeaderTypes, HttpStatusCode, type IHttpHeaders } from \"@twin.org/web\";\n\n/**\n * The source used when communicating about these routes.\n */\nconst ROUTES_SOURCE = \"verifiableStorageRoutes\";\n\n/**\n * The tag to associate with the routes.\n */\nexport const tagsVerifiableStorage: ITag[] = [\n\t{\n\t\tname: \"VerifiableStorage\",\n\t\tdescription: \"Endpoints which are modelled to access a verifiable storage.\"\n\t}\n];\n\n/**\n * The REST routes for VerifiableStorage.\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 generateRestRoutesVerifiableStorage(\n\tbaseRouteName: string,\n\tcomponentName: string\n): IRestRoute[] {\n\tconst createRoute: IRestRoute<IVerifiableStorageCreateRequest, IVerifiableStorageCreateResponse> =\n\t\t{\n\t\t\toperationId: \"verifiableStorageCreate\",\n\t\t\tsummary: \"Create an item in verifiable storage\",\n\t\t\ttag: tagsVerifiableStorage[0].name,\n\t\t\tmethod: \"POST\",\n\t\t\tpath: `${baseRouteName}/`,\n\t\t\thandler: async (httpRequestContext, request) =>\n\t\t\t\tverifiableStorageCreate(httpRequestContext, componentName, request),\n\t\t\trequestType: {\n\t\t\t\ttype: nameof<IVerifiableStorageCreateRequest>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"verifiableStorageCreateRequestExample\",\n\t\t\t\t\t\trequest: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\tdata: \"SGVsbG8gd29ybGQ=\"\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\tresponseType: [\n\t\t\t\t{\n\t\t\t\t\ttype: nameof<IVerifiableStorageCreateResponse>(),\n\t\t\t\t\texamples: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"verifiableStorageCreateResponseExample\",\n\t\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\t\tstatusCode: HttpStatusCode.created,\n\t\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\t\t[HeaderTypes.Location]:\n\t\t\t\t\t\t\t\t\t\t\"verifiable:iota:aW90YS1uZnQ6dHN0OjB4NzYyYjljNDllYTg2OWUwZWJkYTliYmZhNzY5Mzk0NDdhNDI4ZGNmMTc4YzVkMTVhYjQ0N2UyZDRmYmJiNGViMg==\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\treceipt: {\n\t\t\t\t\t\t\t\t\t\t\"@context\": \"https://schema.twindev.org/verifiable-storage/\",\n\t\t\t\t\t\t\t\t\t\ttype: \"VerifiableStorageIotaReceipt2026\"\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tid: \"verifiable:iota:aW90YS1uZnQ6dHN0OjB4NzYyYjljNDllYTg2OWUwZWJkYTliYmZhNzY5Mzk0NDdhNDI4ZGNmMTc4YzVkMTVhYjQ0N2UyZDRmYmJiNGViMg==\"\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\n\tconst updateRoute: IRestRoute<IVerifiableStorageUpdateRequest, IVerifiableStorageUpdateResponse> =\n\t\t{\n\t\t\toperationId: \"verifiableStorageUpdate\",\n\t\t\tsummary: \"Update an item in verifiable storage\",\n\t\t\ttag: tagsVerifiableStorage[0].name,\n\t\t\tmethod: \"PUT\",\n\t\t\tpath: `${baseRouteName}/:id`,\n\t\t\thandler: async (httpRequestContext, request) =>\n\t\t\t\tverifiableStorageUpdate(httpRequestContext, componentName, request),\n\t\t\trequestType: {\n\t\t\t\ttype: nameof<IVerifiableStorageUpdateRequest>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"verifiableStorageUpdateRequestExample\",\n\t\t\t\t\t\trequest: {\n\t\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\t\tid: \"verifiable:iota:aW90YS1uZnQ6dHN0OjB4NzYyYjljNDllYTg2OWUwZWJkYTliYmZhNzY5Mzk0NDdhNDI4ZGNmMTc4YzVkMTVhYjQ0N2UyZDRmYmJiNGViMg==\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\tdata: \"SGVsbG8gd29ybGQ=\"\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\tresponseType: [\n\t\t\t\t{\n\t\t\t\t\ttype: nameof<IVerifiableStorageUpdateResponse>(),\n\t\t\t\t\texamples: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"verifiableStorageUpdateResponseExample\",\n\t\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\t\"@context\": \"https://schema.twindev.org/verifiable-storage/\",\n\t\t\t\t\t\t\t\t\ttype: \"VerifiableStorageIotaReceipt2026\"\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\n\tconst getRoute: IRestRoute<IVerifiableStorageGetRequest, IVerifiableStorageGetResponse> = {\n\t\toperationId: \"verifiableStorageGet\",\n\t\tsummary: \"Get an verifiable storage item\",\n\t\ttag: tagsVerifiableStorage[0].name,\n\t\tmethod: \"GET\",\n\t\tpath: `${baseRouteName}/:id`,\n\t\thandler: async (httpRequestContext, request) => verifiableStorageGet(componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IVerifiableStorageGetRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"verifiableStorageGetRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tid: \"verifiable:iota:aW90YS1uZnQ6dHN0OjB4NzYyYjljNDllYTg2OWUwZWJkYTliYmZhNzY5Mzk0NDdhNDI4ZGNmMTc4YzVkMTVhYjQ0N2UyZDRmYmJiNGViMg==\"\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<IVerifiableStorageGetResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"verifiableStorageGetResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\tdata: \"SGVsbG8gd29ybGQ=\",\n\t\t\t\t\t\t\t\treceipt: {\n\t\t\t\t\t\t\t\t\t\"@context\": \"https://www.w3.org/ns/activitystreams\",\n\t\t\t\t\t\t\t\t\ttype: \"Create\",\n\t\t\t\t\t\t\t\t\tactor: \"https://example.org/actor\",\n\t\t\t\t\t\t\t\t\tobject: \"https://example.org/object\"\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\tconst removeRoute: IRestRoute<IVerifiableStorageRemoveRequest, INoContentResponse> = {\n\t\toperationId: \"verifiableStorageRemove\",\n\t\tsummary: \"Remove an item from verifiable storage\",\n\t\ttag: tagsVerifiableStorage[0].name,\n\t\tmethod: \"DELETE\",\n\t\tpath: `${baseRouteName}/:id`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tverifiableStorageRemove(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IVerifiableStorageRemoveRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"verifiableStorageRemoveRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tid: \"verifiable:iota:aW90YS1uZnQ6dHN0OjB4NzYyYjljNDllYTg2OWUwZWJkYTliYmZhNzY5Mzk0NDdhNDI4ZGNmMTc4YzVkMTVhYjQ0N2UyZDRmYmJiNGViMg==\"\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]\n\t};\n\n\treturn [createRoute, updateRoute, getRoute, removeRoute];\n}\n\n/**\n * Create a verifiable storage item.\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 verifiableStorageCreate(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IVerifiableStorageCreateRequest\n): Promise<IVerifiableStorageCreateResponse> {\n\tGuards.object<IVerifiableStorageCreateRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IVerifiableStorageCreateRequest[\"body\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.body),\n\t\trequest.body\n\t);\n\tGuards.stringBase64(ROUTES_SOURCE, nameof(request.body.data), request.body.data);\n\n\tconst contextIds = await ContextIdStore.getContextIds();\n\tContextIdHelper.guard(contextIds, ContextIdKeys.Organization);\n\n\tconst component = ComponentFactory.get<IVerifiableStorageComponent>(componentName);\n\tconst result = await component.create(\n\t\tConverter.base64ToBytes(request.body.data),\n\t\trequest.body.allowList,\n\t\t{\n\t\t\tmaxAllowListSize: request.body.maxAllowListSize\n\t\t},\n\t\trequest.body.namespace,\n\t\tcontextIds[ContextIdKeys.Organization]\n\t);\n\n\tconst headers: IHttpHeaders = {};\n\tHttpHeaderHelper.buildId(headers, result.id);\n\n\treturn {\n\t\tstatusCode: HttpStatusCode.created,\n\t\theaders,\n\t\tbody: {\n\t\t\treceipt: result.receipt,\n\t\t\tid: result.id\n\t\t}\n\t};\n}\n\n/**\n * Update a verifiable storage item.\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 verifiableStorageUpdate(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IVerifiableStorageUpdateRequest\n): Promise<IVerifiableStorageUpdateResponse> {\n\tGuards.object<IVerifiableStorageUpdateRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IVerifiableStorageGetRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.stringValue(ROUTES_SOURCE, nameof(request.pathParams.id), request.pathParams.id);\n\tGuards.object<IVerifiableStorageUpdateRequest[\"body\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.body),\n\t\trequest.body\n\t);\n\tGuards.stringBase64(ROUTES_SOURCE, nameof(request.body.data), request.body.data);\n\n\tconst contextIds = await ContextIdStore.getContextIds();\n\tContextIdHelper.guard(contextIds, ContextIdKeys.Organization);\n\n\tconst component = ComponentFactory.get<IVerifiableStorageComponent>(componentName);\n\tconst result = await component.update(\n\t\trequest.pathParams.id,\n\t\tIs.stringBase64(request.body.data) ? Converter.base64ToBytes(request.body.data) : undefined,\n\t\trequest.body.allowList,\n\t\tcontextIds[ContextIdKeys.Organization]\n\t);\n\treturn {\n\t\tbody: result\n\t};\n}\n\n/**\n * Get a verifiable storage item.\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 verifiableStorageGet(\n\tcomponentName: string,\n\trequest: IVerifiableStorageGetRequest\n): Promise<IVerifiableStorageGetResponse> {\n\tGuards.object<IVerifiableStorageGetRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IVerifiableStorageGetRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.stringValue(ROUTES_SOURCE, nameof(request.pathParams.id), request.pathParams.id);\n\n\tconst component = ComponentFactory.get<IVerifiableStorageComponent>(componentName);\n\tconst result = await component.get(request.pathParams.id, request.body);\n\treturn {\n\t\tbody: {\n\t\t\tdata: Is.uint8Array(result.data) ? Converter.bytesToBase64(result.data) : undefined,\n\t\t\treceipt: result.receipt,\n\t\t\tallowList: result.allowList\n\t\t}\n\t};\n}\n\n/**\n * Remove a verifiable storage item.\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 verifiableStorageRemove(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IVerifiableStorageRemoveRequest\n): Promise<INoContentResponse> {\n\tGuards.object<IVerifiableStorageRemoveRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IVerifiableStorageRemoveRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.stringValue(ROUTES_SOURCE, nameof(request.pathParams.id), request.pathParams.id);\n\n\tconst contextIds = await ContextIdStore.getContextIds();\n\tContextIdHelper.guard(contextIds, ContextIdKeys.Organization);\n\n\tconst component = ComponentFactory.get<IVerifiableStorageComponent>(componentName);\n\tawait component.remove(request.pathParams.id, contextIds[ContextIdKeys.Organization]);\n\n\treturn {\n\t\tstatusCode: HttpStatusCode.noContent\n\t};\n}\n"]}
1
+ {"version":3,"file":"verifiableStorageRoutes.js","sourceRoot":"","sources":["../../src/verifiableStorageRoutes.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2024 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport {\n\tHttpContextIdKeys,\n\tHttpHeaderHelper,\n\tHttpUrlHelper,\n\ttype IHttpRequestContext,\n\ttype INoContentResponse,\n\ttype IRestRoute,\n\ttype ITag\n} from \"@twin.org/api-models\";\nimport { ContextIdHelper, ContextIdKeys, ContextIdStore } from \"@twin.org/context\";\nimport { ComponentFactory, Converter, Guards, Is } from \"@twin.org/core\";\nimport { nameof } from \"@twin.org/nameof\";\nimport type {\n\tIVerifiableStorageComponent,\n\tIVerifiableStorageCreateRequest,\n\tIVerifiableStorageCreateResponse,\n\tIVerifiableStorageGetRequest,\n\tIVerifiableStorageGetResponse,\n\tIVerifiableStorageRemoveRequest,\n\tIVerifiableStorageUpdateRequest,\n\tIVerifiableStorageUpdateResponse\n} from \"@twin.org/verifiable-storage-models\";\nimport { HeaderTypes, HttpStatusCode, type IHttpHeaders } from \"@twin.org/web\";\n\n/**\n * The source used when communicating about these routes.\n */\nconst ROUTES_SOURCE = \"verifiableStorageRoutes\";\n\n/**\n * The tag to associate with the routes.\n */\nexport const tagsVerifiableStorage: ITag[] = [\n\t{\n\t\tname: \"VerifiableStorage\",\n\t\tdescription: \"Endpoints which are modelled to access a verifiable storage.\"\n\t}\n];\n\n/**\n * The REST routes for VerifiableStorage.\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 generateRestRoutesVerifiableStorage(\n\tbaseRouteName: string,\n\tcomponentName: string\n): IRestRoute[] {\n\tconst createRoute: IRestRoute<IVerifiableStorageCreateRequest, IVerifiableStorageCreateResponse> =\n\t\t{\n\t\t\toperationId: \"verifiableStorageCreate\",\n\t\t\tsummary: \"Create an item in verifiable storage\",\n\t\t\ttag: tagsVerifiableStorage[0].name,\n\t\t\tmethod: \"POST\",\n\t\t\tpath: `${baseRouteName}/`,\n\t\t\thandler: async (httpRequestContext, request) =>\n\t\t\t\tverifiableStorageCreate(httpRequestContext, componentName, request, baseRouteName),\n\t\t\trequestType: {\n\t\t\t\ttype: nameof<IVerifiableStorageCreateRequest>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"verifiableStorageCreateRequestExample\",\n\t\t\t\t\t\trequest: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\tdata: \"SGVsbG8gd29ybGQ=\"\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\tresponseType: [\n\t\t\t\t{\n\t\t\t\t\ttype: nameof<IVerifiableStorageCreateResponse>(),\n\t\t\t\t\texamples: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"verifiableStorageCreateResponseExample\",\n\t\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\t\tstatusCode: HttpStatusCode.created,\n\t\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\t\t[HeaderTypes.Location]:\n\t\t\t\t\t\t\t\t\t\t\"verifiable:iota:aW90YS1uZnQ6dHN0OjB4NzYyYjljNDllYTg2OWUwZWJkYTliYmZhNzY5Mzk0NDdhNDI4ZGNmMTc4YzVkMTVhYjQ0N2UyZDRmYmJiNGViMg==\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\treceipt: {\n\t\t\t\t\t\t\t\t\t\t\"@context\": \"https://schema.twindev.org/verifiable-storage/\",\n\t\t\t\t\t\t\t\t\t\ttype: \"VerifiableStorageIotaReceipt2026\"\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tid: \"verifiable:iota:aW90YS1uZnQ6dHN0OjB4NzYyYjljNDllYTg2OWUwZWJkYTliYmZhNzY5Mzk0NDdhNDI4ZGNmMTc4YzVkMTVhYjQ0N2UyZDRmYmJiNGViMg==\"\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\n\tconst updateRoute: IRestRoute<IVerifiableStorageUpdateRequest, IVerifiableStorageUpdateResponse> =\n\t\t{\n\t\t\toperationId: \"verifiableStorageUpdate\",\n\t\t\tsummary: \"Update an item in verifiable storage\",\n\t\t\ttag: tagsVerifiableStorage[0].name,\n\t\t\tmethod: \"PUT\",\n\t\t\tpath: `${baseRouteName}/:id`,\n\t\t\thandler: async (httpRequestContext, request) =>\n\t\t\t\tverifiableStorageUpdate(httpRequestContext, componentName, request),\n\t\t\trequestType: {\n\t\t\t\ttype: nameof<IVerifiableStorageUpdateRequest>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"verifiableStorageUpdateRequestExample\",\n\t\t\t\t\t\trequest: {\n\t\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\t\tid: \"verifiable:iota:aW90YS1uZnQ6dHN0OjB4NzYyYjljNDllYTg2OWUwZWJkYTliYmZhNzY5Mzk0NDdhNDI4ZGNmMTc4YzVkMTVhYjQ0N2UyZDRmYmJiNGViMg==\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\tdata: \"SGVsbG8gd29ybGQ=\"\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\tresponseType: [\n\t\t\t\t{\n\t\t\t\t\ttype: nameof<IVerifiableStorageUpdateResponse>(),\n\t\t\t\t\texamples: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"verifiableStorageUpdateResponseExample\",\n\t\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\t\"@context\": \"https://schema.twindev.org/verifiable-storage/\",\n\t\t\t\t\t\t\t\t\ttype: \"VerifiableStorageIotaReceipt2026\"\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\n\tconst getRoute: IRestRoute<IVerifiableStorageGetRequest, IVerifiableStorageGetResponse> = {\n\t\toperationId: \"verifiableStorageGet\",\n\t\tsummary: \"Get an verifiable storage item\",\n\t\ttag: tagsVerifiableStorage[0].name,\n\t\tmethod: \"GET\",\n\t\tpath: `${baseRouteName}/:id`,\n\t\thandler: async (httpRequestContext, request) => verifiableStorageGet(componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IVerifiableStorageGetRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"verifiableStorageGetRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tid: \"verifiable:iota:aW90YS1uZnQ6dHN0OjB4NzYyYjljNDllYTg2OWUwZWJkYTliYmZhNzY5Mzk0NDdhNDI4ZGNmMTc4YzVkMTVhYjQ0N2UyZDRmYmJiNGViMg==\"\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<IVerifiableStorageGetResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"verifiableStorageGetResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\tdata: \"SGVsbG8gd29ybGQ=\",\n\t\t\t\t\t\t\t\treceipt: {\n\t\t\t\t\t\t\t\t\t\"@context\": \"https://www.w3.org/ns/activitystreams\",\n\t\t\t\t\t\t\t\t\ttype: \"Create\",\n\t\t\t\t\t\t\t\t\tactor: \"https://example.org/actor\",\n\t\t\t\t\t\t\t\t\tobject: \"https://example.org/object\"\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\tconst removeRoute: IRestRoute<IVerifiableStorageRemoveRequest, INoContentResponse> = {\n\t\toperationId: \"verifiableStorageRemove\",\n\t\tsummary: \"Remove an item from verifiable storage\",\n\t\ttag: tagsVerifiableStorage[0].name,\n\t\tmethod: \"DELETE\",\n\t\tpath: `${baseRouteName}/:id`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tverifiableStorageRemove(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IVerifiableStorageRemoveRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"verifiableStorageRemoveRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tid: \"verifiable:iota:aW90YS1uZnQ6dHN0OjB4NzYyYjljNDllYTg2OWUwZWJkYTliYmZhNzY5Mzk0NDdhNDI4ZGNmMTc4YzVkMTVhYjQ0N2UyZDRmYmJiNGViMg==\"\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]\n\t};\n\n\treturn [createRoute, updateRoute, getRoute, removeRoute];\n}\n\n/**\n * Create a verifiable storage item.\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 * @param baseRouteName The base route name for the API.\n * @returns The response object with additional http response properties.\n */\nexport async function verifiableStorageCreate(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IVerifiableStorageCreateRequest,\n\tbaseRouteName: string\n): Promise<IVerifiableStorageCreateResponse> {\n\tGuards.object<IVerifiableStorageCreateRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IVerifiableStorageCreateRequest[\"body\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.body),\n\t\trequest.body\n\t);\n\tGuards.stringBase64(ROUTES_SOURCE, nameof(request.body.data), request.body.data);\n\n\tconst contextIds = await ContextIdStore.getContextIds();\n\tContextIdHelper.guard(contextIds, ContextIdKeys.Organization);\n\n\tconst component = ComponentFactory.get<IVerifiableStorageComponent>(componentName);\n\tconst result = await component.create(\n\t\tConverter.base64ToBytes(request.body.data),\n\t\trequest.body.allowList,\n\t\t{\n\t\t\tmaxAllowListSize: request.body.maxAllowListSize\n\t\t},\n\t\trequest.body.namespace,\n\t\tcontextIds[ContextIdKeys.Organization]\n\t);\n\n\tconst publicOrigin = contextIds?.[HttpContextIdKeys.PublicOrigin];\n\n\tconst headers: IHttpHeaders = {};\n\tHttpHeaderHelper.buildId(\n\t\theaders,\n\t\tresult.id,\n\t\tHttpUrlHelper.combineOriginPath(publicOrigin, `${baseRouteName}/:id`)\n\t);\n\n\treturn {\n\t\tstatusCode: HttpStatusCode.created,\n\t\theaders,\n\t\tbody: {\n\t\t\treceipt: result.receipt,\n\t\t\tid: result.id\n\t\t}\n\t};\n}\n\n/**\n * Update a verifiable storage item.\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 verifiableStorageUpdate(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IVerifiableStorageUpdateRequest\n): Promise<IVerifiableStorageUpdateResponse> {\n\tGuards.object<IVerifiableStorageUpdateRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IVerifiableStorageGetRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.stringValue(ROUTES_SOURCE, nameof(request.pathParams.id), request.pathParams.id);\n\tGuards.object<IVerifiableStorageUpdateRequest[\"body\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.body),\n\t\trequest.body\n\t);\n\tGuards.stringBase64(ROUTES_SOURCE, nameof(request.body.data), request.body.data);\n\n\tconst contextIds = await ContextIdStore.getContextIds();\n\tContextIdHelper.guard(contextIds, ContextIdKeys.Organization);\n\n\tconst component = ComponentFactory.get<IVerifiableStorageComponent>(componentName);\n\tconst result = await component.update(\n\t\trequest.pathParams.id,\n\t\tIs.stringBase64(request.body.data) ? Converter.base64ToBytes(request.body.data) : undefined,\n\t\trequest.body.allowList,\n\t\tcontextIds[ContextIdKeys.Organization]\n\t);\n\treturn {\n\t\tbody: result\n\t};\n}\n\n/**\n * Get a verifiable storage item.\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 verifiableStorageGet(\n\tcomponentName: string,\n\trequest: IVerifiableStorageGetRequest\n): Promise<IVerifiableStorageGetResponse> {\n\tGuards.object<IVerifiableStorageGetRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IVerifiableStorageGetRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.stringValue(ROUTES_SOURCE, nameof(request.pathParams.id), request.pathParams.id);\n\n\tconst component = ComponentFactory.get<IVerifiableStorageComponent>(componentName);\n\tconst result = await component.get(request.pathParams.id, request.body);\n\treturn {\n\t\tbody: {\n\t\t\tdata: Is.uint8Array(result.data) ? Converter.bytesToBase64(result.data) : undefined,\n\t\t\treceipt: result.receipt,\n\t\t\tallowList: result.allowList\n\t\t}\n\t};\n}\n\n/**\n * Remove a verifiable storage item.\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 verifiableStorageRemove(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IVerifiableStorageRemoveRequest\n): Promise<INoContentResponse> {\n\tGuards.object<IVerifiableStorageRemoveRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IVerifiableStorageRemoveRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.stringValue(ROUTES_SOURCE, nameof(request.pathParams.id), request.pathParams.id);\n\n\tconst contextIds = await ContextIdStore.getContextIds();\n\tContextIdHelper.guard(contextIds, ContextIdKeys.Organization);\n\n\tconst component = ComponentFactory.get<IVerifiableStorageComponent>(componentName);\n\tawait component.remove(request.pathParams.id, contextIds[ContextIdKeys.Organization]);\n\n\treturn {\n\t\tstatusCode: HttpStatusCode.noContent\n\t};\n}\n"]}
@@ -16,9 +16,10 @@ export declare function generateRestRoutesVerifiableStorage(baseRouteName: strin
16
16
  * @param httpRequestContext The request context for the API.
17
17
  * @param componentName The name of the component to use in the routes.
18
18
  * @param request The request.
19
+ * @param baseRouteName The base route name for the API.
19
20
  * @returns The response object with additional http response properties.
20
21
  */
21
- export declare function verifiableStorageCreate(httpRequestContext: IHttpRequestContext, componentName: string, request: IVerifiableStorageCreateRequest): Promise<IVerifiableStorageCreateResponse>;
22
+ export declare function verifiableStorageCreate(httpRequestContext: IHttpRequestContext, componentName: string, request: IVerifiableStorageCreateRequest, baseRouteName: string): Promise<IVerifiableStorageCreateResponse>;
22
23
  /**
23
24
  * Update a verifiable storage item.
24
25
  * @param httpRequestContext The request context for the API.
package/docs/changelog.md CHANGED
@@ -1,5 +1,30 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.9.1](https://github.com/iotaledger/twin-verifiable-storage/compare/verifiable-storage-service-v0.9.1...verifiable-storage-service-v0.9.1) (2026-07-27)
4
+
5
+
6
+ ### Features
7
+
8
+ * release to production ([6ce6744](https://github.com/iotaledger/twin-verifiable-storage/commit/6ce6744c124cca586c1ef0552624378d1207578d))
9
+ * release to production ([#75](https://github.com/iotaledger/twin-verifiable-storage/issues/75)) ([d631cd7](https://github.com/iotaledger/twin-verifiable-storage/commit/d631cd74bba5ac37d67178632eed5a779348170f))
10
+ * release to production ([#85](https://github.com/iotaledger/twin-verifiable-storage/issues/85)) ([a31f482](https://github.com/iotaledger/twin-verifiable-storage/commit/a31f4827556724694729deaa81d78445d96e4462))
11
+
12
+ ## [0.9.1-next.3](https://github.com/iotaledger/twin-verifiable-storage/compare/verifiable-storage-service-v0.9.1-next.2...verifiable-storage-service-v0.9.1-next.3) (2026-06-30)
13
+
14
+
15
+ ### Features
16
+
17
+ * enhanced rest testing ([1b79b4f](https://github.com/iotaledger/twin-verifiable-storage/commit/1b79b4f7997152dbf2edc9ff9a1281f9bf7b6053))
18
+
19
+
20
+ ### Dependencies
21
+
22
+ * The following workspace dependencies were updated
23
+ * dependencies
24
+ * @twin.org/verifiable-storage-models bumped from 0.9.1-next.2 to 0.9.1-next.3
25
+ * devDependencies
26
+ * @twin.org/verifiable-storage-connector-entity-storage bumped from 0.9.1-next.2 to 0.9.1-next.3
27
+
3
28
  ## [0.9.1-next.2](https://github.com/iotaledger/twin-verifiable-storage/compare/verifiable-storage-service-v0.9.1-next.1...verifiable-storage-service-v0.9.1-next.2) (2026-06-29)
4
29
 
5
30
 
@@ -1,6 +1,6 @@
1
1
  # Function: verifiableStorageCreate()
2
2
 
3
- > **verifiableStorageCreate**(`httpRequestContext`, `componentName`, `request`): `Promise`\<`IVerifiableStorageCreateResponse`\>
3
+ > **verifiableStorageCreate**(`httpRequestContext`, `componentName`, `request`, `baseRouteName`): `Promise`\<`IVerifiableStorageCreateResponse`\>
4
4
 
5
5
  Create a verifiable storage item.
6
6
 
@@ -24,6 +24,12 @@ The name of the component to use in the routes.
24
24
 
25
25
  The request.
26
26
 
27
+ ### baseRouteName
28
+
29
+ `string`
30
+
31
+ The base route name for the API.
32
+
27
33
  ## Returns
28
34
 
29
35
  `Promise`\<`IVerifiableStorageCreateResponse`\>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@twin.org/verifiable-storage-service",
3
- "version": "0.9.1-next.2",
3
+ "version": "0.9.1",
4
4
  "description": "Service component and REST routes that expose verifiable storage operations",
5
5
  "repository": {
6
6
  "type": "git",
@@ -14,16 +14,16 @@
14
14
  "license": "Apache-2.0",
15
15
  "type": "module",
16
16
  "engines": {
17
- "node": ">=20.0.0"
17
+ "node": ">=24.0.0"
18
18
  },
19
19
  "dependencies": {
20
- "@twin.org/api-models": "next",
21
- "@twin.org/context": "next",
22
- "@twin.org/core": "next",
23
- "@twin.org/entity": "next",
24
- "@twin.org/nameof": "next",
25
- "@twin.org/verifiable-storage-models": "0.9.1-next.2",
26
- "@twin.org/web": "next"
20
+ "@twin.org/api-models": "^0.9.1",
21
+ "@twin.org/context": "^0.9.1",
22
+ "@twin.org/core": "^0.9.1",
23
+ "@twin.org/entity": "^0.9.1",
24
+ "@twin.org/nameof": "^0.9.1",
25
+ "@twin.org/verifiable-storage-models": "^0.9.1",
26
+ "@twin.org/web": "^0.9.1"
27
27
  },
28
28
  "main": "./dist/es/index.js",
29
29
  "types": "./dist/types/index.d.ts",