@twin.org/node 0.9.1-next.2 → 0.9.1-next.4
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/locales/en.json +237 -16
- package/docs/changelog.md +28 -0
- package/docs/open-api/spec.json +472 -0
- package/docs/usage.md +240 -5
- package/package.json +2 -2
package/dist/locales/en.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"error": {
|
|
3
3
|
"node": {
|
|
4
|
-
"nodeIdentityNotSet": "The node identity is enabled in config but is not set, please set it using the \"node-set
|
|
5
|
-
"nodeOrganizationIdNotSet": "The node organization is not set, please set it using the \"
|
|
6
|
-
"tenantsWithoutOrganizationId": "The following tenants have no organization ID assigned. Use the \"
|
|
4
|
+
"nodeIdentityNotSet": "The node identity is enabled in config but is not set, please set it using the \"node-identity-set\" CLI command.",
|
|
5
|
+
"nodeOrganizationIdNotSet": "The node organization is not set, please set it using the \"node-org-id-set\".",
|
|
6
|
+
"tenantsWithoutOrganizationId": "The following tenants have no organization ID assigned. Use the \"tenant-org-id-set\" command to assign one before starting the node: {tenantIds}",
|
|
7
7
|
"storageFileRootNotSet": "{storageFileRoot} is not set, the server will not start without it, please set it in the shell or create a .env file",
|
|
8
8
|
"extensionLoadingError": "Failed to load extension \"{extension}\"",
|
|
9
9
|
"insecureProtocol": "Cannot load extension from insecure protocol: {protocol}. Only HTTPS is allowed for remote extensions.",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
},
|
|
19
19
|
"bootstrapLegacy": {
|
|
20
20
|
"noFeaturesEnabled": "No features are enabled in legacy bootstrap mode, at least one feature must be enabled.",
|
|
21
|
-
"organizationNotSet": "The organisation identity has not been set. Run \"
|
|
21
|
+
"organizationNotSet": "The organisation identity has not been set. Run \"node-org-id-set\"."
|
|
22
22
|
},
|
|
23
23
|
"identityCreate": {
|
|
24
24
|
"invalidMnemonic": "The mnemonic is invalid, it should be 24 words from the standard wordlist.",
|
|
@@ -49,17 +49,27 @@
|
|
|
49
49
|
"userAlreadyExists": "The user with ID already exists and overwriteMode is set to \"error\".",
|
|
50
50
|
"tenantIdRequired": "The tenant ID is required when multi-tenancy is enabled."
|
|
51
51
|
},
|
|
52
|
+
"userGet": {
|
|
53
|
+
"tenantIdRequired": "The tenant ID is required when multi-tenancy is enabled."
|
|
54
|
+
},
|
|
52
55
|
"userUpdate": {
|
|
53
56
|
"tenantIdRequired": "The tenant ID is required when multi-tenancy is enabled."
|
|
54
57
|
},
|
|
58
|
+
"orgUsersList": {
|
|
59
|
+
"orgDidRequired": "The organization DID is required in multi-tenant mode. Provide --org-did or switch to single-tenant mode."
|
|
60
|
+
},
|
|
55
61
|
"vaultKeyCreate": {
|
|
56
62
|
"vaultKeyAlreadyExists": "The vault key with ID already exists and overwriteMode is set to \"error\"."
|
|
57
63
|
},
|
|
58
|
-
"
|
|
64
|
+
"nodeIdentitySet": {
|
|
59
65
|
"identityNotFound": "The identity with DID \"{notFoundId}\" was not found in the system."
|
|
60
66
|
},
|
|
61
|
-
"
|
|
62
|
-
"notAvailableInMultiTenantMode": "The
|
|
67
|
+
"nodeOrgIdGet": {
|
|
68
|
+
"notAvailableInMultiTenantMode": "The node-org-id-get command is not available in multi-tenant mode, use tenant-org-id-set instead.",
|
|
69
|
+
"nodeOrganizationIdNotSet": "The node organization ID is not set. Use \"node-org-id-set\" to set it first."
|
|
70
|
+
},
|
|
71
|
+
"nodeOrgIdSet": {
|
|
72
|
+
"notAvailableInMultiTenantMode": "The node-org-id-set command is not available in multi-tenant mode, use tenant-org-id-set instead."
|
|
63
73
|
},
|
|
64
74
|
"applyOrganizationIdToTenant": {
|
|
65
75
|
"tenantAdminComponentNotRegistered": "Multi-tenant support must be enabled to use this command."
|
|
@@ -68,6 +78,21 @@
|
|
|
68
78
|
"tenantAdminComponentNotRegistered": "Multi-tenant support must be enabled to use this command.",
|
|
69
79
|
"aliasNotFound": "The alias \"{alias}\" was not found in the tenant organization legacy list."
|
|
70
80
|
},
|
|
81
|
+
"tenantList": {
|
|
82
|
+
"tenantAdminComponentNotRegistered": "Multi-tenant support must be enabled to use this command."
|
|
83
|
+
},
|
|
84
|
+
"tenantGet": {
|
|
85
|
+
"tenantAdminComponentNotRegistered": "Multi-tenant support must be enabled to use this command."
|
|
86
|
+
},
|
|
87
|
+
"tenantListByOrg": {
|
|
88
|
+
"tenantAdminComponentNotRegistered": "Multi-tenant support must be enabled to use this command."
|
|
89
|
+
},
|
|
90
|
+
"nodeIdentityGet": {
|
|
91
|
+
"nodeIdentityNotSet": "The node identity is not set. Use \"node-identity-set\" to set it first."
|
|
92
|
+
},
|
|
93
|
+
"identityResolve": {
|
|
94
|
+
"identityNotFound": "The identity \"{identity}\" was not found."
|
|
95
|
+
},
|
|
71
96
|
"entityStorageAuthenticationService": {
|
|
72
97
|
"loginFailed": "Login failed",
|
|
73
98
|
"userNotFound": "The user with the specified e-mail could not be found",
|
|
@@ -89,6 +114,12 @@
|
|
|
89
114
|
"passwordHelper": {
|
|
90
115
|
"currentPasswordMismatch": "The current password is incorrect"
|
|
91
116
|
},
|
|
117
|
+
"entityStorageAuthenticationAuditService": {
|
|
118
|
+
"auditEntryNotFound": "The audit entry with the specified identifier could not be found \"{notFoundId}\"",
|
|
119
|
+
"getAuditEntryFailed": "Getting the audit entry failed",
|
|
120
|
+
"updateAuditEntryFailed": "Updating the audit entry failed",
|
|
121
|
+
"removeAuditEntryFailed": "Removing the audit entry failed"
|
|
122
|
+
},
|
|
92
123
|
"entityStorageAuthenticationRateService": {
|
|
93
124
|
"actionConfigMissing": "No rate-limit configuration exists for action \"{action}\".",
|
|
94
125
|
"rateLimitExceeded": "The rate limit for action \"{action}\" has been exceeded. Retry after {retryAfterSeconds} seconds."
|
|
@@ -323,8 +354,7 @@
|
|
|
323
354
|
},
|
|
324
355
|
"httpHeaderHelper": {
|
|
325
356
|
"locationMissing": "The Location response header is missing or empty",
|
|
326
|
-
"idNotFound": "The resource ID could not be extracted from the Location header"
|
|
327
|
-
"templateNoPlaceholder": "The URL template contains no colon-prefixed placeholder segment"
|
|
357
|
+
"idNotFound": "The resource ID could not be extracted from the Location header"
|
|
328
358
|
},
|
|
329
359
|
"contextIdHelper": {
|
|
330
360
|
"contextIdMissing": "The context ID \"{key}\" is missing from the provided context IDs",
|
|
@@ -348,7 +378,10 @@
|
|
|
348
378
|
},
|
|
349
379
|
"entityStorageHelper": {
|
|
350
380
|
"sortNotIndexed": "The property \"{property}\" is not indexed and cannot be used for sorting",
|
|
351
|
-
"propertyNotInSchema": "The property \"{property}\" does not exist in the schema and cannot be used for projection"
|
|
381
|
+
"propertyNotInSchema": "The property \"{property}\" does not exist in the schema and cannot be used for projection",
|
|
382
|
+
"unknownPropertyInConditionProperty": "The property \"{property}\" is not a recognised schema property and cannot be used as a condition property",
|
|
383
|
+
"unknownPropertyInConditions": "The property \"{property}\" is not a recognised schema property and cannot be used in conditions",
|
|
384
|
+
"invalidConditionPropertyPath": "The property \"{property}\" has an invalid path: the root must be an object or array type, segments must not exceed 128 characters, and must not contain SQL metacharacters or control characters"
|
|
352
385
|
},
|
|
353
386
|
"migrationHelper": {
|
|
354
387
|
"migrateSchemaFailed": "Migration failed for schema \"{schemaName}\".",
|
|
@@ -1279,6 +1312,7 @@
|
|
|
1279
1312
|
},
|
|
1280
1313
|
"entityStorageTelemetryConnector": {
|
|
1281
1314
|
"metricNotFound": "The metric could not be found \"{notFoundId}\"",
|
|
1315
|
+
"metricValueNotFound": "The metric value could not be found \"{notFoundId}\"",
|
|
1282
1316
|
"metricAlreadyExists": "The metric already exists \"{existingId}\"",
|
|
1283
1317
|
"counterIncOnly": "A counter metric can only be incremented, or added to with an integer",
|
|
1284
1318
|
"upDownCounterIncOrDecOnly": "An up/down counter metric can only be incremented, decremented or adjusted with an integer",
|
|
@@ -1427,11 +1461,13 @@
|
|
|
1427
1461
|
"cli": {
|
|
1428
1462
|
"commands": {
|
|
1429
1463
|
"command": "Command",
|
|
1464
|
+
"deprecatedAlias": "\"{alias}\" is a deprecated alias, please use \"{command}\" instead.",
|
|
1430
1465
|
"help": {
|
|
1431
1466
|
"description": "Display help information about CLI commands",
|
|
1432
1467
|
"labels": {
|
|
1433
1468
|
"commands": "All the commands available are listed below, for more information use the --help option with a specific command.",
|
|
1434
1469
|
"example": "Example",
|
|
1470
|
+
"aliases": "Deprecated aliases",
|
|
1435
1471
|
"optional": "optional",
|
|
1436
1472
|
"required": "required",
|
|
1437
1473
|
"default": "default",
|
|
@@ -1676,9 +1712,9 @@
|
|
|
1676
1712
|
"publicKeyHex": "Public Key Hex"
|
|
1677
1713
|
}
|
|
1678
1714
|
},
|
|
1679
|
-
"node-set
|
|
1715
|
+
"node-identity-set": {
|
|
1680
1716
|
"description": "Set the node identity",
|
|
1681
|
-
"example": "node-set
|
|
1717
|
+
"example": "node-identity-set --identity=\"did:iota...\"",
|
|
1682
1718
|
"params": {
|
|
1683
1719
|
"env-prefix": {
|
|
1684
1720
|
"description": "Prefix to use for standard .env files e.g. TWIN_."
|
|
@@ -1802,6 +1838,31 @@
|
|
|
1802
1838
|
"updated": "Updated tenant"
|
|
1803
1839
|
}
|
|
1804
1840
|
},
|
|
1841
|
+
"user-get": {
|
|
1842
|
+
"description": "Get a user by email address",
|
|
1843
|
+
"example": "user-get --email=\"bob@example.com\"",
|
|
1844
|
+
"params": {
|
|
1845
|
+
"env-prefix": {
|
|
1846
|
+
"description": "Prefix to use for standard .env files e.g. TWIN_."
|
|
1847
|
+
},
|
|
1848
|
+
"email": {
|
|
1849
|
+
"description": "The email address of the user to retrieve."
|
|
1850
|
+
},
|
|
1851
|
+
"tenant-id": {
|
|
1852
|
+
"description": "The tenant ID to retrieve the user from (multi-tenant mode only)."
|
|
1853
|
+
},
|
|
1854
|
+
"load-env": {
|
|
1855
|
+
"description": "Comma separated list of paths to .env files to read input parameters from."
|
|
1856
|
+
}
|
|
1857
|
+
},
|
|
1858
|
+
"labels": {
|
|
1859
|
+
"retrieving": "Retrieving user",
|
|
1860
|
+
"email": "Email",
|
|
1861
|
+
"identity": "Identity",
|
|
1862
|
+
"organization": "Organization",
|
|
1863
|
+
"scope": "Scope"
|
|
1864
|
+
}
|
|
1865
|
+
},
|
|
1805
1866
|
"user-create": {
|
|
1806
1867
|
"description": "Create a user",
|
|
1807
1868
|
"example": "user-create --user-identity=\"did:iota:....\" --organization-identity=\"did:iota:....\" --email=\"bob@examples.com\" --password=\"pass1234\" --scope=\"tenant-admin\" --givenName=\"Bob\" --familyName=\"Smith\"",
|
|
@@ -1944,9 +2005,24 @@
|
|
|
1944
2005
|
"publicKeyHex": "Public Key Hex"
|
|
1945
2006
|
}
|
|
1946
2007
|
},
|
|
1947
|
-
"
|
|
2008
|
+
"node-org-id-get": {
|
|
2009
|
+
"description": "Get the organization ID currently assigned to the node",
|
|
2010
|
+
"example": "node-org-id-get",
|
|
2011
|
+
"params": {
|
|
2012
|
+
"env-prefix": {
|
|
2013
|
+
"description": "Prefix to use for standard .env files e.g. TWIN_."
|
|
2014
|
+
},
|
|
2015
|
+
"load-env": {
|
|
2016
|
+
"description": "Comma separated list of paths to .env files to read input parameters from."
|
|
2017
|
+
}
|
|
2018
|
+
},
|
|
2019
|
+
"labels": {
|
|
2020
|
+
"organizationId": "Organization ID"
|
|
2021
|
+
}
|
|
2022
|
+
},
|
|
2023
|
+
"node-org-id-set": {
|
|
1948
2024
|
"description": "Set the node organization ID",
|
|
1949
|
-
"example": "
|
|
2025
|
+
"example": "node-org-id-set --organization-id=\"did:iota:...\"",
|
|
1950
2026
|
"params": {
|
|
1951
2027
|
"env-prefix": {
|
|
1952
2028
|
"description": "Prefix to use for standard .env files e.g. TWIN_."
|
|
@@ -1962,9 +2038,9 @@
|
|
|
1962
2038
|
"stored": "The node organization ID has been stored"
|
|
1963
2039
|
}
|
|
1964
2040
|
},
|
|
1965
|
-
"
|
|
2041
|
+
"tenant-org-id-set": {
|
|
1966
2042
|
"description": "Set the organization ID for a tenant",
|
|
1967
|
-
"example": "
|
|
2043
|
+
"example": "tenant-org-id-set --tenant-id=\"0011..aabb\" --organization-id=\"did:iota:...\"",
|
|
1968
2044
|
"params": {
|
|
1969
2045
|
"env-prefix": {
|
|
1970
2046
|
"description": "Prefix to use for standard .env files e.g. TWIN_."
|
|
@@ -2034,6 +2110,151 @@
|
|
|
2034
2110
|
"importing": "Importing key",
|
|
2035
2111
|
"imported": "Imported key"
|
|
2036
2112
|
}
|
|
2113
|
+
},
|
|
2114
|
+
"tenant-list": {
|
|
2115
|
+
"description": "List all tenants",
|
|
2116
|
+
"example": "tenant-list",
|
|
2117
|
+
"params": {
|
|
2118
|
+
"env-prefix": {
|
|
2119
|
+
"description": "Prefix to use for standard .env files e.g. TWIN_."
|
|
2120
|
+
},
|
|
2121
|
+
"load-env": {
|
|
2122
|
+
"description": "Comma separated list of paths to .env files to read input parameters from."
|
|
2123
|
+
}
|
|
2124
|
+
},
|
|
2125
|
+
"labels": {
|
|
2126
|
+
"listing": "Listing tenants",
|
|
2127
|
+
"tenantId": "Tenant ID",
|
|
2128
|
+
"apiKey": "API Key",
|
|
2129
|
+
"organizationId": "Organization ID",
|
|
2130
|
+
"label": "Label",
|
|
2131
|
+
"count": "Total tenants"
|
|
2132
|
+
}
|
|
2133
|
+
},
|
|
2134
|
+
"tenant-get": {
|
|
2135
|
+
"description": "Get the full configuration record for a single tenant",
|
|
2136
|
+
"example": "tenant-get --tenant-id=\"0011..aabb\"",
|
|
2137
|
+
"params": {
|
|
2138
|
+
"env-prefix": {
|
|
2139
|
+
"description": "Prefix to use for standard .env files e.g. TWIN_."
|
|
2140
|
+
},
|
|
2141
|
+
"tenant-id": {
|
|
2142
|
+
"description": "The tenant ID to retrieve."
|
|
2143
|
+
},
|
|
2144
|
+
"load-env": {
|
|
2145
|
+
"description": "Comma separated list of paths to .env files to read input parameters from."
|
|
2146
|
+
}
|
|
2147
|
+
},
|
|
2148
|
+
"labels": {
|
|
2149
|
+
"retrieving": "Retrieving tenant",
|
|
2150
|
+
"tenantId": "Tenant ID",
|
|
2151
|
+
"apiKey": "API Key",
|
|
2152
|
+
"organizationId": "Organization ID",
|
|
2153
|
+
"label": "Label",
|
|
2154
|
+
"publicOrigin": "Public Origin",
|
|
2155
|
+
"dateCreated": "Date Created",
|
|
2156
|
+
"dateModified": "Date Modified"
|
|
2157
|
+
}
|
|
2158
|
+
},
|
|
2159
|
+
"tenant-list-by-org": {
|
|
2160
|
+
"description": "List all tenants associated with a given organization DID",
|
|
2161
|
+
"example": "tenant-list-by-org --org-id=\"did:iota:...\"",
|
|
2162
|
+
"params": {
|
|
2163
|
+
"env-prefix": {
|
|
2164
|
+
"description": "Prefix to use for standard .env files e.g. TWIN_."
|
|
2165
|
+
},
|
|
2166
|
+
"org-id": {
|
|
2167
|
+
"description": "The organization DID to filter tenants by."
|
|
2168
|
+
},
|
|
2169
|
+
"load-env": {
|
|
2170
|
+
"description": "Comma separated list of paths to .env files to read input parameters from."
|
|
2171
|
+
}
|
|
2172
|
+
},
|
|
2173
|
+
"labels": {
|
|
2174
|
+
"listing": "Listing tenants for organization",
|
|
2175
|
+
"tenantId": "Tenant ID",
|
|
2176
|
+
"apiKey": "API Key",
|
|
2177
|
+
"organizationId": "Organization ID",
|
|
2178
|
+
"label": "Label",
|
|
2179
|
+
"count": "Total tenants"
|
|
2180
|
+
}
|
|
2181
|
+
},
|
|
2182
|
+
"node-identity-get": {
|
|
2183
|
+
"description": "Get the identity currently assigned to the node",
|
|
2184
|
+
"example": "node-identity-get",
|
|
2185
|
+
"params": {
|
|
2186
|
+
"env-prefix": {
|
|
2187
|
+
"description": "Prefix to use for standard .env files e.g. TWIN_."
|
|
2188
|
+
},
|
|
2189
|
+
"load-env": {
|
|
2190
|
+
"description": "Comma separated list of paths to .env files to read input parameters from."
|
|
2191
|
+
}
|
|
2192
|
+
},
|
|
2193
|
+
"labels": {
|
|
2194
|
+
"resolving": "Resolving node identity",
|
|
2195
|
+
"did": "DID",
|
|
2196
|
+
"verificationMethods": "Verification Methods"
|
|
2197
|
+
}
|
|
2198
|
+
},
|
|
2199
|
+
"identity-list": {
|
|
2200
|
+
"description": "List all identities held in custody by the node",
|
|
2201
|
+
"example": "identity-list",
|
|
2202
|
+
"params": {
|
|
2203
|
+
"env-prefix": {
|
|
2204
|
+
"description": "Prefix to use for standard .env files e.g. TWIN_."
|
|
2205
|
+
},
|
|
2206
|
+
"load-env": {
|
|
2207
|
+
"description": "Comma separated list of paths to .env files to read input parameters from."
|
|
2208
|
+
}
|
|
2209
|
+
},
|
|
2210
|
+
"labels": {
|
|
2211
|
+
"listing": "Listing identities",
|
|
2212
|
+
"did": "DID",
|
|
2213
|
+
"controller": "Controller",
|
|
2214
|
+
"count": "Total identities"
|
|
2215
|
+
}
|
|
2216
|
+
},
|
|
2217
|
+
"identity-resolve": {
|
|
2218
|
+
"description": "Resolve an identity DID to its full document",
|
|
2219
|
+
"example": "identity-resolve --identity=\"did:iota:...\"",
|
|
2220
|
+
"params": {
|
|
2221
|
+
"env-prefix": {
|
|
2222
|
+
"description": "Prefix to use for standard .env files e.g. TWIN_."
|
|
2223
|
+
},
|
|
2224
|
+
"identity": {
|
|
2225
|
+
"description": "The DID to resolve."
|
|
2226
|
+
},
|
|
2227
|
+
"load-env": {
|
|
2228
|
+
"description": "Comma separated list of paths to .env files to read input parameters from."
|
|
2229
|
+
}
|
|
2230
|
+
},
|
|
2231
|
+
"labels": {
|
|
2232
|
+
"resolving": "Resolving identity",
|
|
2233
|
+
"did": "DID",
|
|
2234
|
+
"verificationMethods": "Verification Methods"
|
|
2235
|
+
}
|
|
2236
|
+
},
|
|
2237
|
+
"org-users-list": {
|
|
2238
|
+
"description": "List all users belonging to an organization DID",
|
|
2239
|
+
"example": "org-users-list --org-did=\"did:iota:...\"",
|
|
2240
|
+
"params": {
|
|
2241
|
+
"env-prefix": {
|
|
2242
|
+
"description": "Prefix to use for standard .env files e.g. TWIN_."
|
|
2243
|
+
},
|
|
2244
|
+
"org-did": {
|
|
2245
|
+
"description": "The organization DID to list users for. Defaults to the node organization ID in single-tenant mode."
|
|
2246
|
+
},
|
|
2247
|
+
"load-env": {
|
|
2248
|
+
"description": "Comma separated list of paths to .env files to read input parameters from."
|
|
2249
|
+
}
|
|
2250
|
+
},
|
|
2251
|
+
"labels": {
|
|
2252
|
+
"listing": "Listing organization users",
|
|
2253
|
+
"email": "Email",
|
|
2254
|
+
"identity": "Identity",
|
|
2255
|
+
"scope": "Scope",
|
|
2256
|
+
"count": "Total users"
|
|
2257
|
+
}
|
|
2037
2258
|
}
|
|
2038
2259
|
}
|
|
2039
2260
|
}
|
package/docs/changelog.md
CHANGED
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.9.1-next.4](https://github.com/iotaledger/twin-node/compare/node-v0.9.1-next.3...node-v0.9.1-next.4) (2026-07-01)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* additional cli commands ([#269](https://github.com/iotaledger/twin-node/issues/269)) ([c9e7c93](https://github.com/iotaledger/twin-node/commit/c9e7c939aedfceed9cbe501f2dc936e84289ed62))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Dependencies
|
|
12
|
+
|
|
13
|
+
* The following workspace dependencies were updated
|
|
14
|
+
* dependencies
|
|
15
|
+
* @twin.org/node-core bumped from 0.9.1-next.3 to 0.9.1-next.4
|
|
16
|
+
|
|
17
|
+
## [0.9.1-next.3](https://github.com/iotaledger/twin-node/compare/node-v0.9.1-next.2...node-v0.9.1-next.3) (2026-06-30)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Miscellaneous Chores
|
|
21
|
+
|
|
22
|
+
* **node:** Synchronize repo versions
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### Dependencies
|
|
26
|
+
|
|
27
|
+
* The following workspace dependencies were updated
|
|
28
|
+
* dependencies
|
|
29
|
+
* @twin.org/node-core bumped from 0.9.1-next.2 to 0.9.1-next.3
|
|
30
|
+
|
|
3
31
|
## [0.9.1-next.2](https://github.com/iotaledger/twin-node/compare/node-v0.9.1-next.1...node-v0.9.1-next.2) (2026-06-29)
|
|
4
32
|
|
|
5
33
|
|
package/docs/open-api/spec.json
CHANGED
|
@@ -1952,6 +1952,311 @@
|
|
|
1952
1952
|
}
|
|
1953
1953
|
}
|
|
1954
1954
|
},
|
|
1955
|
+
"/authentication/audit/{id}": {
|
|
1956
|
+
"get": {
|
|
1957
|
+
"operationId": "authenticationAuditGet",
|
|
1958
|
+
"summary": "Get an authentication audit entry",
|
|
1959
|
+
"tags": [
|
|
1960
|
+
"Authentication Audit"
|
|
1961
|
+
],
|
|
1962
|
+
"parameters": [
|
|
1963
|
+
{
|
|
1964
|
+
"name": "id",
|
|
1965
|
+
"description": "The audit entry id.",
|
|
1966
|
+
"in": "path",
|
|
1967
|
+
"required": true,
|
|
1968
|
+
"schema": {
|
|
1969
|
+
"type": "string"
|
|
1970
|
+
},
|
|
1971
|
+
"style": "simple",
|
|
1972
|
+
"example": "018f0b53d5d5704fa3a06d6ed2478575"
|
|
1973
|
+
}
|
|
1974
|
+
],
|
|
1975
|
+
"security": [
|
|
1976
|
+
{
|
|
1977
|
+
"jwtBearerAuthScheme": []
|
|
1978
|
+
}
|
|
1979
|
+
],
|
|
1980
|
+
"responses": {
|
|
1981
|
+
"200": {
|
|
1982
|
+
"description": "Response from getting an authentication audit entry.",
|
|
1983
|
+
"content": {
|
|
1984
|
+
"application/json": {
|
|
1985
|
+
"schema": {
|
|
1986
|
+
"$ref": "#/components/schemas/AuthenticationAuditEntry"
|
|
1987
|
+
},
|
|
1988
|
+
"examples": {
|
|
1989
|
+
"authenticationAuditGetResponseExample": {
|
|
1990
|
+
"summary": "The response for getting an authentication audit entry.",
|
|
1991
|
+
"value": {
|
|
1992
|
+
"id": "018f0b53d5d5704fa3a06d6ed2478575",
|
|
1993
|
+
"actorId": "user@example.com",
|
|
1994
|
+
"dateCreated": "2026-01-12T09:05:23.123Z",
|
|
1995
|
+
"event": "login-success",
|
|
1996
|
+
"data": {
|
|
1997
|
+
"organizationIdentity": "did:example:org1"
|
|
1998
|
+
}
|
|
1999
|
+
}
|
|
2000
|
+
}
|
|
2001
|
+
}
|
|
2002
|
+
}
|
|
2003
|
+
}
|
|
2004
|
+
},
|
|
2005
|
+
"400": {
|
|
2006
|
+
"description": "The server cannot process the request, see the content for more details.",
|
|
2007
|
+
"content": {
|
|
2008
|
+
"application/json": {
|
|
2009
|
+
"schema": {
|
|
2010
|
+
"$ref": "#/components/schemas/Error"
|
|
2011
|
+
},
|
|
2012
|
+
"examples": {
|
|
2013
|
+
"exampleResponse": {
|
|
2014
|
+
"value": {
|
|
2015
|
+
"name": "GeneralError",
|
|
2016
|
+
"message": "errorMessage",
|
|
2017
|
+
"properties": {
|
|
2018
|
+
"foo": "bar"
|
|
2019
|
+
}
|
|
2020
|
+
}
|
|
2021
|
+
}
|
|
2022
|
+
}
|
|
2023
|
+
}
|
|
2024
|
+
}
|
|
2025
|
+
},
|
|
2026
|
+
"401": {
|
|
2027
|
+
"description": "You are not authorized to use the API or no credentials were supplied, see the content for more details.",
|
|
2028
|
+
"content": {
|
|
2029
|
+
"application/json": {
|
|
2030
|
+
"schema": {
|
|
2031
|
+
"$ref": "#/components/schemas/Error"
|
|
2032
|
+
},
|
|
2033
|
+
"examples": {
|
|
2034
|
+
"exampleResponse": {
|
|
2035
|
+
"value": {
|
|
2036
|
+
"name": "UnauthorizedError",
|
|
2037
|
+
"message": "errorMessage"
|
|
2038
|
+
}
|
|
2039
|
+
}
|
|
2040
|
+
}
|
|
2041
|
+
}
|
|
2042
|
+
}
|
|
2043
|
+
},
|
|
2044
|
+
"500": {
|
|
2045
|
+
"description": "The server has encountered a situation it does not know how to handle, see the content for more details.",
|
|
2046
|
+
"content": {
|
|
2047
|
+
"application/json": {
|
|
2048
|
+
"schema": {
|
|
2049
|
+
"$ref": "#/components/schemas/Error"
|
|
2050
|
+
},
|
|
2051
|
+
"examples": {
|
|
2052
|
+
"exampleResponse": {
|
|
2053
|
+
"value": {
|
|
2054
|
+
"name": "InternalServerError",
|
|
2055
|
+
"message": "errorMessage"
|
|
2056
|
+
}
|
|
2057
|
+
}
|
|
2058
|
+
}
|
|
2059
|
+
}
|
|
2060
|
+
}
|
|
2061
|
+
}
|
|
2062
|
+
}
|
|
2063
|
+
},
|
|
2064
|
+
"put": {
|
|
2065
|
+
"operationId": "authenticationAuditUpdate",
|
|
2066
|
+
"summary": "Update an authentication audit entry",
|
|
2067
|
+
"tags": [
|
|
2068
|
+
"Authentication Audit"
|
|
2069
|
+
],
|
|
2070
|
+
"parameters": [
|
|
2071
|
+
{
|
|
2072
|
+
"name": "id",
|
|
2073
|
+
"description": "The audit entry id.",
|
|
2074
|
+
"in": "path",
|
|
2075
|
+
"required": true,
|
|
2076
|
+
"schema": {
|
|
2077
|
+
"type": "string"
|
|
2078
|
+
},
|
|
2079
|
+
"style": "simple",
|
|
2080
|
+
"example": "018f0b53d5d5704fa3a06d6ed2478575"
|
|
2081
|
+
}
|
|
2082
|
+
],
|
|
2083
|
+
"security": [
|
|
2084
|
+
{
|
|
2085
|
+
"jwtBearerAuthScheme": []
|
|
2086
|
+
}
|
|
2087
|
+
],
|
|
2088
|
+
"requestBody": {
|
|
2089
|
+
"description": "Update an authentication audit entry.",
|
|
2090
|
+
"required": true,
|
|
2091
|
+
"content": {
|
|
2092
|
+
"application/json": {
|
|
2093
|
+
"schema": {
|
|
2094
|
+
"$ref": "#/components/schemas/AuditUpdateRequest"
|
|
2095
|
+
},
|
|
2096
|
+
"examples": {
|
|
2097
|
+
"authenticationAuditUpdateRequestExample": {
|
|
2098
|
+
"summary": "The request to update an authentication audit entry.",
|
|
2099
|
+
"value": {
|
|
2100
|
+
"data": {
|
|
2101
|
+
"organizationIdentity": "did:example:org1"
|
|
2102
|
+
}
|
|
2103
|
+
}
|
|
2104
|
+
}
|
|
2105
|
+
}
|
|
2106
|
+
}
|
|
2107
|
+
}
|
|
2108
|
+
},
|
|
2109
|
+
"responses": {
|
|
2110
|
+
"204": {
|
|
2111
|
+
"description": "The rest request ended in success with no data."
|
|
2112
|
+
},
|
|
2113
|
+
"400": {
|
|
2114
|
+
"description": "The server cannot process the request, see the content for more details.",
|
|
2115
|
+
"content": {
|
|
2116
|
+
"application/json": {
|
|
2117
|
+
"schema": {
|
|
2118
|
+
"$ref": "#/components/schemas/Error"
|
|
2119
|
+
},
|
|
2120
|
+
"examples": {
|
|
2121
|
+
"exampleResponse": {
|
|
2122
|
+
"value": {
|
|
2123
|
+
"name": "GeneralError",
|
|
2124
|
+
"message": "errorMessage",
|
|
2125
|
+
"properties": {
|
|
2126
|
+
"foo": "bar"
|
|
2127
|
+
}
|
|
2128
|
+
}
|
|
2129
|
+
}
|
|
2130
|
+
}
|
|
2131
|
+
}
|
|
2132
|
+
}
|
|
2133
|
+
},
|
|
2134
|
+
"401": {
|
|
2135
|
+
"description": "You are not authorized to use the API or no credentials were supplied, see the content for more details.",
|
|
2136
|
+
"content": {
|
|
2137
|
+
"application/json": {
|
|
2138
|
+
"schema": {
|
|
2139
|
+
"$ref": "#/components/schemas/Error"
|
|
2140
|
+
},
|
|
2141
|
+
"examples": {
|
|
2142
|
+
"exampleResponse": {
|
|
2143
|
+
"value": {
|
|
2144
|
+
"name": "UnauthorizedError",
|
|
2145
|
+
"message": "errorMessage"
|
|
2146
|
+
}
|
|
2147
|
+
}
|
|
2148
|
+
}
|
|
2149
|
+
}
|
|
2150
|
+
}
|
|
2151
|
+
},
|
|
2152
|
+
"500": {
|
|
2153
|
+
"description": "The server has encountered a situation it does not know how to handle, see the content for more details.",
|
|
2154
|
+
"content": {
|
|
2155
|
+
"application/json": {
|
|
2156
|
+
"schema": {
|
|
2157
|
+
"$ref": "#/components/schemas/Error"
|
|
2158
|
+
},
|
|
2159
|
+
"examples": {
|
|
2160
|
+
"exampleResponse": {
|
|
2161
|
+
"value": {
|
|
2162
|
+
"name": "InternalServerError",
|
|
2163
|
+
"message": "errorMessage"
|
|
2164
|
+
}
|
|
2165
|
+
}
|
|
2166
|
+
}
|
|
2167
|
+
}
|
|
2168
|
+
}
|
|
2169
|
+
}
|
|
2170
|
+
}
|
|
2171
|
+
},
|
|
2172
|
+
"delete": {
|
|
2173
|
+
"operationId": "authenticationAuditRemove",
|
|
2174
|
+
"summary": "Remove an authentication audit entry",
|
|
2175
|
+
"tags": [
|
|
2176
|
+
"Authentication Audit"
|
|
2177
|
+
],
|
|
2178
|
+
"parameters": [
|
|
2179
|
+
{
|
|
2180
|
+
"name": "id",
|
|
2181
|
+
"description": "The audit entry id.",
|
|
2182
|
+
"in": "path",
|
|
2183
|
+
"required": true,
|
|
2184
|
+
"schema": {
|
|
2185
|
+
"type": "string"
|
|
2186
|
+
},
|
|
2187
|
+
"style": "simple",
|
|
2188
|
+
"example": "018f0b53d5d5704fa3a06d6ed2478575"
|
|
2189
|
+
}
|
|
2190
|
+
],
|
|
2191
|
+
"security": [
|
|
2192
|
+
{
|
|
2193
|
+
"jwtBearerAuthScheme": []
|
|
2194
|
+
}
|
|
2195
|
+
],
|
|
2196
|
+
"responses": {
|
|
2197
|
+
"204": {
|
|
2198
|
+
"description": "The rest request ended in success with no data."
|
|
2199
|
+
},
|
|
2200
|
+
"400": {
|
|
2201
|
+
"description": "The server cannot process the request, see the content for more details.",
|
|
2202
|
+
"content": {
|
|
2203
|
+
"application/json": {
|
|
2204
|
+
"schema": {
|
|
2205
|
+
"$ref": "#/components/schemas/Error"
|
|
2206
|
+
},
|
|
2207
|
+
"examples": {
|
|
2208
|
+
"exampleResponse": {
|
|
2209
|
+
"value": {
|
|
2210
|
+
"name": "GeneralError",
|
|
2211
|
+
"message": "errorMessage",
|
|
2212
|
+
"properties": {
|
|
2213
|
+
"foo": "bar"
|
|
2214
|
+
}
|
|
2215
|
+
}
|
|
2216
|
+
}
|
|
2217
|
+
}
|
|
2218
|
+
}
|
|
2219
|
+
}
|
|
2220
|
+
},
|
|
2221
|
+
"401": {
|
|
2222
|
+
"description": "You are not authorized to use the API or no credentials were supplied, see the content for more details.",
|
|
2223
|
+
"content": {
|
|
2224
|
+
"application/json": {
|
|
2225
|
+
"schema": {
|
|
2226
|
+
"$ref": "#/components/schemas/Error"
|
|
2227
|
+
},
|
|
2228
|
+
"examples": {
|
|
2229
|
+
"exampleResponse": {
|
|
2230
|
+
"value": {
|
|
2231
|
+
"name": "UnauthorizedError",
|
|
2232
|
+
"message": "errorMessage"
|
|
2233
|
+
}
|
|
2234
|
+
}
|
|
2235
|
+
}
|
|
2236
|
+
}
|
|
2237
|
+
}
|
|
2238
|
+
},
|
|
2239
|
+
"500": {
|
|
2240
|
+
"description": "The server has encountered a situation it does not know how to handle, see the content for more details.",
|
|
2241
|
+
"content": {
|
|
2242
|
+
"application/json": {
|
|
2243
|
+
"schema": {
|
|
2244
|
+
"$ref": "#/components/schemas/Error"
|
|
2245
|
+
},
|
|
2246
|
+
"examples": {
|
|
2247
|
+
"exampleResponse": {
|
|
2248
|
+
"value": {
|
|
2249
|
+
"name": "InternalServerError",
|
|
2250
|
+
"message": "errorMessage"
|
|
2251
|
+
}
|
|
2252
|
+
}
|
|
2253
|
+
}
|
|
2254
|
+
}
|
|
2255
|
+
}
|
|
2256
|
+
}
|
|
2257
|
+
}
|
|
2258
|
+
}
|
|
2259
|
+
},
|
|
1955
2260
|
"/identity/{identity}": {
|
|
1956
2261
|
"get": {
|
|
1957
2262
|
"operationId": "identityResolve",
|
|
@@ -6833,6 +7138,122 @@
|
|
|
6833
7138
|
}
|
|
6834
7139
|
}
|
|
6835
7140
|
},
|
|
7141
|
+
"/telemetry/metric/{id}/value/{valueId}": {
|
|
7142
|
+
"get": {
|
|
7143
|
+
"operationId": "telemetryGetMetricValue",
|
|
7144
|
+
"summary": "Get a specific telemetry metric value",
|
|
7145
|
+
"tags": [
|
|
7146
|
+
"Telemetry"
|
|
7147
|
+
],
|
|
7148
|
+
"parameters": [
|
|
7149
|
+
{
|
|
7150
|
+
"name": "id",
|
|
7151
|
+
"description": "The id of the metric.",
|
|
7152
|
+
"in": "path",
|
|
7153
|
+
"required": true,
|
|
7154
|
+
"schema": {
|
|
7155
|
+
"type": "string"
|
|
7156
|
+
},
|
|
7157
|
+
"style": "simple",
|
|
7158
|
+
"example": "my-counter"
|
|
7159
|
+
},
|
|
7160
|
+
{
|
|
7161
|
+
"name": "valueId",
|
|
7162
|
+
"description": "The id of the metric value.",
|
|
7163
|
+
"in": "path",
|
|
7164
|
+
"required": true,
|
|
7165
|
+
"schema": {
|
|
7166
|
+
"type": "string"
|
|
7167
|
+
},
|
|
7168
|
+
"style": "simple",
|
|
7169
|
+
"example": "aabbccdd11223445566"
|
|
7170
|
+
}
|
|
7171
|
+
],
|
|
7172
|
+
"security": [
|
|
7173
|
+
{
|
|
7174
|
+
"jwtBearerAuthScheme": []
|
|
7175
|
+
}
|
|
7176
|
+
],
|
|
7177
|
+
"responses": {
|
|
7178
|
+
"200": {
|
|
7179
|
+
"description": "Get a telemetry metric value response.",
|
|
7180
|
+
"content": {
|
|
7181
|
+
"application/json": {
|
|
7182
|
+
"schema": {
|
|
7183
|
+
"$ref": "#/components/schemas/TelemetryMetricValue"
|
|
7184
|
+
},
|
|
7185
|
+
"examples": {
|
|
7186
|
+
"telemetryGetMetricValueResponseExample": {
|
|
7187
|
+
"value": {
|
|
7188
|
+
"id": "aabbccdd11223445566",
|
|
7189
|
+
"ts": 1715252922273,
|
|
7190
|
+
"value": 10
|
|
7191
|
+
}
|
|
7192
|
+
}
|
|
7193
|
+
}
|
|
7194
|
+
}
|
|
7195
|
+
}
|
|
7196
|
+
},
|
|
7197
|
+
"400": {
|
|
7198
|
+
"description": "The server cannot process the request, see the content for more details.",
|
|
7199
|
+
"content": {
|
|
7200
|
+
"application/json": {
|
|
7201
|
+
"schema": {
|
|
7202
|
+
"$ref": "#/components/schemas/Error"
|
|
7203
|
+
},
|
|
7204
|
+
"examples": {
|
|
7205
|
+
"exampleResponse": {
|
|
7206
|
+
"value": {
|
|
7207
|
+
"name": "GeneralError",
|
|
7208
|
+
"message": "errorMessage",
|
|
7209
|
+
"properties": {
|
|
7210
|
+
"foo": "bar"
|
|
7211
|
+
}
|
|
7212
|
+
}
|
|
7213
|
+
}
|
|
7214
|
+
}
|
|
7215
|
+
}
|
|
7216
|
+
}
|
|
7217
|
+
},
|
|
7218
|
+
"401": {
|
|
7219
|
+
"description": "You are not authorized to use the API or no credentials were supplied, see the content for more details.",
|
|
7220
|
+
"content": {
|
|
7221
|
+
"application/json": {
|
|
7222
|
+
"schema": {
|
|
7223
|
+
"$ref": "#/components/schemas/Error"
|
|
7224
|
+
},
|
|
7225
|
+
"examples": {
|
|
7226
|
+
"exampleResponse": {
|
|
7227
|
+
"value": {
|
|
7228
|
+
"name": "UnauthorizedError",
|
|
7229
|
+
"message": "errorMessage"
|
|
7230
|
+
}
|
|
7231
|
+
}
|
|
7232
|
+
}
|
|
7233
|
+
}
|
|
7234
|
+
}
|
|
7235
|
+
},
|
|
7236
|
+
"500": {
|
|
7237
|
+
"description": "The server has encountered a situation it does not know how to handle, see the content for more details.",
|
|
7238
|
+
"content": {
|
|
7239
|
+
"application/json": {
|
|
7240
|
+
"schema": {
|
|
7241
|
+
"$ref": "#/components/schemas/Error"
|
|
7242
|
+
},
|
|
7243
|
+
"examples": {
|
|
7244
|
+
"exampleResponse": {
|
|
7245
|
+
"value": {
|
|
7246
|
+
"name": "InternalServerError",
|
|
7247
|
+
"message": "errorMessage"
|
|
7248
|
+
}
|
|
7249
|
+
}
|
|
7250
|
+
}
|
|
7251
|
+
}
|
|
7252
|
+
}
|
|
7253
|
+
}
|
|
7254
|
+
}
|
|
7255
|
+
}
|
|
7256
|
+
},
|
|
6836
7257
|
"/automation/trigger/{trigger}": {
|
|
6837
7258
|
"post": {
|
|
6838
7259
|
"operationId": "AutomationTrigger",
|
|
@@ -20998,6 +21419,57 @@
|
|
|
20998
21419
|
],
|
|
20999
21420
|
"description": "The response body."
|
|
21000
21421
|
},
|
|
21422
|
+
"AuditUpdateRequest": {
|
|
21423
|
+
"description": "The body of the request.",
|
|
21424
|
+
"type": "object",
|
|
21425
|
+
"properties": {
|
|
21426
|
+
"event": {
|
|
21427
|
+
"anyOf": [
|
|
21428
|
+
{
|
|
21429
|
+
"$ref": "#/components/schemas/AuthAuditEvent"
|
|
21430
|
+
},
|
|
21431
|
+
{
|
|
21432
|
+
"type": "string"
|
|
21433
|
+
}
|
|
21434
|
+
],
|
|
21435
|
+
"description": "The audit event that occurred."
|
|
21436
|
+
},
|
|
21437
|
+
"actorId": {
|
|
21438
|
+
"type": "string",
|
|
21439
|
+
"description": "The actor identifier, could be e-mail, username, or other unique identifier."
|
|
21440
|
+
},
|
|
21441
|
+
"nodeId": {
|
|
21442
|
+
"type": "string",
|
|
21443
|
+
"description": "The node identifier associated with the audit entry, if applicable."
|
|
21444
|
+
},
|
|
21445
|
+
"organizationId": {
|
|
21446
|
+
"type": "string",
|
|
21447
|
+
"description": "The organization identifier associated with the audit entry, if applicable."
|
|
21448
|
+
},
|
|
21449
|
+
"tenantId": {
|
|
21450
|
+
"type": "string",
|
|
21451
|
+
"description": "The tenant identifier associated with the audit entry, if applicable."
|
|
21452
|
+
},
|
|
21453
|
+
"ipAddressHashes": {
|
|
21454
|
+
"type": "array",
|
|
21455
|
+
"items": {
|
|
21456
|
+
"type": "string"
|
|
21457
|
+
},
|
|
21458
|
+
"description": "The hashed IP addresses of the client."
|
|
21459
|
+
},
|
|
21460
|
+
"userAgent": {
|
|
21461
|
+
"type": "string",
|
|
21462
|
+
"description": "The user agent string of the client."
|
|
21463
|
+
},
|
|
21464
|
+
"correlationId": {
|
|
21465
|
+
"type": "string",
|
|
21466
|
+
"description": "The correlation ID for request tracing."
|
|
21467
|
+
},
|
|
21468
|
+
"data": {
|
|
21469
|
+
"description": "Additional data related to the audit entry, such as IP address, user agent, etc."
|
|
21470
|
+
}
|
|
21471
|
+
}
|
|
21472
|
+
},
|
|
21001
21473
|
"AuditableItemGraphCreateRequest": {
|
|
21002
21474
|
"description": "The data to be used in the vertex.",
|
|
21003
21475
|
"type": "object",
|
package/docs/usage.md
CHANGED
|
@@ -28,17 +28,26 @@ All the commands available are listed below, for more information use the --help
|
|
|
28
28
|
bootstrap-legacy: Bootstrap in legacy mode for backwards compatibility, **will be deprecated in future versions**
|
|
29
29
|
identity-create: Create an identity
|
|
30
30
|
identity-import: Import an identity
|
|
31
|
+
identity-list: List all identities held in custody by the node
|
|
32
|
+
identity-resolve: Resolve an identity DID to its full document
|
|
31
33
|
identity-verification-method-create: Create an identity verification method
|
|
32
34
|
identity-verification-method-import: Import an identity verification method
|
|
33
35
|
identity-verifiable-credential-create: Create a verifiable credential
|
|
34
|
-
node-
|
|
36
|
+
node-identity-get: Get the identity currently assigned to the node
|
|
37
|
+
node-identity-set: Set the node identity
|
|
38
|
+
org-users-list: List all users belonging to an organization DID
|
|
35
39
|
remove-tenant-org-alias: Remove an alias from the tenant organization ID legacy list
|
|
36
|
-
|
|
37
|
-
|
|
40
|
+
node-org-id-get: Get the organization ID currently assigned to the node
|
|
41
|
+
node-org-id-set: Set the node organization ID
|
|
42
|
+
tenant-org-id-set: Set the organization ID for a tenant
|
|
38
43
|
tenant-create: Create a tenant with associated api key
|
|
44
|
+
tenant-get: Get the full configuration record for a single tenant
|
|
39
45
|
tenant-import: Import a tenant with associated api key
|
|
46
|
+
tenant-list: List all tenants
|
|
47
|
+
tenant-list-by-org: List all tenants associated with a given organization DID
|
|
40
48
|
tenant-update: Update a tenant with associated api key
|
|
41
49
|
user-create: Create a user
|
|
50
|
+
user-get: Get a user by email address
|
|
42
51
|
user-update: Update a user
|
|
43
52
|
vault-key-create: Create a vault key for an identity
|
|
44
53
|
vault-key-import: Import a vault key for an identity
|
|
@@ -127,6 +136,150 @@ The tenant ID to set the created identity DID as the organization ID for (requir
|
|
|
127
136
|
Example: identity-create --mnemonic="..." --fund-wallet=true
|
|
128
137
|
```
|
|
129
138
|
|
|
139
|
+
## identity-list --help
|
|
140
|
+
|
|
141
|
+
```text
|
|
142
|
+
identity-list: List all identities held in custody by the node
|
|
143
|
+
|
|
144
|
+
env-prefix: (string, optional)
|
|
145
|
+
Prefix to use for standard .env files e.g. TWIN_.
|
|
146
|
+
|
|
147
|
+
load-env: (string, optional)
|
|
148
|
+
Comma separated list of paths to .env files to read input parameters from.
|
|
149
|
+
|
|
150
|
+
Example: identity-list
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## identity-resolve --help
|
|
154
|
+
|
|
155
|
+
```text
|
|
156
|
+
identity-resolve: Resolve an identity DID to its full document
|
|
157
|
+
|
|
158
|
+
env-prefix: (string, optional)
|
|
159
|
+
Prefix to use for standard .env files e.g. TWIN_.
|
|
160
|
+
|
|
161
|
+
identity: (string, did, required)
|
|
162
|
+
The DID to resolve.
|
|
163
|
+
|
|
164
|
+
load-env: (string, optional)
|
|
165
|
+
Comma separated list of paths to .env files to read input parameters from.
|
|
166
|
+
|
|
167
|
+
Example: identity-resolve --identity="did:iota:..."
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## node-identity-get --help
|
|
171
|
+
|
|
172
|
+
```text
|
|
173
|
+
node-identity-get: Get the identity currently assigned to the node
|
|
174
|
+
|
|
175
|
+
env-prefix: (string, optional)
|
|
176
|
+
Prefix to use for standard .env files e.g. TWIN_.
|
|
177
|
+
|
|
178
|
+
load-env: (string, optional)
|
|
179
|
+
Comma separated list of paths to .env files to read input parameters from.
|
|
180
|
+
|
|
181
|
+
Example: node-identity-get
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
## node-org-id-get --help
|
|
185
|
+
|
|
186
|
+
```text
|
|
187
|
+
node-org-id-get: Get the organization ID currently assigned to the node
|
|
188
|
+
|
|
189
|
+
env-prefix: (string, optional)
|
|
190
|
+
Prefix to use for standard .env files e.g. TWIN_.
|
|
191
|
+
|
|
192
|
+
load-env: (string, optional)
|
|
193
|
+
Comma separated list of paths to .env files to read input parameters from.
|
|
194
|
+
|
|
195
|
+
Example: node-org-id-get
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
## org-users-list --help
|
|
199
|
+
|
|
200
|
+
```text
|
|
201
|
+
org-users-list: List all users belonging to an organization DID
|
|
202
|
+
|
|
203
|
+
env-prefix: (string, optional)
|
|
204
|
+
Prefix to use for standard .env files e.g. TWIN_.
|
|
205
|
+
|
|
206
|
+
org-did: (string, did, optional)
|
|
207
|
+
The organization DID to list users for. Defaults to the node organization ID in single-tenant mode.
|
|
208
|
+
|
|
209
|
+
load-env: (string, optional)
|
|
210
|
+
Comma separated list of paths to .env files to read input parameters from.
|
|
211
|
+
|
|
212
|
+
Example: org-users-list --org-did="did:iota:..."
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
## user-get --help
|
|
216
|
+
|
|
217
|
+
```text
|
|
218
|
+
user-get: Get a user by email address
|
|
219
|
+
|
|
220
|
+
env-prefix: (string, optional)
|
|
221
|
+
Prefix to use for standard .env files e.g. TWIN_.
|
|
222
|
+
|
|
223
|
+
email: (string, email, required)
|
|
224
|
+
The email address of the user to retrieve.
|
|
225
|
+
|
|
226
|
+
tenant-id: (string, hex(32), optional)
|
|
227
|
+
The tenant ID to retrieve the user from (multi-tenant mode only).
|
|
228
|
+
|
|
229
|
+
load-env: (string, optional)
|
|
230
|
+
Comma separated list of paths to .env files to read input parameters from.
|
|
231
|
+
|
|
232
|
+
Example: user-get --email="bob@example.com"
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
## tenant-get --help
|
|
236
|
+
|
|
237
|
+
```text
|
|
238
|
+
tenant-get: Get the full configuration record for a single tenant
|
|
239
|
+
|
|
240
|
+
env-prefix: (string, optional)
|
|
241
|
+
Prefix to use for standard .env files e.g. TWIN_.
|
|
242
|
+
|
|
243
|
+
tenant-id: (string, hex(32), required)
|
|
244
|
+
The tenant ID to retrieve.
|
|
245
|
+
|
|
246
|
+
load-env: (string, optional)
|
|
247
|
+
Comma separated list of paths to .env files to read input parameters from.
|
|
248
|
+
|
|
249
|
+
Example: tenant-get --tenant-id="0011..aabb"
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
## tenant-list --help
|
|
253
|
+
|
|
254
|
+
```text
|
|
255
|
+
tenant-list: List all tenants
|
|
256
|
+
|
|
257
|
+
env-prefix: (string, optional)
|
|
258
|
+
Prefix to use for standard .env files e.g. TWIN_.
|
|
259
|
+
|
|
260
|
+
load-env: (string, optional)
|
|
261
|
+
Comma separated list of paths to .env files to read input parameters from.
|
|
262
|
+
|
|
263
|
+
Example: tenant-list
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
## tenant-list-by-org --help
|
|
267
|
+
|
|
268
|
+
```text
|
|
269
|
+
tenant-list-by-org: List all tenants associated with a given organization DID
|
|
270
|
+
|
|
271
|
+
env-prefix: (string, optional)
|
|
272
|
+
Prefix to use for standard .env files e.g. TWIN_.
|
|
273
|
+
|
|
274
|
+
org-id: (string, did, required)
|
|
275
|
+
The organization DID to filter tenants by.
|
|
276
|
+
|
|
277
|
+
load-env: (string, optional)
|
|
278
|
+
Comma separated list of paths to .env files to read input parameters from.
|
|
279
|
+
|
|
280
|
+
Example: tenant-list-by-org --org-id="did:iota:..."
|
|
281
|
+
```
|
|
282
|
+
|
|
130
283
|
## Example
|
|
131
284
|
|
|
132
285
|
### Bootstrap legacy (single command)
|
|
@@ -176,7 +329,7 @@ twin-node identity-verification-method-create --load-env="node-identity.env,orga
|
|
|
176
329
|
### Step 5 - Set the organisation identity on the node (single-tenant)
|
|
177
330
|
|
|
178
331
|
```shell
|
|
179
|
-
twin-node
|
|
332
|
+
twin-node node-org-id-set --load-env="organization-identity.env" --organization-id=!ORGANIZATION_DID
|
|
180
333
|
```
|
|
181
334
|
|
|
182
335
|
### Step 6 - Create the node tenant and associate the organisation (multi-tenant only)
|
|
@@ -186,7 +339,7 @@ twin-node tenant-create --load-env="node-identity.env" --label="Node" --output-j
|
|
|
186
339
|
```
|
|
187
340
|
|
|
188
341
|
```shell
|
|
189
|
-
twin-node
|
|
342
|
+
twin-node tenant-org-id-set --load-env="node-tenant.env,organization-identity.env" --tenant-id=!NODE_TENANT_ID --organization-id=!ORGANIZATION_DID
|
|
190
343
|
```
|
|
191
344
|
|
|
192
345
|
To import an existing tenant instead:
|
|
@@ -258,3 +411,85 @@ To update an existing user:
|
|
|
258
411
|
```shell
|
|
259
412
|
twin-node user-update --load-env="organization-identity.env,admin-user-identity.env,node-tenant.env" --email="admin@node" --scope="tenant-admin,user-admin,foo"
|
|
260
413
|
```
|
|
414
|
+
|
|
415
|
+
---
|
|
416
|
+
|
|
417
|
+
## Inspection commands
|
|
418
|
+
|
|
419
|
+
The following commands are read-only and can be run at any time to inspect the state of the node.
|
|
420
|
+
|
|
421
|
+
### Get the node identity
|
|
422
|
+
|
|
423
|
+
Resolves and displays the DID document currently assigned as the node identity:
|
|
424
|
+
|
|
425
|
+
```shell
|
|
426
|
+
twin-node node-identity-get
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
### Get the node organization ID
|
|
430
|
+
|
|
431
|
+
Displays the organization DID currently assigned to the node (single-tenant only):
|
|
432
|
+
|
|
433
|
+
```shell
|
|
434
|
+
twin-node node-org-id-get
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
### Resolve an identity
|
|
438
|
+
|
|
439
|
+
Resolve any DID to its full document, including its verification methods:
|
|
440
|
+
|
|
441
|
+
```shell
|
|
442
|
+
twin-node identity-resolve --identity="did:iota:..."
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
### List all identities
|
|
446
|
+
|
|
447
|
+
List every identity held in custody by the node, showing each DID and its controller:
|
|
448
|
+
|
|
449
|
+
```shell
|
|
450
|
+
twin-node identity-list
|
|
451
|
+
```
|
|
452
|
+
|
|
453
|
+
### List all tenants (multi-tenant only)
|
|
454
|
+
|
|
455
|
+
```shell
|
|
456
|
+
twin-node tenant-list
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
### Get a single tenant (multi-tenant only)
|
|
460
|
+
|
|
461
|
+
```shell
|
|
462
|
+
twin-node tenant-get --load-env="node-tenant.env" --tenant-id=!NODE_TENANT_ID
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
### List tenants for an organization (multi-tenant only)
|
|
466
|
+
|
|
467
|
+
```shell
|
|
468
|
+
twin-node tenant-list-by-org --load-env="organization-identity.env" --org-id=!ORGANIZATION_DID
|
|
469
|
+
```
|
|
470
|
+
|
|
471
|
+
### List users for an organization
|
|
472
|
+
|
|
473
|
+
In single-tenant mode, `--org-did` can be omitted and the node organization ID is used automatically:
|
|
474
|
+
|
|
475
|
+
```shell
|
|
476
|
+
twin-node org-users-list
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
To list users for a specific organization:
|
|
480
|
+
|
|
481
|
+
```shell
|
|
482
|
+
twin-node org-users-list --load-env="organization-identity.env" --org-did=!ORGANIZATION_DID
|
|
483
|
+
```
|
|
484
|
+
|
|
485
|
+
### Get a single user
|
|
486
|
+
|
|
487
|
+
```shell
|
|
488
|
+
twin-node user-get --email="admin@node"
|
|
489
|
+
```
|
|
490
|
+
|
|
491
|
+
In multi-tenant mode supply the tenant ID:
|
|
492
|
+
|
|
493
|
+
```shell
|
|
494
|
+
twin-node user-get --load-env="node-tenant.env" --tenant-id=!NODE_TENANT_ID --email="admin@node"
|
|
495
|
+
```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@twin.org/node",
|
|
3
|
-
"version": "0.9.1-next.
|
|
3
|
+
"version": "0.9.1-next.4",
|
|
4
4
|
"description": "TWIN Node serving APIs using the specified configuration",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"node": ">=20.0.0"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@twin.org/node-core": "0.9.1-next.
|
|
17
|
+
"@twin.org/node-core": "0.9.1-next.4"
|
|
18
18
|
},
|
|
19
19
|
"bugs": {
|
|
20
20
|
"url": "git+https://github.com/iotaledger/twin-node/issues"
|