@twin.org/node 0.9.1-next.1 → 0.9.1-next.3

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.
@@ -89,6 +89,12 @@
89
89
  "passwordHelper": {
90
90
  "currentPasswordMismatch": "The current password is incorrect"
91
91
  },
92
+ "entityStorageAuthenticationAuditService": {
93
+ "auditEntryNotFound": "The audit entry with the specified identifier could not be found \"{notFoundId}\"",
94
+ "getAuditEntryFailed": "Getting the audit entry failed",
95
+ "updateAuditEntryFailed": "Updating the audit entry failed",
96
+ "removeAuditEntryFailed": "Removing the audit entry failed"
97
+ },
92
98
  "entityStorageAuthenticationRateService": {
93
99
  "actionConfigMissing": "No rate-limit configuration exists for action \"{action}\".",
94
100
  "rateLimitExceeded": "The rate limit for action \"{action}\" has been exceeded. Retry after {retryAfterSeconds} seconds."
@@ -198,6 +204,8 @@
198
204
  "uint8Array": "Property \"{property}\" must be a Uint8Array, it is \"{value}\"",
199
205
  "function": "Property \"{property}\" must be a function, it is \"{value}\"",
200
206
  "urn": "Property \"{property}\" must be a URN formatted string, it is \"{value}\"",
207
+ "urnNamespaceIdentifier": "Property \"{property}\" must be a URN with namespace identifier \"{options}\", it is \"{value}\"",
208
+ "urnNamespaceSpecific": "Property \"{property}\" must be a URN with namespace specific \"{options}\", it is \"{value}\"",
201
209
  "url": "Property \"{property}\" must be a URL formatted string, it is \"{value}\"",
202
210
  "email": "Property \"{property}\" must be string in e-mail format, it is \"{value}\"",
203
211
  "uuidV7": "Property \"{property}\" must be a UUIDv7 formatted string, it is \"{value}\"",
@@ -319,6 +327,10 @@
319
327
  "decodingFailed": "Decoding JSON failed for route \"{route}\"",
320
328
  "failureStatusText": "The request to the API failed: \"{statusText}\""
321
329
  },
330
+ "httpHeaderHelper": {
331
+ "locationMissing": "The Location response header is missing or empty",
332
+ "idNotFound": "The resource ID could not be extracted from the Location header"
333
+ },
322
334
  "contextIdHelper": {
323
335
  "contextIdMissing": "The context ID \"{key}\" is missing from the provided context IDs",
324
336
  "contextIdSplitMismatch": "The context ID split parts length \"{actual}\" does not match the provided keys length \"{expected}\""
@@ -1272,6 +1284,7 @@
1272
1284
  },
1273
1285
  "entityStorageTelemetryConnector": {
1274
1286
  "metricNotFound": "The metric could not be found \"{notFoundId}\"",
1287
+ "metricValueNotFound": "The metric value could not be found \"{notFoundId}\"",
1275
1288
  "metricAlreadyExists": "The metric already exists \"{existingId}\"",
1276
1289
  "counterIncOnly": "A counter metric can only be incremented, or added to with an integer",
1277
1290
  "upDownCounterIncOrDecOnly": "An up/down counter metric can only be incremented, decremented or adjusted with an integer",
package/docs/changelog.md CHANGED
@@ -1,5 +1,33 @@
1
1
  # Changelog
2
2
 
3
+ ## [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)
4
+
5
+
6
+ ### Miscellaneous Chores
7
+
8
+ * **node:** Synchronize repo versions
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.2 to 0.9.1-next.3
16
+
17
+ ## [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)
18
+
19
+
20
+ ### Features
21
+
22
+ * extend to 7-group weighted mix, fix REST paths + JSON-LD contexts ([#257](https://github.com/iotaledger/twin-node/issues/257)) ([d9f8d55](https://github.com/iotaledger/twin-node/commit/d9f8d55d389a82947b7a0297f44f76f7f6b3ba21))
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.1 to 0.9.1-next.2
30
+
3
31
  ## [0.9.1-next.1](https://github.com/iotaledger/twin-node/compare/node-v0.9.1-next.0...node-v0.9.1-next.1) (2026-06-26)
4
32
 
5
33
 
@@ -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",
@@ -13391,7 +13812,7 @@
13391
13812
  "parameters": [
13392
13813
  {
13393
13814
  "name": "conditions",
13394
- "description": "The conditions to filter the streams, JSON stringified IComparator[].",
13815
+ "description": "The conditions to filter the streams, JSON stringified `EntityCondition<IAuditableItemStream>`.",
13395
13816
  "in": "query",
13396
13817
  "required": false,
13397
13818
  "schema": {
@@ -14419,7 +14840,7 @@
14419
14840
  },
14420
14841
  {
14421
14842
  "name": "conditions",
14422
- "description": "The conditions to filter the stream, JSON stringified IComparator[].",
14843
+ "description": "The conditions to filter the stream, JSON stringified `EntityCondition<IAuditableItemStreamEntry>`.",
14423
14844
  "in": "query",
14424
14845
  "required": false,
14425
14846
  "schema": {
@@ -15268,7 +15689,7 @@
15268
15689
  "parameters": [
15269
15690
  {
15270
15691
  "name": "conditions",
15271
- "description": "The conditions to filter the stream, JSON stringified IComparator[].",
15692
+ "description": "The conditions to filter the stream, JSON stringified `EntityCondition<IAuditableItemStream>.",
15272
15693
  "in": "query",
15273
15694
  "required": false,
15274
15695
  "schema": {
@@ -15529,7 +15950,7 @@
15529
15950
  },
15530
15951
  {
15531
15952
  "name": "conditions",
15532
- "description": "The conditions to filter the stream, JSON stringified IComparator[].",
15953
+ "description": "The conditions to filter the stream, JSON stringified `EntityCondition<IAuditableItemStreamEntry>`.",
15533
15954
  "in": "query",
15534
15955
  "required": false,
15535
15956
  "schema": {
@@ -15712,7 +16133,7 @@
15712
16133
  "parameters": [
15713
16134
  {
15714
16135
  "name": "conditions",
15715
- "description": "The conditions to filter the stream, JSON stringified IComparator[].",
16136
+ "description": "The conditions to filter the stream, JSON stringified `EntityCondition<IAuditableItemStreamEntry>`.",
15716
16137
  "in": "query",
15717
16138
  "required": false,
15718
16139
  "schema": {
@@ -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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@twin.org/node",
3
- "version": "0.9.1-next.1",
3
+ "version": "0.9.1-next.3",
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.1"
17
+ "@twin.org/node-core": "0.9.1-next.3"
18
18
  },
19
19
  "bugs": {
20
20
  "url": "git+https://github.com/iotaledger/twin-node/issues"