@twin.org/node 0.0.3-next.30 → 0.0.3-next.31

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.
@@ -27,6 +27,10 @@
27
27
  "name": "Authentication Admin",
28
28
  "description": "Authentication Admin endpoints for the REST server."
29
29
  },
30
+ {
31
+ "name": "Authentication Audit",
32
+ "description": "Authentication audit endpoints for the REST server."
33
+ },
30
34
  {
31
35
  "name": "Identity",
32
36
  "description": "Service to provide all features related to digital identity."
@@ -1570,6 +1574,308 @@
1570
1574
  }
1571
1575
  }
1572
1576
  },
1577
+ "/authentication/audit": {
1578
+ "post": {
1579
+ "operationId": "authenticationAuditCreate",
1580
+ "summary": "Create an authentication audit entry",
1581
+ "tags": [
1582
+ "Authentication Audit"
1583
+ ],
1584
+ "security": [
1585
+ {
1586
+ "jwtBearerAuthScheme": []
1587
+ }
1588
+ ],
1589
+ "requestBody": {
1590
+ "description": "Create an authentication audit entry.",
1591
+ "required": true,
1592
+ "content": {
1593
+ "application/json": {
1594
+ "schema": {
1595
+ "$ref": "#/components/schemas/AuditCreateRequest"
1596
+ },
1597
+ "examples": {
1598
+ "authenticationAuditCreateRequestExample": {
1599
+ "summary": "The request to create an authentication audit entry.",
1600
+ "value": {
1601
+ "actorId": "user@example.com",
1602
+ "event": "login-success",
1603
+ "data": {
1604
+ "organizationIdentity": "did:example:org1"
1605
+ }
1606
+ }
1607
+ }
1608
+ }
1609
+ }
1610
+ }
1611
+ },
1612
+ "responses": {
1613
+ "201": {
1614
+ "description": "The rest request ended in created response.",
1615
+ "headers": {
1616
+ "location": {
1617
+ "schema": {
1618
+ "type": "string"
1619
+ },
1620
+ "description": "e.g. 018f0b53d5d5704fa3a06d6ed2478575"
1621
+ }
1622
+ }
1623
+ },
1624
+ "400": {
1625
+ "description": "The server cannot process the request, see the content for more details.",
1626
+ "content": {
1627
+ "application/json": {
1628
+ "schema": {
1629
+ "$ref": "#/components/schemas/Error"
1630
+ },
1631
+ "examples": {
1632
+ "exampleResponse": {
1633
+ "value": {
1634
+ "name": "GeneralError",
1635
+ "message": "errorMessage",
1636
+ "properties": {
1637
+ "foo": "bar"
1638
+ }
1639
+ }
1640
+ }
1641
+ }
1642
+ }
1643
+ }
1644
+ },
1645
+ "401": {
1646
+ "description": "You are not authorized to use the API or no credentials were supplied, see the content for more details.",
1647
+ "content": {
1648
+ "application/json": {
1649
+ "schema": {
1650
+ "$ref": "#/components/schemas/Error"
1651
+ },
1652
+ "examples": {
1653
+ "exampleResponse": {
1654
+ "value": {
1655
+ "name": "UnauthorizedError",
1656
+ "message": "errorMessage"
1657
+ }
1658
+ }
1659
+ }
1660
+ }
1661
+ }
1662
+ },
1663
+ "500": {
1664
+ "description": "The server has encountered a situation it does not know how to handle, see the content for more details.",
1665
+ "content": {
1666
+ "application/json": {
1667
+ "schema": {
1668
+ "$ref": "#/components/schemas/Error"
1669
+ },
1670
+ "examples": {
1671
+ "exampleResponse": {
1672
+ "value": {
1673
+ "name": "InternalServerError",
1674
+ "message": "errorMessage"
1675
+ }
1676
+ }
1677
+ }
1678
+ }
1679
+ }
1680
+ }
1681
+ }
1682
+ },
1683
+ "get": {
1684
+ "operationId": "authenticationAuditQuery",
1685
+ "summary": "Query authentication audit entries",
1686
+ "tags": [
1687
+ "Authentication Audit"
1688
+ ],
1689
+ "parameters": [
1690
+ {
1691
+ "name": "actorId",
1692
+ "description": "The actor identifier to filter by.",
1693
+ "in": "query",
1694
+ "required": false,
1695
+ "schema": {
1696
+ "type": "string"
1697
+ },
1698
+ "example": "user@example.com"
1699
+ },
1700
+ {
1701
+ "name": "organizationId",
1702
+ "description": "The organization identifier to filter by.",
1703
+ "in": "query",
1704
+ "required": false,
1705
+ "schema": {
1706
+ "type": "string"
1707
+ }
1708
+ },
1709
+ {
1710
+ "name": "tenantId",
1711
+ "description": "The tenant identifier to filter by.",
1712
+ "in": "query",
1713
+ "required": false,
1714
+ "schema": {
1715
+ "type": "string"
1716
+ }
1717
+ },
1718
+ {
1719
+ "name": "nodeId",
1720
+ "description": "The node identifier to filter by.",
1721
+ "in": "query",
1722
+ "required": false,
1723
+ "schema": {
1724
+ "type": "string"
1725
+ }
1726
+ },
1727
+ {
1728
+ "name": "event",
1729
+ "description": "The event to filter by.",
1730
+ "in": "query",
1731
+ "required": false,
1732
+ "schema": {
1733
+ "anyOf": [
1734
+ {
1735
+ "$ref": "#/components/schemas/AuthAuditEvent"
1736
+ },
1737
+ {
1738
+ "type": "string"
1739
+ }
1740
+ ]
1741
+ },
1742
+ "example": "login-success"
1743
+ },
1744
+ {
1745
+ "name": "startDate",
1746
+ "description": "The inclusive start date for filtering, in ISO 8601 format.",
1747
+ "in": "query",
1748
+ "required": false,
1749
+ "schema": {
1750
+ "type": "string"
1751
+ },
1752
+ "example": "2026-01-01T00:00:00.000Z"
1753
+ },
1754
+ {
1755
+ "name": "endDate",
1756
+ "description": "The inclusive end date for filtering, in ISO 8601 format.",
1757
+ "in": "query",
1758
+ "required": false,
1759
+ "schema": {
1760
+ "type": "string"
1761
+ },
1762
+ "example": "2026-01-31T23:59:59.999Z"
1763
+ },
1764
+ {
1765
+ "name": "cursor",
1766
+ "description": "The pagination cursor.",
1767
+ "in": "query",
1768
+ "required": false,
1769
+ "schema": {
1770
+ "type": "string"
1771
+ }
1772
+ },
1773
+ {
1774
+ "name": "limit",
1775
+ "description": "The maximum number of results to return.",
1776
+ "in": "query",
1777
+ "required": false,
1778
+ "schema": {
1779
+ "type": "string"
1780
+ },
1781
+ "example": "50"
1782
+ }
1783
+ ],
1784
+ "security": [
1785
+ {
1786
+ "jwtBearerAuthScheme": []
1787
+ }
1788
+ ],
1789
+ "responses": {
1790
+ "200": {
1791
+ "description": "Response from querying authentication audit entries.",
1792
+ "content": {
1793
+ "application/json": {
1794
+ "schema": {
1795
+ "$ref": "#/components/schemas/AuditQueryResponse"
1796
+ },
1797
+ "examples": {
1798
+ "authenticationAuditQueryResponseExample": {
1799
+ "summary": "The response for querying authentication audit entries.",
1800
+ "value": {
1801
+ "entries": [
1802
+ {
1803
+ "id": "018f0b53d5d5704fa3a06d6ed2478575",
1804
+ "actorId": "user@example.com",
1805
+ "dateCreated": "2026-01-12T09:05:23.123Z",
1806
+ "event": "login-success",
1807
+ "data": {
1808
+ "organizationIdentity": "did:example:org1"
1809
+ }
1810
+ }
1811
+ ],
1812
+ "cursor": "next-cursor"
1813
+ }
1814
+ }
1815
+ }
1816
+ }
1817
+ }
1818
+ },
1819
+ "400": {
1820
+ "description": "The server cannot process the request, see the content for more details.",
1821
+ "content": {
1822
+ "application/json": {
1823
+ "schema": {
1824
+ "$ref": "#/components/schemas/Error"
1825
+ },
1826
+ "examples": {
1827
+ "exampleResponse": {
1828
+ "value": {
1829
+ "name": "GeneralError",
1830
+ "message": "errorMessage",
1831
+ "properties": {
1832
+ "foo": "bar"
1833
+ }
1834
+ }
1835
+ }
1836
+ }
1837
+ }
1838
+ }
1839
+ },
1840
+ "401": {
1841
+ "description": "You are not authorized to use the API or no credentials were supplied, see the content for more details.",
1842
+ "content": {
1843
+ "application/json": {
1844
+ "schema": {
1845
+ "$ref": "#/components/schemas/Error"
1846
+ },
1847
+ "examples": {
1848
+ "exampleResponse": {
1849
+ "value": {
1850
+ "name": "UnauthorizedError",
1851
+ "message": "errorMessage"
1852
+ }
1853
+ }
1854
+ }
1855
+ }
1856
+ }
1857
+ },
1858
+ "500": {
1859
+ "description": "The server has encountered a situation it does not know how to handle, see the content for more details.",
1860
+ "content": {
1861
+ "application/json": {
1862
+ "schema": {
1863
+ "$ref": "#/components/schemas/Error"
1864
+ },
1865
+ "examples": {
1866
+ "exampleResponse": {
1867
+ "value": {
1868
+ "name": "InternalServerError",
1869
+ "message": "errorMessage"
1870
+ }
1871
+ }
1872
+ }
1873
+ }
1874
+ }
1875
+ }
1876
+ }
1877
+ }
1878
+ },
1573
1879
  "/identity/{identity}": {
1574
1880
  "get": {
1575
1881
  "operationId": "identityResolve",
@@ -13992,8 +14298,15 @@
13992
14298
  }
13993
14299
  },
