@twin.org/node-core 0.0.2-next.11 → 0.0.2-next.13

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.
@@ -153,9 +153,7 @@ async function bootstrap(engineCore, context, envVars) {
153
153
  await bootstrapBlobEncryption(engineCore, context, envVars);
154
154
  await addVerificationMethod(engineCore, context, "attestation", envVars.attestationVerificationMethodId);
155
155
  await addVerificationMethod(engineCore, context, "immutable proof", envVars.immutableProofVerificationMethodId);
156
- if (core.Coerce.boolean(envVars.rightsManagementEnabled) ?? false) {
157
- await addVerificationMethod(engineCore, context, "rights management", envVars.rightsManagementNegotiationMethodId);
158
- }
156
+ await addVerificationMethod(engineCore, context, "node to node authentication", envVars.vcAuthenticationVerificationMethodId);
159
157
  await bootstrapSynchronisedStorage(engineCore, context, envVars);
160
158
  }
161
159
  /**
@@ -494,8 +492,6 @@ async function bootstrapAuth(engineCore, context, envVars, features) {
494
492
  */
495
493
  async function bootstrapSynchronisedStorage(engineCore, context, envVars, features) {
496
494
  if (core.Coerce.boolean(envVars.synchronisedStorageEnabled) ?? false) {
497
- // Add the verification method to the identity if it doesn't exist
498
- await addVerificationMethod(engineCore, context, "synchronised storage", envVars.synchronisedStorageVerificationMethodId);
499
495
  // If this is a trusted node we need to add the blob encryption key pair
500
496
  if (core.Is.stringValue(envVars.synchronisedStorageBlobStorageEncryptionKeyId) &&
501
497
  core.Is.stringBase64(envVars.synchronisedStorageBlobStorageKey)) {
@@ -574,8 +570,7 @@ function buildEngineConfiguration(envVars) {
574
570
  envVars.blobStorageEnableEncryption ??= "false";
575
571
  envVars.blobStorageEncryptionKeyId ??= "blob-encryption";
576
572
  envVars.synchronisedStorageBlobStorageEncryptionKeyId ??= "synchronised-storage-blob-encryption";
577
- envVars.synchronisedStorageVerificationMethodId ??= "synchronised-storage-assertion";
578
- envVars.rightsManagementNegotiationMethodId ??= "policy-negotiation-assertion";
573
+ envVars.vcAuthenticationVerificationMethodId ??= "node-authentication-assertion";
579
574
  const coreConfig = {
580
575
  debug: core.Coerce.boolean(envVars.debug) ?? false,
581
576
  types: {}
@@ -602,6 +597,7 @@ function buildEngineConfiguration(envVars) {
602
597
  configureAuditableItemGraph(coreConfig);
603
598
  configureAuditableItemStream(coreConfig);
604
599
  configureDocumentManagement(coreConfig);
600
+ configureNodeToNode(coreConfig, envVars);
605
601
  configureRightsManagement(coreConfig, envVars);
606
602
  configureSynchronisedStorage(coreConfig, envVars);
607
603
  configureFederatedCatalogue(coreConfig, envVars);
@@ -1358,6 +1354,24 @@ function configureDocumentManagement(coreConfig, envVars) {
1358
1354
  });
1359
1355
  }
1360
1356
  }
1357
+ /**
1358
+ * Configures the node to node.
1359
+ * @param coreConfig The core config.
1360
+ * @param envVars The environment variables.
1361
+ */
1362
+ function configureNodeToNode(coreConfig, envVars) {
1363
+ if (core.Is.arrayValue(coreConfig.types.identityComponent)) {
1364
+ // Can only perform VC authentication if identity component is available
1365
+ coreConfig.types.authenticationGeneratorComponent ??= [];
1366
+ coreConfig.types.authenticationGeneratorComponent.push({
1367
+ type: engineTypes.AuthenticationGeneratorComponentType.VerifiableCredential,
1368
+ options: {
1369
+ config: { verificationMethodId: envVars.vcAuthenticationVerificationMethodId ?? "" }
1370
+ },
1371
+ features: ["verifiable-credential"]
1372
+ });
1373
+ }
1374
+ }
1361
1375
  /**
1362
1376
  * Configures the rights management.
1363
1377
  * @param coreConfig The core config.
@@ -1393,7 +1407,12 @@ function configureRightsManagement(coreConfig, envVars) {
1393
1407
  });
1394
1408
  coreConfig.types.rightsManagementPdpComponent ??= [];
1395
1409
  coreConfig.types.rightsManagementPdpComponent.push({
1396
- type: engineTypes.RightsManagementPdpComponentType.Service
1410
+ type: engineTypes.RightsManagementPdpComponentType.Service,
1411
+ options: {
1412
+ arbiterModulesConfig: core.Is.arrayValue(envVars.rightsManagementArbiters)
1413
+ ? envVars.rightsManagementArbiters
1414
+ : undefined
1415
+ }
1397
1416
  });
1398
1417
  coreConfig.types.rightsManagementPepComponent ??= [];
1399
1418
  coreConfig.types.rightsManagementPepComponent.push({
@@ -1410,20 +1429,33 @@ function configureRightsManagement(coreConfig, envVars) {
1410
1429
  options: {
1411
1430
  negotiatorModulesConfig: core.Is.arrayValue(envVars.rightsManagementNegotiators)
1412
1431
  ? envVars.rightsManagementNegotiators
1413
- : undefined
1432
+ : undefined,
1433
+ requesterModulesConfig: core.Is.arrayValue(envVars.rightsManagementRequesters)
1434
+ ? envVars.rightsManagementRequesters
1435
+ : undefined,
1436
+ config: {
1437
+ baseCallbackUrl: envVars.rightsManagementBaseCallbackUrl ?? "",
1438
+ offers: core.Is.arrayValue(envVars.rightsManagementOffers)
1439
+ ? envVars.rightsManagementOffers
1440
+ : [],
1441
+ negotiationComponentCreator: async (url) => new rightsManagementRestClient.PolicyNegotiationPointClient({ endpoint: url })
1442
+ }
1414
1443
  }
1415
1444
  });
1416
1445
  coreConfig.types.rightsManagementPnapComponent ??= [];
1417
1446
  coreConfig.types.rightsManagementPnapComponent.push({
1418
1447
  type: engineTypes.RightsManagementPnapComponentType.Service
1419
1448
  });
1420
- coreConfig.types.rightsManagementPnrpComponent ??= [];
1421
- coreConfig.types.rightsManagementPnrpComponent.push({
1422
- type: engineTypes.RightsManagementPnrpComponentType.Service,
1449
+ coreConfig.types.rightsManagementDapComponent ??= [];
1450
+ coreConfig.types.rightsManagementDapComponent.push({
1451
+ type: engineTypes.RightsManagementDapComponentType.Service
1452
+ });
1453
+ coreConfig.types.rightsManagementDarpComponent ??= [];
1454
+ coreConfig.types.rightsManagementDarpComponent.push({
1455
+ type: engineTypes.RightsManagementDarpComponentType.Service,
1423
1456
  options: {
1424
1457
  config: {
1425
- negotiationMethodId: envVars.rightsManagementNegotiationMethodId ?? "",
1426
- negotiationComponentCreator: async (url) => new rightsManagementRestClient.PolicyNegotiationPointClient({ endpoint: url })
1458
+ dataAccessComponentCreator: async (url) => new rightsManagementRestClient.DataAccessPointClient({ endpoint: url })
1427
1459
  }
1428
1460
  }
1429
1461
  });
@@ -1462,7 +1494,6 @@ function configureSynchronisedStorage(coreConfig, envVars) {
1462
1494
  options: {
1463
1495
  config: {
1464
1496
  verifiableStorageKeyId: verifiableStorageKeyId ?? "",
1465
- synchronisedStorageMethodId: envVars.synchronisedStorageVerificationMethodId,
1466
1497
  blobStorageEncryptionKeyId: envVars.synchronisedStorageBlobStorageEncryptionKeyId,
1467
1498
  entityUpdateIntervalMinutes: core.Coerce.number(envVars.synchronisedStorageEntityUpdateIntervalMinutes),
1468
1499
  consolidationIntervalMinutes: core.Coerce.number(envVars.synchronisedStorageConsolidationIntervalMinutes),
@@ -1695,6 +1726,14 @@ function buildEngineServerConfiguration(envVars, coreEngineConfig, serverInfo, o
1695
1726
  }
1696
1727
  });
1697
1728
  }
1729
+ if (core.Coerce.boolean(envVars.enableVerifiableCredentialRouteProcessors) ?? false) {
1730
+ serverConfig.types.restRouteProcessor.push({
1731
+ type: engineServerTypes.RestRouteProcessorType.AuthVerifiableCredential
1732
+ });
1733
+ serverConfig.types.socketRouteProcessor.push({
1734
+ type: engineServerTypes.SocketRouteProcessorType.AuthVerifiableCredential
1735
+ });
1736
+ }
1698
1737
  engineServer.addDefaultRestPaths(serverConfig);
1699
1738
  engineServer.addDefaultSocketPaths(serverConfig);
1700
1739
  return serverConfig;
@@ -1767,7 +1806,7 @@ async function run(nodeOptions) {
1767
1806
  nodeOptions ??= {};
1768
1807
  const serverInfo = {
1769
1808
  name: nodeOptions?.serverName ?? "TWIN Node Server",
1770
- version: nodeOptions?.serverVersion ?? "0.0.2-next.11" // x-release-please-version
1809
+ version: nodeOptions?.serverVersion ?? "0.0.2-next.13" // x-release-please-version
1771
1810
  };
1772
1811
  console.log(`\u001B[4m🌩️ ${serverInfo.name} v${serverInfo.version}\u001B[24m\n`);
1773
1812
  if (!core.Is.stringValue(nodeOptions?.executionDirectory)) {
@@ -1,15 +1,15 @@
1
1
  import { PasswordHelper } from '@twin.org/api-auth-entity-storage-service';
2
- import { I18n, Is, Coerce, Converter, RandomHelper, StringHelper, Urn, GeneralError, ErrorHelper, EnvHelper } from '@twin.org/core';
2
+ import { I18n, Is, Converter, RandomHelper, StringHelper, Coerce, Urn, GeneralError, ErrorHelper, EnvHelper } from '@twin.org/core';
3
3
  import { PasswordGenerator, Bip39 } from '@twin.org/crypto';
4
4
  import { AuthenticationComponentType, InformationComponentType, RestRouteProcessorType, SocketRouteProcessorType, AuthenticationAdminComponentType } from '@twin.org/engine-server-types';
5
- import { WalletConnectorType, IdentityConnectorType, EntityStorageConnectorType, BlobStorageConnectorType, BlobStorageComponentType, VaultConnectorType, DltConfigType, LoggingConnectorType, LoggingComponentType, BackgroundTaskConnectorType, TaskSchedulerComponentType, EventBusConnectorType, EventBusComponentType, TelemetryConnectorType, TelemetryComponentType, MessagingEmailConnectorType, MessagingSmsConnectorType, MessagingPushNotificationConnectorType, MessagingComponentType, FaucetConnectorType, NftConnectorType, NftComponentType, VerifiableStorageConnectorType, VerifiableStorageComponentType, ImmutableProofComponentType, AuditableItemGraphComponentType, AuditableItemStreamComponentType, IdentityComponentType, IdentityResolverConnectorType, IdentityResolverComponentType, IdentityProfileConnectorType, IdentityProfileComponentType, AttestationConnectorType, AttestationComponentType, DataConverterConnectorType, DataExtractorConnectorType, DataProcessingComponentType, DocumentManagementComponentType, RightsManagementPapComponentType, RightsManagementPmpComponentType, RightsManagementPipComponentType, RightsManagementPxpComponentType, RightsManagementPdpComponentType, RightsManagementPepComponentType, RightsManagementPnpComponentType, RightsManagementPnapComponentType, RightsManagementPnrpComponentType, SynchronisedStorageComponentType, FederatedCatalogueComponentType, DataSpaceConnectorComponentType } from '@twin.org/engine-types';
5
+ import { WalletConnectorType, IdentityConnectorType, EntityStorageConnectorType, BlobStorageConnectorType, BlobStorageComponentType, VaultConnectorType, DltConfigType, LoggingConnectorType, LoggingComponentType, BackgroundTaskConnectorType, TaskSchedulerComponentType, EventBusConnectorType, EventBusComponentType, TelemetryConnectorType, TelemetryComponentType, MessagingEmailConnectorType, MessagingSmsConnectorType, MessagingPushNotificationConnectorType, MessagingComponentType, FaucetConnectorType, NftConnectorType, NftComponentType, VerifiableStorageConnectorType, VerifiableStorageComponentType, ImmutableProofComponentType, AuditableItemGraphComponentType, AuditableItemStreamComponentType, IdentityComponentType, IdentityResolverConnectorType, IdentityResolverComponentType, IdentityProfileConnectorType, IdentityProfileComponentType, AttestationConnectorType, AttestationComponentType, DataConverterConnectorType, DataExtractorConnectorType, DataProcessingComponentType, DocumentManagementComponentType, AuthenticationGeneratorComponentType, RightsManagementPapComponentType, RightsManagementPmpComponentType, RightsManagementPipComponentType, RightsManagementPxpComponentType, RightsManagementPdpComponentType, RightsManagementPepComponentType, RightsManagementPnpComponentType, RightsManagementPnapComponentType, RightsManagementDapComponentType, RightsManagementDarpComponentType, SynchronisedStorageComponentType, FederatedCatalogueComponentType, DataSpaceConnectorComponentType } from '@twin.org/engine-types';
6
6
  import { EntityStorageConnectorFactory } from '@twin.org/entity-storage-models';
7
7
  import { IdentityProfileConnectorFactory, IdentityConnectorFactory, IdentityResolverConnectorFactory, DocumentHelper } from '@twin.org/identity-models';
8
8
  import { VaultConnectorFactory, VaultKeyType } from '@twin.org/vault-models';
9
9
  import { WalletConnectorFactory } from '@twin.org/wallet-models';
10
10
  import { readFile, stat } from 'node:fs/promises';
11
11
  import path from 'node:path';
12
- import { PolicyNegotiationPointClient } from '@twin.org/rights-management-rest-client';
12
+ import { PolicyNegotiationPointClient, DataAccessPointClient } from '@twin.org/rights-management-rest-client';
13
13
  import { addDefaultRestPaths, addDefaultSocketPaths, EngineServer } from '@twin.org/engine-server';
14
14
  import { ModuleHelper } from '@twin.org/modules';
15
15
  import * as dotenv from 'dotenv';
@@ -132,9 +132,7 @@ async function bootstrap(engineCore, context, envVars) {
132
132
  await bootstrapBlobEncryption(engineCore, context, envVars);
133
133
  await addVerificationMethod(engineCore, context, "attestation", envVars.attestationVerificationMethodId);
134
134
  await addVerificationMethod(engineCore, context, "immutable proof", envVars.immutableProofVerificationMethodId);
135
- if (Coerce.boolean(envVars.rightsManagementEnabled) ?? false) {
136
- await addVerificationMethod(engineCore, context, "rights management", envVars.rightsManagementNegotiationMethodId);
137
- }
135
+ await addVerificationMethod(engineCore, context, "node to node authentication", envVars.vcAuthenticationVerificationMethodId);
138
136
  await bootstrapSynchronisedStorage(engineCore, context, envVars);
139
137
  }
140
138
  /**
@@ -473,8 +471,6 @@ async function bootstrapAuth(engineCore, context, envVars, features) {
473
471
  */
474
472
  async function bootstrapSynchronisedStorage(engineCore, context, envVars, features) {
475
473
  if (Coerce.boolean(envVars.synchronisedStorageEnabled) ?? false) {
476
- // Add the verification method to the identity if it doesn't exist
477
- await addVerificationMethod(engineCore, context, "synchronised storage", envVars.synchronisedStorageVerificationMethodId);
478
474
  // If this is a trusted node we need to add the blob encryption key pair
479
475
  if (Is.stringValue(envVars.synchronisedStorageBlobStorageEncryptionKeyId) &&
480
476
  Is.stringBase64(envVars.synchronisedStorageBlobStorageKey)) {
@@ -553,8 +549,7 @@ function buildEngineConfiguration(envVars) {
553
549
  envVars.blobStorageEnableEncryption ??= "false";
554
550
  envVars.blobStorageEncryptionKeyId ??= "blob-encryption";
555
551
  envVars.synchronisedStorageBlobStorageEncryptionKeyId ??= "synchronised-storage-blob-encryption";
556
- envVars.synchronisedStorageVerificationMethodId ??= "synchronised-storage-assertion";
557
- envVars.rightsManagementNegotiationMethodId ??= "policy-negotiation-assertion";
552
+ envVars.vcAuthenticationVerificationMethodId ??= "node-authentication-assertion";
558
553
  const coreConfig = {
559
554
  debug: Coerce.boolean(envVars.debug) ?? false,
560
555
  types: {}
@@ -581,6 +576,7 @@ function buildEngineConfiguration(envVars) {
581
576
  configureAuditableItemGraph(coreConfig);
582
577
  configureAuditableItemStream(coreConfig);
583
578
  configureDocumentManagement(coreConfig);
579
+ configureNodeToNode(coreConfig, envVars);
584
580
  configureRightsManagement(coreConfig, envVars);
585
581
  configureSynchronisedStorage(coreConfig, envVars);
586
582
  configureFederatedCatalogue(coreConfig, envVars);
@@ -1337,6 +1333,24 @@ function configureDocumentManagement(coreConfig, envVars) {
1337
1333
  });
1338
1334
  }
1339
1335
  }
1336
+ /**
1337
+ * Configures the node to node.
1338
+ * @param coreConfig The core config.
1339
+ * @param envVars The environment variables.
1340
+ */
1341
+ function configureNodeToNode(coreConfig, envVars) {
1342
+ if (Is.arrayValue(coreConfig.types.identityComponent)) {
1343
+ // Can only perform VC authentication if identity component is available
1344
+ coreConfig.types.authenticationGeneratorComponent ??= [];
1345
+ coreConfig.types.authenticationGeneratorComponent.push({
1346
+ type: AuthenticationGeneratorComponentType.VerifiableCredential,
1347
+ options: {
1348
+ config: { verificationMethodId: envVars.vcAuthenticationVerificationMethodId ?? "" }
1349
+ },
1350
+ features: ["verifiable-credential"]
1351
+ });
1352
+ }
1353
+ }
1340
1354
  /**
1341
1355
  * Configures the rights management.
1342
1356
  * @param coreConfig The core config.
@@ -1372,7 +1386,12 @@ function configureRightsManagement(coreConfig, envVars) {
1372
1386
  });
1373
1387
  coreConfig.types.rightsManagementPdpComponent ??= [];
1374
1388
  coreConfig.types.rightsManagementPdpComponent.push({
1375
- type: RightsManagementPdpComponentType.Service
1389
+ type: RightsManagementPdpComponentType.Service,
1390
+ options: {
1391
+ arbiterModulesConfig: Is.arrayValue(envVars.rightsManagementArbiters)
1392
+ ? envVars.rightsManagementArbiters
1393
+ : undefined
1394
+ }
1376
1395
  });
1377
1396
  coreConfig.types.rightsManagementPepComponent ??= [];
1378
1397
  coreConfig.types.rightsManagementPepComponent.push({
@@ -1389,20 +1408,33 @@ function configureRightsManagement(coreConfig, envVars) {
1389
1408
  options: {
1390
1409
  negotiatorModulesConfig: Is.arrayValue(envVars.rightsManagementNegotiators)
1391
1410
  ? envVars.rightsManagementNegotiators
1392
- : undefined
1411
+ : undefined,
1412
+ requesterModulesConfig: Is.arrayValue(envVars.rightsManagementRequesters)
1413
+ ? envVars.rightsManagementRequesters
1414
+ : undefined,
1415
+ config: {
1416
+ baseCallbackUrl: envVars.rightsManagementBaseCallbackUrl ?? "",
1417
+ offers: Is.arrayValue(envVars.rightsManagementOffers)
1418
+ ? envVars.rightsManagementOffers
1419
+ : [],
1420
+ negotiationComponentCreator: async (url) => new PolicyNegotiationPointClient({ endpoint: url })
1421
+ }
1393
1422
  }
1394
1423
  });
1395
1424
  coreConfig.types.rightsManagementPnapComponent ??= [];
1396
1425
  coreConfig.types.rightsManagementPnapComponent.push({
1397
1426
  type: RightsManagementPnapComponentType.Service
1398
1427
  });
1399
- coreConfig.types.rightsManagementPnrpComponent ??= [];
1400
- coreConfig.types.rightsManagementPnrpComponent.push({
1401
- type: RightsManagementPnrpComponentType.Service,
1428
+ coreConfig.types.rightsManagementDapComponent ??= [];
1429
+ coreConfig.types.rightsManagementDapComponent.push({
1430
+ type: RightsManagementDapComponentType.Service
1431
+ });
1432
+ coreConfig.types.rightsManagementDarpComponent ??= [];
1433
+ coreConfig.types.rightsManagementDarpComponent.push({
1434
+ type: RightsManagementDarpComponentType.Service,
1402
1435
  options: {
1403
1436
  config: {
1404
- negotiationMethodId: envVars.rightsManagementNegotiationMethodId ?? "",
1405
- negotiationComponentCreator: async (url) => new PolicyNegotiationPointClient({ endpoint: url })
1437
+ dataAccessComponentCreator: async (url) => new DataAccessPointClient({ endpoint: url })
1406
1438
  }
1407
1439
  }
1408
1440
  });
@@ -1441,7 +1473,6 @@ function configureSynchronisedStorage(coreConfig, envVars) {
1441
1473
  options: {
1442
1474
  config: {
1443
1475
  verifiableStorageKeyId: verifiableStorageKeyId ?? "",
1444
- synchronisedStorageMethodId: envVars.synchronisedStorageVerificationMethodId,
1445
1476
  blobStorageEncryptionKeyId: envVars.synchronisedStorageBlobStorageEncryptionKeyId,
1446
1477
  entityUpdateIntervalMinutes: Coerce.number(envVars.synchronisedStorageEntityUpdateIntervalMinutes),
1447
1478
  consolidationIntervalMinutes: Coerce.number(envVars.synchronisedStorageConsolidationIntervalMinutes),
@@ -1674,6 +1705,14 @@ function buildEngineServerConfiguration(envVars, coreEngineConfig, serverInfo, o
1674
1705
  }
1675
1706
  });
1676
1707
  }
1708
+ if (Coerce.boolean(envVars.enableVerifiableCredentialRouteProcessors) ?? false) {
1709
+ serverConfig.types.restRouteProcessor.push({
1710
+ type: RestRouteProcessorType.AuthVerifiableCredential
1711
+ });
1712
+ serverConfig.types.socketRouteProcessor.push({
1713
+ type: SocketRouteProcessorType.AuthVerifiableCredential
1714
+ });
1715
+ }
1677
1716
  addDefaultRestPaths(serverConfig);
1678
1717
  addDefaultSocketPaths(serverConfig);
1679
1718
  return serverConfig;
@@ -1746,7 +1785,7 @@ async function run(nodeOptions) {
1746
1785
  nodeOptions ??= {};
1747
1786
  const serverInfo = {
1748
1787
  name: nodeOptions?.serverName ?? "TWIN Node Server",
1749
- version: nodeOptions?.serverVersion ?? "0.0.2-next.11" // x-release-please-version
1788
+ version: nodeOptions?.serverVersion ?? "0.0.2-next.13" // x-release-please-version
1750
1789
  };
1751
1790
  console.log(`\u001B[4m🌩️ ${serverInfo.name} v${serverInfo.version}\u001B[24m\n`);
1752
1791
  if (!Is.stringValue(nodeOptions?.executionDirectory)) {
@@ -390,11 +390,6 @@ export interface IEngineEnvironmentVariables {
390
390
  * This only required if using a custom verifiable storage item, otherwise it will default the the network name.
391
391
  */
392
392
  synchronisedStorageVerifiableStorageKeyId?: string;
393
- /**
394
- * The identity verification method id to use with synchronised storage for signing/verifying changesets.
395
- * Defaults to synchronised-storage-assertion.
396
- */
397
- synchronisedStorageVerificationMethodId?: string;
398
393
  /**
399
394
  * The key from the vault which is used to encrypt the synchronised storage blobs.
400
395
  * Only required for trusted nodes, as regular nodes will request from the trusted nodes.
@@ -443,20 +438,24 @@ export interface IEngineEnvironmentVariables {
443
438
  */
444
439
  rightsManagementEnabled?: string;
445
440
  /**
446
- * The rights management verification method id to use when signing/verifying negotiation requests.
447
- * Defaults to policy-negotiation-assertion.
441
+ * What is the base callback url for rights management negotiations e.g. https://my-node/rights-management.
448
442
  */
449
- rightsManagementNegotiationMethodId?: string;
443
+ rightsManagementBaseCallbackUrl?: string;
444
+ /**
445
+ * The rights management configuration which includes the information sources modules to load.
446
+ * Use the @json: prefix to specify the path to the JSON configuration file.
447
+ */
448
+ rightsManagementInformationSources?: string;
450
449
  /**
451
450
  * The rights management configuration which includes the negotiator modules to load.
452
451
  * Use the @json: prefix to specify the path to the JSON configuration file.
453
452
  */
454
453
  rightsManagementNegotiators?: string;
455
454
  /**
456
- * The rights management configuration which includes the information sources modules to load.
455
+ * The rights management configuration which includes the requester modules to load.
457
456
  * Use the @json: prefix to specify the path to the JSON configuration file.
458
457
  */
459
- rightsManagementInformationSources?: string;
458
+ rightsManagementRequesters?: string;
460
459
  /**
461
460
  * The rights management configuration which includes the execution actions modules to load.
462
461
  * Use the @json: prefix to specify the path to the JSON configuration file.
@@ -467,6 +466,16 @@ export interface IEngineEnvironmentVariables {
467
466
  * Use the @json: prefix to specify the path to the JSON configuration file.
468
467
  */
469
468
  rightsManagementEnforcementProcessors?: string;
469
+ /**
470
+ * The rights management configuration which includes the arbiter modules to load.
471
+ * Use the @json: prefix to specify the path to the JSON configuration file.
472
+ */
473
+ rightsManagementArbiters?: string;
474
+ /**
475
+ * The rights management configuration which includes the offer modules to load.
476
+ * Use the @json: prefix to specify the path to the JSON configuration file.
477
+ */
478
+ rightsManagementOffers?: string;
470
479
  /**
471
480
  * Is the task scheduler enabled, defaults to false.
472
481
  */
@@ -480,4 +489,9 @@ export interface IEngineEnvironmentVariables {
480
489
  * Use the @json: prefix to specify the path to the JSON configuration file.
481
490
  */
482
491
  dataSpaceConnectorApps?: string;
492
+ /**
493
+ * Verifiable credential assertion for node to node communication.
494
+ * Defaults to node-authentication-assertion.
495
+ */
496
+ vcAuthenticationVerificationMethodId?: string;
483
497
  }
@@ -42,6 +42,10 @@ export interface IEngineServerEnvironmentVariables {
42
42
  * Additional MIME type processors to include, comma separated.
43
43
  */
44
44
  mimeTypeProcessors?: string;
45
+ /**
46
+ * Enable to the route processor for verifiable credentials.
47
+ */
48
+ enableVerifiableCredentialRouteProcessors?: string;
45
49
  /**
46
50
  * Disable Node Identity route processors.
47
51
  */
package/docs/changelog.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @twin.org/node-core - Changelog
2
2
 
3
+ ## [0.0.2-next.13](https://github.com/twinfoundation/node/compare/node-core-v0.0.2-next.12...node-core-v0.0.2-next.13) (2025-09-24)
4
+
5
+
6
+ ### Features
7
+
8
+ * update to latest engine ([00d4974](https://github.com/twinfoundation/node/commit/00d4974f9cfb02bf48505cfb4af4a7aba1df4b3d))
9
+
10
+ ## [0.0.2-next.12](https://github.com/twinfoundation/node/compare/node-core-v0.0.2-next.11...node-core-v0.0.2-next.12) (2025-09-19)
11
+
12
+
13
+ ### Features
14
+
15
+ * update rights management components ([176a0d6](https://github.com/twinfoundation/node/commit/176a0d611f88360fc845ae233b26ee0b43d7cb23))
16
+
3
17
  ## [0.0.2-next.11](https://github.com/twinfoundation/node/compare/node-core-v0.0.2-next.10...node-core-v0.0.2-next.11) (2025-09-08)
4
18
 
5
19
 
@@ -780,15 +780,6 @@ This only required if using a custom verifiable storage item, otherwise it will
780
780
 
781
781
  ***
782
782
 
783
- ### synchronisedStorageVerificationMethodId?
784
-
785
- > `optional` **synchronisedStorageVerificationMethodId**: `string`
786
-
787
- The identity verification method id to use with synchronised storage for signing/verifying changesets.
788
- Defaults to synchronised-storage-assertion.
789
-
790
- ***
791
-
792
783
  ### synchronisedStorageBlobStorageEncryptionKeyId?
793
784
 
794
785
  > `optional` **synchronisedStorageBlobStorageEncryptionKeyId**: `string`
@@ -896,12 +887,20 @@ Is the rights management enabled, defaults to false.
896
887
 
897
888
  ***
898
889
 
899
- ### rightsManagementNegotiationMethodId?
890
+ ### rightsManagementBaseCallbackUrl?
900
891
 
901
- > `optional` **rightsManagementNegotiationMethodId**: `string`
892
+ > `optional` **rightsManagementBaseCallbackUrl**: `string`
902
893
 
903
- The rights management verification method id to use when signing/verifying negotiation requests.
904
- Defaults to policy-negotiation-assertion.
894
+ What is the base callback url for rights management negotiations e.g. https://my-node/rights-management.
895
+
896
+ ***
897
+
898
+ ### rightsManagementInformationSources?
899
+
900
+ > `optional` **rightsManagementInformationSources**: `string`
901
+
902
+ The rights management configuration which includes the information sources modules to load.
903
+ Use the @json: prefix to specify the path to the JSON configuration file.
905
904
 
906
905
  ***
907
906
 
@@ -914,11 +913,11 @@ Use the @json: prefix to specify the path to the JSON configuration file.
914
913
 
915
914
  ***
916
915
 
917
- ### rightsManagementInformationSources?
916
+ ### rightsManagementRequesters?
918
917
 
919
- > `optional` **rightsManagementInformationSources**: `string`
918
+ > `optional` **rightsManagementRequesters**: `string`
920
919
 
921
- The rights management configuration which includes the information sources modules to load.
920
+ The rights management configuration which includes the requester modules to load.
922
921
  Use the @json: prefix to specify the path to the JSON configuration file.
923
922
 
924
923
  ***
@@ -941,6 +940,24 @@ Use the @json: prefix to specify the path to the JSON configuration file.
941
940
 
942
941
  ***
943
942
 
943
+ ### rightsManagementArbiters?
944
+
945
+ > `optional` **rightsManagementArbiters**: `string`
946
+
947
+ The rights management configuration which includes the arbiter modules to load.
948
+ Use the @json: prefix to specify the path to the JSON configuration file.
949
+
950
+ ***
951
+
952
+ ### rightsManagementOffers?
953
+
954
+ > `optional` **rightsManagementOffers**: `string`
955
+
956
+ The rights management configuration which includes the offer modules to load.
957
+ Use the @json: prefix to specify the path to the JSON configuration file.
958
+
959
+ ***
960
+
944
961
  ### taskSchedulerEnabled?
945
962
 
946
963
  > `optional` **taskSchedulerEnabled**: `string`
@@ -963,3 +980,12 @@ Is the data space connector enabled, defaults to false.
963
980
 
964
981
  The application configuration for the data space connector.
965
982
  Use the @json: prefix to specify the path to the JSON configuration file.
983
+
984
+ ***
985
+
986
+ ### vcAuthenticationVerificationMethodId?
987
+
988
+ > `optional` **vcAuthenticationVerificationMethodId**: `string`
989
+
990
+ Verifiable credential assertion for node to node communication.
991
+ Defaults to node-authentication-assertion.
@@ -88,6 +88,14 @@ Additional MIME type processors to include, comma separated.
88
88
 
89
89
  ***
90
90
 
91
+ ### enableVerifiableCredentialRouteProcessors?
92
+
93
+ > `optional` **enableVerifiableCredentialRouteProcessors**: `string`
94
+
95
+ Enable to the route processor for verifiable credentials.
96
+
97
+ ***
98
+
91
99
  ### disableNodeIdentity?
92
100
 
93
101
  > `optional` **disableNodeIdentity**: `string`
@@ -1164,19 +1164,6 @@ This only required if using a custom verifiable storage item, otherwise it will
1164
1164
 
1165
1165
  ***
1166
1166
 
1167
- ### synchronisedStorageVerificationMethodId?
1168
-
1169
- > `optional` **synchronisedStorageVerificationMethodId**: `string`
1170
-
1171
- The identity verification method id to use with synchronised storage for signing/verifying changesets.
1172
- Defaults to synchronised-storage-assertion.
1173
-
1174
- #### Inherited from
1175
-
1176
- [`IEngineEnvironmentVariables`](IEngineEnvironmentVariables.md).[`synchronisedStorageVerificationMethodId`](IEngineEnvironmentVariables.md#synchronisedstorageverificationmethodid)
1177
-
1178
- ***
1179
-
1180
1167
  ### synchronisedStorageBlobStorageEncryptionKeyId?
1181
1168
 
1182
1169
  > `optional` **synchronisedStorageBlobStorageEncryptionKeyId**: `string`
@@ -1324,16 +1311,28 @@ Is the rights management enabled, defaults to false.
1324
1311
 
1325
1312
  ***
1326
1313
 
1327
- ### rightsManagementNegotiationMethodId?
1314
+ ### rightsManagementBaseCallbackUrl?
1315
+
1316
+ > `optional` **rightsManagementBaseCallbackUrl**: `string`
1317
+
1318
+ What is the base callback url for rights management negotiations e.g. https://my-node/rights-management.
1319
+
1320
+ #### Inherited from
1321
+
1322
+ [`IEngineEnvironmentVariables`](IEngineEnvironmentVariables.md).[`rightsManagementBaseCallbackUrl`](IEngineEnvironmentVariables.md#rightsmanagementbasecallbackurl)
1323
+
1324
+ ***
1325
+
1326
+ ### rightsManagementInformationSources?
1328
1327
 
1329
- > `optional` **rightsManagementNegotiationMethodId**: `string`
1328
+ > `optional` **rightsManagementInformationSources**: `string`
1330
1329
 
1331
- The rights management verification method id to use when signing/verifying negotiation requests.
1332
- Defaults to policy-negotiation-assertion.
1330
+ The rights management configuration which includes the information sources modules to load.
1331
+ Use the @json: prefix to specify the path to the JSON configuration file.
1333
1332
 
1334
1333
  #### Inherited from
1335
1334
 
1336
- [`IEngineEnvironmentVariables`](IEngineEnvironmentVariables.md).[`rightsManagementNegotiationMethodId`](IEngineEnvironmentVariables.md#rightsmanagementnegotiationmethodid)
1335
+ [`IEngineEnvironmentVariables`](IEngineEnvironmentVariables.md).[`rightsManagementInformationSources`](IEngineEnvironmentVariables.md#rightsmanagementinformationsources)
1337
1336
 
1338
1337
  ***
1339
1338
 
@@ -1350,16 +1349,16 @@ Use the @json: prefix to specify the path to the JSON configuration file.
1350
1349
 
1351
1350
  ***
1352
1351
 
1353
- ### rightsManagementInformationSources?
1352
+ ### rightsManagementRequesters?
1354
1353
 
1355
- > `optional` **rightsManagementInformationSources**: `string`
1354
+ > `optional` **rightsManagementRequesters**: `string`
1356
1355
 
1357
- The rights management configuration which includes the information sources modules to load.
1356
+ The rights management configuration which includes the requester modules to load.
1358
1357
  Use the @json: prefix to specify the path to the JSON configuration file.
1359
1358
 
1360
1359
  #### Inherited from
1361
1360
 
1362
- [`IEngineEnvironmentVariables`](IEngineEnvironmentVariables.md).[`rightsManagementInformationSources`](IEngineEnvironmentVariables.md#rightsmanagementinformationsources)
1361
+ [`IEngineEnvironmentVariables`](IEngineEnvironmentVariables.md).[`rightsManagementRequesters`](IEngineEnvironmentVariables.md#rightsmanagementrequesters)
1363
1362
 
1364
1363
  ***
1365
1364
 
@@ -1389,6 +1388,32 @@ Use the @json: prefix to specify the path to the JSON configuration file.
1389
1388
 
1390
1389
  ***
1391
1390
 
1391
+ ### rightsManagementArbiters?
1392
+
1393
+ > `optional` **rightsManagementArbiters**: `string`
1394
+
1395
+ The rights management configuration which includes the arbiter modules to load.
1396
+ Use the @json: prefix to specify the path to the JSON configuration file.
1397
+
1398
+ #### Inherited from
1399
+
1400
+ [`IEngineEnvironmentVariables`](IEngineEnvironmentVariables.md).[`rightsManagementArbiters`](IEngineEnvironmentVariables.md#rightsmanagementarbiters)
1401
+
1402
+ ***
1403
+
1404
+ ### rightsManagementOffers?
1405
+
1406
+ > `optional` **rightsManagementOffers**: `string`
1407
+
1408
+ The rights management configuration which includes the offer modules to load.
1409
+ Use the @json: prefix to specify the path to the JSON configuration file.
1410
+
1411
+ #### Inherited from
1412
+
1413
+ [`IEngineEnvironmentVariables`](IEngineEnvironmentVariables.md).[`rightsManagementOffers`](IEngineEnvironmentVariables.md#rightsmanagementoffers)
1414
+
1415
+ ***
1416
+
1392
1417
  ### taskSchedulerEnabled?
1393
1418
 
1394
1419
  > `optional` **taskSchedulerEnabled**: `string`
@@ -1426,6 +1451,19 @@ Use the @json: prefix to specify the path to the JSON configuration file.
1426
1451
 
1427
1452
  ***
1428
1453
 
1454
+ ### vcAuthenticationVerificationMethodId?
1455
+
1456
+ > `optional` **vcAuthenticationVerificationMethodId**: `string`
1457
+
1458
+ Verifiable credential assertion for node to node communication.
1459
+ Defaults to node-authentication-assertion.
1460
+
1461
+ #### Inherited from
1462
+
1463
+ [`IEngineEnvironmentVariables`](IEngineEnvironmentVariables.md).[`vcAuthenticationVerificationMethodId`](IEngineEnvironmentVariables.md#vcauthenticationverificationmethodid)
1464
+
1465
+ ***
1466
+
1429
1467
  ### port?
1430
1468
 
1431
1469
  > `optional` **port**: `string`
@@ -1546,6 +1584,18 @@ Additional MIME type processors to include, comma separated.
1546
1584
 
1547
1585
  ***
1548
1586
 
1587
+ ### enableVerifiableCredentialRouteProcessors?
1588
+
1589
+ > `optional` **enableVerifiableCredentialRouteProcessors**: `string`
1590
+
1591
+ Enable to the route processor for verifiable credentials.
1592
+
1593
+ #### Inherited from
1594
+
1595
+ [`IEngineServerEnvironmentVariables`](IEngineServerEnvironmentVariables.md).[`enableVerifiableCredentialRouteProcessors`](IEngineServerEnvironmentVariables.md#enableverifiablecredentialrouteprocessors)
1596
+
1597
+ ***
1598
+
1549
1599
  ### disableNodeIdentity?
1550
1600
 
1551
1601
  > `optional` **disableNodeIdentity**: `string`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@twin.org/node-core",
3
- "version": "0.0.2-next.11",
3
+ "version": "0.0.2-next.13",
4
4
  "description": "TWIN Node Core for serving APIs using the specified configuration",
5
5
  "repository": {
6
6
  "type": "git",
@@ -29,6 +29,7 @@
29
29
  "@twin.org/identity-models": "next",
30
30
  "@twin.org/modules": "next",
31
31
  "@twin.org/rights-management-rest-client": "next",
32
+ "@twin.org/standards-w3c-odrl": "next",
32
33
  "@twin.org/vault-models": "next",
33
34
  "@twin.org/wallet-models": "next",
34
35
  "dotenv": "17.2.1",