13994
14300
  "responses": {
13995
- "201": {
13996
- "description": "The rest request ended in created response."
14301
+ "200": {
14302
+ "description": "Activity Stream Notify Response.",
14303
+ "content": {
14304
+ "application/json": {
14305
+ "schema": {
14306
+ "$ref": "#/components/schemas/ActivityLogEntry"
14307
+ }
14308
+ }
14309
+ }
13997
14310
  },
13998
14311
  "400": {
13999
14312
  "description": "The server cannot process the request, see the content for more details.",
@@ -14114,15 +14427,13 @@
14114
14427
  "dateModified": "2025-08-12T12:00:00Z",
14115
14428
  "generator": "did:iota:testnet:123456",
14116
14429
  "status": "pending",
14117
- "pendingTasks": [
14430
+ "tasks": [
14118
14431
  {
14119
14432
  "taskId": "urn:x-task-id:45678",
14120
- "dataspaceAppId": "https://my-app.example.org/app1"
14433
+ "dataspaceAppId": "https://my-app.example.org/app1",
14434
+ "status": "pending"
14121
14435
  }
14122
- ],
14123
- "runningTasks": [],
14124
- "finalizedTasks": [],
14125
- "inErrorTasks": []
14436
+ ]
14126
14437
  }
14127
14438
  }
14128
14439
  }
@@ -15095,6 +15406,24 @@
15095
15406
  }
15096
15407
  ]
15097
15408
  }
15409
+ },
15410
+ "papCreateEcosystemPolicyRequestExample": {
15411
+ "value": {
15412
+ "@context": [
15413
+ "http://www.w3.org/ns/odrl.jsonld",
15414
+ "https://schema.twindev.org/odrl/v1/"
15415
+ ],
15416
+ "@type": "EcosystemPolicy",
15417
+ "profile": "https://schema.twindev.org/odrl/v1/profile",
15418
+ "assigner": "did:example:publisher",
15419
+ "obligation": [
15420
+ {
15421
+ "action": "inform",
15422
+ "assignee": "did:example:border-agency",
15423
+ "target": "urn:twin:asset:consignment:*"
15424
+ }
15425
+ ]
15426
+ }
15098
15427
  }
15099
15428
  }
15100
15429
  }
@@ -15367,7 +15696,7 @@
15367
15696
  "content": {
15368
15697
  "application/json": {
15369
15698
  "schema": {
15370
- "$ref": "https://schema.twindev.org/dataspace-protocol/DataspaceProtocolPolicy"
15699
+ "$ref": "#/components/schemas/RightsManagementPolicy"
15371
15700
  },
15372
15701
  "examples": {
15373
15702
  "papUpdateRequestExample": {
@@ -15480,7 +15809,7 @@
15480
15809
  "content": {
15481
15810
  "application/json": {
15482
15811
  "schema": {
15483
- "$ref": "https://schema.twindev.org/dataspace-protocol/DataspaceProtocolPolicy"
15812
+ "$ref": "#/components/schemas/RightsManagementPolicy"
15484
15813
  },
15485
15814
  "examples": {
15486
15815
  "papGetResponseExample": {
@@ -15986,6 +16315,123 @@
15986
16315
  }
15987
16316
  }
15988
16317
  },
16318
+ "/rights-management/policy/admin/ecosystem-policy/{id}": {
16319
+ "get": {
16320
+ "operationId": "papGetEcosystemPolicy",
16321
+ "summary": "Get an ecosystem policy",
16322
+ "tags": [
16323
+ "Policy Administration Point"
16324
+ ],
16325
+ "parameters": [
16326
+ {
16327
+ "name": "id",
16328
+ "description": "The ID of the ecosystem policy to get.",
16329
+ "in": "path",
16330
+ "required": true,
16331
+ "schema": {
16332
+ "type": "string"
16333
+ },
16334
+ "style": "simple",
16335
+ "example": "urn:rights-management:abc123def456"
16336
+ }
16337
+ ],
16338
+ "security": [
16339
+ {
16340
+ "jwtBearerAuthScheme": []
16341
+ }
16342
+ ],
16343
+ "responses": {
16344
+ "200": {
16345
+ "description": "The response structure for getting an ecosystem policy.",
16346
+ "content": {
16347
+ "application/json": {
16348
+ "schema": {
16349
+ "$ref": "#/components/schemas/RightsManagementEcosystemPolicy"
16350
+ },
16351
+ "examples": {
16352
+ "papGetEcosystemPolicyResponseExample": {
16353
+ "value": {
16354
+ "@context": [
16355
+ "http://www.w3.org/ns/odrl.jsonld",
16356
+ "https://schema.twindev.org/odrl/v1/"
16357
+ ],
16358
+ "@type": "EcosystemPolicy",
16359
+ "@id": "urn:rights-management:abc123def456",
16360
+ "profile": "https://schema.twindev.org/odrl/v1/profile",
16361
+ "assigner": "did:example:publisher",
16362
+ "obligation": [
16363
+ {
16364
+ "action": "inform",
16365
+ "assignee": "did:example:border-agency",
16366
+ "target": "urn:twin:asset:consignment:abc123"
16367
+ }
16368
+ ]
16369
+ }
16370
+ }
16371
+ }
16372
+ }
16373
+ }
16374
+ },
16375
+ "400": {
16376
+ "description": "The server cannot process the request, see the content for more details.",
16377
+ "content": {
16378
+ "application/json": {
16379
+ "schema": {
16380
+ "$ref": "#/components/schemas/Error"
16381
+ },
16382
+ "examples": {
16383
+ "exampleResponse": {
16384
+ "value": {
16385
+ "name": "GeneralError",
16386
+ "message": "errorMessage",
16387
+ "properties": {
16388
+ "foo": "bar"
16389
+ }
16390
+ }
16391
+ }
16392
+ }
16393
+ }
16394
+ }
16395
+ },
16396
+ "401": {
16397
+ "description": "You are not authorized to use the API or no credentials were supplied, see the content for more details.",
16398
+ "content": {
16399
+ "application/json": {
16400
+ "schema": {
16401
+ "$ref": "#/components/schemas/Error"
16402
+ },
16403
+ "examples": {
16404
+ "exampleResponse": {
16405
+ "value": {
16406
+ "name": "UnauthorizedError",
16407
+ "message": "errorMessage"
16408
+ }
16409
+ }
16410
+ }
16411
+ }
16412
+ }
16413
+ },
16414
+ "500": {
16415
+ "description": "The server has encountered a situation it does not know how to handle, see the content for more details.",
16416
+ "content": {
16417
+ "application/json": {
16418
+ "schema": {
16419
+ "$ref": "#/components/schemas/Error"
16420
+ },
16421
+ "examples": {
16422
+ "exampleResponse": {
16423
+ "value": {
16424
+ "name": "InternalServerError",
16425
+ "message": "errorMessage"
16426
+ }
16427
+ }
16428
+ }
16429
+ }
16430
+ }
16431
+ }
16432
+ }
16433
+ }
16434
+ },
15989
16435
  "/rights-management/negotiations/{id}": {
15990
16436
  "get": {
15991
16437
  "operationId": "pnpGetNegotiation",
@@ -17444,23 +17890,6 @@
17444
17890
  },
17445
17891
  "components": {
17446
17892
  "schemas": {
17447
- "ActivityLogDates": {
17448
- "description": "Activity log dates.",
17449
- "type": "object",
17450
- "properties": {
17451
- "startDate": {
17452
- "type": "string",
17453
- "description": "Task processing start timestamp"
17454
- },
17455
- "endDate": {
17456
- "type": "string",
17457
- "description": "Task processing end timestamp"
17458
- }
17459
- },
17460
- "required": [
17461
- "startDate"
17462
- ]
17463
- },
17464
17893
  "ActivityLogDetails": {
17465
17894
  "description": "The details related to the processing of an Activity",
17466
17895
  "type": "object",
@@ -17484,10 +17913,6 @@
17484
17913
  "dateModified": {
17485
17914
  "type": "string",
17486
17915
  "description": "The last update date of this object."
17487
- },
17488
- "retryCount": {
17489
- "type": "number",
17490
- "description": "Number of times this activity has been retried."
17491
17916
  }
17492
17917
  },
17493
17918
  "required": [
@@ -17504,71 +17929,12 @@
17504
17929
  "status": {
17505
17930
  "$ref": "#/components/schemas/ActivityProcessingStatus"
17506
17931
  },
17507
- "pendingTasks": {
17508
- "type": "array",
17509
- "items": {
17510
- "$ref": "#/components/schemas/TaskApp"
17511
- },
17512
- "description": "The pending tasks that have to be run to process the Activity."
17513
- },
17514
- "runningTasks": {
17515
- "type": "array",
17516
- "items": {
17517
- "type": "object",
17518
- "allOf": [
17519
- {
17520
- "$ref": "#/components/schemas/TaskApp"
17521
- },
17522
- {
17523
- "$ref": "#/components/schemas/ActivityLogDates"
17524
- }
17525
- ]
17526
- },
17527
- "description": "The running tasks that are processing the Activity."
17528
- },
17529
- "finalizedTasks": {
17530
- "type": "array",
17531
- "items": {
17532
- "type": "object",
17533
- "properties": {
17534
- "result": {
17535
- "type": "string",
17536
- "description": "The task result."
17537
- }
17538
- },
17539
- "required": [
17540
- "result"
17541
- ],
17542
- "allOf": [
17543
- {
17544
- "$ref": "#/components/schemas/TaskApp"
17545
- },
17546
- {
17547
- "$ref": "#/components/schemas/ActivityLogDates"
17548
- }
17549
- ]
17550
- },
17551
- "description": "The tasks that have already finalized."
17552
- },
17553
- "inErrorTasks": {
17932
+ "tasks": {
17554
17933
  "type": "array",
17555
17934
  "items": {
17556
- "type": "object",
17557
- "properties": {
17558
- "error": {
17559
- "$ref": "#/components/schemas/Error"
17560
- }
17561
- },
17562
- "required": [
17563
- "error"
17564
- ],
17565
- "allOf": [
17566
- {
17567
- "$ref": "#/components/schemas/TaskApp"
17568
- }
17569
- ]
17935
+ "$ref": "#/components/schemas/ActivityTaskEntry"
17570
17936
  },
17571
- "description": "The tasks that are in error."
17937
+ "description": "The tasks that have to be run to process the Activity."
17572
17938
  }
17573
17939
  },
17574
17940
  "required": [
@@ -17605,6 +17971,67 @@
17605
17971
  }
17606
17972
  ]
17607
17973
  },
17974
+ "ActivityTaskEntry": {
17975
+ "description": "Denotes a task associated with a Dataspace App",
17976
+ "type": "object",
17977
+ "properties": {
17978
+ "taskId": {
17979
+ "type": "string",
17980
+ "description": "Task Id."
17981
+ },
17982
+ "dataspaceAppId": {
17983
+ "type": "string",
17984
+ "description": "Dataspace App Id."
17985
+ },
17986
+ "status": {
17987
+ "$ref": "#/components/schemas/ActivityTaskStatus"
17988
+ },
17989
+ "processingGroupId": {
17990
+ "type": "string",
17991
+ "description": "Processing Group Id."
17992
+ },
17993
+ "startDate": {
17994
+ "type": "string",
17995
+ "description": "Task processing start timestamp"
17996
+ },
17997
+ "endDate": {
17998
+ "type": "string",
17999
+ "description": "Task processing end timestamp"
18000
+ },
18001
+ "result": {
18002
+ "description": "The result of the task processing, if completed."
18003
+ },
18004
+ "error": {
18005
+ "$ref": "#/components/schemas/Error"
18006
+ }
18007
+ },
18008
+ "required": [
18009
+ "taskId",
18010
+ "dataspaceAppId",
18011
+ "status"
18012
+ ]
18013
+ },
18014
+ "ActivityTaskStatus": {
18015
+ "description": "Activity task statuses.",
18016
+ "anyOf": [
18017
+ {
18018
+ "const": "pending",
18019
+ "description": "Pending."
18020
+ },
18021
+ {
18022
+ "const": "processing",
18023
+ "description": "Processing."
18024
+ },
18025
+ {
18026
+ "const": "success",
18027
+ "description": "Success."
18028
+ },
18029
+ {
18030
+ "const": "failed",
18031
+ "description": "Failed."
18032
+ }
18033
+ ]
18034
+ },
17608
18035
  "AdminUserCreateRequest": {
17609
18036
  "description": "The body of the request.",
17610
18037
  "type": "object",
@@ -17744,45 +18171,119 @@
17744
18171
  ],
17745
18172
  "description": "The parameters to be used in the transfer."
17746
18173
  },
17747
- "AuditableItemGraphCreateRequest": {
17748
- "description": "The data to be used in the vertex.",
18174
+ "AuditCreateRequest": {
18175
+ "description": "The body of the request.",
17749
18176
  "type": "object",
17750
18177
  "properties": {
17751
- "dateCreated": {
18178
+ "event": {
18179
+ "anyOf": [
18180
+ {
18181
+ "$ref": "#/components/schemas/AuthAuditEvent"
18182
+ },
18183
+ {
18184
+ "type": "string"
18185
+ }
18186
+ ],
18187
+ "description": "The audit event that occurred."
18188
+ },
18189
+ "actorId": {
17752
18190
  "type": "string",
17753
- "description": "The date/time of when the element was created."
18191
+ "description": "The actor identifier, could be e-mail, username, or other unique identifier."
17754
18192
  },
17755
- "dateModified": {
18193
+ "nodeId": {
17756
18194
  "type": "string",
17757
- "description": "The date/time of when the element was modified."
18195
+ "description": "The node identifier associated with the audit entry, if applicable."
17758
18196
  },
17759
- "dateDeleted": {
18197
+ "organizationId": {
17760
18198
  "type": "string",
17761
- "description": "The date/time of when the element was deleted, as we never actually remove items."
18199
+ "description": "The organization identifier associated with the audit entry, if applicable."
17762
18200
  },
17763
- "@context": {
18201
+ "tenantId": {
18202
+ "type": "string",
18203
+ "description": "The tenant identifier associated with the audit entry, if applicable."
18204
+ },
18205
+ "ipAddressHashes": {
17764
18206
  "type": "array",
17765
- "prefixItems": [
17766
- {
17767
- "const": "https://schema.twindev.org/aig/"
17768
- },
17769
- {
17770
- "const": "https://schema.twindev.org/common/"
17771
- }
17772
- ],
17773
18207
  "items": {
17774
- "$ref": "https://schema.twindev.org/json-ld/JsonLdContextDefinitionElement"
18208
+ "type": "string"
17775
18209
  },
17776
- "minItems": 2,
17777
- "description": "JSON-LD Context."
17778
- },
17779
- "type": {
17780
- "const": "AuditableItemGraphVertex",
17781
- "description": "JSON-LD Type."
18210
+ "description": "The hashed IP addresses of the client."
17782
18211
  },
17783
- "organizationIdentity": {
18212
+ "userAgent": {
17784
18213
  "type": "string",
17785
- "description": "The identity of the organization which controls the vertex."
18214
+ "description": "The user agent string of the client."
18215
+ },
18216
+ "correlationId": {
18217
+ "type": "string",
18218
+ "description": "The correlation ID for request tracing."
18219
+ },
18220
+ "data": {
18221
+ "description": "Additional data related to the audit entry, such as IP address, user agent, etc."
18222
+ }
18223
+ },
18224
+ "required": [
18225
+ "event"
18226
+ ]
18227
+ },
18228
+ "AuditQueryResponse": {
18229
+ "type": "object",
18230
+ "properties": {
18231
+ "entries": {
18232
+ "type": "array",
18233
+ "items": {
18234
+ "$ref": "#/components/schemas/AuthenticationAuditEntry"
18235
+ },
18236
+ "description": "The returned audit entries."
18237
+ },
18238
+ "cursor": {
18239
+ "type": "string",
18240
+ "description": "The cursor to retrieve the next page, if any."
18241
+ }
18242
+ },
18243
+ "required": [
18244
+ "entries"
18245
+ ],
18246
+ "description": "The response body."
18247
+ },
18248
+ "AuditableItemGraphCreateRequest": {
18249
+ "description": "The data to be used in the vertex.",
18250
+ "type": "object",
18251
+ "properties": {
18252
+ "dateCreated": {
18253
+ "type": "string",
18254
+ "description": "The date/time of when the element was created."
18255
+ },
18256
+ "dateModified": {
18257
+ "type": "string",
18258
+ "description": "The date/time of when the element was modified."
18259
+ },
18260
+ "dateDeleted": {
18261
+ "type": "string",
18262
+ "description": "The date/time of when the element was deleted, as we never actually remove items."
18263
+ },
18264
+ "@context": {
18265
+ "type": "array",
18266
+ "prefixItems": [
18267
+ {
18268
+ "const": "https://schema.twindev.org/aig/"
18269
+ },
18270
+ {
18271
+ "const": "https://schema.twindev.org/common/"
18272
+ }
18273
+ ],
18274
+ "items": {
18275
+ "$ref": "https://schema.twindev.org/json-ld/JsonLdContextDefinitionElement"
18276
+ },
18277
+ "minItems": 2,
18278
+ "description": "JSON-LD Context."
18279
+ },
18280
+ "type": {
18281
+ "const": "AuditableItemGraphVertex",
18282
+ "description": "JSON-LD Type."
18283
+ },
18284
+ "organizationIdentity": {
18285
+ "type": "string",
18286
+ "description": "The identity of the organization which controls the vertex."
17786
18287
  },
17787
18288
  "annotationObject": {
17788
18289
  "$ref": "https://schema.twindev.org/json-ld/JsonLdNodeObject"
@@ -17952,6 +18453,115 @@
17952
18453
  "type"
17953
18454
  ]
17954
18455
  },
18456
+ "AuthAuditEvent": {
18457
+ "description": "Supported authentication audit event values.",
18458
+ "anyOf": [
18459
+ {
18460
+ "const": "login-success",
18461
+ "description": "Login success."
18462
+ },
18463
+ {
18464
+ "const": "login-failure",
18465
+ "description": "Login failure."
18466
+ },
18467
+ {
18468
+ "const": "logout",
18469
+ "description": "Logout."
18470
+ },
18471
+ {
18472
+ "const": "token-refreshed",
18473
+ "description": "Token refreshed."
18474
+ },
18475
+ {
18476
+ "const": "account-created",
18477
+ "description": "Account created."
18478
+ },
18479
+ {
18480
+ "const": "account-deleted",
18481
+ "description": "Account deleted."
18482
+ },
18483
+ {
18484
+ "const": "account-updated",
18485
+ "description": "Account updated."
18486
+ },
18487
+ {
18488
+ "const": "account-locked",
18489
+ "description": "Account locked."
18490
+ },
18491
+ {
18492
+ "const": "account-unlocked",
18493
+ "description": "Account unlocked."
18494
+ },
18495
+ {
18496
+ "const": "password-changed",
18497
+ "description": "Password changed."
18498
+ }
18499
+ ]
18500
+ },
18501
+ "AuthenticationAuditEntry": {
18502
+ "description": "Contract definition for authentication audit entry.",
18503
+ "type": "object",
18504
+ "properties": {
18505
+ "id": {
18506
+ "type": "string",
18507
+ "description": "The unique identifier for the audit entry."
18508
+ },
18509
+ "event": {
18510
+ "anyOf": [
18511
+ {
18512
+ "$ref": "#/components/schemas/AuthAuditEvent"
18513
+ },
18514
+ {
18515
+ "type": "string"
18516
+ }
18517
+ ],
18518
+ "description": "The audit event that occurred."
18519
+ },
18520
+ "dateCreated": {
18521
+ "type": "string",
18522
+ "description": "The timestamp of the audit entry in ISO 8601 format."
18523
+ },
18524
+ "actorId": {
18525
+ "type": "string",
18526
+ "description": "The actor identifier, could be e-mail, username, or other unique identifier."
18527
+ },
18528
+ "nodeId": {
18529
+ "type": "string",
18530
+ "description": "The node identifier associated with the audit entry, if applicable."
18531
+ },
18532
+ "organizationId": {
18533
+ "type": "string",
18534
+ "description": "The organization identifier associated with the audit entry, if applicable."
18535
+ },
18536
+ "tenantId": {
18537
+ "type": "string",
18538
+ "description": "The tenant identifier associated with the audit entry, if applicable."
18539
+ },
18540
+ "ipAddressHashes": {
18541
+ "type": "array",
18542
+ "items": {
18543
+ "type": "string"
18544
+ },
18545
+ "description": "The hashed IP addresses of the client."
18546
+ },
18547
+ "userAgent": {
18548
+ "type": "string",
18549
+ "description": "The user agent string of the client."
18550
+ },
18551
+ "correlationId": {
18552
+ "type": "string",
18553
+ "description": "The correlation ID for request tracing."
18554
+ },
18555
+ "data": {
18556
+ "description": "Additional data related to the audit entry, such as IP address, user agent, etc."
18557
+ }
18558
+ },
18559
+ "required": [
18560
+ "id",
18561
+ "event",
18562
+ "dateCreated"
18563
+ ]
18564
+ },
17955
18565
  "BlobStorageCreateRequest": {
17956
18566
  "type": "object",
17957
18567
  "properties": {
@@ -19011,9 +19621,6 @@
19011
19621
  "@context": {
19012
19622
  "$ref": "https://schema.twindev.org/w3c-odrl/OdrlContextType"
19013
19623
  },
19014
- "@type": {
19015
- "$ref": "https://schema.twindev.org/w3c-odrl/OdrlPolicyType"
19016
- },
19017
19624
  "profile": {
19018
19625
  "anyOf": [
19019
19626
  {
@@ -19207,6 +19814,9 @@
19207
19814
  ],
19208
19815
  "description": "The obligations in the policy.\nAt least one of permission, prohibition, or obligation must be present."
19209
19816
  },
19817
+ "@type": {
19818
+ "$ref": "#/components/schemas/RightsManagementPolicyType"
19819
+ },
19210
19820
  "@id": {
19211
19821
  "type": "string",
19212
19822
  "description": "Unique identifier for the policy."
@@ -19220,7 +19830,7 @@
19220
19830
  "PapQueryResponse": {
19221
19831
  "type": "array",
19222
19832
  "items": {
19223
- "$ref": "https://schema.twindev.org/dataspace-protocol/DataspaceProtocolPolicy"
19833
+ "$ref": "#/components/schemas/RightsManagementPolicy"
19224
19834
  },
19225
19835
  "description": "The body of the response."
19226
19836
  },
@@ -19374,65 +19984,515 @@
19374
19984
  ],
19375
19985
  "description": "Transfer Process (DSP compliant) with state REQUESTED, or error."
19376
19986
  },
19377
- "Rule": {
19378
- "description": "Rule defining how to extract data from an object.",
19987
+ "RightsManagementEcosystemPolicy": {
19988
+ "description": "TWIN EcosystemPolicy in DSP storage shape.\n\nCombines the DSP wire-format requirements (mandatory `@id`, no `uid`) from\n`IDataspaceProtocolPolicy` with a narrowed `@type` discriminant so that callers\ncan rely on the type at compile time without any `as unknown as` cast.\n\nDefined as an intersection type (rather than `extends IDataspaceProtocolPolicy`)\nso that the narrowed `\"@type\": \"EcosystemPolicy\"` can override the base\n`\"@type\": OdrlPolicyType` without a TS2430 extends-incompatibility error.\n`\"EcosystemPolicy\"` is a TWIN extension — not in the W3C ODRL `OdrlPolicyType`\nenum — so the interface hierarchy cannot express this narrowing directly.\n\nLives in `rights-management-models` (not `standards-dataspace-protocol`) because\nEcosystemPolicy is a TWIN platform extension — not a DSP specification concept —\nand `standards-dataspace-protocol` should remain a pure standards mirror.",
19379
19989
  "type": "object",
19380
19990
  "properties": {
19381
- "source": {
19382
- "type": "string",
19383
- "description": "The path to the data in the document to extract.\nshould be in JSONPath format https://www.rfc-editor.org/rfc/rfc9535.html."
19384
- },
19385
- "target": {
19386
- "type": "string",
19387
- "description": "The target path of where to store the extracted data.\nSupports simple dotted path notation, and numeric index notation."
19991
+ "@context": {
19992
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlContextType"
19388
19993
  },
19389
- "retainPathDepth": {
19390
- "type": "number",
19391
- "description": "When extracting objects, how much of the original path should be maintained in the target object."
19994
+ "profile": {
19995
+ "anyOf": [
19996
+ {
19997
+ "type": "string"
19998
+ },
19999
+ {
20000
+ "type": "array",
20001
+ "items": {
20002
+ "type": "string"
20003
+ }
20004
+ }
20005
+ ],
20006
+ "description": "The profile(s) this policy conforms to.\nIRIs identifying the ODRL Profile(s)."
19392
20007
  },
19393
- "coerce": {
19394
- "$ref": "#/components/schemas/CoerceType"
19395
- }
19396
- },
19397
- "required": [
19398
- "source",
19399
- "target"
19400
- ]
19401
- },
19402
- "RuleGroup": {
19403
- "description": "Group of rules for extraction.",
19404
- "type": "object",
19405
- "properties": {
19406
- "id": {
19407
- "type": "string",
19408
- "description": "The id for the rule group."
20008
+ "assigner": {
20009
+ "anyOf": [
20010
+ {
20011
+ "type": "string"
20012
+ },
20013
+ {
20014
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlParty"
20015
+ },
20016
+ {
20017
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlPartyCollection"
20018
+ },
20019
+ {
20020
+ "type": "array",
20021
+ "items": {
20022
+ "anyOf": [
20023
+ {
20024
+ "type": "string"
20025
+ },
20026
+ {
20027
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlParty"
20028
+ },
20029
+ {
20030
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlPartyCollection"
20031
+ }
20032
+ ]
20033
+ }
20034
+ }
20035
+ ],
20036
+ "description": "The assigner of the policy.\nApplies to all rules unless overridden at rule level."
19409
20037
  },
19410
- "label": {
19411
- "type": "string",
19412
- "description": "The label for the rule group."
20038
+ "assignee": {
20039
+ "anyOf": [
20040
+ {
20041
+ "type": "string"
20042
+ },
20043
+ {
20044
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlParty"
20045
+ },
20046
+ {
20047
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlPartyCollection"
20048
+ },
20049
+ {
20050
+ "type": "array",
20051
+ "items": {
20052
+ "anyOf": [
20053
+ {
20054
+ "type": "string"
20055
+ },
20056
+ {
20057
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlParty"
20058
+ },
20059
+ {
20060
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlPartyCollection"
20061
+ }
20062
+ ]
20063
+ }
20064
+ }
20065
+ ],
20066
+ "description": "The assignee of the policy.\nApplies to all rules unless overridden at rule level."
19413
20067
  },
19414
- "rules": {
19415
- "type": "array",
19416
- "items": {
19417
- "$ref": "#/components/schemas/Rule"
19418
- },
19419
- "description": "The rules."
19420
- }
19421
- },
19422
- "required": [
19423
- "id",
19424
- "label",
19425
- "rules"
19426
- ]
19427
- },
19428
- "ServerFavIconResponse": {
19429
- "type": "array",
19430
- "items": {
19431
- "type": "number"
19432
- },
19433
- "description": "The favicon for the server."
19434
- },
19435
- "ServerInfo": {
20068
+ "target": {
20069
+ "anyOf": [
20070
+ {
20071
+ "type": "string"
20072
+ },
20073
+ {
20074
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlAsset"
20075
+ },
20076
+ {
20077
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlAssetCollection"
20078
+ },
20079
+ {
20080
+ "type": "array",
20081
+ "items": {
20082
+ "anyOf": [
20083
+ {
20084
+ "type": "string"
20085
+ },
20086
+ {
20087
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlAsset"
20088
+ },
20089
+ {
20090
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlAssetCollection"
20091
+ }
20092
+ ]
20093
+ }
20094
+ }
20095
+ ],
20096
+ "description": "The target asset for the rule."
20097
+ },
20098
+ "action": {
20099
+ "anyOf": [
20100
+ {
20101
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlActionType"
20102
+ },
20103
+ {
20104
+ "type": "string"
20105
+ },
20106
+ {
20107
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlAction"
20108
+ },
20109
+ {
20110
+ "type": "array",
20111
+ "items": {
20112
+ "anyOf": [
20113
+ {
20114
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlActionType"
20115
+ },
20116
+ {
20117
+ "type": "string"
20118
+ },
20119
+ {
20120
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlAction"
20121
+ }
20122
+ ]
20123
+ }
20124
+ }
20125
+ ],
20126
+ "description": "The action associated with the rule."
20127
+ },
20128
+ "inheritFrom": {
20129
+ "anyOf": [
20130
+ {
20131
+ "type": "string"
20132
+ },
20133
+ {
20134
+ "type": "array",
20135
+ "items": {
20136
+ "type": "string"
20137
+ }
20138
+ }
20139
+ ],
20140
+ "description": "The parent policy(ies) this policy inherits from.\nIRIs identifying the parent Policy(ies)."
20141
+ },
20142
+ "conflict": {
20143
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlConflictStrategyType"
20144
+ },
20145
+ "permission": {
20146
+ "anyOf": [
20147
+ {
20148
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlPermission"
20149
+ },
20150
+ {
20151
+ "type": "array",
20152
+ "items": {
20153
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlPermission"
20154
+ }
20155
+ }
20156
+ ],
20157
+ "description": "The permissions in the policy.\nAt least one of permission, prohibition, or obligation must be present."
20158
+ },
20159
+ "prohibition": {
20160
+ "anyOf": [
20161
+ {
20162
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlProhibition"
20163
+ },
20164
+ {
20165
+ "type": "array",
20166
+ "items": {
20167
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlProhibition"
20168
+ }
20169
+ }
20170
+ ],
20171
+ "description": "The prohibitions in the policy.\nAt least one of permission, prohibition, or obligation must be present."
20172
+ },
20173
+ "obligation": {
20174
+ "anyOf": [
20175
+ {
20176
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlDuty"
20177
+ },
20178
+ {
20179
+ "type": "array",
20180
+ "items": {
20181
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlDuty"
20182
+ }
20183
+ }
20184
+ ],
20185
+ "description": "The obligations in the policy.\nAt least one of permission, prohibition, or obligation must be present."
20186
+ },
20187
+ "@id": {
20188
+ "type": "string",
20189
+ "description": "Unique identifier for the policy."
20190
+ },
20191
+ "@type": {
20192
+ "const": "EcosystemPolicy",
20193
+ "description": "The type must be \"EcosystemPolicy\"."
20194
+ }
20195
+ },
20196
+ "required": [
20197
+ "@context",
20198
+ "@id",
20199
+ "@type"
20200
+ ]
20201
+ },
20202
+ "RightsManagementPolicy": {
20203
+ "description": "Base type for any ODRL policy stored and managed by the TWIN rights-management PAP.\n\nDefined as an intersection type (rather than `extends IDataspaceProtocolPolicy`)\nbecause `IDataspaceProtocolPolicy[\"@type\"]` is constrained to `OdrlPolicyType`\n(the closed W3C ODRL enum). TWIN adds `\"EcosystemPolicy\"` as a platform extension\nvia `RightsManagementPolicyType`, which is a superset of `OdrlPolicyType`.\n\nAll standard DSP policy types (`IDataspaceProtocolAgreement`, `IDataspaceProtocolOffer`,\n`IDataspaceProtocolSet`) remain structurally assignable to this type because their\n`\"@type\"` literals are all members of `RightsManagementPolicyType`.\n\nUse this type wherever the PAP needs to accept or return any policy regardless of\nits specific subtype. Use the narrower `IRightsManagementEcosystemPolicy`,\n`IDataspaceProtocolAgreement`, etc. when the specific subtype is known.",
20204
+ "type": "object",
20205
+ "properties": {
20206
+ "@context": {
20207
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlContextType"
20208
+ },
20209
+ "profile": {
20210
+ "anyOf": [
20211
+ {
20212
+ "type": "string"
20213
+ },
20214
+ {
20215
+ "type": "array",
20216
+ "items": {
20217
+ "type": "string"
20218
+ }
20219
+ }
20220
+ ],
20221
+ "description": "The profile(s) this policy conforms to.\nIRIs identifying the ODRL Profile(s)."
20222
+ },
20223
+ "assigner": {
20224
+ "anyOf": [
20225
+ {
20226
+ "type": "string"
20227
+ },
20228
+ {
20229
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlParty"
20230
+ },
20231
+ {
20232
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlPartyCollection"
20233
+ },
20234
+ {
20235
+ "type": "array",
20236
+ "items": {
20237
+ "anyOf": [
20238
+ {
20239
+ "type": "string"
20240
+ },
20241
+ {
20242
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlParty"
20243
+ },
20244
+ {
20245
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlPartyCollection"
20246
+ }
20247
+ ]
20248
+ }
20249
+ }
20250
+ ],
20251
+ "description": "The assigner of the policy.\nApplies to all rules unless overridden at rule level."
20252
+ },
20253
+ "assignee": {
20254
+ "anyOf": [
20255
+ {
20256
+ "type": "string"
20257
+ },
20258
+ {
20259
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlParty"
20260
+ },
20261
+ {
20262
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlPartyCollection"
20263
+ },
20264
+ {
20265
+ "type": "array",
20266
+ "items": {
20267
+ "anyOf": [
20268
+ {
20269
+ "type": "string"
20270
+ },
20271
+ {
20272
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlParty"
20273
+ },
20274
+ {
20275
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlPartyCollection"
20276
+ }
20277
+ ]
20278
+ }
20279
+ }
20280
+ ],
20281
+ "description": "The assignee of the policy.\nApplies to all rules unless overridden at rule level."
20282
+ },
20283
+ "target": {
20284
+ "anyOf": [
20285
+ {
20286
+ "type": "string"
20287
+ },
20288
+ {
20289
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlAsset"
20290
+ },
20291
+ {
20292
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlAssetCollection"
20293
+ },
20294
+ {
20295
+ "type": "array",
20296
+ "items": {
20297
+ "anyOf": [
20298
+ {
20299
+ "type": "string"
20300
+ },
20301
+ {
20302
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlAsset"
20303
+ },
20304
+ {
20305
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlAssetCollection"
20306
+ }
20307
+ ]
20308
+ }
20309
+ }
20310
+ ],
20311
+ "description": "The target asset for the rule."
20312
+ },
20313
+ "action": {
20314
+ "anyOf": [
20315
+ {
20316
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlActionType"
20317
+ },
20318
+ {
20319
+ "type": "string"
20320
+ },
20321
+ {
20322
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlAction"
20323
+ },
20324
+ {
20325
+ "type": "array",
20326
+ "items": {
20327
+ "anyOf": [
20328
+ {
20329
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlActionType"
20330
+ },
20331
+ {
20332
+ "type": "string"
20333
+ },
20334
+ {
20335
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlAction"
20336
+ }
20337
+ ]
20338
+ }
20339
+ }
20340
+ ],
20341
+ "description": "The action associated with the rule."
20342
+ },
20343
+ "inheritFrom": {
20344
+ "anyOf": [
20345
+ {
20346
+ "type": "string"
20347
+ },
20348
+ {
20349
+ "type": "array",
20350
+ "items": {
20351
+ "type": "string"
20352
+ }
20353
+ }
20354
+ ],
20355
+ "description": "The parent policy(ies) this policy inherits from.\nIRIs identifying the parent Policy(ies)."
20356
+ },
20357
+ "conflict": {
20358
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlConflictStrategyType"
20359
+ },
20360
+ "permission": {
20361
+ "anyOf": [
20362
+ {
20363
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlPermission"
20364
+ },
20365
+ {
20366
+ "type": "array",
20367
+ "items": {
20368
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlPermission"
20369
+ }
20370
+ }
20371
+ ],
20372
+ "description": "The permissions in the policy.\nAt least one of permission, prohibition, or obligation must be present."
20373
+ },
20374
+ "prohibition": {
20375
+ "anyOf": [
20376
+ {
20377
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlProhibition"
20378
+ },
20379
+ {
20380
+ "type": "array",
20381
+ "items": {
20382
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlProhibition"
20383
+ }
20384
+ }
20385
+ ],
20386
+ "description": "The prohibitions in the policy.\nAt least one of permission, prohibition, or obligation must be present."
20387
+ },
20388
+ "obligation": {
20389
+ "anyOf": [
20390
+ {
20391
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlDuty"
20392
+ },
20393
+ {
20394
+ "type": "array",
20395
+ "items": {
20396
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlDuty"
20397
+ }
20398
+ }
20399
+ ],
20400
+ "description": "The obligations in the policy.\nAt least one of permission, prohibition, or obligation must be present."
20401
+ },
20402
+ "@id": {
20403
+ "type": "string",
20404
+ "description": "Unique identifier for the policy."
20405
+ },
20406
+ "@type": {
20407
+ "$ref": "#/components/schemas/RightsManagementPolicyType"
20408
+ }
20409
+ },
20410
+ "required": [
20411
+ "@context",
20412
+ "@id",
20413
+ "@type"
20414
+ ]
20415
+ },
20416
+ "RightsManagementPolicyType": {
20417
+ "description": "TWIN rights-management policy types.",
20418
+ "anyOf": [
20419
+ {
20420
+ "const": "EcosystemPolicy",
20421
+ "description": "EcosystemPolicy type.\nA TWIN platform-level governance policy that carries obligations for data events.\nNot a bilateral contract — does not participate in DSP negotiation."
20422
+ },
20423
+ {
20424
+ "const": "Policy"
20425
+ },
20426
+ {
20427
+ "const": "Set"
20428
+ },
20429
+ {
20430
+ "const": "Offer"
20431
+ },
20432
+ {
20433
+ "const": "Agreement"
20434
+ }
20435
+ ]
20436
+ },
20437
+ "Rule": {
20438
+ "description": "Rule defining how to extract data from an object.",
20439
+ "type": "object",
20440
+ "properties": {
20441
+ "source": {
20442
+ "type": "string",
20443
+ "description": "The path to the data in the document to extract.\nshould be in JSONPath format https://www.rfc-editor.org/rfc/rfc9535.html."
20444
+ },
20445
+ "target": {
20446
+ "type": "string",
20447
+ "description": "The target path of where to store the extracted data.\nSupports simple dotted path notation, and numeric index notation."
20448
+ },
20449
+ "retainPathDepth": {
20450
+ "type": "number",
20451
+ "description": "When extracting objects, how much of the original path should be maintained in the target object."
20452
+ },
20453
+ "coerce": {
20454
+ "$ref": "#/components/schemas/CoerceType"
20455
+ }
20456
+ },
20457
+ "required": [
20458
+ "source",
20459
+ "target"
20460
+ ]
20461
+ },
20462
+ "RuleGroup": {
20463
+ "description": "Group of rules for extraction.",
20464
+ "type": "object",
20465
+ "properties": {
20466
+ "id": {
20467
+ "type": "string",
20468
+ "description": "The id for the rule group."
20469
+ },
20470
+ "label": {
20471
+ "type": "string",
20472
+ "description": "The label for the rule group."
20473
+ },
20474
+ "rules": {
20475
+ "type": "array",
20476
+ "items": {
20477
+ "$ref": "#/components/schemas/Rule"
20478
+ },
20479
+ "description": "The rules."
20480
+ }
20481
+ },
20482
+ "required": [
20483
+ "id",
20484
+ "label",
20485
+ "rules"
20486
+ ]
20487
+ },
20488
+ "ServerFavIconResponse": {
20489
+ "type": "array",
20490
+ "items": {
20491
+ "type": "number"
20492
+ },
20493
+ "description": "The favicon for the server."
20494
+ },
20495
+ "ServerInfo": {
19436
20496
  "description": "The information about the server.",
19437
20497
  "type": "object",
19438
20498
  "properties": {
@@ -19613,24 +20673,6 @@
19613
20673
  "dateModified"
19614
20674
  ]
19615
20675
  },
19616
- "TaskApp": {
19617
- "description": "Denotes a task associated with a Dataspace App",
19618
- "type": "object",
19619
- "properties": {
19620
- "taskId": {
19621
- "type": "string",
19622
- "description": "Task Id."
19623
- },
19624
- "dataspaceAppId": {
19625
- "type": "string",
19626
- "description": "Dataspace App Id."
19627
- }
19628
- },
19629
- "required": [
19630
- "taskId",
19631
- "dataspaceAppId"
19632
- ]
19633
- },
19634
20676
  "TelemetryAddMetricValueRequest": {
19635
20677
  "type": "object",
19636
20678
  "properties": {